post_functions
Table of Contents
Post Functions
Post functions allow you to perform specific actions upon the transition. Following are some useful examples.
Add Comment on Transition
import com.atlassian.jira.component.ComponentAccessor def commentManager = ComponentAccessor.getCommentManager() def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() commentManager.create( issue, currentUser, "This is my comment", false)
Update Fix Version/s field with first Unreleased version if there isn't a version already there or give error message
import com.atlassian.jira.component.ComponentAccessor import com.onresolve.scriptrunner.runner.util.UserMessageUtil def versionManager = ComponentAccessor.getVersionManager() def projectManager = ComponentAccessor.getProjectManager() def project = projectManager.getProjectObjByKey(issue.projectObject.key) def versions = versionManager.getVersions(project) def firstUnreleasedFound = versions.find{! it.released} if (issue.fixVersions.size() == 0){ if (firstUnreleasedFound) { issue.setFixVersions([firstUnreleasedFound]) issue.store() } else { UserMessageUtil.error("MANUAL INTERVENTION REQUIRED!!! No Unreleased Fix Version Found. Please add a Fix Version manually to this ticket....") } }
Set Reporter ID to be a value from a custom field called User ID
import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.fields.CustomField import com.atlassian.jira.component.ComponentAccessor CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager() CustomField cfUID = customFieldManager.getCustomFieldObjectByName("User ID") def cfUIDvalue = issue.getCustomFieldValue(cfUID) issue.reporterId=cfUIDvalue
Add users to watch list on create or transition
If you're using this code on issue creation, make sure the script is after the “Create the issue originally” task.
import com.atlassian.jira.component.ComponentAccessor def watcherManager = ComponentAccessor.getWatcherManager() def userManager = ComponentAccessor.getUserManager() def watchUsers = {usernames -> usernames.each { def user = userManager.getUserByKey(it.toString()) if (user) { watcherManager.startWatching(user, issue) } } } def users = ["abc", "def", "ghi"] if (issue.projectObject.key == 'KEY') { watchUsers(users) }
Set custom text field value in field Approval Status with date/time & currentUser on POST transition
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.fields.CustomField //Define cfm def cfm = ComponentAccessor.getCustomFieldManager() //Set custom text field for Text field called "Approval Status" def cfApprovalStatus = cfm.getCustomFieldObjectByName("Approval Status") def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() def currentDate = new Date().format( 'yyyy-MM-dd hh:mm a' ) def statusMessage = "Approved by "+currentUser+" at "+currentDate issue.setCustomFieldValue(cfApprovalStatus,statusMessage)
Set "Awaiting Approval" message in field "Approval Status" if there is a value in "Selected Approver" user picker field
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.fields.CustomField //define cfm def cfm = ComponentAccessor.getCustomFieldManager() // get value for "Selected Approver" and set status accordingly def cfApprovalStatus = cfm.getCustomFieldObjectByName("Approval Status") def SelApp = cfm.getCustomFieldObjectByName("Selected Approver") def SelAppValue = issue.getCustomFieldValue(SelApp) //If there is a value in the Selected Approver, set value in Approval Status if (SelAppValue){ issue.setCustomFieldValue(cfApprovalStatus,"Awaiting Approval") }
Additional actions performed on Issue Clone post function
def cfD = customFieldManager.getCustomFieldObjects(issue).find {it.name == 'Deployers'} def cfS = customFieldManager.getCustomFieldObjects(issue).find {it.name == 'Start Date'} def cfE = customFieldManager.getCustomFieldObjects(issue).find {it.name == 'End Date'} issue.setCustomFieldValue(cfD, null) issue.setCustomFieldValue(cfS, null) issue.setCustomFieldValue(cfE, null) issue.summary = 'Available for use' import com.onresolve.scriptrunner.runner.util.UserMessageUtil UserMessageUtil.success('So... you think you can dance? :)')
Update Select List (Drop Down) field Status with value Waiting Approval
import com.atlassian.jira.component.ComponentAccessor def cfSelect = ComponentAccessor.customFieldManager.getCustomFieldObjectByName("Status") def cfConfig = cfSelect.getRelevantConfig(issue) def value = ComponentAccessor.optionsManager.getOptions(cfConfig)?.find { it.toString() == 'Waiting Approval' } issue.setCustomFieldValue(cfSelect, value)
post_functions.txt · Last modified: (external edit)
