How To Migrate and Synchronize Between Jira Instances

Jira has always been a popular choice when the need for a stable bug and issue tracking, and project management platform arises. It also proves to be a popular choice when migrating from legacy platforms, or when companies are looking to run another Jira instance in parallel with their existing Jira, thus achieving real-time data synchronization between the two systems.

Why Jira

There's numerous ways to use Jira. We've seen cases of customers having multiple Jira instances, and wanting to consolidate them under a single environment. Other cases involved clients having a single instance but wanting to partition it across multiple teams. Migration from on-premise Jira to cloud Jira (and vice versa) is another scenario we've seen. And on a few occasions we've been contacted by customers working closely with contractors who maintain their own Jira instances, but our clients wants to keep records across both Jiras in sync.

Challenges When Migrating/Synchronizing Jira

One of the more common challenges companies face when migrating or syncing with another Jira instance, is that there’s no clear mechanism for keeping data in synchronisation. For example, when changes to a record in one database are propagated to others in real time. A quick glance at the Atlassian Community forum suggest that in many cases companies tend to rely on third-party plug-ins when migrating to Jira due to somehow more basic data import/export mechanisms for copying entire databases that the service provides. And if you want to migrate complex, custom data structures, they are left with a few options, some of which not that practical.

Implications of Migrating and Synchronizing with Jira

The task of synchronizing or migrating two or more Jira instances could prove quite challenging. As any one who has done it will tell you, it requires a major investment in programming and/or scripting to build a solution; not to mention the litres of coffee being consumed. Here’s one case that illustrates just how difficult it could be to migrate one Jira instance to another. Such migration requires careful planning, redistribution of resources, and quite often an in-house built solution. However in some cases in-house might not be possible, and solving the issue could require outsourcing it to an Atlassian service partner. Either way delivering a solution can be expensive and time-consuming.

Migrate Or Synchronize

It really boils down to what are your goals. Many companies look to the Atlassian Marketplace in hopes for an out of the box solution that will deliver additional functionalities. While others are looking for a visual programming tool to rapidly reflect any custom behaviours into a template solution. Here at Cloudpipes, one of the more common scenario that we’re seeing among our clients revolves around the need for a completely automated mechanism to keep records between multiple Jira instances in permanent synchronisation. This might involve two or more instances being kept in sync. Sometimes such synchronization would require a cloud based solution with zero infrastructure requirements, which can also securely reach back into the customer’s data centre where Jira is deployed on-premise.

How Cloudpipes Helps You Migrate Or Synchronize Jira Instances

Cloudpipes offers a complete Jira tailored migration solution which can operate as a turn-key solution and also allow custom behavior based on our customers’ individual requirements.

Recently we’ve been approached by a company looking to migrate several Jira instances, and keep them synchronized. This required several pipelines, each based on different variations, and migrating different types of data (comment, epic, story). The building block in Cloudpipes is a pipeline. The pipeline can define a process or implement a task. We added a way for pipelines to interact with each other thus allowing greater reuse and leveraging. Implementing Jira migration and sync is a complicated task that requires multiple pipelines working together and each having a certain role. We approached the problem by having 3 layers of pipelines - each having its own task.

The top layer (“driver” layer) decides which tickets should be subject to migration sync. It can query tickets from the source Jira by certain criteria (including JQL) or it can enumerate all tickets for a complete bulk migration. Another “driver” pipeline monitors for changes on tickets in the source Jira and triggers their migration to the destination one. This allows for a greater flexibility when dealing with migrating data from a source to a destination Jira, which includes split/merge of Jira instances as well.

The middle layer of pipelines deals with correct migration of a ticket. It has separate pipelines for the main types of tickets in Jira (epic, task, story, bug) to allow addressing specifics of these tickets.

Pipelines in the middle layer also utilize Cloudpipes’ powerful import/export capabilities allows for a seamless data migration. The “Export/Import Issue Fields” pipes take care to move correctly all fields in the ticket. They also create on-demand the dependent resources like users, components, versions, labels etc. on the destination Jira. The bottom layer of pipelines migrates sub-resources in tickets like comments, attachments and subtasks.

Templates in Cloudpipes are called Blueprints, and are quick and easy way of implementing a workflow schema without spending hours building it yourself. Cloudpipes’ robust templating functionality helps deliver a ready-made solutions in the form of a blueprint, constructed as suite of pipelines that delivers a working provision off-the-shelf. With just one click you can have any of our blueprints implemented immediately.

Our pipeline editor allows for an easy customization of any suite of pipelines to reflect a specific migration or synchronization logic. Our customers can also select the granularity of the migration - individual projects or even a subset of tickets can be selected as target for migration or synchronization. Another feature that Cloudpipes is quite proud of, is the ease of record synchronization between multiple Jira instances that can be implemented via a check box. If needed the migration progress and result can be monitored and audited through a dedicated spreadsheet, SQL table and other list forms.

One feature of Cloudpipes that has already been deployed by several of our clients is our on-premise Agent that enables migrations and synchronizations to operate on any combination of cloud and/or on-premise Jira Server instances. This open the doors to any type of Merge/Split migration scenarios that requires operating on more than two Jira instances.

We barely scratched the surface when it comes to migrating from and to Jira. We know there’s no easy way when moving large, logically complex databases, but at the same time we firmly believe that we can provide a reliable and stable solution to that problem. How do we know? Because we already done it, and data migration is one of the functionality that make our Jira integration so powerful.

Looking to migrate or sync your Jira servers? Get in touch with us and ask for a more detailed walk-through.