29 C
Tuesday, April 23, 2024

How to migrate Public folders from Exchange 2010 Sp3 to Exchange 2013

Let’s see how to migrate Public Folders from Exchange 2010 Sp3 to Exchange 2013


Step 1 : (Login to Exchange 2010 Server)

Login to Exchange 2010 Server and take a backup of Exchange 2010 PF structure

Note : Created a test PF structure for better Understanding



Step2 : (Login to Exchange 2010 Server)

Exporting Public Folder Structure , Item Count In folders(Statistics) , Permissions  in Exchange 2010 Server

Purpose – To Verify the Content after migration.

Login to your Exchange 2010 Server . Open Exchange Management Shell

Exporting Public Folder Structure to CSV

Get-PublicFolder –Recurse | Export-CSV C:\Exchange2010-PFStructure.csv



Exporting Public Folder Statistics to CSV ( Ignore the Below Error )

Get-PublicFolder -Recurse | Get-PublicFolderStatistics | Export-Csv C:\Exchange2010-PFStatistics.csv


Exporting Public Folder Permissions to CSV

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


Step 3: (Run in Exchange 2010 Server)

Make Sure PublicFoldersLockedForMigration and PublicFolderMigrationComplete is set to False

PublicFoldersLockedForMigration : False
PublicFolderMigrationComplete   : False

Get-OrganizationConfig  | fl *Migration*



If this parameter is set to True , Run the below command to Change it to False

Set-OrganizationConfig -PublicFoldersLockedforMigration:$false -PublicFolderMigrationComplete:$false


Step 4: (Run this on Exchange 2013 server)

Make sure there is no PublicFolderMigrationRequest and PublicFolder Mailbox


Get-Mailbox -PublicFolder


Get this Below Scripts and Supporting files , from Exchange 2013 Scripts folder (C:\Program Files\Microsoft\Exchange Server\V15\Scripts)

and Copy those files to Exchange 2010 Scripts Folder (C:\Program Files\Microsoft\Exchange Server\V14\Scripts)



Step 4: (Run this on Exchange 2010 server)

Login to Exchange 2010 Server , Open Exchange management Shell , As we copied the PF scripts to Scripts folder.

Locate to It and Run Both the Scripts

Script 1 :

.\Export-PublicFolderStatistics.ps1 -PublicFolderServer EXC2010.domain.com  -ExportFile C:\PFMigration\Exchange2010-PFtoSize.csv

Copy the Exported File name “Exchange2010-PFtoSize.csv”  , And Specify the same in the next script in –ImportFile Parameter


Script 2:

Copy the Exported File name on the above script “Exchange2010-PFtoSize.csv”  , And Specify the same in the below in –ImportFile Parameter

.\PublicFolderToMailboxMapGenerator.ps1 -MailboxSize 5000000000 -ImportFile C:\PFMigration\Exchange2010-PFtoSize.csv -ExportFile C:\PFMigration\Exchange2010-PFtoMailbox.csv

Note – MailboxSize Parameter – 1GB – 1000000000 (In Bytes) , Maximum you can specify is 25GB



Step 5 : (Log into Exchange 2010 server)

Open file Exchange2010-PFtoMailbox.csv

Specify the PF mailbox name which you wish , Default name is Mailbox1

Specified “PFMailbox”



Step 6: (Log into Exchange 2013 server)

Create the PF Mailbox as the specified name in the CSV “PFMailbox”

New-Mailbox -PublicFolder PFMailbox -HoldForMigration:$true -Database “Mailbox Database”



Step 7: (Log into Exchange 2013 server)


Create PublicFolderMigrationRequest

New-PublicFolderMigrationRequest -SourceDatabase (Get-PublicFolderDatabase –Server EXCH2010) -CSVData (Get-Content C:\PFMigration\Exchange2010-PFtoMailbox.csv -Encoding Byte)


Note : If required you can add these parameters -AcceptLargeDataLoss –BadItemLimit

Bad limit value can be= 0 to 2147483647



To Check status of Migration request

Get-PublicFolderMigrationRequest | Get-PublicFolderMigrationRequestStatistics -IncludeReport | FL







(Note : Once you set PublicFoldersLockedForMigration to True – Users will lose access to Public Folders)

Once the PublicFolderMigrationRequest goes autosuspended we got to set PublicFoldersLockedForMigration to True

Set-OrganizationConfig -PublicFoldersLockedForMigration:$true



Now users would have lost access to the legacy Public Folder Database and replication to new Public Folder Mailbox is completed .

This may take time ,depending on your topology . ( Got to wait for 60 to 120 minutes)

Step 9:(Log into Exchange 2013 server)

Now you can Complete the migration, with the following two commands

Get-PublicFolderMigrationRequest  -Identity \PublicFolderMigration | Set-PublicFolderMigrationRequest -PreventCompletion:$false

Get-PublicFolderMigrationRequest  -Identity \PublicFolderMigration | Resume-PublicFolderMigrationRequest




Now Verify PublicFolderMigrationRequest is 100 Percent Complete


Get-PublicFolderMigrationRequest | Get-PublicFolderMigrationRequestStatistics



Get-PublicFolder –Recurse



Login to OWA – Right Click on Favorites – Add Public Folder – Verify you are able to access the migrated Data






Hope it is helpful Smile


Thank you

Satheshwaran Manoharan
Satheshwaran Manoharanhttps://www.azure365pro.com
Award-winning Technology Leader with a wealth of experience running large teams and diversified industry exposure in cloud computing. From shipping lines to rolling stocks.In-depth expertise in driving cloud adoption strategies and modernizing systems to cloud native. Specialized in Microsoft Cloud, DevOps, and Microsoft 365 Stack and conducted numerous successful projects worldwide. Also, Acting as a Technical Advisor for various start-ups.

Related Articles


  1. Hi Sathesh,
    In the “Exporting Public Folder Permissions to CSV” step, you are running “Get-PublicFolder -GetChildren | Get-PublicFolderClientPermission” to get the permission. When we run Get-publicFolder -GetChildren, it will give you the list subfolders under root. Not the sub sub folders below that. So instead we can use Get-PublicFolder -Recurse itself.

  2. Hi Satheshwaran,
    Great info! Lots of useful tips.
    I hope you are doing well. Would you know of any powershell script that can propagate Public Folder permissions on Exchange 2010?

  3. Hi Satheswaran,

    i fallow the procedure but i run “Set-OrganizationConfig -PublicFoldersLockedForMigration:$true” on ex2013 and my request was showing that in progress at 95% in detail it was showing that relinquishing job because the mailbox locked the job will be attamp to complete after xxx time. i remove the migration request and delete publicfoldermailbox from 2013 and try to start migration again now there is a error showing “Failed to submit the request because public folder migration has already been successfully completed previosly”
    what should i do please suggest.

    • Public Folders.. Read about Inter-org its supports only 2010. Go for third party. It will be too complicated though.


Please enter your comment!
Please enter your name here

× How can I help you?