My expert advice on getting migrants inside:
First put a meeting zone in the entrance building. The migrants will walk there eventually. Alternatively, put up a new military squad, station it there(or right behind the fort entrance doors, or whatever we have these days keeping everything outside) and assign every new migrant to it. They immediately get over to walking to the stationed area. This is probably the better idea, since you might forget the meeting zone exists and some idiot of a dorf goes to hang out there because a front door was left unlocked/had been destroyed, gets their guts spilled out due to goblins and the whole fort goes insane since Bob Chucklefuck died. In case of specific disasters, read the following.
1) UNDEAD! CURSE THEM! If there's a bunch of zeds or skelks in the way, gather the migrant recruit squad together and then give the order to move. Zeds and skelks are the biggest threat to migrants who aren't given the orders to be recruits&attack, since then they'll just run like idiots until the skelk put a hoof through their head. A group of migrants can tear apart even a herd of skeletal reindeer, and with luck might not even get a single injury.
2) GOBLINS! CURSE THEM! Gobbos are a bigger threat to migrants than the skelks, because these guys come packing heat! Disable the big soldier squad of migrants, wait for the perfect moment(it can't be too late, the gobbos are likely to disperse and chase after individual migrants and then this step is useless), and start sending in the redshirt recruits after 'em. With luck, they'll survive long enough to distract the gobbo menace and allow at least a few migrants to get indoors. Try not to use the recruit option too early here either when ordering migrants to hussle, or they go aggro on the gobbos and then all your micromanagement hell is for nothing. Luckily you can take off the recruit status once they start heading indoors, although you MIGHT have to enable it again after opening the fort doors to get the idiots inside fast.