Dependant Releases report

Greetings, eazyBI Community,

We want to create report that shows dependant releases for a selected fix version. JIRA doesn’t have a good way to link dependant releases. Our thinking is the following:

  1. Choose fix version from filter that you want to get related releases for;
  2. Get all issues associated with the selected fix version;
  3. Recursively analyze all issue links from the #2 issues and gather unique fix versions list
  4. Show the fix versions list as Gantt chart:

Can someone from the experts help build this? Thanks in advance.

I tried using eazyBI AI assistant to generate the report by using prompts. Here’s the output:

Here’s the MDX formula for a calculated member in Fix Version dimension that will return related fix versions:

WITH 
-- Helper member to store all linked issues recursively
MEMBER [Measures].[Linked Issues] AS
  AGGREGATE(
    UNION(
      -- Get direct issues from selected fix version
      Filter(
        [Issue].[Issue].Members,
        NOT ISEMPTY([Measures].[Issues created])
        AND [Fix Version].CurrentMember
      ),
      -- Get linked issues recursively through all link types
      DESCENDANTS(
        UNION(
          [Blocks].[Blocks].Members,
          UNION(
            [Cloners].[Cloners].Members,
            UNION(
              [Duplicate].[Duplicate].Members, 
              UNION(
                [relates to].[relates to].Members,
                UNION(
                  [Spawned].[Spawned].Members,
                  UNION(
                    [All links].[All links].Members,
                    [Unresolved links].[Unresolved links].Members
                  )
                )
              )
            )
          )
        ),
        [Issue].[Issue]
      )
    )
  )


-- Main calculated member that returns related fix versions
SELECT
  GENERATE(
    [Fix Version].[Version].Members,
    IIF(
      NOT ISEMPTY(
        INTERSECT(
          [Issue].[Issue].Members,
          [Measures].[Linked Issues]
        )
      ),
      [Fix Version].CurrentMember,
      NULL
    )
  ) ON COLUMNS
FROM [Issues]

This formula:

Creates a helper measure [Linked Issues] that:

Gets direct issues from current fix version
Gets all linked issues through all link types recursively
Aggregates them into a set
Main SELECT:

Generates set of fix versions
For each fix version checks if it has any issues that are in [Linked Issues] set
Returns only fix versions that have linked issues
To use this:

Create a calculated member in Fix Version dimension
Set this as the formula
Use the calculated member to filter rows in the Gantt chart report
The formula will show all fix versions that are related through issue links to the selected fix version in the page filter.

Note: This is a complex recursive calculation that may need performance optimization depending on your data volume. Consider limiting recursion depth or number of link types if needed.

Please test the formula with your actual data and adjust as needed.


But, error is thrown when trying to import generated report definition:
image

Can you help spot what’s wrong with the generated code?

Hi @rolandas.kicas
This is a bit of an untypical scenario, and the eazyBI AI assistant can have limitations in answering these complex questions.

I would suggest a solution using JavaScript custom field and MDX to show dependent releases:

  1. First, create a new JavaScript calculated custom field “Fix version (copy)” with this code:
// Return empty array if no fix versions
if (!issue.fields.fixVersions) {
  return [];
}

// Return array with just fix version names
return issue.fields.fixVersions.map(version => version.id);

Required import settings:

  • Data type: string
  • Dimension: Yes
  • Multiple values: Yes

See JavaScript calculated custom fields documentation

  1. Then create a calculated measure to count linked issues with matching fix versions (in my examples, I have issue links dimension “Bugs”):
Sum(
  --go through all linked Bugs
  Filter(
    DescendantsSet([Bugs].CurrentMember,[Bugs].[Bugs]),
    --check if linked Bug Priority matches selected Priority  
    DefaultContext((
      [Measures].[Issues created],
      [Issue].[Issue].GetMemberByKey(
        [Bugs].CurrentMember.KEY),
      [Fix version (copy)].CurrentHierarchyMember
    )) > 0
  ),
  --aggregate linked Bugs ignoring the Issue Priority
  ([Measures].[Issues created],
  [Fix version (copy)].CurrentHierarchy.DefaultMember)
)

This will:

  • Filter through linked issues in the Bugs dimension
  • Check if those issues have matching fix versions in the copy dimension
  • Count the linked issues for each fix version

For the Gantt chart:

  1. Put “Fix Version” dimension on Pages for filtering
  2. Put “Fix version (copy)” on Rows to show dependent versions
  3. Use these formulas to reference properties from the original “Fix version” dimension:

– Names:

Generate(
  [Fix Version].[Version].GetMembersByKeys(
    [Bugs].CurrentHierarchyMember.Get('Fix version (copy)')
  ),
  -- get fix version name
  [Fix Version].CurrentMember.Name,
  -- delimiter
  ', '
)

– Release date

[Fix Version].[Version].GetMemberByKey(
  [Fix version (copy)].CurrentHierarchyMember.key
).Get('Release date')

– Start date:

[Fix Version].[Version].GetMemberByKey(
  [Fix version (copy)].CurrentHierarchyMember.key
).Get('Start date')

The JavaScript code copies fix version data to a new dimension that can be used independently for filtering and analysis of linked issues.

The end report:

Alternatively, you could copy this value from linked issues directly in Jira using a separate version field (e.g., using Script Runner) and then import this dimension in eazyBI and use the out-of-the-box metrics.

Kind regards,
Gerda // support@eazybi.com

1 Like

Hi @gerda.grantina,

Thank you so much for the answer. I may have described requirements a bit unclear. I’m trying to solve a little different scenario. My goal is not to have issues in rows and show their linked bugs related versions. I want to depict dependancies between different releases. For example: I have Service1 and Service2 Jira projects that track releases of these separate software components. Service1 has its own release cycle and fix versions, eg. service1-x.y.z. So does the Service2 - service2-i.j.k. The third Jira project is for App1 software component which uses Service1 and Service 2 as dependent components and cannot be released without certain fix versions of service1-x.y.z and service2-i.j.k.

I want to be able so select app1-q.w.r fix version from filters, and then service1-x.y.z and service2-i.j.k show up in rows (in gantt chart format).

The relation between app1 and service1/service2 fix versions would be calculated from issues links. Some app1 fix version tickets will have service1 and/or service2 linked tickets.