How improve migration performance and results when migrating to Office 365

For Customers with 1000 users or more

 

  1. The tenant admin should open a service request and reference Bemis article 2835021.  

          The product group has also requested the following information in the request.

  • The tenant domain (tenant.onmicrosoft.com)
  • The version of Exchange Online (These requests should all be for the new Office 365 based on Exchange Server 2013.)
  • The number of mailboxes that are being migrated
  • The number of concurrent admins accounts that will be used for the migration
  • The number of concurrent threads that will be in use across all migration servers
  • The number of runspaces that will be created per minute
  • The proposed limit (powershellMaxTenantRunspaces, powershellMaxConcurrency, etc.)

 

  1. If you need assistance determining the settings to submit for approval, please use the following

          example to extrapolate appropriate values for your request.

 

If you want to migrate 100 users simultaneously, the service request may include the following information:

 

  • The number of concurrent admins accounts that will be used for the migration 100
  • The number of concurrent threads that will be in use 100
  • The number of runSpaces will be created per minute 200
  • The proposed limit (powershellMaxTenantRunspaces, powershellMaxConcurrency, etc.)

PowerShellMaxTenantRunspaces 400 : 

                  In one minute, per tenant, the runspace creation/delete count should not exceed 400

PowerShellMaxRunspaces 40: In one minute, per user, the runspace creation/delete count should not exceed 40

PowerShellMaxConcurrency 20 : One user can create 20 concurrent remote PS at most

PowerShellMaxTenantConcurrency 200: Tenant can create 200 concurrent remote PS at most

PowerShellMaxCmdlets 1000: The max cmdlet execution number in 1000 seconds

 

NOTE: These recommendations are subject to change. We are working directly with Microsoft to identify appropriate values to include in the requests and will update this article as additional information becomes available.

 

  1. There is a new setting in MNE to control the number of PowerShell connections

 

[PowerShell]

MaxPowershellConnections=

 

This value should be set to evenly distribute the max tenant runspaces granted by Microsoft across the migration machines that will be used.  If the machines are sharing an MNE SQL database, the max tenant runspace number granted by Microsoft should be divided by the number of migration machines to arrive at the value for this setting (i.e. set MaxPowershellConnections=limit/#servers). If the migration machines have separate MNE SQL databases, you will need to set the value through a machine connected to each database, but the total should not exceed the max number allowed so round down with this calculation.

 

  1. With the new PowerShell logic in MNE, it is feasible to run higher data migration thread counts to achieve better throughput. As a result, do not constrain the number of threads set in the MNE Migration Console by the PS limits allowed by Microsoft. You should see better throughput by setting the data migration thread counts higher than the PS throttling limit even though some threads may sleep initially while waiting for an available runspace.

 

MNE’s Admin Pooling feature should be utilized to automatically create admin accounts for each thread. For example, if you are planning to run 10 machines with 10 threads each, Admin Pooling should be enabled and set to 100 admin accounts. NOTE: When using MNE, you will need to turn off Admin Pooling if attempting to reset Office 365 passwords and license mailboxes in Office

 

 

For Customers under 1000 users

  1. Microsoft will not provide increases to the default throttles, so service requests should not be submitted.

 

  1. There is a new setting in MNE to control the number of PowerShell connections 

[PowerShell]

MaxPowershellConnections= 

 

To determine the appropriate value for this setting, take the default tenant max runspace limit of 9 and divide by the number of migration machines you plan to use. For example, if you wanted to use 3 migration machines for your migration, you should set MaxPoweshellConnections=3. You should round down when calculating this value so, if you want to use 4 migration machines, set MaxPoweshellConnections=2

 

  1. With the new PowerShell logic in MNE, it is feasible to run higher data migration thread counts to achieve better throughput. As a result, do not constrain the number of threads set in the MNE Migration Console by the PS limits allowed by Microsoft. You should see better throughput by setting the data migration thread counts higher than the PS throttling limit even though some threads may sleep initially while waiting for an available runspace.

 

  1. MNE’s Admin Pooling feature should be utilized to automatically create admin accounts for each thread. For example, if you are planning to run 3 machines with 4 threads each, Admin Pooling should be enabled and set to 12 admin accounts.

        NOTE: When using MNE, you will need to turn off Admin Pooling if attempting to reset Office 365 passwords and license mailboxes in Office 365 during the same program run.   

Trevor Taegder
Senior Technical Support Engineer
Quest | Support