Confluence has been updated to version 6.15.9

JIRA CLOUD


This page shows how to synchronize issue statuses Jira Cloud. You can map workflows between two JIRA Instances or set the transition manually.Exalate provides different ways to configure status synchronization:

Configuration

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

Now you need to configure Sync Rules with the scripts provided below:

Source side

Outgoing sync

replica.status = issue.status

Destination side

Control the transition applied on your local issue 

Use this approach if want to control the transition applied to your local issue.

You can apply only one transition per synchronization using this approach. 


 workflowHelper.transition method allows you to set a local transition based on the remote issue status. 

Incoming sync

//if the local issue status is 'In Progress' and the remote issue status is 'Resolved' use 'Resolve' transition

if (issue.status.name == "In Progress" && replica.status.name == "Resolved") {
   workflowHelper.transition(issue, "Resolve")
} 

In case you need to set different transitions depending on the remote status you need to add the script for each transition separately. Check the example below:

//if the local issue status is 'In Progress' and the remote issue status is 'Resolved' use 'Resolve' transition

if (issue.status.name == "In Progress" && replica.status.name == "Resolved") {
   workflowHelper.transition(issue, "Resolve")
} 

//if the local issue status is 'Done' and the remote issue status is 'Resolved' use 'Close' transition

if (issue.status.name == "Done" && replica.status.name == "Resolved") {
   workflowHelper.transition(issue, "Close")
} 



Map statuses

Use this approach when you want to have statuses synced automatically based on the configured status mapping

Incoming sync

  • If statuses are the same on both sides, use this code:

issue.status = replica.status

  • If the statuses are different, use this code with your status mapping

// ["remote status name": "local status name"]
def statusMap = [
			"Done": "Resolved", 
			"In Progress": "In Action"
] 
def remoteStatusName = replica.status.name
issue.setStatus(statusMap[remoteStatusName] ?: remoteStatusName)


  • If you want to set a default status directly in the rules use this code

issue.setStatus("Done")

  • If the remote side has not set the resolution, change the local issue status to Done

if(replica.resolution != null){
   issue.setStatus("Done")
}

See also