I'm trying to create a post function script that transtions linked issues on transition of parent issue (trying to setup epic -> story for kanban board so when I prioritze epic linked stories are prioritized too).
All was going well but I'm hitting an issue. There's a contraint on the story workflow that two custom fields must be populated - team (multi select) and fix release.
I have the following code:
issueLinkManager.getOutwardLinks(issue.id)?.each {issueLink -> if (issueLink.destinationObject.getStatusObject().getName() == toBePrioritized){ // Transition log.debug("updating linked issue status from "+issueLink.destinationObject.getStatusObject().getName()+" to "+priorityReviewed); workflowTransitionUtil.setIssue(issueLink.getDestinationObject()); workflowTransitionUtil.setUsername(currentUser); workflowTransitionUtil.setAction(301);
// validate and transition issue workflowTransitionUtil.validate(); workflowTransitionUtil.progress(); log.debug("successful transtion of "+issueLink.destinationObject.getKey()); } if (issueLink.destinationObject.getStatusObject().getName() == priorityReviewed){ // Transition workflowTransitionUtil.setIssue(issueLink.getDestinationObject()); workflowTransitionUtil.setUsername(currentUser); workflowTransitionUtil.setAction(141); //write targetRelease to custom field def linkedTargetReleaseField = customFieldManager.getCustomFieldObjects(issueLink.destinationObject).find {it.name == targetReleaseString} Project project = issueLink.destinationObject.getProjectObject(); Version version = componentManager.getVersionManager().getVersion(project.getId(), targetReleaseFieldValue); linkedTargetReleaseField.updateValue(null, issueLink.destinationObject, new ModifiedValue(issueLink.destinationObject.getCustomFieldValue(linkedTargetReleaseField), version),new DefaultIssueChangeHolder()); //write team to custom field def linkedTeamField = customFieldManager.getCustomFieldObjects(issueLink.destinationObject).find {teamString} OptionsManager optionsManager = ComponentAccessor.getOptionsManager(); Option teamOption = optionsManager.getOptions(linkedTeamField.getRelevantConfig(issueLink.destinationObject)).getOptionForValue(teamValue, null); issueLink.destinationObject.setCustomFieldValue(linkedTeamField,[teamOption]) // validate and transition issue workflowTransitionUtil.validate(); workflowTransitionUtil.progress(); log.debug("successful transtion of "+issueLink.destinationObject.getKey()+" to Ready For Development"); }
however I'm getting an error:
[Error list: [[Team must be defined]]]
I was parsing out values from the parent by doing:
Object teamVal = teamField.getCustomFieldType().getValueFromIssue(teamField, issue);
String teamValue = (String)teamVal == null ? "" : teamVal.toString();
It turns out this produced [team A] - the square brackets caused the mappings to fail. Fixed by doing:
Object teamVal = teamField.getCustomFieldType().getValueFromIssue(teamField, issue);
String teamValue = (String)teamVal == null ? "" : teamVal.toString().replaceAll("\\[", "").replaceAll("\\]","");
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.