I’m working with the JIRA Structure plugin and need help with sprint filtering. My goal is to show only ongoing and upcoming sprints across all teams in our program.
My current approach involves:
Filtering issues using project criteria and “sprint in (opensprint(), futureSprint())”
Creating groups based on sprint
Adding issues from the board
The problem is that my setup shows not only current and future sprints, but also displays all previous finished sprints that contain issues which were originally planned there but didn’t get completed and moved to the current sprint.
I want to hide these finished sprints from the view. When I try using “sprint not in closedSprint()” as a filter, it removes the issues that were moved from old sprints to the active one, which is not what I want.
How can I exclude the finished sprint groups while keeping the issues that moved from those sprints to current ones?
Structure plugin is a pain with sprint filtering - I’ve been there with cross-team visibility issues.
Your problem: Structure shows sprint groups based on where issues were originally assigned, not where they are now. It’s looking at history instead of current state.
Here’s what fixed it for me: I stopped messing with JQL filters and automated the whole thing. Built a system that watches sprint changes in real time and keeps clean data on which issues actually belong to active sprints.
The automation tracks when issues move between sprints and updates custom fields with current sprint info. Then I use those fields for Structure grouping instead of the native sprint fields.
Result? No more historical sprint noise. Your Structure view only shows groups for sprints that actually have active issues, not every sprint those issues ever touched.
I used Latenode since it connects directly to JIRA APIs and processes sprint changes instantly. It handles the messy logic of figuring out which sprint an issue truly belongs to right now.
Takes about an hour to set up, then runs on autopilot. No more manual filter tweaks or confusing sprint groups.
The issue with the Structure plugin is rooted in its handling of sprint grouping; it includes all associated sprints tied to issues, even those that have been completed, which can clutter your view. I faced similar challenges while trying to improve visibility across teams. Rather than depending solely on JQL filters, consider adjusting your Structure configuration. Avoid direct sprint grouping; instead, leverage the conditional grouping feature. Set up a filter that applies your desired JQL and then add a grouping condition that verifies whether the sprint is currently active or future-oriented. This way, you can retain issues that have moved between sprints while preventing any closed sprint groups from appearing. Ultimately, your groups will only reflect the sprints that are genuinely relevant to your ongoing work.
Structure plugin groups by all sprint field values, including old historical data from previous assignments. You need to change your grouping strategy, not just the JQL filter. Here’s what works: create a custom field that only captures the current active sprint for each issue. Use a scripted field or automation rule to populate it - have it check if the issue’s current sprint matches your opensprint() and futureSprint() criteria. Then group by this custom field instead of the regular sprint field, but keep your existing JQL filter. This way you’re only grouping by current sprint assignments, not old ones. Another option is Structure’s advanced grouping with a script that checks sprint status on the fly. The script evaluates each issue’s current sprint against your active sprint criteria before grouping. Structure’s default sprint handling is pretty bad at separating current vs historical sprint data, so custom fields or scripted grouping usually give you the cleanest results.