Showing results for 
Search instead for 
Did you mean: 
Sign up Log in
It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

Updating a custom field from a script listener

Users frequently want to move from using a Scripted Field to using a custom field that's automatically updated. This is useful for Jira Portfolio, which, as of this writing, doesn't support calculated fields. It's also useful if you need an automatic value that can be changed via the UI. The question is, how to do it in ScriptRunner?

1 answer

1 accepted

0 votes
Answer accepted

Answer: setup a Script Listener to listen for the Issue Updated event with code similar to the following (tweaked where noted)

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.issue.Issue

def issue = event.issue as Issue
def desiredValue = issue.summary + issue.description //TODO: Change this to be the actual calculation you want
def customFieldName = "My Custom Field" //TODO: Change this to match the custom field you want
def customFieldManager = ComponentAccessor.customFieldManager
def field = customFieldManager.getCustomFieldObjects(issue).find{ == customFieldName
def currentCustomFieldValue = issue.getCustomFieldValue(field)
if (currentCustomFieldValue == desiredValue) {
return //Quit -- we don't want to update the field if it's already correct.
def issueService = ComponentAccessor.getIssueService()
def issueInputParameters = issueService.newIssueInputParameters()
issueInputParameters.addCustomFieldValue(, desiredValue)
def loggedInUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser
def validationResult = issueService.validateUpdate(loggedInUser,,
if (validationResult.isValid()) {
def updateResult = issueService.update(loggedInUser,
EventDispatchOption.DO_NOT_DISPATCH, //This is important to avoid infinite loops
if (!updateResult.isValid()) {
log.error "Failed to update issue $issue.key"
log.error updateResult.errorCollection.errorMessages
log.warn updateResult.warningCollection.warnings
} else {
log.error "Failed to update issue $issue.key"
log.error validationResult.errorCollection.errorMessages
log.warn validationResult.warningCollection.warnings


Hi @Jonny Carter I have a requirement 

1) When the group field is changed then the "Assignee" field has to set to "Unassigned" automaticly

2) I have group field called "Assignment Group"  single group picker  so when ever  user assigned to to an issue in ""Assignee"(system field)  then the "Group " field has to update automatic  with the user belonged group

I'm trying a couple of scripts that are in community so there are not working

Can you please provide me the script please its will hleps me




Hi @Kumar - Were you ever able to find a solution for this?  This is exactly what I'm trying to do as well. Thanks!

Hi   @Kumar ,did you get the script?

Suggest an answer

Log in or Sign up to answer

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you