Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

[ScriptRunner] update a sub-task(s) Assignee to X value if parent customField 'x' value updated

Nour Durra Consultant September 1, 2020

Hi.

I need help creating a listener in ScriptRunner to update a sub-task(s) Assignee to 'X' value if parent customField 'x' value updated to a certain option. 

 

Example:

If Parent field 'Module' which is a select list changes to: UI

Then (Signoff) "which is a Subtask issue type" assignee should change to: 'Jane Doe'

 

Thanks a lot

1 answer

Suggest an answer

Log in or Sign up to answer
0 votes
Kevin Johnson
Community Champion
September 4, 2020

Hi @Nour Durra Consultant , Just saw your request yesterday, worked on it and it was possible. It was a bit tough, so it was interesting. Hope this would help..!

Create a custom listener like shown in the image.l1.PNG

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.user.util.UserManager
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.MutableIssue

def issue = event.getIssue() as MutableIssue

def customFieldManager = ComponentAccessor.getCustomFieldManager()
def cField = customFieldManager.getCustomFieldObject("customfield_10488")
def cFieldValue = issue.getCustomFieldValue(cField)

String userName
switch(cFieldValue){
case "Q1": userName = "kevin.e";break;
case "Q2 ": userName = "angelinjebapriya";break;
case "Q3": userName = "kevin.e";break;
case "Q4": userName = "angelinjebapriya";break;
case "Sales Team": userName = "kevin.e";break;
default: userName = null;
}

UserManager userManager = ComponentAccessor.getUserManager()
IssueManager issueManager = ComponentAccessor.getIssueManager()
ApplicationUser assignToUser = userManager.getUserByName(userName)

// Get a list of the current issue's subtasks
def subtasks = issue.getSubTaskObjects()

// Loop through all the subtasks and delete them
subtasks.each{it->

if(cField) {
def changeHolder = new DefaultIssueChangeHolder()
def i = it as MutableIssue

log.error(assignToUser)
log.error(cFieldValue)
log.error(i)
//update same custom field value in subtasks
cField.updateValue(null, it, new ModifiedValue(issue.getCustomFieldValue(cField), cFieldValue),changeHolder)
//set assignee as desired
i.setAssignee(assignToUser)
issueManager.updateIssue(assignToUser, i, EventDispatchOption.DO_NOT_DISPATCH, false)

}

}
 

  

TAGS
AUG Leaders

Atlassian Community Events