Using ScriptRunner to Assign Approver based on Amount Value

Michael Hsu February 2, 2018

Custom Field : Amount

If Amount >= $1000 Then Approver = John

If Amount < $1000 Then Approver = Jill

Trying to get this into my workflow.  Any suggestions?

Thanks.

1 answer

0 votes
Ivan Tovbin
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.
February 2, 2018

Hi Michael,

Assuming your 'Amount' field ID is 11111 and your 'Approver' field ID is 22222, your script should look something like this:

import com.atlassian.jira.component.ComponentAccessor

def usrMgr = ComponentAccessor.getUserManager()
def cfMgr = ComponentAccessor.getCustomFieldManager()
def amount = cfMgr.getCustomFieldObject(11111.toLong())
def approver = cfMgr.getCustomFieldObject(22222.toLong())
def userJohn = usrMgr.getUserByName("John's user name")
def userJill = usrMgr.getUserByName("Jill's user name")

if (issue.getCustomFieldValue(amount) >= 1000){
issue.setCustomFieldValue(approver, userJohn)
}else if (issue.getCustomFieldValue(amount) < 1000){
issue.setCustomFieldValue(approver, userJill)
}
Michael Hsu February 2, 2018

Is there documentation somewhere on how I should properly test this?  Can I do it from the ScriptRunner console or do I have to do it from an actual issue?

Ivan Tovbin
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.
February 2, 2018

 In my instance I have a test project to play around with safely.

I suppose you can also do it in ScriptRunner console on a dummy issue, but you'll need to declare your 'issue' variable for that:

def issue = ComponentAccessor.getIssueManager().getIssueObject("test issue key")
Michael Hsu February 2, 2018

I'm sorry Approver = the built-in Jira assignee field

Ivan Tovbin
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.
February 2, 2018

then use this:

issue.setAssignee(userJohn)
Michael Hsu February 2, 2018

Gives me unable to resolve class com.atlassian.jira.component.componentAccessor.

I am using Jira Cloud if that matters.

Ivan Tovbin
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.
February 2, 2018

it should be exactly like this (case sensitive):

import com.atlassian.jira.component.ComponentAccessor
Michael Hsu February 2, 2018

It is exactly like that.

Workflow Post Functions | Run Script | Run arbitrary code on transition

and then I copied the code to the Script Context section

Avanish Pathak July 22, 2021

Hi , how to add more than one approver in list based on condition, Please help.

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events