Highway Three Solutions

Jira and Tempo Cloud Migration

#Cloud Migration#Jira Cloud#Tempo

Once we decided to migrate from Jira Server to Jira Cloud, our migration planning began. Which method should we use to migrate? How will we train and transition our users? What about our plug-ins, are there cloud compatible versions and are they different in feature sets from the server version?

At Highway Three Solutions, we decided to use the Jira Cloud Migration Assistant (JCMA) rather than a full site import. It provided the ability to migrate project by project, which means you can have a soft launch of your cloud site and can migrate users in batches.

One of the features included in the JCMA is the ability to assess application compatibility between the Server and Cloud instances.

Screen Shot 2020-08-05 at 3.00.47 PM

Tempo Timesheets, an app created by Tempo for Jira, is commonly used to extend the basic Jira worklog management features in order to manage time tracking, planning, budgets, customers and accounts. In Jira Server, the Tempo data is stored alongside Jira in the server database, but in Jira Cloud, plug-in data is stored in a vendor-specific storage. This architectural difference makes the migration to the cloud a little more complicated. Tempo supports a Jira full site import via a combination of automatic migration and manual steps, but at this time, they do not support the migration of Tempo data using the Jira Cloud Migration Assistant.

In our environment we had years worth of data we needed – thousands of worklogs covering about 60 projects. Recreating the content manually was not an option. We needed a solution that would:

  • Support migration using the Jira Cloud Migration Assistant (project by project migration)
  • Perform “delta” updates of Tempo worklogs so that we can test the migration multiple times

The technical difficulty with migrating Tempo using the Jira Cloud Migration Assistant is that Jira user and worklog IDs are regenerated on migration. Worklog data can not be migrated automatically because of this. Luckily, both Jira and Tempo provide REST APIs that can support the migration with a little bit of coding.

Our approach to the Tempo migration utility allowed for dual production environments, with users actively using both environments until the migration was complete.

Screen Shot 2020-08-05 at 3.00.03 PM

We created a utility that would query the Jira Server REST API for Tempo data, and then use the Tempo Cloud REST API to push the data into the cloud environment while matching to the Jira Cloud user and worklog ids.

Tempo API

We split our utility to separately migrate the different categories of Tempo data:

  • Worklogs & worklog attributes
  • Accounts
  • Categories
  • Customers
  • Programs
  • Roles
  • Teams
  • Timesheets

This approach allows us to continue to use the server environment by providing the ability to run delta migrations to keep the cloud environment up to date (or to have both environments live) while remaining server projects are migrated.

Limitations of the Utility:

  • Timesheet approval, rejection, or submission dates are not retained
  • Accounts still need to be manually migrated (although the utility automatically updates the output file to match the required format)

Good planning and testing of your migration will ensure a successful move to Jira cloud.

The Jira Cloud Migration Assistant app is a great tool to move Jira Server data to a Jira Cloud instance. With version 1.0.0 released on March 9, 2020, it is still a rather new application. Tempo Timesheets is able to migrate worklogs with a full site import, and with time it may do the same with the new migration tool. For now, we can migrate Tempo data through our utility using the Jira and Tempo REST APIs.

References:

https://marketplace.atlassian.com/apps/1222010/jira-cloud-migration-assistant https://confluence.atlassian.com/cloud/jira-server-to-cloud-migration-resources-972330179.html

Tempo Rest API version 3: https://tempo-io.github.io/tempo-api-docs/

Tempo Server API documentation: https://www.tempo.io/server-api-documentation

Jira Rest API: https://developer.atlassian.com/cloud/jira/platform/rest/v3/?utm_source=%2Fcloud%2Fjira%2Fplatform%2Frest%2F&utm_medium=302#about