Confluence has been updated to version 6.15.9

This article shows how you can synchronize Epics, including the Epic link using external scripts.

Synchronizing Epics and stories, while keeping the parent-child relationship on the remote side is a common use case that is possible to achieve using Exalate.


Configuration

Let's consider you already have the Connection configured between two JIRA Instances.

Now you need to configure Sync Rules to synchronize Epic information.

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

Please be sure to copy the appropriate scripts.


Sync epics on JIRA Cloud

The script works only when using scripting rules on Jira Cloud. It's not compatible with Exalate visual mode.

You can only map Epic name custom field in visual mode.


Outgoing sync 

Add the following code to send the Epic information together with the Epic Link.

You need to synchronize Epic first, then synchronize stories to keep parent-child relation between issues. 

// Ensure that the Epic is synced first, such that stories sent later can be associated to the right epic
Epic.send()

Incoming sync 

Add the following code to apply received Epic information to the end of the incoming sync

// should be at the end of the incoming sync  script
Epic.receive()

Sync epics on JIRA Server 

Requires Exalate for Jira Server/DataCenter version 4.5.1 or higher

1. Create files from the Exalate public repository 

We store external scripts for Jira Server in a public repository.  Copy the code from the repositories below and create .groovy files. You must keep the filenames as below.

2. Upload the files to $JIRA_HOME/scripts the directory

$JIRA_HOME/scripts directory is located on the server, where you have your Jira instance installed.

If you don't have scripts directory you should create it.


3. Configure Sync Rules with the scripts provided below:

Add the code from the repository accordingly into the bottom of the Sync Rules.


Outgoing sync

Add the following code to send the Epic information together with the Epic Link.

You need to synchronize Epic first, then synchronize stories to keep parent-child relation between issues. 


// Ensure that the Epic is synced first, such that stories sent later can be associated to the right epic
Epic.sendEpicFirst()
(warning) This example shows the case where the order does not matter, still keeping the parent-child relation between Epic and Stories. The Epic Link will be also synchronized.
Epic.sendInAnyOrder()

Incoming sync 

Add the following code to apply received Epic information, including the Epic Link

// Move this to the end of the incoming sync script
Epic.receive()