By Doron Offir - Google Apps Deployment Specialist from DoIT

You are trying to migrate exchange 2010 SP1 using Google Apps Migration for Microsoft Exchange (following as GAMME) and it fails.

The symptoms are: while migrating users (more than ten users, usually) from Microsoft Exchange 2010 SP1 to the Google Apps using GAMME you keep getting authentication failure responses, oddly enough if you take the failed users from the log and run them separably with GAMME it will work with no issues.

After doing research on this problem, the origin seems to be Exchange 2010's feature called Client Throttling Polices.

You can read more about Client Throttling Polices here, and have more detailed information here, and even more in depth overview here. Basically the idea is to allow a better control over client connections made to the Microsoft Exchange 2010 servers.

Since SP1 of Exchange 2010, the default policy is now turned on by default. When we try to migrate (or even estimate) more than 10 users concurrently, the Exchange server will refuse the connection. Mistakenly, Exchange server will think that GAMME violating it's policy.

After some searching and testing, it seems that the problem is mainly due to the RCAMaxConcurrency settings within the default policy.

The setting can be raised until hitting the golden line that will allow migration to run uninterruptedly, but the try-and-error process can be very time consuming. I suggest to set RCAMaxConcurrency to null, at least for the time of the migration. Setting this value to 0 will disable this policy and GAMME will be able to communicate with all the connections it's needing.

To do so please run the following lines in Exchange PowerShell:

Of course, prior to the change, please document the current settings, can be achived by:

>$default = Get-ThrottlingPolicy | where-object {$_.IsDefault -eq $true} > C:\<FileName>.txt

1st line query default policy, 2nd line makes the change:

>$default = Get-ThrottlingPolicy | where-object {$_.IsDefault -eq $true}
>$default | set-throttlingpolicy -RCAMaxConcurrency $null

If this change doesn't help, try to set the rest to Null, as below.

>$default = Get-ThrottlingPolicy | where-object {$_.IsDefault -eq $true}
>$default | set-throttlingpolicy -RCAMaxConcurrency $null -RCAPercentTimeInAD $null -RCAPercentTimeInCAS $null -RCAPercentTimeInMailboxRPC $null

Another hint - I did encounter a situation when the change took affect only after a few minutes, especially after I "violated" the policy with the try-and-error test, so wait a minute or two after committing the change and only then try to run the GAMME again.

A small tip - look at the Exchange logs for the user running the GAMME. Otherwise, you might not find what you're looking for :)

Happy Migrations!
AuthorVadim Solovey