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

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

  1. Herbert Says:

    Beautiful! Thanks so much! 🙂

  2. AMIT Says:

    Excellent documentation

  3. Sathish Says:

    Excellent Article.

  4. gagan Says:

    Thanks for the excellent article, after reading this I have successfully Migrate Public folders from exchange 2010 to 2013. Except not able to delete Public folder database from exchange 2010 EMC, getting error “The public folder database “PFDB01” contains folder replicas. Before deleting the public folder database, remove the folders or move the replicas to another public folder database” Also can you guide how I can delete mailbox database of exchange 2010?Can you guide me the next stop how I can decommission exchange 2010?

    Thanks again

  5. Wizkid Says:

    Thank you for Compliments 🙂

    @Gagan – I would suggest you to dismount the Public Folder DB and Enjoy 2013 PF for few Days. Once you
    are satisfied you can follow the technet link –

  6. Massimo Says:

    Great article!
    One question: does step n°4 require you to copy Scripts folder from Exchange2013 to Exchange 2007 server? AFAIK the Export-PubliFolderStatistics.ps1 does not exist in Exchange2007 folder. Is that correct?

  7. Wizkid Says:

    Yes Massimo. Please copy from 2013

  8. Kyle Says:

    Thanks for the steps, however I ran into an issue. After the move was autosuspended, and then I made the PreventCompletion changes and resumed the move, it would once again suspend saying that the original database was locked. I had to go back and unlock the original database and resume the move for it to complete successfully. Any ideas on why?

  9. Wizkid Says:

    @Kyle – I guess it will be replication delay.

  10. Kyle Says:

    @Wizkid – It was a single domain controller with a single Exchange 2010 and single Exchange 2013 test setup in a vmware lab. Replication should not be an issue. Even still, I let it sit for 3 days and it was still an issue. What would there be to replicate anyway? It was correctly reporting that the database was locked, as we did that in step 7 above. I essentially had to undo that step to complete the migration.

  11. Wizkid Says:

    Every configuration stays in AD so replication is important, You had not mentioned that you have 1 DC.
    Step 7 is required and we don’t change to false until role back. I will be more than happy to help your setup fixed. Do let me know if you can reproduce the same issue.

  12. NeWay Technologies – Weekly Newsletter #39 – April 18, 2013NeWay | NeWay Says:

    […] Public Folders Migration from Exchange 2007/2010 to Exchange 2013 – 18-Apr-2013 […]

  13. Anna Says:

    Hello, I’m interested in Public Folder migration cross-forest. I wasn’t able to complete it. Always stuck at New-PublicFolderMirationRequest with its remote parameters. Some of them are marked as “for Microsoft internal use only” as OutlookAnywhereHostName or AuthenticationMethod. And some of them aren’t even recognized, as RemoteCredential or RemoteMailboxServerLegacyDN. Although they are in help.
    I tryed many ways, combine sessions, experimenting with similar comands, etc. MS scripts for creating AD objects worked fine, but it’s not enough.
    Always stuck at required parameter SourceDatabase for New-PublicFolderMirationRequest. It can’t connect remotely without proper setting.
    I’m really unhappy, but I don’t give up… yet.

  14. Wizkid Says:

    @Anna- I have not tested cross forest migration yet but it should not be much of worry. If you can share the error then I might be able to suggest you any solution.

    I will test cross forest migration shortly and share.

  15. Mark Says:

    Nice Post. So here is a good one. I wish to create a Mailbox Database in Exchange 2010 but WITHOUT Public folders. I cannot see any way to get round the setting that a Mailbox database must be associated with public folders.

  16. Anna Says:

    Thanks for reply. It’s not just about error, ut’s about missing parameters in New-PublicFolderMirationRequest. The synatx is:

    New-PublicFolderMigrationRequest -OutlookAnywhereHostName -RemoteCredential -RemoteMailboxLegacyDN -RemoteMailboxServerLegacyDN [-AuthenticationMethod ] [-Organization ] …etc etc etc….

    but first parameter -OutlookAnywhereHostName is for internal microsoft use only.

    [PS] C:\Windows\system32>New-PublicFolderMigrationRequest -OutlookAnywhereHostName
    A parameter cannot be found that matches parameter name ‘OutlookAnywhereHostName’.
    + CategoryInfo : InvalidArgument: (:) [New-PublicFolderMigrationRequest], ParameterBi ndingException
    + FullyQualifiedErrorId : NamedParameterNotFound,New-PublicFolderMigrationRequest
    + PSComputerName :

    and others are the same, just for MS only or just not recognized. For example:

    [PS] C:\Windows\system32>$s = Get-Credential
    cmdlet Get-Credential at command pipeline position 1
    Supply values for the following parameters:
    [PS] C:\Windows\system32>New-PublicFolderMigrationRequest -RemoteCredential $s
    A parameter cannot be found that matches parameter name ‘RemoteCredential’.
    + CategoryInfo : InvalidArgument: (:) [New-PublicFolderMigrationRequest], ParameterBi ndingException
    + FullyQualifiedErrorId : NamedParameterNotFound,New-PublicFolderMigrationRequest
    + PSComputerName :

    But I send a note to MS and it is a real problem not just some complicated solving method, thay answered me today and will make me a solution.

  17. Wizkid Says:

    I will explain more once I will test and I might publish another article for it. If MS is answering your concerns then let us wait for their reply.
    These are my thought about the cmdlets:
    1. New-PublicFolderMigrationRequest -OutlookAnywhereHostName
    You have missed FQDN of OutlookAnywhere, as an example it should be New-PublicFolderMigrationRequest -OutlookAnywhereHostName
    2. New-PublicFolderMigrationRequest -RemoteCredential $s
    In this cmdlet you need to add RemoteMailboxServerLegacyDN, Below is the extract from technet.
    “You must use this parameter in conjunction with the RemoteMailboxServerLegacyDN parameter.”

    Reference used:

  18. Anna Says:

    If you run help new-publicfoldermigrationrequest -detailed , you can see there are parametrers details like this:

    This parameter is reserved for internal Microsoft use.

    You cannot simply use it, command new-publicfoldermigrationrequest will just answer you “cannot found”, as I posted before.

    And yes, for remotecredentials..

    The RemoteMailboxServerLegacyDN parameter specifies the server legacy distinguished name (DN) of the back-end server. To find the LegacyExchangeServerDN property, run the following command: Get-ExchangeServer | Format-List LegacyExchangeServerDN.

    This command surprisely doesn’t work. It just jump to few more rows.

    [PS] C:\>Get-ExchangeServer server | Format-List LegacyExchangeServerDN

    [PS] C:\>

    When it doesn’t return any value it’s useless.

  19. Steve Says:

    Just migrated from 2007 to 2013. Have had lots of issues, pub folders being one of them. Just used these instructions. I now have successfully migrated the folders!
    -Had to set -baditemcount on the migration request, because it initially failed.
    -Had the migration hang due to mailbox being locked. Had to rerun the command…
    Set-PublicFolderMigrationRequest –Identity \PublicFolderMigration -PreventCompletion:$false

    Aside from these issues (not including all my typos during the process) this process worked great. Thanks!!!

  20. MikeyRod Says:

    Hi Guys,

    Just so you know, for step 4, Export public folder hierarchy from source into CSV file, If your legacy server is 2007, I could NOT get this to work until I edited the export-publicfolderstatistics.ps1 script and removed the “ResultSize:unlimited” item on line 91 of the script. On line 91 of the script, you can see that it runs “get-publicfolder statistics servername -resultsize:unlimited”, which for me, was causing an error, thus not working.

    If you right click and edit the script, you can modify and save the script and try again. I hope this tidbit helps others.

  21. Wizkid Says:

    @Mikey – Thank you! This has been updated.

  22. MikeyRod Says:

    You’re welcome, WizKid….and shame on me for not thanking YOU in the first place. Great article and thanks for the help!

  23. Wizkid Says:

    Its okay Mikey. It was great to know my publication was any help for you.

  24. Exchange 2010/2007 to 2013 Migration and Co-existence Guide « Says:

    […] […]

  25. Rony Says:

    Thank you for this great article.
    I am facing an issue at the end of the process: when i try to remove the public folder database from Exchange 2007 i am getting this error “Object is read only because it was created by a future version of Exchange: 0.10 ( Current supported version is 0.1 (8.0.535.0).” since remove-publicfolderdatabase cmdlet does not exist in 2013 i am wondering how i can do that …

  26. Prabhat Nigam Says:

    @Mike – Sorry, I missed to approve and reply you. Here is your answer: We always create mailbox database without linking Public Folders. This is a configuration option in the properties of the mailbox database.
    Basically many organizations don’t use Public folders and they don’t create Public folder Database.

  27. Prabhat Nigam Says:

    @Rony – Check the below link for the Exchange 2007 PF removal – I would suggest these links before trying Adsiedit.msc

    Try removing from Adsiedit.msc but be careful. Take the systemstate backup before deleting.

    1. Launch ADSIEdit and connect to the “Configuration” container.

    2. Navigate to “Services –> Microsoft Exchange –> Org Name –> Administrative Groups –> Group Name –> Servers –> 2007servername –> Information Store –> Storage Group”

    3. Right click the “2007 Public Folder Database” and select “Delete”. Wait for the replication to occur.

  28. Exchange 2013 Public Folders – A step toward high availability & moving to Sharepoint « Says:

    […] Exchange 2013 Public Folders Migration – […]

  29. Simon Mutuku Says:

    [PS] C:\Windows\system32>Get-PublicFolderMigrationRequest | Get-PublicFolderMigrationRequestStatistics -IncludeReport |
    Creating a new session for implicit remoting of “Get-PublicFolderMigrationRequest” command…

    RunspaceId : ec7748e2-3b24-479b-a98d-af2f502f940c
    Name : PublicFolderMigration
    Status : Failed
    StatusDetail : FailedOther
    SyncStage : CreatingFolderHierarchy
    Flags : IntraOrg, Pull, Suspend, SuspendWhenReadyToComplete
    RequestStyle : IntraOrg
    Direction : Pull
    Protect : False
    Priority : Normal
    Suspend : True
    SourceVersion : Version 14.3 (Build 123.0)
    SourceDatabase : Public Folder Database 1619818525
    SourceServer : HFDT1MBX08.******************************
    BatchName :
    OutlookAnywhereHostName :
    RemoteCredentialUsername :
    AuthenticationMethod : Basic
    RemoteMailboxLegacyDN :
    RemoteMailboxServerLegacyDN :
    BadItemLimit : 49
    BadItemsEncountered : 0
    LargeItemLimit : 0
    LargeItemsEncountered : 0
    FolderToMailboxMap : {\}
    QueuedTimestamp : 6/8/2013 4:22:39 PM
    StartTimestamp : 6/8/2013 4:44:04 PM
    LastUpdateTimestamp : 6/8/2013 4:44:05 PM
    InitialSeedingCompletedTimestamp :
    FinalSyncTimestamp :
    CompletionTimestamp :
    SuspendedTimestamp :
    OverallDuration : 1.18:53:06
    TotalFinalizationDuration :
    TotalDataReplicationWaitDuration :
    TotalSuspendedDuration :
    TotalFailedDuration : 1.18:31:40
    TotalQueuedDuration : 00:21:24
    TotalInProgressDuration : 00:00:01
    TotalStalledDueToCIDuration :
    TotalStalledDueToHADuration :
    TotalStalledDueToReadThrottle :
    TotalStalledDueToWriteThrottle :
    TotalStalledDueToReadCpu :
    TotalStalledDueToWriteCpu :
    TotalStalledDueToReadUnknown :
    TotalStalledDueToWriteUnknown :
    TotalTransientFailureDuration :
    TotalIdleDuration : 00:00:00
    MRSServerName :
    EstimatedTransferSize : 0 B (0 bytes)
    EstimatedTransferItemCount : 0
    BytesTransferred : 0 B (0 bytes)
    BytesTransferredPerMinute :
    ItemsTransferred : 0
    PercentComplete : 10
    PositionInQueue :
    PreventCompletion : True
    FailureCode : -2146233088
    FailureType : DataValidationException
    FailureSide : Target
    Message : Error: Property expression “All New Users” 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.
    FailureTimestamp : 6/8/2013 4:44:05 PM
    IsValid : True
    ValidationMessage :
    OrganizationId :
    RequestGuid : 72b8a1ff-242e-4062-ac00-4242dfdc3a0e
    RequestQueue : DB21
    ExchangeGuid : 40726776-b9d0-46d8-a728-d1789c1d370b
    Identity : RequestGuid (72b8a1ff-242e-4062-ac00-4242dfdc3a0e), RequestQueue:
    Report : 6/8/2013 4:22:38 PM [HFDT1MBX18] ‘******************************/Servers/craadmin’ created
    6/8/2013 4:44:03 PM [HFDT1MBX16] The Microsoft Exchange Mailbox Replication service
    ‘HFDT1MBX16.******************************’ (15.0.620.24 caps:3F) is examining the request.
    6/8/2013 4:44:03 PM [HFDT1MBX16] Connected to target mailbox
    ‘40726776-b9d0-46d8-a728-d1789c1d370b’, database ‘DB21’, Mailbox server
    ‘HFDT1MBX16.******************************’ Version 15.0 (Build 620.0), proxy server
    ‘HFDT1MBX16.******************************’ 15.0.620.24 caps:3FCB07FFFF.
    6/8/2013 4:44:03 PM [HFDT1MBX16] Connected to source mailbox ”, database ‘Public
    Folder Database 1619818525’, Mailbox server ‘HFDT1MBX08.******************************’
    Version 14.3 (Build 123.0).
    6/8/2013 4:44:03 PM [HFDT1MBX16] Request processing started.
    6/8/2013 4:44:04 PM [HFDT1MBX16] Stage: CreatingFolderHierarchy. Percent complete:
    6/8/2013 4:44:05 PM [HFDT1MBX16] Initializing folder hierarchy from mailbox ”: 72
    folders total.
    6/8/2013 4:44:05 PM [HFDT1MBX16] Folder creation progress: 0 folders created in
    mailbox ‘40726776-b9d0-46d8-a728-d1789c1d370b’.
    6/8/2013 4:44:05 PM [HFDT1MBX16] Fatal error DataValidationException has occurred.

    ObjectState : New

    [PS] C:\Windows\system32>

  30. TBone Says:

    When I run .\Export-PublicFolderStatistics.ps1, I get:

    Parameter declarations are a comma-separated list of variable names with option
    al initializer expressions.
    At C:\Program Files\Microsoft\Exchange Server\Scripts\Export-PublicFolderStatis
    tics.ps1:16 char:168
    + HelpMessage = “Full path of the output file to be generated. If only
    filename is specified, then the output file will be generated in the current di
    rectory.”)] <<<<

  31. Prabhat Nigam Says:


    The format is: .\Export-PublicFolderStatistics.ps1 \\servername\path\filename.csv
    Did you miss file path or name…. See the help message.

  32. TBone Says:

    @ Prabhat Nigam

    This is the exact input:.\Export-PublicFolderStatistics.ps1 C:\PFMigration\PSmapnametosize.csv

    I have seen where you should be on PShell 2.0. I am updating now.

  33. Prabhat Nigam Says:

    Kindly use the below cmd.
    .\Export-PublicFolderStatistics.ps1 \\Servername\C$\PFMigration\PSmapnametosize.csv

  34. TBone Says:

    @ Prabhat Nigam

    Same results either way.

  35. Prabhat Nigam Says:

    share the folder PFMigration folder and use below cmd
    .\Export-PublicFolderStatistics.ps1 \\Servername\PFMigration\PSmapnametosize.csv

  36. TBone Says:

    I think it was Power Shell 2.0. It worked this time.

  37. Prabhat Nigam Says:

    It has to be unc path. 2013 does not accept c:

  38. TBone Says:

    @ Prabhat Nigam

    Well I was running script from 2007 not 2013. I used c: and it worked fine, but thank you for a quick response. I now am getting to many corrupt items when running

    New-PublicFolderMigrationRequest -SourceDatabase (Get-PublicFolderDatabase -Server servername) -CSVData (Get-Content C:\temp\Mapgen.csv -Encoding Byte)

    What’s the parameter to allow multiple bad items?

  39. Prabhat Nigam Says:


    You might also need AcceptLargeDataLoss

  40. Doug Says:

    Thanks for the article.

    I have follow all the instrustions. The replication status Failed after abount an hour. Any suggestion would be greatly appreciated.

  41. Prabhat Nigam Says:

    This article very well as this is a tested article.
    I would like to know on which step you got replication failed.
    My first thought is any firewall.

  42. Brandon Says:

    Best article I found, thank you for taking the time to document.

    My issues: when I initiated New-PublicFolderMigrationRequest it ended up having an error. In order to get it to work I had to append “-BadItemLimit 1000” to get it to finally complete (however I did check the log to see that there were no missing items and 0byte missing), still not sure how I’d correct the errors it had.

    I’m also having the issue of “The public folder database ‘Public Folder Database’ contains folder replicas.”. I’m trying to find all links to the public folder database in ADSI Edit before removing it with that method (currently I removed my PF’s from the databases) via

    When I do a Get-PublicFolder command it errors out “There is no existing PublicFolder that matches the following Identity: ‘\’.” although Get-PublicFolderStatistics shows the folder items that got migrated and are still stuck on this machine (the storage group and database are the same as before and on the other server it shows the owner). How would you delete these remaining items? I’m assuming this is what’s keeping the DB from being removed.

  43. Prabhat Nigam Says:

    Bad Items can be corrupted items which can only deleted or left like this.

    If you are able to see any access all PFs from 2013 mailboxes then I would not mind removing it from ADSIEdit.

  44. TC Says:


    Great how-to!

    However under my V14\scripts directory, I don’t have Export-PublicFolderStatistics.ps1 or PublicFolderToMailboxMapGenerator.ps1.

    Can I get them from somewhere? #Stuck.


  45. Prabhat Nigam Says:

    Check on 2013

  46. TC Says:

    Thank you!
    All went through successfully and I can see my public folder mailbox, but I can’t see the Public folder itself…I don’t entirely understand it either…Any help would be great thanks.

  47. Prabhat Nigam Says:

    Where are you checking?

  48. TC Says:

    Under Public folders via ECP.

  49. Prabhat Nigam Says:

    Check in the shell

  50. Siva Says:

    Hi ,

    I am trying to migrate exchange server 2007 public folder to exchange online(office 365), actually I have tried many article to configure but I couldn’t able to do successfully. Can you please tell me how to do the migration for the same.


Leave a Reply

Notify me of followup comments via e-mail. You can also subscribe without commenting.

migrate exchange to office 365