Jira (8.0 - 8.14)
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.search.SearchProvider
import com.atlassian.jira.jql.parser.JqlQueryParser
import com.atlassian.jira.web.bean.PagerFilter
import com.atlassian.jira.issue.search.SearchQuery
// The issues returned from that JQL will get altered
final searchQuery = "project = TEST"
// Get some components
def jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser)
def searchProvider = ComponentAccessor.getComponent(SearchProvider)
def loggedInUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser
def issueService = ComponentAccessor.issueService
// Perform the search
def query = jqlQueryParser.parseQuery(searchQuery)
def searchResults = searchProvider.search(SearchQuery.create(query, loggedInUser), PagerFilter.unlimitedFilter)
// Iterate all the results to update each issue
searchResults.results.each { documentIssue ->
// Define the new params (a new description)
def issueInputParameters = issueService.newIssueInputParameters()
issueInputParameters.setDescription("A new description")
// Update the issue
def issueId = documentIssue.document.fields.find { it.name() == "issue_id" }.stringValue().toLong()
def updateValidationResult = issueService.validateUpdate(loggedInUser, issueId, issueInputParameters)
assert updateValidationResult.isValid() : updateValidationResult.errorCollection
// Validate the update
def issueResult = issueService.update(loggedInUser, updateValidationResult)
assert issueResult.isValid() : issueResult.errorCollection
}