As I was playing with the Exchange 2010 Console, the “Move Request” section under Recipient Configuration caught my attention. But, there was no option other than to export the list. So, I decided to run a mailbox move and see what happens. Two types of mailbox move is supported in 2010.
- Local Move – Moving a mailbox from one database to another on the same or different server, as long as the servers are in the same exchange organization.
- Remote Move – Moving a mailbox to a database in a different forest.
More Info Added:
Mailbox move in 2010 is asynchronous and hence users can still access data while the mailbox gets moved. The actual move is performed by a new service in 2010 named “Exchange Mailbox Replication” service. This service runs on a CAS server and that indicates that the CAS servers are responsible for the mailbox moves.
The mailbox’s dumpster IS moved, as long as both source and destination servers are 2010. The mailbox move history is maintained in the mailbox.
Mailbox move from Exchange 2000 and 2007 SP1 to 2010 is not supported.
In order to move a mailbox from one database to another within the same organization, launch EMC and navigate to Recipient Configuration -> Mailboxes. Right click the mailbox in question and select “New Local Move Request”.
Select the target database for the mailbox.
Select your move option – whether to skip the mailbox move if corrupted messages are found or to skip a few corrupted messages & go ahead.
A summary of the mailboxes that are moved is displayed. Click New to continue.
The wizard checks and initiates the mailbox move by submitting a mailbox move request. Take a close look at the cmdlet & you will find out that the cmdlet run is New-MoveRequest and not Move-Mailbox. Click Finish to complete your mailbox move request.
Exchange hasn’t finished moving the mailboxes, but has only received a request to move. In order to find out the status of the mailbox move, we need to go to the “Move Request” section. The list of mailboxes getting moved along with the status is displayed. You can use Get-MoveRequest cmdlet to get the status of the mailbox move if you prefer to use the shell.
You can double click on any mailbox to get more information.
In short, mailbox move process has been slightly changed in Exchange 2010. The admin submits a move request to the server and the actual move is run in the background & hence it would appear that the mailbox move wizards have completed pretty quickly even for large mailboxes. The reason being the process runs in the background, whereas in Exchange 2007 the wizard actually runs through the entire process & once you finish the wizard, all the mailboxes will be in the target database.
To move a mailbox using the shell, run the command
New-MoveRequest –identity username –TargetDatabase “database name”
Once the mailbox move is initialized, you can check the status by running
Get-MoveRequest –identity username
I am getting below error for one user while migrating different database on the same server.
Error: Couldn’t switch the mailbox into Sync Source mode.
This could be because of one of the following reasons:
Another administrator is currently moving the mailbox.
The mailbox is locked.
The Microsoft Exchange Mailbox Replication service (MRS) doesn’t have the correct permissions.
Network errors are preventing MRS from cleanly closing its session with the Mailbox server. If this is the case, MRS may continue to encounter this error for up to 2 hours – this duration is controlled by the TCP KeepAlive settings on the Mailbox server.
It’s hard to come by knowledgeable people on this
subject, but you seem like you know what you’re talking about!
Thanks
Thanks Lida
Tried to restart MRS, did not help much.
hello,
when moving mailbox from Exchange 2003 to 2010 movement stuck at 95%, result as given below.
Messages have been enumerated successfully. 0 items loaded. Total size: 0 B (0 bytes).
Initial seeding completed, 0 items copied, total
size 0 B (0 bytes).
Final sync has started.
Stage: FinalIncrementalSync. Percent complete: 95.
Waiting for mailbox changes to replicate.
Do you have a large AD environment?
Anything more in the move logs?
Hi,
If we dint mention any database name in the New-MoveRequest cmdlet which database will be taken by Default. for example my powershell script is like below…
$MailboxArray = Get-Mailbox -OrganizationalUnit “OU=$TenantID,$BaseADPath” -DomainController $PreferredDC
foreach ($mailbox in $MailboxArray)
{
Write-Host “Moving Mailbox $mailbox” -foregroundcolor cyan
$mailbox | New-MoveRequest -Confirm:$false -DomainController $PreferredDC
}
If you see the above New-MoveRequest cmdlet, I dint mention any database name so by default which database will be taken. please let me know as soon as possible.
Please send me a mail @ smooth.munna@gmail.com
regards,
Bhalotia
Hi Bhalotia,
The move requests are handled by the CAS servers (MRS) and the CAS will automatically load balance the mailboxes among the databases you have.
Thanks for detail information about Movemailbox and Moverequest you put up on here. I just want to add that if users select “skip a few corrupted messages” option, they might have to face the data loss problem. So, I would suggest to keep a backup copy before running these command line parameters.
The data loss issues can be resolved by using a third party tool. There are a lot of third party application available in the market which help to move unlimited users mailboxes at a time. One of the best aspects of these tools is that they can repair the corrupted data if they found during the analyzing process. One such tool that I know is Stellar Phoenix Exchange recovery software : http://exchange.stellarservertools.com/
Kay Adams
Thanks Kay.
Thanks for the comment.
thnx thats what i was looking for! :)
The database size will NOT shrink even if the source mailbox gets deleted. The space will become what we call "white space".
Database size will only shrink if you do an offline defragmentation.
If 30 days is your retention policy, then yes. You can force it to delete using Remove-StoreMailbox cmdlet, check http://www.theucguy.net/2010/09/purge-disconnected-or-soft-deleted.html
Ah, you mean that it will take (i guess) 30 days before it will be deleted?
Hi Rajith,
The move is on the same server (exchange 2010)
I created an second database and moved a couple of mailboxes from one to another. I noticed this because the size of the old database wasnt shrinking after moving the database.
Hi Emiel,
If you are using Exchange 2010 SP1:
Instead of removing the source mailbox immediately following a successfully completed
move, Exchange puts the source mailbox into a "SoftDeleted" state. This means that
the source mailbox is kept until the deleted
mailbox retention period expires for the source database.
Thanks
Hi Emiel,
Which are the versions of Exchange involved in the move? If the move completed successfully, then it should only be on the new database.
I was recently moving mailboxes to another database. The move went ok but i noticed that the old database didnt get any smaller.
As i investigated i noticed that the mailbox i moved stays in the old database. Do you know how i can delete the mailbox out of the old database?
Emiel
2007 SP2 is required for co-existing with Exchange 2010. They have the same schema.
Anyone know why exactly you need SP2 for 2007? I have a dying production server and the reboots required after the installation of the new service pack is way more frightening right now than anything else ;(
This whole "cmdlet-only" procedure s***s bigtime. We are sysadmins, not coders! Wake up MSFT!!!
I've spent at least 1 hour finding the correct line for moving one exchange 2010 mailbox to 2007. Every time the error message said something that worth "nothing".
What a piece of crap.
Please share export mailbox remove request command
Ok got it sorted thanks,
This Blog Linked From Here
This Blog
Linked From Here
.
Thursday, 3 September 2009
Can’t Connect Outlook 2003 To Exchange 2010. Unable To Open Your Default E-mail Folders…
I was trying to connect to my Exchange 2010 RC Server with Outlook 2003, but couldn’t connect successfully. I tried with Outlook 2007 & 2010 and was able to connect successfully. That made me search whether Outlook 2003 is a supported client and it is. The error message is “Unable to open your default e-mail folders”
After playing around for a while, I found the solution. Before I jump in to the fix, let me explain a few changes in Exchange 2010 in terms of MAPI connectivity.
•All MAPI clients connecting to Exchange 2010 server connects to the mailbox through the CAS Server.
•A new service named Exchange RPC Client Access is introduced in 2010 CAS which handles all MAPI connections.
•All MAPI clients connect to the mailbox server directly in Exchange 2007.
Now that we know about the new RPC Client Service running on the 2010 CAS Server, lets bring up the full info by running Get-RpcClientAccess | fl
We can see that this service needs rpc encryption and it is set to True by default.
Same is the case with Outlook 2007 & 2010 profiles! Encryption between Outlook and Exchange is enabled by default, which explains why these clients can connect to Exchange 2010 without any issues.
Outlook 2003 profiles don’t enable encryption by default.
Once I checked the box, I could connect to my 2010 mailbox.
You can also disable the requirement of 2010 CAS servers to have encryption enabled by running Set-RpcClientAccess –identity servername –EncryptionRequired $false. This is not recommended though!
I have moved most of the mailboxes no problem however one or two will not open in Outlook after the move from 2003 to 2010, they are accessible in owa however. I have tried recreating the profile and turning off cached mode etc to no avail. Any advise as I have to move these to the new server. Thanks,
How can I make a move request that moves the user to the least populated store on my Exchange 2010 server?
Hi Ram,
The number of databases you need is really upto you. You can have it in the same fashion as 2007 or a different design. You can pick users depending on number of criteria like OU, database, server etc. Get the users using one of those and provide a target database.
eg, Get-Mailbox -database "dbname" | New-MoveRequest -TargetDatabase "dbname"
Great tutorial. Thanks for sharing. That said, in order to move a mailbox from Exchange 2k7 SP2 to Exchange 2010, how to go about creating the target database? Let say I have 10 storage groups in my 2007 Exchange. Do I create 10 new database in 2010 or do I simply submit a new MoveRequest specifying the name of the new database and the install process will take care of the rest? I'm not clear about that so any clarification will be appreciated.
To move a mailbox from 2010 back to 2003 you need to find the DN of the 2003 mailbox database. You can do it like this:
$temp = get-mailbox
$dn = $temp.database.distinguishedname
Then move your mailbox like this:
new-moverequest -targetdatabase $dn
Same here when moving back mailbox from 2010 to 2003: I'm unable to specify targetdatabase :( I was able to find syntax for targetdatabase in this command:
Get-MailboxStatistics -identity testusr -includemovereport | format-list
but I'm still receving error for new-moverequest that mailbox database does not exist
Hi,
i try to move one user from Exch2010 back to sbs2003 for testing puposes – but i don't come along – any tipps?
ComplexxL9, you can only move from Exchange 2007 SP2 to 2010. 2007 SP1 won't work. You can't use the move-mailbox cmdlet either. Use 2010 EMC or New-MoveRequest cmdlet.
Can I move mailbox from Exchange 2007 SP2 ? How would I do that? I have hard time trying to form the right cmdlet for this operation.
Create a move request that suspends before completion
This example creates a move request that is suspended after all the initial content is moved, but before the mailbox is locked down and switched over to the new location.
New-MoveRequest -Identity 'tony@alpineskihouse.com' -TargetDatabase DB01 -SuspendWhenReadyToComplete
This command could be useful if we wanted all the mailboxes in one location to move to destination at the same time or prepare the destination and keep it ready for switch over with very little to copy over.
I don't think this will work for Exchagne 2003 mailboxes since they are taken offline while moving, not sure if they become online when move is suspended.
If you are moving a mailbox from an Exchange 2003 database, the mailbox move will be offline.
Rajith
I found this
http://technet.microsoft.com/en-us/library/dd876878(EXCHG.140).aspx
.MoveMailbox.ps1 -Identity "Tony@Contoso.com" -TargetDatabase "DB2"
which allow you to move synchronously similar to Move-Mailbox cmdlet.. but still missing scheduling option but it has additional -startBatchsize option to give batch size.
Deepak, I have added more info in the article. You can run a move request with -suspend parameter and later on resume it when you want to. But, as mailbox moves are asynchronous & online, you can move it anytime you want, as long as the server can handle it.
New-MoveRequest rajith -TargetDatabase "Second Database" -suspend
Get-MoveRequest rajith | Resume-MoveRequest.
A quick look at the cmdlet doesn bring any date/time scheduling option. I will update the blog if I come across one.
Intresting.. So can we schedule the move as we could do we Move-Cmdlet in Exch 2007. Does not seems to have any scheduling in new-MoveRequest. There a switch for suspend in New-MoveRequest but no way to specify time or date. There is Resume-Moverequest commandlet to resume the move. So we may have to resume using windows scheduler or something.
Rajith- Do Powershell have any command to do schdeduling if so then we could pipe resume-MoveRequest command to it and get a combine funtion.
Good stuff keep it up