Scriptrunner listener: update priority based on two other fields

Mickaël Orsolino November 18, 2020

Hello the community,

 

I try to find a solution on my listener script.

I have two field urgency and impact. I would like to change the priority if one of these fields is updated.

 

I write the following script but I don't know how to do the update of priority fields.

Could you help me to find the solution?

The script:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueInputParametersImpl
import com.atlassian.jira.issue.customfields.option.Option
import org.apache.log4j.Level
log.setLevel(Level.DEBUG)


def issue = event.issue as Issue;

def urgency = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("[IMP] Urgency")
def impact = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("[IMP] Impact")
def valueUrgency = issue.getCustomFieldValue(urgency)
def valueImpact = issue.getCustomFieldValue(impact)


log.debug "impact value " + valueImpact;
log.debug "urgency value " + valueUrgency;


if (valueImpact == "High" && valueUrgency == "Medium"){

} else if (valueImpact == "Medium" && valueUrgency == "High"){

} else if (valueImpact == "Medium" && valueUrgency == "Medium"){

} else if (valueImpact == "High" && valueUrgency == "High"){

} else {

}


 

Thank you a lot for your help.

Regards,

Mickael O.

2 answers

1 accepted

0 votes
Answer accepted
Szabolcs Kiss
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 18, 2020

Can you try this? Set the proper issue key.

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.config.PriorityManager
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.event.type.EventDispatchOption

def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def priorities = ComponentAccessor.getComponent(PriorityManager).priorities

//define the existing priorities (Minor, Major,...)

def majorPriority = priorities.findByName("Major")
def minorPriority = priorities.findByName("Minor")

IssueManager issueManager = ComponentAccessor.issueManager
String issueKey = 'TEST-1'

def issue = issueManager.getIssueObject(issueKey)

issue.setPriorityId(minorPriority.id)
issueManager.updateIssue(user, issue, EventDispatchOption.DO_NOT_DISPATCH, false)

Mickaël Orsolino July 10, 2023

Thank you for your help.

0 votes
Sam Bartolome July 7, 2023

This worked for me.

Gonna try to get a if else statement as it is easy to visualise 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.customfields.manager.OptionsManager
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.priority.Priority
import com.atlassian.jira.event.type.EventDispatchOption

MutableIssue currentIssue = issue
def optionsManager = ComponentAccessor.getComponent(OptionsManager)
def customFieldManager = ComponentAccessor.getCustomFieldManager()

int num;

switch (customFieldManager.getCustomFieldObjectByName("Urgency").getValue(currentIssue)) {
    case "Critical (can no longer work)":
        num = 1;
        break;

    case "High (can no perform primary work functions)":
        num = 2
        break;

    case "Medium (work functions impaired)":
        num = 3
        break;

    case "Low (Inconvenient)":
        num = 4
        break;

    default:
        System.out.println();
}

switch (customFieldManager.getCustomFieldObjectByName("Impacted users").getValue(currentIssue)) {
    case "Widespread (101 users or more)":
        num += 1
        break;

    case "Large (21-100 users)":
        num += 2
        break;

    case "Limited (2-20 users)":
        num += 3
        break;
    case "Single user (1 user)":
        num += 4
        break;

    default:
        System.out.println();
}

String priority;
switch (num){
    case 1: case 2: case 3: priority = "10002"; break;
    case 4: priority = "10400"; break;
    case 5: priority = "10401"; break;
    case 6: priority = "10402"; break;
    default: priority = "10004"
}

issue.setPriorityId(priority)

def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
ComponentAccessor.getIssueManager().updateIssue(user, issue, EventDispatchOption.ISSUE_UPDATED, false)

Suggest an answer

Log in or Sign up to answer
DEPLOYMENT TYPE
SERVER
VERSION
8.5.7
TAGS
AUG Leaders

Atlassian Community Events