I have a case were i would like to copy a custom field from parent Ticket to all linked issues.I can do this via jira suite utilities, in a post function but then the issue needs to transition, I really like to do this in the current status, so the only trigger i have is issue update, and i would like to do this via a groovy script and with the Script runner Listener.
I have a start Done by Kristian Walker, and activates when the parent issue is updated, and this will Add a comment to the parent, after this i would like to copy my custom field to all linked issues.
I have very little knowledge about developing groovy scripts so all kind of help is very appreciated, trying to learn how do develop my own scripts.
Below is how i did this
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.comments.CommentManager
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.event.type.EventDispatchOption
// Get a pointer to the issue
Issue issueKey = issue
// Get the current logged in user
def CurrentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() as ApplicationUser
// Get access to the Jira comment and component manager
CommentManager commentManager = ComponentAccessor.getCommentManager()
// Get the customField Escalation level and it's value
def myCustomField = customFieldManager.getCustomFieldObject("customfield_12500")
// Get the last comment entered in on the issue to a String
def comment = "This issue is: " + myCustomField.getValue(issue)
def issueManager = ComponentAccessor.getIssueManager()
def issueLinkManager = ComponentAccessor.getIssueLinkManager()
def issueLinks = issueLinkManager.getInwardLinks(issueKey.getId())
def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def subOutwardElements = issueLinks.findAll { it.issueLinkType.any()}
//def subOutwardElements = outwardIssueLinks.findAll { it.issueLinkType.inward.concat("is blocked by")}
log.warn("Before for loop outwardIssueLinks " + issueLinks.size())
//log.warn("Before for loop outwardIssueLinks " + inwardIssueLinks.last())
log.warn("Before for loop myCustomField " + myCustomField )
// Check if the issue is not null
if(issueKey){
// if customField Escalation level has a value
if (myCustomField.getValue(issue) != null && myCustomField.toString() == 'Escalation level' ) {
if (subOutwardElements.size() >= 0) {
for (def i = 0; i < subOutwardElements.size(); i++ ) {
log.warn("sourceId: ${i} ")
def linkedIssue = issueManager.getIssueObject(subOutwardElements[i].sourceId)
log.warn("Issue link type with name linkedIssue: ${linkedIssue} ")
log.warn("Issue link type with name myCustomField: ${myCustomField.getValue(issue)} ")
// Create a comment on the issue
commentManager.create(issueKey, CurrentUser,comment, true)
linkedIssue.setCustomFieldValue(myCustomField, myCustomField.getValue(issue))
ComponentAccessor.getIssueManager().updateIssue(user, linkedIssue, EventDispatchOption.ISSUE_UPDATED, false)
}
}
}
}
See above
@Tomas Gustavsson Hello Tomas, i'm trying to apply this in my org.
but it is showing some errors for me. is it working for you??
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi, Sorry for a late answer yes this did work for me, we have now removed the comment part in this script.
What errors do you get?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.