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
It will automatically removed in 60 days
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?
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.
Paul, this has changed now – see here:
https://blogs.technet.microsoft.com/fasttracktips/2018/03/15/completing-individual-move-requests-from-a-migration-batch-changed-behavior/
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?
It will automatically removed in 60 days
Yes. it has changed, Vikas. Look at this article:
https://blogs.technet.microsoft.com/fasttracktips/2018/03/15/completing-individual-move-requests-from-a-migration-batch-changed-behavior/
It should work
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
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.
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.
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
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
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
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?
Is there something about the blog post that is unclear or doesn’t work for your situation?
sorry my mastik
this is what i looking for
thanks Paul
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
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.
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.
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
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?
This was for on-prem Exchange so I’m not sure whether the same technique will work for a hybrid move.
Oh, so this is from on-prem to on-prem, not on-prem to O365?
I’ve only tested it on-prem.
Try adding the following flags to the set-moverequest: -PreventCompletion:$False -CompleteAfter 1
Then run the resume-moverequest
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
What type of migration?
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”
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.
You have to add the following flags to the set-moverequest: -PreventCompletion:$False -CompleteAfter 1
The -PreventCompletion is hidden but it works, just confirmed in on-prem to on-prem.
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.
Is it possible to set the allowlargeitems to true?
It’s a switch, so if you want to allow large items you should only need to add -AllowLargeItems to your command.
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
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
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
This is exact answer for question I have just asked myself 1 minute ago 🙂
Great content Paul (as always).
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
Yes.
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..
Create a new batch for those 8.
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.
You can’t move disconnected mailboxes.
And relying on deleted mailbox retention for 365 days like that is not a good strategy.
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?
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.
@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
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
forgot to add; I also did not choose to automatically complete the move request.
Erik, You have to use preventCompletion now. See the blog here: https://blog.kloud.com.au/2016/11/29/completing-an-exchange-online-hybrid-individual-moverequest-for-a-mailbox-in-a-migration-batch/
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.
Strange. I’ve seen different behavior across different tenants.
1. HOw can i see batch members in O365
2. How i can find out that user is of which batch?
get-0365moverequest | Select DisplayName, BatchNames
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?
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?
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.
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.
Batches that are already in progress can be stopped and resume without it having to start all over again.
Thank you for sharing!