To be able to develop advanced synchronization scripts you require a development background and a good understanding of Groovy and the entities of the underlying issue tracker and Exalate itself. 

In case of need, we can provide training and professional services to deliver the solution you're looking for.  Please contact sales@exalate.com for more information.

Scripts work for Jira Software 7.4.0 and higher.


This page describes how to synchronize an agile project from one JIRA Instance to another JIRA Instance. Scripts for both JIRA Server and JIRA Cloud are included in this guide.

It means that all agile information within the project will be synchronized. 

Agile information includes sprints, epics, versions, ranking, issues with all data including issue statuses, estimates, change history, issue links, sub-tasks, typical issue custom fields, etc.


  • Source Instance (Jira Server  or Jira Cloud)
  • Destination Instance (Jira Server  or Jira Cloud)
  • A project with data on the source side
  • Connection configured between Jira Instances.
  • Global transitions on the destination side
    • To ensure that the status on the destination side is set correctly, there should be a global transition to each status in all workflows
      Global transitions allow any status in a workflow to transition to a particular status.  More information on this topic can be found on the Atlassian documentation


We have one Jira instance, let's call it source side and another Jira instance which is a destination side. It doesn't matter which one is the source and which one is the destination since the project sync is bidirectional. The source side agile project needs to be synced to the destination Jira instance. The destination side has a project to receive data from the source Instance. 

Limitations and caveats

  • Sprint start/completion date is not synchronized
  • Projects need to be configured in a similar way - ie custom fields should have the same name, duplicate custom field names to be avoided 
  • Boards need to exist beforehand


Let's consider you already have the connection configured between the instances. Now you need to configure Sync Rules to sync data.


Configure Synchronization processors with the scripts provided below.  Follow the link and copy its content to the different processors.


We provide scripts for demonstration purposes. Every script needs to be adapted for your specific use case.

For Exalate 4.3 on Jira Server

With the External scripts library feature we've updated scripts to rely on the external AgileSync.groovy file.

You need to upload AgileSync.groovy file to the $JIRA_HOME/scripts directory on the server, where you have your Jira instance installed.

Scripts for the Cloud JIRA are different from the Server JIRA scripts.

Please be sure to copy appropriate scripts.


The Create and Change processor have  EXALATE SCRIPT SETTINGS section(at the top) that you need to configure.

 *     projectMapping is used to detail out where issues from the source project should be created
 *     The first parameter is the source project, the second the destination project
 *     boardMapping is used to detail how issues board membership should be mapped
 *     The first parameter is the source board

final def projectMapping = [
        "SOURCEA": "DESTA",
        "SOURCEB": "DESTB"
final def boardMapping = [
        "Source Board A" : "Dest Board A",
        "Source Board B" : "Dest Board B",
        "Source Board C" : "Dest Board C",
        "Source Board D" : "Dest Board D"

// enter the email address of the default user
final def defaultUserEmail = "admin@example.com"
final def defaultUser = nodeHelper.getUserByEmail(defaultUserEmail)
final def defaultPriorityName = "Medium"
/*********************   END SETTINGS  *****************/


Validate the synchronization by manipulating data on the source side and checking if this is reflected on the destination side

  1. Ensure that the Exalate operation is available on the server side.  This allows triggering a synchronization on a single issue
  2. Trigger a synchronization for an Epic, a story in an Epic, a subtask in a story
  3. Move a story from one sprint to another
  4. Create a sprint


Bulk Exalate

Ensure that all the issues are synchronized to the cloud side

Create a Trigger on the sending side:

In the Exalate admin menu, access the triggers and create a new trigger. Include all issues in your project to be synchronized using the previously created Connection. The Connection towards the receiving instance (Cloud Jira). Activate the trigger.

Use Bulk Exalate to synchronize multiple issues at a time.

Exalate is running through all the issues and sending out all the information from the Server instance to the Cloud instance. After a while, all issues will be showing up in the same configuration as on the Server instance.


If you us the project sync only for migration purposes, you should stop synchronizing issues as soon as the synchronization process is finished.


Congratulations! Now you know how to configure an agile project sync using Exalate application.


 If you want to use this script, but you are missing a functionality or would like to get it adapted to your use case, send us a mail to support@exalate.com