I Need To Make A Change With My IT Support! Call (225) 706-8414

Migrating multiple users in Exchange 2010

You need to create move requests for several different users in Exchange 2010; all mailboxes are destined for the same mailbox store. Instead of doing it via the Exchange Management Console (EMC), you would to do this via an import a text file.


Presume you need to move the following users to a new Exchange 2010 server:

  • Doe, John <jdoe@domain.com>
  • Smith, Jane <jsmith@domain.com>
  • Else, Somebody <selse@domain.com>
  1. Get a list of the email addresses to move and put them in a plain text file, one per line:
    You can actually use the display name or logon name as well, but this doc uses email addresses.
  2. Open the Exchange Management Shell.
  3. Pipe the list of addresses through the Get-Mailboxcmdlet to make sure that you don’t have any errors:
    > cat .to-move.test.txt | Get-Mailbox -DomainController dc.domain.local
    Name             Alias    ServerName     ProhibitSendQuota
    ----             -----    ----------     -----------------
    Doe, John        jdoe     exch01         unlimited
    Smith, Jane      jsmith   exch02         unlimited
    Else, Somebody   selse    exch03         unlimited
  4. Pipe the same list through the Get-MoveRequestcmdlet to make sure there’s not already a move request (even a completed one!) for the users.  If there is, you’ll need to delete that request before you can create a new one for the users. You should get several errors like the following:
    Couldn't find a move request that corresponds to the specified identity 'jdoe@domain.com'.
        + CategoryInfo          : NotSpecified: (:) [Get-MoveRequest], ManagementObjectNotFoundException
        + FullyQualifiedErrorId : 5C454292,Microsoft.Exchange.Management.RecipientTasks.GetMoveRequest

    If you see “real” output like the following, there’s still an exisiting move request for that user:

    DisplayName                                Status                    TargetDatabase
    -----------                                ------                    --------------
    Doe, John                                  Completed                 Mailbox Database 1890918292
  5. Use the Get-MailboxDatabasecmdlet to determine the name of the database you’re moving to:
    >  Get-MailboxDatabase
    Name                           Server          Recovery        ReplicationType
    ----                           ------          --------        ---------------
    Mailbox Database 0275909894    EXCH01          False           None
    Mailbox Database 0060196605    EXCH02          False           None
    Mailbox Database 1890918292    EXCH03          False           None

    Let’s assume you want to move all of them to the database on EXCH03

  6. Once you’ve verified that all the addresses are correct and that there are no existing move requests, just pipe that same file through the New-MoveRequestcmdlet to create multiple requests quickly:
    > cat .to-move.test.txt | New-MoveRequest -DomainController dc.domain.local -BatchName "2013-03-19"  -TargetDatabase "Mailbox Database 1890918292"
  7. After a few moments (the bigger the file, the longer the wait), you should have a long list of move requests:
    DisplayName              Status      TotalMailboxSize            TotalArchiveSize               PercentComplete
    -----------              ------      ----------------            ----------------               ---------------
    Doe, John                Queued       73.25 KB (75,004 bytes)                                   0
    Smith, Jane              Queued       84.63 KB (86,658 bytes)                                   0
    Mailbox 'domain.local/Users/Else, Somebody' is already in the target database 'Mailbox Database 0060196605'.
        + CategoryInfo          : InvalidArgument: (selse@domain.com:MailboxOrMailUserIdParameter) [New-MoveRequest], RecipientTaskException
        + FullyQualifiedErrorId : 249EA860,Microsoft.Exchange.Management.RecipientTasks.NewMoveRequest

    Note that the third user, Somebody Else, was already on the target database so the cmdlet threw an error instead of creating a move request.

Concerned About Cyber Attacks?


Want to Migrate to the Cloud?

Office 365

Ready to Experience Microsoft Office 365?

Want the latest IT news directly in your inbox? Subscribe now!