In Exchange 2003, one of the simplest ways to move mailboxes from one Exchange organisation to another was using exmerge. It was particularly useful for sites using ‘Small Business Server’ where the level of data and requirements were low.
In Exchange 2007, exmerge is not a supported method for Importing from PST files. The functionality has been naturally replaced with the Import-Mailbox cmdlet.
Prerequisites
1) You need to run a 32bit version of the Exchange Management tools (SP1 or higher, it should not be RTM, although the destination server for the import process can be RTM), and therefore require a 32 bit computer where you can install the management tools for the organisation. Make sure you use 2007 SP1 or higher management tools.
2) You need Outlook 2003 SP2 or higher installed on this PC.
3) You need to have full access rights to the mailbox you are importing to. You also need to be either Exchange Org Admin if mailboxes are across multiple servers, or Exchange Server Admin if the mailboxes are all on one server.
** A note on account permissions **
If you have tried with an account that does not have the correct Exchange administrator role, once you have fixed the issue by assigning either Exchange Org Admin or Exchange Server Admin you will need to Logout of the management station and log back in again for this change to take effect.
4) Update the computer with update rollup 9 (if using SP1) once you have installed the Management Tools.
5) You need to have created the mailbox enabled users first, and the user ‘alias’ (which is usually the users login name) needs to match the name of the pst file.
Step 1 – Install the Exchange 2007 SP1 Management Tools
Log in to the PC which has Exchange 2007 Management Tools SP1 installed and Outlook 2003 SP2 or higher installed with an appropriate account. During testing I was using Windows7, and this already has all the prerequisites for the management tools out the box. You may need to install the Management Tools prerequisites if you are using an older operating system.
Run a Custom install, and install just the management tools. We do not want to install any other roles on this workstation.
After the install, make sure that you run ALL the same update rollups as is on the Exchange server(s) in your organisation.
Step 2 – Add Full Access Permissions to the Mailboxes
Double check the account you are using on the management computer is an Exchange Organisation admin or Exchange server admin. Next is to add FullAccess to all the mailboxes. This is done using the Add-MailboxPermission cmdlet. I will not go into detail on this cmdlet. Suffice to say that running the following will give the user account ‘shaun’ FullAccess permission on all mailboxes for a particular mailbox server (omit the)
Get-ExchangeServer <servername> | Get-Mailbox | Add-MailboxPermission -User Shaun -AccessRights FullAccess -inheritancetype all
(after you are done, you may wish to remove these permissions, to do so, use the Remove-MailboxPermissions -User Shaun -AccessRights FullAccess -inheritancetype all -confirm:$false)
Of course, if you wish, you can perform this using the GUI, just go to EMC –> Recipient Configuration –> Mailbox and select the users –> Managed Full Access Permissions… on the Action pane and add the account there.
Step 3 – Using the Import-Mailbox cmdlet
Now is time for the Import-Mailbox command. The Import-Mailbox command has a couple of parameters that we are especially interested in.
-Identity
As the name suggests, this is where you specify the mailbox you would like to use for the destination of the import routine.
-PSTFolderPath
This will point the Import routine to look in the path for the PST files we are interested in. If you have only ONE PST file to import for a specific user, you can reference the exact PST file here and it will import the PST file. However be careful that you do not specify an explicit PST file and pipe multiple Mailboxes to the command, otherwise it will import the same PST file for all users which could have some embarrassing results!
-MaxThreads
This is the number of mailboxes to move at any one time. Now, this will largely depend on the resources that you have available. The typical value is 4, and this is normally more or less acceptable for this operation unless you have thousands of mailboxes, then you may want to increase this. Just remember ultimately you will have hardware bottlenecks.
-ValidateOnly
Using this switch is similar to the whatif switch in other cmdlets (and this one in fact). It will not move any data, only highlight if the process is likely to be successful and notify you if there are any issues you need to take care of.
So once we have the PST file(s) in the PSTFolderPath of our choosing run the command depending on your situation:
Importing a single PST to a single Mailbox:
Import-Mailbox <MAILBOX ALIAS> -PSTFolderPath <PathToFolderContainingPST>
Importing a bunch of PST files to their associated Mailboxes:
Dir c:PSTFiles*.pst | Import-Mailbox
Go through ALL mailboxes, and find associated PST and import:
Get-Mailbox | Import-Mailbox -PSTFolderPath <PathToFolderContainingPST>
So as you can see, this routine is all in the preparation of the environment. The actual commands you run to do the Import are small, sweet and efficient. The great thing about using Powershell for this task is that it is so scalable, if you have a situation where there are many PST’s you need to import, this will quite happily do the work.
References:
http://msexchangeteam.com/archive/2007/04/13/437745.aspx – You Had Me At EHLO… : How to Export and Import mailboxes to PST files in Exchange 2007 SP1
http://technet.microsoft.com/en-us/library/bb629586.aspx – Import-Mailbox cmdlet Technet reference
http://technet.microsoft.com/en-us/library/bb691363.aspx – How to Import Mailbox Data Technet reference