Mailbox migration to O365 keeps stalling

Ran into an issue over the last few days where one specific mailbox on a 2013 on-prem Exchange server wouldn’t migrate to Office 365 with the error: StalledDueToSource_UnknownReason

Connecting to Exchange Online and using

Get-MoveRequest | Get-MoveRequestStatistics

would tell me the StatusDetails on the migration: StalledDueToSource_UnknownReason

After some research I found that you can export a detailed log for the move request with the following PS command:

Get-MoveRequestStatistics -Identity 'user' -DiagnosticInfo 'verbose,showtimeslots' | export-clixml C:\MoveRequestLogs.xml

From there I opened the .xml using a text editor and found that the migration stalls due to a content indexing issue on the on-premise server. Specifically this string gave me the details:

<MessageStr>The request has been paused temporarily: The remote server is unhealthy due to 'Resource 'CiAgeOfLastNo tification(*Name of DB*)' is unhealthy and shouldn't be accessed.'. --&gt; The remote server is unhealthy due to 'Resource 'CiA geOfLastNotification(*Name of DB*)' is unhealthy and shouldn't be accessed.'.</MessageStr>

To confirm this we can run the following in the on-premise Exchange management shell:

Get-MailboxDatabaseCopyStatus

This now shows us in which state the on-premise database/s is/are in (ContentIndexState). In my case the ContentIndexState showed up as “Failed”.

All I needed to do from here was stop the following two services:

  • Microsoft Exchange Search Host Controller

  • Microsoft Exchange Search

Navigate to the location of the database file and find the folder containing the content index. It is in the same folder as the DB file and is named after the GUID of the DB. From there you can either delete the folder or rename to .old.

Now start the following two services again:

  • Microsoft Exchange Search Host Controller

  • Microsoft Exchange Search

The folder with the GUID should now be re-created and Exchange will re-index the database, this will take some time depending on the size of the DB. To check on the current status you can re-run the on-premise EMS command above and if the status shows “Crawling” it is still indexing.

Once the indexing has been completed you can restart the migration batch for your mailbox/es and you should be good to go!

Previous
Previous

Connect to Exchange Online and manage migration batches

Next
Next

"F**k it, we'll do it live!"