Where to Migrate a Public Folder Calendar Before EWS Goes Away
Shared team calendars living in Exchange Online (Microsoft 365 cloud) public folders are on borrowed time. Starting October 1st, 2026, Microsoft begins switching EWS off in Exchange Online, tenant by tenant, and on April 1st, 2027, it is fully and permanently disabled, with the tenant-level switch itself removed.
Public folders are the sharpest edge of that change, because Microsoft Graph, the replacement API, has no public folder support at all. Any scheduling tool, sync service, or script that reads or updates a public folder calendar today will simply stop working. The fix is to move the calendar into a shared mailbox, which Graph reads and writes natively.
Here are the steps required:
1. Export the public folder calendar
Use classic Outlook for Windows, which has the most complete public folder support.
- Open the Folder pane, expand Public Folders → All Public Folders, and locate the calendar.
- Go to File → Open & Export → Import/Export → Export to a file.
- Choose Outlook Data File (.pst), select the calendar folder, and save it.
Export to PST format, not ICS or CSV. Those formats flatten recurring series into single events or drop attendees, categories, and attachments. PST fully preserves recurrence patterns and exceptions.
One thing PST won’t preserve: meeting tracking. Copied meetings keep the original organizer, so responses from attendees won’t update in the new location. For calendars that are mostly appointments, bookings, or on-call rotations, this is a non-issue. For calendars full of live meetings, plan to recreate anything still in the future from the shared mailbox itself.
2. Create the shared mailbox
In the Microsoft 365 admin center, go to Teams & groups → Shared mailboxes → Add a shared mailbox, name it (for example, “Team Calendar”), and add members.
Or using the following Exchange Online PowerShell script:
Connect-ExchangeOnline
New-Mailbox -Shared -Name "Team Calendar" `
-DisplayName "Team Calendar" -Alias teamcalendar
Add-MailboxPermission -Identity teamcalendar `
-User [email protected] -AccessRights FullAccess -InheritanceType All
If the calendar exists to book something physical (a meeting room, a vehicle, shared equipment), create a room or equipment mailbox instead. You get automatic booking acceptance and conflict rejection, and Graph treats it the same way.
3. Set calendar permissions
Full Access automaps the mailbox into Outlook, but calendar-level permissions are what control who can actually add and edit events:
Set-MailboxFolderPermission -Identity teamcalendar:\Calendar `
-User [email protected] -AccessRights Editor
Set-MailboxFolderPermission -Identity teamcalendar:\Calendar `
-User Default -AccessRights Reviewer
Use Editor for people who manage the schedule, Reviewer for everyone who just needs to see it, and AvailabilityOnly if the rest of the organization should see free/busy without details.
You can import straight into the shared mailbox’s default Calendar folder, or right-click the mailbox in Outlook, choose New Folder, and set Folder contains to Calendar Items if you want to keep several calendars side by side.
4. Import the events
- In classic Outlook, go to File → Open & Export → Open Outlook Data File and open your PST.
- Switch to the Calendar view and open the calendar inside the PST.
- Change the view to List (View → Change View → List), select all with Ctrl+A, and copy the items into the shared mailbox calendar. The list view matters: it lets you grab the whole series rather than individual occurrences.
- Spot-check a few recurring events and any that had modified occurrences, plus anything spanning a time zone change or DST boundary.
Point your apps to the new folder
Update any integrations to read from the shared mailbox instead of the public folder. Finally, set the old public folder to read-only for a transition period so nobody keeps editing the stale copy, and remove it once everyone has switched over.
