<img height="1" width="1" src="https://www.facebook.com/tr?id=1529264867168163&amp;ev=PageView &amp;noscript=1">

Exchange Migration Guide 2010 - Part 4

In Part 1 of the Exchange 2010 Migration Guide, we discussed new features, discontinued features, Exchange Server Role Concepts, and Exchange Server 2010 Editions.  Part 2 of the guide provided basic knowledge about the installation of Exchange Server 2010 with co-existence of Exchange 2003, how to move mailboxes, public folders, OAB, creation of a connector in Exchange Server 2010 and how to decommission the Exchange 2003 server from one organization.  And Part 3 discussed the transition to Exchange Server 2010 Client Access Server.  Part 4, the final article on the transition from Exchange 2003 to Exchange 2010, will discuss the replication of Public Folder Database, Mailbox Movement and finally decommissioning of Exchange Server 2003.

There are two types of public folders:

Default Public Folder: This folder can be accessed by users by using outlook application.

System Public Folder: This folder will store the information like free busy information, OAB, OWA Scratchpad, store events and other folders.

At the time of installation of Exchange Server 2010 in the Exchange 2003 environment, the public folder database is automatically created, and it will support legacy schedule, plus free and busy functionality for the client computer running Outlook 2003 and earlier, or Microsoft Entourage.

In order to replicate the Public Folder Database, follow these steps:

  • Logon to Exchange 2003 Server and open the Exchange System Manager

  • Expand Administrative Groups => First Administrative Groups => Folders

  • Right click each public folder => Properties => Click on Replication Tab and add Exchange Server 2010

 Part4 1 resized 600

Once you replicate the public folders you can check the status by expanding the public folder store in exchange server 2003 -> replication status. If it is showing as In Sync that means the data is being replicated.

 Part4 2 resized 600

There are several ways to check the replication of the database:

  • Logon to Exchange Server 2010 box

  • Open the Exchange Powershell command

  • Type the following command: Get-publicfolderstatistics

This information will help compare content replicated between the source and destination servers.

 Part4 3 resized 600

Then logon to Exchange 2003 box and check the item count.  Both of them should match with each other.  The other way to check is PFDavadmin content report functionality.

To check the replication details from powershell, run the following command:

Get-publicfolder -recurse |fl name,replicas

 Part4 4 resized 600


Assuming that you are doing a migration, you want to move the public folder from source server to destination server without adding one by one.  So in order to do that:

1. Open the exchange system manager
2. Public folder store => Right click => click on Move all replicas

 Part4 5 resized 600

Or else you run a script from the Exchange Server 2010 Moveallreplicas.ps1 –server -newserver

Now I have replicated all my default public folder and system folder database to the new Exchange Server 2010. Once the replication completes successfully to the Exchange Server 2010, you should remove the Exchange Server 2003 from the replica tab.

Note: Once you remove the replica don’t delete the public folder store.  First, verify that the users are able to access the public folders and other system folder like free busy.  If they are able to access then you can go ahead with the deletion of public folders.

Deletion of Public Folder Store:
We have replicated the public folder data from Exchange Server 2003 to Exchange Server 2010, now it’s a time to delete the public folder store.  In order to do that follow these steps:
• Open the Exchange System Manager
• Expand First Storage Group (Exchange 2003 Server)
• Right click public folder store
• Then select move all replica
Ø It will show you the “Exchange Server 2010” PF store, click on OK
Ø After that click on Public Folder Instance and ensure that there is no data store in Exchange Server 2003 PF

Part4 6 resized 600

Now it is good to delete the PF store, so here right-click Public Folder store and click on delete.  It will give you a message:

Part4 7 resized 600
It will ask you to select another PF store as a default one, assign role to system folder and OAB. When you click on OK it will display the PF server.  You need to select 2k10 server and then hit OK.

Part4 8 resized 600
Then you will get a confirmation message for deleting, press Yes.

Part4 9 resized 600
It will display the progress of the deletion of public store.

Part4 10 resized 600

Then dismount and mount Exchange Server 2010 so that new changes should take effect.

On your Exchange 2003, perform the following steps to move the Public Folder hierarchy from the Exchange 2003 or Exchange 2000 administrative group to the Exchange 2007 administrative group:
1. In Exchange System Manager, expand Administrative Groups, right-click Exchange Administrative Group (FYDIBOHF25SPDLT), select New, and then select Public Folders Container.
2. Expand the Exchange 2003 administrative group that contains the public folder tree, expand Folders, and then drag Public Folders to Folders under the Exchange 2010 administrative group.
Note : If you do not complete this step, the Exchange 2010 public folder database could fail to mount if you delete the Exchange 2003 or Exchange 2000 administrative group.
Then dismount and mount Exchange Server 2010 Database so that new changes should take effect.

Moving the legacy mailbox:

Now it’s a time to move the mailbox. There are several ways to move the mailbox… like moving the mailbox through exchange management console, moving the mailbox through powershell and moving the mailbox by mode script.  Actually it depends upon the scenario which options need to be selected.  If we want to move a small number of users’ mailboxes, we can go with Exchange management console.  If we are moving the users’ mailboxex one by one we can go with Powershell, and if we want to move the mailboxes in bulk then we can go with Powershell scripts.
Whenever we are moving mailboxes, there are many things to be considered, like BadItemLimit, PreserveMailboxSizeLimit, IgnoreRuleLimitErrors, MaxThread, etc. and for this you can refer to Technet Link for knowing the complete command set for moving the mailbox.

Let’s assume that you want to do a bulk movement.  In order to do this I need to have one csv which should contain only the alias name and one powershell script.
Getting the alias name from the legacy exchange server is not a big challenge.  Just open the Powershell and run the following command:
Get-Mailbox | FT alias | out-file c:\alias.csv
Note : once you install Exchange Server 2010 mailbox server and before the mailbox creation on Exchange Server 2010, export the alias name.
If you have a mixed legacy exchange mailbox, i.e. Exchange Server 2003 and Exchange Server 2010 mailbox, then the above command may be confusing.  See the following print screen:

 Part4 11 resized 600

Is it possible for us to determine which mailbox is owned by which server?  I can follow two ways taking the output, either taking out recipient details or server name.

Example : Get-mailbox | FT Recipientdetails

 Part4 12 resized 600

Based on that, you can remove the Exchange Server 2010 mailbox details.  Or else you can run get-mailbox | FT alias, recipientdetails | out-file c:\Alias.csv.
Now we have the alias details, and all we need to do is execute the script for bulk mailbox scripting.
Steps to execute the move mailbox command:
1) Copy alias.csv into the C:\ Drive
2) Open the script and set the target database name. In my case I am using the default one.
3) Dump this movemailbox.ps1 to C:\Program Files\Microsoft\Exchange Server\scripts
4) Open the powershell command and execute movemailbox.ps1



# 1. Login into destination Exchange 2007 Server

# 2. Set the database name in line $TargetDatabase = "Database Name" where you want to move the mailboxes

# 3. Put the list of all user's alias into c:\users.txt file

# 4. Copy this file at C:\Program Files\Microsoft\Exchange Server\scripts with name Move-Mailboxes.ps1

# 5. Run the cmdlet from Exchange Power Shell

# 6. Once all mailboxes moves check the file c:\MoveLog.txt file for any error during movement

$TargetDatabase = "Mailbox Database"

$SourceFile = "c:\users.txt"

$a = remove-item c:\Movelog.txt -ea SilentlyContinue


$UserList = Get-Content $SourceFile

foreach($user in $UserList)


$message = "Moving User -> " + $user

write-output $message | out-file -filePath "c:\MoveLog.txt" -append -noClobber

move-mailbox -Identity $user -TargetDatabase $TargetDatabase -BadItemLimit 5 -Confirm: $false

if($error.Count -ne 0)


$message = "User " + $user + " failed to move ???????????"

write-output $message | out-file -filePath "c:\MoveLog.txt" -append -noClobber

$message = "Error:::: " + $error[0].ToString()

write-output $message | out-file -filePath "c:\MoveLog.txt" -append -noClobber





 Part4 13 resized 600

Certain Changes in Exchange 2010:
Ø There is no command called as Move-mailbox, if you try that one it will get failed.
Ø New command for move mailbox is New-MoveRequest
Ø In Exchange 2007 we need to ensure that user profile is closed while moving the mailbox, otherwise we will face issues while updating the new server details.  In Exchange Server 2010, we can move the user mailbox anytime, and the user won’t see any difference. That’s why if you see the above screen it is being queued and means it will run in the background.

Now let me show you the console status:

 Part4 14 resized 600

Another key point: whenever you execute the move mailbox from the powershell, it won’t show you the status immediately.  You need to check the event log for the exact status.
And in my script: it will create a movelog.txt which will again give you the status of the mailboxes.

Another simple command which you can execute: Get-Mailbox –RecipientTypeDetails legacyMailbox | New-MoveRequest –TargetDatabase “Mailbox Database”

Another Scenario:
I am curious to see whether moving from Exchange Management Console will open multiple sessions for 5 users mailbox or more than that. Because by default, Exchange 2003 and Exchange 2007 used to open only 5 users mailbox per session.

 Part4 15 resized 600

You can see that it is taking one user per session.  Once it processes the first user then it will take the second user mailbox.
I am sure you will have Security Group and Distribution Group in the organization.  In order to make them aware in Exchange Server 2010 Server, we need to convert it to the Universal Group.
So for this you can select the desired group and then right click and then finally select convert to universal group:

Part4 16 resized 600

Or else you can execute a powershell script for converting bulk DL (not yet tried but there will be possibilities)

This is the one of core reason why we need to raise the domain functional level.

Now it’s a time rehome the RUS, OAB and finally deletion of Public Folder Store from the Exchange 2003.
Here is what we have done so far:
1) Installed Exchange Server 2010 in the Exchange Server 2003 Org.
2) Replicated the Public folder data to Exchange Server 2010
3) Moved the Mailboxes.
4) Converted the Distribution List and Security Group to Universal Group.

Rehome Offline Address Book:
If you check the OAB Generation Server Details, it will show you the Exchange Server 2003 by default.

 Part4 17 resized 600

In order to change follow the below steps
1) Open Exchange Management Console
2) Expand Organization => Mailbox
3) Click on Offline Address Book
4) Right click on Default Offline Address Book and click on Move and then select Exchange Server 2010

Part4 18 resized 600
Rehome of Recipient Update Service:
In Exchange 2003 Recipient Update Service is a very important service because it will initiate the process for stamping the email address. There are two types of Update Service: Enterprise Recipient Update Service and Domain Recipient Update Service.

You can delete the Domain from ESM and enterprise RUS needs to be removed from ADSIEDIT.msc because enterprise can’t be deleted from ESM.  But in real time I noticed that some of them rehome the RUS in my condition, so I will follow the Microsoft recommendation. (Don’t forget to take a system state backup)
1) Deletion of Domain RUS
a. Log in to E2k3 server
b. Open ESM => Recipients => Recipient Update Service
c. Right click domain RUS and then delete it.

2) Deletion of Enterprise RUS
a. Open Adsiedit.msc => Configurations => services => Ms Exchange => Organization => Address List Container => Recipients => Recipient Update Service => Delete enterprise RUS.

We are done with all the re-assigning the role to new server, now we can simply go to add\remove and uninstall the Exchange 2003 server i.e. go to E2k3.happy.com server => insert exchange 2003 cd and uninstall the application.

How to rehome RUS

In order to rehome the RUS, follow these steps:
1) Logon to Exchange Server 2003
2) Open the Exchange System Manager
3) Expand Recipients => click on Recipient Update Service
4) Right click on Recipient Update Server (domain level) and click on Properties
5) Point the Exchange Server to Exchange 2010 Server

Part4 19 resized 600

Follow the same steps for rehoming the Enterprise RUS.

Mailflow Settings:
You all know that Exchange Server 2010 relies on Active Directory Site Services.  It has only Send Connector and Receive Connector.  And, like Exchange Server 2003, it is not going to rely on Routing Group Connector any more.  So the very first thing we need to do is configure the existing an mx record to point it to new Exchange Server 2010. Create a connector in Exchange Server 2010 for sending the mail to smart host server or external DNS.
In my scenario, I have smile.com and happy.com - smile.com send email to happy.com keeping via Exchange 2003 and vice versa. So I need to change this setting and finally I need to delete the mailflow connector between my legacy exchange server.
First we will create a new connector:
Send Connector:
Ø Open Exchange Management Console
Ø Expand Organization Name
Ø Then click on Hub Transport and then click on Send Connector and select new send connector
Ø Select Internet as an option

Part4 20 resized 600

Then click on Next and then feed the appropriate details.

Receive Connector:
For the receive connector ensure that permission group set to Anonymous User as well otherwise you won’t receive many of the mails.

So in the real time, I believe you will have ISA Server or any smart host which will forward the email to Exchange Server 2003. Your ISA server will have a public IP address which will resolve the mx record of your domain.  So from the ISP Counter Part, i.e. your mx record won’t change anything.  In the ISA Server change the redirection of the incoming mail IP address to Hub Transport or Edge Transport Servers. Then Remove the Routing Group Connector.

Now I have all the major of the tasks, it’s time to uninstall the Exchange Server 2003:
In order to uninstall Exchange Server 2003 follow these steps:
1) Logon to Exchange Server 2003
2) Insert Exchange Server 2003 CD
3) Go to Control Panel and click on ADD/Remove Program
4) Select Microsoft Exchange and click on Change/Remove
5) It will load the exchange setup console, click on Next and select Remove option from the Action option

Part4 21 resized 600

Then click on NEXT and Again Next and finally finish.
After that run Exbpa tool to ensure that we had completed the task as per the plan and standard transition process.

Please subscribe by email to the ENow Solutions Engine blog to receive all of our articles as soon as they are published.  You can also follow us on Twitter @enowconsulting to receive the latest information relating to Exchange, SharePoint, Active Directory, and Lync.