Confluence has been updated to version 6.15.9

JIRA SERVER 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