Answer · Admin & security
How do I move Microsoft Bookings to another tenant?
Last updated 5 min read9 sources
“How do I move Microsoft Bookings to another tenant (cross-tenant migration)?”
Short answer
As of September 2026, Microsoft has no supported way to move a shared booking page to another tenant. Cross-tenant mailbox migration moves "only user-visible content in the mailbox (email, contacts, calendar, tasks, and notes)". The migration article never mentions booking mailboxes, and a Feedback Portal idea asking for Bookings migration (43 votes) notes that Bookings data isn't supported. In practice you rebuild each page in the new tenant, move customers and future appointments with Microsoft Graph, and update every link, because the booking page URL is the mailbox address and it will change.
What Microsoft supports#
- Cross-tenant mailbox migration needs a paid Cross-Tenant User Data Migration licence (a one-time fee) for each mailbox. It moves user-visible mailbox content only. Microsoft adds that it "only migrates mailbox data and nothing else". Teams meeting links in migrated calendar items stop working in the target tenant, so you have to "remove and recreate Teams meetings". Cross-tenant mailbox and calendar permissions don't carry over either.
- Booking pages aren't mentioned. A shared page is a mailbox of type
SchedulingMailboxthat holds the business details, staff, services and appointments. The migration article doesn't list that type as supported or unsupported. We haven't tested it. Even if some calendar items came across, nothing Microsoft documents says the page setup would, so don't build a plan around it. - Microsoft Graph is the route Microsoft itself suggests for copying a page. Asked whether Bookings calendars can be cloned, the FAQ says: "use the Graph API to get mailbox details, and then use those details to create a new mailbox." The Bookings API can read everything from the old page and create it again in the new tenant.
What you lose in the move#
| Item | What happens |
|---|---|
| Booking page URL | Changes. The new mailbox gets a new address, and the source and target tenants can't share a domain during the move. See how the Bookings URL is built |
| Links in confirmation emails | They point at appointments on the old page. Once you delete that page, customers can't reschedule or cancel with them |
| Teams meeting links | Old links belong to the old tenant. Recreate appointments as online meetings so the new page creates new links |
| RefID and tracking data | Stays with the old appointments. Export the TSV file first, because the export includes the tracking column |
| Appointment history and IDs | New appointments get new IDs and creation dates. Keep the old history as an export |
| Staff free/busy | Staff must exist in the new tenant before Bookings can read their calendars |
| Embeds, QR codes, flows | Anything that uses the old URL or page ID must be updated, including Power Automate flows |
Migration checklist#
Before the move (in the old tenant)
- List every page:
Get-EXOMailbox -RecipientTypeDetails SchedulingMailbox -ResultSize Unlimited. If you can't open some of them, give yourself access first. - Export each page's bookings as a TSV file. The FAQ says each export covers 120 days, so export several date ranges to cover a full history. See exporting to Excel.
- Pull the page setup with Graph (
GET /solutions/bookingBusinesses/{id}, plus/services,/staffMembers,/customQuestionsand/customers). Screenshot any settings you can't find in the output. The customer list export covers the customers call. - Write down every place each link is published: website buttons, embeds, email signatures, ads, QR codes and flows.
Rebuild (in the new tenant)
- Set the default domain for new booking mailboxes before you create any pages, so they don't end up on
onmicrosoft.com. - Create each page. You can do this in the web app, or with
POST /solutions/bookingBusinesses, which needs the delegatedBookings.Manage.Allpermission. Application permissions aren't supported for this call. Then add staff, services and custom questions (Bookings.ReadWrite.All). - Create customers, then future appointments (
BookingsAppointment.ReadWrite.All). Each appointment has anoptOutOfCustomerEmailproperty. Set it totrueif you don't want every customer to get a new confirmation during the import. Test on one appointment before you trust it. - Publish the page (
POST /solutions/bookingBusinesses/{id}/publish) and make a test booking from a private window.
Cutover
- Update every link from step 4. Tell customers who have upcoming appointments that their old manage links will stop working, and give them the new page.
- Unpublish the old page, but keep it until the last imported appointment has passed and your exports are safe. Then delete it. Deletion is permanent (see deleting a Bookings page).
The Graph Bookings API applies only to shared booking pages. Bookings with me pages have no API, so each person sets theirs up again in the new tenant.
Doing this with BookingsXP#
If your website shows the booking page through a saved BookingsXP widget, the Microsoft Bookings link is stored once in the widget settings, not in your site code. At cutover you paste the new page link there, and every embed and the hosted page at bookingsxp.com/book/<your-name> switch over together. Services and staff get new IDs in the new tenant, so check any service or staff preselects afterwards. BookingsXP doesn't move any Bookings data. See embedding options. BookingsXP is independent and not affiliated with or endorsed by Microsoft.
Questions people also ask
Sources
- Microsoft Learn: Cross tenant mailbox migration (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Bookings faq (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Delete calendar (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Booking api overview (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Bookingbusiness post bookingbusinesses (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Bookingbusiness post appointments (opens in a new tab) · learn.microsoft.com
- Microsoft Learn (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Bookingbusiness publish (opens in a new tab) · learn.microsoft.com
- Microsoft Feedback Portal (opens in a new tab) · feedbackportal.microsoft.com