I need to sync Sprint from Jira cloud to Jira on-premise (Unidirectional).
I have gone through the below articles and updated the code in both Cloud (Outgoing) and On-premise (Incoming) processors but still, the sprint is not synced to the Jira on-premise.
// Sprint synchronisation
if(entityType == "sprint"){
// Executed when receiving a sprint sync from the remote side
// [remoteBoardId:localBoardId] for "one way" Sprint board synchronisation
// [remoteBoardId:localBoardId, localBoardId:remoteBoardId] for "bi-directional" sync
def sprintMap = ["3":"5", "5":"3"]
// Main Sprint parameters sync
sprint.name = replica.name
sprint.goal = replica.goal
sprint.state = replica.state
sprint.startDate = replica.startDate
sprint.endDate = replica.endDate
// Target SCRUM Jira Projects Board choice
def localBoardId = sprintMap[replica.originBoardId]
if(localBoardId == null){
throw new com.exalate.api.exception.IssueTrackerException("No board mapping for remote board id "+replica.originBoardId)
}
//Set the board ID where the sprint will be created
sprint.originBoardId = localBoardId
}
// Jira issues synchronisation
if(entityType == "issue"){
//Executed when receiving an issue sync from the remote side for the first time
if(firstSync && replica.project.key == "CSSC"){ // Origin Project Key
issue.projectKey = "CSSA" // Target Project Key
// In case of an Issue Type that is not present in the Target Jira project use "Story" issue type
issue.typeName = nodeHelper.getIssueType(replica.type?.name, issue.projectKey)?.name ?: "Story"
}
if(firstSync && replica.project.key == "CSSA"){ // Origin Project Key
issue.projectKey = "CSSC" // Target Project Key
// In case of an Issue Type that is not present in the Target Jira project use "Story" issue type
issue.typeName = nodeHelper.getIssueType(replica.type?.name, issue.projectKey)?.name ?: "Story"
}
// Sub-Task Parent Link creation
// Attention: Parent Issue have to be already synced
if(firstSync && replica.parentId){
issue.typeName = "Sub-task"
def localParent = nodeHelper.getLocalIssueFromRemoteId(replica.parentId.toLong())
if(localParent){
issue.parentId = localParent.id
} else {
throw new com.exalate.api.exception.IssueTrackerException("Subtask cannot be created: parent issue with remote id " + replica.parentId + " was not found. Please make sure the parent issue is synchronised before resolving this error" )
}
}
// Issue fields to synchronize
issue.summary = replica.summary
issue.description = replica.description
issue.comments = commentHelper.mergeComments(issue, replica)
issue.attachments = attachmentHelper.mergeAttachments(issue, replica)
issue.labels = replica.labels
issue.status = replica.status
issue.issueLinks = replica.issueLinks
// Sprint issue linking
// Sub-Task, in Jira, may not be linked to a Sprint. Only Parent Issue may be linked to Sprint
if (issue.typeName != "Sub-task"){
def remoteSprintId = replica.customFields.Sprint?.value?.find { it.state.toUpperCase() != "CLOSED" }?.id
if(remoteSprintId){
def localSprintId = nodeHelper.getLocalIssueKeyFromRemoteId(remoteSprintId, "sprint")?.id
if(localSprintId){
issue.customFields.Sprint.value = localSprintId
}
}
// Epic sync
Epic.receive()
}
}