If you have decided to keep your Atlassian stack under your own control and move from Jira Cloud to Jira Server, but you have no idea what to do with all the accounting data, customer lists, employees’ work-logs, and team configuration, then this article is for you.
Although Tempo does not provide a straightforward way to export all this data, there is a way to transfer everything without worrying about losing any important information. That’s possible using the Tempo REST API. So, if you’re a developer and you know how to use REST APIs, keep reading! Just a heads-up before you continue: there are a few things you have to clean up before starting to migrate, so make sure you have direct access to your Jira database.
You can easily migrate from Jira Cloud to Jira Server given that you take the following steps. First things first, create a Jira data backup on the Cloud. You always want to make sure you have a safe in-house backup. The next step is to set up a clean recent version of Jira on your premises. Then, you’ll be able to restore the backup. This way you take a precaution to prevent data being lost. After that, we should give the user, through which we want to access the API, the needed Tempo-related permissions. The next step will be cleaning the Tempo data residing on the backup. Finally, you can run our Tempo migration script and enjoy the smooth flight from Cloud to Server!
Note: In order to be able to complete the above steps, you need to be familiar with a programming language that would allow you to work with a REST API. In our case, Python was the weapon of choice.
Plus, a successful migration of all your Tempo data is only possible if we first understand its structure well, for example, the accounts, the account categories and the account category types. So if you are not an Atlassian expert, I suggest you first start using GET requests on your production Jira Cloud.
What we need to take into consideration, is that we need to only start moving data without any dependencies, like programs. If you just decide to migrate accounts without first moving the account type, you will have to manually set every account to a specific category later, which might take a long while especially if you have a few thousands of accounts. So I suggest you follow this order:
- Account types
- Account project links
- Team membership
- Team project and board links
This list usually covers most Tempo data – we are not talking about Tempo Planner add-on data. Some entities are related to users, of course, so before creating a work-log on the server, you’ll need to establish a mapping between the users from the Jira Cloud and the Jira Server instances. This part may be a little tricky since you’d need to get all of the users from both Jira’s, and create relations between the same two user entities that represent the same person.
Moreover, as the unique identifiers are different (email on the Cloud and username on the Server), there is no easy way to achieve a 100% desired result. One of the options would be to map users by their display name. Once we have established mapping of the users, we can get work-logs from Jira Cloud and create equivalents on Jira Server for the correct user.
for each user in cloud users do
for each user in server users do
if cloud user’s display name = server user’s display name
1. create an item in the server-cloud users list with the display name of the user
2. add cloud user and server user info under this item
Generally, a way to go would be to query the Cloud REST API to get the needed data, and then transform the data so that SERVER REST API would understand it and feed the Server.
Yes, we know that the structure of your data can be different, and sometimes we won’t even find Server API endpoints in the official documentation. So do you need any help migrating your Jira data? Feel free to reach out to us on this page. In order to save you all the trouble, we would gladly help you with your migration!