How to prepare for Exchange 2013 PF migration and what the Microsoft Guide doesn’t tell you

#exchange edit this page

I’m currently preparing my Exchange 2010 / 2013 environment for the public folder migration from 2010 to 2013. I created a test lab to simulate the migration before I do it on the productive servers. During the test migration I noticed some problems that have to been fixed before you get into the migration.

1. Fix wrong aliases

If you have mail enabled folders with aliases containing special characters like spaces or “@” you get an error when you start the first migration part and Exchange wants to create the hierarchy.You can enumerate mailbox folders with, for example, spaces in aliases with the following query:

Get-MailPublicFolder | where{$_.Name -match " "}

If you have just less than 10 folders to fix you can do it manually. But if you have more than 50 to correct you can use the script written by Johan Veldhuis (

2. Set the storage quota for the public folder mailboxes on 2013 to unlimited

During migration, I recommend to set the storage quota for the public folder mailboxes to unlimited. I saw very strange problems with hierarchies on 2013 not comparing to 2010 if a folder is over quota. You can change the storage limit after migration is done.

3. Set the legacy public folder – folder quota to unlimited

During migration I had some problems with mail enabled public folders. On the 2010 side the PF are mail enabled, on the 2013 not all PF’s are mail enabled but the PF’s are able to receive mails. You cannot manage the folders with EAC or porwershell. In my case, this problem was related to a PF quota set on a folder. I have many folders with content that reached the maximum limit. For all of these folders the mail enabled option was not enabled after migration. I recommend setting the PF Quota on PF Database basis to unlimited before migration. Please keep in mind to set the quota for all folders to “use database defaults”. You can do this with the following line of powershell:

Get-PublicFolder -Recurse | where{$_.UseDatabaseQuotaDefaults -eq $false} | Set-PublicFolder -UseDatabaseQuotaDefaults $true

Adjust the new storage quotas later on a mailbox basis.