This question is related to a JIRA process change. We used to leverage the priority field at the user story level to define a committed feature. This has changed, and we have introduced a new custom fields called commitments at the epic (not user story) level.
Here is the formula we are currently using for ‘committed story points balance’:
–annotations.group=Scope
case when
[Fix Version].CurrentHierarchyMember.Level.Name = “Version”
then
CASE WHEN
NOT isEmpty([Measures].[Story Points created]) THEN
(Sum(Filter([Priority].Members, [Priority].CurrentMember.Name MATCHES ‘High’ OR [Priority].CurrentMember.Name MATCHES ‘Highest’),
[Measures].[Story Points created]) / [Measures].[Story Points created])
END
end
What will be the MDX syntax to move from the Priority field at the user story level [Priority].CurrentMember.Name to commitments at the related epic level?
The new custom field measure "Commitments at the epic created” should be used instead of “Story points created” measure.
This will work correctly only if the Epics have the Priority and Version fields, as well as the Commitments at the epic field filled out. If not, then more information is needed to understand how Epic gets the version and priority information from stories.
If this is a question how epic properties could be displayed for stories then you may use functions getmemberByKey() and get() in your calculations. For example, for each story at the issue level you may get related epic properties, like commitments at the epic, using an expression:
[Issue].[Issue].GetMemberByKey(
[Issue].CurrentHierarchyMember.get('Epic Link')
).Get('Commitments at the epic')
We managed to implement this MDX formula thanks to the help of @Elvis and the https://flex.bi/ team.
Here is the code we deployed in case others in the community are interested.
The approach consists in adding a filter for issues at the page level in the report and select only stories that have a parent epic in a committed state, the MDX function is the following one:
Stories with Committed Epics
Aggregate(
Filter(
[Issue].[Issue].Members,
[Measures].[Issue type] = ‘Story’
AND
CASE
WHEN
NOT IsEmpty(
[Issue].[Issue].GetMemberByKey(
[Issue].CurrentHierarchyMember.get(‘Epic Link’)
)
)
THEN
[Issue].[Issue].GetMemberByKey(
[Issue].CurrentHierarchyMember.get(‘Epic Link’)
).get(“Commitment”) MATCHES ‘Committed’
ELSE
1=0
END
)
)
But this gives me a NULL/empty value. I am interested in what was entered into this field, at the Epic level. I am not looking for the sum of estimates of stories/children under the Epic.
This is the screenshot of the report I am trying to build: