I have a workflow post function where a users' manager is the first assignee in the issue. The manager is specified in a custom field. Here is my attempt to implement in scriptrunner:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.project.Project
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.user.ApplicationUsers
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.event.type.EventDispatchOption
MutableIssue curIssue = issue
CustomField managerField = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Manager")
String dUser = managerField.getValue(curIssue)
ApplicationUser cUser = ApplicationUsers.byKey(dUser)
IssueManager issueManager = ComponentAccessor.getIssueManager()
Project curProject = curIssue.getProjectObject()
ApplicationUser projectLead = curProject.getProjectLead()
curIssue.setAssignee(cUser)
issueManager.updateIssue(projectLead, curIssue, EventDispatchOption.ISSUE_UPDATED, false)
However when I run the post function, I get this error:
2018-02-13 11:13:49,627 ERROR [workflow.ScriptWorkflowFunction]: ************************************************************************************* 2018-02-13 11:13:49,627 ERROR [workflow.ScriptWorkflowFunction]: Script function failed on issue: null, actionId: 1, file: <inline script> java.lang.IllegalArgumentException: Source GenericValue can not be null. at com.atlassian.jira.association.NodeAssociationStoreImpl.getSinksFromSource(NodeAssociationStoreImpl.java:34) at com.atlassian.jira.project.version.DefaultVersionManager.getVersionsByIssue(DefaultVersionManager.java:752) at com.atlassian.jira.project.version.DefaultVersionManager.getFixVersionsFor(DefaultVersionManager.java:598) at com.atlassian.jira.project.version.DefaultVersionManager.updateIssueFixVersions(DefaultVersionManager.java:568) at com.atlassian.jira.issue.fields.FixVersionsSystemField.updateIssueValue(FixVersionsSystemField.java:98) at com.atlassian.jira.issue.fields.AbstractVersionsSystemField.updateValue(AbstractVersionsSystemField.java:368) at com.atlassian.jira.issue.managers.DefaultIssueManager.updateFieldValues(DefaultIssueManager.java:704) at com.atlassian.jira.issue.managers.DefaultIssueManager.updateIssue(DefaultIssueManager.java:669) at com.atlassian.jira.issue.managers.DefaultIssueManager.updateIssue(DefaultIssueManager.java:655) at com.atlassian.jira.issue.managers.RequestCachingIssueManager.updateIssue(RequestCachingIssueManager.java:214) at com.atlassian.jira.issue.IssueManager$updateIssue.call(Unknown Source) at Script449.run(Script449.groovy:18)
What am I doing wrong and how can I fix it?
the problem is with the last line. I guess, you pass a null for a parameter. Could you log.error (projectLead) and log.error(curIssue) and have a look in the log, if they are not null?
Thanks for the sanity check. Logged both (first two entries in the log). It does not appear that I am passing a null.
2018-02-13 12:01:16,885 ERROR [workflow.ScriptWorkflowFunction]: admin_user(admin_user) 2018-02-13 12:01:16,901 ERROR [workflow.ScriptWorkflowFunction]: keep trying 5 2018-02-13 12:01:16,917 ERROR [workflow.ScriptWorkflowFunction]: ************************************************************************************* 2018-02-13 12:01:16,917 ERROR [workflow.ScriptWorkflowFunction]: Script function failed on issue: null, actionId: 1, file: <inline script> java.lang.IllegalArgumentException: Source GenericValue can not be null. at com.atlassian.jira.association.NodeAssociationStoreImpl.getSinksFromSource(NodeAssociationStoreImpl.java:34) at com.atlassian.jira.project.version.DefaultVersionManager.getVersionsByIssue(DefaultVersionManager.java:752) at com.atlassian.jira.project.version.DefaultVersionManager.getFixVersionsFor(DefaultVersionManager.java:598) at com.atlassian.jira.project.version.DefaultVersionManager.updateIssueFixVersions(DefaultVersionManager.java:568) at com.atlassian.jira.issue.fields.FixVersionsSystemField.updateIssueValue(FixVersionsSystemField.java:98) at com.atlassian.jira.issue.fields.AbstractVersionsSystemField.updateValue(AbstractVersionsSystemField.java:368) at com.atlassian.jira.issue.managers.DefaultIssueManager.updateFieldValues(DefaultIssueManager.java:704) at com.atlassian.jira.issue.managers.DefaultIssueManager.updateIssue(DefaultIssueManager.java:669) at com.atlassian.jira.issue.managers.DefaultIssueManager.updateIssue(DefaultIssueManager.java:655) at com.atlassian.jira.issue.managers.RequestCachingIssueManager.updateIssue(RequestCachingIssueManager.java:214) at com.atlassian.jira.issue.IssueManager$updateIssue.call(Unknown Source) at Script466.run(Script466.groovy:20)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Okay, ran the log with cUser dumped to log and now have a null for cUser. now need to work that out.
2018-02-13 12:12:23,815 ERROR [workflow.ScriptWorkflowFunction]: 2018-02-13 12:12:23,831 ERROR [workflow.ScriptWorkflowFunction]: admin_user(admin_user) 2018-02-13 12:12:23,831 ERROR [workflow.ScriptWorkflowFunction]: task 6 2018-02-13 12:12:23,831 ERROR [workflow.ScriptWorkflowFunction]: ************************************************************************************* 2018-02-13 12:12:23,831 ERROR [workflow.ScriptWorkflowFunction]: Script function failed on issue: null, actionId: 1, file: <inline script> java.lang.IllegalArgumentException: Source GenericValue can not be null. at com.atlassian.jira.association.NodeAssociationStoreImpl.getSinksFromSource(NodeAssociationStoreImpl.java:34) at com.atlassian.jira.project.version.DefaultVersionManager.getVersionsByIssue(DefaultVersionManager.java:752) at com.atlassian.jira.project.version.DefaultVersionManager.getFixVersionsFor(DefaultVersionManager.java:598) at com.atlassian.jira.project.version.DefaultVersionManager.updateIssueFixVersions(DefaultVersionManager.java:568) at com.atlassian.jira.issue.fields.FixVersionsSystemField.updateIssueValue(FixVersionsSystemField.java:98) at com.atlassian.jira.issue.fields.AbstractVersionsSystemField.updateValue(AbstractVersionsSystemField.java:368) at com.atlassian.jira.issue.managers.DefaultIssueManager.updateFieldValues(DefaultIssueManager.java:704) at com.atlassian.jira.issue.managers.DefaultIssueManager.updateIssue(DefaultIssueManager.java:669) at com.atlassian.jira.issue.managers.DefaultIssueManager.updateIssue(DefaultIssueManager.java:655) at com.atlassian.jira.issue.managers.RequestCachingIssueManager.updateIssue(RequestCachingIssueManager.java:214) at com.atlassian.jira.issue.IssueManager$updateIssue$0.call(Unknown Source) at Script475.run(Script475.groovy:21)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks @Alexey Matveev, did not know how you you pulled up variable names in the groovy prompt in JIRA. Was able to readjust the code until it worked. BLUF: if you use people picker for a custom field it returns an ApplicationUser object. No need to do a conversion.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.project.Project
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.user.ApplicationUsers
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.event.type.EventDispatchOption
MutableIssue curIssue = issue
CustomField managerField = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Manager")
def dUser = managerField.getValue(curIssue)
IssueManager issueManager = ComponentAccessor.getIssueManager()
Project curProject = curIssue.getProjectObject()
ApplicationUser projectLead = curProject.getProjectLead()
curIssue.setAssignee(dUser)
log.error(dUser)
log.error(projectLead)
log.error(curIssue)
issueManager.updateIssue(projectLead, curIssue, EventDispatchOption.ISSUE_UPDATED, false)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Spend the day sharpening your skills in Atlassian Cloud Organization Admin or Jira Administration, then take the exam onsite. Already ready? Take one - or more - of 12 different certification exams while you’re in Anaheim at Team' 25.
Learn more
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.