Hi
I try to add an issuetype (with id 16800) to field contexts that already contains another type (with id 20).
I tried with the following code but no change is done after running this script, could you please help :
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.fields.ConfigurableField;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.config.FieldConfigScheme;
import com.atlassian.jira.issue.fields.config.FieldConfig;
import com.atlassian.jira.issue.fields.config.manager.FieldConfigSchemeManager;
import com.atlassian.jira.issue.fields.config.manager.FieldConfigManager;
import com.atlassian.jira.issue.fields.FieldManager;
import com.atlassian.jira.issue.context.ProjectContext;
import com.atlassian.jira.issue.context.JiraContextNode;
import com.atlassian.jira.issue.context.manager.JiraContextTreeManager;
import com.atlassian.jira.issue.customfields.CustomFieldUtils;
String newType = 16800;
String oldType = 20;
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
FieldConfigSchemeManager fieldConfigSchemeManager = ComponentAccessor.getFieldConfigSchemeManager();
FieldConfigManager fieldConfigManager = ComponentAccessor.getComponentOfType(FieldConfigManager.class);
FieldManager fieldManager = ComponentAccessor.getFieldManager();
//List<CustomField> fields = customFieldManager.getCustomFieldObjects();
List<CustomField> fields = new ArrayList<CustomField>();
fields.add(customFieldManager.getCustomFieldObject(76940L))
for (CustomField field : fields){
List<FieldConfigScheme> fieldConfigSchemes = field.getConfigurationSchemes();
for (FieldConfigScheme fieldConfigScheme : fieldConfigSchemes){
if (fieldConfigScheme.getAssociatedIssueTypeIds().contains(oldType)){
FieldConfigScheme newFieldConfigScheme = fieldConfigSchemeManager.getFieldConfigScheme(fieldConfigScheme.getId())
FieldConfigScheme.Builder newSchemeBuilder = new FieldConfigScheme.Builder(newFieldConfigScheme);
FieldConfig config = fieldConfigScheme.getOneAndOnlyConfig();
Map configs = new HashMap()
for (String issueTypeId : fieldConfigScheme.getAssociatedIssueTypeIds()){
configs.put(issueTypeId, config);
}
configs.put(newType, config);
newSchemeBuilder.setConfigs(configs);
FieldConfigScheme newConfigScheme = newSchemeBuilder.toFieldConfigScheme();
// return (configs.toString() + " // " + newFieldConfigScheme.getConfigs())
List<Long> projectIds = fieldConfigScheme.getAssociatedProjectIds();
List contexts = CustomFieldUtils.buildJiraIssueContexts(false,projectIds.toArray(new Long[projectIds.size()]),ComponentAccessor.getProjectManager());
fieldConfigSchemeManager.updateFieldConfigScheme(newFieldConfigScheme, contexts, customFieldManager.getCustomFieldObject(field.getId()))
}
}
}
note that if I uncomment le ligne "return (configs.toString() + " // " + newFieldConfigScheme.getConfigs())" I got :
[16800:com.atlassian.jira.issue.fields.config.FieldConfigImpl@f2d93640, 20:com.atlassian.jira.issue.fields.config.FieldConfigImpl@f2d93640, 21:com.atlassian.jira.issue.fields.config.FieldConfigImpl@f2d93640]//[20:com.atlassian.jira.issue.fields.config.FieldConfigImpl@f2d93640, 21:com.atlassian.jira.issue.fields.config.FieldConfigImpl@f2d93640]
I don't understand why the config from newFieldConfigScheme doesn't contains issue type 16800 despite this id is in configs map
Regards,
Elie.