User Tools

Site Tools


post_functions

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: 2018/06/27 13:03 by root