Happy New Year!! Checkyourlogs fans, I am going to show you the final steps of public folder migration. let’s follow the steps and completed it.

  1. Login to Exchange 2010 Server.
  2. Open Exchange Management Shell as local administrator
  3. Run the Export-PublicFolderStatistics.ps1 script to create the folder name-to-folder size mapping csv file.
    .\Export-PublicFolderStatistics.ps1 C:\Post-Install\PFMigration\PFSizeMap.csv GDMEX01.gooddealmart.ca
    

  4. Run the PublicFolderToMailboxMapGenerator.ps1 script to create the public folder-to-mailbox mapping file. This file is used to calculate the correct number of public folder mailboxes on the Exchange 2016 Mailbox server.
    .\PublicFolderToMailboxMapGenerator.ps1 20000000000 C:\Post-Install\PFMigration\PFSizeMap.csv C:\Post-Install\PFMigration\PFMailboxMap.csv
    

    Note:

    Maximum mailbox size in bytes = 20000000000, the value 20000000000 is used to represent 20 GB

    Folder to size map path = C:\Post-Install\PFMigration\PFSizeMap.csv

    Folder to mailbox map path = C:\Post-Install\PFMigration\PFMailboxMap.csv

  5. Open PFMailboxMap.csv file and change “Mailbox1” to “PFMailbox1” and then save.

  6. Copy C:\Post-Install\pfscripts and C:\Post-Install\PFMigration folders from exchange 2010 server to exchange 2016 server.
  7. Login to Exchange 2016 server.
  8. Copy PFMailboxMap.csv and PFSizeMap.csv files from C:\Post-Install\PFMigration to C:\Post-Install\pfscripts folder.
  9. Open Exchange Management Shell.
  10. Run the following command to create the target public folder mailboxes.
    .\Create-PublicFolderMailboxesForMigration.ps1 -FolderMappingCsv PFMailboxMap.csv -EstimatedNumberOfConcurrentUsers:200			</p

    Note:

  11. Run the following command to create the migration batch.
    New-MigrationBatch -Name PFMigration -SourcePublicFolderDatabase (Get-PublicFolderDatabase -Server GDMEX01) -CSVData (Get-Content C:\Post-Install\PFMigration\PFMailboxMAP.csv -Encoding Byte) -NotificationEmails csun@gooddealmart.ca
    

  12. Run the following command to start the migration.
    Start-MigrationBatch PFMigration
    

  13. Open Exchange Admin Center and click recipients and then select migration, you will see the PFMigration batch status change to Syncing now.

  14. Once InitialSync is complete, the status will show Synced.

  15. We are going to lock and complete the public folder for migration (downtime required)
  16. Login to Exchange 2010 Server.
  17. Open Exchange Management Shell as local administrator
  18. Run the following command to lock the legacy public folders for finalization.
    Set-OrganizationConfig -PublicFoldersLockedForMigration:$true
    


  19. Login to Exchange 2016 Server.
  20. Open the Exchange Management Shell on your Exchange 2016 server.
  21. Run the following command to change the Exchange 2016 deployment type to Remote.
    Set-OrganizationConfig -PublicFoldersEnabled Remote
    


  22. Run the following command to complete the public folder migration.
    Complete-MigrationBatch PFMigration
    


  23. If the final synchronization is successful, the public folders on the Exchange 2016 server will be unlocked and the status of the migration batch will change to Completing, and then Completed.

  24. Run the following command to assign some test mailboxes to use any newly migrated public folder mailbox as the default public folder mailbox.
    Set-Mailbox -Identity GDMUSER2 -DefaultPublicFolderMailbox PFMailbox1
    

  25. If everything looks okay, run the following command to unlock the public folders for all other users.
    Get-Mailbox -PublicFolder | Set-Mailbox -PublicFolder -IsExcludedFromServingHierarchy $false
    


  26. Login to Exchange 2010 Server.
  27. Open Exchange Management Shell as local administrator.
  28. Run the following command to indicate that the public folder migration is complete.
    Set-OrganizationConfig -PublicFolderMigrationComplete:$true
    


  29. Login to Exchange 2016 Server.
  30. Open the Exchange Management Shell on your Exchange 2016 server.
  31. Run the following command on the Exchange 2016 server.
    Set-OrganizationConfig -PublicFoldersEnabled Local
    


  32. Run following command on the Exchange 2016 and compare files contents with previously files and verify success.
    Get-PublicFolder -Recurse | Export-CliXML C:\Post-Install\PFMigration\EX2016_PFStructure.xml
    Get-PublicFolderStatistics -ResultSize Unlimited | Export-CliXML C:\Post-Install\PFMigration\Ex2016_PFStatistics.xml
    Get-PublicFolder -Recurse | Get-PublicFolderClientPermission | Select-Object Identity,User -ExpandProperty AccessRights | Export-CliXML  C:\Post-Install\PFMigration\Ex2016_PFPerms.xml
    


Now, you have migrated the public folder from Exchange 2010 to 2016.

Hope you enjoy this post and Happy Friday!

Cary Sun

Twitter:@SifuSun