Auto update field based on changed value

Sander Spoelstra January 22, 2019

Hi,

Currently, we have a post-function script that automatically sets the priority upon creation of a new ticket. However, when one of the input fields are changed, I'd like it to change the priority accordingly. I'm unsure how to incorporate that. Can anyone help? 

As far as I understand, we need to set a behavior on the fields Impact, Urgency and Priority and then create a getFieldChanged script based on the code below. Question is: how exactly...

 

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.customfields.option.LazyLoadedOption;
import com.atlassian.jira.issue.priority.Priority;
import com.atlassian.jira.issue.MutableIssue;
import org.apache.log4j.Logger
import org.apache.log4j.Level

def currentIssue = (MutableIssue) issue

def customField1 = ComponentAccessor.getCustomFieldManager().getCustomFieldObject("customfield_13803");
def impact = (String)issue.getCustomFieldValue(customField1);
def customField2 = ComponentAccessor.getCustomFieldManager().getCustomFieldObject("customfield_13802");
def urgency = (String)issue.getCustomFieldValue(customField2);

def i1 = "All users affected";
def i2 = "Substantial number of users affected";
def i3 = "Multiple users";
def i4 = "Single user";

def u1 = "Complete outage";
def u2 = "Partial outage";
def u3 = "Minor outage";

def p1 = "Prio 1"
def p2 = "Prio 2"
def p3 = "Prio 3"
def p4 = "Prio 4"

def calculatedPriority = ""

if (impact.equals(i1))
{
if (urgency.equals(u1))
{
calculatedPriority = p1
}
else if (urgency.equals(u2))
{
calculatedPriority = p2
}
else if (urgency.equals(u3))
{
calculatedPriority = p3
}
}
else if (impact.equals(i2))
{
if (urgency.equals(u1))
{
calculatedPriority = p2
}
else if (urgency.equals(u2))
{
calculatedPriority = p3
}
}
else if (impact.equals(i3) && urgency.equals(u1))
{
calculatedPriority = p3
}
else
{
calculatedPriority = p4
}

currentIssue.setPriorityId(ComponentAccessor.getConstantsManager().getPriorities().find{it.getName().equals(calculatedPriority)}.getId())

 

1 answer

1 accepted

0 votes
Answer accepted
Sander Spoelstra January 23, 2019

Actually, I've fixed it with a listener. Consider this issue closed (unless someone has more elegant code :))

Suggest an answer

Log in or Sign up to answer