Home » Exchange Server » Exchange Server 2010 to 2013 Migration – Moving Public Folders

Exchange Server 2010 to 2013 Migration – Moving Public Folders

This article is an excerpt from the Exchange Server 2010 to 2013 Migration Guide.

After moving all mailboxes from Exchange Server 2010 to 2013 we can turn our attention to the public folder migration.

exchange-2013-public-folders-01

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.

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.

Verify that no record exists of a previous public folder migration. The values returned here should be $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.

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.

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.

exchange-2013-public-folders-02

exchange-2013-public-folders-03

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

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.

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.

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

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

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.

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.

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

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.

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

exchange-2013-public-folders-04

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

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.

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

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.

exchange-2013-public-folders-05

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

For more information see the Exchange Server 2010 to 2013 Migration Guide.

Paul is a Microsoft MVP for Office Servers and Services. He works as a consultant, writer, and trainer specializing in Office 365 and Exchange Server. Paul is a co-author of Office 365 for IT Pros and several other books, and is also a Pluralsight author.
Category: Exchange Server

64 comments

  1. Marcos Canedo says:

    Thanks! Great tutorial, as usual. In my scenario, spaces in mailNickname atribute on some PF System Objects cause fails on migration, solved.

  2. Milton Lopez says:

    Hi Paul.

    Not having Public Folders sounds good to us, so we moved a number of Contacts folders from under Public Folders to a shared mailbox and set the proper permissions on them. This works fine except that users with Reviewer permission cannot add the new Contacts folders to their address book – the option to do this is not there as it was for Public Folders. Evidently this puts a significant limitation on users.

    Is there a way to get this work, or some reasonable workaround?

    Thanks,

    M.

  3. Milton Lopez says:

    Honestly, because over time we have grown used to having them in either a Contacts folder or in a Public Folder. I’m reading up of managing Exchange/AD address lists. Any pointers on the pros and cons of using them, or to good articles, blogs, books, etc. would be much appreciated.

    Thanks again,

    M.

  4. Milton Lopez says:

    Hi Paul,

    On second thought, I think there are significant differences in the way contact data is stored and managed in AD vs. a in a shared mailbox. I believe the mailbox is a better vehicle for contacts that are not part of the organization’s internal operations. Even though we can create AD contacts that are not associated with a user account, using AD to store records about people that do need access to AD resources seems counterintuitive. Also, the tools used to manage contacts in a mailbox seem better suited for this type of data.

    So I am back to why would not be able to add a Contacts folder in a shared mailbox to the Outlook Address Book, while Microsoft speaks so much of “deemphasizing” Public Folders. It just doesn’t make sense.

    Am I missing something?

    M.

  5. Karim CAMMOUN says:

    Hi Paul,

    I have used your article for a migration that worked perfect except 1 point : All access rights were replaced by only one granting custom access to the Administrator account I used for the migration !

    Any thoughts ?

  6. Luis Henriques says:

    Hello Paul,

    Should we migrate / move public folders from one Exchange 2010 to an Exchange 2013 after migrating all mailboxes, or we can do it before or simultaneously?

    Regards,

  7. Dave says:

    Paul,

    We have migrated all of our mailboxes from Exchange 2007 to 2013 and now it’s time for the public folder migration phase. I ran the first three powershell scripts mentioned in your article to take a “snapshot” of our current public folder system. The first command to gather the public folder structure returned some errors where public folders either had a backslash or leading/trailing spaces. The PFs with the backslashes were corrected manually because there were not that many. However, there are tons of PFs with trailing spaces. I found powershell commands that are supposed to remove them from all PFs, but when I tried it against one specific PF it didn’t seem to like the trim:

    get-publicfolder -identity “TestPathPublicFolderName” | Set-publicfolder -Identity $_.Identity -Name $_.Name.Trim()

    You cannot call a method on a null-valued expression.
    At line:1 char:150
    + Get-PublicFolder -Identity “TestPathPublicFolderName” | Set-PublicFolder -Identity $_.Identity -Name $_.Name.Trim <<<< (
    )
    + CategoryInfo : InvalidOperation: (Trim:String) [], RuntimeExcep
    tion
    + FullyQualifiedErrorId : InvokeMethodOnNull

    Any idea why this is not working? I want to run the following command to remove all but if I cannot get the above to work then I don't see this working either.

    get-publicfolder -identity "" -Recurse -ResultSize Unlimited | Foreach { Set-publicfolder -Identity $_.Identity -Name $_.Name.Trim() }

    • Well first of all this is a 2010 to 2013 PF migration article so make sure you’ve referred to Microsoft’s guidance for 2007 to 2013 PF migration as there are some differences.

      The error “You cannot call a method on a null-valued expression.” suggests that the first part of your command, get-publicfolder -identity “TestPathPublicFolderName”, is returning nothing at all. So I would start there.

  8. Dave says:

    Paul,

    I started the public folder migration but am constantly getting stuck with “failedother” status because many of our public folders have invalid characters in their alias name.

    Error: Property expression “Public Folder Name” isn’t valid. Valid values are:
    Strings formed with characters from A to Z (uppercase or lowercase), digits from 0
    to 9, !, #, $, %, &, ‘, *, +, -, /, =, ?, ^, _, `, {, |, } or ~. One or more
    periods may be embedded in an alias, but each period should be preceded and
    followed by at least one of the other characters. Unicode characters from U+00A1 to
    U+00FF are also valid in an alias, but they will be mapped to a best-fit US-ASCII
    string in the e-mail address, which is generated from such an alias.

    Is there a way for me to remove invalid characters for all Public Folder aliases without affecting their PF email address? Right now I’m just using ADSIEdit to manually edit the mailNickname field.

  9. Luis Henriques says:

    Hello Paul,
    We did the migration of Public Folders and everything seems to be fine with exception of Public Folders that “disappeared” (The public folders that “supposedly” disappeared, are not visible in the EAC but if you export through “Get-PublicFolder -Identity ” NON_IPM_SUBTREE” -recurse | FL> c: pf1.txt they appear as ” NON_IPM_SUBTREE DUMPSTER_ROOT DUMPSTER_EXTEND RESERVED_1 RESERVED_2″”
    These same Public Folders allow them to be sent emails but nevertheless assume the limits of configured mailboxes (in this case until we set the limits to unlimited, to test), and are showing some quota warning.
    Any ideias of what is happening?
    Regards

  10. Simtandile Mtubeli says:

    Sorry Sir, regarding migrating public folders from exchange 2010 to 2013. does exchange server 2010 have to have the latest service pack updated?

  11. Tom Scott says:

    As an FYI.. Mailboxes still on 2010 cannot access Public Folders once they are migrated to 2013.. At least in my environment..

  12. Dave says:

    My public folder migration stage has reached the “autosuspended” state at 95%. I have the exchange 2007 public folders now locked for migration. The next step is to run the following command on my 2013 server but I’m getting the following error:

    [PS] C:pfnew>Set-PublicFolderMigrationRequest -Identity PublicFolderMigration -PreventCompletion:$false
    Couldn’t find a request that matches the information provided. Reason: No such request exists in the specified index.
    + CategoryInfo : NotSpecified: (:) [Set-PublicFolderMigrationRequest], ManagementObjectNotFoundException
    + FullyQualifiedErrorId : [Server=NEIMAIL01,RequestId=0f7868ce-f5ce-46d3-99c5-167052f9f146,TimeStamp=5/16/2015 1:4
    3:56 PM] [FailureCategory=Cmdlet-ManagementObjectNotFoundException] A7635EAD,Microsoft.Exchange.Management.Recipie
    ntTasks.SetPublicFolderMigrationRequest
    + PSComputerName : neimail01.company.com

    Any suggestions?

    Dave

  13. Dave says:

    I found this article:

    http://www.stknetwork.com/2015/02/how-to-fix-exchange-2013-set.html

    It seems to make sense, but I don’t understand why they don’t run
    Set-PublicFolderMigrationRequest –Identity PublicFolderMigration -PreventCompletion:$false

    and just run without running the above command first.
    Resume-PublicFolderMigrationRequest -Identity “000000-00000-0000-YOURREQUESTID”

    Do I run the first command using the RequestID, then the resume command? Thoughts?

    • Looking at that article, it appears that the name of their PF migration request is “true” (as in the string value of “true”, not the boolean value of “True”). Therefore, running “Set-PublicFolderMigrationRequest -Identity PublicFolderMigration -PreventCompletion:$false” will error because the name/identity doesn’t match. That may be the same situation you’ve run into.

      • Dave says:

        I think you’re right, but I was able to finish it using the RequestID like that article suggested. Quick question, now I’m completely on Exchange 2013 but need to move all the public folder contents out of the primary mailbox. I’ve been able to move all of the root public folders that were in the primary mailbox to another in Exchange 2013 CU7 using the move-publicfolderbranch.ps1 script. However, I’m getting the following error when trying to move one of my root folders that seems to have more subfolders than the others I’ve moved so far.

        [5/23/2015 7:58:40 PM] Issuing request to move the public folder branch: human resources
        WARNING: An unexpected error has occurred and a Watson dump is being generated: The call to
        ‘net.tcp://mail02.company.com/Microsoft.Exchange.MailboxReplicationService MAIL02.company.com
        (15.0.1044.22 caps:1FFF)’ failed. Error details: The formatter threw an exception while trying to deserialize the
        message: Error in deserializing body of request message for operation ‘ValidateAndPopulateRequestJob’. The maximum
        string content length quota (262144) has been exceeded while reading XML data. This quota may be increased by changing
        the MaxStringContentLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader..

        Any suggestions? I’m not sure where I need to modify MaxStringContentLength value.

  14. Emiel says:

    Hi Paul,

    I have migrated public folders from your blog. Now I want to uninstall Exchange from the SBS server but I get the message That the public folder contains replica’s. But the problem is when I go to the Public management console I don’t see the public folders anymore. When I these commands in powershell I see this results:

    Get-PublicFolder

    Get-PublicFolder : There is no existing PublicFolder that matches the following
    Identity: ”. Please make sure that you specified the correct PublicFolder Id
    entity and that you have the necessary permissions to view PublicFolder.
    At line:1 char:17+ Get-PublicFolder <<<< + CategoryInfo : NotSpecified: (0:Int32) [Get-PublicFolder], Mapi
    TransientException + FullyQualifiedErrorId : 5B3F93C9,Microsoft.Exchange.Management.MapiTasks
    .GetPublicFolder

    Get-PublicFolderStatistics

    Name ItemCount LastAccessTime
    —- ——— ————–
    Default 0 4-6-2015 11:27:20
    EX:/o=First Organization/ou=Exchange Adm 13 4-6-2015 2:01:21
    inistrative Group (FYDIBOHF23SPDLT)
    EX:/o=First Organization/ou=Exchange Adm 0 4-6-2015 2:45:00
    inistrative Group (FYDIBOHF23SPDLT)
    exchangeV1 401 4-6-2015 11:34:35
    Customer 1 Archive 1 4-6-2015 4:01:35
    Customer1 Contacts 1218 4-6-2015 4:01:35
    globalevents 0 4-6-2015 11:25:46
    internal 0 4-6-2015 11:25:46
    microsoft 0 4-6-2015 11:27:20
    OAB Version 2 32 4-6-2015 5:02:59
    OAB Version 3a 32 4-6-2015 5:02:59
    OAB Version 4 3 4-6-2015 5:02:59
    OWAScratchPad{6BD1DD63-D0F7-4FD4-9DFC-9C 0 4-6-2015 11:23:54
    02209F9569}
    schema-root 0 4-6-2015 11:23:54
    StoreEvents{6BD1DD63-D0F7-4FD4-9DFC-9C02 0 4-6-2015 11:23:55
    209F9569}
    /o=First Organization/cn=addrlists/cn=oa 0 4-6-2015 2:45:00
    bs/cn=Default Offline Address Book

    Any ideas?

  15. Luis says:

    Hello,
    I need to move all my public folders to new server (Exchange 2013 to Exchange 2013).
    What do i need to do?
    just migrate public folders mailboxes or need another task?
    Regards,
    Luis

  16. Erik says:

    If you get this error: “A parameter cannot be found that matches parameter name ‘SourcePublicFolderDatabase’.” Your EMC is broken, to work around this issue start a regular powershell and run Add-PSSnapin Microsoft.exchange.*

    Regards,

    Erik

  17. Erik says:

    Several steps of migrating public folders have changed, some commands are no longer valid or applicable. Will you update this article to reflect the required changes?

  18. Vishal says:

    Hi Paul,

    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 – http://www.vspbreda.nl/nl/2013/12/exchange-2010-to-exchange-2013-public-folder-migration/​.

    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,
    Vishal.

    • Erik says:

      Hi Vishal,

      Sadly enough this article (and the technet version as well) is a little outdated and lacks some essentials changes and commands. Two of these essential(!!!) Exchange powershell commands that are missing but that you need run to finalize the Public Folder migration:

      # Run this on Exchange 2013
      Get-Mailbox -PublicFolder | Set-Mailbox -PublicFolder -IsExcludedFromServingHierarchy $false

      #Run this on Exchange 2010
      Set-OrganizationConfig -PublicFoldersEnabled Local -RemotePublicFolderMailboxes $null

      The above mentioned commands need to be run after the test step mentioned in this article. You could retry the migration and then include these commands.

      Regards,

      Erik

      • tony Holdgate says:

        “#Run this on Exchange 2010
        Set-OrganizationConfig -PublicFoldersEnabled Local -RemotePublicFolderMailboxes $null”

        isn’t that Exchange 2013?

  19. Vishal says:

    Hi Paul,

    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.

    Regards,
    Vishal.

  20. Manfred Preissner says:

    Hi there
    I accomplished to
    report all Public Folder Items to Large for Migration (larger than ~19 MB)
    by writing a short script.

    Edit: code removed

    • Please don’t post scripts or large code samples in the comments, it breaks the layout of the page. If you have scripts to share there are many places you can do that, such as Github, the TechNet Script Gallery, or your own blog.

  21. Milton Lopez says:

    How about this for moving a small number of Public Folders from 2010 to 2013?:
    1- Move all mailboxes from 2010 to 2013.
    2- Copy Public Folders to temporary mailbox on 2010.
    3- Move temporary mailbox from 2010 to 2013.
    4- Delete all 2010 Public Folders and their database.
    3- Create new Public Folders mailbox on 2013, copy folders to it from temporary mailbox and set permissions.

    The question is whether 2013 will let you create a new PF mailbox even after deleting the 2010 PF database. As it is, 2013 will not create a new PF mailbox if it sees 2010 Public Folders present, so I would assume all PF remnants on 2010 would have to be gone from AD, and I am not sure what that would take.

    Doable?

  22. Akr Ofly says:

    So I guess the ever lasting question pops up again, what is the verdict on cross forest 2010 to 2013 public folder migration?
    In addition is cross forest 2013 to 2013 public folder migrations supported?

  23. Mark says:

    Public folder migration from 2010-2013 completed and working fine, however i have one small issue,

    Outlook 2007 clients aren’t updating the path to the new Public folder location so they can no longer access it. If i create a new Outlook profile it works fine.

    Anybody know how to force outlook to update the public folder path as i really dont want to have to manually recreate outlook profiles for every user.

  24. Milton Lopez says:

    Answer to my own previous question about copying PFs across servers via temporary mailboxes:

    After copying the PFs to a temp mailbox deleting the 2010 PF database I was able to create 2013 PF mailbox and a test PF, but the 2013 PF mailbox it was labeled “Secondary Hierarchy”, which I took it mean it is a read-only copy of the PF hierarchy, and that the primary therefore remains on 2010 somehow. Fortunately, I was able to delete the 2013 PF mailbox and re-create the test PFs on 2010, so now I can test the standard migration route. I can only that goes well.

    At least all this testing made time for the 2013 CU 10 to be released three days ago, It’s amazing to me that is has taken that many updates to get basic functionality working on 2013. Microsoft still doesn’t know how to make good quality software without using its user base as guinea pigs, and even that hasn’t worked out that well. Sigh …

  25. Andy says:

    Thank you very much. It was really useful for me. Thanks to people like you who share their knowledge, people like me can do his work. Thank you again.

  26. Akr Ofly says:

    So no one has an answer to my question?

    cross forest 2010 to 2013 public folder migration??????
    cross forest 2013 to 2013 public folder migrations ?????

    I posted it earlier but no I received no reply, anyone feel like they can point me in the right direction?

    • Akr Ofly says:

      Maybe third time is a charm.
      Can I get a comment regarding cross forest migration of public folders from 2010 -> 2013 ??????

      If no one feels they have an answer to offer, not even in the form of “it is not supported” then I guess I am at the wrong forum. Can someone please confirm that I am barking up the wrong tree ?

  27. Yagnesh says:

    Hi Paul,

    Awesome article and a great help with my migration. I’m now at the point where i’m about to start the migration, but when running the following command:

    New-MigrationBatch -Name PFMigration -SourcePublicFolderDatabase (Get-PublicFolderDatabase -Server EX1V) -CSVData (Get-Content C:PFMigrationPFMailboxMap.csv -Encoding Byte) -NotificationEmails admin@domain.com

    I’m getting the following error:

    Column “FolderPath” is missing from the CSV file. The import process can’t continue because this column is required

    I’ve gone over the CSV file a few times and my file is as far as I can tell in the correct format according to the above output. Am I missing something? My CSV output is as below:

    FolderPath,”TargetMailbox”
    ,”PFMailbox1″
    IPM_SUBTREEPublic Email Addresses,”PFMailbox2″
    IPM_SUBTREEPublic Email Addressescareers@companyRejected,”PFMailbox3″

    Any help would be much appreciated.

    Thank You in advance.

  28. Mike says:

    Paul, the Powershell command executed on the Exchange 2007 (IsExcludedFromServingHierarchy=$false) was executed successfully, but the message also appeared that the PFMBX object was not modified. Do I have to worry about that? Thanks

  29. Mike says:

    Paul, I am having a cross forest migration from 2010 to 2013. Is PF migration also supported cross forest? I doubt that it is possible to migrate only a couple of PFs since the old Exchange 2010 in the old forest will still be used. Thank you

  30. silverfox says:

    Thanks for the article but after successfully completing the migration from 2010 to 2013 , users previously able to create folder / subfolders are unable to perform that task.

    error message popup with ‘cannot create the folder’

    I have removed and added back the permission for those users but nothing seems to make it work.

  31. Dirk says:

    Hello Paul,

    I’m about to do a public folder migration from Exchange 2010 to 2013. The company also uses organizational forms in Exchange 2010. Do these get migrated the same way, or should I prepare something extra? Thanks.

  32. Ravinder Singh Gill says:

    Hi Paul,

    I have exchange 2010 calendar to migrate to exchange 2013, will your article will still work. Please advise.

    Thank you

  33. Tim says:

    Hi Paul ,
    used your instruction to migrate folders , ran into trouble.

    Created public folder mailboxes and not public folder – therefor unable to complete migration .

    Fab article

Leave a Reply

Your email address will not be published. Required fields are marked *