Key takeaway: When a legacy Public Folder is really just a shared email archive, you do not need Microsoft's full Public Folder migration. Export it to PST, land it in a mailbox, move that mailbox to Microsoft 365, and convert it to a Shared Mailbox. You keep the content and rebuild the access, which is often a cleaner end state than carrying a legacy hierarchy into the cloud.
In This Article
- When This Method Fits
- What You Will and Won't Preserve
- Step 1 — Inventory the Public Folders
- Step 2 — Export the Content to PST
- Step 3 — Create the Temporary Mailbox
- Step 4 — Import the PST
- Step 5 — Migrate the Mailbox to Microsoft 365
- Step 6 — Convert to a Shared Mailbox
- Step 7 — Handle Mail-Enabled Public Folders
- Step 8 — Calendars, Contacts, and Forms
- Step 9 — Validate and Decommission
- Troubleshooting
Microsoft's official Public Folder migration is built for large, complex hierarchies: batch migration, a folder mapping file, and hybrid coexistence. For many organizations that is far more than the job needs. Often the real request is simply: “Give me all my old emails in Microsoft 365 and let the team access them.”
Experienced Exchange admins have used a simpler route since the Exchange 2003 and 2007 days: Public Folder → PST → temporary mailbox → migrate → Shared Mailbox. This guide walks through it, then covers what you lose so you can decide whether it fits.
When This Method Fits
Use it when the Public Folder is essentially a shared email repository:
- A department archive such as Accounting, Contracts, or Customer Correspondence
- Mostly mail items, with some contacts or calendar entries
- A small-to-medium data set, ideally under 50 GB per destination
- No custom forms, workflow applications, or complex folder-level permission schemes
When to skip it: If you have thousands of folders, need the hierarchy to remain Public Folders, or have applications that depend on Public Folder behavior, use Microsoft's official Public Folder migration instead.
What You Will and Won't Preserve
| Preserved | Not preserved (plan to rebuild) |
|---|---|
| Message content, attachments, and dates | Public Folder permissions |
| Folder structure, in most cases | Mail-enabled folder addresses (handled in Step 7) |
| Contacts, calendar items, and posts as items | Custom forms and Outlook-based applications |
| Some folder metadata, which can flatten depending on how the PST was exported |
STEP 1 Inventory the Public Folders
Capture everything before you touch anything. Run this in the Exchange Management Shell:
# Folder tree with sizes
Get-PublicFolder \ -Recurse -ResultSize Unlimited |
Get-PublicFolderStatistics |
Select Name, FolderPath, ItemCount, TotalItemSize |
Export-Csv C:\Migration\PF-Inventory.csv -NoTypeInformation
# Who has access today
Get-PublicFolder \ -Recurse -ResultSize Unlimited |
Get-PublicFolderClientPermission |
Select Identity, User, AccessRights |
Export-Csv C:\Migration\PF-Permissions.csv -NoTypeInformation
# Which folders are mail-enabled
Get-MailPublicFolder -ResultSize Unlimited |
Select Name, Alias, PrimarySmtpAddress, EmailAddresses |
Export-Csv C:\Migration\PF-MailEnabled.csv -NoTypeInformationThese three CSV files are your rebuild checklist for Steps 6 and 7. Keep them.
STEP 2 Export the Content to PST
Exchange has no cmdlet for exporting Public Folders to PST. New-MailboxExportRequest works on mailboxes only, so the export is done through Outlook.
- In Outlook, open the folder pane and expand Public Folders → All Public Folders.
- Choose File → Open & Export → Import/Export → Export to a file → Outlook Data File (.pst).
- Select the top-level Public Folder you want to move and tick Include subfolders.
- Save to a staging file share, for example
\\fileserver\migration\Accounting.pst.
- One PST per destination. If three folder trees will become three Shared Mailboxes, make three PSTs.
- Use Unicode PSTs. The old Outlook 2003 (ANSI) format caps at 2 GB.
- Use the export wizard rather than dragging items. It preserves folder structure more consistently.
- Check item counts. Compare the PST against
PF-Inventory.csvbefore moving on.
STEP 3 Create the Temporary Mailbox
Create a throwaway mailbox on-premises to receive the content. Give it the name you want the Shared Mailbox to have in the end, since the name carries through the migration.
New-Mailbox -Name "PF-Accounting-Temp" -UserPrincipalName pf-accounting@contoso.com `
-Database "DB01" -Password (Read-Host -AsSecureString "Password")STEP 4 Import the PST into the Temporary Mailbox
On Exchange 2010 and later, import server-side. The PST must be on a UNC path that the Exchange Trusted Subsystem group can read, and your account needs the Mailbox Import Export role.
New-MailboxImportRequest -Mailbox "PF-Accounting-Temp" `
-FilePath "\\fileserver\migration\Accounting.pst" `
-TargetRootFolder "Imported Public Folders"
Get-MailboxImportRequest | Get-MailboxImportRequestStatistics-TargetRootFolder keeps the content in its own folder instead of merging it into the mailbox root, which makes the result easier to audit. If server-side import is unavailable, open the PST in Outlook with the temporary mailbox profile and copy the content over.
STEP 5 Migrate the Mailbox to Microsoft 365
Move the temporary mailbox with whichever mailbox migration path you already use:
- Hybrid:
New-MoveRequestor an Exchange admin center migration batch. This is the cleanest option. - Cutover or staged migration: include the temporary mailbox in the batch if it is part of a larger migration.
- IMAP: a last resort, because it loses structure.
Wait for the batch to complete and verify the item counts in Exchange Online.
Shortcut without hybrid: If you have no hybrid setup and the on-premises server is simply being retired, skip Steps 3 to 5. Create the Shared Mailbox in Exchange Online first (Step 6), then upload the PST directly into it with the Microsoft Purview PST import service (network upload with AzCopy, or drive shipping). You end up in the same place with less on-premises plumbing.
STEP 6 Convert to a Shared Mailbox
Once the mailbox is in Exchange Online, convert it:
Connect-ExchangeOnline
Set-Mailbox -Identity pf-accounting@contoso.com -Type SharedThen rebuild access from PF-Permissions.csv:
Add-MailboxPermission -Identity pf-accounting@contoso.com `
-User jsmith@contoso.com -AccessRights FullAccess -AutoMapping $true
# Only if people need to send as the shared mailbox
Add-RecipientPermission -Identity pf-accounting@contoso.com `
-Trustee jsmith@contoso.com -AccessRights SendAsUse security groups instead of individual users wherever possible, so future access changes are a single edit.
Licensing: a Shared Mailbox needs no license while it stays under 50 GB and does not need an online archive or litigation hold. Above that, assign an Exchange Online Plan 2 license. After conversion, remove the temporary user's license and block sign-in on the account:
Connect-MgGraph -Scopes User.ReadWrite.All
Update-MgUser -UserId pf-accounting@contoso.com -AccountEnabled:$falseSTEP 7 Handle Mail-Enabled Public Folders
If a Public Folder received email, its address has to move too, or senders will get bounces. This is the step people forget.
- From
PF-MailEnabled.csv, note every address for the folder. - Disable the mail-enabled folder on-premises so the address is released:
Disable-MailPublicFolder -Identity "\Accounting". - Add the addresses to the Shared Mailbox:
Set-Mailbox pf-accounting@contoso.com -EmailAddresses @{add="accounting@contoso.com"}. - If mail flow still passes through on-premises Exchange, confirm the domain and connectors route that address to Microsoft 365.
- Send a test message to the old address and confirm it lands in the Shared Mailbox.
STEP 8 Calendars, Contacts, and Forms
- Public Folder calendars: a Shared Mailbox calendar works for a shared team calendar. For rooms or equipment, convert to a resource mailbox instead with
Set-Mailbox -Type Room(orEquipment) and configure booking options. - Contacts folders: these import as a Contacts folder. Share it with the people who need it, or create mail contacts if you want entries in the address list.
- Content with a single owner: leave it as a regular user mailbox and skip the Shared Mailbox conversion.
- Custom forms and applications: these will not survive. Recreate the process in SharePoint lists, Microsoft Lists, or Power Apps.
STEP 9 Validate and Decommission
Before you delete anything:
- Item counts match the Step 1 inventory, within an explainable difference
- Spot-check 10 to 20 messages with attachments, including the oldest ones
- The Shared Mailbox auto-maps in Outlook for the right users
- Mail sent to each mail-enabled address arrives
- Users have tested sending as the Shared Mailbox
- PST files are kept for 30 to 90 days as a fallback, and the CSV files are kept permanently
Only then remove the Public Folder data and the temporary objects.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| Import request fails with access denied | The PST share does not grant Exchange Trusted Subsystem read/write |
| Folder structure collapsed into one folder | The PST was created by dragging items instead of using the export wizard |
| Shared Mailbox is not visible in Outlook | Auto-mapping is off or has not refreshed. Wait about an hour or add the mailbox manually |
| Mail to the old address bounces | The mail-enabled folder still owns the address (Step 7), or the domain routes to the wrong place |
| Mailbox suddenly asks for a license | It went over 50 GB, or has an archive or hold enabled |
For a Public Folder that is really a shared email archive, the PST route is a straightforward way to a clean end state: inventory first, export through Outlook, land the content in a mailbox, migrate, convert to a Shared Mailbox, then rebuild permissions and move the email addresses. If your Public Folders carry applications, forms, or a large hierarchy, use Microsoft's official migration instead.