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:
- Downloading the migration scripts
- Preparing for the migration
- Generating the CSV files
- Creating the public folder mailboxes in Exchange 2013
- Starting the migration
- Lock the public folders for final migration (which requires some downtime)
- Finalize the migration (downtime still required)
- 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:
- The dirty little secret about migration to modern public folders
- Exchange 2013 modern public folder limitations – what next?
- Legacy Public Folders to Exchange 2013 migration tips
- Modern Public Folders Migration & Office 365
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:PFMigrationLegacy_PFStructure.xml [PS] C:PFMigration>Get-PublicFolderStatistics | Export-CliXML C:PFMigrationLegacy_PFStatistics.xml [PS] C:PFMigration>Get-PublicFolder -Recurse | Get-PublicFolderClientPermission | Select-Object Identity,User -ExpandProperty AccessRights | Export-CliXML C:PFMigrationLegacy_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:PFMigrationPFSizeMap.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 10000000000 C:PFMigrationPFSizeMap.csv C:PFMigrationPFMailboxMap.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:PFMigrationPFMailboxMap.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.
Hi,
I am planning migrate from Exchange 2010 SP3 RU29 to Exchange 2016. I dont have any user / admin created Public Folders. The way I checked this is MMC-> Add/Remove Snap-in-> Select “Public Folder Management Console Snap-in”, Click on Add -> Right Click on the Public folders Icon in the MMC and Click on Connect to Server ->
I have no content / list in the “Default Public Folders”
The “System Public Folders” has listing of : “EFORMS REGISTRY” , “OFFLINE ADDRESS BOOK” and “SCHEDULE+ FREE BUSY”
Should these be migrated OR not?
Hey Paul,
what shell command would i run if i needed to apply permissions to the public folders after they are in 2016 mailbox?
Hi Paul,
Excellent article. My question is this, we have multiple EX2010 DAGs, with each having their separate PF databases. Our EX2016 environment consists of multiple DAGs as well, one for US and one for UK. Do I have to run this same process in the US and than again in the UK in order to migrate them to 2016?
Thanks!
Hi Paul,
I bought the “Exchange Server 2010 to 2013 Migration Guide”, I followed the steps indicated in the guide. My infrastructure has two datacenters (primary and secondary) and two public folder databases in each site, I migrated the first public folder of the primary site, but I am blocked for the second public folder, I can not execute the command Create-PublicFolderMailboxesForMigration.ps1, because it asks me to specify the existing mailbox of the primary site, and for my case, I have created a mailbox for the public folder in the secondary site, What must i do to migrate the public folder of the secondary site?
Best regard.
Réda.
Hi,
Help me with the permission status. Is the permission also migrated by default.
Thanks a lot Paul. You are a champ as always. I was struggling with public folder migration from 2010 to 2016 even after referring technet docs but this page has made my job easy. Much appreciated,
Thanks,
Dinoop Thomas
Hi Paul,
I have a strange situation trying to migrate public folders from Exchange 2010 to 2016.
Migration batch created and the migration process reached the “synced” status for the 5 out of 6 public folder mailboxes on Exchange 2016. The 1 out of 5 mailboxes was in “synced with errors” state. Searching the log files I found that there was one public folder that could not be mail enabled. This public folder could not be found on Exchange 2010. Only using MFCMAPI we were able to locate it, it is under the “Root Folder” at the same level with “IPM_SUBTREE” and “IPM_NON_SUBTREE”. The problem is that there is no object in AD in order for the batch to be able to mail enable it. Also using MFCMAPI, although there is the “Delete” option and I used it, the public could not be deleted. This public folder probably left from a previous migration from Exchange 2003 to 2010 and the relevant object deleted from AD.
Is there any way to delete this public folder? “ExFolders” for Exchange 2010 also used but could not locate this public folder. Is there any other tool?
Thanks in advance,
ThanosMS.
Hey Paul,
i Have a interessting problem after migration Public Folders from 2010 to 2016.
Migration is done and PF are working fine. But now i have noticed that the auto replay for email enabled public folders doesnt work. In Exchange 2010 its been working fine.
Usermailboxes on 2016 working fine only PF cannot auto reply or forward mails.
Have you any Idea?
The Real Person!
The Real Person!
I haven’t seen that before. I’d suggest creating a new PF to test whether that works for auto-reply.
I have tested it create a new folder. Not working. On a Exchange 2016 Test System works fine. I have checked with MFCMAPI and the Rule is there, but no function, and now error. Looks strange
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
Hi Paul,
I have exchange 2010 calendar to migrate to exchange 2013, will your article will still work. Please advise.
Thank you
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.
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.
Example says 10000000, but that’s 10MB, not 10GB (size is in bytes)
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
Sorry meant executed on the Exchange 2013
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
The Real Person!
The Real Person!
Run Get-Mailbox to check that the attribute is set to False. If it is, I see no problem moving on with the rest of the process.
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.
The Real Person!
The Real Person!
My latest CSV has quotes around each of the fields, and yours doesn’t (and neither does my screenshot, but I don’t know why). So maybe it’s a simple as that.
Hi Paul,
I’ve added quotes around each of the fields and i’m still getting the same error.
The Real Person!
The Real Person!
Wonder if it could be an issue with the name of the PF that has an @ in it.
I’ll rename the PF and see if that works.
Thanks Paul
Hi Paul,
I Found the solution.
I opened the CSV in Notepad and it showed that each field had multiple quotes (“), even though the CSV when opened in Excel only showed one quote (“), so I edited the notepad version, saved it as a CSV and ran the migration and it is currently processing.
The Real Person!
The Real Person!
Yes! In Excel you should see no quotes in the CSV file 🙂
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?
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 ?
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.
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 …
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.
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?
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?
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
The Real Person!
The Real Person!
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.
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.
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.
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
“#Run this on Exchange 2010
Set-OrganizationConfig -PublicFoldersEnabled Local -RemotePublicFolderMailboxes $null”
isn’t that Exchange 2013?
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?
The Real Person!
The Real Person!
Yep, soon.
Please do because I am about to lose my job and my mind over a public folder migration. I simply cannot get the SourcePublicFolderDatabase parameter to work no matter what I try.
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
Yeah, I tried this and it still didn’t work. Any ideas?
Maybe there is another (syntax) error in the command you try to run?
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
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?
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?
The Real Person!
The Real Person!
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.
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.
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
As an FYI.. Mailboxes still on 2010 cannot access Public Folders once they are migrated to 2013.. At least in my environment..
The Real Person!
The Real Person!
That’s why they are migrated last.
Sorry Sir, regarding migrating public folders from exchange 2010 to 2013. does exchange server 2010 have to have the latest service pack updated?
The Real Person!
The Real Person!
Yes.
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
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.
The Real Person!
The Real Person!
Fix-Alias.ps1 is the solution. If you look in the comments here there’s a link to a version that also supports public folders:
https://www.practical365.com/exchange-2010-fix-alias-script/
Hi Paul,
It seems that “The serial migration method is being deprecated and will no longer be supported by Microsoft. Migrating public folders to Exchange 2013 should be done with the batch migration method. See Use batch migration to migrate public folders to Exchange 2013 from previous versions for more information.”
Does this change have any effect on your guide?
Regards,
Erik
Paul,
I have to shutdown my two DAG members at my production site this weekend to replace a controller on my SAN. Should I wait until this is completed before I start my public folder migration from 2007 to 2013 or will it resume automatically after my DAG members are back online? I don’t know exactly how long my migration process is going to take. We have around 74,000 folders and roughly 11 million emails stored in public folders. I still have to generate the csv files and map them to public folder mailboxes, but just wondering about the known maintenance window I have coming up and whether I should just wait.
Thanks,
Dave
Paul,
If I just run:
get-publicfolder -identity “TestPathPublicFolderName”
It returns the name of the folder and the parent path. If I run the full command to remove trailing spaces I get this so I do not understand because clearly it’s pulling information on that public folder.
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
Paul,
I know this is an article for 2010 to 2013 but the first step on taking a snapshot is the same for 2007. I double checked the public folder name and its correct, I even tried it with a trailing space and it returned the same error. I guess I should run the command that will remove the trailing space for all public folders. Jave you had any success with this command? If so, are there any gotchas?
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() }
The Real Person!
The Real Person!
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.
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,
The Real Person!
The Real Person!
After.
After sounds logical to me.
But after moving the Mailboxes from 2010 to 2013, can the users still access the Public Folders since the PFs are still located on the 2010?
The Real Person!
The Real Person!
Yes. But don’t just take my word for it, move a mailbox and test out your access scenarios to satisfy yourself that it works the way you need it to.
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 ?
The Real Person!
The Real Person!
You’re saying the permissions on your public folders were lost in the migration?
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.
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.
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.
The Real Person!
The Real Person!
Why not just create them as Contacts in Exchange/AD so they appear in the GAL?
Because these contact information need to remain private for only a few groups of people.
What are the pros and cons of using a shared mailbox to replace Public Folders?
The Real Person!
The Real Person!
Pros – you don’t need to deal with public folders any more.
Cons – none that I can think of.
Con: Gary in Accounting hired a college student to develop a custom form in 1998.
Thanks! Great tutorial, as usual. In my scenario, spaces in mailNickname atribute on some PF System Objects cause fails on migration, solved.