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("\\]","");
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.