Mark left a comment asking whether he could complete the mailbox moves for only specific mailboxes that were included in a very large migration batch.

Consider a scenario in which you create a migration batch, but some circumstance leads to you wanting to be more selective in which mailbox moves within that batch are completed, instead of initiating the completion for the entire batch.

Although the migration batch is a single object that you can manage, each mailbox move in that batch is still handled as an individual move request.

For example, here is a migration batch with five mailboxes included. I can see all five move requests when I run Get-MoveRequest.

[PS] C:\>Get-MigrationBatch

Identity                        Status                    Type                           TotalCount
--------                        ------                    ----                           ----------
Migration Batch 10              Syncing                   ExchangeLocalMove              5


[PS] C:\>Get-MoveRequest

DisplayName                                    Status                    TargetDatabase
-----------                                    ------                    --------------
Alison Pugh                                    InProgress                DB03
Annette O'sullivan                             InProgress                DB03
Alannah Shaw                                   InProgress                DB03
Chrissie Varney                                InProgress                DB03
Carol Okyere                                   InProgress                DB01

When the migration batch reaches a suspended state (because I did not choose to automatically complete it), I can use Set-MoveRequest to set the SuspendWhenReadytoComplete flag on one of the move requests to $false, then resume only that move request.

The reason for setting SuspendWhenReadytoComplete to $false is to ensure that the move request does not auto-suspend again when you actually want it to complete.

[PS] C:\>Get-MoveRequest "Alannah Shaw" | Set-MoveRequest -SuspendWhenReadyToComplete:$false
[PS] C:\>Get-MoveRequest "Alannah Shaw" | Resume-MoveRequest
[PS] C:\>Get-MoveRequest

DisplayName                                    Status                    TargetDatabase
-----------                                    ------                    --------------
Alannah Shaw                                   InProgress                DB03
Alison Pugh                                    AutoSuspended             DB03
Annette O'sullivan                             AutoSuspended             DB03
Chrissie Varney                                AutoSuspended             DB03
Carol Okyere                                   AutoSuspended             DB01

That move request will complete, while the others remain suspended.

[PS] C:\>Get-MoveRequest

DisplayName                                    Status                    TargetDatabase
-----------                                    ------                    --------------
Alison Pugh                                    AutoSuspended             DB03
Annette O'sullivan                             AutoSuspended             DB03
Chrissie Varney                                AutoSuspended             DB03
Carol Okyere                                   AutoSuspended             DB01
Alannah Shaw                                   Completed                 DB03

That can be repeated as many times as necessary to get the desired result. Or I can simply complete the entire migration batch.

[PS] C:\>Get-MigrationBatch "Migration Batch 10" | Complete-MigrationBatch

Confirm
Are you sure you want to perform this action?
Complete migration batch "Migration Batch 10"?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] Help (default is "Y"): y

The remaining move requests will then complete as expected.

[PS] C:\>Get-MoveRequest

DisplayName                                    Status                    TargetDatabase
-----------                                    ------                    --------------
Alison Pugh                                    Completed                 DB03
Annette O'sullivan                             Completed                 DB03
Alannah Shaw                                   Completed                 DB03
Chrissie Varney                                Completed                 DB03
Carol Okyere                                   Completed                 DB01


[PS] C:\>Get-MigrationBatch "Migration Batch 10"

Identity                        Status                    Type                           TotalCount
--------                        ------                    ----                           ----------
Migration Batch 10              Completed                 ExchangeLocalMove              5

About the Author

Paul Cunningham

Paul is a former Microsoft MVP for Office Apps and Services. He works as a consultant, writer, and trainer specializing in Office 365 and Exchange Server. Paul no longer writes for Practical365.com.

Comments

  1. Prince Varghese

    It will automatically removed in 60 days

  2. Gaylord Haynes

    Hi Hope you can help me with an issue that is rattling my nerves and cannot get it to work.
    I am trying to move all mailboxes from a 2013 server over to a 2019 server. When I create a migration batch it try to sync then kicks back an error that says:

    Error: MigrationPermanentException: Informational: The request has been temporarily postponed because Search is not up to date.

    I cannot find any further info on that error. Please help?

  3. Paul Haley

    In fact in Exchange 2016 on Prem you only need to use this command:

    set-MoveRequest “firstname surname” -CompleteAfter (get-date)

    “firstname surname” is the users DisplayName AD attribute.

    Many Thanks for all the contributions, all great information.

  4. Stom

    Is it necessary to remove-moverequest after they are successful and complete?

    Should this be done before the database they moved from is deleted/removed or does it not matter?

    1. Prince Varghese

      It will automatically removed in 60 days

  5. Vikas

    I don’t think these commands work anymore with Exchange online.
    Tried these commands on multiple occasions but the particular user is still showing as “Synced’

    I think this behaviour might be changed over in 2018

  6. Marc

    Hi Paul, I have some move requests to O365 in sync for nearly 30 days now and started the move requests with the “suspendwhenreadytocomplete” switch.
    During on prem migrations the move request will be deleted after 30 days.

    Will the move requests also be deleted after 30 days?
    Thanks in advance for your answer.

  7. Rods

    Good morning, Paul, how are you?
    See if you can get that doubt.
    I am in a Mailbox Migration project in a Hybrid environment where I am performing the batch migrations through the graphical interface.
    I’ve been reading the migration via pw via the SuspendReadytoComplete command.
    I would like to know if there is a migration difference in terms of performance or practicality.

  8. DaGriff

    The command has now changed for migration to Office 365. You need to use:
    Set-MoveRequest john.smith@contoso.com -SuspendWhenReadyToComplete:$False -PreventCompletion:$False -CompleteAfter 1

    After running that you then use:
    Get-MoveRequest “john.smith@contoso.com” | Resume-MoveRequest

  9. shahin

    Hi
    we want to run cutover an exchange 2010, we did already create a migration bach and it shows 100 mailboxs to be migrated. we did not run the batch yet and last nigt we did remove 10 mailboxs from EMC 2010.
    should we recreate the batch? or can we run the batch that we already created and when is validating the mailboxs it will show 90 mailbox to be migrated?

    Thanks

  10. Samy

    Hello Paul.
    Wonderful Article!
    Just a small query, how I can start the migration batch with priority emergency flag ?
    I need to move few users in group with high priority.

    Thanks

  11. daniel zigi

    Hi
    can i proceed only one mailbox from the batch?
    if i have batch that have 5 mailbox and i want to proceed only with one mailbox
    there is command for this?

    1. Paul Cunningham

      Is there something about the blog post that is unclear or doesn’t work for your situation?

      1. daniel zigi

        sorry my mastik
        this is what i looking for
        thanks Paul

  12. S. Goodwin

    HI.
    I understand there are issues with permissions with users on premise and shared mailboxes in 365 (and vis versa). Can I run a migartion for all users and shared mailboxes at the same time with a “finalize manually” option, so that they are all in 365 when the finalization is run.
    OR can I run a migration with automatic finalization tick off (when does fianlization happen – as each mailbox finishes migartion or when all mailboxes in the batch finish migration)?

    Thanks in advance for any pointers

    1. Paul Cunningham

      If you tell the batch to just finalize automatically then mailboxes will finish moving whenever they’re done. They won’t all finish at exactly the same time.

      This is the sort of thing you should test to make sure the behavior matches your expectations. Create some test mailboxes with a bit of data in them, run some test batches, observe the outcomes.

  13. Charbel

    It appears that you can only complete individual move requests for user mailboxes in a migration batch. I have tested the above command with shared mailboxes in a migration batch and it does not work. The mailbox will remain in a synced state.

  14. Scott Freatis

    it doesnt work for me. The batch was created in the tenant, all mailboxes are at 95% suspended. When i follow the steps it just goes back to suspended.

    PS J:\> Get-MoveRequest xxxx@xxx.xxx|Set-MoveRequest -SuspendWhenReadyToComplete:$false
    PS J:\> Get-MoveRequest xxxx@xxx.xxx|resume-moverequest
    PS J:\> Get-MoveRequest xxxx@xxx.xxx|Get-MoveRequestStatistics

    DisplayName StatusDetail TotalMailboxSize TotalArchiveSize PercentComplete
    ———– ———— —————- —————- —————
    Xxxxx, Xxxx InitializingMove 3.215 GB (3,451,570,28… 95

    PS J:\> Get-MoveRequest xxxx@xxx.xxx|Get-MoveRequestStatistics

    DisplayName StatusDetail TotalMailboxSize TotalArchiveSize PercentComplete
    ———– ———— —————- —————- —————
    Xxxxx, Xxxx Synced 3.215 GB (3,451,598,28… 95

  15. Tommy

    Hey Paul,

    When I am looking for anything with Exchange, your posts always seem to pop up so in my book, you are a Rock Star however, this is not working for me. I am on Exchange 2010 in hybrid. Get-MoveRequest shows the members of the batch job as synced. When I pick one user and run the Resume-MailRequest, it flips to the next line as if it succeeded, but when I run Get-MoveRequest, it still shows as synced. In the GUI report, I can see the ‘resumed move request’ but at the end it says job has reached synced state. This job will be auto-resumed at 3/23/2017 5:29:00 PM. That’s tomorrow. Any ideas?

    1. Paul Cunningham

      This was for on-prem Exchange so I’m not sure whether the same technique will work for a hybrid move.

      1. Tommy

        Oh, so this is from on-prem to on-prem, not on-prem to O365?

        1. Justin

          Try adding the following flags to the set-moverequest: -PreventCompletion:$False -CompleteAfter 1

          Then run the resume-moverequest

  16. Ricardo

    Paul,
    I started a 2010 to O365 migration batch not to complete automatically. It was running long so I individually completed each mailbox. All completed except one that has been running for more than one day. I see this message for this mailbox “Relinquishing job because the database failed over to’BY2PR02MB076.namprd02.prod.outlook.com’. I stopped the batch and removed the mailbox from batch. Do I need to do anything with the batch since the rest are already completed? Also how do I migrate the mailbox that is not migrating? thanks

  17. Geezbill

    something must have changed. I created a batch in the GUI (suspend when complete) mailboxes are all “Synced” at 95%. In PS, i ran the command to SuspendWhenReadyToComplete:$false, the ran the Resume command. It just goes back to 95% “Synced”

    1. Tommy

      I am in the same situation. Have you ever figured it out? Mine are all synced and when I ran the resume, it still says synced and if I go into the gui and look at the report, it shows that I changed the job and will resume but nothing.

      1. Justin

        You have to add the following flags to the set-moverequest: -PreventCompletion:$False -CompleteAfter 1

        1. Justin

          The -PreventCompletion is hidden but it works, just confirmed in on-prem to on-prem.

  18. vic

    I have manually stopped my migration. Have 2 companies and only 1 wanted to go to 365. How do I now delete the migration batch without affecting the users and data in 365 – they are all working well now and all the change sI need to do on the on Premises 2007 server (convert to Mail Enabled user) is done.

  19. Mike

    Is it possible to set the allowlargeitems to true?

    1. Paul Cunningham

      It’s a switch, so if you want to allow large items you should only need to add -AllowLargeItems to your command.

  20. Luis Reyes

    Hi Paul

    My Environmet is Exchange Server 2007 and Exchange Server 2013, I am migrating mailbox from 2007 to 2013, but, when I create a migration batch, some users are migrated but others are failed.

    I see the status about batch migration file and I see some mailbox has the status “Relinquished” or “Relinquished job”.

    I do not know why, but when I resume the batch migration file again, the process is very slowly and mailbox could not migrate and the status is the same.

    Could you help me why mailbox are getting the status “Relinquished” or “Relinquished job”???

    I hope you can help me

    best regards

    Luis Reyes

    1. Luke Robertson

      I have found that a status of ‘relinquished’ can be a resource problem on either the source or destination mailbox servers. In my case, one mailbox server (a VM) did not have enough cores or memory (an oversight), and had SMSMSE installed, which was incorrectly inconfigured.
      When increasing resources, and configuring SMSMSE to use the correct number of threads (2 * cores + 1), the migration picked up again.

      You could try doing a “get-moverequest | get-moverequeststatistics | select message”. This may give you some additional ionformation

      Hope that helps

      1. Luis Reyes

        Hi Luke Robertson

        Thanks for your help.

        I ran the next command prompt Get-MoveRequest -Identity “User” | Get-MoveRequestStatistics | FL, and show the next information on field Message:

        ” Message: Informational: The request has been temporarily postponed due to unfavorable server health or budget
        limitations. MRS will attempt to continue processing the request again after 4/5/2016 2:03:38 AM.
        Job is waiting for resource reservation. MRS will continue trying to pick up this request. Details:
        Resource reservation failed for ‘MDB_OPER04/MdbWrite’ (CiAgeOfLastNotification(MDB_OPER04)): load ratio
        1.79769313486232E+308, load state ‘Critical’, metric 32265. This resource is currently unhealthy. ”

        So, I look for some information about this issue on internet and it does not show any answer that I can help me. There are some solutions modify the file msexchangerepl.exe.config, but it does not recommended.

        I do not what I need to do, I have some days with this problem. My servers on Exchange 2010 and 2013 are fine, the status of databases are OK.

        You have anything more to review?

        best regards

        Luis Reyes

  21. Michal Ziemba

    This is exact answer for question I have just asked myself 1 minute ago 🙂
    Great content Paul (as always).

  22. SMF

    Hi Paul,

    “When the migration batch reaches a suspended state”, what about if migration batch still in syncing state and one of the mailbox is synced rest are syncing, in this also we can resume one of the synced mailbox?

    Thanks
    SMF

  23. Ward

    Hybrid deployment here… I created a migration batch containing 10 mailboxes and 8 of them were synced succesfully. The other 2 had a smtpproxy error, which I corrected. At that point I prolly had to restart the same batch but I didn’t. I created a new batch for those 2, which failed because the earlier batch still existed of which they were a member. I deleted the earlier batch and succesfully migrated the 2, but now I’ve lost all reference to the 8 people, I can not finalize their migration.

    Thanks for any pointers you could share..

  24. Barry

    Hi Paul,

    How can i move a disconnected mailbox from Exchange 2010 to Exchange 2013 without connecting that mailbox again ? We are retaining disconnected mailboxes for 365 days, so there’s a lot of mailboxes that we don’t want to loose.
    Thanks.

    1. Paul Cunningham

      You can’t move disconnected mailboxes.

      And relying on deleted mailbox retention for 365 days like that is not a good strategy.

  25. Byron White

    I have a situation where I’ve created a new migration batch with the procedure given here, and the mailboxes are moving, but there are no associated Move Requests. A Get-MoveRequest command returns *no* results at all.

    Am I missing something or has the New-MigrationBatch been changed in an updated version since this was written to *not* use a New-MoveRequest for each individual mailbox?

    1. Erik

      Did you also start the batch? Depending on the options you chose, the migration batch need to be started manually. What are the results when you run “get-MigrationBatch” ?

      Sometime it also can take a while before the move-request actually are created/started, and thus they don’t show right away when you run “get-moverequest”. I have experienced the latter when the I/O performance was very bad on the storage.

    2. Erik

      @Byron:
      Today I encountered the same problem, but I was able to get the statistics anyway only with a completely different command. Maybe this command works for you as well:

      Get-MigrationUser | Get-MigrationUserStatistics

  26. Erik

    Hi Paul,

    According to your article, you set the SuspendWhenReadytoComplete to false, to be able to resume and complete an individual moverequest: “When the migration batch reaches a suspended state (because I did not choose to automatically complete it), I can use Set-MoveRequest to set the SuspendWhenReadytoComplete flag on one of the move requests to $false, then resume only that move request.”

    But in my batch where the moverequests are currently autosuspended, the flag on SuspendWhenReadytoComplete is already set to false. Meaning I do not have to use the Set-MoveRequest command to set it to false, is this new in 2013 CU8?

    Regards,

    Erik

    1. Erik

      forgot to add; I also did not choose to automatically complete the move request.

      1. Paul

        I followed the instructions at the link and received the error below. The mailbox does not complete.

        StartAfter or CompleteAfter must not be set on requests using SuspendWhenReadyToComplete.

        I then tried running the cmdlet to only set the -SuspendWhenReadyToComplete flag to False and then ran it again to set the -PrevenCompletion flag but it will not let me set the -PreventCompletion flag. It seems like either this process is no longer valid or it matters how the migration batch is created.

        1. Mike Crowley

          Strange. I’ve seen different behavior across different tenants.

  27. Hasan

    1. HOw can i see batch members in O365
    2. How i can find out that user is of which batch?

    1. Jude Alipar

      get-0365moverequest | Select DisplayName, BatchNames

  28. totalnet

    thanks.
    could I remove one or two users from the batch and migrated the rest? or I would have to use the Get-MoveRequest for the individual users (as above article ) and then for the users not migrating from the batch use the remove-migrationbatch?

  29. Jonathan Kinnick

    I have a batch with one test account that is stuck with the status of Relinquished (“Completing” in the ecp) at 95%. Resuming does nothing, it says it can’t be stopped, I rebooted the Exchange 2013 (target) server too many times to count, I backed up and rebooted the Exchange 2010 (source) server, re-started various Exchange services here and there – nothing works. I can’t make it complete, and I can’t kill it. It’s a test account with a total of 3 e-mails – 1 sent, 2 received. Any ideas?

    1. Byron White

      Has anyone resolved this issue? I’m also seeing a similar problem where I can’t stop or complete a migration batch with just a single mailbox. In this case, the mailbox already shows as being on the new database, but the migration batch is still showing completing after 24 hours.

  30. Angus McLean

    I have some batch moves that failed from the beginning and never created the move request. Now that i have fixed that problem how can I re-run the batch so those mailboxes start to sync? Do I need to stop the entire job and then start it again? I’m afraid doing that will mean mailboxes that are synced will need to be synced again.

    1. Paul Cunningham

      Batches that are already in progress can be stopped and resume without it having to start all over again.

  31. Findia Group

    Thank you for sharing!

Leave a Reply