I added a custom field named 'Participants' which is User Picker(multiple user) type to record the change of Assignee using ScriptRunner custom listener as below:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.user.ApplicationUser
def customFieldManager = ComponentAccessor.getCustomFieldManager()
// a user custom field
def userCf = customFieldManager.getCustomFieldObjectByName("Participants")
if (!issue.getCustomFieldValue(userCf)) {
return
}
List<ApplicationUser> userAlreadyInCustomField = issue.getCustomFieldValue(userCf)
userAlreadyInCustomField.add(issue.getAssignee())
issue.setCustomFieldValue(userCf, userAlreadyInCustomField)
ComponentAccessor.getIssueManager().updateIssue(issue.getAssignee(), issue, EventDispatchOption.ISSUE_UPDATED, false)
And sometimes it works and sometime get error:
2021-09-22 15:26:41,750 ERROR [runner.AbstractScriptListener]: ************************************************************************************* 2021-09-22 15:26:41,753 ERROR [runner.AbstractScriptListener]: Script function failed on event: com.atlassian.jira.event.issue.IssueEvent, file: null java.lang.NullPointerException at com.atlassian.jira.issue.IssueImpl.getCustomFieldValue(IssueImpl.java:951) at com.atlassian.jira.issue.Issue$getCustomFieldValue$2.call(Unknown Source) at Script1.run(Script1.groovy:11)
So I got confused what's wrong, and anyone can help me to fix this, thanks in advance~