Moving from Confluence

Bringing Confluence spaces into the knowledge base whole, from Confluence Cloud, Server or Data Center: pages in every version, folders, blog posts, comments, files, restrictions and the addresses pages had.

A company leaving Atlassian brings its Confluence with its Jira. Alba Ticket reads a Confluence space export into the knowledge base and loses nothing: how the space is organised (its tree and order, folders, blog posts, drafts, archived and trashed pages) and what it says (every version of every page, comments, labels, page properties, files and their versions). Pages keep the format Confluence stored them in and are drawn from it; nobody's words are converted until somebody edits them, and the original is kept then too.

Exporting a space

In Confluence, open the space, then Space settings (Cloud) or Space tools, Content tools (Server and Data Center), Export space. Choose XML, then Full export with attachments, and download the ZIP. An administrator's site export (a backup of the whole site) holds every space and is read the same way.

Confluence Server and Data Center 7.x to 9.x and a current Confluence Cloud are what the import was built for. An older export is still read, and the analysis says it is outside that range.

Analysing the export

Under Administration, Confluence import, Upload an export. The ZIP goes straight from your browser to the workspace's storage, however large it is, and is read as soon as it is there. The analysis writes nothing. It says:

  • whether the export came from Cloud or from Server or Data Center, and which version;
  • each space with the pages, blog posts and folders it holds, and the pages by status (current, draft, archived, trashed);
  • how many versions, comments, files and file versions, people and restrictions there are;
  • the space permissions that have no equivalent here (they are kept, and not applied);
  • the Confluence macros and elements Alba does not draw yet, which appear on their pages as labelled boxes with their parameters and content, never as nothing;
  • what a Confluence export does not contain: on Cloud, whiteboards, databases, the live content of Smart Links and Loom videos; on Server and Data Center, content that apps keep in their own tables.

Importing

On the analysis's page, choose for each space whether it becomes a workspace space or a project's (a space whose key matches a project's is offered as that project's), tick Dry run to try it and roll it back, and start the import. It runs in these steps:

  • People: each person the export names is found again, by the account id another import recorded (a Jira Cloud backup carries the same Atlassian account ids), by email, or by username; anyone else becomes a placeholder who cannot log in until invited. Nobody is made twice.
  • Spaces: key, name, description, kind and owner of a personal space, status. Space permissions become the space's grants (view, edit and set permissions as read, write and manage; confluence-users as every member; a permission to nobody as anyone). Every other kind of permission is kept and marked as not applied. A project's space takes its people from the project instead.
  • Pages: pages, folders and blog posts in every status, in their tree and order, each with every version Confluence kept (author, date and version comment), labels with their prefix, and page properties. View and edit restrictions are written with the pages, so a restricted page is never readable, even for a moment.
  • Files: every version of every file, into the workspace's storage.
  • Comments: footer comments in their threads, and inline comments with the passage they are on and whether they were resolved.
  • Links: what each page mentions, so ticket keys, the Jira issue macro and links between pages work straight away.
  • Verification: see below.

Every row keeps its whole Confluence record, so nothing Confluence held is lost even where Alba has no place for it yet (likes, watchers, templates). The import can be run again, with the same export or a newer one: nothing is imported twice, new versions are added, and pages moved in Confluence move here.

Old addresses

Every address a page had in Confluence still leads to it, for anyone who may read it: /pages/viewpage.action?pageId=…, /display/KEY/Title and tiny links (/x/…) from Server and Data Center, /wiki/spaces/KEY/pages/… from Cloud, and the page's earlier titles. Open such a link on the workspace's address, or point the old wiki's host name at the workspace, and links in imported Jira tickets keep working.

Verification

The last step compares what was written with the export, space by space, and lists every difference as an error on the run's page:

  • counts of spaces, pages by kind and status, versions, comments, files and their versions, labels, restrictions and space permissions;
  • every page's parent, and the order of every set of pages;
  • every page's body, and the body of every earlier version, byte for byte against the export.

A run with no differences brought everything across.