I have a script to update an Elements Connect field without affecting "change history" or "last update time", but it only works for single values:
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.Issue import com.atlassian.jira.issue.fields.CustomField import com.atlassian.jira.issue.ModifiedValue import com.atlassian.jira.issue.util.DefaultIssueChangeHolder import com.atlassian.jira.issue.index.IssueIndexingService import com.atlassian.jira.issue.index.IssueIndexingParams // Define the custom field ID. CUSTOMFIELD_ID = 333 for the custom field "Platform". def CUSTOMFIELD_ID = 333 // Retrieve the CustomField object using its ID CustomField customField = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(CUSTOMFIELD_ID) // Define the new value to be set for the custom field def newValue = 'PT3' // Define the JQL query to find issues def jqlQuery = 'key in (ISSUEKEY-101,ISSUEKEY-102)' // Execute the search with the provided JQL query Issues.search(jqlQuery).each { issue -> // Update the custom field value for each issue customField.updateValue( null, // No custom field configuration issue, // The issue being updated new ModifiedValue(issue.getCustomFieldValue(customField), newValue), // New value for the field new DefaultIssueChangeHolder() // A holder for changes ) // Re-index the issue to reflect the changes in the search index ComponentAccessor.getComponent(IssueIndexingService).reIndex( issue, // The issue to be re-indexed IssueIndexingParams.INDEX_ISSUE_ONLY // Re-index only the issue ) }
def newValue = 'PT3,PT8'
results in: {"keys":["PT3,PT8"]}
but what I need is: {"keys":["PT3","PT8"]}
def newValue = ['PT3','PT8']
does not work with: new DefaultIssueChangeHolder()
Any ideas on how to make this work?
Hi @WindHub Support !
it seems the value you need to assign to the newValue
variable should be:
def newValue = '{"keys":["PT3","PT8"]}'
From your current script, it seems you're using a static value for newValue
instead of a dynamic one. Updating it to the following format should resolve the issue.
Could you clarifiy if there's a specific reason why you're not replacing def newValue = 'PT3'
with def newValue = '{"keys":["PT3","PT8"]}'
in your script?
Don't hesitate to let me know if the problem persists.
Kind regards.
Maelle
Hi Maelle,
I feel stupid and happy at the same time...
Setting the value I was looking for directly, as you suggested, went totally over my head.
Thanks a lot for noticing and making me see.
Here is the working code in case someone faces the same blindness or just wants to do this:
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.Issue import com.atlassian.jira.issue.fields.CustomField import com.atlassian.jira.issue.ModifiedValue import com.atlassian.jira.issue.util.DefaultIssueChangeHolder import com.atlassian.jira.issue.index.IssueIndexingService import com.atlassian.jira.issue.index.IssueIndexingParams // Define the custom field ID. CUSTOMFIELD_ID = 333 for the custom field "Platform". def CUSTOMFIELD_ID = 333 // Retrieve the CustomField object using its ID CustomField customField = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(CUSTOMFIELD_ID) // Define the new value to be set for the custom field def newValue = '{"keys":["PT3","PT8"]}' // Define the JQL query to find issues def jqlQuery = 'key in (ISSUEKEY-101,ISSUEKEY-102)' // Execute the search with the provided JQL query Issues.search(jqlQuery).each { issue -> // Update the custom field value for each issue customField.updateValue( null, // No custom field configuration issue, // The issue being updated new ModifiedValue(issue.getCustomFieldValue(customField), newValue), // New value for the field new DefaultIssueChangeHolder() // A holder for changes ) // Re-index the issue to reflect the changes in the search index ComponentAccessor.getComponent(IssueIndexingService).reIndex( issue, // The issue to be re-indexed IssueIndexingParams.INDEX_ISSUE_ONLY // Re-index only the issue ) }
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online 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.