Confluence has been updated to version 6.15.9

JIRA ON-PREMISE JIRA CLOUD

This article shows how to sync fix versions between Jira instances. 

Jira version is an object that includes the following elements:

  • version name
  • version start date
  • version release date
  • version description

Basic versions synchronization involves receiving versions from a remote Jira instance. Usually, these versions don't exist on your local Jira. 

Exalate provides a way to create versions from the scripts to handle this situation.  To create a new version on your system when necessary use nodeHelper.createVersion.

The example below shows how you can set up such behavior. 

Source side

Outgoing sync

send fix versions

//send the fix versions set on a synced issue
replica.fixVersions = issue.fixVersions
replica.affectedVersions = issue.affectedVersions

Destination side

Incoming sync

Create the versions that do not exist on your side

// for the create processor, be sure that the project is set to the issue variable before running the following code
issue.projectKey = "Foo" //Included only on create processor
...

// assign fix versions from JIRA A to JIRA B
issue.fixVersions = replica
  .fixVersions
  // ensure that all the fixVersions are available on B
  .collect { v -> nodeHelper.createVersion(issue, v.name, v.description) }
// assign affected versions from JIRA A to JIRA B
issue.affectedVersions = replica
  .affectedVersions
  .collect { v -> nodeHelper.createVersion(issue, v.name, v.description) }

If you do not want exalate to create new versions but just use existing ones that match the other side versions:

// for the create processor, be sure that the project is set to the issue variable before running the following code
issue.projectKey = "Foo" //Included only on create processor
...

// assign fix versions from JIRA A to JIRA B
def project = nodeHelper.getProject(issue.projectKey)
issue.fixVersions = replica
  .fixVersions
  // ensure that all the fixVersions are available on B
  .collect { v -> nodeHelper.getVersion(v.name, project) }
  .findAll{it != null}
// assign affected versions from JIRA A to JIRA B
issue.affectedVersions = replica
  .affectedVersions
  .collect { v -> nodeHelper.getVersion(v.name, project) }
  .findAll{it != null}

If you want to synchronize version start date, release date and description you can use the external script versions.groovy, which has been developed specifically for such cases. 

See also