If you are moving mailboxes to Office 365 from Exchange Server via Hybrid, then you should be following a tried and tested approach:
- Create a migration batch with the users you wish to migrate
- Start the migration batch, but don’t allow it to complete automatically
- Allow the batch to synchronize in advance of the migration date
- When the migration date arrives, complete the migration batch
Variations of this approach include setting the date and time to complete the batches, but ultimately this achieves two goals:
- Remove bandwidth challenges associated with trying to migrate batches of mailboxes from start to finish within a set migration window
- Remove uncertainty regarding when migrations will complete, especially with batches with a mix of mailbox sizes
Detaching the dependency on planning how many mailboxes you can move per night – and the worry (and reality) that mailbox moves will not always begin the moment you start a migration batch takes is crucial. Mailbox moves don’t necessarily all progress at the same rate or complete in the same duration. Influencing factors include not only the mailbox size, but the number of mailbox items, available bandwidth during the move and the load on Exchange Server and Exchange Online.
Additionally, because mailbox moves via Exchange Hybrid are performed as Online Moves, there is no user impact by pre-migrating mailboxes in advance. If you synchronize mailboxes a week before the date you plan to switch users to Exchange Online, then the only point that users will see any change is the point that you complete the migration batch. The initial sync and subsequent delta syncs are all performed in the background, and because Exchange processes move requests at low priority, mailbox moves in the background don’t affect user performance.
The challenge with completing mailbox batches synced in advance
Of course, things aren’t always as simple as scheduling a batch of mailboxes to synchronize two weeks before the completion date and then completing the batch.
You might, for example, find that some users need to be re-scheduled. Or, you might need to provide VIP support to executives and complete their mailbox moves at a time that suits them, not you.
This can present challenges with the number of batches you might need to create, as described in Mirela Buruiana’s post on the Exchange Team Blog.
Traditionally Exchange administrators who know Exchange well have by-passed this issue by using the *-MoveRequest cmdlets to manually complete mailboxes within Migration Batches. However, Migration Batches are not designed with this scenario in mind.
There is a better way – described in the above blog post – for moving synchronized mailboxes from one batch to another. This allows you to create a large batch for synchronization, and then complete smaller batches on-demand.
Creating larger migration batches for initial synchronization
Rather than wait until you face the challenge of having too many Migration Batches, create a number of large Migration Batches containing mailboxes you wish to pre-sync.
In our example, we’ll access the Exchange Admin Center and navigate to the Migration tab within Recipients. We’ll then choose the Add button and create a new migration batch in the normal manner – for simplicity, we’ll assume that Exchange Hybrid is setup correctly and a Migration Endpoint is present.
When we reach the page of the New Migration Batch wizard, we’ll ensure we choose the option Manually complete the batch:
This is because we don't intend to complete this particular batch – or at the very least, we’ll expect to move some mailboxes out of the batch and complete them ahead of finalizing this batch.
As you’ll expect, some time will need to pass for your migration of mailboxes to complete. Once all mailboxes have synchronized, the status of the batch will update to Synced. You’ll see in the example below we’ve synced a large number (nearly 500) in our Pre-sync Mailboxes batch below:
Moving mailboxes to smaller batches for completion
If we now want to complete the migration for some of the mailboxes, we’ll need to connect to Exchange Online using PowerShell to create our smaller batch and move synchronized mailboxes into it.
We’ll need to know the Email Addresses of each mailbox we want to move, and then use the New-MigrationBatch cmdlet to achieve this. We’ll use a simple version of the New-MigrationBatch cmdlet using the following options:
-Name <Batch Name> -UserIds <Comma-seperated list of email
addresses> -DisableOnCopy -AutoStart
In our example, we’ll move TestMailbox10 to TestMailbox14 to our VIP Users 01 batch:
"VIP Users 01" -UserIds
You’ll see this in action below:
After creating the new Migration Batch, it will initiate a delta synchronization after copying mailbox identities into the batch.
If we revisit the Exchange Admin Center, we’ll see that we now have two Migration Batches.
The simplest approach now if you are using the Exchange Admin Center will be to choose Complete this migration batch:
And of course, we can use Exchange Online PowerShell to accomplish the same result:
-Identity "VIP Users 01"
One issue you might notice is that in the original batch we now see failures:
We can examine the failures by selecting the batch and choosing View details. When we examine the failures, we’ll see this harmless error:
MigrationUserMovedToAnotherBatchException: The user was moved to a new batch
Whilst you can choose to safely ignore the error, you might want to clean up the batch by removing the mailboxes from this batch. To do so, select the mailboxes and then choose the Trash button, as shown below:
Large numbers of Migration Batches can be troublesome to manage, and often you will wish to complete particular mailbox moves at a different time to others within a synchronized batch. Use the approach here to plan for larger numbers of mailboxes in a smaller number of batches for initial synchronizations, then move mailboxes to smaller batches for a final delta sync and completion.
If you found this article useful, you may also be interested in Quadrotech's white paper, Email Migration to Office 365.
Steve is a Microsoft MVP for Office Servers and Services. He enjoys getting hands-on, solving some of the more complex problems associated with migrating to the cloud or to newer versions of Exchange Server.