Exchange Server 2010 to 2013 Migration – Moving Public Folders

Xavier Mustin

Administrator
Staff member
#1
  • After moving all mailboxes from Exchange Server 2010 to 2013 we can turn our attention to the public folder migration.



    Although Exchange Server 2013 provides support for public folders with the new modern public folders, you may wish to take this opportunity to review whether your organization needs to retain public folders at all. If they are no longer needed then removing them entirely from the Exchange organization would be simpler. However if that decision can’t be made, or they are still required for some reason, then a migration to Exchange 2013 can be performed.

    Initially Microsoft provided a public folder migration method known as serial migration. Serial migration of public folders to Exchange 2013 has since been deprecated and will not be supported by Microsoft. The current method for migrating public folders to Exchange 2013 is a batch migration. You can migrate up to 500,000 public folders to Exchange 2013 with this method.

    At a high level the process involves:
    1. Downloading the migration scripts
    2. Preparing for the migration
    3. Generating the CSV files
    4. Creating the public folder mailboxes in Exchange 2013
    5. Starting the migration
    6. Lock the public folders for final migration (which requires some downtime)
    7. Finalize the migration (downtime still required)
    8. Test and unlock the public folder migration
    Of course the reality is that there are many caveats and ways for a public folder migration to go wrong. Generally speaking you should always refer to the TechNet article as it will document the latest requirements and limitations for a public folder migration. However you can also refer to the following resources for some additional real-world advice:
    Here is an example migration for the Exchange Server Pro organization, to show you what the end to end process looks like.

    DOWNLOAD SCRIPTS AND PREPARE ORGANIZATION
    The public folder migration scripts have been downloaded and saved to a server that has the Exchange 2010 management tools installed.

    A snapshot of the existing public folder structure, statistics, and permissions is taken. These commands are run from the Exchange 2010 management shell.

    [PS] C:\PFMigration>Get-PublicFolder -Recurse | Export-CliXML C:\PFMigration\Legacy_PFStructure.xml

    [PS] C:\PFMigration>Get-PublicFolderStatistics | Export-CliXML C:\PFMigration\Legacy_PFStatistics.xml

    [PS] C:\PFMigration>Get-PublicFolder -Recurse | Get-PublicFolderClientPermission | Select-Object Identity,User -ExpandProperty AccessRights | Export-CliXML C:\PFMigration\Legacy_PFPerms.xml

    Any public folders that have a backslash in the name need to be renamed to remove the backslash. To identity those folders run the following command in the Exchange 2010 management shell.

    [PS] C:\PFMigration>Get-PublicFolderStatistics -ResultSize Unlimited | Where {$_.Name -like "*\*"} | Format-List Name, Identity

    Verify that no record exists of a previous public folder migration. The values returned here should be $false.

    [PS] C:\PFMigration>Get-OrganizationConfig | Format-List PublicFoldersLockedforMigration, PublicFolderMigrationComplete

    PublicFoldersLockedForMigration : False
    PublicFolderMigrationComplete : False

    In the Exchange 2013 management shell run the following commands to verify that there are no existing public folder migration requests, and no existing modern public folders.

    [PS] C:\PFMigration>Get-PublicFolderMigrationRequest

    [PS] C:\PFMigration>Get-Mailbox -PublicFolder

    [PS] C:\PFMigration>Get-PublicFolder

    GENERATE CSV FILES AND CREATE PUBLIC FOLDER MAILBOXES
    With the preparation completed we can now generate the CSV files that will be used to create the new public folder mailboxes on Exchange 2013. Run the following command in the Exchange 2010 management shell. Replace the server name HO-EX2010-PF with the name of one of your public folder servers.

    [PS] C:\PFMigration>.\Export-PublicFolderStatistics.ps1 C:\PFMigration\PFSizeMap.csv HO-EX2010-PF

    [10/7/2015 2:55:24 PM] Enumerating folders under NON_IPM_SUBTREE...
    [10/7/2015 2:55:25 PM] Enumerating folders under NON_IPM_SUBTREE completed...6 folders found.
    [10/7/2015 2:55:25 PM] Retrieving statistics from server EX2010SRV1
    [10/7/2015 2:55:25 PM] Retrieving statistics from server EX2010SRV1 complete...14 folders found.
    [10/7/2015 2:55:25 PM] Total unique folders found : 14.
    [10/7/2015 2:55:25 PM] Exporting statistics for 14 folders
    [10/7/2015 2:55:25 PM] Exporting folders to a CSV file

    Review the folder sizes in the CSV file and make a decision for how big each public folder mailbox will be. This will determine the number of public folder mailboxes created to store all of the public folder data in Exchange 2013. For example, if you have 20Gb of public folder data, and choose a maximum mailbox size of 1Gb, you will end up with 20 public folder mailboxes.

    The Exchange Server Pro organization has very little public folder data, so a maximum size of 10Gb will result in a single public folder mailbox.



    [PS] C:\PFMigration>.\PublicFolderToMailboxMapGenerator.ps1 10000000 C:\PFMigration\PFSizeMap.csv C:\PFMigration\PFMailboxMap.csv
    [10/7/2015 2:56:35 PM] Reading public folder list...
    [10/7/2015 2:56:35 PM] Loading folder hierarchy...
    [10/7/2015 2:56:35 PM] Allocating folders to mailboxes...
    [10/7/2015 2:56:35 PM] Trying to accomodate folders with their parent...
    [10/7/2015 2:56:35 PM] Exporting folder mapping...



    On an Exchange 2013 server create a public folder mailbox to be the master hierarchy mailbox.

    [PS] C:\>New-Mailbox -PublicFolder Mailbox1 -HoldForMigration:$true

    Name Alias ServerName ProhibitSendQuota
    ---- ----- ---------- -----------------
    Mailbox1 Mailbox1 ex2013srv1 Unlimited

    Run the following command to create the additional public folder mailboxes to host the public folder content. The number of mailboxes is determined by the PF mailbox map generated in the previous step. In the case of the Exchange Server Pro organization only one mailbox is required, so this step is not necessary. But in your scenario set the number of mailboxes to match the number calculated in the PFMailboxMap.csv.

    [PS] C:\>$numberofmailboxes = 3

    [PS] C:\PFMigration>For ($index = 2; $index -le $numberOfMailboxes; $index++)
    {
    $PFMailboxName = "Mailbox" + $index
    New-Mailbox -PublicFolder $PFMailboxName
    }

    Name Alias ServerName ProhibitSendQuota
    ---- ----- ---------- -----------------
    Mailbox2 Mailbox2 ex2013srv1 Unlimited
    Mailbox3 Mailbox3 ex2013srv1 Unlimited

    MIGRATING THE PUBLIC FOLDERS
    With the new mailboxes created in Exchange 2013 we can proceed with the migration. The steps below are for migrating public folders from Exchange Server 2010 to Exchange Server 2013.

    Note that you need the CSV file containing the PF mailbox map generated earlier, so copy that to a server with the Exchange 2013 management tools where you are running this command.

    [PS] C:\>New-MigrationBatch -Name PFMigration -SourcePublicFolderDatabase (Get-PublicFolderDatabase -Server EX2010SRV1) -CSVData (Get-Content C:\PFMigration\PFMailboxMap.csv -Encoding Byte) -NotificationEmails administrator@exchangeserverpro.net

    Identity Status Type TotalCount
    -------- ------ ---- ----------
    PFMigration Created PublicFolder 1

    When you’re ready to commence the initial synchronization of public folders start the migration batch.

    [PS] C:\PFMigration>Start-MigrationBatch PFMigration

    Monitor the progress of the public folder migration batch until it reaches a state of “Synced”.

    [PS] C:\PFMigration>Get-MigrationBatch PFMigration

    Identity Status Type TotalCount
    -------- ------ ---- ----------
    PFMigration Synced PublicFolder 1

    If you have more than one public folder mailbox in Exchange 2013 you can see the status of each mailbox’s migration progress using Get-MigrationUser.

    [PS] C:\PFMigration>Get-MigrationUser -BatchId PFMigration

    Identity Batch Status LastSyncTime
    -------- ----- ------ ------------
    Mailbox1 PFMigration Synced 10/8/2015 9:26:20 AM

    When the Synced state has been reached the legacy public folders can be locked for the final migration. This requires downtime, the length of which depends on how much new content has been generated in public folders since the Synced state was reached and will still need to be migrated. Users will not be able to access public folders, and any email sent to mail-enabled public folders will be queued.

    In the Exchange 2010 management shell run the following command to lock the public folders. In an organization with multiple public folder databases it may take several hours for all public folders in the organization to receive this change via replication.

    [PS] C:\>Set-OrganizationConfig -PublicFoldersLockedForMigration:$true

    With the public folders locked we can complete the migration. In the Exchange 2013 management shell run the following commands.

    [PS] C:\PFMigration>Set-OrganizationConfig -PublicFoldersEnabled Remote

    [PS] C:\PFMigration>Complete-MigrationBatch PFMigration

    If you see an error that public folders need to be locked down first it’s likely that the lock down flag has not been picked up by the legacy public folder database yet, and you will need to wait a little longer.

    Wait for the migration batch to reach a state of Complete. Again this can take what seems like a long time, even in a small organization with very little public folder data.

    [PS] C:\PFMigration>Get-MigrationBatch PFMigration

    Identity Status Type TotalCount
    -------- ------ ---- ----------
    PFMigration Completed PublicFolder 1

    Next, a test mailbox is set to use the Exchange 2013 public folder mailbox and used to test public folder functionality.

    [PS] C:\>Set-Mailbox ex2013test -DefaultPublicFolderMailbox Mailbox1


    With the test successful the following command is run from an Exchange 2013 server or management shell.

    [PS] C:\>Get-Mailbox -PublicFolder | Set-Mailbox -PublicFolder -IsExcludedFromServingHierarchy $false
    Next, the organization config is updated to indicate that the migration of public folders is complete. This command is run from the Exchange 2010 management shell.

    [PS] C:\>Set-OrganizationConfig -PublicFolderMigrationComplete:$true

    And finally, the following command is run from the Exchange 2013 management shell.

    Set-OrganizationConfig -PublicFoldersEnabled Local

    During the final migration phase when public folders were locked, regular users were unable to access the public folders in Outlook. After the migration completion flag is set above, and the users restart Outlook, they should be able to access public folders again. Any new items created by the test user should be visible as well.



    In the next part of this article series we’ll look at decommissioning the legacy Exchange servers from the organization.
 
Haut