In some cases, while migrating users to exchange online, I came across error while running Get-MoveRequestStatistics which said "Need Approval" .
NeedApproval is not linked to a migration user but a time when migration would occur, for example in my case it was 10 PM every day. You could wait til the time and let it complete itself. Before reaching 10 PM it would show "Synced" and percentage completion would be 95%. In case you wish to complete it right away, you can run the below command.
Set-MoveRequest -Identity <email address> -SkippedItemApprovalTime $(Get-Date).ToUniversalTime()
It will now perform the last Incremental Sync and complete the migration.