Automate a custom field based on changing the status of an Issue

Hi, I am net to script runner and have only the basic knowledge. 

I am trying to automate an task  where we update an custom field.

The custom field is an radio button with 3 options  None , planned ,Unplanned .

the task is Each time an  story is marked as done and if this story is linked to a RM ticket we should change the type of change field to be planned or unplanned :

conditions :

If issue linked while Status = Scheduled, then “Type of change” field for issue = Planned

If issue linked while Status = Scope Freeze, then “Type of change” field for issue = Unplanned

If issue linked while Status = Code Freeze, then “Type of change” field for issue = Unplanned

 

1 answer

Suggest an answer

Log in or Sign up to answer
0 votes
Peter-Dave Sheehan
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
Jun 21, 2019

In a postfunction for your workflow transition where the main story is being marked as done, you can add a sriptrunner post function using "custom script post function" with a script somewhat like this:

import com.atlassian.jira.component.ComponentAccessor

def issueLinkManager = ComponentAccessor.issueLinkManager
def customFieldManager = ComponentAccessor.customFieldManager
def optionsManager = ComponentAccessor.optionsManager

def currentUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser

def typeOfChangeCf = customFieldManager.getCustomFieldObjectByName('Type of change')
def cfConfig = typeOfChangeCf.getRelevantConfig(issue)
def changeOptions = optionsManager.getOptions(cfConfig)
def plannedOpt = changeOptions.find{it.value == 'Planned'}
def unplannedOpt = changeOptions.find{it.value == 'Unplanned'}

def linkedRMIssues = issueLinkManager.getLinkCollection(issue, currentUser)?.allIssues?.findAll{it.projectObject.key == 'RM'}

if(linkedRMIssues){
if (linkedRMIssues.any{it.status.name == 'Scheduled'}) {
issue.setCustomFieldValue(typeOfChangeCf, plannedOpt )
} else if (linkedRMIssues.any{it.status.name == 'Scope Freeze'}) {
issue.setCustomFieldValue(typeOfChangeCf, unplannedOpt )
} else if (linkedRMIssues.any{it.status.name == 'Code Freeze'}) {
issue.setCustomFieldValue(typeOfChangeCf, unplannedOpt )
}
}
TAGS
AUG Leaders

Atlassian Community Events