Learn Exchange the Guru way !!!


Public Folders Migration from Exchange 2007/2010 to Exchange 2013

Public Folders has been discussed before and after every new Exchange server release but there are many Microsoft customers who are using it that Microsoft is not preferring to remove it completely.

The Serial migration method used in this article is no longer supported by Microsoft. Please refer to our new article on performing a Batch Migration of Public folders from legacy servers to Exchange 2016/ Exchange 2013.

Exchange 2016 / Exchange 2013 Public Folder Batch Migration Method

Even today with the great functionality of sharepoint, Microsoft decided to keep PF in the Exchange so that it can give an option to use PF or Sharepoint.

I would highly recommend our high Public Folders users to start using Sharepoint but if you have less Public Folders Data then we can still migrate Public Folder Database to Public Folder Mailboxes.

By changing the Design from Database to Mailbox, Public Folders has become highly available with DAG. So if your mailbox database is up and running in DAG then Public Folders are also available.

Public Folders Limits can be reviewed here.





-Exchange 2010 is Exchange 2010 SP3 or later

-Exchange 2007 is Exchange 2007 SP3 RU10 or later

-Login id has Organization Management and Recipient Management Permissions

-All the mailboxes have been moved to Exchange 2013

-Ensure we announce downtime or do this over the weekend

-Perform a backup of your public folder databases

Removed space and from the alias of 2007/2010 Public Folders.


Public Folder Migration Steps:

1. Snapshot of the current Public Folders: In the following steps we will take the snapshot of the current Public Folders which will be compare post migration.

       -Run the following command to take a snapshot of the original source folder structure.

       Get-PublicFolder -Recurse | Export-CSV C:PFMigrationEx2010_PFStructure.csv

       -Run the following command to take a snapshot of the public folder statistics such as item count, size, and owner.

       Get-PublicFolder -Recurse | Get-PublicFolderStatistics | Export-CSV C:PFMigrationEx2010_PFStatistics.csv

       -Run the following command to take a snapshot of the permissions.

       Get-PublicFolder -GetChildren | Get-PublicFolderClientPermission | Select-Object Identity,User -ExpandProperty AccessRights | Export-CSV C:PFMigrationEx2010_PFPerms.csv

       Save the information from the above commands for comparison at the end of the migration.


2. Preparation on Legacy Exchange server (2010/2007): We need to do the following check before preparing public folders migration.

       -Validate Exchange 2010/2007 Public Folder database is mounted

       -Validate no record of previous successful migration is present

       -Use the below cmdlet to check if there was a previous successful migration completed

       Get-OrganizationConfig | fl PublicFoldersLockedforMigration, PublicFolderMigrationComplete

       -If you find any True, then use the below cmdlet, this will take some time to become effective:

       Set-OrganizationConfig -PublicFoldersLockedforMigration:$false -PublicFolderMigrationComplete:$false 
3. Preparation on Exchange 2013 server: We need to check the following on the Exchange 2013 before starting the migration.

       -Validate no migration currently in progress by running following cmdlet


       -Validate no existing PFs or PF mailboxes by running following cmdlet





         Get-Mailbox -PublicFolder

         You should see the below output:



       -Run the below cmdlets to remove any previous Public Folders:

         Get-PublicFolderMigrationRequest | Remove-PublicFolderMigrationRequest -Confirm:$false
         Get-MailPublicFolder | where $_.EntryId -ne $null | Disable-MailPublicFolder -Confirm:$false 
         Get-PublicFolder -GetChildren  | Remove-PublicFolder -Recurse -Confirm:$false 
         Get-Mailbox -PublicFolder |Remove-Mailbox -PublicFolder -Confirm:$false


4. Export public folder hierarchy from source into CSV file: On Exchange 2010/2007 run the following script which will generate a csv file:

Important: In Exchange 2007 you might need to remove “ResultSize:unlimited” on line number 91 of the script “Export-PublicFolderstatiscis.ps1”. Don’t change anything unless you face any issue.

         .Export-PublicFolderStatistics.ps1 servernamepathfilename.csv

       Example file output

         .PublicFolderToMailboxMapGenerator.ps1 MailboxSize ImportFilePAth ExportFilePath

       ImportFilepath is the file name which was created in previous step.

       Output file screen


5. Create public folder mailboxes in Exchange 2013: We will run the below cmdlet to create public folders mailboxes in hold for migration mode.

Important: The name of the public folder mailboxes that you create must match the name of the TargetMailbox in the mapping file. You can edit the TargetMailbox names in the mapping file to match your organization’s naming conventions.

         New-Mailbox -PublicFolder MailboxName -HoldForMigration:$true –Database “2013DB”

       -Continue creating the new mailboxes as per the output file. In my case it was only one.


6. Migration Request creation: In this step we will rung the migration request cmdlet

Before creating migration request it will be good to run the below command to avoid “The Microsoft Exchange Administrator has made a change that requires you quit and restart Outlook” prompt. This command will stop this mailbox serving the hierarchy.

 Set-Mailbox <PublicFolderMailboxName> –PublicFolder –IsExcludedFromServingHierarchy:$True

Now run the migration request

“New-PublicFolderMigrationRequest -SourceDatabase (Get-PublicFolderDatabase -Server <Source server name>) -CSVData (Get-Content <Folder to mailbox map path> -Encoding Byte)”

Example: New-PublicFolderMigrationRequest -SourceDatabase (Get-PublicFolderDatabase -Server Exch2010) -CSVData (Get-Content C:tempMapgen.csv -Encoding Byte)

       -Move will begin as an online move and reach auto suspended state

       -Run the following cmdlet to verify the migration status.

         Get-PublicFolderMigrationRequest | Get-PublicFolderMigrationRequestStatistics -IncludeReport | fl

       -Below is sample screen – Normally you get 2-3GB per hour migration output.

       When the status reaches Autosuspended, we can move to next step


7. Lock source (Exchange 2010/2007) for final migration:

       -Once Auto Suspend state is reached, set the bit on the org object that you are making the switch

       -Downtime will be required depends on how much new content was generated since the migration reached the AutoSuspended state.

       -The cmdlet will log off the users from the public folders and lock the folders while the migration completes its final synchronization. Users won’t be able to access public folders during this process.

       -It is recommended to run the following cmdlet on Exchange 2010/2007 but this does not matter in the same org as this is org level configuration.

        Set-OrganizationConfig –PublicFoldersLockedForMigration:$true


 -If multiple source PF databases, wait Replication Interval+1 hour after locking source so they can replicate. Alternatively you can restart the Microsoft Exchange Information Store service to bypass the    waiting time.

8. Complete the suspended migration by running below 2 cmdlet:

       -Set flag on migration request that finalization has been triggered

        Set-PublicFolderMigrationRequest –Identity PublicFolderMigration -PreventCompletion:$false


       -Resume migration request

        Resume-PublicFolderMigrationRequest –Identity PublicFolderMigration


       -Migration will reach completed state

Once migration completes run the below command to allow this mailbox to serve the Hierarchy requests

 Set-Mailbox <PublicFolderMailboxName> –PublicFolder –IsExcludedFromServingHierarchy:$False” 


9. Validation

       -Check that source public folders have been moved to Exchange 2013

       -Check that hierarchy matches the source setup



10. Removing PF Database in Exchange 2010/2007

       Once you are satisfied, you can go ahead and delete the Public Folder Database from Exchange 2010/2007 then remove the database and log files from folder directory 


Public Folder Migration ends here.


Rollback Steps:

If you run into issues with the migration and need to reactivate your Exchange 2010 public folders, perform the following steps:

Important: After the migration is complete, any changes you made to your Exchange 2013 public folders won’t be reflected in the Exchange 2010/2007. As a result, you may lose public folder data if you roll back the migration.

       1. To unlock legacy Exchange public folders, run the following command on the legacy Exchange server.

        Set-OrganizationConfig -PublicFoldersLockedForMigration:$False

       2. To set the PublicFolderMigrationComplete flag to $false, run the following command on the Exchange 2010 SP3 server:

       Set-OrganizationConfig -PublicFolderMigrationComplete:$False

       3. If Public Folders will be present in exchange 2013 then users will not go to exchange 2010/2007. To remove the public folders, run the below cmdlets

        Get-PublicFolderMigrationRequest | Remove-PublicFolderMigrationRequest -Confirm:$false
        Get-MailPublicFolder | Disable-MailPublicFolder -Confirm:$false 
        Get-PublicFolder -GetChildren  | Remove-PublicFolder -Recurse -Confirm:$false 
        Get-Mailbox -PublicFolder |Remove-Mailbox -PublicFolder -Confirm:$false

For On Prem to Office 365 migrations, use this technet which has slight changed steps are step number 5. -
Best of Luck, feel free to contact us in case of any issue

Prabhat Nigam | MVP Exchange Server

Team@ MSExchangeGuru

Keywords: Exchange 2010 public folder migration, Exchange 2013 public folders, how to migrate public folders to Exchange 2013, exchange 2013, exchange 2013 PF migration, how to migrate public folders from Exchange 2007 to exchange 2013

205 Responses to “Public Folders Migration from Exchange 2007/2010 to Exchange 2013”

  1. Henri Feinberg Says:

    Thanks Prabht,

    As for the spaces, there are spaces Only on display names (General Tab), not on the aliases.

    As per MS, they talk Only about backslashes:

    2.If the name of a public folder contains a backslash \, the public folders will be created in the parent public folder when migration occurs. Before you migrate, we recommend that you rename any public folders that have a backslash in the name.

    a.In Exchange 2010, to locate public folders that have a backslash in the name, run the following command:
    Get-PublicFolderStatistics -ResultSize Unlimited | Where {$_.Name -like “*\*”} | Format-List Name, Identity

    I run this command and no backslashes appears on any of our PF.
    Can you please confirm that spaces in display name are a problem?.

    Thanks again,


  2. Prabhat Nigam Says:

    You have to remove the space in alias as well else migration will fail for those PFs.
    I would prefer to remove space from displayname as well because every PF might not be a mailenabled PF so no alias. Just to be on the safer side.

    By the way, I get the MS technet link corrected in April and I closely work with MS PG who is responsible for PFs.

  3. Henri Feinberg Says:

    That will be a huge problem for us as we have so many folders\subfolders with display name with spaces. When I did the E2003 to E2010 migration, I had run into problems with Aliases spaces for mail enable, so I did correctd it back then so for sur they have no spaces.
    Do you know a script that could remove the spaces ?
    I run the followings to show spaces but I do not know one that will remove them:
    Get-PublicFolderStatistics -ResultSize Unlimited | Where {$_.Name -like “* *”} | Format-List Name, Identity
    By the way do you have the corrected April MS TechNet link ?

    Thanks again.


  4. Prabhat Nigam Says:

    The other option is to try and fix only if you get into the issue. I am not sure about the script but someone used a script check comments.
    Link is here –

  5. Scot Says:

    What’s up everyone, it’s my first pay a visit at this site,
    and article is truly fruitful in support of me,
    keep up posting these articles.

  6. Ninad Says:

    Hi prabhat
    In my test LAB I migrated PF from 2007 to 2013 and it went ok, not I tried rolling back. All steps were done, but cannot access PF on 2007 for users. All users show “defaultpublicfoldermailbox” as blank. The DB shows that it is pointing to 2007 publicfolder (publicfolderdatabase)
    Get error – cannot expand folder – attempt to log on to Microsoft exchange has failed.
    Any advice

  7. Prabhat Nigam Says:

    You have to migrate all mailboxes to 2013 before migrating Public Folders. I have mentioned in assumptions.

  8. Ninad Says:

    ignore comment. It took some time and then it started opening. Yes I had moved all mailboxes.

  9. Karim Says:


    I have done the steps you’re mentionning and all steps went smoothly except that the access rights are all the same: a custom access right granted to the admin user that has done the migration !

    Any thoughts

  10. Prabhat Nigam Says:

    Item level permission might have caused the issue. you could have removed item level permission using pfdavadmin in your legacy Exchange.

  11. Karim CAMMOUN Says:

    To the point to replace acces rights on all folders ? Microsoft will always surprise us !

  12. Nikhil Says:

    @ All,

    If any one is looking to migrate PF to O365 follow the MS article.

    I managed to migrate PF’s to O365 using the below MS article.

    MS should have included PF migration like on boarding mailboxes from On prem- O365 which works flawlessly, have to run hell lot of commands. Anyways… Good Luck…

  13. Prabhat Nigam Says:

    Good to hear Nikhil. I understand your concern but Public folders are not mailboxes. They way they are written in the database you can migrate with many commands. Scripting all scripts into one will cause more issue because a lot of things depends on the PF Hierarchy and data replication.

  14. Pascal Schröder Says:

    Hello, does anyone know how to speed up the process of migrating the Public Folders? I started the request yesterday and now, after 16 hours, only ~600mb were migrated. Already searched the web but there was nothing that helped me speed up the process.
    Thank you for this article!

  15. Prabhat Nigam Says:

    I can think of increasing thread count in one of the config file.
    1. Open the file C:\Program Files\Microsoft\Exchange Server\V14\Bin\MSExchangeMailboxReplication.exe.config;
    2. Increase the values to a number of simultaneous active moves that you want.

    MaxActiveMovesPerSourceMDB = “50”
    MaxActiveMovesPerTargetMDB = “50”
    MaxActiveMovesPerSourceServer = “50”
    MaxActiveMovesPerTargetServer = “50”
    MaxTotalMovesPerMRS = “100”
    3. Save and close the file;
    4. Restart the Microsoft Exchange Mailbox Replication service.

  16. Dan Says:


    I’ve migrated the PFs over from 2007 to 2013 but now, no users can see the public folders. There is no public folder options displayed within Outlook. Strangely, some users do have access to the public folders but I’m not sure why.
    I’ve ended up with two public folder mailboxes (PF-Hierarchy and PublicFolder) and the migrated PFs are in the PF-Hierarchy mailbox.

    Any idea what’s gone wrong?
    Thanks so much for running your website! It’s really really helpful!

  17. Prabhat Nigam Says:

    Make sure all mailboxes are on exchange 2013. 2007 users won’t be able to access PF.

  18. Dan Says:

    I had uninstalled 2007 and installed 2010. Looks like the profile remembered something. PF came back when I made a new profile.

    Thanks for the help and confirming that 2007 can’t access PFs on Exchange 2013.

  19. Aleksey Says:

    after migrating PFs to 2013, option of PF assitant(autoreply) stopped working.
    i deleted and recreated the rule but still no luck.
    any suggestions?

  20. Prabhat Nigam Says:

    So are you saying you had a public folder rule in your outlook which has stopped working?

    Have you moved this mailbox?

  21. Aleksey Says:

    yes a migration was of all components to 2013 and it was made about 4 month ago.
    i have a few users with PF assistant enabled that worked ok before migration.
    and recently they noticed that autoreply stopped to work after migration.

  22. Vishal Says:

    Hi Prabhat,

    I followed your article to migrate public folders from Exchange 2010 to Exchange 2013. Migration got completed successfully after lot of effort, but then when users tried to click on Public Folders in Outlook 2007 – they were getting an error message – “Cannot expand the folder. The set of folders cannot be opened. Microsoft Exchange is not available. Either there are network problems or the Exchange server is down for maintenance.”

    I then rolled back the migration as per this link –​.

    But after this – cannot see the public folder in Outlook 2007. Can you point me in the right direction, please?

    Await your response.

    Kind regards,

  23. Prabhat Says:

    You should not have rolled back and we could have fixed the issue. I have mentioned the simple roll back step in the blog.

  24. Vishal Says:

    Hi Prabhat,

    Thanks for your reply. I’ve read the roll back steps on your blog later on. How do I go about fixing it – the stage it is in now? Appreciate your help.

    Kind regards,

  25. Vishal Says:

    Hi Prabhat,

    I managed to get the public folders back in Outlook 2007. I had to reset my outlook profile and they re-appeared straight after that.

    Many thanks though.


  26. kjstech Says:

    Hi I have the same event ID 2937 as the poster John above, regarding the PublicFolderDatabase is pointing to the deleted objects container in active directory.

    I tried your command you responded to John with and got an error. You said to run:
    Get-mailboxdatabase | set-mailboxdatabase -PublicFolderdatabse $null

    But it returns
    Cannot validate argument on parameter ‘PublicFolderDatabase’. The argument is null or empty. Supply an argument that is not null or empty and then try the command again.

    But Prabhat, you told us to use $null after the argument -Publicfolderdatabase. EX2013 CU6 is not accepting it.

  27. Exchange 2016: New Features in compare to Exchange 2010 « Says:

    […] out my Public Folders Then Public Folders Migration blog. There is a PF migration video on YouTube channel as […]

  28. Prabhat Nigam Says:

    -PublicFolderDatabase switch has been removed.

  29. SSK Says:

    Dear Exchange guru,

    I face the problem during uninstall exchange 2007. i have migrate it to 2013, and i have remove exchange 2007 database already. when we try to remove public folder it show us that public folder contains folder replica. the existing public folder doesn’t contain any folder inside, even we try to do as instruction of the link “” it is still not working. if you have face the problem before could you please feedback to me. Thank in Advance.

  30. Prabhat Nigam Says:

    There would be some replica left. if not in PF, it might be in system folders. Have a look from the PF management.

  31. Dinnersrdy Says:

    Just a quick addition for those that had enabled legacy support to access 2010 public folders from Exchange 2013 mailboxes – You need to run Set-OrganizationConfig -PublicFoldersEnabled local

    If you don’t, then after the successful migration you could face a situation where the default public folder mailbox for your users is still the legacy mailbox.

    Hoping this might avoid a bit of panic when you have followed this excellent article to the letter and find no one can access the folders on 2013.

  32. Prabhat Nigam Says:

    This should be enabled by default. We are talking same org here.

  33. Dinnersrdy Says:

    I followed this TechNet article “Configure legacy public folders where user mailboxes are on Exchange 2013 servers”.

    “In Exchange Server 2013, you’ll need to perform this task to make sure that users can access public folders if you have Exchange 2013 users accessing Exchange 2010 or earlier public folders (also known as legacy public folders). ”

    One of the steps in this article is – Set-OrganizationConfig -PublicFoldersEnabled Remote -RemotePublicFolderMailboxes ProxyMailbox1,ProxyMailbox2,ProxyMailbox3

    I have migrated my public folders some time after migrating all the user mailboxes first; they still needed to access the public folders whilst this was happening though.

  34. Prabhat Nigam Says:

    Good to know. It was not required in my migration though.

  35. Jatin kakkar Says:

    Hi Prabhat,

    I hope you remember me in Unisys, I am with dell these days need your inputs as:

    I need to migrate PF from exchange 2007 to o365 do you have step by step doc for the same which can be followed for the same.

    Thanks Jatin kakkar

  36. Prabhat Nigam Says:

    Hey Jatin,
    The process is very similar. Check here.

  37. Jatin kakkar Says:

    Thanks for this let me know what exactly is the difference from your Article and TechNet article ?

    Jatin kakkar

  38. Prabhat Nigam Says:


  39. Jatin kakkar Says:

    Not got Information Prabhat on your reply might be some issue on the site. Can you please send it again

    Thank you

  40. Jatin kakkar Says:

    Hi Prabhat

    I am getting details when checking \ on PF as :

    Get-PublicFolderDatabase | ForEach {Get-PublicFolderStatistics -Server $_.Server | Where {$_.Name -like “*\*”}}

    Verified details as: only 4 PF items having issues.

    [PS] C:\Documents and Settings\kakkarj>Get-PublicFolderDatabase | ForEach {Get-P
    ublicFolderStatistics -Server $_.Server | Where {$_.Name -like “*\*”}}
    WARNING: Object
    0000EDCCE0000 has been corrupted and it is in an inconsistent state. The
    following validation errors have occurred:
    WARNING: The Name property contains leading or trailing whitespace, which must
    be removed.

    WARNING: Object
    0000D8CD90000 has been corrupted and it is in an inconsistent state. The
    following validation errors have occurred:
    WARNING: The Name property contains leading or trailing whitespace, which must
    be removed.

    WARNING: Object
    0000E7B400000 has been corrupted and it is in an inconsistent state. The
    following validation errors have occurred:
    WARNING: The Name property contains leading or trailing whitespace, which must
    be removed.

    WARNING: Object
    0001555180000 has been corrupted and it is in an inconsistent state. The
    following validation errors have occurred:
    WARNING: The Name property contains leading or trailing whitespace, which must
    be removed.

    can you suggest what should be done ?

    Thanks Jatin kakkar

  41. SD Says:

    Hi Prabhat,

    I was following the same article but I am stuck at a point. see if you can guide me here.

    Error: MigrationMRSPermanentException: Error: Source public folder size 105134441888 exceeds target Mailbox quota. Permissible target Mailbox quota is 64424509440. Original target Mailbox quota is 53687091200.

    I am getting this error, while Sync. there is no way that I can increase the MB size on O365 more than 50 GB.

  42. Prabhat Nigam Says:

    Then Add more mailboxes or decrease the number of PF to reduce the size.

  43. DM Says:

    Hi Prabhat,

    I’ve been following your instructions and all seems to be going well, apart from 3 mailboxes, they haven’t sync’d any items, although show ‘data migrated’ of a couple hundred KB, after a period of time all 3 mailboxes Timeout, when I look at the report I have a ‘Fatal Error JobStuckPermanentException has occurred’

    I’ve checked for corruption on folders with regards to illegal characters, which I had around 300plus folders, I’ve now got this down to 1 folder, that folder being the top level folder, which is locked from editing the displayname and mailnickname.

    If i run the command Get-PublicFolderMigrationRequest | Get-PublicFolderMigrationRequestStatistics -IncludeReport | fl it doesn’t actually work on my server, it returns nothing 🙁

    Any tips?

    Many thanks

  44. Prabhat Nigam Says:

    It must by wrong character

  45. Sati Says:

    Hi, I’ve migrated from 2010 to 2013 and in outlook I cant see the public folders but not all of them. In exchange admin centre I can see the folders and it shows there’s over 20000 items in there. Why cant I see those folders in Outlook?

  46. Prabhat Nigam Says:

    Check if you have permissions to view all folders

  47. KenB Says:

    I’m getting the following situation in the full report:
    10/26/2016 7:41:30 AM [server3] Request processing continued, stage CreatingFolderHierarchy.
    10/26/2016 7:41:33 AM [server3] Initializing folder hierarchy from mailbox ”: 8026 folders total.
    10/26/2016 7:41:34 AM [server3] Folder creation progress: 0 folders created in mailbox ’06e25e30-24e1-446e-96f3-b424d39e7201′.
    10/26/2016 7:41:58 AM [server3] Transient error MapiExceptionNetworkError has occurred. The system will retry (1/60).

    …and eventually, the request moves to a “FailedStuck” status.

    In 2010, we implemented split roles instead of multi-roled boxes. So my Public Folder mailbox server does not have the CAS role installed. Is this indicative that MRS can’t talk to an expected CAS? There’s no firewall between 2010 and 2013, so that’s not it.

  48. Prabhat Nigam Says:

    one of the server is not reachable, check if the name resolution is working for all exchange servers from exchange 2013

  49. KenB Says:

    Hi Prabhat – I’m able to resolve the names using both WINS and DNS, and there’s no firewall in between the 2010 and 2013 servers. I’ve also since installed the CAS role on 1 of the Public Folder servers in 2010, but that did not improve the situation.

  50. Prabhat Nigam Says:

    Check the NIC DNS property on E2013 if you have correct suffix

Leave a Reply




Do NOT follow this link or you will be banned from the site!