I have a software space Kanban board setup with swim lanes using queries. We also have JSM projects with SLAs.
Attempting to have the top swim lane show items that have breached SLA using "Time to resolution" = breached().
When running this JQL in Filters it properly returns items that have breached the SLA.
When including "Time to resolution" = breached() in a swim lane the swim lane will return items that have not breached the current SLA.
Has anyone else seen this behavior or a way to adjust to show properly in a swim lane?
Hi @Steve White ,
One detail worth checking is what `breached()` represents in this case. The function returns work items whose most recent SLA cycle missed its goal. If the SLA can start again, an item may have a previously breached cycle while its current cycle still appears to be within the target.
The board may add another complication. A filter runs the search again when you open it, while a swimlane evaluates the work items already loaded on the board. This can make a time-based SLA result appear outdated until the board or work item is refreshed.
If your main goal is to give the team a reliable operational view of breached work items, another option is to use a dedicated SLA view. For example, SLA Time and Report fot Jira provides SLA Grid report where you can filter work items by the `Exceeded` status and see the remaining or overdue time, target date, assignee, priority, and current SLA status in one place. This also helps the team identify work items approaching a breach, not only those that have already exceeded the goal.
You can also configure an action when the SLA is exceeded, such as changing the priority or status, notifying selected users, or sending a Slack alert.
Depending on the project configuration, the SLA status and target date can also be synchronized with Jira custom fields and used in regular JQL queries.
Hope it helps
Regards!
Thanks for the response. Okay so lets say the SLA is time to response and it can be restarted.
Time to response (1) SLA = breached
Time to response (2) SLA != breached
The query can pickup on the first iteration of a breach and not the most recent iteration of the SLA?
Also question about what "board is refreshed" means. Does that mean refreshing the browser?
What I did was create the swim lane, saw an item in there that wasn't breached then ran a filter with the same JQL to ensure it was correct and retrieved the correct results in the filter. Refreshing the browser tab with the board did not update to remove that item from the swim lane.
What was also reported to me by someone using the board was that they changed a value in a field on an item (not the JSM item in question and not a JSM item at all, it was an item native to the space) and the swim lane refreshed and properly displayed only breached tickets. When they reloaded the board page, everything went back to the way it was (the non breached ticket was in the swim lane).
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks for the extra details, that actually makes things a lot clearer
First, I should fix one thing I said earlier. The breached() function only evaluates the latest SLA cycle, not past ones. So in your scenario with Cycle 1 breached and Cycle 2 not breached, breached() won't pick up that issue. Only ever Breached() would do that.
Since the exact same JQL gives the correct result in Filters, this really looks like a board caching or indexing bug on Jira's side.
The pattern you noticed is the biggest clue here: page reloads bring back the wrong data, but updating an unrelated issue triggers a background refresh that temporarily fixes the swim lane
At this stage, I'd suggest raising a ticket with Atlassian Support. Be sure to share those exact steps with them, especially the part where editing another issue briefly fixes the view
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @Steve White
Are the JSM work items coming onto that software board through a cross-project board filter, or through a linked hierarchy?
I have experienced something similar, as the board swimlane query is applied to the work items the board has already loaded. As a time-relative function like breached() looks correct in Filters (search runs live against the index every time you execute it) and stale in a swimlane, items might sit there until the browser is refreshed or a reload of the board is triggered when something actually changes on the work item.
Cheers, Martin
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks for your response. The JSM ticket is coming through a cross-project board filter.
What was also reported to me by someone using the board was that they changed a value in a field on an item (not the JSM item in question and not a JSM item at all, it was an item native to the space) and the swim lane refreshed and properly displayed only breached tickets. When they reloaded the board page, everything went back to the way it was (the non breached ticket was in the swim lane).
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Based on your follow-up, I would not switch this query to everBreached(). Atlassian defines breached() as checking whether the last SLA cycle missed its target, while everBreached() matches a work item that failed a target in any cycle. If Issue Navigator is returning the current set you expect, everBreached() would broaden the result rather than explain why the board shows an extra item.
I would reduce this to one work item and one query swimlane:
1. Copy the board's saved-filter JQL into Issue Navigator.
2. Add the exact issue key and "Time to resolution" = breached().
3. Temporarily use the same expression as the only custom swimlane above Everything Else.
4. Capture both results at the same time, then repeat after a full board reload.
Jira's documentation says a query-based swimlane uses one JQL query. If the same issue, board filter, and SLA expression remain different between Navigator and the swimlane after reload, that looks like a reproducible board-versus-search inconsistency rather than a different breached() meaning.
I would raise it with Atlassian Support and include the board ID, saved-filter ID and full JQL, swimlane order and JQL, one affected issue key, screenshots of its SLA cycles, the exact timestamps, and the steps that temporarily make the board correct. Those details should let Support distinguish board refresh/caching from SLA indexing.
Official references:
https://support.atlassian.com/jira-service-management-cloud/docs/write-jql-queries-for-slas/
https://support.atlassian.com/jira-software-cloud/docs/configure-swimlanes/
Disclosure: I work at BlueGrove Labs. Our Jira reporting app does not address this board/SLA behavior, so I am intentionally not recommending it here.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.