Migrate Public Folder to Exchange 2010
One of the challenges for Microsoft Exchange 2003/2003 migration to Exchange 2010 is Public Folder. It can be very complicated and time-consuming if the Public Folder size is huge of lot of folders. The Public Folder is required for Outlook 2003 to continue access to Exchange 2010 server.
Microsoft Exchange provided the following PowerShell script for Public Folder migration in\v14\ Server\Scripts:
PowerShell Script | Task Description |
AddReplicaToPFRecursive.ps1 | Add a server to the replication list |
AggregatePFData.ps1 | Aggregate data across all public folder replicas |
RemoveReplicaFromPFRecursive.ps1 | Remove a server from the replication list |
MoveAllReplicas.ps1 | Replace a server in the replication list |
ReplaceReplicaOnPFRecursive.ps1 | Replace a server in the replication list with a new server |
Add new Exchange 2010 Server into Public Folder replication list
Launch the Exchange Management Shell and the go to the Exchange script folder:
cd $exscripts
Let’s say you current environment have either or both the EX2003 and EX2007. The new Exchange 2010 server name is EX2010. Below is the command you need to run in EXC2010 server.
To replicate all the non-system public folders for the top root to EX2010:
.\AddReplicaToPFRecursive.ps1 –TopPublicFolder \ –ServerToAdd EX2010
To replicate all the System folders to EX2010:
.\AddReplicaToPFRecursive.ps1 -TopPublicFolder “\NON_IPM_SUBTREE” -ServerToAdd EX2010
*The replication might take up to days or even week depending on your Public Folder size
Common mistake or misconception:
- Make sure the ServerToAdd is the new Exchange 2010 server that you need you has a replica of Public Folder.
- Not to worry about which server is currently holding which part/folder of the Public Folder. The AddReplicaToPFRecursive.ps1 command to find by itself and then add to new server
- Do not point ServerToAdd to existing old server (Exchange 2003 or 2007 server) because it will add the Public Folder replica to this old server. It might cause this old server to jam up if there is not enough space to hold all the public folder copy (because most of these old Exchange servers are running almost out of this space).
To verify the Public Folder was replicated to new server:
Get-PublicFolder -Recurse | fl Name, Replicas
To verify the System Folders was replicated to new server:
Get-PublicFolder -recurse \non_ipm_subtree |fl name, replicas
Remove Public Folder from old server
To remove Public Folder replica from old server:
.\RemoveReplicaFromPFRecursive.ps1 –TopPublicFolder \ -ServerToRemove EX2003
To move all the Public Folder (including System folders) from old server (EX2003) to new server (EX2010):
.\MoveAllReplicas.ps1 –server EX2003 –NewServer EX2010
PowerShell cmd-let to verify Public Folder replica and replication:
Get-PublicFolder -Recurse | fl Name, Replicas
Get-PublicFolder -recurse \non_ipm_subtree |fl name, replicas
Get-PublicFolderStatistics -server E2010
Get-PublicFolderStatistics -server E2003
Additional clean-up task
Some of the System folder might not have the new Exchange 2010 server in the replication list. Here are the steps for check:
.\Get-PublicFolder “\NON_IPM_Substree\Schedule+ Free Busy” -recurse |fl name, replicas
If case that new Exchange 2010 server in not holding the Schedule+ Free Busy replica, you might get the event id 14029 with the error message of “Couldn’t find an Exchange 2010 or later public folder server with a replica of the free/busy folder…”

Perform the following command to resolve event id 14029 issue:
.\AddReplicaToRecursive.ps1 -TopPublicFolder “\NON_IPM_Substree\Schedule+ Free Busy” -ServerToAdd EX2010
Perform the same checking and rectification for other System folder (e.g. EForms Registry and Offline Address Book)
.\AddReplicaToPFRecursive.ps1 -TopPublicFolder “\NON_IPM_Subtree\EFORMS REGISTRY” -ServerToAdd EX2010
.\AddReplicaToPFRecursive.ps1 -TopPublicFolder “\NON_IPM_Subtree\OFFLINE ADDRESS BOOK” -ServerToAdd EX2010
Move Offline Address Book (OAB) generation to new Exchange 2010 server (that holds the Mailbox role)
Move-OfflineAddressBook “Default Offline Address List” –Server EX2010
Reference and Resource
http://technet.microsoft.com/en-us/library/aa997966.aspx
http://support.microsoft.com/kb/822931
http://smtp25.blogspot.com/2010/08/remove-public-folders-from-exchange.html
http://www.logicspot.net/?p=112