Hello,
Can you please give me script for Listener by which I can set assignee for "Issue Updated" Event. In post-function we can directly use issue.setAssignee() but the same function is not applicable in Listener.
For each case in Script, I need different user assigned for each selection and I am not able find the appropriate solution. Can you please recorrect this script or maybe just provide me lines that can be used in the Cases.
My script is given below :
Hi, @Shrikant Pandurang Mandlik
Here, try this. I took your script as example, and slightly refactored it.
/*
* Created 2023.
* @author Evgeniy Isaenkov
* @github https://github.com/Udjin79/SRUtils
*/
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.index.IssueIndexingService
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.user.util.UserManager
UserManager userManager = ComponentAccessor.getUserManager()
IssueManager issueManager = ComponentAccessor.getIssueManager()
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
IssueIndexingService issueIndexingService = ComponentAccessor.getComponent(IssueIndexingService)
MutableIssue issue = issueManager.getIssueObject(event.getIssue().getKey())
CustomField cField = customFieldManager.getCustomFieldObject("customfield_29500")
CustomField team = customFieldManager.getCustomFieldObject("customfield_28112")
CustomField epicLink = customFieldManager.getCustomFieldObject("Epic Link")
Map temp = issue.getCustomFieldValue(cField) as Map
String cFieldValue = temp.get(null).toString()
Map variables = [
"COBOL/DBA/Mainframe Team": ["GOXFUNC-5611", "x-cteam", "COBOL/DBA/Mainframe Team"],
"BASIS-Team" : ["GOXFUNC-6635", "x-bteam", "Backdesk Team", 11201],
"UCD Team" : ["GOXFUNC-6488", "x-uteam", "UCD Team"],
"Java Team" : ["GOXFUNC-6633", "x-jteam", "Java Team"],
"KM-Tools Team" : ["GOXFUNC-6634", "x-kteam", "KM-Tools Team", 11201],
"PL/Infra/KM" : ["GOXFUNC-5435", "x-pteam", "Production Line Team"],
"Others" : [null, "x-pteam", "Other"]
]
if (cFieldValue in variables.keySet()) {
ApplicationUser assignee = userManager.getUserByName(variables[cFieldValue][1])
issue.setAssignee(assignee)
if (variables[cFieldValue][3]) {
issue.setPriorityId(variables[cFieldValue][3])
}
issue.setCustomFieldValue(team, variables[cFieldValue][2])
if (variables[cFieldValue][0]) {
MutableIssue epicIssue = issueManager.getIssueObject(variables[cFieldValue][0])
issue.setCustomFieldValue(epicLink, epicIssue)
}
ApplicationUser user = userManager.getUserByName("x-bteam")
issueManager.updateIssue(user, issue, EventDispatchOption.DO_NOT_DISPATCH, false)
issueIndexingService.reIndex(issue)
}
One small notice - please, don's start variables names from caps letters, like BasisTeam, JavaTeam. They can be mixed up with Java classes names.
Commonly used naming is variableName, like customField, epicName, teamLead and so on.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @Evgenii
Thank you for the suggestion and script. I'll check it out and will let you know if it's working or not.
Thank you!
Best Regards,
Shrikant Mandlik
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @Evgenii ,
The Script you have provided is showing error "cannot find matching method" for the below lines :
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi, @Shrikant Pandurang Mandlik
Can you tell, what type of custom field are you using here?
CustomField cField = customFieldManager.getCustomFieldObject("customfield_29500")
It's single select field, or radio-button, or multi-select field? It's the only bottleneck, that I see
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Ok, got it. Found error with type of value, for priorityId. Fixed it. In current script issues are changed under permissions of users, set in dictionary (different for everey team). If you want to use service acount, to change issues, modifie line 54, add there username of service account, instead of value from dictionary.
/*
* Created 2023.
* @author Evgeniy Isaenkov
* @github https://github.com/Udjin79/SRUtils
*/
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.index.IssueIndexingService
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.user.util.UserManager
UserManager userManager = ComponentAccessor.getUserManager()
IssueManager issueManager = ComponentAccessor.getIssueManager()
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
IssueIndexingService issueIndexingService = ComponentAccessor.getComponent(IssueIndexingService)
MutableIssue issue = issueManager.getIssueObject(event.getIssue().getKey())
CustomField cField = customFieldManager.getCustomFieldObject("customfield_29500")
CustomField team = customFieldManager.getCustomFieldObject("customfield_28112")
CustomField epicLink = customFieldManager.getCustomFieldObject("Epic Link")
Map temp = issue.getCustomFieldValue(cField) as Map
String cFieldValue = temp.get(null).toString()
Map<String, List<String>> variables = [
"COBOL/DBA/Mainframe Team": ["GOXFUNC-5611", "x-cteam", "COBOL/DBA/Mainframe Team"],
"BASIS-Team" : ["GOXFUNC-6635", "x-bteam", "Backdesk Team", "11201"],
"UCD Team" : ["GOXFUNC-6488", "x-uteam", "UCD Team"],
"Java Team" : ["GOXFUNC-6633", "x-jteam", "Java Team"],
"KM-Tools Team" : ["GOXFUNC-6634", "x-kteam", "KM-Tools Team", "11201"],
"PL/Infra/KM" : ["GOXFUNC-5435", "x-pteam", "Production Line Team"],
"Others" : [null, "x-pteam", "Other"]
]
if (cFieldValue in variables.keySet()) {
ApplicationUser assignee = userManager.getUserByName(variables[cFieldValue][1])
issue.setAssignee(assignee)
if (variables[cFieldValue][3]) {
issue.setPriorityId(variables[cFieldValue][3])
}
issue.setCustomFieldValue(team, variables[cFieldValue][2])
if (variables[cFieldValue][0]) {
MutableIssue epicIssue = issueManager.getIssueObject(variables[cFieldValue][0])
issue.setCustomFieldValue(epicLink, epicIssue)
}
// Set here username of service account, for changing issues (if needed)
ApplicationUser user = userManager.getUserByName(variables[cFieldValue][1])
issueManager.updateIssue(user, issue, EventDispatchOption.DO_NOT_DISPATCH, false)
issueIndexingService.reIndex(issue)
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @Evgenii ,
Sorry for the late reply, This script is working fine. Thank you so much for your help. You are great!
Best Regards,
Shrikant Mandlik
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.