Skip to content

v2.1.0

Latest

Choose a tag to compare

@Theroxat Theroxat released this 09 Nov 12:22
· 2 commits to main since this release
977134b

Migrate a whole Microsoft 365 tenant from one screen, connected in two clicks, and clean up duplicates afterwards.

✨ Highlights

  • Microsoft 365 tenant migration. Add a tenant once in Settings, Servers, then pick its mailboxes on one screen, side by side with the target mailboxes. Each mailbox shows its state (ready, linked, missing on the target, conflict…) and what will be carried: mail, calendar, contacts, tasks. Start a batch and run the final resync from the same screen. Mailboxes are linked by Entra object ID, so the final resync still works after the domain has left the tenant.
  • Connect with Microsoft. A Global Administrator signs in with a device code. mccb then creates the "mccb migration" application in the client tenant, grants admin consent, adds a one-year secret and tests the tenant. You no longer register an app by hand (that option is still there). Self-hosters can use their own bootstrap app with M365_BOOTSTRAP_CLIENT_ID.
  • Choose the destination by hand. On the tenant screen, send a mailbox to another account of the target server, or to a new one typed with its password.
  • Duplicates tab. Finds duplicate messages, events and contacts folder by folder, using strict criteria. The analysis only reads; removal is permanent, needs a confirmation and always keeps one copy of each group. See Remove duplicates.
  • Calendars keep their shape on CalDAV and CardDAV. Each source calendar, address book and task list goes to its own collection, found by name or created; the default one goes to the default collection. Read-only calendars that Outlook or Google generate (holidays, birthdays) are skipped.

🛠️ Fixed

  • The final resync from Microsoft 365 no longer fails with HTTP 400 "Parsing OData Select and Expand failed", including the first resync after a full copy.
  • Events written to MDaemon are found by the final check.
  • A collection the server lists but refuses to open is reported clearly, instead of being "created" again as "PST Import".
  • A folder that could not be created now ends the job as done with errors.
  • The copy button works inside dialogs and over plain HTTP. The server test no longer reports DAV as working when it is disabled, and offers to enable it.

⬆️ Upgrading

The project moved to the selfhostr organisation. In your docker-compose.yml, change ghcr.io/yetysw/mccb to ghcr.io/selfhostr/mccb, back up ./data, then run docker compose pull && docker compose up -d. The database is upgraded automatically. Details: upgrade guide.

🐳 Get it

docker pull ghcr.io/selfhostr/mccb:2.1.0

Full changelog: v2.0.0...v2.1.0