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