Cant set single select customfield

Ilya Stekolnikov
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
May 26, 2021

The task is - in post function find an issue and then change customfiled to other option like in issue where postfunction is.

 

My code is

import org.apache.log4j.Level
import org.apache.log4j.Logger

import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.bc.issue.search.SearchService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.search.SearchResults
import com.atlassian.jira.web.bean.PagerFilter
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder

// set up logging
def log = Logger.getLogger("com.example.jira.script.ProcessJQL");

//def Grade = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Grade")
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def Grade = customFieldManager.getCustomFieldObject(14209) //Grade CF
def GradeValue = issue.getCustomFieldValue(cf) //Object option of Grade from issue

log.setLevel(Level.INFO);

// define JQL query
String jqlSearch = "project = INFO AND issueType = Task AND Employee = akim";

// required objects
SearchService searchService = ComponentAccessor.getComponent(SearchService.class);
ApplicationUser user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser();
IssueManager issueManager = ComponentAccessor.getIssueManager();

// validate the query
SearchService.ParseResult parseResult = searchService.parseQuery(user, jqlSearch);
if (parseResult.isValid()) {
// do the search
SearchResults searchResult = searchService.search(user, parseResult.getQuery(), PagerFilter.getUnlimitedFilter());

for (Issue issue : searchResult.getResults()) {
log.info("Found issue: " + issue.getKey());

// to update issue convert it to MutableIssue
MutableIssue mutableIssue = issueManager.getIssueObject(issue.getId());
mutableIssue.setSummary(issue.getSummary() + " UPDATED");

def availableOptions = ComponentAccessor.optionsManager.getOptions(Grade.getRelevantConfig(issue))
def optionToSet = availableOptions.find { it.value == newValue }

Grade.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(Grade), optionToSet), new DefaultIssueChangeHolder())

issueManager.updateIssue(user, mutableIssue, EventDispatchOption.ISSUE_UPDATED, false); // false = do not send e-mail notifications
}
} else
log.error("Invalid JQL: " + jqlSearch);

 

Got error:

2021-05-26 18:19:46,088 ERROR [workflow.AbstractScriptWorkflowFunction]: Workflow script has failed on issue CIW-613 for user 'XXXXXXX'. View here: https://XXXXXXXXX/secure/admin/workflows/ViewWorkflowTransition.jspa?workflowMode=live&workflowName=CIW%3A+Project+Management+Workflow&descriptorTab=postfunctions&workflowTransition=91&highlight=5 groovy.lang.MissingPropertyException: No such property: customFieldManager for class: Script3863 at Script3863.run(Script3863.groovy:17)

2 answers

1 accepted

2 votes
Answer accepted
Ilya Stekolnikov
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
May 27, 2021

I found the solution here is the code!

 

import org.apache.log4j.Level
import org.apache.log4j.Logger

import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.bc.issue.search.SearchService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.search.SearchResults
import com.atlassian.jira.web.bean.PagerFilter
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder

// set up logging
def log = Logger.getLogger("com.example.jira.script.ProcessJQL");

//def Grade = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Grade")
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def Grade = customFieldManager.getCustomFieldObject(14209) //Grade CF
def GradeValue = issue.getCustomFieldValue(Grade) //Object option of Grade from issue

log.setLevel(Level.INFO);

// define JQL query
String jqlSearch = "project = INFO AND issueType = Task AND Employee = akim";

// required objects
SearchService searchService = ComponentAccessor.getComponent(SearchService.class);
ApplicationUser user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser();
IssueManager issueManager = ComponentAccessor.getIssueManager();

// validate the query
SearchService.ParseResult parseResult = searchService.parseQuery(user, jqlSearch);
if (parseResult.isValid()) {
// do the search
SearchResults searchResult = searchService.search(user, parseResult.getQuery(), PagerFilter.getUnlimitedFilter());

for (Issue issue : searchResult.getResults()) {
log.info("Found issue: " + issue.getKey());

// to update issue convert it to MutableIssue
MutableIssue mutableIssue = issueManager.getIssueObject(issue.getId());
mutableIssue.setSummary(issue.getSummary() + " UPDATED");
mutableIssue.setCustomFieldValue(Grade, GradeValue)

 

issueManager.updateIssue(user, mutableIssue, EventDispatchOption.ISSUE_UPDATED, false); // false = do not send e-mail notifications
}
} else
log.error("Invalid JQL: " + jqlSearch);

 

 

as you can see i just used    mutableIssue.setCustomFieldValue(Grade, GradeValue)

0 votes
John Funk
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
May 26, 2021

Hi Ilya - WOW, that's a lot of code to get a field updated. What if you used a plug in like Automation for Jira? There is a Free Lite version and a paid Pro version that will probably do what you need to do without a lot of code. 

Suggest an answer

Log in or Sign up to answer