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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.