Nesting filters into folders under a JQL query in a structure

Christopher Moretti April 16, 2021

I am wondering if this is even possible.  I have a structure that organizes the issues into a folder by sprint.  Then I organize them under that folder into smaller folders based on whether they apply to requirements, code, design, etc.  I was wondering if this would be possible to do without creating JQL queries I have to manually update for each sprint.  For example:

Sprint 1

Query: project = X and sprint = 12345

Sub-folder 1

Filter: summary ~ "Requirements"

Sub-folder 2

Filter: summary ~ "Code"

 

Essentially each sub folder would be filtering the content that would fall under the parent folder into smaller categories.  This would also allow me to see when things do NOT fall into those neat categories and to groom the deltas.  The idea being that as I fill up the sub folders, the parent folder content should disappear from that location and only reside in the sub folders.  Is this possible within a structure?

1 answer

1 accepted

0 votes
Answer accepted
Stepan Kholodov _ALM Works_
Marketplace Partner
Marketplace Partners provide apps and integrations available on the Atlassian Marketplace that extend the power of Atlassian products.
April 20, 2021

Hello Christopher,

If I understand correctly, the end goal here is to have:
1. Issues organized by Sprints;
2. issues in each Sprint to be additionally organized into categories based on different requirements.

If this is the case, then something like this can be implemented. For example:
- you can group issues first by Sprints and then again by different categories if they are represented as separate fields(Labels or Components, for example);
- you can use the Query Match functionality in the Formula column and show if issues match specific JQL queries or not. In either way, you will end up with a set of issues that have the required data and a set of issues that don't.

But the process of grooming is not clear to me. Is the goal to have all issues in a Sprint to meet the requirements, i.e. you don't want to have issues that don't have a category?

If it will be more convenient, please feel free to reach out to us at support.almworks.com and we'll be glad to take a look at your use case and recommend a way to achieve the result you want.

Best regards,
Stepan Kholodov
ALM Works

Christopher Moretti April 20, 2021

Hello Stepan,

Thank you for the response!  The goal I am trying to accomplish is to limit the amount of manual updates that are required when adding a new sprint to my structure.  Right now I have a folder that is for a sprint.  In this folder is a series of 10 other folders.  Each folder has a JQL query that populates it.  So the structure will look like this:

  • Sprint 1
    • Folder 1 - Requirements
      • project = myProject AND sprint = 1 and summary ~ "Requirements"
    • Folder 2 - Code
      • project = myProject AND sprint = 1 and summary ~ "Code"
    • Folder 3 - Design
      • project = myProject AND sprint = 1 and summary ~ "Design"
    • Folder 4...etc

What I am trying to accomplish is to have a parent folder that specifies part of the query, and then the children folders would further filter the query.  Here is an example:

  • Sprint 1
    • project = myProject AND sprint =1
    • Folder 1 - Requirements
      • summary ~ "Requirements"
    • Folder 2 - Code
      • summary ~ "Code"
    • Folder 3 - Design
      • summary ~ "Design"
    • Folder 4...etc

This way, when I create a new sprint, I can copy the parent folder and only have to update the sprint number in on location, instead of 10.  This would also clean it up so there is less opportunity to make a typo or error in my structure.

Stepan Kholodov _ALM Works_
Marketplace Partner
Marketplace Partners provide apps and integrations available on the Atlassian Marketplace that extend the power of Atlassian products.
April 21, 2021

Thank you for sharing more details. You can try to do the following:

1. Create the Sprint 1 folder.

2. Add an Insert generator in that folder with JQL query like: project=myproject and Sprint1

3. Add the Formula column to your structure with this formula:
if(requirements, "Requirements") or
if(code, "Code") or
if(design, "Design")
Add as many conditions as the number of categories you have.

4. Set each variable - requirements, code, design etc. - to the Query Match option in the Formula's configuration and map them to their individual JQL queries:
requirements to summary ~ "Requirements" ,
code to summary ~ "Code",
design to summary ~ "Design" and so on.

Please check our documentation on how to use the Query Match in formulas: https://wiki.almworks.com/display/structure/Query+Match+as+Variables

The Formula column will return appropriate text indicators based on categories for every issue. If there is no JQL match for anything, the Formula will return nothing.

5. Add the Group by Text Attribute... generator and select the Formula column you just made in the additional list.
As a result, you should get: the Sprint folder at the top and additional sub-folders, each of them containing relevant issues. And if some issues don't match any JQL condition, they will be sorted to the 'No value' sub-folder.

Then when you create another Sprint folder, you would just need to copy both generators and change the Insert generator's query to a different Sprint. Once new issues are added in the second folder, the Formula column will set their categories and the Group generator will create appropriate groups/sub-folders.

I hope this helps. Please let me know if you have any questions.

Best regards,
Stepan Kholodov
ALM Works

Like Dave Rosenlund likes this
Christopher Moretti May 10, 2021

I am pretty close to getting this to work.  Right now, having issues getting it to do accept ~ for the summary.  = works fine, but when I say ~ it complains about missing characters.

Stepan Kholodov _ALM Works_
Marketplace Partner
Marketplace Partners provide apps and integrations available on the Atlassian Marketplace that extend the power of Atlassian products.
May 18, 2021

Can you please clarify - are you not able to map a JQL query using the summary ~ "xxx" function function or you mean something else? If it's the Formula, please send us screenshots of the configuration of the column, the used formula, its variables, and the mapped Query Match which is not being excepted.

It's hard to say anything for certain here without inspecting your setup in more detail. If it would be more convenient, please contact us at support.almworks.com for proper support.

Best regards,
Stepan Kholodov
ALM Works

Christopher Moretti May 26, 2021

I created a column in my structure.  I called it "Category" and used the type of "Formula."  In the formula field, I put :

"If(Summary ~ "Requirements Implementation", 'Requirements Implementation') or
If(summary ~ "Requirements Formal Review", "Requirements Review") or
If(summary ~ "Design Implementation", "Design Implementation") or
If(summary ~ "Design Formal Review", "Design Review") or
If(summary ~ "Code Implementation", "Code Implementation") or
If(summary ~ "Code Formal Review", "Code Review")

The formula is causing an error because of the ~.  If I replace ~ with =, the formula works, but the filter will not because my summaries have a lot of detail in them.  I am not sure why ~ does not work in this context, but works fine in the filters and queries themselves.

Stepan Kholodov _ALM Works_
Marketplace Partner
Marketplace Partners provide apps and integrations available on the Atlassian Marketplace that extend the power of Atlassian products.
May 26, 2021

Thank you for sharing more details. The Formula doesn't support JQL directly, it has its own language and syntax. Using the query like summary ~ "xxx" can only work if you use it as a variable in the formula and then map this variable to a Query Match which is a JQL query. Please check my instructions on how to do that from my earlier reply.

Basically, if you want the formula to return 'Requirements Implementation" for all issues the Summaries of which contains " Requirements Implementations" you need:
1. To create a formula with a variable in it like: if(abc, "Requirements Implemetation")
2. Map the abc variable to Query Match in the formula's configuration.
3. Type the JQL query summary ~ " Requirements Implementation".

In your use case, you would need to create a formula with several variables, each mapped to its own JQL query that specifies the required Summary:

If(abc, 'Requirements Implementation') or
If(def, "Requirements Review") or
If(ghi, "Design Implementation") or
If(jkl, "Design Review") or
If(mno, "Code Implementation") or
If(pqr, "Code Review")

Best regards,
Stepan Kholodov
ALM Works

Like Dave Rosenlund likes this
Christopher Moretti May 26, 2021

Solved my problem.  ~ is not acceptable in the Expr language.  I had to use an Expr Function.  I was able to utilize MATCH and got it work much better.  Thank you for the help!

Like Dave Rosenlund likes this

Suggest an answer

Log in or Sign up to answer