Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Copy EPIC Value to User Story Using Calculated Custom Filed?

KartikS January 17, 2016

Hi,

We have a Custom Filed called "PortfolioPriority" which is Select List (single choice) and it is mainly visible at EPIC level but Available Context(s) is "Issue type(s): Global (all issues)".

Value of this field "PortfolioPriority" will be set at EPIC level but we would like same value to be copied over to Linked User Stories of that EPIC and for same I created a calculated custom field for User Stories called "EPICPortfolioPriority" and this is formula I used.

But unfortunately it's not copying value of "PortfolioPriority" from EPIC rather "PortfolioPriority" available on US level.

Could you please suggest what could be wrong here... I am using Jira Custom fields.

<!-- @@Formula:
// This formula copies "Portfolio Priority Category" from EPIC to linked User Stories
import com.atlassian.jira.issue.link.IssueLink;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.fields.CustomField;

CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
CustomField customField = customFieldManager.getCustomFieldObject("customfield_16982"); 
inwardLinks = ComponentAccessor.getIssueLinkManager().getInwardLinks(issue.getIssueObject().getId());

String issuetype = issue.get("issuetype").getName();

if (issuetype.equals("User Story")){
for (link : inwardLinks.iterator()){
if (link.getIssueLinkType().getName().equals("Epic-Story Link"))

{ Issue parentIssue = link.getDestinationObject(); parentIssueValue = parentIssue.getCustomFieldValue(customField) == null ? "" : parentIssue.getCustomFieldValue(customField); }

}
}

return parentIssueValue;

}

-->

We do have LiC for Workflow Toolbox but it only works on WorkFlow transitions but here I would like to copy the value at EPIC level to User Story for all the existing EPICs and then develop a 2 dimensional graph ussing easyBI.

1 answer

Comments for this post are closed

Community moderators have prevented the ability to post new answers.

Post a new question

2 votes
KartikS January 19, 2016

Hi,

I solved this case myself and here is code if somebody interested or have better suggestions:

<!-- @@Formula:
// This formula copies "Priority Category" from EPIC to linked User Stories
import com.atlassian.jira.issue.link.IssueLink;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.ComponentManager;

ComponentManager componentManager = ComponentManager.getInstance();
IssueManager issueManager = ComponentAccessor.getIssueManager();

CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
CustomField customField = customFieldManager.getCustomFieldObject("customfield_16982");

InwardLinks = ComponentAccessor.getIssueLinkManager().getInwardLinks(issue.getIssueObject().getId());

String issuetype = issue.get("issuetype").getName() == null ? "" : issue.get("issuetype").getName();
String parentIssueValue = "";

if (issuetype.equals("User Story")){

for (link : InwardLinks.iterator()){

if (link.getIssueLinkType().getName().equals("Epic-Story Link"))

{ Issue parentIssue = link.getSourceObject(); parentIssueValue = parentIssue.getCustomFieldValue(customField).value == null ? "" : parentIssue.getCustomFieldValue(customField).value; }

}

} else if (issuetype.equals("Epic")){
parentIssueValue = customField.getValue(issue.getIssueObject()).value == null ? "" : customField.getValue(issue.getIssueObject()).value;
}

return parentIssueValue;

-->

TAGS
AUG Leaders

Atlassian Community Events