Migrating Jira and Confluence together

Many organizations run Jira and Confluence tightly linked — issues reference pages, pages embed live issue status. When migrating away from Atlassian, these links need to keep working, not just the data on either side.

Principle

  • Links between the two keep working at all times, except briefly during the moment an individual item is being migrated.
  • Migrations of Jira and Confluence content can run on completely different timelines. You don’t need to migrate both at once, or in lockstep, for links to stay intact.
  • OpenProject is responsible for everything related to Jira and its content and migration.
  • XWiki is responsible for everything related to Confluence and its content and migration.

Your options for Confluence

Your situation What happens
You migrate Confluence to XWiki Links stay intact automatically via redirects, whether Jira and Confluence migrate together or on separate schedules. See below.
You keep Confluence (only migrating Jira) An OpenProject–Confluence integration lets your Jira → Confluence links keep working unchanged. (In development.)
You migrate Confluence to another tool Not currently supported.

Remarque

The rest of this guide covers the first scenario (migrating Confluence to XWiki alongside Jira) only.

Goal

Today, Confluence and Jira are tightly integrated — issues link to pages and vice versa. After migration, XWiki and OpenProject provide that same level of integration. Links between the two keep working throughout the transition, not just once both migrations are complete.

flowchart TB
    subgraph Source["Source (today)"]
        direction LR
        Confluence["Confluence"]
        Jira["Jira"]
        Confluence <--> Jira
    end
    subgraph Target["Target (after migration)"]
        direction LR
        XWiki["XWiki"]
        OpenProject["OpenProject"]
        XWiki <--> OpenProject
    end
    Source --> Target

    classDef atlassian fill:#e9f0fb,stroke:#0052CC,stroke-width:1px,color:#0052CC;
    classDef openproject fill:#e8eef2,stroke:#0D4A73,stroke-width:1px,color:#0D4A73;
    classDef xwiki fill:#e6f4fa,stroke:#0087CB,stroke-width:1px,color:#0087CB;
    classDef neutral fill:#FFFFFF,stroke:#000000,stroke-width:1px,color:#000000;

    class Confluence,Jira atlassian
    class OpenProject openproject
    class XWiki xwiki
    class Source,Target neutral

Because the two migrations run independently, a link between an issue and a page can be in any of four states at any given time — and different links can be in different states simultaneously:

Link source Confluence (not yet migrated) XWiki (migrated)
Jira (not yet migrated) Unchanged — works as it always has Jira issue links to a page already moved to XWiki
OpenProject (migrated) OpenProject work package links to a page not yet migrated Both sides migrated — the end state

All four combinations work without any manual intervention.

Migration happens in two steps, and you control when the second one runs:

Step 1 — Migrate content, keep old links working. A redirect component is added at both the Jira and the Confluence addresses. Every request to either address is automatically routed to the right place: to the original system if the content hasn’t moved yet, or to the new system if it has. For example, if a Confluence page links to jira.company.com/browse/FOO-1 and that issue has since been migrated, the redirect component sends the reader straight to the corresponding OpenProject work package instead — no broken link, no page edit required. This works the same way in reverse, and regardless of whether Jira and Confluence migrate together or on entirely separate schedules.

At the same time, each side’s native integration is swapped for its equivalent on the new system: Confluence’s built-in Jira integration is replaced by XWiki’s Jira plugin, and Jira’s built-in Confluence integration is replaced by OpenProject’s Confluence integration. This keeps cross-references (like an issue embedded in a page) rendering correctly throughout the transition, not just plain links.

flowchart TB
    C["<b>Confluence</b>"]
    R{"<b>Redirect Component</b><br/>Has issue <code>FOO-1</code> been<br/>migrated yet?"}
    O["<b>OpenProject</b>"]
    J["<b>Jira</b>"]
    Done(["content of <code>FOO-1</code>"])

    C -->|calls link to <code>https://jira.company.com/browse/FOO-1</code>| R
    R -- "Yes" --> O
    R -- "Not Yet" --> J
    O -->|serves the migrated work package| Done
    J -->|serves <code>FOO-1</code> as it always has| Done

    classDef atlassian fill:#e9f0fb,stroke:#0052CC,stroke-width:1px,color:#0052CC;
    classDef openproject fill:#e8eef2,stroke:#0D4A73,stroke-width:1px,color:#0D4A73;
    classDef neutral fill:#f5f5f5,stroke:#333,stroke-width:1px,color:#333;

    class C,J atlassian
    class O openproject
    class Done,R neutral

Step 2 — Update links to their final destination (optional, on demand). Once you’re ready, an admin can trigger a cleanup step that rewrites old links to point directly at their final destination — e.g. straight to the OpenProject work package or XWiki page, instead of via the redirect. This step can run incrementally and independently on either side — you don’t need both systems ready at once, and you can do it project by project or space by space. This is optional: everything already works without it.

flowchart
    subgraph Source["Source"]
      direction LR
      subgraph OPC["OpenProject"]
          OPCI["Confluence integration"]
      end
      subgraph XW1["XWiki"]
          XW1I["OpenProject plugin"]
      end
      
      OPC <--> XW1
    end

    subgraph Target["Target"]
      direction LR
      subgraph OPXW["OpenProject"]
          OPXWI["XWiki integration"]
      end
      subgraph XW2["XWiki"]
          XW2I["OpenProject plugin"]
      end
      OPXW <--> XW2
    end

    Source -->|<b>Rewrite Links</b><br/><code>confluence.com/pages/65538</code> => <code>xwiki.com/Space/Page</code>| Target

    
    classDef atlassian fill:#e9f0fb,stroke:#0052CC,stroke-width:1px,color:#0052CC;
    classDef openproject fill:#e8eef2,stroke:#0D4A73,stroke-width:1px,color:#0D4A73;
    classDef xwiki fill:#e6f4fa,stroke:#0087CB,stroke-width:1px,color:#0087CB;
    classDef neutral fill:#FFFFFF,stroke:#000000,stroke-width:1px,color:#000000;

    class OPC,OPXW,XW1I,XW2I,R openproject
    class OPCI atlassian
    class XW1,XW2,OPXWI xwiki
    class Source,Target neutral

Current limitations

  • Confluence pages that embed live search results from Jira (via JQL) have limited support today. Mapping these to an equivalent OpenProject filter is planned but not yet finalized.
  • Distinguishing whether a link should point at Confluence or XWiki during the transition period is being refined, since the two systems return different content for the same kind of link.
  • The OpenProject Confluence integration is still in development.