Script runner - setting selection list field value

Ron Grinfeld June 2, 2015

i'm trying to set a custom selection list field value via script runner post function script.

It passes with no issues but I don't see the filed actually getting updated. 

What am I missing ?

import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.customfields.manager.OptionsManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
def componentManager = ComponentManager.instance;
if (issue.issueTypeObject.name == "Bug"){
	def optionsManager = componentManager.getComponentInstanceOfType(OptionsManager.class);
// locating the custom field	
def cfDocReq = componentManager.getCustomFieldManager().getCustomFieldObjectByName('Documentation required');
	// retrieve the field options
	def fieldConfig = cfDocReq.getRelevantConfig(issue);
	// set up the specific value to set the list 
	def value = ComponentAccessor.optionsManager.getOptions(fieldConfig)?.find { it.toString() == 'Required' }
    // update the custom selection list field
	issue.setCustomFieldValue(cfDocReq, value);
	// store changes
	issue.store();
}

2 answers

1 accepted

0 votes
Answer accepted
Ron Grinfeld June 8, 2015

OK, this is how its suppose to be (working for me):

 

// setting the list value to null which is the default jira value
mutableIssue.setCustomFieldValue(cfSDoc, null);
// update the custom filed and issue
Map<String, ModifiedValue> modifiedFields = mutableIssue.getModifiedFields();
def fieldLayoutItem = ComponentManager.getInstance().getFieldLayoutManager().getFieldLayout(mutableIssue).getFieldLayoutItem(cfSDoc);
DefaultIssueChangeHolder issueChangeHolder = new DefaultIssueChangeHolder();
ModifiedValue modifiedValue = (ModifiedValue) modifiedFields.get(cfSDoc.getId());
cfSDoc.updateValue(fieldLayoutItem, mutableIssue, modifiedValue, issueChangeHolder);
mutableIssue.store();
0 votes
Ron Grinfeld June 3, 2015

Anything ????

Suggest an answer

Log in or Sign up to answer