2. Performing Online Mailbox Moves
With online
moves, you can move mailboxes between databases on the same server. You
also can move mailboxes from a database on one server to a database on
another server regardless of whether the servers are in a different
Active Directory site or in another Active Directory forest.
Normally, when you perform online moves, the move process looks like this:
-
You create a new move request for the mailbox or mailboxes that you
want to move using either the Exchange Management Console or Exchange
Management Shell.
-
The move request is sent to the Mailbox Replication Service running
on a Client Access server in the current Active Directory site. This
server acts as the Mailbox Replication Service proxy.
-
The Mailbox Replication Service (MRS) adds the mailboxes to the Move
Request queue and assigns the status Queued For Move to each mailbox.
This indicates the move has been requested but the move has not started.
-
When a move request is at the top of the queue, the MRS begins
replicating the related mailbox to the destination database and assigns
the Move In Progress status to mailboxes being moved. By default, the
replication service can move up to 5 mailboxes on a single database at
one time and up to 50 mailboxes at a time in total.
-
When the MRS finishes its initial replication of the mailbox, the service assigns the Ready To Complete status to the mailbox.
-
The mailbox remains in the Ready To Complete state until you or
another administrator specifies that you either want to complete the
move request or cancel the move request. If you complete the move
request, the MRS assigns the Completing status while it performs a
final data synchronization and then marks the move as completed.
-
When the move is completed, the mailbox or mailboxes
are available in the new location. Because users can continue to access
their e-mail account during a move, you can perform online moves at any time.
One way to perform online mailbox moves within the same Exchange
forest is by using the Exchange Management Shell. The commands for
performing online mailbox moves include the following:
-
Get-MoveRequest
View the detailed status of an ongoing mailbox move that was initiated using the New-MoveRequest cmdlet.
Get-MoveRequest -Identity Identity
[-Credential Credential
]
[-DomainController FullyQualifiedName
] [-Organization
OrganizationId
] [-OrganizationalUnit OrganizationalUnitId
]
[-ResultSize Size
] [-SortBy String
]
Get-MoveRequest [-BatchName BatchRequestName
] [-Credential
Credential
] [-DomainController FullyQualifiedName
]
[-MoveStatus Status
] [-Offline <$true | $false>]
[-Organization OrganizationId
] [-OrganizationalUnit
OrganizationalUnitId
>] [-Protect <$true | $false>]
[-RemoteHostName FullyQualifiedName
] [-ResultSize Size
]
[-SortBy String
] [-SourceDataBase DatabaseId
]
[-Suspend <$true | $false>]
[-SuspendWhenReadyToComplete <$true | $false>]
[-TargetDatabase DatabaseId
]
-
New-MoveRequest
Start a mailbox move. You also can verify readiness to move by using
the –WhatIf parameter. Use the –Protect parameter to protect the move
request for tenant administrators.
New-MoveRequest -Identity Identity
[-TargetDatabase DatabaseId
]
{AddtlParams}
New-MoveRequest -Identity Identity
-Remote {$true | $false}
-RemoteHostName HostName
-TargetDeliveryDomain Domain
[-RemoteCredential Credential
] [-RemoteGlobalCatalog GCServer
]
[-RemoteTargetDatabase DatabaseID
] [-TargetDatabase DatabaseID
]
{AddtlParams}
New -MoveRequest -Identity Identity
-RemoteGlobalCatalog GCServer
-RemoteLegacy <$true|$false> -TargetDeliveryDomain Domain
[-RemoteCredential Credential
] [-RemoteTargetDatabase DatabaseID
]
[-TargetDatabase DatabaseID
] {AddtlParams}
{AddtlParams}
[-BadItemLimit Limit
] [-BatchName BatchRequestName
]
[-DomainController FullyQualifiedName
] [-IgnoreRuleLimitErrors
<$true|$false>] [-MRSServer CASServer
] [-Protect
<$true|$false>] [-Suspend <$true|$false>] [-SuspendComment String
]
[-SuspendWhenReadyToComplete <$true|$false>]
-
Resume-MoveRequest
Resumes a move request that has been suspended or failed.
Resume-MoveRequest -Identity MoveRequestIdentity
[-DomainController FullyQualifiedName
]
-
Set-MoveRequest
Changes a move request after it has been started.
Set-MoveRequest -Identity MoveRequestIdentity
[-BadItemLimit Limit
] [-DomainController FullyQualifiedName
]
[-IgnoreRuleLimitErrors <$true|$false>] [-Protect <$true|$false>]
[-RemoteCredential Credential
] [-RemoteGlobalCatalog GCServer
]
[-RemoteHostName HostName
] [-SuspendWhenReadyToComplete
<$true|$false>]
-
Suspend-MoveRequest
Suspends a move request that has been started but has not yet been completed.
Suspend-MoveRequest -Identity MoveRequestIdentity
[-SuspendComment Comment
]
[-DomainController FullyQualifiedName
]
-
Remove-MoveRequest
Cancels a mailbox move initiated using the New-MoveRequest
cmdlet. You can use the Remove-MoveRequest command any time after
initiating the move but only if the move request is not yet complete.
If the move request was initiated with the –Protect parameter, you must
use the –Protect parameter to cancel the move request.
Remove-MoveRequest -Identity Identity
[-MRSServer CASServer
]
[-DomainController FullyQualifiedName
] [-Protect {$true | $false}]
Moving Mailboxes Within a Single Forest
You perform online
mailbox moves within a single forest by using the Exchange Management
Shell. To verify move readiness, use New-MoveRequest with the –WhatIf
parameter for each mailbox you plan to move. The following examples
show two different ways you can verify whether Garrett Vargas's mailbox can be moved:
New-MoveRequest -Identity 'garrettv'
-TargetDatabase "Engineering Primary" -WhatIf
'cpandl.com/users/Garrett Vargas' | New-MoveRequest -TargetDatabase
'Engineering Primary' -WhatIf
To initiate an online move, you use New-MoveRequest for each mailbox
you want to move. The following examples show two different ways you
can move Garrett Vargas's mailbox:
New-MoveRequest -Identity 'garrettv' -Remote -RemoteHostName
'mailserver17.cpandl.com' -mrsserver 'casserver21.cpandl.com'
-TargetDatabase "Engineering Primary"
'cpandl.com/users/Garrett Vargas' | New-MoveRequest -Remote
-RemoteHostName 'mailserver17.cpandl.com' -mrsserver
'casserver21.cpandl.com' -TargetDatabase 'Engineering Primary'
After you initiate a move, you can check the status of the online move using Get-MoveRequest.
As shown in the following example, the key parameter to provide is the
identity of the mailbox you want to check:
Get-MoveRequest -Identity 'garrettv'
By default, basic information about the move request is displayed.
To get more detailed information, add the –IncludeReport parameter as
shown in this example:
Get-MoveRequest -Identity 'garrettv' -IncludeReport
You can use Suspend-MoveRequest to suspend a move request that has
not yet completed, and Resume-MoveRequest to resume a suspended move
request. Resuming a suspended request allows it to complete.
You can cancel a move at any time prior to running the move request being completed by Exchange. To do this, run Remove-MoveRequest and specify the identity of the mailbox that shouldn't be moved. An example follows:
Remove-MoveRequest -Identity 'garrettv'
When your source and destination Mailbox servers are running Exchange Server 2010 and are in the same forest, you can move mailboxes by completing these steps:
-
In the Exchange Management Console, expand the Recipient Configuration node, and then select the related Mailbox node.
-
Right-click the mailbox, and then select New Local Move Request. This starts the New Local Move Request Wizard, as shown in Figure 2.
Tip
You can select and move multiple mailboxes
at the same time. To select multiple users individually, hold down the
Ctrl key, and then click each user account that you want to select. To
select a sequence of accounts, select the first user account, hold down the Shift key, and then click the last user account.
-
Click the Browse button to the right of the Target Mailbox Database
text box. In the Select Mailbox Database dialog box, choose the mailbox
database to which the mailbox should be moved. Mailbox databases are
listed by name as well as by associated server.
-
Click Next. If corrupted messages are found in a mailbox, specify
how you would like those messages to be handled. To skip the mailbox if
corrupted messages are found, select Skip The Mailbox. To skip the
corrupted messages if any are found but still move the mailbox, select
Skip The Corrupted Messages.
-
If you elected to skip corrupted messages, you must also specify the
maximum number of corrupted messages to skip. If this value is
exceeded, the mailbox will not be moved.
-
When you click Next and then click New, Exchange Server creates a new move request. Click Finish.
-
Moving mailboxes can take several hours, depending on the size of
the mailboxes you are moving. You can check the status of move requests
by selecting the Move Request node under Recipient Configuration. While
the move request is in the Moving or Queued state, you can cancel the
move request by right-clicking it and then selecting Remove Move
Request.
Moving Mailboxes Between Forests
You can perform online mailbox moves between different Exchange
forests using the Exchange Management Console or Exchange Management
Shell. When you are moving mailboxes between forests, you'll want to
verify that mailboxes are ready to be moved before you submit a move
request. To verify readiness, the Microsoft Exchange Mailbox
Replication service proxy in the source forest checks the status of
each mailbox you are moving and also ensures you have the permissions
required to move the mailboxes from the source forest to the target
forest. If a user has an archive mailbox or subscriptions, you will
likely need to remove the archive mailbox, the subscriptions, or both
before you are able to move the mailbox.
You can verify move readiness in the Exchange Management Shell by using New-MoveRequest
with the –WhatIf parameter for each mailbox you plan to move. The
following examples show two different ways you can verify whether
Charlie Keen's mailbox can be moved:
New-MoveRequest -Identity 'charliek' -Remote
-RemoteHost 'mailserver17.cpandl.com'-mrsserver 'casserver21.cpandl.com'
-TargetDatabase "Engineering Primary" -WhatIf
'cpandl.com/users/Charlie Keen' | New-MoveRequest -Remote
-RemoteHost 'mailserver17.cpandl.com' -mrsserver 'casserver21.cpandl.com'
-TargetDatabase 'Engineering Primary' -WhatIf
You can perform online mailbox moves between forests by following these steps:
-
In the Exchange Management Console, select the mailbox or mailboxes
that you want to move. Right-click, and then select New Remote Move
Request. This starts the New Remote Move Request Wizard.
The mailboxes you selected are listed as the ones that will be moved. Click Next.
-
The source forest is the forest to which you are connected. In the
Target Forest list, select the forest to which you are moving the
mailboxes.
-
In the text box provided, type the fully qualified domain name of a
Client Access server in the source forest that will act as the proxy
server.
-
If you want to provide alternate credentials for the source forest,
select the Use The Following Source Forest's Credential, type the user
name, and then type the password for the account.
-
When the move request is complete, mail sent to the relocated users
in the source forest will be redirected to the target forest. Enter the
post-move external e-mail address for the user or users in the source
forest.
-
When you click Next and then click New to initiate the move request,
the Exchange Management Console calls into the shell and the shell runs
New-MoveRequest for each mailbox you selected. Moving the mailboxes can take several hours, depending on the size of the mailboxes you are moving.
You can perform online moves in the Exchange Management Shell by
using New-M oveRequest for each mailbox you plan to move. The following
examples show two different ways you can move Bruno Denuit's mailbox:
New-MoveRequest -Identity 'brunod' -Remote
-RemoteHost 'mailserver17.cpandl.com'-mrsserver 'casserver21.cpandl.com'
-TargetDatabase "Engineering Primary"
'cpandl.com/users/Bruno Denuit' | New-MoveRequest -Remote
-RemoteHost 'mailserver17.cpandl.com' -mrsserver 'casserver21.cpandl.com'
-TargetDatabase 'Engineering Primary'
After you initiate a move, you can check the status of the online move by using Get-MoveRequest.
As shown in the following example, the key parameters to provide are
the identity of the mailbox you want to check and the name of the proxy
server:
Get-MoveRequest -Identity 'brunod' -mrsserver 'casserver21.cpandl.com'
By default, basic information about the move request is displayed.
To get more detailed information, add the -IncludeReport parameter as
shown in this example:
Get-MoveRequest -Identity 'brunod' -mrsserver 'casserver21.cpandl.com'
-IncludeReport
You can use Suspend-MoveRequest to suspend a move request that is not yet complete, and Resume-MoveRequest to resume a suspended move request. Resuming a suspended request allows it to complete.
At any time prior to running the move request completing, you can cancel the move by running Remove-MoveRequest and specifying the identify of the mailbox that shouldn't be moved, such as:
Remove-MoveRequest -Identity 'brunod' -mrsserver 'casserver21.cpandl.com'