Migrer hors de Confluence — phase par phase.
Les migrations Confluence se jouent sur trois spécificités : le format de stockage est du XHTML avec une forêt de macros `ac:` qui ne traduisent pas proprement en Markdown, les restrictions de page héritent via la hiérarchie d'espace d'une manière non-obvious, et le contenu passe sur MDX-on-disk + un vrai index de recherche (Typesense ou Postgres tsvector) qui remonte enfin des résultats pertinents — la complainte la plus fréquente sur Confluence.
Les phases, taillées pour Confluence
Chaque phase ci-dessous, c'est la version spécifique Confluence de notre démarche standard. Même structure à chaque mission, des détails par SaaS.
Spaces + restriction audit
1-2 weeksWe inventory every space, every restricted page, every Marketplace macro in active use, and the URL hierarchy that external systems (engineering docs links, customer-facing help articles) depend on.
✓List every space, its admin, and the number of pages + total view count over 90 days✓Identify spaces that haven't been viewed in 90 days — most large Confluences have 30-40% archive candidates✓Audit page restrictions (view + edit) and surface the inheritance model✓Catalogue Marketplace macros in use (Drawio, Scroll, Refined, etc.) — each needs a replacement strategy✓Map URLs to preserve: page IDs, slugs, /wiki/spaces/{KEY}/pages/{ID}/{slug} structureCe que vous repartez avecA Space Inventory + restriction map + macro replacement plan + the URL preservation list.
Content model + storage strategy
1 weekPages become MDX files in a Postgres-backed CMS, with version history preserved. The `ac:` storage format gets converted to MDX with our own components replacing the most-used macros (Drawio → mermaid + image, panel → callout component, etc.).
✓Design `pages` table (parent_id, space_id, slug, mdx_source, version, restricted_to)✓Design `page_versions` table to preserve history✓Preserve Confluence `page_id` as a column for backwards-compatible URLs✓Map the macro inventory: Drawio → mermaid + S3 image, Scroll → version-controlled MDX branches, Refined → first-class theming, info/note/warning panels → our own callout component✓Plan search: Typesense (or Postgres tsvector) over MDX + metadata + a 1-hour reindexCe que vous repartez avecSchema migrations + an MDX component library + a documented macro replacement table.
Extract via Confluence REST API
2 weeksConfluence Cloud's REST API exposes pages, spaces, comments, attachments and permissions. The wrinkle is that the storage format is XHTML with `ac:` macro tags — converting to MDX is the bulk of the engineering work.
✓Authenticate via OAuth 2.0 (3LO) or API token with HTTP Basic✓Paginate `/wiki/api/v2/pages` per space (the v2 API is cleaner than v1)✓For each page, GET the storage-format body (XHTML with `ac:` macros)✓Extract attachments, comments, labels and version history per page✓Extract space permissions + page restrictions separately✓Run the XHTML → MDX converter (the hard part — start with the 10 most common macros, iterate)Ce que vous repartez avecA re-runnable extract pipeline + an MDX corpus + a macro-conversion report showing coverage.
Build + weekly demos
4-6 weeksA Next.js wiki that's faster than Confluence on every dimension that matters: search returns in 80ms, page loads in 200ms, edits commit to git, and restrictions are typed permissions.
✓Build the wiki: MDX rendering with the macro-replacement components✓Full-text search via Typesense or Postgres tsvector — relevance ordering, instant suggestions✓Page editor with live MDX preview (authors edit Markdown, designers own CSS)✓Permission model: 4-5 named roles + space-level + page-level restrictions (rows in a typed table)✓Whiteboards / Databases replaced with first-class features or dropped (most teams don't need them)Ce que vous repartez avecA working wiki on staging with the full content corpus, used by your team for one week as the primary documentation source.
Parallel run + URL preservation
2 weeksBoth Confluence and the new wiki live for two weeks. Search points at the new wiki; the old Confluence is editable for a final corrections window. URL redirects from the legacy `/wiki/spaces/{KEY}/pages/{ID}` get tested exhaustively.
✓Nightly delta extract: pages updated in Confluence sync into the new wiki✓Set up 301 redirects from every legacy Confluence URL to the new path✓Train authors on the new editor in two 45-minute sessions, recorded✓Disable new-page creation in Confluence (existing edits still allowed)✓Verify the redirect map preserves every external link from engineering docs, runbooks, customer helpCe que vous repartez avecA reconciliation report on page counts per space + a verified 301 redirect map covering 100% of indexed URLs.
Cutover + Confluence read-only
1 day + 90-day fallbackDNS for the wiki subdomain flips to the new product, Confluence goes fully read-only, Marketplace apps get cancelled, the Atlassian Cloud bill drops by the Confluence portion.
✓Cut SSO + DNS to the new wiki✓Lock Confluence to read-only (revoke edit permissions space-wide)✓Cancel Marketplace apps (Drawio, Scroll, Refined, etc.) in writing✓Hold a 90-day Confluence read-only window for compliance / regret✓Cancel Confluence Cloud subscription auto-renewalCe que vous repartez avecCutover Runbook + cancelled Marketplace subscriptions + a reduced Atlassian bill the same month.
Les API Confluence qu'on tape vraiment
Les endpoints concrets qu'on utilise pour extraire vos données pendant la phase de parallel run. Les scripts d'extraction restent — ils resservent à chaque renouvellement.
GET /wiki/api/v2/pages?limit=250GET /wiki/api/v2/pages/{id}?body-format=storageGET /wiki/api/v2/pages/{id}/versionsGET /wiki/api/v2/spacesGET /wiki/api/v2/pages/{id}/attachmentsGET /wiki/api/v2/pages/{id}/footer-commentsGET /wiki/api/v2/pages/{id}/labelsGET /wiki/rest/api/space/{spaceKey}/permissionLes pièges propres à Confluence
Ce qu'on a appris à la dure (ou ce que la doc minimise). On les met sur la table dès le kick-off, comme ça personne n'est surpris en semaine 6.
- ⚠Storage format is XHTML with `ac:storage-macro` tags — there's no built-in Markdown export that preserves macros. Build the converter incrementally, starting with the 10 most common macros (info, note, panel, code, image, drawio, jira, expand, layout, table-of-contents).
- ⚠Page restrictions inherit through the space hierarchy in non-obvious ways: a page can be unrestricted but live under a restricted ancestor. Flatten the effective restrictions per page at extract time.
- ⚠URL preservation is critical because Confluence URLs are deeply embedded in engineering Slack channels, runbooks, customer support replies and external documentation. The 301 redirect map needs to cover both numeric `/pages/{ID}/{slug}` and short-link forms (`/x/{shortId}`).
- ⚠Marketplace macros (Drawio, Scroll, Refined) embed data via macro params that are app-specific. Each app needs its own extract path or you'll lose the diagram / version / theme.
- ⚠Search relevance is famously broken in Confluence — but the team is used to working around it with Google site search. Be ready for the new wiki's search to feel 'different' even when it's objectively better; train authors on it explicitly.
- ⚠Whiteboards and Databases (Premium tier) store data outside the standard page model. Decide in Phase 1 whether to migrate them or drop them — most teams don't notice when they're gone.
- ⚠Rate limits are per-tenant and burst-tolerant, but the storage-format body endpoint is slow. Parallelise by space, not globally, and cache the body to disk during conversion.
Ce qui reste en place
Une migration marche quand elle est cadrée honnêtement. Voilà ce qu'on ne touche pas — par choix.
- ·Whiteboards and Databases — replaced with native equivalents or dropped
- ·Atlassian Marketplace macros — replaced with first-class MDX components or dropped
- ·Atlassian Intelligence / AI add-ons — replaced with Claude/GPT against your own corpus
- ·Confluence Mobile app — the new wiki is mobile-responsive; no native app
- ·Jira — paired separately (see /jira/migration)
- ·Trello — separate scoping conversation
Cadrer une migration Confluence.
Dites-nous votre nombre de licences, la date de fin de contrat et les intégrations que vous ne pouvez pas perdre. On revient sous un jour ouvré avec un cadrage forfaitaire et un calendrier calé sur votre renouvellement.
Cadrer une migration Confluence
Un jour ouvré. NDA + DPA sur demande.