When performing mailbox migrations using the New-MoveRequest, the movement is performed online while the user is using the mailbox without suffering outage until the end.
Only when completing the movement there are some seconds during which the user mailbox is not online.
Thats the reason to use the parameter “SuspendWhenReadyToComplete“. It moves almost all the mailbox except the completion. That way the completion process can be launched in non-office hours.
Since Exchange 2013 there is a new parameter CompleteAfter thats allow setting a date/time. When all the movement but the completion is done, the MoveRequest process will be in a “AutoSuspended” status until the date/time is reached to finish completing it.
The parameter is an UTC time value. This is an example thats shows how to convert the local time (in this example Spain time) to universal time:
$DATE_STRING="6/24/2017 8:00 AM"
$UNIVERSAL_DATE=(Get-Date "$DATE_STRING").ToUniversalTime()
New-MoveRequest –Identity "testmail" -CompleteAfter "$UNIVERSAL_DATE" -TargetDatabase STORE1 -BadItemLimit 30
After the contents of the mailbox has been copied, the Autosuspended status until reaching the date/time:
Get-MoveRequest | Get-MoveRequestStatistics | fl DisplayName,StatusDetail,CompleteAfter
DisplayName : Test Mail
StatusDetail : AutoSuspended
CompleteAfter : 6/24/2017 6:00:00 AM
This parameter helped me a lot when performing massive mailbox movements to reduce impact on the users.