Thursday, January 26, 2017

Attempting to execute Create-PublicFolderMailboxesForMigration.ps1 to create target public folder mailboxes on Exchange 2016 fails

I’ve noticed that many of my clients and colleagues have been calling me about a specific step during the migration of Exchange 2010 Public Folders to Exchange 2016.  Given the frequency of the calls I’ve gotten, I thought it would be a good idea to write this short blog post about it.


You’re in the process of migration from Exchange Server 2010 to 2016 and have gotten to the public folder portion of the migration.  The following TechNet article is what you are using for the migration:

Migrate public folders from Exchange 2010 to Exchange 2016

You’ve been able to execute all of the steps but notice that as you approach Part 4 and attempt to execute Create-PublicFolderMailboxesForMigration.ps1 to create target public folder mailboxes on Exchange 2016:


… the cmdlet fails with the following error:

[PS] C:\PFMigration>.\Create-PublicFolderMailboxesForMigration.ps1 -FolderMappingCsv PFMailboxes.csv -EstimatedNumberOfC


C:\PFMigration\Create-PublicFolderMailboxesForMigration.ps1 : Existing Public Folder deployment is not locked for migra

tion. The script cannot continue unless all Public Folder mailboxes are deleted first. Please, make sure the existing m

ailboxes have no data before deleting them.

At line:1 char:47

+ .\Create-PublicFolderMailboxesForMigration.ps1 <<<< -FolderMappingCsv PFMailboxes.csv -EstimatedNumberOfConcurrentUs


+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException

+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Create-PublicFolderMailboxesForMigrati


[PS] C:\PFMigration>Get-PublicFolder



One of the most common reasons I find administrators encounter this error during the public folder migration process is because they are executing the Create-PublicFolderMailboxesForMigration.ps1 cmdlet on the Exchange 2010 server.  All the steps prior to Part 4 is usually executed on the Exchange 2010 server so some administrators forget that they need to execute this cmdlet to create new Exchange 2016 public folders on the new Exchange 2016 Management Shell instead:


Executing the Create-PublicFolderMailboxesForMigration.ps1 cmdlet should complete successfully and output the following:

PS] C:\PFMigration>.\Create-PublicFolderMailboxesForMigration.ps1 -FolderMappingCsv PFMailboxes.csv -EstimatedNumberOfC


Do you want to run software from this untrusted publisher?

File C:\PFMigration\Create-PublicFolderMailboxesForMigration.ps1 is published by CN=Microsoft Corporation, OU=MOPR,

O=Microsoft Corporation, L=Redmond, S=Washington, C=US and is not trusted on your system. Only run scripts from trusted


[V] Never run [D] Do not run [R] Run once [A] Always run [?] Help (default is "D"): A

Creating a new session for implicit remoting of "Get-OrganizationConfig" command...

Public Folder mailbox updates.

Creating 5 Public Folder mailbox(es) and updating 0. Total mailboxes to serve hierarchy will be 1. Would you like to


[Y] Yes [N] No [?] Help (default is "Y"): Y

Total mailboxes created: 5. Total mailboxes updated: 0. Total serving hierarchy: 1.

Here is a list of Public Folder mailboxes created:

Name IsServingHierarchy IsMigrationTarget

---- ------------------ -----------------

Mailbox1 False True

Mailbox2 True True

Mailbox3 False True

Mailbox4 False True

Mailbox5 False True

[PS] C:\PFMigration>


Quite obvious when you realize it but we all tend to get a bit lost when we’re too immersed into a deployment at times.


Anonymous said...

Thank you Terence.

Tanya said...

Duh... thank you! Appreciate your clear and concise help with this one!

Anonymous said...

Nice tip. Thanks!