This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

WikiTraccs Documentation

1 - Getting Started

This article will guide you to your first Confluence migration with WikiTraccs.

STEP ONE: Download WikiTraccs

Click to open the WikiTraccs download page: DOWNLOAD page.

Download the zip file.

Extract the zip file - it contains two folders WikiTraccs.Console and WikiTraccs.GUI.

In the WikiTraccs.GUI folder run WikiTraccs.GUI.exe.

A blue-ish window opens. We’ll call this just WikiTraccs for the remainder of this page, instead of WikiTraccs.GUI.

Congratulations, you downloaded and started WikiTraccs.

Proceed with the next step.

STEP TWO: Configure WikiTraccs and test connections

The window you opened in the previous step should look like this:

WikiTraccs main view

You will now use this view to configure everything for a first migration.

Select the Confluence base address input field and enter the base address of Confluence. This is the source system whose content will be migrated to SharePoint Online.

Under Confluence authentication type select the authentication type to use. Choose Anonymous to have WikiTraccs access Confluence as anonymous user. Choose Interactive login instead to open a browser window for logging in when starting the migration.

Select the WikiTraccs site input field and enter a SharePoint site address. Now is a good time to create this site.

Select the Try auto-detect from site button to detect the tenant ID. If this doesn’t work enter the tenant ID manually into the Tenant ID input field.

Select the Azure AD Application Client ID input field and enter the ID of the Azure AD application that WikiTraccs should use to access SharePoint.

Under SharePoint authentication type select the authentication type to use. Choose Interactive (MFA supported).

Proceed with the next step.

STEP TWO AND A HALF: Validate the configuration

Validating the Confluence connection settings

Choose the Test Confluence connection button to test the Confluence connection.

WikiTraccs will open a browser window and automatically navigate to the Confluence base address you entered in step 1. Log in, if you chose Interactive Login as Authentication type in step 1.

Wait for the browser window to close. This is important. It has to close by itself.

A message box in the blue WikiTraccs.GUI window will open and tell whether the test succeeded or not.

Validating the SharePoint connection settings

Choose the Test SharePoint connection button to test the SharePoint connection.

WikiTraccs will show the default Microsoft 365 login experience in any open browser window it finds, or open a new browser window. Select this browser window and log in. A green bar should appear, saying Authentication complete.

Now select the blue WikiTraccs.GUI window again, bringing it back to the front.

A message box will open and tell whether the test succeeded or not.

When both of those tests where successful, select the Prepare WikiTraccs site and update space inventory button. You might have to log in again.

If successful, a message box will open and show you the number of Confluence spaces that were found.

Proceed with the next step.

STEP THREE: Start the migration

First, you need to select the Confluence spaces to migrate.

Choose the Open space inventory to choose source spaces button.

A browser window opens, showing the space inventory SharePoint list. It contains information about all spaces that were found in Confluence. WikiTraccs filled this list when you selected the Prepare WikiTraccs site and update space inventory button in the previous step.

For each element in the space inventory list, choose the RequestTransformation option to include this space in the migration:

Include a Confluence space in the migration.

When you are finished, return to the WikiTraccs window.

Select the Target site input field and enter the address of the target SharePoint site. This site will be the new home for migrated pages. Now is a good point to create this site.

Select the Start transformation button to start the migration.

A new window opens - WikiTraccs.Console - and the migration begins.

Congratulations. Your first migration is running.

Look at the Site Pages library of your target SharePoint site. After a minute or so new pages should appear. Those are the transformed Confluence pages.

1.1 - WikiTraccs Hotspots

This article covers topics that are often hotspots in a demo or while evaluating WikiTraccs as migration tool.

πŸ”₯ How does a Confluence migration to SharePoint look like?

  • Watch a video showing the whole process of migrating from Confluence to SharePoint with WikiTraccs: Getting Started.
  • Get more broader input for your migration process planning and validation: Migration Playbook.

πŸ”₯ How to test WikiTraccs? How does purchasing and licensing WikiTraccs work?

  • You find everyting around the free WikiTraccs Trial Version, the paid WikiTraccs Full Edition, and much more in the FAQ section of the Pricing page.

πŸ”₯ How to get started? How to install WikiTraccs? Prerequisites?

  • The video on this pages covers the download and start of WikiTraccs: Getting Started.
  • Registering the Azure AD application - why we need it and how it can be configured - is covered in this blog post: Registering WikiTraccs as app in Azure AD.
  • Confluence versions 6, 7 and 8 are supported; with Confluence Cloud your mileage might vary (see issue #24)

πŸ”₯ What can be migrated by WikiTracs? What do the results look like?

πŸ”₯ How to migrate permissions, and metadata like page authors and dates?

πŸ”₯ What about delta migrations? How to update migrated pages?

  • WikiTraccs won’t touch SharePoint pages that are already migrated; you can delete SharePoint pages and re-start the migration and WikiTraccs will create them again. (Feature Request)

πŸ”₯ How can I stay up-to-date about new releases?

  • You should turn on notifications about new releases on GitHub. You’ll never miss a new release.
  • You can subscribe to the blog RSS feed, although this is more to be up to date in general, independent of specific releases.

🌳 How to replicate most-wanted Confluence functionality?

  • Page Breadcrumb: WikiPakk creates a dynamic breadcrumb for every page
  • Page Tree: WikiPakk offers a page tree in SharePoint that resembles what users know from Confluence

2 - Migration Process and Use Cases

This section has information about the migration process and common use cases.

2.1 - Migration Playbook

This article provides topics that should be covered in different phases of the Confluence to SharePoint migration.

Confluence to SharePoint Migration Phases

Proof of Concept Phase

  • Plan the transformation from Confluence to SharePoint
    • Organize transformation workshops or whatever other format is suitable for you
    • Identify workloads
    • Get external help if necessary
  • Focusing on SharePoint: Get to know SharePoint!
    • SharePoint and Microsoft 365 can be overwhelming for technical and non-technical people alike, especially if those services are new
    • Manually transform workloads from Confluence to SharePoint; involve key users to review the results in SharePoint
    • When it comes to pages: play around, create SharePoint pages, use web parts, try to rebuild some Confluence pages and get to know the possibilities and limitations; WikiTraccs is also bound by those
  • Test tools that integrate or migrate content
    • Think about migration vs. integration for each workload
    • Running a first test migration with WikiTraccs can help deciding if such migration tooling is an option

Decision

  • Which workloads should be migrated from Confluence to SharePoint Online?
  • Which workloads will be rebuilt manually in SharePoint? Where can a migration tool like WikiTraccs help?

Analysis Phase

  • Which spaces should be migrated? (Recommendation: clean up)
  • Which spaces should be migrated to which SharePoint sites?
  • How many spaces are to be migrated? How many pages? How many attachments (number, size)?
  • Do permissions need to be migrated? (Recommendation: no)
  • Map Confluence use cases to SharePoint
  • Define SharePoint replacements for Confluence macros (Consider how WikiTraccs handles macros)
  • Define key users for spaces that check migration results in the user acceptance test phase

Test Migration Phase

  • Run the test migration (see playbook below)
  • User acceptance test phase (UAT)
    • Let key users check the SharePoint pages that were created by WikiTraccs
  • Adjust settings, mappings etc. and remigrate content from Confluence to SharePoint as needed

Production Migration Phase

  • Run the production migration (same playbook as test migration)

Hypercare Phase

  • Provide support to users, foster end-user adoption

Migration Playbook

Prepare the Confluence to SharePoint migration

  • allow access to endpoints required for the Confluence to SharePoint migration, see Required Endpoints
  • configure Azure AD so that WikiTraccs is allowed to create content in SharePoint, see Registering WikiTraccs as app in Azure AD
  • install 3rd-party apps in SharePoint to provide replacements for Confluence macros (page tree, table of contents, …)
  • prepare a target environment for migration tests (SharePoint)
    • option: create and use a developer tenant by Microsoft
    • option: create and use test sites on the production tenant
  • provide a migration account to authenticate with SharePoint, for:
    • test environment
    • production environment
  • provide a migration account to authenticate with Confluence, for:
    • test environment
    • production environment
    • note: as of the time of this writing WikiTraccs only reads in the source Confluence environment; so it should be safe to use the production environment for tests - WikiTraccs behaves like a user that clicks really fast
  • check that key users have access to test environments
  • set the language of the migration account used to access Confluence (this defines the language the static Attachments macro snapshot is transformed to) (see this comment on how to do this)
  • create “WikiTraccs site” to hold metadata around the migration (“engine room” for WikiTraccs)
  • create target sites in SharePoint where migrated pages will be created
    • configure permissions of those sites
    • make the migration account for SharePoint site collection administrator
  • download and run WikiTraccs, and update the space inventory, see Getting Started on how to do this
  • configure the Confluence space to SharePoint site mapping via the space inventory, see How to map Confluence Spaces to SharePoint Sites
    • note: this is important to properly transform cross-space links
  • configure WikiTraccs via settings dialog
  • document the WikiTraccs settings you chose

Run the Confluence to SharePoint migration

  • check if there is a new WikiTraccs release available and if yes, update
  • run test migration (migration mode “migrate content”)
    • measure migration times
  • (optional) configure user and group mapping
    • start another migration run (migration mode “update ‘created by’ and ‘modified by’”)
  • (optional) configure permission mapping
    • start another migration run (migration mode “update permissions”)

Evaluate the results of the Confluence to SharePoint migration

  • check migration result metadata provided by WikiTraccs
  • either clean up or manually migrate Confluence pages that have more than 2 MB of text content or have overly long titles, see the Known Issues page for details.
  • check feedback from key users
  • search the documentation and get in touch if something seems not right

Repeat as needed

Repeat the test migration as needed. You can delete any SharePoint page that has been migrated from Confluence to SharePoint and restart the migration. Missing pages will be detected and remigrated.

3 - WikiTraccs Features

This article describes what WikiTraccs is capable of, and its limitations.

WikiTraccs takes the content of each Confluence page and converts it to something SharePoint can understand.

The following sections highlight what you can expect.

Confluence Spaces

WikiTraccs maintains a space inventory containing information about all spaces in Confluence, like space title and space key.

Space information is stored in a SharePoint list. You’ll instruct WikiTraccs to update this space inventory before starting a migration. WikiTraccs then fetches space information from Confluence and adds it to the list.

You’ll use the space inventory list to select spaces to transform. You can also specify which space will go to which SharePoint site.

WikiTraccs stores information about spaces with Current and Archived state. It’s up to you to select spaces for migration. Both types can be selected.

Page Content

Macros

The Known Confluence Macros article describes how WikiTraccs handles macros.

Confluence Task Lists

Task lists are transformed to a text format containing the title of the task and the state indicated by a checkbox emoji. Nested task lists are supported.

Text Formatting

Text and basic text formatting like bold, italics, underline etc. are preserved. There are formattings that can not be reflected 1:1 in SharePoint. It ultimately depends on the capabilities of the SharePoint text web part.

SharePoint has, among others:

  • limited background color support
  • not as many colors available as Confluence - WikiTraccs tries to find a similar SharePoint color, when a Confluence color is not avilable
  • limited nesting capabilities - e.g. you can apply formatting to whole nested sections of content in Confluence, something that SharePoint has limited support for

The source formatting also depends on the history of Confluence (versions, migrations), on the users and on the third party add-ons used. Thus it is an ongoing task to expand the capabilities of WikiTraccs here.

WikiTraccs contains hundreds of conversion rules that cover special cases observed over time and in Confluence instances with a long history.

In Confluence you can select sections of contents, images, headings etc. and let them link to other content. In contrast to that SharePoint just allows to put a link on text or on images.

WikiTraccs tries to de-construct complex Confluence structures. A single link coming from Confluence might be split up into multiple linked text elements plus inline images with the link attached.

When de-constructing complex linked Confluence structures is not possible in a meaningful way, WikiTraccs separates the content and the link. In this case the link will be added as additional content in the SharePoint page.

There are two types of links in Confluence:

  • Soft links, and
  • Hard links

Soft links are inserted with the link tool or from the clipboard and represent the usual way of linking within Confluence. Hard links are page addresses (URLs) copied directly into the content of a page, like text. Hard links can point to resources within Confluence as well, but also external sites.

Soft links between pages are mostly detected and converted. A link on a Confluence page pointing to another Confluence page, space, or attachment will be converted to a link to the corresponding page or file in SharePoint.

WikiTraccs covers a wide range of link types, but not all. Transforming hard links to the most recent version of a Confluence page is supported since release 1.6.4.

WikiTraccs will also transform links to other spaces. To do this it needs to know which space maps to which SharePoint site - this is done via the Space Inventory list.

Images

Images from Confluence pages are converted to image web parts in SharePoint pages.

Page Layout

Confluene Page Layouts

Yes, both Confluence and SharePoint have page layouts! WikiTraccs maps Confluence page layouts to corresponding sections in SharePoint. This works well for most of the page layouts.

There is a major drawback, though: pages in Confluence are much wider than SharePoint modern pages. SharePoint pages have a huge margin on the left and on the right. So migrated content from Confluence columns will be put into much narrower SharePoint columns. This might negatively impact the overall appearance.

Section and Column Macros, Panels

With Confluence’s section and column macros you can build arbitrarily nested structures of rows and columns. Those are a nightmare to convert to SharePoint.

WikiTraccs analyzes the sections and columns to find ways to:

  1. correct and simplify the structure (users may create non-sensical, deeply nested behemoths)
  2. map the macros to SharePoint tables

The result of mapping sections and columns to tables may introduce nested tables (tables within tables). And since nested tables are not supported by SharePoint, WikiTraccs will de-nest them (put them one after another).

The same applies to the panel macro - and by that matter to any other macro that is able to nest content into other content. Your mileage will vary widely with those web parts. See also the Nested macros and tables section below.

Page Metadata

The following page metadata is migrated:

  • page creation date
  • page modification date

More metadata like author, editor, tags etc. is surely possible, but currently not implemented.

Page Languages, Macros with MUI features

There are different products from the Atlassian marketplace available to make Confluence pages multilingual.

As of now WikiTraccs should be able to detect some of those (like Scroll Translations) and will migrate the language with the most content to SharePoint.

Making use of the SharePoint multilingual page features is surely possible, but currently not implemented.

There is an issue for that: Issue Link.

Page History

The current version of a page is migrated. No history is included.

There are currently no plans to reflect page versions in SharePoint. There are open questions from a technical standpoint regarding how page versions and attachments would be reflected in SharePoint.

Please get in touch if missing page versions are a blocker for you. In this case please think about how Confluence page versions and attachments and links to those elements would be reflected in SharePoint so that it solves your use case.

Comments & Inline Comments

Currently comments on Confluence pages (and other places) are not migrated to SharePoint.

In the future page comments could be included as well, probably as part of the page content (since they can contain rich formatting and can be deeply nested).

There is an issue for that: Issue Link.

Drafts, Unpublished Changes and Trashed Pages

Currently none of those pages are migrated. Each page that should be migrated must be published in the clean-up phase before starting the migration.

There is an issue related to that: Issue Link.

Page Attachments and External Images

Each Confluence page attachment is migrated to SharePoint. The attachment files are stored in the Site Assets library, where a folder is created for each SharePoint page.

The main benefit of using the Site Assets library is that SharePoint mirrors any page permission changes to the folder belonging to the page. That means when breaking permission inheritance on a page the permission inheritance for the attachment folder is broken as well. This is a SharePoint out-of-the-box feature.

WikiTraccs also saves external images as page attachments in SharePoint because SharePoint does not allow image web parts to link to external domains. This is a security feature of SharePoint and makes storing those images locally necessary.

Page Permissions

Page permissions can be migrated to a certain extent. Have a look at this blog post for details: Mapping principals and migrating permissions.

Attachment Permissions

Attachment permissions in SharePoint are bound to page permissions. This is an out-of-the-box feature of SharePoint.

Attachment Metadata

Page attachments are migrated, along with the following metadata:

  • Creation Time
  • Created By
  • Last Modified Time
  • Last Modified By

WikiTraccs maps this data to the corresponding out-of-the-box SharePoint fields.

Attachment History

WikiTraccs migrates the latest version of any page attachment.

User @-mentions

SharePoint has limited support for mentions as those are currently only supported in SharePoint page comments but not the page content. Thus Confluence user mentions will be replaced by links in the SharePoint page content. Selecting this link will take the user to the SharePoint search results for the user’s email address (if the email address is known).

If Confluence and Jira are integrated then WikiTraccs tries to get issue information like key, title and link from Jira to insert it in the SharePoint page. There will be one link per issue in the resulting SharePoint page.

Note that issue tables and other aggregating macros are replaced by placeholders as those macros are not supported in SharePoint.

Nested Macros and Tables

SharePoint Online modern pages are currently limited with respect to formatting and structure. Their structure is very simple and elements mostly cannot be nested.

That is the reason why certain Confluence structures have to be re-build in a non-optimal way. Let’s look at some examples.

Nesting tables is not possible in SharePoint but in Confluence. For this specific case the workaround is to de-nest those tables and put them one after another. Thus the content is preserved but the page might harder to read as a result.

The same goes for macros that contain rich content like the Expand macro, the Panel, Note-like macros and the Section and Column macros. They all allow a degree of nesting that is not possible to re-build in SharePoint.

WikiTraccs tries its best to convert those elements to something that is still legible in SharePoint. But since each source page is unique so might be the transformation needed to convert this content.

Confluence Version Support

WikiTraccs is tested mainly with Confluence 7 and 8. Confluence 6 should work as well. Confluence 5 and older are not supported.

Content migration from Confluence Cloud seems to work, but is currently not being in active development. See a list of known issues with Confluence Cloud here: Add support for Confluence Cloud.

In any case, please use the free Trial Version of WikiTraccs to check that it works in your environment.

Target SharePoint Site vs. Subsite

WikiTraccs works with sites (site collections), not subsites. Microsoft advises agains using subsites in SharePoint Online:

Classic SharePoint architecture is typically built using a hierarchical system of site collections and subsites, with inherited navigation, permissions, and site designs. Once built, this structure can be inflexible and difficult to maintain. In the modern SharePoint experience, subsites aren’t recommended. In the new β€œflat” world of modern SharePoint, plan to create one site for each discrete topic, task, or unit of work. This will allow you to easily distribute management and accountability for each content collection and support your ability to move sites around in your navigational architecture without breaking links. Moreover, when a topic is no longer needed, you can easily archive or delete a site with minimal impact.

4 - WikiTraccs Reference

A reference of topics around WikiTraccs.

4.1 - How does WikiTraccs work?

This article describes the basics of WikiTraccs.

Overview

WikiTraccs migrates content from Atlassian Confluence to SharePoint Online.

It does more than a simple migration, though. While migrating it will transform Confluence macros, links, images and more to its SharePoint equivalents. Thus it could be called a transformation rather than just a migration.

If you are looking for a solution that transforms your Confluence content into modern SharePoint Online pages WikiTraccs has got you covered.

How does it work?

The process of getting content from Confluence to SharePoint works roughly as follows:

graph TD
  id1[EXPORT: WikiTraccs exports data from Confluence] --> id2[TRANSFORM: WikiTraccs transforms Confluence content to SharePoint content] --> id3[IMPORT: WikiTraccs imports pages and files to SharePoint]

Confluence export and SharePoint import is done page by page. When interrupted WikiTraccs will continue at the page where it left off. Just start the process again.

Transformations can be configured on a per-space basis. You configure which Confluence space is migrated to which SharePoint site. Multiple spaces can be migrated to the same site.

WikiTraccs stores transformation metrics for each page in SharePoint as metadata of the page. You can sort, filter and review directly in SharePoint to check the transformation result.

How to get started?

Read here to learn how to get started: Getting started

4.2 - WikiTraccs FAQ

Frequently (and not so frequently) Asked Questions around WikiTraccs.

This FAQ covers questions folks have while evaluating and using WikiTraccs.

The answers are often short on purpose and nuance might be lost this way. Please refer to the documentation links for an in-depth discussion of the respective topics.

Q: What is the access level needed in SharePoint to migrate spaces to? Same question for Confluence.

A: For Confluence creating a migration account is recommended. The following access levels work for this account: Confluence administrator (recommended), space owner, read-only user. Lesser access means that page restrictions and/or user account information (e-mail address, name) cannot be migrated.

For SharePoint creating a migration account is also recommended. This account should be site collection administrator of SharePoint target sites. Furthermore an Azure AD app registration is required. The app needs delegated permissions, ideally FullControl, but Manage works to an extend. Refer to the linked documentation for details.

Further reading:


Q: What if we don’t have access to a global admin account of SharePoint?

A: You probably don’t need a SharePoint global admin. Here’s what’s needed when preparing the migration:

  • in SharePoint Online, create modern sites and assign the migration account permissions - if self-service site creation is enabled then any user can do this
  • in Azure AD, register an Azure AD application - this can be done by an account with Application Developer role in Azure AD, but see the linked Microsoft documentation for more details; this has to be done once as prerequisite to using WikiTraccs
  • only if a new migration account is to be used for SharePoint: in the Microsoft 365 administration, create a migration account - this needs the User Administrator admin role
  • only for WikiPakk: in SharePoint Online, add the WikiPakk app from Microsoft AppSource to the global tenant app catalog - the user doing this needs to be Owner of the tenant app catalog site, although it more commonly is the SharePoint administrator

Further reading:


A: Yes, mostly. When a Confluence page is migrated to SharePoint, links to other Confluence pages, spaces, and attachments are transformed to point to the respective SharePoint pages. This is true for soft links, that means “proper” Confluence links. See the next question about hard links and why it’s harder for WikiTraccs to handle those.

Link transformation is done based on a naming scheme WikiTraccs uses for SharePoint page names, thus the target page doesn’t need to exist, yet. You can migrate Confluence page Foo that links to Confluence page Bar, without having to migrate Bar. The link will be transformed and points to a (yet) non-existing SharePoint page Bar - until you migrate page Bar. Then the link works.

Note about versioning: the link will always point to the current page version in SharePoint since WikiTraccs only migrates the current page version.

Further reading:


A: Hard links are plain old HTML links that Confluence is oblivious of, from a metadata standpoint. Technically, hard links appear like any other text content on a Confluence page. And also technically, they lack important metadata that is needed to locate the target page - a page ID, page title or space key. Sometimes those links make it into a Confluence page, mostly by pasting text into a page. As long as the target Confluence page does not change much those links work. But upon renaming the target page those links might break.

To transform a Confluence link to a SharePoint link WikiTraccs needs to know which Confluence page or space a link points to. As the needed metadata is only present with soft links and missing for hard links, WikiTraccs might not be able to transform hard links.

Since release 1.6.4 WikiTraccs has basic hard link support. WikiTraccs looks for hard links and tries to figure out the target page. If that is successful the hard link is transformed to a proper page link in SharePoint. But this might not always succeed. And this does not work for hard links to attachments.

Further reading:


Q: How do you know which spaces and pages can/can’t be migrated from Confluence?

Q: Can I choose which space I want to migrate so I can migrate batches of spaces?

Q: What granularity does the selection of migrating give us? Space-by-Space? Page-by-Page?

A: Migration with WikiTraccs is done on a per-space basis. You choose Confluence spaces to migrate, and which target SharePoint site to use as migration target. All pages from the source space will be migrated to the chosen target.

Technically, there is no restriction as to which Confluence spaces can be migrated. Everything the Confluence migration account sees will be seen, and can be migrated by WikiTraccs.

You choose which spaces to migrate in the Space Inventory, a list that WikiTraccs creates in SharePoint. WikiTraccs stores basic information about each space it finds in Confluence in this list. You then tick a box for all spaces that should be migrated. When starting the migration, WikiTraccs looks at this list to know what to migrate, and to which sites.

Migrating spaces in batches can be done by adjusting the space selection in the Space Inventory: select spaces for a batch, then migrate; for the next batches, adjust the space selection accordingly.

Further reading:


Q: Do the versions of Conflunence pages also get migrated?

A: No. Only the current version of pages and attachments will be migrated.


Q: Is having WikiPakk the only way to keep the left page tree menu like we currently have in Confluence? Is subscription charging the only way for WikiPakk?

A: WikiPakk is the only ready-made option I’m aware of that shows a SharePoint page tree and breadcrumb, for migrated and out of the box SharePoint pages. At this time a monthly subscription is the only supported payment model. A yearly subscription option will be added soon. If you’d prefer another model, please let me know as demand drives development.

Technically you could develop another form of visualization. The metadata that WikiTraccs creates for each migrated page in SharePoint contains the Confluence page ID, parent Confluence page ID and space key. That is all that’s needed to visualize the hierarchy.


Q: If the execution is interrupted during migration, will it restart where it stopped? We have lots of spaces and access restrictions per team.

A: Yes, WikiTraccs is very forgiving with respect to interruptions. The migration can be interrupted at any time and continues where it left off.


Q: Will it also migrate spaces/pages restrictions as well or we will have to do manually? Please, show us how to migrate also the users/team permissions on migrated pages.

A: WikiTraccs can migrate permissions, to the extend possible given the differences between Confluence and SharePoint. In Confluence you have a page hierarchy and access to each page in this hierarchy can be restricted, at each level. SharePoint in comparison has no hierarchy, just a bunch of pages in the Site Pages Library. There is no permission hierarchy on pages in SharePoint.

Furthermore, when moving from Confluence to SharePoint Online, you need to think about groups. Are all groups from all Confluence user directories that take part in the Confluence permission scheme present in Azure AD? WikiTraccs does not create groups.

The bottom line is that permission migrations - while possible to an extent - rarely make sense.

Further reading:

  • Refer to this blog post for instructions on how to migrate permissions, and for a list of capabilities and restrictions with regard to permission migration from Confluence to SharePoint: Mapping principals and migrating permissions

Q: Currently our SharePoint only creates “Modern Pages”, and we cannot create “Wiki Style pages” is that a problem?

A: Perfect, WikiTraccs creates modern pages as well. Classic pages are not supported.


Q: In the target SharePoint site I see in the “+ New” button we now have a new option “Site Page (transformed by WikiTraccs)”, why is this?

A: That’s a new page content type created by WikiTraccs, that is derived from the standard SharePoint content type Site Page. It contains additional fields to hold metadata from Confluence and about the migration. It’s a technical artifact and should be hidden from the user. (#76)


Q: If a page or space makes use of a template (Jira Report / Decision / Sprint Review / etc.) can it be migrated to SharePoint and keep the template working in SharePoint?

Q: If the page has buttons will the button continue to work on SharePoint with same behavior?

A: WikiTraccs migrates Confluence pages to SharePoint Online modern pages. It transforms the content of Confluence pages to something that can be shown in a SharePoint page, and is limited by what SharePoint has to offer (layouts, web parts, formatting, …). WikiTraccs has no explicit knowledge of templates.

You can think about it this way: WikiTraccs can do what you can do in SharePoint. If you cannot create something in SharePoint, WikiTraccs can’t do it either. But if you can create it, WikiTraccs could be able to do it as well, if it’s not already doing it.

Further reading:


Q: Will the tool flag if it could not properly migrate a page or space?

A: Yes. WikiTraccs measures migration success on two levels: page and space.

For page content migration success WikiTraccs collects indicators. Those indicators are stored with the page in the Site Pages library. You look at those indicators to find problematic pages, in each target SharePoint site.

For space content migration success WikiTraccs creates progress log files for each migrated space. You can see which pages have been migrated, how many are yet to be migrated, and more.

Further reading:


Q: How does the tool decide if it should create a Team site, Hub site or a communication site when migrating? Can the tool decide this automatically?

Q: Does the tool always require a blank target site in SharePoint?

Q: If we point the tool to target a SharePoint url destination that already has content with same title, will it be overwritten, or the tool will create a new site keeping any existing SharePoint site intact?

A: WikiTraccs does not create SharePoint sites. You need to create or choose target SharePoint sites for the migration. Note: the target sites need to have the Site Pages feature enabled which is on by default for modern sites.

You enter the target SharePoint URLs into the Space Inventory.

Deciding the right type and number of target sites in SharePoint is out of scope of WikiTraccs and would be part of a transformation project of any kind.

Further reading:


Q: Is it better to centralize the migration in one team? WikiTraccs seems to requires us to migrate from the root URL of Confluence, if not, there will be an error.

A: The migration could be done by multiple teams. For that to work you would create clusters of source space and target sites and assign each team one cluster. Each team could use different migration accounts for Confluence and SharePoint. This way each team would only see content from their cluster. Keep in mind that this might break links between pages if WikiTraccs cannot access both the source and target page/space.

Regarding the root URL: WikiTraccs uses the Confluence REST API and needs to know the Confluence base URL to find the correct REST endpoints.


Q: I find it difficult to understand what pages I was selecting comparing against the left page tree view menu. I want to migrate only pages under menu “FAQ”. How can we do that in the “Confluence Space Inventory”?

A: WikiTraccs migrates spaces. It does not allow selecting single pages or parts of the page tree for migration. If you want to migrate only some pages of a Confluence space to SharePoint you need to migrate the whole space and delete the content from SharePoint that you don’t need.

Further reading:

  • Feature proposal to allow selecting pages via CQL query: #77

Q: How much time does it take to migrate?

A: The migration time depends on a number of factors. Let’s look at each of those:

  • SharePoint usage and throttling affects migration time
    • depending on the usage of Microsoft 365 worldwide and the region you are in the speed of SharePoint-related operations can vary; migrating on a weekend might be faster than during working hours
    • also depending on the overall Microsoft 365 service usage clients might be throttled; this means for WikiTraccs that sometimes it has to wait before being allowed to create new content; this is also why it might make limited sense to run parallel migrations - throttling might occur faster
    • throttling can happen at any time, slow cloud perforformance can happen at any time
    • the speed of a SharePoint tenant as well as throttling limits depend on the number of active licenses in the tenant; thus migrating to a SharePoint test environment might be slower that migrating to a production environment
  • page contents affect migration time
    • migrating a simple page from Confluence to SharePoint on average seems to take about 4 to 8 seconds
    • migration time per page will be higher if the page links to page-external content, like Jira issues (causes request to Jira server), external images (causes download of external image), and other Confluence pages, spaces, or attachments (causes additional requests to those Confluence resources)
  • attachments affect migration time
    • each attachment has do be downloaded from Confluence and uploaded to SharePoint Online
    • downloading from Confluence takes time that is dependent on the Confluence instance’s performance
    • uploading to SharePoint can take anything up from half a second
    • larger attachments take more time
  • the number of pages per space can affect migration time
    • when starting and stopping the migration of a Confluence space WikiTraccs requests the list of pages for that space from Confluence, to fuel progress bars and measure migration success
    • for spaces with a large number of pages (say 10000 pages and up) getting the list of space pages can take minutes - this is a known Confluence issue
    • the time to retrieve pages from such a large space can vary; one Confluence instance might return a list of 25000 pages in 20 seconds, another instance might take half an hour

WikiTraccs migrates pages one by one and does not parallelize. You can parallelize the migration by running a second WikiTraccs instance on another machine.

Further reading:


Q: Has WikiTraccs ever done a big migration / Enterprise level like ‘big company’?

Q: We Have at least 350 Confluence wiki spaces to migrate to SharePoint. Is there a batch of so many wiki spaces you can do in one run?

Q: We have multiple attachments currently in the Confluence wiki spaces and is there a limit how many attachments can be migrated to a SharePoint site?

A: The largest successful WikiTraccs-based migration that I know of “in the wild” consisted of ~160 spaces and ~200,000 pages. The largest space had ~20,000 pages. Note that I’m not aware of customers that did restriction/permission migrations and would advise against it, as SharePoint works differently that Confluence with regard to permissions.

The largest migration in a test environment has been ~3,000 spaces, consisting of ~120,000 pages, having ~360,000 attachments that where ~850 GB in size - all migrated from Confluences to a single SharePoint target site collection.

In principle there is no defined technical limit to the number of pages or attachments WikiTraccs an migrate, and SharePoint can ingest within its impressive limits. It’s just that migrating and verifying takes longer with every space, page and attachment that is part of the migration.

The “Is there a batch of so many wiki spaces you can do in one run?” question carries additional topics: the concept of a batch and run. In my view a batch would be the Confluence content to be migrated as configured via the Space Inventory list. You defined the size of the batch. A run would be what WikiTraccs does after kicking off the migration. It will migrate the content one page after another.

One note regarding the you can part of the question; this might just be a phrasing issue, but to be clear: The Wiki Transformation Project does not offer consulting services and does not take part in migration projects. The Wiki Transformation Project provides the tool WikiTraccs that can be a vital part of your Confluence to SharePoint migration tool belt, as well as WikiPakk to provide a SharePoint page tree experience that will make users happy.

Further reading:


Q: In your experience what determines the success or failure of a migration project from Confluence to SharePoint?

Q: Do you have a “Default Plan” how we should proceed with such a migration?

Q: What do the success stories have in common?

A: You need to have a plan before thinking about migration tooling.

The Migration Playbook hints at that in the Proof of Concept Phase, Decision, and Analysis Phase.

Providing migration guidance or consulting is out of scope of WikiTraccs. But I might recommend a partner that can help. Get in touch if you are interested in a recommendation.


Q: How long is the trial period for your product (30 days, 60 days or 3 months)?

Q: What limitations are there on using the free eval?

A: When WikiTraccs doesn’t find a license key, it runs in trial (or evaluation) mode.

When running in unlicensed trial mode, WikiTraccs slightly changes the SharePoint pages it creates. It inserts a promotional header, sometimes a footer, and replaces some words in the page with “WikiTraccsTestMigration”. This stops as soon as there is a valid license key.

The trial period of WikiTraccs is as long as you need it to be. There is no end. Try as long as it takes to make an informed decision.

All features are available in WikiTraccs trial mode as well, so you can test them thoroughly. You can perform a test migration of all your Confluence pages; no limits on the number of pages, files, or spaces.

Further reading:


Q: Is the look and feel of the Confluence wiki spaces migrated/transformed to SharePoint site same as in Confluence after it is migrated?

A: This question could refer to the look and feel of the actual Confluence spaces - which will become SharePoint sites - or the look and feel of the wiki pages once they have been migrated to SharePoint.

WikiTraccs does not create or configure SharePoint sites. Creating and configuring SharePoint sites is a manual task that usually is part of a transformational project. This is out of scope of what WikiTraccs can do.

With regard to the migrated Confluence pages the answer is No, the look and feel of the SharePoint pages is not the same as in Confluence.

Confluence and SharePoint are different with regard to layout, styling, metadata, permissions, navigation, user management, and integration with other Microsoft 365 services - so the look and feel will certainly differ. This is something that should be taken into account when introducing SharePoint as Confluence replacement.

I strongly recommend getting to know SharePoint before migrating Confluence content to SharePoint. Create some pages and learn their capabilities.

Please refer to the linked pages for more information about WikiTraccs’ capabilities and visual migration samples.

Further reading:


Q: Do you need to do any type of tweak or adjustment to make the spaces and attachments look exactly same as Confluence wiki spaces in the SharePoint site(s)?

A: It’s impossible to make the SharePoint sites to look exactly like Confluence, or to make the migrated pages look exactly like the Confluence pages. At least with the approach WikiTraccs takes.

The configuration of SharePoint sites is entirely up to you. WikiTraccs won’t do much to a SharePoint site that might be relevant to your use cases.

Migrated Confluence pages will become SharePoint pages - which are different in their capabilities from Confluence pages. For example, Confluence macros are not present in SharePoint. That alone makes a big difference.

Migrated Confluence page attachments stay as they are, as they are just files. SharePoint can store files. WikiTraccs downloads Confluence page attachments and uploads them to the SharePoint Site Assets library, the default place for page attachments in SharePoint. Page attachments can be made visible per SharePoint page via a list view web part, that WikiTraccs can insert at the end of a page.


Q: Are there Confluence standard macros which won’t be migrated?

A: Yes. For most macros it’s technically impossible to migrate them to SharePoint.

You can make an experiment: choose a macro you’d like to see migrated to SharePoint. In a modern SharePoint page, try to rebuild what this macro does.

Could you rebuild the macro functionality in SharePoint? Good! WikiTraccs could do the same. If WikiTraccs does not yet support your scenario - get in touch, tell me about your solution!

But most likely you won’t be able to find anything in SharePoint that could be a drop-in replacement for your chosen macro. And in this case WikiTraccs cannot find one, either.

Further reading:


Q: Is it a one to one Confluence wiki space migration to SharePoint? So 350 wiki spaces will be migrated to 350 different pages and spaces in SharePoint site?

A: WikiTraccs migrates the pages of Confluence spaces to SharePoint sites. You configure the space to site mapping.

When migrating a space, all pages of this space are migrated.

Each space can go to its own target SharePoint site.

Multiple spaces can go to one target SharePoint site.

Note: Currently it’s not possible to “split” a space, migrating its pages to different target SharePoint sites.

For migrating 350 Confluence spaces to 350 target SharePoint sites the process would roughly be as follows:

  1. create 350 target SharePoint sites and configure them according to your concept; using PnP PowerShell and PnP templates is one common approach to automate site creation
  2. use WikiTraccs to automatically fill the Space inventory list with information about those 350 Confluence spaces
  3. map each space to its target site URL
  4. select spaces to migrate
  5. start the migration using WikiTraccs

Further reading:


Q: Can we do all this in one license or we have to purchase multiple licenses?

You buy one WikiTraccs license with the appropriate Page Count Tier and are good to go. There are currently no feature-dependent licenses.

Have a look at the Pricing page for details.


Q: Is it per-license cost or do you provide an enterprise license model?

The cost is per WikiTraccs license key. The purchased license key is for internal use, sublicensing or providing services to a third party is not permitted. The third party would have to acquire a separate license key.

Further reading:


Q: How many licenses we need to complete the project?

That depends on the duration of your project.

A WikiTraccs license key is valid for a 6-month period, starting with the date of the purchase. After 6 month you would need to purchase a new license, that again is valid for 6 month.

You need one such license for WikiTraccs with the appropriate Page Count Tier. Have a look at the pricing page for details: Pricing.


Q: Do you recommend each Confluence space to a SharePoint Online subsite?

Microsoft does not recommend using subsites in SharePoint Online, and WikiTraccs cannot migrate to subsites. So, I would advise against it.

Further reading:

4.3 - Installation and Update

This article shows how to install and update WikiTraccs.

Downloading and running WikiTraccs for the first time

Downloading and running WikiTraccs for the first time is covered in the Getting started guide, in section STEP ONE: Download WikiTraccs.

It boils down to downloading and extracting a zip file. No installation needed.

Updating WikiTraccs

New releases are published in the WikiTraccs Releases GitHub repository under Releases.

Updating WikiTraccs works as follows:

  1. perform the same steps as described in above section Downloading and running WikiTraccs for the first time, just to a different directory (so don’t overwrite the old version)
  2. (optional) if you configured something via appsettings.json copy this file from the old to the new directory, into the same sub directory (either WikiTraccs.GUI or WikiTraccs.Console)
  3. run WikiTraccs (GUI or Console) from the new directory

You are now running the new version of WikiTraccs.

The settings configured via the WikiTraccs.GUI “blue window” are preserved automatically. Those settings are stored in the current Windows user’s temporary directory, e.g. C:\Users\<user>\AppData\Local\Temp\WikiTraccsGui_config.json.

As long as the temporary folder is not cleared the file is there. You can also back up and restore this file as needed.

4.4 - Settings & Configuration

This article is a resource where you can find configuration options for WikiTraccs.

How to configure WikiTraccs

You’ll start configuring WikiTraccs and your Confluence to SharePoint migration at two places:

  • inside the blue window that is WikiTraccs.GUI
  • in SharePoint lists that WikiTraccs creates, in a SharePoint site you create (the WikiTraccs site)

In most cases, using the blue WikiTraccs.GUI window and the SharePoint lists for configuration is enough.

Some settings, though, aren’t available for visual configuration in WikiTraccs.GUI. For those you need to use another approach that involves a configuration file.

Both approaches are described in the following sections.

The visual and convenient configuration via WikiTraccs.GUI

In WikiTraccs.GUI an often-used subset of configuration options is available for visual configuration.

The following settings and functions are available in WikiTracs.GUI (or a SharePoint list it creates), no need to use the config file for those:

This is everything needed to get a migration going.

One SharePoint list central to configuring WikiTraccs is the Confluence Space Inventory list, or short Space Inventory. This list is created and populated by WikiTraccs when you select the Prepare WikiTraccs site and update space inventory button.

WikiTraccs overall creates the following lists in the WikiTraccs Site when you select the Prepare WikiTraccs site and update space inventory button:

  • Confluence Space Inventory - for you to select what to migrate, and where
  • Confluence User and Group Mapping - for you to map Confluence user accounts to Azure AD accounts (and groups)
  • WikiTraccs Locks - for internal use
  • Confluence Permission Snapshots - for internal use

The following resources have more information:

  • The quick start guide covers configuring migration source, migration target, and authentication for Confluence and SharePoint: Getting Started
  • Everything you need to know about the Space Inventory is covered here: Confluence Space Inventory

The more involved configuration via config file and WikiTraccs.Console

More settings are available via WikiTraccs.Console and a configuration file. Only when you want to change those settings you have to use the configuration file.

Use the configuration file for the following advanced scenarios or non-default configurations:

  • changing the configuration often, e.g. for automation purposes
  • using different authentication methods for different target SharePoint sites
  • toggling feature and debug flags not available in the GUI
  • changing the location where Confluence content is stored during the migration
  • manually configuring the Chrome driver for Confluence login in a locked-down environment
  • configuring timeouts for external domains
  • migrating single pages by page ID

The following resources have more information:

4.4.1 - Confluence Space Inventory

This article is a resource where you can find information about the Confluence Space Inventory list.

Facts about the Confluence Space Inventory

The Confluence Space Inventory - or short Space Inventory - is a SharePoint list that serves the following purposes:

  1. show each Confluence space for you to select for migration
  2. allow adding additional selectors for Confluence pages to migrate, mainly CQL queries
  3. serve as the lookup table when resolving cross-page and cross-space links

WikiTraccs creates the Space Inventory and adds information about Confluence spaces.

You use the Space Inventory to select source pages to migrate, and to specify target SharePoint sites. WikiTraccs will use this information to decide which content to migrate, and how to resolve links between pages.

The Space Inventory is created and updated by WikiTraccs.GUI when selecting the Update space inventory and WikiTraccs site button:

Note: WikiTraccs.Console will also check and create the Space Inventory, if necessary.

The Space Inventory can be repeatedly updated by selecting the Update space inventory and WikiTraccs site button. Use this to have spaces added to the inventory list that are missing, either because they have been newly created in Confluence, or because they have been deleted from the list.

Accessing the Space Inventory

Selecting the Open Space Inventory to choose source spaces button opens the Space Inventory in a browser:

When the Space Inventory exists, the browser should show the SharePoint list Confluence Space Inventory (WikiTraccs):

If - for whatever reason - the Space Inventory does not exist, the browser will show an error:

If you see above error, make sure to select the Update space inventory and WikiTraccs site button first so that WikiTraccs has a chance to create and update the list.

You can find the Space Inventory without WikiTraccs as well, as it’s just a SharePoint list. Open the WikiTraccs site in a browser, go to Site Contents, and select the Confluence Space Inventory (WikiTraccs) list.

How does it work exactly?

Here’s an image showing how the Space Inventory works:

This image summarized:

  • the Space Inventory list contains multiple source to target mappings that tell WikiTraccs what to migrate, and where
  • each row contains at least the following mandatory information:
    • WT_In_CfSiteId - the Confluence site identifier; this corresponds to the Confluence base URL (example: https://wiki.contoso.com)
    • WT_In_CfSpaceKey - the source selector, telling WikiTraccs which pages to migrate; this can be the Confluence space key, but starting with release 1.8 of WikiTraccs this field can also contain a CQL query (example for space key: HR, example for CQL query: label=“archive”)
    • WT_Setting_RequestTransformation - if this is checked, WikiTraccs will migrate all pages covered by the the source selector from Confluence to SharePoint; otherwise this mapping is only used for link resolution
    • WT_Setting_TargetSiteRootUrl - the target SharePoint site for all pages covered by the source selector; this is relevant for migrating pages covered by the source selector, but also for creating the correct links to target pages (example: https://contoso.sharepoint.com/sites/target1); if this is left empty, the default target site URL as configured via WikiTraccs.GUI will be used
  • when starting the migration, WikiTraccs will collect all pages from all source selectors that have been chosen for migration, and schedule them for migration; this queue is processed one page after another
  • when a page contains a link to a space, page or attachment, WikiTraccs will look up the SharePoint target site in the Space Inventory and create the link based on the found mapping; if there is no mapping a transformation error will be logged for the page (see Measuring page migration success on where to find this metric)

Using the Confluence Space Inventory

To learn how to migrate whole Confluence spaces to SharePoint refer to How to map Confluence Spaces to SharePoint Sites.

To learn about using CQL query selectors to choose Confluence pages to migrate to SharePoint refer to How to migrate Confluence Pages using CQL Query Selectors.

Here are other resources showing how the Space Inventory is used:

4.4.1.1 - How to map Confluence Spaces to SharePoint Sites

This article describes how to configure which Confluence space is migrated to which SharePoint site.

WikiTraccs allows to define a target site collection for every space it migrates.

Migrate to one target site by default

WikiTraccs by default migrates everything to the default target site.

When using WikiTraccs.GUI you enter the default target site URL into the Default target site input field:

Default Target Site Configuration in WikiTraccs.GUI

When you don’t configure anything else, WikiTraccs will migrate all Confluence pages to this SharePoint site.

Configure a different target site for spaces

When you want WikiTraccs to migrate pages from different spaces to different target sites, you configure this mapping in the Confluence Space Inventory list in the WikiTraccs site.

The Confluence Space Inventory list has a column WT_Setting_TargetSiteRootUrl. Enter the target site root URL there.

Target Site Root URL Column

When the WT_Setting_TargetSiteRootUrl column is empty, WikiTraccs falls back to using the default target site URL for that space. It is totally valid to set a target site URL only for some spaces.

In general, when migrating pages, WikiTraccs translates links between Confluence pages to proper links between SharePoint pages.

The target site mapping is important to properly resolve cross-space links.

When migrating a Confluence page that points to a page in a different Confluence space, WikiTraccs looks up the target site URL for that space the page links to. It then uses this target site URL to create the proper link in SharePoint.

The links WikiTraccs creates in SharePoint follow a specific naming convention. This convention is roughly as follows (for pages):

<targetsiteurl>/SitePages/<spacekey><pagetitle><pageid>.aspx

(The resulting page file name is stripped of any characters that are not allowed in SharePoint.)

When a Confluence page is migrated to SharePoint and this page links to another page or space that has not yet been migrated WikiTraccs can nevertheless create the link. WikiTraccs doesn’t care if the target exists. It will exist once it will have been migrated.

This allows WikiTraccs to migrate a Confluence space where pages link to other pages or spaces that have not yet been migrated, while still creating valid links.

4.4.1.2 - How to migrate Confluence Pages using CQL Query Selectors

This article describes how to use CQL queries to select source pages and how to configure which CQL query selector is migrated to which SharePoint site.

WikiTraccs allows selecting source pages for migration using CQL queries.

Migrating spaces vs. migrating via CQL query

Before release 1.8.0 WikiTraccs only supported the configuration of entire Confluence spaces for migration and for link resolution. This meant that all pages of a given source space would be migrated to the configured target site.

Feedback from clients let to the introduction of an additional, more flexible way to select source pages: pages can now also be selected via CQL query. This allows to select specific pages for migration.

For WikiTraccs the technical difference is minimal, from a page selection perspective.

For you, the difference is also minimal, from a configuration perspective. The Space Inventory list is still used to configure which pages should be migrated to which target. Simply write your CQL query to the WT_In_SpaceKey field.

The following screenshot shows how different CQL queries are used to select pages by their label, migrating each label to a different target site:

Space Inventory list showing CQL query selectors for source page selection.

Note: the field is still named WT_In_SpaceKey since initially only a space key was supported there.

Everything else from the space selector article applies as well, so please refer to this article: How to map Confluence Spaces to SharePoint Sites. The target site can be configured. If there is no target site set, the default target site will be chosen.

There are some consequences though, when using CQL queries.

The consequences of using CQL queries source selectors

Here’s the list of topics that can get more complicated when dealing with CQL queries:

  • Link Resolution: Confluence pages linking to other spaces, pages, or attachments require more time to migrate, and put more load on Confluence
  • Query Result Size: using CQL queries you can select a large amount of pages (potentially all)
  • Duplicate Pages: one page can be selected by multiple CQL queries, leading to pages being migrated multiple times

For each CQL query selector you add to the Space Inventory WikiTraccs has to issue one additional request to Confluence for each link it needs to resolve.

Assume you are migrating 10,000 pages, with 2 links to other pages on each of those 10,000 pages. Further assume you configured 100 CQL query selectors in the Space Inventory list. That means that 2*100 callbacks to Confluence would need to be issued for each of those 10,000 pages, amounting to 2,000,000 calls overall during the migration of those 10,000 pages.

Why is that?

To transform links from Confluence to SharePoint, WikiTraccs needs to know which target site a page will be migrated to. But how would WikiTraccs know which CQL query contains which page? To learn this WikiTraccs asks Confluence for each CQL query if a given page is included.

Example:

  • page A links to page B with ID 2000
  • WikiTraccs needs to find out which SharePoint site page B will be migrated to, to create the proper SharePoint link
  • there are two CQL queries configured: label="one", mapped to target site https://contoso.sharepoint.com/sites/one, and label="two", mapped to target site https://contoso.sharepoint.com/sites/two
  • WikiTraccs creates a modified CQL query (label="one") AND (id=2000) to check if page B is covered by CQL query label="one"
    • there are no results - page B is not covered
  • WikiTraccs creates a second modified CQL query (label="two") AND (id=2000) to check if page B is covered by CQL query label="two"
    • there is one result - page B is covered!
  • WikiTraccs now knows that page B will be migrated to site https://contoso.sharepoint.com/sites/two
  • thus the correct link to page B is something like https://contoso.sharepoint.com/sites/two/SitePages/SPC-Page-B-2000.aspx

Note: WikiTraccs does not have to do this when only performing space-based migrations (without any CQL queries), since the target site can easily be looked up via each page’s space key in the Space Inventory list.

Duplicate pages can be created

You can write CQL queries might include overlapping results.

Take for example the CQL queries label="one" and label="two".

If Confluence pages only ever have one of the labels one or two, those selectors choose two disjuct sets of pages. Which is good.

But what about pages having both labels one and two? Those pages will be chosen by both CQL queries, migrating each of those pages two times.

The consequences are:

  • duplicate content in SharePoint as multiple copies of a page are present
  • fuzziness when it comes to linking to those pages as other SharePoint pages can only link to one of the duplicates; which one is not defined

4.4.2 - Configuration via Configuration File

This article is a resource where you can find configuration options for WikiTraccs.

Configuring via configuration file

Use WikiTraccs.Console when working with a configuration file.

The configuration is done in the appsettings.json file. When you run WikiTraccs.Console then appsettings.json must be placed in same folder as WikiTraccs.Console.exe. Create the file, if needed.

Here is a sample of appsettings.json configured for a straightforward content migration (a second sample follows further down, explaining the options):

{
    "CustomSettings": {
        "TargetTenants": [
            {
                "HumanReadableId": "Contoso SharePoint",
                "SharePointRootUrl": "https://contoso.sharepoint.com",
                "ClientId": "76762071-f1a9-4323-a97a-ab24992032fd",
                "Tenant": "82fb6e24-c982-4f08-a009-1916ee226643",
                "AuthenticationType": "interactive",
                "TargetSites": [
                    {
                        "HumanReadableId": "WikiTraccs",
                        "SiteRootUrl": "https://contoso.sharepoint.com/sites/MigrationStore"
                    },
                    {
                        "HumanReadableId": "WikiTraccsDefaultTarget",
                        "SiteRootUrl": "https://contoso.sharepoint.com/sites/DefaultTarget"
                    }
                ]
            }
        ],
        "TransformationMappings": [
            {
                "SourceTenantHumanReadableId": "Contoso Confluence",
                "TargetTenantHumanReadableId": "Contoso SharePoint",
                "TargetSiteHumanReadableId": "WikiTraccsDefaultTarget"
            }
        ],
        "SourceTenantIncludeList": [
            {
                "TenantId": "https://www.contoso.com/confluence",
                "HumanReadableId": "Contoso Confluence",
                "SpaceTransfer": {
                    // note: spaces to migrate are configured via space inventory list in the SharePoint WikiTraccs site
                    "Enabled": true
                }
            }
        ],
        "AttachmentRegistryRootPath": "D:\\FileRegistry",
        // WikiTracs detects Chrome version automatically
        "ChromeDriverVersionOverride": null,
        // WikiTracs downloads Chrome web driver to current directory
        "WebDriverDirPath": null,
        // WikiTracs locates chrome.exe automatically
        "ChromeBinaryPath": null,
    }
}

Here is a complete and documented sample of appsettings.json showing more options for advanced and multi-pass configuration:

{
    "CustomSettings": {
        "TargetTenants": [
            {
                "HumanReadableId": "Contoso SharePoint",
                "SharePointRootUrl": "https://contoso.sharepoint.com",
                // client ID (application ID) of the registered Azure AD Application
                "ClientId": "76762071-f1a9-4323-a97a-ab24992032fd",
                // SharePoint tenant ID
                "Tenant": "82fb6e24-c982-4f08-a009-1916ee226643",
                // how to authenticate with Azure AD; valid options are: "interactive" (supports MFA, use this), "credentials" (no MFA support)
                "AuthenticationType": "interactive",
                // optional: configuration for AuthenticationType "credentials", not needed for "interactive"
                "AuthenticationParameterSetCredentials": {
                    "CredentialsUserName": "[email protected]",
                    "CredentialsPassword": "p4ssw0rd"
                },
                // contains all sites used in the migration; two are mandatory: "WikiTraccs" and "WikiTraccsDefaultTarget"
                "TargetSites": [
                    {
                        // this is the "management site" for WikiTraccs that contains space inventory, user and group mapping table etc.; the HumanReadableId MUST be "WikiTraccs"
                        "HumanReadableId": "WikiTraccs",
                        "SiteRootUrl": "https://contoso.sharepoint.com/sites/MigrationStore"
                    },
                    {
                        // this is the default migration target for spaces that have no other target configured; the HumanReadableId MUST be "WikiTraccsDefaultTarget"
                        "HumanReadableId": "WikiTraccsDefaultTarget",
                        "SiteRootUrl": "https://contoso.sharepoint.com/sites/DefaultTarget"
                    }
                ]
            }
        ],
        // configure migrations here; which source should be migrated to which target
        "TransformationMappings": [
            {
                "SourceTenantHumanReadableId": "Contoso Confluence",
                "TargetTenantHumanReadableId": "Contoso SharePoint",
                "TargetSiteHumanReadableId": "WikiTraccsDefaultTarget"
            }
        ],
        // Confluence configuration
        "SourceTenantIncludeList": [
            {
                // use the Confluence URL as TenantId
                "TenantId": "https://www.contoso.com/confluence",
                // this can be anything and is used to reference to the source tenant
                "HumanReadableId": "Contoso Confluence",
                // add page IDs here to force-migrate those pages
                "PageIdIncludeList": [
                    "123456789",
                    "234567890"
                ],
                // migrate SharePoint pages with transformation errors again
                "ReprocessContentWithErrors": true,
                // configure content migration here
                "SpaceTransfer": {
                    // uncomment this to switch to principal checking mode; this updates the Created by and Modified by fields of pages; configure user mapping first!
                    //"Operations": ["checkprincipals"],
                    
                    // do migrate content
                    "Enabled": true,
                    // handle those spaces; note that this will be merged with the spaces selected in the space inventory list in SharePoint:
                    "SpaceIncludeList": [
                        {
                            "SpaceKey": "AGILE"
                        },
                        {
                            "SpaceKey": "ARCHIVE"
                        }
                    ]
                },
                // configure permission migration here
                "PermissionTransfer": {
                    // do migrate permissions; note: only enable either SpaceTransfer, or PermissionTransfer, _not_ both at the same time
                    "Enabled": false,
                    // migrate permissions for those spaces
                    "SpaceIncludeList": [
                        {
                            "SpaceKey": "AGILE"
                        }
                    ]
                }
            }
        ],
        "ReprocessContentWithErrors": false,
        // Sometimes there are huge wait times if external images don't time out properly. The number of retries and waits can be tweaked here so this does not slow down too much.
        "ExternalDomains": [
            {
                "UrlStartsWith": "https://docs.docker-cn.com",
                "HttpTimeoutRetries": 2,
                "HttpTimeoutSecs": 2
            }
        ],
        // By default WikiTraccs expects chromedriver.exe to be in the same folder as WikiTraccs. It will be downloaded if not present.
        // Here you can change the folder WikiTraccs uses.
        "WebDriverDirPath": "C:\\Users\\user\\Documents\\00_Portable",
        // Normally WikiTraccs locates chrome.exe automatically.
        // Specify an absolute path to chrome.exe if this fails _or_ you'd like to point to a specific Chrome version.
        "ChromeBinaryPath": "C:\\Program Files\\Google\\Chrome Beta\\Application\\chrome.exe",
        // By default WikiTraccs stores Confluence attachments in the application folder for the current user.
        // Override this location here with an absolute path.
        "AttachmentRegistryRootPath": "D:\\FileRegistry",
        // Only needed in environments where the auto-detection endpoint is blocked; must match the Chrome version (see Troubleshooting > Connectivity for details)
        "ChromeDriverVersionOverride": "72.0.3626.52",
        // Those options can aid debugging.
        "Debug": {
            "ClearLocalCacheOnStart": false, // default: false
            // Set this to true to save the storage format of every transformed page to disk. This can be useful for troubleshooting.
            "SaveTransformationInputToDisk": false // default: false
        },
        "Features": {
            // Trigger update of space inventory? Note that this can also be done from WikiTraccs.GUI.
            "FillSpacesList": false,
            // Transform page tree macro to static tree of links in SharePoint?
            "TransformPageTreeMacro": true, // default: true
            // Transform roadmap macro to image placeholder? Note that the image placeholder does not contain all information (e.g. text is missing).
            "TransformRoadmapMacro": true, // default: true
            // Use a centered dummy image for advanced text control flow around images (>0.1.5)?
            "EnableDummyImageFloatResetForImages": true,
            // Add a link to the source Confluence page?
            "AddLinkToSourcePage": false,
            // Mark formerly merged table cells?
            "TableCellSpanLayoutMode": "UnmarkedAdditionalSlots" // default: "MarkedAdditionalSlots"
        }
    }
}

When running WikiTraccs.Console you have to use appsettings.json to configure everything. The program will stop with an error pretty fast if the configuration is missing.

4.4.2.1 - Sample Configurations

This article contains sample configurations for different purposes.

The following configurations can be used to control WikiTraccs.Console without the GUI.

Everything that can be configured via WikiTraccs.GUI can also be configured via a settings file, and more. Save the settings to appsettings.json in the same directory where WikiTraccs.Console.exe is located. Create appsettings.json if necessary.

Run WikiTraccs.Console.exe to start the migration according the configuration.

Sample: Migrate contents of one space

The following configuration migrates the content of space identified by space key demo to the SharePoint site https://contoso.sharepoint.com/sites/migration-test. WikiTraccs site (for under-the-hood tables) and migration target site are the same here.

{
  "CustomSettings": {
    "WebDriverDirPath": "C:\\Users\\user\\00_Portable",
    "SourceTenantIncludeList": [
      {
        "TenantId": "http://localhost:8090",
        "AuthenticationType": "cookie",
        "HumanReadableId": "Confluence",
        "SpaceTransfer": {
          "Enabled": true,
          "SpaceIncludeList": [
            {
              "SpaceKey": "demo"
            }
          ],
          "Operations": [
            "retrievecontents"
          ]
        },
        "PermissionTransfer": {
          "Enabled": false,
          "SpaceIncludeList": []
        }
      }
    ],
    "AttachmentRegistryRootPath": "D:\\FileRegistry",
    "TempPath": "C:\\Users\\user\\AppData\\Local\\Temp\\",
    "TargetTenants": [
      {
        "HumanReadableId": "SharePoint",
        "SharePointRootUrl": "https://contoso.sharepoint.com",
        "Tenant": "b6e543a2-f741-40a3-80c1-97c168702d56",
        "ClientId": "0bf87492-f0bc-4476-a31f-67e016cdf31d",
        "AuthenticationType": "interactive",
        "TargetSites": [
          {
            "HumanReadableId": "WikiTraccsDefaultTarget",
            "SiteRootUrl": "https://contoso.sharepoint.com/sites/migration-test"
          },
          {
            "HumanReadableId": "WikiTraccs",
            "SiteRootUrl": "https://contoso.sharepoint.com/sites/migration-test"
          }
        ]
      }
    ],
    "TransformationMappings": [
      {
        "SourceTenantHumanReadableId": "Confluence",
        "TargetTenantHumanReadableId": "SharePoint",
        "TargetSiteHumanReadableId": "WikiTraccsDefaultTarget"
      }
    ]
  }
}

Snippet: Configuring multi-pass migrations

A configuration file to trigger both permission migration and principal update looks like this:

{
    "CustomSettings": {
        "SourceTenantIncludeList": [
            {
                "HumanReadableId": "Contoso Confluence",
                "TenantId": "https://www.contoso.com/confluence",
                "SpaceTransfer": {
                    "Operations": [
                        "checkprincipals"
                    ]
                },
                "PermissionTransfer": {
                    "Enabled": true
                }
            }
        ]
    }
}

Config File Templates for Debugging Purposes

WikiTraccs has some debug and feature toggles to be used when things don’t go as expected and need to be analyzed.

When debugging, put appsettings.json to the WikiTraccs.GUI folder or the WikiTraccs.Console folder, depending on which program you are running.

Snippet: Generic Debug Configuration Template

Here’s a template of appsettings.json to copy:

{
    "CustomSettings": {
        "Debug": {
            "ClearLocalCacheOnStart": true,
            "SaveTransformationInputToDisk": true,
            // assume the user is logged in when this element is present and enabled
            "ConfluenceAuthCssSelector": "#quick-create-page-button",
            // don't check that the Confluence context path and the path of the JSESSIONID cookie match
            "SkipConfluenceContextPathCookiePathMatching": false,
            "SkipPreparationResultCheck": false,
            // skip connection check when starting the migration from WikiTraccs.GUI (version > 0.1.4)
            "SkipConnectionCheckInWikiTraccsGui": false
        },
        "Features": {
            // force space inventory update when starting a migration
            "FillSpacesList": true,
            "TransformPageTreeMacro": true,
            "TransformRoadmapMacro": true
        }
    }
}

Snippet: “Clear Cache” Settings Template

This setting clears the cache on every start:

{
    "CustomSettings": {
        "Debug": {
            "ClearLocalCacheOnStart": true
        }
    }
}

Snippet: Don’t mark formerly merged table cells

For details on merged table cells see this blog post: How to migrate rich Confluence tables to limited SharePoint tables?

{
    "CustomSettings": {
      "Features": {
        "TableCellSpanLayoutMode": "UnmarkedAdditionalSlots"
      }
    }
}

4.5 - Migration Samples

Want to know how content transformed by WikiTraccs looks like? This page has lots of visual samples.

You’ll find pairs of images in the sections below. The first image shows a screenshot of a Confluence page. The second image shows how the content looks in SharePoint.

Formatting

Confluence Text Formatting

SharePoint Text Formatting

Confluence Headings and Paragraphs

SharePoint Headings and Paragraphs

Confluence Text Alignment and Indentation

SharePoint Text Alignment and Indentation

Confluence Things from the Plus Menu

SharePoint Things from the Plus Menu

Confluence Lists and Task Lists

SharePoint Lists and Task Lists

Layouts

Standard Layouts

WikiTraccs transforms the Confluence layouts to the matching SharePoint layouts.

Confluence Standard Layouts

SharePoint Standard Layouts

Here’s the edit mode of the two pages containing layouts:

Confluence Standard Layouts in Edit Mode

SharePoint Standard Layouts in Edit Mode

Notice how SharePoint only provides one three-column layout. WikiTraccs chooses this for both three-column Confluence layouts.

Sections and Columns

In Confluence users can create arbitrarily nested constructs of sections and columns. Even combinations that don’t make sense are sometimes allowed by Confluence or carried over by faulty migrations. WikiTraccs tries hard to make sense of what it finds.

WikiTraccs converts sections and columns to tables as there is no other equivalent in SharePoint.

Confluence Sections and Columns

SharePoint Sections and Columns

Note: It would be possible for WikiTraccs to convert the simplest section/column configurations to proper SharePoint sections: Issue Link.

Macros

Note: the following list is not complete. Have a look here for a complete overview: Known Confluence Macros

Confluence Info Warning Tip Note

SharePoint Info Warning Tip Note

Note: WikiTraccs won’t use cell background colors as those are not available in the SharePoint text web part (at least for the user). That’s why colored markers and emojis are used to indicate the type of note.

Confluence Code Macro

SharePoint Code Macro

Note: WikiTraccs transforms Confluence code block macros to SharePoint code web parts. But only its content and not the properties, so syntax highlighting will be off. There is an issue for that: Issue Link.

Confluence Panels

SharePoint Panels

Note: The formatting capabilities in SharePoint are very limited.

Confluence Status Macro

SharePoint Status Macro

Confluence Images

SharePoint Images

Note that a hyperlink has been configured for the first image. The user can click the image to navigate to the link. WikiTraccs migrates the link to SharePoint.

Also note that the Google logo on the Confluence page links to an external image. SharePoint does not allow linking to external images, due to security and privacy concerns. WikiTraccs downloads external images and then migrates them as page attachments.

Note: Inline images can sometimes mess up line breaks. WikiTraccs v0.2.0 took a great step in the direction of tackling those issues - check it out!

Confluence Links to Pages and other Content

SharePoint Links to Pages and other Content

WikiTraccs changes regular Confluence page links so that they point to the new SharePoint page location.

WikiTraccs will also transform links to other spaces. To do this it needs to know which space maps to which SharePoint site - this is done via the Space Inventory list.

Furthermore, plain text links (“hard links”) are migrated as-is, unless they link to a Confluence page. WikiTraccs should be able to figure those out.

Page Attachments

Confluence Page Attachments

SharePoint Page Attachments

There is more information available in this blog post: New attachments macro transformation

Users and Groups

Confluence Mentions and Profiles

SharePoint Mentions and Profiles

In SharePoint, WikiTraccs creates “mention texts” like in Confluence. Those link to the SharePoint people search where the search field is pre-populated with the mentioned user’s email address.

People profile and image macros are converted to the “mention text” format as well.

Note: When migrating, WikiTraccs needs a certain permission level to access user’s email addresses.

Tables

In Confluence users can do a lot with tables. In SharePoint not so much. Have a look at the Nested macros and tables section in Features to learn more about that.

Confluence Simple Tables

SharePoint Simple Tables

Confluence Table Widths

SharePoint Table Widths

WikiTraccs normalizes Confluence tables and the result can be seen below. Tables are de-nested and merged cells are un-merged:

Confluence Advanced Tables

SharePoint Advanced Tables

Confluence Larger Tables

SharePoint Larger Tables

Note: Wide tables are usually a challenge for SharePoint because SharePoint pages are narrow compared to Confluence. SharePoint shows a scroll bar if the table is wider than the page.

4.6 - Prerequisites

This article describes the prerequisites for running WikiTraccs.

Prerequisites

System requirements

ComponentWorks
CPU64-bit 2.6-GHz quad core processor
RAM16 GB
Operating systemWindows 11 client, .NET 6
ComponentWorks
CPU64-bit 3.1-GHz quad core processor
RAM24 GB
Operating systemWindows Server 2012 R2 Standard, .NET 6

Software requirements

  • a recent version of the Chrome browser (for authenticating with Confluence, refer to the authentication article for details on authentication)

Endpoint requirements

Refer to the endpoints article on required endpoints.

4.7 - Known Confluence Macros

This article is a resource where you can find information about known Confluence macros.

How WikiTraccs handles Confluence macros

WikiTraccs contains transformation rules for a range of Confluence macros. They are transformed on the fly and ideally the macro is replaced by something native to the SharePoint world.

If there is no SharePoint way of replacing a Confluence macro then WikiTraccs tries to find an approximation. But often there is just no equivalent for a Confluence macro. In those cases a text placeholder will be used to mark the spot where the macro has been in Confluence.

List of known macros

The following table shows macros that are explicitly known to WikiTraccs and how they are handled.

MacroSupport LevelMacro Transformation Details
StatusπŸ’šThe macro will be transformed to text with a color that tries to match the original (not so many choices here in SharePoint…).
NoformatπŸ’šThe “no formatting” content formatting will be mirrored in the SharePoint page.
Code BlockπŸ’š/🟑Code macros are transformed to SharePoint code web parts which provide comparable functionality. But if the code macro in Confluence is part of a table or any other nested structure then there is no 1:1 representation in SharePoint. The web part in this case will be replaced by a placeholder and the web part inserted at a top level place in the SharePoint page.
SharePoint Online Document (by Communardo)🟑The macro will be replaced by a link to the SharePoint document.
SharePoint Online List (by Communardo)🟑The macro will be replaced by a link to the SharePoint site containing the list; the link text contains the SharePoint list ID.
Profile Picture🟑The profile picture will be transformed like user @-mentions in the page (see section below for details).
User Profile🟑The user profile card will be transformed like user @-mentions in the page (see section below for details).
Enhanced Profile (by Communardo)🟑The user profile card will be transformed like user @-mentions in the page (see section below for details).
Jira🟑The Jira macro will be replaced by a link to the Jira issue.
View File🟑The file card will be replaced by a link to the file attachment of the SharePoint page.
Office Powerpoint🟑The file card will be replaced by a link to the file attachment of the SharePoint page.
Office Word🟑The file card will be replaced by a link to the file attachment of the SharePoint page.
Office Excel🟑The file card will be replaced by a link to the file attachment of the SharePoint page.
Microsoft Stream Video🟑The file card will be replaced by a link to the video.
Panel, Info, Note, Warning, Tip🟑The macro will be replaced by a table rebuiding the macros’s structure as far as possible; this can introduce nested tables which will be a challenge for page layout (see section below for details on nested tables).
Expand🟑The expand functionality will be lost and the content remains expanded in the SharePoint page.
Gliffy🟑The Gliffy diagram will be replaced by an image of the diagram (that should be present in Confluence as page attachment); if there is no image a placeholder text will be used instead.
draw.io (by //Seibert/Media)🟑The draw.io diagram will be replaced by an image of the diagram (that should be present in Confluence as page attachment); if there is no image a placeholder text will be used instead.
Widget Connector🟑The macro will be replaced by a link to the content it links to (for example a YouTube video), if there is such a link.
HTML🟑The HTML content from the macro will be transformed to a code web part in SharePoint; so the HTML is transformed to code and especially JavaScript will not be executed in the SharePoint page.
Tabs Container, Tabs Page (by Adaptavist)🟑This macro displays multiple tabs which is a challenge because SharePoint has no tabs. So the tabs are each one transformed to “normal” page content and all tabs are added one after another to the page.
Attachments🟑Note that the actual attachments of Confluence pages are always migrated to SharePoint. The Page Attachments macro is migrated as a static view of the macro at the time of migration. So the SharePoint page will show a static table with attachment links and some metadata.
Page Tree🟑The Page Tree macro is migrated as a static view of the macro at the time of migration. The SharePoint page will show a static tree of page links.
MultiExcerpt (by Appfire)⏹
Table Filter (by StiltSoft)⏹️Filter functionality is lost, the table remains.
Excerpt⏹️
Single Cite (by Purde Software)⏹️The macro will be replaced by the citation content.
Table Chart⏹️The chart will be replaced by a table of the underlying data.
No Print⏹️The no-print functionality will be lost, the content remains.
LivesearchπŸ”»
AnchorπŸ”»The anchor link will be removed, its text or content remains.
Content by LabelπŸ”»
Excerpt IncludeπŸ”»
Metadata News (by Communardo)πŸ”»
Metadata (by Communardo)πŸ”»
Recently UpdatedπŸ”»
Profile List (by Communardo)πŸ”»
Include PageπŸ”»
Team CalendarπŸ”»
Jira ChartπŸ”»
Task ReportπŸ”»
Content Report TableπŸ”»
Create from TemplateπŸ”»
Page PropertiesπŸ”»
Page Properties ReportπŸ”»
Table of ContentsπŸ”»
RoadmapπŸ”»
Page Tree SearchπŸ”»
Children DisplayπŸ”»
Search ResultsπŸ”»
Create PageπŸ”»
Cite Summary (by Purde Software)πŸ”»
Blog PostsπŸ”»
Display Metadata (by Communardo)πŸ”»
Metadata Overview (by Communardo)πŸ”»
Metadata History (by Communardo)πŸ”»
Content by Metadata (by Communardo)πŸ”»
Other macrosπŸ”»/⏹️The macro will be replaced, either by a text placeholder or its body content.

Transformation types:

  • πŸ’š “nearly 1:1” - there is a SharePoint or HTML equivalent allowing to rebuild the functionality in SharePoint
  • 🟑 “changes in layout or functionality” - transformation with changes to layout or functionality; this is a transformation that is more than just a generic placeholder, but it does not fully meet the original macro functionality
  • ⏹️ “to macro body” - this works for macros that contain “richt text content” which is just normal wiki page content; this transformation type will replace the macro by its rich text content, thus kind of “unboxing” it
  • πŸ”» “to placeholder” - transforms to a non-functional placeholder text, showing the macro’s parameters

All macros not explicitly mentioned here are transformed to placeholders, so are either ⏹️ or πŸ”». When macros contain rich content then the macro is replaced by its rich content.

4.8 - Security

This section covers security-related topics.

Architectural Overview of WikiTraccs

The following image shows which building blocks are at play when running a WikiTraccs migration.

The building block explained:

Building blockPurpose
Client’s computerA computer running WikiTraccs. Uses Windows as operating system. You control this computer.
WikiTraccs console applications (GUI, Console)WikiTraccs consists of two .NET-based console applications: WikiTraccs.GUI.exe and WikiTraccs.Console.exe. WikiTraccs is portable, no installation is necessary.
ConfluenceThe source Confluence environment that should be migrated to SharePoint. You decide whether this environment is being connected to via HTTP or HTTPS by using the respective URL scheme (http://, https://) in the source address configuration of WikiTraccs.
Confluence migration accountThe account used to log in to Confluence. WikiTraccs uses the session of this account and therefor has access to everything this account has access to.
SharePoint, MS GraphThe Microsoft 365 target environment that will be migrated to. All connections are HTTPS and TLS-secured. For the state of TLS in Microsoft 365 have a look at Preparing for TLS 1.2 in Office 365 and Office 365 GCC.
SharePoint migration accountThe account used to log in to SharePoint. The permission that WikiTraccs has is the intersection of this user’s permission and the permissions configured for the Azure AD app registration.
Azure AD App Registration for WikiTraccsAzure AD app registration that allows WikiTraccs to work with Microsoft services on an API level. See Registering WikiTraccs as app in Azure AD for details.
Locally stored filesWikiTraccs stores files locally on the system it runs. Those files comprise: attachments downloaded from Confluence, log files, caches, WikiTraccs.GUI configuration, debugging-related files (if certain debug settings are turned on)
Client’s migration teamThis is your migration team.
WikiTraccs supportSupport channels, mainly GitHub, email, and Microsoft Teams. Support might ask for log files to diagnose issues. You decide if you want to provide those log files.
Other servicesOther services being used are documented below, and their respective endpoints in the Endpoint reference.

Other services

Google Chrome WebDriver Download

WikiTraccs launches and controls an automated Chrome browser for the Confluence migration user to log in, and to get the session cookies.

This automation requires the Google Chrome WebDriver to be downloaded and run. This is an application provided by Google and needs to match the Chrome version running on the migration machine. So after every Chrome update on the migration machine a matching Chrome driver will be automatically downloaded by WikiTraccs.

The endpoints used to get the WebDriver are listed in the Endpoint reference.

Further Information

4.8.1 - Endpoint reference

This article is a resource where you can find endpoint information for WikiTraccs.

Required endpoints

The following table lists the required endpoints for using WikiTraccs.

Microsoft 365

Required EndpointPurpose
login.microsoftonline.comAuthentication with Microsoft
aadcdn.msftauth.netAuthentication with Microsoft
login.live.comAuthentication with Microsoft
*.sharepoint.comAccess to store pages migrated from Confluence to SharePoint

Atlassian Confluence REST

WikiTraccs uses the REST endpoints of Confluence. The REST endpoints are expected under the following URL:

  • <confluencebaseurl>/rest/api/

Automatic Chrome WebDriver download

Required EndpointPurposeOwner info
chromedriver.chromium.orgChrome WebDriver version detectionWhois registrant: Google LLC (CA, US)
chromedriver.storage.googleapis.comChrome WebDriver downloadWhois registrant: Google LLC (CA, US)
googlechromelabs.github.io/chrome-for-testing/latest-patch-versions-per-build-with-downloads.jsonChrome WebDriver version information for Chrome starting with version 115Github-Repository owner: Google Chrome team
edgedl.me.gvt1.comHost for Chrome WebDriver downloadsWhois registrant: Google LLC (CA, US)

Refer to the troubleshooting section for handling blocked connections to those endpoints.

Optional endpoints

Atlassian Confluence XML-RPC

WikiTraccs uses the REST endpoints of Confluence with one exception.

There is one endpoint of the old XML-RPC API that is being used to read space permissions, since those are not available via the REST API. This endpoint is expected under the following URL:

  • <confluencebaseurl>/rpc/xmlrpc/

Space permissions are currently retrieved by WikiTraccs but not processed during the migration. It currently is no problem when this endpoint is not available, but data about space permissions might be missing when a future release of WikiTraccs starts working with them.

4.9 - Using WikiTraccs.GUI

This section helps with using WikiTraccs.GUI, the user interface for WikiTraccs.Console.

4.9.1 - Source Configuration

Configuring the Confluence source of the migration.

Confluence Base Address

Enter the Confluence base URL into the Confluence base address field.

Source configuration

Note that the base URL might differ from the one the end user sees in the browser address bar.

How to manually check that the base URL is correct?

You can check that the base URL is correct by appending /rest/api/user/current and opening the resulting URL in the browser.

Example: Log in to Confluence. Then, assuming the base URL is https://contoso.com/wiki, open https://contoso.com/wiki/rest/api/user/current in the browser. It should show you information about your current user.

Confluence Authentication Type

Choose Anonymous if Confluence is accessible without a logged in user.

Choose Interactive Login to log in interactively. When starting the migration, WikiTraccs will open Confluence in a browser where you can log in. Then, WikiTraccs takes the session cookies from this browser session and uses them when accessing Confluence. To Confluence this looks like the user that was used to log in is accessing the content.

Advanced Settings

Choose the Advanced button to open the advanced settings dialog.

In the Additional cookie names input, enter the names of additional cookies WikiTraccs should use to authenticate with Confluence. Separate multiple names by semicolon ;.

WikiTraccs checks the presence of those cookies when testing the Confluence connection. The test fails if those cookies cannot be found.

4.10 - Known Issues

This article is a resource where you can find information about known issues and limitations.

Limitations

Pages with more than 2 MB of page text content cannot be created in SharePoint Online. This is a known limitation of SharePoint Online. Note that this does NOT mean page attachments, but actual page content. Pages hitting this limit would be massively long.

When migrating page restrictions, WikiTraccs will only migrate up to 200 user and group restrictions.

Overly long page titles break page creation in SharePoint. This is tracked in issue #3.

Changes to a Confluence page’s attachments are not counted as “page change”. The page is detected as unchanged, event if e.g. attachments are added.

Changes to a Confluence pages’s title will duplicate the page in SharePoint, as the file name of the SharePoint page changes. Those kinds of title changes in Confluence might also lead to stale or broken links in SharePoint. If already migrated pages (in SharePoint) link to the newly migrated page (that now has a new name in SharePoint), those links will point to the old page; or be broken if the old page is deleted manually.

Current limitations of WikiTraccs.Console

WikiTraccs.Console does not close itself when it has finished migrating all scheduled pages from Confluence to SharePoint. Press Ctrl+C into the console window of WikiTraccs.Console to shut down the application, then close the window; afterwards you can start another migration. This is tracked in issue #61.

4.11 - Glossary

This article is a resource where you can definitions of terms that are used in this documentation.
TermSynonymsMeaning
Tenant (Microsoft 365)-Refers mostly to a SharePoint Online instance or sometimes the Azure AD that is associated with it, at least in this documentation. Tenants are often referred to by an ID like “170dd63a-3297-6006-8060-493a8304d6fc”. They can also be referred to by a host name like “contoso.onmicrosoft.com”, but that might not always be supported depending on the client used.
Tenant (Atlassian Cloud)-For details on Atlassian’s tenant concept refer to Atlassian Cloud architecture and operational practices. Throughout this documentation the tenant will refer to a specific Confluence instance (which is technically incorrect, but corresponds to the use of “tenant” to refer to SharePoint).
Site (SharePoint)Site Collection, SubsiteUsually refers to a site collection in SharePoint. It can also refer to a subsite in SharePoint, but those are not so widely used anymore in SharePoint Online. When working with sites they are usually referred to by their URL like “https://contoso.sharepoint.com/sites/sitename".
Site (Confluence)-In this documentation, a “site” refers to a Confluence instance. In a broader sense a site can contain multiple other products as well, like Jira. The Confluence site in WikiTraccs is referred by URL to Confluence (like “https://wiki.contoso.com” or “https://contoso.atlassian.net/wiki" ). This might change in the future when WikiTraccs handles more products and grows its Confluence cloud coverage.

4.12 - Authentication

This article is a resource where you can find authentication information for WikiTraccs.

4.12.1 - Authenticating with SharePoint Online

This article is a resource where you learn about authenticating with SharePoint Online.

The following authentication methods are currently supported by WikiTraccs:

  • interactive authentication (supports MFA)
  • device-code authentication (supports MFA)
  • client credentials authentication (no MFA support)

Each of those authentication methods requires an Azure AD application to exist. WikiTraccs has to know the ID of this application.

Prerequisites

When “authenticating with SharePoint Online” you are in fact authenticating with an Azure AD application that must be configured to authorize the access to SharePoint Online. Such an Azure AD application has to either exist or you have to register a new one.

If you are lucky then there is already an Azure AD application registered that you can use. One example for an existing application is the Azure AD application that is registered when using PnP PowerShell. The registration of this application is documented here: Setting up access. The cmdlet to use is Register-PnPManagementShellAccess.

You can also register a new Azure AD application for use with WikiTraccs. This can be done manually in the Azure Portal or via PnP PowerShell. A sample on how to do this via PnP PowerShell is shown here: Register your own Azure AD App.

The following permissions must be configured for the Azure AD application:

  • delegated permissions in Microsoft Graph: Sites.FullControl.All (note: requires admin consent)
  • delegated permissions in SharePoint: AllSites.FullControl (note: requires admin consent)

What if FullControl cannot be granted? There is a plan B but with less features.

The following permissions will allow migrations as well:

  • delegated permissions in Microsoft Graph: Sites.Manage.All (note: no admin consent required)
  • delegated permissions in SharePoint: AllSites.Manage (note: no admin consent required)

Without full control permissions WikiTraccs will be limited in what it can migrate:

  • page permissions cannot be configured, as WikiTraccs won’t be allowed to do so
  • out-of-the-box SharePoint page and file metadata Created By, Created (Date), Modified By, Modified (Date) cannot be set, as this requires the same permissions as configuring permissions

Ultimately - regardless of the Azure AD application you choose to use - WikiTraccs needs to know the ID of this application and the application has to permit a certain amount of access to the target sites where WikiTraccs will migrate Confluence content to.

Interactive authentication

Interactive authentication allows to sign-in with a user that will be used to access SharePoint Online. Use a user account that has Owner permissions on the target SharePoint site.

With interactive authentication multi-factor authentication (MFA) is fully supported.

Choose Interactive as Target: Authentication type.

Enter the Azure AD application ID into the Azure AD Application Client ID input field. (Note: This ID looks like “31359c7f-bd7e-475c-86db-fdb8c937548e”.) The user must be granted access to the Azure AD application that is used to authenticate with.

Also fill the Target SharePoint Site Address and Target Tenant ID fields.

Select the Test SharePoint connection to test connecting. A dialog window will appear to display the result of this test.

Device code authentication

This authentication mode is currently not supported in WikiTraccs.GUI and only available in WikiTraccs.Console.

Documentation is tbd.

Client credentials authentication

Documentation is tbd.

4.12.2 - Authenticating with Confluence

This article is a resource where you learn about authenticating with Confluence.

The following authentication methods are currently supported:

  • cookie-based authentication

With this authentication method WikiTraccs uses the context of a logged-in user account.

To authenticate with Confluence WikiTraccs will open a Chrome browser window.

Log in to Confluence like you normally would. WikiTraccs will use the cookies from the authenticted browser session to access Confluence.

Required permissions in Confluence

The permissions of the Confluence account you log in with determine what can be migrated.

The easiest approach is to log in with a Confluence admin account that has access to all spaces that should be migrated. This allows for content and permission migration.

But maybe you don’t want to use a Confluence admin account. In this case you can also use an account that is space admin in all to-be-migrated spaces. This allows for content and permission migration of those spaces.

The least permissive approach is to use an account that is no admin whatsoever but has normal user permissions like view and edit. This allows for migration of content this account has access to, which might not be all pages. Permission migration is not possible with a non-admin user account.

Certain operations like retrieving user account information or group memberships might be prohibited for non-admin users which might hinder WikiTraccs. If you see such errors in the log try using an account that has more permissions.

4.13 - Data storage

This article is a resource where you can find information about stored data.

Data stored during transformation

Every page and attachment is stored locally.

Caching

WikiTraccs uses caches to store data for some time without calling the Confluence API again.

Detailed documentation is TBD.

4.14 - Confluence Inventory

How to get information about your source Confluence environment.

Getting information about your source Confluence environment helps estimating migration efforts and durations.

The FAQ item How much time does it take to migrate? has some information about the relationship between content and the time it takes to migrate.

This documentation does not aim to be an exhaustive inventory guide for Confluence. This is not the scope of WikiTraccs. There is software and experienced third parties out there that can cover this part of your migration.

Nevertheless, this section shall serve as a collection of resources that proved valuable in the past. It is likely to grow as time passes.

Have a look at the child pages for more information.

4.14.1 - Getting the Confluence page count

How to determine the number of pages in the source Confluence?

The number of pages directly correlates with migration effort and times. This is why it’s a must to determine the number of pages in Confluence in one of the early phases of your Confluence to SharePoint migration project.

There are different approaches to getting the Confluence page count, described in the following sections.

Getting the page count from the database via SQL

Pro:

  • returns a guaranteed accurate page count

Contra:

  • needs permission to run SQL queries on the Confluence database
  • does not work with Confluence Cloud

Connect to the Confluence database and run the following SQL query:

select count(*) from content where (contenttype='PAGE' or contenttype='BLOGPOST') and prevver is null and content_status='current';

Note: Depending on the type of database the SQL query syntax might vary.

Getting the page count from the REST API

Pro:

  • easiest option, can be run in any browser
  • works in Confluence Cloud

Contra:

  • needs an account that is member of the confluence-administrators group
  • yields an inaccurate page count if user has too low restrictive permission level
  • does not work if Confluence search is broken or the search index is outdated

Copy the following search URL and replace confluencebaseurl with your Confluence’s base URL:

<confluencebaseurl>/rest/api/search?cql=type IN (blogpost, page)&limit=0

If you typically open Confluence at https://confluence.contoso.com the search URL would look like this:

https://confluence.contoso.com/rest/api/search?cql=type IN (blogpost, page)&limit=0

Open a browser, navigate to Confluence and log in.

Copy above search URL to the address bar of the browser you logged into Confluence with, and press the Return key to load the result.

The browser should now show text like this:

{"results":[],"start":0,"limit":0,"size":0,"totalSize":39348,"cqlQuery":"type IN (blogpost, page)","searchDuration":55,"_links":{"base":"https://confluence.contoso.com","context":""}}

The totalSize number is the page count, here: 39,348.

Third-party solutions

Let me know which third-party solutions you’d recommend: Get in touch.

4.15 - License Activation

This article describes how to activate a purchased WikiTraccs license.

After purchasing WikiTraccs a license key will be shown. Furthermore, an email will be sent to the email address entered into the checkout form.

Create a new, empty file license.txt file in the WikiTraccs.Console folder. Open license.txt for editing. Then copy and paste the license key to this file. Save and close the file.

If WikiTraccs.GUI or WikiTraccs.Console is running, close it.

Start WikiTraccs. It should now recognize the license file.

Troubleshooting

WikiTraccs logs information about any license files it finds, including locations it expects such a file to be. Check the log file that the file is at an expected location. Or get in touch if you need help.

4.16 - Monitoring Confluence to SharePoint Migration Progress

How to monitor the progress of migration from Confluence to SharePoint? This article explains how.

Viewing progress via the Site Pages library

The Site Pages library of every target space contains migrated pages and metadata.

Use the library view Recent Pages (WikiTraccs) to gain insights into the migration success for every single page. The SharePoint page’s metadata also includes the space key and content ID.

You can correlate the contents of the Site Pages library with the content of the source Confluence spaces. But this can be tedious.

What if pages are missing? How to quickly determine which ones? Let’s look at progress log files.

Using progress log files to get insights

As of release v1.1.0 WikiTraccs provides information about the migration progress in different progress-related log files:

Log files containing information about the Confluence to SharePoint migration progress.

The information you can gather from these files is:

  • How many pages are scheduled to be migrated?
  • Which pages have already been migrated to SharePoint?
  • Which pages are yet to be migrated?
  • Which pages have been migrated but need an update?

See below for a quick rundown of the log files and their content.

The values in those files are separated by tabulator. So it’s nearly CSV, but with tab instead of comma. The file name contains a timestamp, the Confluence site ID as specified in the configuration, the space key, and the last part of the target SharePoint site URL.

Progress log file documentation

xxx__10-not-yet-migrated-pages.txt

This file contains information about Confluence pages that are yet to be migrated.

Sample content:

CASIG	78022359	CA2SIG - Meeting November 29	/display/CASIG/CA2SIG+-+Meeting+November+29
CASIG	78022377	2022-11-22 Standard WG	/display/CASIG/2022-11-22+Standard+WG
CASIG	80773916	2022 12 06 Standards WG	/display/CASIG/2022+12+06+Standards+WG

The tab-separated columns in this file are:

  • Confluence space key
  • Confluence page ID
  • Confluence page title
  • Confluence page URL
xxx__20-migrated-pages

This file contains information about migrated pages. It contains information about existing Confluence pages where a corresponding SharePoint page exists as well.

Sample content:

CASIG	24781062	Climate Action and Accounting SIG Home	/display/CASIG/Climate+Action+and+Accounting+SIG+Home	97652
CASIG	24781122	Meetings	/display/CASIG/Meetings	97653
CASIG	24781124	Member Directory	/display/CASIG/Member+Directory	97654

The tab-separated columns in this file are:

  • Confluence space key
  • Confluence page ID
  • Confluence page title
  • Confluence page URL
  • SharePoint page ID (in the Site Pages library)
xxx__25-update-state-of-migrated-pages

This file contains information about the freshness of migrated pages.

Sample content:

+++
SourceTenantId = "https://confluence.contoso.com/"
PageSelectorType = "ConfluenceSpace"
PageSelector = "CASIG"
CreationDateUtc = 2023-01-21T15:30:07.1691711
+++
CASIG	Page	78022313	2022-11-21 Peer Programming Call	/display/CASIG/2022-11-21+Peer+Programming+Call	2022-11-30-221728	2022-11-29-231728	needsupdate
CASIG	Page	78022335	CA2 SIG - Meeting November 15	/display/CASIG/CA2+SIG+-+Meeting+November+15	2022-11-24-065240	2022-11-24-065240	uptodate
CASIG	Page	78022347	CA2 SIG - Meeting December 13	/display/CASIG/CA2+SIG+-+Meeting+December+13	2022-12-14-014657	2022-12-14-014657	uptodate

The file contains a header that is enclosed with +++.

Following the header, the list of page update states starts.

The tab-separated columns are:

  • Confluence space key
  • Confluence content type: Page or Blogpost
  • Confluence page ID
  • Confluence page title
  • Confluence page URL
  • Modification date of the Confluence page
  • Stored modification date of the migrated page in SharePoint (this is the Confluence page modification date at the time of migration)
  • State of the SharePoint page
    • uptodate: this page is up to date
    • needsupdate: this page has been updated in Confluence since its migration
    • cannotdetermine: metadata in SharePoint is missing, cannot determine if update is needed
xxx__30-aggregated-info

This file contains information that could be gathered from the other files, but already aggregated:

Sample content:

Source Confluence Site: https://wiki.hyperledger.org
Target SharePoint Site: https://contoso.sharepoint.com/sites/migration-target
Space Key: CASIG
Blog posts included in migration and calculation: no
Confluence page count for space space CASIG: 292
Migrated SharePoint pages that correspond to found Confluence pages in space CASIG: 259
Migrated SharePoint pages overall for space CASIG: 259
Pages yet to be migrated for space CASIG: 33

If Migrated SharePoint pages overall for space is larger than Migrated SharePoint pages that correspond to found Confluence pages in space then pages turned inaccessible in Confluence (deleted? permission denied?) but the once-migrated pages in SharePoint still exist.

Progress log file cadence

WikiTraccs creates progress log files at specific times:

  • when starting a migration - log files for each scheduled space will be created
  • when stopping a running migration by pressing Ctrl+C in the console window of WikiTraccs.Console - log files for each space handled so far will be created
  • when the migration is done - log files for each space handled so far will be created

This means that multiple progress log files per space will be created. Look at the ones with the most recent timestamp to see the latest progress information.

You can delete or archive old progress log files. Every new migration run will create new files.

4.17 - Multilingual Pages

Resources that cover migrating multilingual Confluence pages to SharePoint.

How does the translation work in Confluence?

There are third-party apps that enable users to translate pages in Confluence. WikiTraccs currently supports Scroll Translations.

How does the translation work in SharePoint?

SharePoint has a history of more or less usable approaches to multilingual user interfaces and content.

WikiTraccs supports different ways of migrating page translations from Confluence to SharePoint:

  1. migrating only one language, the translation with most content in Confluence
  2. migrating only one language, as chosen via configuration (not yet supported)
  3. migrating all translations to a single SharePoint page (default mode, supported as of WikiTraccs 1.4.2)
  4. migrating each translation to a separate page in SharePoint (not yet supported)

Refer to the following pages for more information

4.17.1 - Info about Scroll Translations

This article provides some background information about the Scroll Translations solution.

What is Scroll Translations? How does it make Confluence pages multilingual?

Scroll Translations is a third-party app by K15t that allows to translate Confluence pages to different languages.

Under the hood Scroll Translations creates a macro for every language the page is translated to. Those macros are stored in the page content.

The user can choose which language they want to see in Confluence. Only one language is displayed at a given time.

WikiTraccs can see all languages at once when it migrates a page and can act on them.

4.17.2 - Migrating all Languages to one SharePoint Page

The easiest apprach to migrating all Confluence page languages to SharePoint.

Please have a look at the release notes of WikiTraccs 1.4.2 for details.

4.17.3 - Migrating to Multilingual Pages in SharePoint Online

This article covers migrating Confluence pages to SharePoint Online, using the out-of-the-box multilingual pages features of SharePoint.

A brief introduction to multilingual SharePoint

Over time, there have been many approaches to multilinguality in SharePoint, both out-of-the-box ones and from third parties.

When searching for information on multilingual SharePoint sites remember to look at the date of information you find. Documentation about multilingual SharePoint pages should be newer than 1-2 years, and for SharePoint Online, not SharePoint on-premises.

There are also different approaches depending on whether you want to translate the SharePoint user interface (list titles, content types etc.), or the content of pages (text, web parts).

We shall focus on modern approaches to translating content of modern pages in SharePoint Online.

Two approaches to make pages appear in different languages are common:

  • providing multiple languages on one page
  • using the out-of-the-box feature for multilingual modern SharePoint pages

The following section looks at the second option, the out-of-the-box feature.

How do multilingual pages work in SharePoint?

Microsoft has an out-of-the-box feature for creating page translations documented here: Create multilingual SharePoint sites, pages, and news.

It is disabled by default and has to be switched on.

When this feature is enabled, a separate page can be created for each supported language. SharePoint takes care of routing the user to the page that matches their profile language.

And that’s basically it. Each language get’s a separate SharePoint page. The pages are connected by metadata.

WikiTraccs can create those translated pages, based on translations it finds in the source Confluence pages.

4.18 - Setting up .NET

This article describes alternative ways to installing Microsoft .NET

WikiTraccs requires .NET 6 to run.

But you don’t have to care if you download the self-contained version which comes with .NET 6 bundled.

The following secions each present a complete solution to setting up .NET 6 for WikiTraccs, from easiest to hardest. Choose one.

Self-contained WikiTraccs

This is the headache-free all-inclusive option. Get the release zip file with “selfcontained” in the name. Extract and run, it should work without further setup.

Standard .NET installation

Open a browser and go to the Microsoft Dotnet download page, e.g. https://dotnet.microsoft.com/en-us/download. Follow the instructions on how to install the .NET 6 Runtime for your platform (Windows, …).

You should now be able to run WikiTraccs.

Setting up portable .NET on a system with restricted permissions

.NET can be set up without adminstrative rights even in restricted environments.

  1. Open a browser and go to the Microsoft Dotnet download page, e.g. https://dotnet.microsoft.com/en-us/download/dotnet/6.0.
  2. This time choose one of the binaries that match your platform:

    Download .NET SDK binaries

  3. Unzip the file to %USERPROFILE%\dotnet and update or create the following environment variables:
DOTNET_ROOT = %USERPROFILE%\dotnet
PATH = %USERPROFILE%\dotnet;%PATH%
DOTNET_MULTILEVEL_LOOKUP = 0

You should now be able to run WikiTraccs. Try rebooting if it doesn’t work immediately.

4.19 - Updating previously migrated pages

This article explains how to update older migrated pages where the original Confluence pages have since been changed

Starting with release v1.7.0 WikiTraccs supports updating migrated pages.

Why update older migrated pages?

Updating older pages is relevant when pages migrated from Confluence to SharePoint are not protected from changes in Confluence, during or after the migration.

When users edit a page in Confluence, but that page already has been migrated to SharePoint, the SharePoint page will be outdated. It does not reflect the current state of the Confluence page anymore.

That’s where the update mode comes in, sometimes also called delta migration.

How to detect pages that have been changed since the last migration?

You simply start a migration to learn about the update state of already migrated pages.

Every time a migration starts, WikiTraccs will check if the SharePoint target site already contains migrated pages (from a previous migration). If such pages exist, it will compare the modification date both in SharePoint and in Confluence. The result is written to progress log files.

Have a look at the documentation about progress log files: Monitoring Confluence to SharePoint Migration Progress > Using progress log files to get insights.

One of those types of progress log files contains information about the update state of already migrated pages; that’s the files with 25-update-state-of-migrated-pages in their name.

Here’s a screenshot showing progress log files for 3 migrated spaces (each having 3 progress log files):

Those spaces have been migrated before and when starting another migration WikiTraccs checked for outdated pages, and found two spaces to have outdated pages.

You can quickly see how many outdated pages there are as WikiTraccs writes this information to the file name of the progress log file, like marker-x-needupdate-y-other.

In the screenshot above, one space has 2 pages that need an update, for the other space it’s 3 pages. One space is up-to-date since the marker part is missing from the file name.

How to tell WikiTraccs to update outdated pages?

You tell WikiTraccs which pages it should update by marking those pages in the progress log files, and copying those files to the WikiTraccs.GUI\input folder.

Here are the steps:

  1. locate a progress log file with 25-update-state-of-migrated-pages and marker in its file name
    • this progress log file contains information about outdated pages
  2. open the progress log file in a text editor - this files contains a header surrounded by +++ (ignore this), and multiple lines, each one representing a migrated page (you want to look at those)
  3. take note of the update state near the end of each line, like uptodate or needsupdate
    • a line might look like this: SPACEKEY Page 123456789 Page Title /display/SPACEKEY/Page+Title 2023-08-31T10:16:22 2023-07-10T13:26:24 needsupdate
    • the values in this line (like SPACEKEY, page ID 123456789, etc.) are separated by tabulator (the “tab key”)
    • note: you might know CSV-files, where values in each line are separated by comma or semicolon; here the tabulator is used instead
  4. mark pages you want WikiTraccs to update by adding an x to the end of the page’s line
    • make sure to separate the update state value (like needsupdate) and the x you add with exactly one tab character; note: this tab character might already be there
    • the line then should look like this: SPACEKEY Page 123456789 Page Title /display/SPACEKEY/Page+Title 2023-08-31T10:16:22 2023-07-10T13:26:24 needsupdate x - note the x at the end that marks the page for update
  5. save the progress log file when you are finished marking pages for update
  6. now copy this modified progress log file to the input folder, that is located next to the logs folder; note: both of those folders are in the same location as WikiTraccs.GUI.exe, which you used to run WikiTraccs
  7. run WikiTraccs.GUI
  8. start a migration as usual, by selecting the Start transformation button in WikiTraccs.GUI

WikiTraccs looks at the input folder when a migration starts. It automatically processes all progress log files it finds in there. Pages marked for update will now be migrated again, overwriting corresponding existing pages that are present in SharePoint.

How does the delta migration differ from a normal migration?

There are certain differences when WikiTraccs finds and processes progress log files from the input folder.

If there are pages marked for update:

  • WikiTraccs will only migrate those pages marked for update and skip any spaces that have been marked for migration in the Space Inventory
  • WikiTraccs will not remove any files from the input folder
    • you have to remove those files manually, otherwise WikiTraccs will migrate them again and again, for each migration you start
  • WikiTraccs will not write progress log files for updated pages
    • to get updated progress log files, remove any files from the input folder (to end delta migration mode) and start a regular migration; new progress log files will then be created that should reflect that pages are now up-to-date

Notes about limitations of delta migrations

There are some points to be aware of when it comes to delta migrations.

Modification detection

WikiTraccs can detect changes to Confluence pages, but not attachments. For example, when an attachment is added to a Confluence page, this does not change the modification date of the page and WikiTraccs still sees this page as up-to-date.

This means that Confluence pages where only attachments changed since having been migrated are reported as uptodate in the progress log file.

Note that you can still mark those uptodate pages for update, if you want to force updating pages that WikiTraccs didn’t detect as changed.

WikiTraccs derives the file names of SharePoint modern pages from Confluence page titles. That means that changing a page’s title in Confluence can cause the following:

  • duplicate pages being created in SharePoint, since the updated page gets a new file name; WikiTraccs does not rename or remove the existing page (yet)
  • page links can break in SharePoint, when other SharePoint pages link to a page by a name that now changed due to the page being updated

Note that this does only apply when page titles change in Confluence between an initial migration and a subsequent delta migration. So those changes should be kept to a minimum.

Changes of SharePoint pages

Changed SharePoint pages will be overwritten when running a delta migration.

Keep in mind that, when marking a page for update, this will forcefully overwrite the target SharePoint page. Even if this SharePoint page was modified since the initial migration.

Performance

The delta migration is less efficient compared to the initial migration. More requests to Confluence might be made compared to bulk operations being done in the initial migration.

Please get in touch if you encounter any issues, or have suggestions that would make your life easier.

4.20 - WikiTraccs GUI vs. WikiTraccs Console

This article is a resource where you can find information about the two WikiTraccs flavors.

WikiTraccs consists of two applications: WikiTraccs.GUI and WikiTraccs.Console.

WikiTraccs.GUI is a graphical frontend that can be used to get started quickly without having to learn how to use the configuration file. When chosing to start the transformation WikiTraccs.GUI launches WikiTraccs.Console and passes along the configuration. From then on the work is done solely by WikiTraccs.Console.

WikiTraccs.GUI

A graphical user interface for WikiTraccs.

The initial size of the window might be a bit small depending on the environment you are running WikiTraccs in:

Empty sign-in experience

To make the window larger right-click the console window title bar and select Properties. Increase the size there:

Console window settings

Select OK to confirm the settings.

WikiTraccs.Console

The WikiTraccs console application doing the heavy lifting of transforming content from Confluence to SharePoint. You can skip using WikiGraccs.GUI and start WikiTraccs.Console directly. The configuration then has to be done via the appsettings.json file as described on the Settings page.

5 - Troubleshooting

What if something doesn’t work with WikiTraccs?

5.1 - Connectivity issues

This article covers how to handle connectivity issues.

The required endpoints are documented in the Endpoint reference.

Testing connectivity

The WikiTraccs GUI allows to test the connection to Confluence and to SharePoint. Select the Test Connection buttons to test.

Messages about blocked connections might look like this:

Connectivity note

Connectivity error

How to handle blocked Google Chrome WebDriver endpoints

WikiTraccs tries to detect and download the right Chrome WebDriver for the version of Chrome it finds (or which is configured to be used via the ChromeBinaryPath setting).

If auto-detection or download fails then manual configuration is necessary. Specifically two configuration options must be set:

  • ChromeDriverVersionOverride
  • WebDriverDirPath

Follow these steps to determine the right values:

  1. Open the Chrome browser
  2. Open Chrome -> (Three Dot Menu) -> Help -> About Google Chrome
  3. Take note of the version (e.g. 86.0.4240.75)
  4. Open https://chromedriver.storage.googleapis.com/LATEST_RELEASE_# in a browser, with # replaced by the version from the previous step, minus the last part; so in this example the URL would be https://chromedriver.storage.googleapis.com/LATEST_RELEASE_86.0.4240 (it will be different for you)
  5. A web page opens and shows a single number (e.g. 86.0.4240.22) - this is the value you need to use as value for the ChromeDriverVersionOverride option
  6. Now open https://chromedriver.chromium.org/downloads in a browser and search for the section ChromeDriver # where # is the version from the previous step, which in our case looks like this:

    Find the right ChromeDriver version

  7. Choose the headline which takes you to the download page for this ChromeDriver version:

    Download ChromeDriver for your platform

  8. Download the right zip file for your platform (Windows, Mac or Linux); the zip contains a single file (chromedriver.exe or chromedriver), which is the WebDriver
  9. Extract this single file to a folder; the path to this folder is the value for WebDriverDirPath

Now WikiTraccs skips the WebDriver version check and download. This should resolve connectivity issues to those endpoints.

5.2 - Authentication issues

This article covers known authentication issues and possible solutions.

5.2.1 - Confluence Authentication Issues

This article covers known authentication issues in Confluence and possible solutions.

What does a Successful Authentication look like?

To authenticate with Confluence using cookie-based authentication, WikiTraccs opens a browser to let you log in. Once you are logged in the browser window should close within about 30 seconds. This is normal behavior, indicating successful authentication.

WikiTraccs shows a success dialog if all authentication cookies could be gotten. You can stop reading in this case.

If the browser window stays open for a long time after authenticating with Confluence then WikiTraccs is not able to detect your login, for whatever reason. In this case proceed with the troubleshooting sections below.

General Troubleshooting

First, close any open WikiTraccs window and re-start WikiTraccs. Sometimes this resolves issues with authentication.

If re-starting WikiTraccs doesn’t help check if you need additional or different authentication cookies for Confluence. Those can be configured in the advanced authentication configuration dialog.

Another reason might be that the Confluence login timed out. WikiTraccs waits for a certain amount of time for the authentication cookies to appear before canceling. Try to not take too much time for logging in as this might run into a timeout.

Advanced Troubleshooting

If the steps outlined in the previous section didn’t help then something is not right. WikiTraccs might have encountered a yet unsupported configuration of either Confluence or the system it is running on.

WikiTraccs has built-in ways to troubleshoot this. Try the steps outlined in the following sections.

1. Disable Context Path Check for Cookies

WikiTraccs makes assumptions about how the context path of Confluence and cookie data relates. Let’s disable those assumptions.

In appsettings.json, add the following setting:

{
    "CustomSettings": {
        "Debug": {
            "SkipConfluenceContextPathCookiePathMatching": true
        }
    }
}

If appsettings.json does not yet exist, create it and copy above snippet to the file.

If appsettings.json already exists, find the Debug section and add the SkipConfluenceContextPathCookiePathMatching property. Create the Debug section if necessary.

Re-start WikiTraccs and check if authentication now is possible.

If authentication still cannot be detected, proceed with the next section.

2. Provide Cookies manually

WikiTraccs just needs authentication cookie values and does not really care where they come from.

Let’s provide them manually via a text file.

We need to:

  • copy cookies from the browser to cookies.txt
  • copy the user ID to appsettings.json

Open Chrome (or Edge), navigate to Confluence and log in.

Still in the browser, press F12 to open the developer tools, and choose the Application tab.

Under Cookies, select the Confluence domain. A panel on the right side should show cookies.

Check that JSESSIONID is among those cookies. Unless the cookie name has been changed via server configuration. In this case check the configured name.

In the cookie panel, select all rows with the mouse and copy them to the clipboard.

Create a new file cookies.txt in either the WikiTraccs.GUI or WikiTraccs.Console folder (depending on what your are running). Have cookies.txt open in a text editor.

Paste the cookie values from the clipboard to the open text editor and save cookies.txt.

Here’s an animated GIF showing above steps:

Now go back to the browser. The developer tools should still be open.

Choose the Elements tab, expand the HTML head element and search for the ajs-remote-user-key entry:

The ajs-remote-user-key content value.

Put the ajs-remote-user-key content value to appsettings.json like this:

{
    "CustomSettings": {
        "Debug": {
            "AjsRemoteUserKey": "8a848084865dd3b801865dd4dc420000"
        }
    }
}

Having both cookies.txt and the appsettings.json configuration in place, restart WikiTraccs and retry starting a migration.

WikiTraccs now checks if cookies.txt exists and uses the cookie values instead of starting an interative browser login session. This should succeed.

Please get in touch if this still doesn’t work.

5.2.2 - SharePoint Authentication issues

This article covers known authentication issues and possible solutions.

Empty Microsoft sign-in experience

When starting a transformation a browser window opens for you to sign in to SharePoint Online.

On some systems the browser window might stay empty. This was seen on Windows Server 2012 with Internet Explorer 11. When this happens copy the URL from the address bar, open Chrome, and paste the URL there in the address bar to load the page. Authenticate there.

Alternatively configure the system to show the sign in experience.

Empty sign-in experience

5.3 - Logging

This article is a resource where you can find information about logging.

See Troubleshooting Strategies for different log files that can be used to troubleshoot issues.

5.4 - Troubleshooting Strategies

This article covers issues and how to diagnose them.

Confluence migrations to SharePoint, as migrations in general, are rarely without issues.

WikiTraccs has been tested with Confluence instances of different versions and different ages and has been hardened against common issues. Some recurring issues like broken page content (from past migrations) or inaccessible external images are gracefully handled.

But what if something appears broken nevertheless?

This page shows how such issues can be diagnosed and which data WikiTraccs creates to help diagnosing a Confluence to SharePoint migration that appears stuck.

The easiest way for you is to put all information in a zip file and send it via email to contact -at- wikitransformationproject.com. I’ll take a look.

My goal is to identify the issue, replicate it in a test environment and make adjustments so that the issue can never occur again.

WikiTraccs grows with every Confluence migrated, since each one is unique. My goal is to make this as painless for you as possible. You can help me helping you by providing as much information as possible to replicate the issue in a test environment, so I don’t have to bother you with more questions.

Of course you can also look at the log files. If there are connectivity issues, or authentication issues the error messages are usually pretty clear, hinting in the right direction.

Which information is available to diagnose issues?

WikiTraccs logs detailed information about everything that it’s doing.

Here’s an overview of what is available and helpful for diagnosing issues, more details follow further down.

What?Where can I find it?Why does it help?
Common log filesin WikiTraccs.GUI\logs or WikiTraccs.Console\logs (depending on whether you are running WikiTraccs.GUI.exe or WikiTraccs.Console.exe)Contains detailed information about the whole migration process, including warnings and errors
Progress log filesin WikiTraccs.GUI\logs\<date-folder> or WikiTraccs.Console\logs\<date-folder> (depending on whether you are running WikiTraccs.GUI.exe or WikiTraccs.Console.exe)Contains information about migrated and yet-to-be-migrated pages; see Monitoring Confluence to SharePoint Migration Progress for details
SharePoint Site Pages libraryevery target site for the migration contains information about migrated pagesShows detailed information for every page migrated; see Measuring page migration success for details
Confluence page storage formatfor any open Confluence page choose View Storage Format; note that the Confluence Source Editor plugin has to be installed for this option to be present

Shows the page as WikiTraccs sees it; page structure and macros can be seen, analyzed and reproduced through a technical lens
Confluence page IDs and page titles of missing pagesopen the page properties in Confluence for pages that did not migrate to SharePoint and look at the browser address bar - you see the page ID there; and the page title is the page titlethe log files contain any errors that hinder migration and page IDs and titles help finding the right places in the log files

Common log files

Common log files cover information about the whole Confluence to SharePoint migration.

The log file names follow this pattern:

  • <date>-WikiTraccs.Console.log
  • <date>-WikiTraccs.GUI<date>.log

For each day new log files are created. Here’s a sample logs folder:

The <date>-WikiTraccs.GUI...txt (note the GUI part) log file is created when using WikiTraccs.GUI, for example when testing connections and filling the space inventory. This file is useful to troubleshoot connectivity and authentication issues.

The <date>-WikiTraccs.Console...txt log file is created as soon as a migration starts and WikiTraccs.GUI opens the WikiTraccs.Console console window. Or when using WikiTraccs.Console standalone. This file is useful to troubleshoot issues that happen while migrating.

Progress log files

Progress log files conver the page migration state for all spaces that are part of the migration.

They are in detail covered in Monitoring Confluence to SharePoint Migration Progress.

SharePoint Site Pages library and page metadata

Once pages have been migrated you should scroll through the Site Pages library to see if there is anything of interest.

This is described in detail in Measuring page migration success.

Specific issues and how to diagnose them

We’ll look at real-world issues and how to diagnose them.

Assume the following migration scenario:

  • source environment: Confluence 6 at http://localhost:8090/confluence, one space 7SE has been selected for migration in the space inventory
  • target environment: SharePoint Online site https://contoso.sharepoint.com/sites/arc42-template
  • the migration is done via WikiTraccs.GUI

The migration is finished when the console window looks like this:

There is nothing left to migrate, the console window can be closed by pressing Ctrl+C.

Issue: Some pages are not migrated from Confluence to SharePoint

The progress log files should tell us more.

But first we look at a successful migration result, to establish a baseline.

Case 1: A successful migration of all pages

There should be 4 log files after successfully migrating one Confluence space:

Of the four files, the first two were created before starting the migration. The last two files were created after having finished the migration.

Here’s the content of the […]aggregated-info.txt file that was created before migrating the Confluence space to SharePoint:

Source Confluence Site: http://localhost:8090/confluence/
Target SharePoint Site: https://contoso.sharepoint.com/sites/arc42-template
Space Key: 7SE
Blog posts included in migration and calculation: no
Confluence page count for space space 7SE: 32
Migrated SharePoint pages that correspond to found Confluence pages in space 7SE: 0
Migrated SharePoint pages overall for space 7SE: 0
Pages yet to be migrated for space 7SE: 32

This shows that WikiTraccs was able to retrieve information about 32 pages in this space and all have yet to be migrated.

Here’s the content of the second […]aggregated-info.txt file that was created after migrating the Confluence space to SharePoint:

Source Confluence Site: http://localhost:8090/confluence/
Target SharePoint Site: https://contoso.sharepoint.com/sites/arc42-template
Space Key: 7SE
Blog posts included in migration and calculation: no
Confluence page count for space space 7SE: 32
Migrated SharePoint pages that correspond to found Confluence pages in space 7SE: 32
Migrated SharePoint pages overall for space 7SE: 32
Pages yet to be migrated for space 7SE: 0

This time there are 32 migrated pages and there are none left to be migrated.

Success. Now we make it more complicated.

Case 2: Pages appear missing

Pages can appear missing when the migration account is not permitted to view all pages.

Here’s an example where a parent page of two child pages has been view-restricted to only the admin account:

Now, when using another Confluence account as migration account, this account won’t see those three pages.

Thus (after deleting all previously created SharePoint pages and starting a new migration) the […]aggregated-info.txt file looks like this:

Source Confluence Site: http://localhost:8090/confluence/
Target SharePoint Site: https://heinrichulbricht.sharepoint.com/sites/arc42-template
Space Key: 7SE
Blog posts included in migration and calculation: no
Confluence page count for space space 7SE: 29
Migrated SharePoint pages that correspond to found Confluence pages in space 7SE: 0
Migrated SharePoint pages overall for space 7SE: 0
Pages yet to be migrated for space 7SE: 29

Only 29 pages are reported for the space that has in fact 32 pages. But 3 of those cannot be seen by the migration account.

The solution in this case is simple: use a migration account that can access all pages that should be migrated.

Case 3: Pages are missing, even after checking permissions

This could be anything, but it should be visible in the log files.

Please send me the log files and page IDs and ideally page titles of pages you’d expect to migrate from Confluence to SharePoint. This information should help to locate any errors related to those pages in the log files.

Please send information via email to contact -at- wikitransformationproject.com.

Issue: The progress bar in WikiTraccs.GUI is stuck

This is caused by pages that have been migrated before and have been updated in Confluence since. It should only happen when migrating the same space at least twice.

The pages that need to be updated can be seen in the progress log files.

The “update mode” feature request is tracked here: Add update mode for already migrated pages.

Technically everything is correct. You need to delete the SharePoint files you want to update, before starting another migration to have them created again.

Issue: The migrated Confluence page doesn’t look good in SharePoint (visual check)

The layout is off? Content is missing? Macros are missing?

There are probably thousands of special cases that can affect the Confluence page migration to SharePoint, hundreds of which are already handled by WikiTraccs.

If there is something wrong with the resulting page please use the options under Contact to get in touch.

Please provide the following for your request to be properly handled:

  • Confluence version
  • a screenshot of the source Confluence page
  • a screenshot of the SharePoint page, with the unexpected parts highlighted
  • the storage format of the source Confluence page
  • the page ID and title of the source Confluence page
  • SharePoint page metadata for the affected page, like WT: Text Transferred Percent, WT: Failed Transformations and (most important) WT: Transformation Log (a screenshot is fine, see next section for a sample)

There are multiple ways to get the storage format for a Confluence page.

The easiest way to get the storage format is via the Confluence in user interface. For any open page choose View Storage Format:

A new browser window will open, showing the storage format. Please copy the storage format text and include it in your support request. Redact text content as needed, while leaving the structure unchanged.

Please report issues via email to contact -at- wikitransformationproject.com.

Issue: The SharePoint page metadata shows Transformation Errors and/or a Text Transferred value that is not equal to 100%

WikiTraccs tracks its migration success per page. It has hundreds of transformation rules built-in.

If WikiTraccs discoveres a new layout or macro it cannot handle, it’ll raise a flag by counting the Transformation Errors or potentially missing text.

Here’s a sample screenshot of such an issue, where certain XML tags caused problems, leading to text being skipped:

To diagnose those issues the same information as in the previous section Issue: The migrated Confluence page doesn’t look good in SharePoint is needed. The most important part is the storage format because this hopefully allows to replicate and isolate the issue in a test environment.

Please report issues via email to contact -at- wikitransformationproject.com.

5.4.1 - Get the Confluence Storage Format

This article covers how to get the starge format of a page.

The Confluence Storage Format is the technical under-the-hood view of a Confluence page. It’s what WikiTraccs “sees” and transforms when performing the Confluence to SharePoint migration.

How to view the storage format for a Confluence page? Two options.

Option 1: Use the browser to view the storage format

Here’s the Atlassian documentation on how to view the storage format: How to retrieve Confluence Storage Format

It boils down to this:

Open a page, choose the three-dot-menu, and choose "View Storage Format".

A new window will open showing the storage format.

If this option is not available, continue with the next section.

Option 2: Configure WikiTraccs.GUI to save the storage format to disk

WikiTraccs knows the storage format of each page it migrates from Confluence to SharePoint.

The storage format by default is only kept in memory and not persisted to a file.

Here’s how to tell WikiTraccs to store the storage format of every page to a file:

  1. Open the WikiTraccs.GUI folder (this is the folder where WikiTraccs.GUI.exe is stored as well)
  2. Create an empty file appsettings.json inside the WikiTraccs.GUI folder
  3. Open the appsettings.json file in a text editor and put the following text in there:
    {
        "CustomSettings": {
            "Debug": {
                "SaveTransformationInputToDisk": true
            }
        }
    }
    
  4. Save appsettings.json
  5. If WikiTraccs.GUI is open: close it and any other (console) windows it opened
  6. Open WikiTraccs.GUI and start a migration

WikiTraccs now stores the storage format for every newly migrated page in a file, in the attachment registry.

The attachment registry is a folder where attachments from Confluence are downloaded to, while migrating. You can find it in the AppData folder of your user account.

The attachment registry path for a Confluence page looks like C:\Users\<username>\AppData\Local\WikiTraccs\<confluenceuserkey>\<confluencebaseurl>\Attachments\<pageid>.

Here’s an example screenshot:

Attachment registry path for Confluence page 118587415.

The storage format for a page is stored in a file that is named like xhtml_before-<spacekey>-<pageid>.xml.

Now you can access the storage format for every page that is part of your Confluence to SharePoint migration.

5.5 - Troubleshooting FAQ

This article is a resource where you can find information about puzzling situations and possible causes.

Why is there no visible progress?

Situation

You started the transformation, the console window of WikiTraccs is open and shows some log messages.

But then nothing happens anymore. No log messages appear in the console window, it just sits there.

Possible explanations

Maybe you did not select any spaces to migrate. Use the space inventory to select spaces. The console window will also contain hints like got no spaces to handle.

Another reason might be that during migration WikiTraccs got throttled by Microsoft 365. This can cause wait times of several minutes. More logging about this will be added in the future but currently WikiTraccs might just wait without a visible indicator.

5.6 - Error Messages

This article is a resource where you can find information about error messages.

“Error while launching browser for login”

Variants:

  • “Error while launching browser for login: One or more errors occurred. (Google Chrome not found in registry)”

Interaction leading to this error:

  • selecting the Test connection button to test the connection to Confluence

Causes:

  1. Google Chrome is not installed
  2. Google Chrome is installed, but its executable could not be found at usual places

Solutions:

  1. Install Google Chrome
  2. Use the ChromeBinaryPath setting to manually configure the path to Chrome’s executable

6 - WikiPakk Reference

A reference of topics around WikiTraccs WikiPakk - the SharePoint page tree and breadcrumb.

6.1 - WikiPakk Installation

How to install WikiPakk

Installation of WikiTraccs WikiPakk

The WikiPakk solution has to be installed once in the SharePoint tenant before WikiPakk can be added to sites.

You can install WikiPakk either through the Microsoft Store AppSource, or manually via the tenant app catalog. The next two sections describe those options.

After installing the WikiPakk app to the SharePoint tenant, it can be added to sites by site owners.

Option 1: Installation via Microsoft AppSource

Installing the app via AppSource is covered in this video, as well as adding the app to a site:



Note: Administrative rights are necessary when the app is added the very first time on your SharePoint tenant. You need to be either SharePoint administrator or have administrative rights on the tenant app catalog to install the app right away. Otherwise you can request the app to be installed and an administrator has to confirm this. This has to be done only once for the SharePoint tenant.

Option 2: Installation via Tenant App Catalog

As SharePoint tenant admin install the app:

  1. Obtain the WikiTraccs-WikiPakk.sppkg solution package from GitHub
  2. Add WikiTraccs-WikiPakk.sppkg to the SharePoint tenant app catalog and enable the app

As site owner add the app to a site:

  1. Open the SharePoint site to add WikiPakk to
  2. Choose the New button, then choose App
  3. On the My Apps page, in the left navigation, choose From my organization
  4. Find WikiTraccs WikiPakk and select Add

After adding the app

Head over to the WikiPakk website to learn more.

Updating WikiPakk

WikiPakk currently does not check for updates, and neither does SharePoint. New versions can be discovered manually via the AppSource app store.

Checking for a new WikiPakk version on Microsoft AppSource

You can see the latest version of WikiPakk in AppSource on this page: Details + support.

In AppSource there will also be a changelog showing the changes per release:

Changelog of WikiPakk as shown in AppSource

Updating WikiPakk in SharePoint

There are two steps to updating WikiPakk:

  1. the SharePoint tenant app catalog needs to be updated with the newest version from AppSource
  2. SharePoint sites that use WikiPakk might need to be updated to use this new version

The following sections describe those steps.

Update the SharePoint tenant app catalog

As SharePoint administrator, open the tenant app catalog as follows:

  1. in a browser, open the SharePoint admin center
  2. in the left navigation, select More features
  3. on the right side, several options to choose from appear; look for the Apps section and select Open:

Entry to the SharePoint tenant app catalog.

  1. the SharePoint tenant app catalog should show a previously installed version of WikiPakk:

WikiPakk, installed from AppSource, showing version 2.3.1.

  1. Switch to the classic experience by selecting the classic experience link:
  1. In the classic experience, in the list of apps, select the WikiTraccs WikiPakk app
  2. At the top of the page, select the FILES tab to expand the ribbon menu (note: only if the ribbon menu is not yet visible)
  3. In the ribbon menu, select Upgrade Store App:

You will be redirected to a screen that displays Downloading from: https://addinsinstallation.store.office.com/appinstall/.

Once the file has been downloaded, you will be prompted to trust WikiTraccs WikiPakk:

  1. Choose Deploy and wait; it might appear that nothing is happening for up to 20 seconds

Once the update has been completed, you should be redirected to the app catalog and the App version number should match the version number listed in AppSource.

Now the new app version is ready to be used in SharePoint sites.

Update WikiPakk in SharePoint sites

In SharePoint, an app can have different versions in the tenant app catalog and in sites that the app had been added to.

The previous section described how to update the app from AppSource via the tenant app catalog. This app version is now higher than in the sites that use the app. We need to update those sites as well so they use the latest version.

To update each SharePoint site to the latest WikiPakk version proceed as follows.

As site owner, or site collection administrator of the respective sites:

  1. In a browser, navigate to a SharePoint site that uses WikiPakk
  2. In this site, navigate to Site Contents
  3. For the WikiTraccs WikiPakk app, choose … > Details:
  1. Choose GET IT to update the app:

After a moment, you will be redirected back to Site Contents. The WikiTraccs WikiPakk app title might display in gray, indicating that the update is still in progress.

After a while (and you might have to refresh the page manually) the app title should display in black, indicating that SharePoint finished updating the app.

For the app, select … > Details again. It should now read Good news - you already have this on your site.

Note: this process can be automated, e.g. with the CLI for Microsoft 365.

You can see the app version as well in WikiPakk as follows:

  1. Select Page Tree to expand the page tree panel on the right side
  2. Select the ? that is displayed at the bottom of the page tree; a window opens
  3. The app version is shown right at the top

If the version shown here is lower than the one of the app you just installed, proceed reading the next section about Caching ssues.

Caching issues

There is one rather ugly behavior when updating SharePoint apps. Sometimes the browser caches old resources rather aggressively, making the app appear being older for users.

This is the case when the version number in the ? dialog of WikiPakk shows a lower version number than the app’s version number.

To solve this different strategies helped different clients:

  • Pressing F5 to reload the page
  • Clearing the browser cache
  • Deleting all service workers via the F12 developer tools

This has to be done in all browsers where caching issues occur.

6.2 - WikiPakk Licensing

How to license WikiPakk

Licensing WikiPakk follows this pattern:

  1. purchase a subscription, immediately get a license key
  2. choose or create one or more SharePoint sites to store the license key in
  3. make sure WikiPakk can reach the licensing server to keep the license key fresh

Above steps are covered in more detail in the sections below.

How to get a license key

Purchase a license via the Pricing page.

The license key is displayed in the browser after purchasing and is sent via e-mail as well.

The license key looks like this:

-----BEGIN V2 LICENSE-----
eyJhcGciOiJSUzI8NiisInR5cCI6IkpXVCJ9.eyJ3dHYiOiIxIiwiaXNzIjoiaHR
<snip>
GNLn6lkQTtZw4mG16h8Mz6RvxlZMHq_861O80PE0oerk2oDSX-0E0
-----END V2 LICENSE-----

Where to store the license key

You store the WikiPakk license key in SharePoint. It is kept fresh by WikiPakk (more on that in section “How are license keys refreshed”).

After receiving the license key you have three options where to store it in SharePoint. Choose one:

  1. in all sites WikiPakk will be added to
  2. in one dedicated configuration site (more on that in section “How to dedicate a specific site to store the WikiPakk license key”)
  3. in one well-known configuration site under the URL /sites/WikiPakkConfiguration (you have to create that, use a communication site)

Ideally you choose one option, although you can combine them.

WikiPakk searches for a license key in the exact order of above list. First in the local site, then it looks in a site you may have dedicated, then it looks in the WikiPakkConfiguration site, if that exists.

WikiPakk uses the first license key it finds.

In any of those sites, you store the license key in the Description field of the Site Pages document library. This is a quick and easy place to store the license key at, and it is always present.

The next section describes in detail how to store the license key.

How to store the license key in the right place

The following instructions apply to any of the sites you might decide to store the license key in. This means, you follow those steps either in

  • all sites WikiPakk has been or will be added to, or
  • one dedicated configuration site you choose, or
  • the default configuration site /sites/WikiPakkConfiguration

As owner of such site, do the following to store the license:

  1. In a browser, open the SharePoint site
  2. Copy the license key to the clipboard
  3. Open the Library Settings of the Site Pages library
  4. Find the place to edit the Description of the Site Pages library
  5. Paste the license key into the Description edit field
  6. Choose to Save
  7. Reload open pages that show the WikiPakk page tree or breadcrumb

WikiPakk should recognize first-time license keys pretty fast, and manually updated keys within 24h.

Above steps are also covered in this video:

What if a license key is missing or expired

If no license key can be found, or the license key has expired, a red warning is shown above the page tree, stating that no valid license key could be found.

How are license keys refreshed

The license key is bound to a flexible subscription that can be cancelled on a monthly basis.

That is why the license key is valid for one month and needs to be refreshed after roughly one month.

WikiPakk takes care of refreshing the license key. When the expiration date is near it will ask a licensing server to exchange the old license key with a new one. The licensing server checks that the subscription is still valid and if yes, returns an updated license key.

How to manually refresh the license key

You might want to manually refresh the license key in case you won’t allow WikiPakk to contact the licensing server.

Here’s a PowerShell that asks for a refreshed license:

$licenseKey = "-----BEGIN V2 LICENSE-----
eyJhcGciOiJSUzI8NiisInR5cCI6IkpXVCJ9.eyJ3dHYiOiIxIiwiaXNzIjoiaHR
<snip>
GNLn6lkQTtZw4mG16h8Mz6RvxlZMHq_861O80PE0oerk2oDSX-0E0
-----END V2 LICENSE-----"
$subscriptionId = "ucpD<snip>YpQMw"

$body = @{ LicenseKey = $licenseKey} | ConvertTo-Json

$result = $null
$result = Invoke-RestMethod -Method Post -Uri "https://graph.wikitransformationproject.com/v1.0/wikipakk/subscriptions/update?subscriptionId=$subscriptionId" -Body $body -ContentType "application/json"
$result.LicenseKey

If you don’t have the subscription ID handy, open https://jwt.ms and paste the license key part between —–BEGIN V2 LICENSE—– and —–END V2 LICENSE—– into the input field.

The decoded license key should now show the subscription ID as subscription:

Decoded WikiPakk license

How to dedicate a specific site to store the WikiPakk license key

Here is how you dedicate a SharePoint site of your choosing to store the WikiPakk license key.

You point WikiPakk to the dedicated SharePoint site via a SharePoint storage entity (a.k.a tenant property).

One option to set a storage entity is via PnP PowerShell.

You need:

  • PowerShell 7
  • with the PowerShell module PnP.PowerShell installed
  • a user account that is in the Owners group of the tenant app catalog site (or site collection admin there)

Here’s a script that will connect to SharePoint and set the storage entity used by WikiPakk:

Connect-PnPOnline `
    -Url https://yourcompany.sharepoint.com `
    -Interactive # ^ use any other site if you don't have access to the root site
Set-PnPStorageEntity `
    -Key "wikipakk.licensesiteurl" `
    -Value "https://yourcompany.sharepoint.com/sites/it-configuration-site" `
    -Description "WikiPakk configuration, where to find the current license key" `
    -Scope Tenant
# Get-PnPStorageEntity # <- use this to list all configured storage entities

Above script instructs WikiPakk to look for the license key in site https://yourcompany.sharepoint.com/sites/it-configuration-site.

6.2.1 - WikiPakk License Key Lookup and Refresh Flow

This articles shows how WikiPakk searches for and renews its license key.

Key to understanding the license key flow is that a license key always expires after one month. Start and end date of this period are baked into the license key.

When the one-month validity period ends, WikiPakk needs to refresh the license key. The refreshed key can be provided manually or gotten automatically by WikiPakk.

The diagram below might look complicated but boils down to:

  • Can an up-to-date, non-expired license key be found somewhere in the local browser/SharePoint environment?
    • Good: use that. Done.
    • Note: The license key that is stored in SharePoint can be updated at any time manually, which would be on a monthly basis. This can be automated, get in touch if you want to know details on how to automate that.
  • Is there only an expiring or expired license key available, at any location where a license key could be stored?
    • No problem. WikiPakk contacts the licensing server, shows the old license key, and gets a refreshed one that is valid for another month; that is, if the subscription is still alive.
    • Note: this does only work if there has ever been a license key configured, that is now expiring/expired.

Here is the detailed flow:

6.3 - WikiPakk Page Tree Quick Start

How to get started with the page tree

Add the WikiTraccs WikiPakk app to the site:

Note: your SharePoint admin has to add the app package to the tenant app catalog for the app to show up.

That’s it, the page tree now works.

And here is the page tree editor web part in action:

Use this web part to order the pages. The page tree will show the new order immediately.

6.4 - WikiPakk Features

What can you expect from WikiTraccs WikiPakk?

What does WikiPakk provide?

WikiTraccs WikiPakk add the following productivity-enhancing functions to the SharePoint modern pages experience:

  • a hierarchical page tree for SharePoint pages
  • a breadcrumb above every page providing quick context
  • a page tree editor to reorder pages

Zero configuration necessary. No content types or fields need to be added. Add the app to any site and breadcrumb and page tree will appear, ready to be used.

A horizontal bar will be added to the top of the site, showing a breadcrumb and a “Page Tree” button. When opening a SharePoint modern page, the breadcrumb will show its position in the configured page hierarchy. An SPFx application customizer is responsible for adding the top bar.

Selecting the “Page Tree” button will slide out a panel from the right, showing all modern pages. The pages are shown as tree, according to the configured page hierarchy.

The “WikiTraccs WikiPakk Page Tree Editor” web part is used to configure the page hierarchy. The web part can be added to any modern page. It shows all modern pages of the site. Those pages can be moved around by drag and drop, forming a hierarchy of pages. Breadcrumb and page tree will reflect the configured hierarchy.

The page tree is compatible with pages that were migrated by WikiTraccs. The migrated Confluence hierarchy just works with the WikiPakk page tree.

New, vanilla SharePoint pages can be added as well. All can be reordered.

6.5 - Troubleshooting WikiPakk

What if something doesn’t work with WikiPakk?

Diagnosing issues in the page hierarchy

The SharePoint page tree gets hierarchy information from different sources, depending on whether it is showing regular SharePoint modern pages, or pages that have been migrated from Confluence to SharePoint.

For the hierarchy to work there need to be:

  • modern SharePoint pages
  • a page ID per page
  • a parent page ID per page

The page tree might be incomplete if any of those is missing.

Checking the hierarchy for pages that have been migrated from Confluence to SharePoint

Let’s assume the parent page of a page is missing in the page tree.

First, open the “aggregated-info” progress log files for the Confluence space this page was in and check that all pages have been migrated. If there are pages yet to be migrated, migrate them and check back if the page tree looks good after doing that.

If the issue persists, continue.

To diagnose the issue we first need to find out if the parent page has been migrated yet.

Open the page, whose parent page is missing, here it is arc42:

The Confluence page ID is part of the page URL. Copy this page ID. In the screenshot this is 2293795.

We are now going to look up the parent page ID and parent page.

Open the Site Pages library. Make sure to add the columns Confluence: Id (WikiTraccs) and Confluence: Parent Id (WikiTraccs) to the current view.

Filter the column Confluence:Id (WikiTraccs) for the page ID, here 2293795:

In the screenshot above the parent page ID is zero (0), which indicates this is a root page that has no parent page. This was the root page of a Confluence space. Note that there can be multiple such root pages per space.

Everything is fine in this case.

But imagine the parent page ID being 123456. If this was the case, do the following: filter the Confluence: Id (WikiTraccs) column for the parent page ID (here: 123456), to find the parent page.

Can no such parent page be found? The page has not yet been migrated and the tree is correctly showing no parent page. In this case, migrate the missing page.

Can the parent page be found? The page tree should display it. There might be an issue with the page tree if the parent page exists, but is not shown in the page tree. In this case, copy the log (see next section on how to do this), and send the log, the page ID, the parent page ID and the progress log files for the space to [email protected] for further diagnosis.

How to get and copy the WikiPakk logs

The log can be found in the browser console.

To view and copy the log of the SharePoint page tree and breadcrumb follow these steps:

  1. open the Chrome browser
  2. open a modern SharePoint page where the page tree misbehaves
  3. open the Chrome developer tools: choose the three dot menu in the upper right corner, then More tools, then Developer tools; or simply press the F12 key
  4. the developer tools panel opens
  5. choose the Console tab
  6. enter wikipakk in the search box
  7. choose the levels drop down
  8. select all levels, including Verbose

Developert tools, showing log entries of WikiPakk

  1. reload the page, for example by pressing the F5 key

The console should now show lots of log entries from WikiPakk, like in above screenshot.

When being asked for, copy all those log entries and send them to [email protected].

6.6 - Legacy: Confluence Page Hierarchy

This article covers how migrated page metadata from Confluence can be used to build a page tree.

The WikiTraccs Page tree shows a page tree like in Confluence.

Example of the page tree showing SharePoint pages in a hierarchical fashion.

Additional Site Pages Library Columns

SharePoint stores modern pages in the Site Pages Library.

WikiTraccs creates modern pages in the Site Pages Library as well.

Additional columns must be added to the Site Pages Library for the page tree to work.

Display NameInternal NameTypeNotesSample Value
Confluence: Id (WikiTraccs)WT_In_CfContentIdSingle line of textConfluence page ID118587460
Confluence: Title (WikiTraccs)WT_In_CfTitleSingle line of textConfluence page titleDemo Page
Confluence: Parent Id (WikiTraccs)WT_In_CfParentIdSingle line of textID of parent page (0 for the top-most pages)118587459
Confluence: Parent Id Chain (WikiTraccs)WT_In_CfParentIdChainMultiple lines of textChain of all parent IDs, starting with top-most, diving down to the right; using ;# and ;#;# as delimiters like in the sample value (None;#0 for top-most pages)Page;#118587415;#;#Page;#118587459
Confluence: Space Key (WikiTraccs)WT_In_CfSpaceKeySingle line of textSpace keyWTD
Confluence: Space Name (WikiTraccs)WT_In_CfSpaceNameSingle line of textSpace nameWikiTraccs Demo Space
Confluence: Sibling Order (WikiTraccs)WT_In_CfSiblingOrderNumberOrder in the page tree, lower numbers come first1

Create those columns via the Library settings of the Site Pages library.

When creating the columns, in the Column name input, enter the Internal name as stated in the table above. This is the only way to properly set the internal name in the browser.

The configuration of the Site Pages library now shows the added columns:

Column have been added to the Site Pages library.

In a second step, you can rename the columns.

Page Metadata

The page tree automatically picks up any metadata in the Site Pages Library.

Let’s manually enter metadata for some pages:

Page Metadata for the WikiTraccs Page Tree

Open or reload a page with metadata.

Now a breadcrumb should appear that looks like this:

WikiTraccs Page Breadcrumb

Selecting the page tree icon right of the breadcrumb opens the page tree:

WikiTraccs Page Tree