Surely you haven't a full stack garrisoning the city? He can't move in if there's no room for him; an unfortunate limitation in the script engine, again. Though, if he's not getting the trait there's something else going on...