Microsoft's only supported method of migrating mailboxes directly from Exchange Server 5.5 servers to Exchange Server 2003 servers in an intraorganizational migration is to use the Move Mailbox Wizard. To migrate mailboxes from Exchange 2000 Server servers to Exchange 2003 servers, Microsoft also recommends using the Move Mailbox Wizard, although in-place upgrades are fully supported.

The Move Mailbox Wizard has been around since Exchange 2000, but the Exchange 2003 version is a much more attractive and efficient tool for moving mailboxes from legacy Exchange servers to Exchange 2003. Let's discuss the wizard's use and new features.

When to Use the Wizard
You can use the Move Mailbox Wizard only for intraorganizational migrations, not for interorganizational migrations. In other words, you can use the wizard to move mailboxes only between servers that are within the same Exchange organization. For interorganizational moves, you need to use the Mailbox Merge Wizard (formerly Exmerge) or the Exchange Migration Wizard.

In a mixed-mode organization, the Exchange 2003 Move Mailbox Wizard can move mailboxes only between servers that are within the same Exchange 5.5 site or administrative group. (In a mixed-mode organization, an Exchange 5.5 site corresponds to an Exchange 2003/Exchange 2000 administrative group.) You can move individual or multiple mailboxes between any combination of Exchange 2003, Exchange 2000, and Exchange 5.5 servers. In a native Exchange 2003 or Exchange 2000 organization, you can use the wizard to move mailboxes between servers that are in different administrative groups. In this case, you can move mailboxes between any combination of Exchange 2003 and Exchange 2000 servers.

Because the Exchange 2003 Move Mailbox Wizard is more functional than earlier versions, you can also use it to move mailboxes between Exchange 2000 and Exchange 5.5 servers, even if your environment has no Exchange 2003 servers. To use the wizard in this way, you must first run the Exchange 2003 Forestprep process in your Active Directory (AD) forest. To do so, execute the setup.exe /forestprep command from the \setup\i386 folder on the Exchange 2003 installation CD-ROM. Make sure you run this command on a server in the same Windows domain as your schema operations master server. Then, run Setup again, this time on the server that you'll use as the console for your administrative operations. Choose the option to install only the Exchange Management components. This server only needs to run Windows 2000 (or Windows Server 2003); the server doesn't need to run Exchange or even have it installed. This process installs the Exchange Management Console, which lets you use the Move Mailbox Wizard. You can also install the console on a Windows XP workstation.

How the Wizard Works
The Move Mailbox Wizard makes a Messaging API (MAPI) connection to the source mailbox server, then reads the folder hierarchy from the source server and recreates it on the target server. The wizard initiates a MAPI transfer to move messages from the source server to the target server. If the read of an item fails, the wizard retries the read. If the read fails again, the wizard drops the item from the processing list and either continues processing the mailbox or abandons the processing, depending on your configuration settings, which I discuss later. When the wizard completes a move operation, it removes the contents of the source mailbox from the source server and updates the user's AD object attributes so that the user's mailbox homes on the target server rather than the source server. If you move POP or IMAP users, you might need to update settings on those users' mail clients to point to the mailbox's new server location.

The Exchange 2000 version of the Move Mailbox Wizard is less than perfect in terms of performance and scalability. Although you can use the Microsoft Management Console (MMC) Active Directory Users and Computers snap-in to select multiple user objects, the wizard processes the objects in a strictly sequential fashion. For example, if you select five users, the mailbox move operation for User2 won't begin until the move operation for User1 finishes, and so on.

In contrast, the Exchange 2003 Move Mailbox Wizard is multithreaded, with as many as four threads per Move Mailbox Wizard session. Using the same five-user example, the new wizard performs the mailbox move operations for User1 through User4 in parallel. Figure 1 shows multiple mailboxes being moved simultaneously. In general, this approach yields better performance, simply because one user's large mailbox won't act as a bottleneck and block processing of other, smaller mailboxes. If four threads aren't sufficient, you can run multiple instances of the Move Mailbox Wizard on the same server and from the same instance of either the MMC Exchange System Manager (ESM) snap-in or the Active Directory Users and Computers snap-in. Generally speaking, the Exchange 2003 Move Mailbox Wizard will improve performance from 10 to 20 percent compared with the Exchange 2000 Move Mailbox Wizard.

Most well-configured production Exchange servers capable of supporting hundreds or perhaps thousands of MAPI (e.g., Microsoft Outlook) clients have sufficient capacity to execute multiple threads simultaneously. Performance figures on the server environment that hosts my production mailbox show that single threads execute at a transfer rate of about 500MB per hour. The source and target servers in my production environment are colocated on the same 100Mbps LAN, and the servers at either end have typical RAID 0+1 I/O subsystems. Depending on the configuration of your systems and your network, you can expect transfer rates comparable to or better than 500MB per hour, although you shouldn't expect the performance improvement to scale linearly with an increase in threads.

Mailbox Bloat
My experience with using Exchange 2003's Move Mailbox Wizard suggests that some mailbox bloat (in the vicinity of 5 to 10 percent) occurs when the wizard moves mailboxes. This mailbox expansion probably occurs because Single Instance Storage (SIS) breaks down when mailboxes are moved to different systems. (SIS is Exchange's ability to store just one copy of a message that was sent to multiple users, thus minimizing the amount of storage space the data requires. For details about SIS, see "Does Single-Instance Storage Matter Anymore?" September 2001, http://www.winnetmag.com/microsoftexchangeoutlook, InstantDoc ID 21564.) Microsoft claims that the Move Mailbox Wizard strives to maintain SIS when possible, but some environments have seen significant decreases in their SIS ratios after moving mailboxes.

However, the real value of SIS is questionable. Many organizations observe very low SIS ratios and aren't perturbed about the possibility of a decrease in the ratio from an already low value. A good system-management practice is to increase mailbox limits at least temporarily on accounts that you plan to move from either Exchange 2000 or Exchange 5.5 servers to Exchange 2003. That step might help prevent a flood of calls to your Help desk from users who can't send mail on the morning after the move operation.

Moving mailboxes increases the transaction volume on a server. For example, moving a 100MB mailbox generates about 110MB of logs (data plus about 10 percent overhead). For that reason, you should also keep an eye on the transaction logs when you use the Move Mailbox Wizard.

Move Mailbox Wizard and ESM
Earlier versions of the Move Mailbox Wizard are accessible only from the Active Directory Users and Computers snap-in because moving user mailbox data was perceived primarily as a user-management function. Although the Exchange 2003 Move Mailbox Wizard is still available within the Active Directory Users and Computers snap-in, moving mailboxes is now typically considered a function of Exchange management and the wizard is also available through the ESM snap-in. This dual homing of the Move Mailbox Wizard makes sense because a system manager often might want to look at properties of the Exchange databases before actually moving users. By making the Move Mailbox Wizard available from the ESM snap-in, Microsoft has ensured that all the information that a system manager might want is available in one place.

To move mailboxes, open either the Active Directory Users and Computers snap-in or the ESM snap-in, then navigate to the relevant user mailboxes. Select the user or users you want to move, right-click your selection, then click Exchange Tasks. In the Exchange Task Wizard, select the Move Mailbox option, then click Next. Use the Server drop-down list to specify the target server, and select a mailbox store from the Mailbox Store drop-down list, as Figure 2 shows. Click Next and set the remaining options for corrupted-message handling and scheduling.

Scheduling Mailbox Moves
Obviously, you won't want to move a lot of user mailboxes during working hours. Moving mailboxes puts a significant load on the system and can degrade performance. With the Exchange 2000 version of the Move Mailbox Wizard, you can perform move operations after hours, but only manually—you must be on the system to do the pointing and clicking. If you want processing to occur unattended, you must use a script and a batch job scheduler, such as winat.exe.

The Exchange 2003 wizard lets you schedule the move to run at a particular time, and processing can be unattended. You simply select the mailboxes to be moved, identify the target location, and specify the time you want the move mailbox operation to begin. You can also specify an end time, thus ensuring that outstanding move operations will terminate before they can interfere with user performance.

For example, say that you select 100 mailboxes to be moved starting at 1:00 a.m. and you define 8:00 a.m. as the operation end time. If only 50 mailboxes have been moved by 8:00 a.m., the mailbox moves that the wizard is processing at that time and any pending mailbox moves are abandoned. Thus, system performance isn't compromised when users begin logging on at 8:30 a.m. The Move Mailbox Wizard report identifies which mailboxes were moved successfully and which weren't. Figure 3 shows the Move Mailbox Wizard's scheduling options.

If you defer the start time for a move mailbox operation, you must leave the Move Mailbox Wizard session open and let it count down to the scheduled start time, as Figure 4 shows. If you configure a start time for the operation, then exit the wizard, the operation won't run.

Dealing with Corrupted Items
The Exchange 2000 version of the Move Mailbox Wizard doesn't deal well with corrupt data in user mailboxes. If the wizard detects a corrupt message during the move mailbox operation, the wizard abandons the entire operation without moving the current or pending mailboxes.

The Exchange 2003 Move Mailbox Wizard deals with errors much more intelligently. You can define the action that the Move Mailbox Wizard will take if it detects an error during the move operation, and you can configure the wizard to skip corrupted items that can't be read from the source server and to log them as errors.

You can also specify a threshold of the number of corrupted items that the wizard can encounter and still complete the move. For example, if you specify a threshold of 10 items, the Move Mailbox Wizard will permanently delete as many as 10 corrupted items during the operation and still successfully move the mailbox. The corrupted items are permanently deleted from the source mailbox and, ultimately, the target mailbox. If the wizard encounters more than 10 corrupt items, it cancels the move operation and doesn't move the mailbox from the source server.

Be aware that corrupted data items that the wizard deletes before reaching the threshold are permanently deleted and aren't recoverable. Consequently, if you don't back up the source database before you start the move mailbox operation, you won't be able to recover corrupted items that the wizard encounters and deletes.

If you don't want to tolerate any problem items during the move operation, you can have processing of that mailbox terminate immediately by selecting a corrupted-items threshold of 0. Then, when the Move Mailbox Wizard encounters a corrupt item, the wizard will move on to process the next mailbox. Because a corrupted item usually means that the Exchange database is corrupted, running the Eseutil utility might resolve the problem.

Status Updates and Reporting
After a mailbox move session is finished, the Move Mailbox Wizard will produce a detailed XML report of the move. The wizard will display information about pending moves, moves currently in progress, failed moves, and completed moves. The report also displays the amount of time remaining before a scheduled move operation will begin and elapsed times for moves. You can analyze the report offline or incorporate it into other reporting or administrative systems. To manipulate the report's data, you can simply use a custom XML style sheet.

A Better Tool
The Exchange 2003 Move Mailbox Wizard's multithreading and scheduling capabilities are much improved over earlier versions. The new wizard is a valuable tool for moving users from Exchange 2000 servers to Exchange 2003 servers and is indispensable for moving users off Exchange 5.5 servers.

However, if you need to move mailboxes between Exchange 5.5 sites while in mixed mode or perform interorganizational mailbox moves, you need to consider another approach. In these situations, you can use the Mailbox Merge Wizard, the Exchange Migration Wizard, or a third-party tool to accomplish the necessary moves.