Public folders are a hidden gem of Exchange Server and provided a way of co-working when today’s solutions were still a thing of the future. After migrating your legacy public folder hierarchy from Exchange Server 2010 to modern public folders in Exchange Server 2013 or 2016 you hoped that there will be no new public folder nightmares waiting for you.
Even with on-premises modern public folders, you might encounter situations where you have to perform tasks maintaining and preparing for public folder migration to Exchange Online or for moving public folder mailboxes to Exchange Server 2019. The Exchange Product Group provides a PowerShell script to prepare your modern public folder hierarchy, the SourceSideValidations.ps1 script.
It is important that you use the script available in the Exchange Server Support Script library. Some blog posts reference a Microsoft download location that gives you an older version of that script. Version 1 has some performance flaws. So please ensure to always use the version from the Support Script library.
The script checks for the following
- Orphaned Access Control List entries
- Empty public folders
- Public folder names containing unsupported characters for migration: @ /
- Mail-enabled system folders
- Public folder size limits for Exchange Online
The script support threading, which allows gathering a large public folder hierarchy and its folder statistics quickly.
The most time-consuming part is analyzing the public folder ACL entries.
When you move public folder mailboxes from Exchange Server 2016 to Exchange Server 2019 you might encounter a situation where the moves fail due to too many bad items. You will find that there aren’t any real “items” affected, but the public folder ACLs. In that case, the SourceSideValidations.ps1 script can help you identify the ACL entries responsible for those errors.
You can clean up the folder ACLs using the following steps. Ensure to view the results of step 1 before removing invalid permissions in step 2.
# Step 1: Gather the validation data# Run SourceSideValidations.ps1.SourceSideValidations.ps1# Step 2: Clean up orphaned ACL entries# .SourceSideValidations.ps1 -RemoveInvalidPermissions
If the removal fails with the error message “Multiple objects with legacy DN ADCDisabledMail were found”, you should read this blog post.
- SourceSideValidations – PowerShell script
- Microsoft Exchange Server Support Scripts
- Making your public folder migrations faster and more reliable
Enjoy Exchange Server!