Update priority field based on value of an existing custom field

I am trying to create a post function that will update the priority field based on the value of a custom field. This is based on an example script from Atlassian Answers, I have included below for reference. needless to say it isn't working - but it doesn't fail which is a start!, so I am trying to add debug statements to see what is happening using "log.info", but I don't see this output anywhere. I have checked the atlassian.jira.log file and see no reference.

The execution information below says no logs.

Time (on server): Tue Apr 04 2017 11:06:37 GMT+0100 (GMT Daylight Time)
The following log information was produced by this execution. Use statements like:log.info("...") to record logging information.
No logs were found for this execution.

 

import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.event.type.EventDispatchOption;
import com.atlassian.jira.event.issue.AbstractIssueEventListener;
import com.atlassian.jira.event.issue.IssueEvent;
import com.atlassian.jira.user.ApplicationUser;
import com.atlassian.jira.issue.UpdateIssueRequest;
import org.apache.log4j.Category;

class UpdateParentPriority extends AbstractIssueEventListener {
@Override // Fires on event Issue Updated
void workflowEvent(IssueEvent event) {
// Create Jira objects
MutableIssue mutableIssue = (MutableIssue)event.issue;
CustomFieldManager customFieldManager = ComponentAccessor.customFieldManager;
CustomField customField = customFieldManager.getCustomFieldObject("customfield_12248");

// Create adminUser user object
ApplicationUser adminUserAppUser = ComponentAccessor.getUserManager().getUserByKey("adminUser");
log.info("adminUserAppUser: " + adminUserAppUser);

// Incident Priority custom field value
def customFieldValue = mutableIssue.getCustomFieldValue(customField);
log.info("customFieldValue: " + customFieldValue);

// Set default priority based on Incident Priority
def majorPriorityID = "10000"; // Highest
def standardPriorityID = "5"; // High
switch (customFieldValue)

{ case "Audit (Internal)": mutableIssue.setPriorityId(majorPriorityID); log.info("Set priority to Highest"); break; case "Audit (External)": mutableIssue.setPriorityId(standardPriorityID); log.info("Set priority to Highest"); break; case "IT Problem Management": mutableIssue.setPriorityId(standardPriorityID); log.info("Set priority to High"); break; default: log.info("No need to change the priority"); break; }// Update issue as adminUser user
ComponentAccessor.getIssueManager().updateIssue(adminUserAppUser, mutableIssue, EventDispatchOption.DO_NOT_DISPATCH, false);
log.info("Script finished");
} // end workflowEvent()
} // end class UpdateParentPriority

1 answer

Hello Roy:

Seems like you took an example that was a bit outdated. I tried this on my machine and it worked fine. Feel free to give it a try and if you come up with any other issues feel free to ask again.

 

import com.atlassian.jira.component.ComponentAccessor

def customFieldManager = ComponentAccessor.getCustomFieldManager()
def customField = customFieldManager.getCustomFieldObjects(issue)?.find { it.id == "customfield_12248" }

def customFieldVal = issue.getCustomFieldValue(customField)

def majorPriorityID = "10000" // Highest
def standardPriorityID = "5" // High
switch (customFieldVal) {
case "Audit (Internal)":
issue.setPriorityId(majorPriorityID)
log.debug("Set priority to Highest")
break
case "Audit (External)":
issue.setPriorityId(standardPriorityID)
log.debug("Set priority to Standard")
break
case "IT Problem Management":
issue.setPriorityId(standardPriorityID)
log.debug("Set priority to Standard-2")
break
default:
log.debug("No need to change the priority")
break
}

Huge thanks, did the job and a lot cleaner to read.

I found that this didn't work as part of the create transition (I  oved to the last post step, no joy).  So I created a new status after Create, called Set Priority) and set the priority there.  Finally I used a fast track transition so that this transition was executed straight away with no user intervention.  Bit longwinded, but does the trick.  

Thanks again

 

Roy

Hi Roy - this should work on the create transition but it needs to be the first post-function, not the last.

Suggest an answer

Log in or Join to answer
Community showcase
Teodora [Botron]
Published Feb 15, 2018 in Marketplace Apps

Jira Inferno: The Nine Circles of Jira Administration Hell

If you spend enough time as a Jira admin - whether you are managing a single, mid-sized instance, a large enterprise one or juggling multiple instances at once - you will eventually find yourself in ...

1,109 views 6 19
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you
Atlassian Team Tour

Join us on the Team Tour

We're bringing product updates and pro tips on teamwork to ten cities around the world.

Save your spot