Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Next challenges

Recent achievements

  • Global
  • Personal

Recognition

  • Give kudos
  • Received
  • Given

Leaderboard

  • Global

Trophy case

Kudos (beta program)

Kudos logo

You've been invited into the Kudos (beta program) private group. Chat with others in the program, or give feedback to Atlassian.

View group

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{
it.name == 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(field.id, desiredValue)
def loggedInUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser
def validationResult = issueService.validateUpdate(loggedInUser,
issue.id,
issueInputParameters
)
if (validationResult.isValid()) {
def updateResult = issueService.update(loggedInUser,
validationResult,
EventDispatchOption.DO_NOT_DISPATCH, //This is important to avoid infinite loops
false)
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

 

Thanks,

Kumar

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

Suggest an answer

Log in or Sign up to answer
TAGS

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