Cross-Forest migration - Couldn‎'t switch the mailbox into Sync Source mode.

Hey,

I was running test migration form one forest to another. The migration have not finished successfully. I removed the mailbox form target org and tried to re-run the migration.

I'm getting the following error:

Error: MigrationTransientException: Couldn't switch the mailbox into Sync Source mode.  This could be because of one of the following reasons:   Another administrator is currently moving the mailbox.   The mailbox is locked.   The Microsoft Exchange Mailbox Replication service (MRS) doesn't have the correct permissions.   Network errors are preventing MRS from cleanly closing its session with the Mailbox server. If this is the case, MRS may continue to encounter this error for up to 2 hours - this duration is controlled by the TCP KeepAlive settings on the Mailbox server.  Wait for the mailbox to be released before attempting to move this mailbox again.

Is there a way of cleaning up source mailbox, so I could re-run the migration?

Thanks!

March 22nd, 2015 5:46pm

Thanks! but no, this is different error..

I ran few other migration w/o any issues..

I have just one "stuck".. Something on source org.. It thinks that mailbox is being moved..

March 22nd, 2015 7:06pm

Thanks! but no, this is different error..

I ran few other migration w/o any issues..

I have just one "stuck".. Something on source org.. It thinks that mailbox is being moved..

Free Windows Admin Tool Kit Click here and download it now
June 9th, 2015 10:52am

Have you tried this?

http://powershellatwork.blogspot.com/2012/12/mailbox-move-errorcouldnt-switch.html

June 9th, 2015 8:14pm

Well I had the same problem but for a migration within 2010 environment. I had to migrate 2 mailboxes (the rest of the 500 mailboxes had been migrated well) from the US to a server in Europe and the moverequest was stopping at 10% and then I was getting the same message in the log.

I had tried so many times and always it was failing. Sometimes it was going up to 95% and boom, fail!

How I solved it:

Although I had tried all the suggestions I had found, I definitely didn't want to try the last one which was to export the mailbox and import it to the new database. So, here it is what I did:

1) First of all I changed the KeepAlive settings to all the involved servers as suggested to most of the threads.

2) I cleaned the database that I wanted to use (clean-mailboxdatabase)

3) I specified in which database I want the mailbox to be moved,

and (I believe the below part made the difference)

4) I specified the MRServer I want to be used for the migration

How I ended up to the above decision (I mean number 3)? I checked the log files every time I had a failure and then I noticed that or the MRServer wasn't specified at all, or, for the rest of the failed attempts, only one specific server was used. So I thought "why if I use EX03 as the MRServer instead of EX04?" So, I wrote a line in PowerShell which is the below:

New-MoveRequest -Identity <mailbox alias> -TargetDatabase <DB name> -BadItemLimit 50 -MRSServer <server name>

That's it! After the above line and after the 2 first steps I mentioned above I didn't have any problem! The two mailboxes I wasn't able to move for almost a month, were moved without any issue. Keep in mind that I tried one move at a time and each of these moves took almost 24 hours to complete (each mailbox was almost 1,5GB and the data had to travel over an MPLS line from the US to Europe).

I hope the above to help as many Admins as possible :)

PS: This is the script I used to change the KeepAlive time on the involced servers (sorry but I don't have the time to explain the details of it):

$servers=get-adcomputer -filter * | where {$_.name -like "*ex0*"}
$key='HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\'
$Name='KeepAliveTime'
foreach ($server in $servers)
{
   #set it
   #invoke-command $server.name {New-ItemProperty -path Registry::$using:key -Name $using:name -Value 3600000 -PropertyType "DWord"}

   #get it
   #invoke-command $server.name {Get-ItemProperty -Path Registry::$using:key -Name $using:name}
  
   #forget it
   #invoke-command $server.name {Get-ItemProperty -Path Registry::$using:key |Remove-ItemProperty -Name $using:name}

   #change it
   invoke-command $server.name {Set-ItemProperty -path Registry::$using:key -Name $using:name -Value 10800000 }
}

# restart the individual replication serivces

invoke-command <remote CAS1 name> {get-service |select name | where {$_.name -like 'msexchangemailboxrep*' }|Restart-Service}

invoke-command <remote CAS2 name> {get-service |select name | where {$_.name -like 'msexchangemailboxrep*' }|Restart-Service}

invoke-command <local CAS1 name> {get-service |select name | where {$_.name -like 'msexchangemailboxrep*' }|Restart-Service}

invoke-command <local CAS2 name> {get-service |select name | where {$_.name -like 'msexchangemailboxrep*' }|Restart-Service}


  • Edited by Elvenil 22 hours 20 minutes ago
Free Windows Admin Tool Kit Click here and download it now
June 17th, 2015 5:10am

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics