Automating the Atlassian Jira Cloud Migration

by | Dec 30, 2020 | Atlassian, Jira

Over the past few weeks following Atlassian’s announcement to discontinue Server (on-prem), you’ve probably been caught up in determining the best methods for importing your current, Jira server environment into the Atlassian Cloud. For this article, we’ll focus on importing your server environment (or Data Center) into the Cloud, and how Ascend has successfully completed this for clients with very customized environments, using Python Scripts, JSON, and more, combining this into the Ascend Migration Suite (AMS).

Importing Methods

Currently, there are several methods for importing into the Cloud, each with their own positive attributes as well as drawbacks. These include:

  • CSV: fastest importing method, but may cause users to be created which shouldn’t be, attachments to be missing, missing issue history and links, or inconsistent comments and comment data not being imported.
  • XML Import: full import of all attributes, but will require you to upgrade your current environment to the latest version of Jira (which changes often) and re-configuration of cloud apps.
  • Jira Cloud Migration Assistant: great for basic environments, but for complex environments with add-ons / apps, scripts, triggers, webhooks and APIs, this is not ideal and may create more headaches. This also may lead to loss of issue history information.
  • JSON Import: Will require development resources and experience with API development, but is the most effective at importing issues into the cloud without loss of data.

Maintaining your issue history and comment chains are important – they allow you and your auditors to see the full history of an issue resolution. While the above methods have various degrees of effectiveness, the development team at Ascend built and automated complex (500+ Data Center and Server environments) built multiple Python Scripts into an Ascend Migration Suite (AMS) in order to automate the import of issues, issue history, comments, and various information into the Cloud.

Automation with Python and JSON

As you may have guessed already – a cloud migration comes with multiple options, and multiple complexities as well. Utilizing a mixture of Python, JSON exports / imports, and some Jira know-how, Ascend built a process to automate portions of the migration process. Here’s how we do it:

  • Create a full JSON Export for each project to be migrated to the Cloud (migrate project to project, since you may not need all your Jira projects in the cloud).
  • Utilize custom Ascend’s Python scripts (created and updated by us) in the Ascend Migration Suite to map on-prem users to the Cloud environment, this ensures account IDs and @mentions in comments are retained.
    • Any missing usernames we update manually using a CSV configuration file our scripts read.
  • Other custom Ascend Python scripts are run to maintain links (Issue links and Epic – Story, Sub-task links, etc.).
  • And finally, login credentials, project keys, miscellaneous project data and information, (including Components, Fix Version/s, etc.) are also uploaded.
    • Workflows, depending on their complexity and if they use custom validators, may need to be manually re-created.
  • The upload is pushed into the Jira Cloud environment.
  • Attachments will need to be uploaded as well, but this is also done via a script.

Always note – before performing any of the above, always be sure to take inventory and understand whether configurations for add-ons / apps and REST APIs carry over from server to Cloud.


Importing to the cloud is not always the easiest, but with our method above, we can shorten the time to import your environment into the cloud by 60%, reducing a 4 – 6 week project into a 2 week project using our automated scripts and test suite. This also saves you time from upgrading your current environment on-prem, which may require additional time and resources. Reach out to us today if you’re interested in hearing more!