Saturday, August 30, 2014

Exchange 2010 (SP3) - Migration - Part 7 - Mailbox Migration

And now the moment that we've been waiting for: moving the mailboxes.

In this post, I'll test client access (after the move) with Outlook, which uses MAPI over RPC. For web-based access (HTTP/S), there are some CAS URL adjustments to be made as well. I'll address that in another blog post.

Like most actions in Exchange 2010, mailboxes can be moved with either the EMC or the EMS. We'll start with the EMS, then use the EMC.

Mailbox migration with the EMS 

Although additional optional parameters exist, it is possible to migrate a mailbox with a cmdlet as simple as this:

[PS] C:\>New-MoveRequest "" -TargetDatabase "DB1"

We can simply indicate the mailbox as above. The -identity parameter (-id for short) is positional here and as such does not need to be stated explicitly.

There will be some output indicated, for example:

DisplayName        Aisha Bhari
Status                   Queued
TotalMailboxSize  564.8 KB (578,340 bytes)
TotalArchiveSize   -
PercentComplete  0
This may be (and probably will be) displayed on the screen differently.

We can see the status of a mailbox move with the following cmdlet:

[PS] C:\>Get-MoveRequest | fl displayname,status,TargetDatabase

DisplayName    : Aisha Bhari
Status         : Completed
TargetDatabase : DB1

Optionally, we can indicate the threshold of "bad" (or corrupt) items that we are willing to skip (and essentially lose):

[PS] C:\>New-MoveRequest "" -TargetDatabase "DB1" -BadItemLimit 100 -AcceptLargeDataLoss

The default is 0.

Mailbox migration with the EMC

Now we'll see the process with the Management Console. I'll also take into account the user's perspective as well.

First, we go to the "Recipients" section of the EMC (below the Organization and Server sections), locate the mailbox in question, right-click on it and select "New Local Move Request".

We then select the target database (click "Next" as needed):

Then we decide the threshold for "bad items" (this is the equivalent of what we did at the command line earlier with the -badItemLimit parameter):

We click "Next/Finish" and if all goes well, we should see this:

The User Experience

In theory, we should be able to move mailboxes from an Exchange 2007 server to an Exchange 2010 server while the user is in Outlook. This is called an "online move" since the user can remain online... except for the very last part of the migration.

Here are some more technical details (from the Exchange Team blog):

In fact, there will be some loss of functionality during the move.

Logged in as one of my test users, I attempted to open Outlook and send a message while the mailbox move was in progress.

Note: this was with Outlook in "Exchange Online Mode" as opposed to "Cached Mode". Results may differ with cached mode.

This was the result:

Since the print is small, I'll rewrite the first part of the message: "The item cannot be saved to the folder" - presumably the "Sent Items" folder which is not accessible because of the migration.

Otherwise, the first time the user opens Outlook after the move, they will most likely see this message:

Even so, despite these messages, both of my test users were able to access their mailbox after re-opening Outlook.

All things considered, it may be preferable to perform the mailbox moves after work hours.


This concludes the mailbox migration process in itself.

It can be interesting, and useful for troubleshooting, to compare "Connection Status" and "Autoconfiguration" results before and after the migration.

For example, this...

Note: the server name is "EX1" (the Exchange 2007 server).

Compared to this:

Some comments are necessary. First, as we can see, we do not see the name of "the" Exchange 2010 server (or any Exchange 2010 server for that matter) because I created a "CAS Array" instead. In conjunction with a load balancer (KEMP, F5, etc.), I can direct Outlook clients to whichever Exchange 2010 server the load balancer selects.

But why does the EX1 server still appear?

This is something specific to my test environment. The Outlook profile of test user Aisha Bhari includes a shared mailbox that still resides on the Exchange 2007 server. Once we move the shared mailbox, we should see something like this:

Notice that the name of the CAS Array is also what we see in the account "Server Settings":

No comments:

Post a Comment