Hi
I'm trying to write a script that update issue custom field
the script is working and the custom field is indeed updated but there is no indication of the issue changed event in the history
any idea why is that?
thanks
Dar
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.Issue import com.atlassian.jira.issue.MutableIssue import com.atlassian.jira.issue.fields.CustomField import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.IssueManager import com.atlassian.jira.issue.ModifiedValue import com.atlassian.jira.issue.util.DefaultIssueChangeHolder import com.atlassian.jira.issue.util.IssueChangeHolder import com.atlassian.jira.event.issue.IssueEvent import com.atlassian.jira.event.type.EventDispatchOption; import com.atlassian.jira.security.JiraAuthenticationContext IssueManager issueManager = ComponentAccessor.getOSGiComponentInstanceOfType(IssueManager.class); def cfManager = ComponentAccessor.getCustomFieldManager(); Issue issue = issueManager.getIssueObject("TMP-8136"); IssueEvent event; MutableIssue iss=issue def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() IssueChangeHolder changeHolder = new DefaultIssueChangeHolder(); def Cf=cfManager.getCustomFieldObject('customfield_10801'); Double num=5 Cf.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(Cf),num ), changeHolder); ComponentAccessor.getIssueManager().updateIssue(currentUser, iss, EventDispatchOption.ISSUE_UPDATED, false);
Note that you update value for iss, but store changes for issue.
I also modified your code, use it if you like this:
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.MutableIssue import com.atlassian.jira.issue.IssueManager import com.atlassian.jira.event.type.EventDispatchOption; IssueManager issueManager = ComponentAccessor.getIssueManager() MutableIssue issue = issueManager.getIssueObject("TMP-8136"); issue.setCustomFieldValue( ComponentAccessor.getCustomFieldManager().getCustomFieldObject('customfield_10801') , 5) ComponentAccessor.getIssueManager().updateIssue( ComponentAccessor.getJiraAuthenticationContext().getUser().getDirectoryUser() , issue , EventDispatchOption.ISSUE_UPDATED , false);
Should work fine but the more modern approach is to use IssueService to do an issue update.
Also, the code above is for JIRA 6. On JIRA 7, remove the ".getDirectoryUser()"
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thank you both!! it works great!!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Join us June 26, 11am PT for a webinar with Atlassian Champion Robert Hean & Loom’s Brittany Soinski. Hear tips, stories, and get your burning questions answered. Learn how Loom makes training and enablement easier. Don’t miss it!
Register todayOnline forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.