Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Who Moved It, and When? 5 Ways to Put Jira's transitionedBy to Work

Who Moved It, and When?......5 Ways to Put Jira's transitionedBy to Work

 

Jira's native JQL is great at telling you where a work item is right now: current status, current assignee, current priority. Instant.

But ask it a question about history  who moved MARS-14 to Done, and when — and it goes quiet. The answer is sitting right there in the work item's changelog, but native JQL cannot search it. So teams fall back to opening items one at a time, exporting to spreadsheets, or scripting against the REST API.

That is the gap JQL Argon  transitionedBy function closes. It reads the indexed changelog and answers history questions in a single line of JQL. Here are five ways teams put it to work.

The whole function, in one line

The syntax is the same every time — five arguments:

issue in transitionedBy(subquery, status, startDate, [endDate], [user])

subquery (which items to look at), the status they were moved to, a start date, an optional end date, and an optional user. In practice, a basic call looks like this:

issue in transitionedBy("project = MARS", "Done", "2026/05/01", "2026/05/31")

It works with both in and not in — and that little not in turns out to be the most useful part.

 

1. Sprint retros: what actually got done

“Done” on the board today is not the same as “moved to Done during the sprint.” Items get reopened, re-closed, dragged in late, or created straight into a closed column. To see what genuinely crossed the line in a window, ask for the transition, not the current status:

issue in transitionedBy("project = MARS", "Done", "2026/05/01", "2026/05/31")

That is the query behind the screenshot at the top of this post: the work that actually reached Done in May, no more and no less.

 

2. Accountability: who moved it

Add the fifth argument and you are asking a sharper question: which items did a specific person move to a status, in a window. Just pass their name — no cryptic account IDs to look up:

issue in transitionedBy("project = MARS", "Done", "2026/05/01", "2026/05/31", "Elias Alexander")

This is the question native JQL simply cannot answer. The assignee field tells you who owns an item now; it says nothing about who advanced it. For audits and for honest retros — who is quietly carrying the workflow? — that distinction is everything.

 

3. The not-in power move: find what did not happen

Flip in to not in and Argon returns the items that were never moved to a status. Combine it with a current-status filter and you get the report every lead actually wants: work that is still open and never shipped this cycle.

project = MARS AND statusCategory != Done AND issue not in transitionedBy("project = MARS", "Done", "2026/05/01", "2026/05/31")

2-3.jpg

Stalled tickets, skipped steps, work that slipped the sprint — the things that are invisible precisely because nothing happened to them. not in makes them a one-line query.

 

4. It composes with the JQL you already write

transitionedBy is just another clause, so stack it with everything else. Which bugs did we actually fix and ship in May?

issuetype = Bug AND issue in transitionedBy("project = MARS", "Done", "2026/05/01", "2026/05/31")
2-4.jpg

Swap in a priority clause, a component, a label, a saved filter — whatever you already use. The history clause rides along.

 

 

5. It is not just Done

 

The status argument is any status in your workflow. Point it at your review column, your QA gate, your blocked state — anywhere you care when something moved and who moved it:

 

issue in transitionedBy("project = MARS", "In Progress", "2026/04/01", "2026/06/30")

 

Approval trails, time-to-review, compliance checks — same function, different status.

 

 

 

How it works (and where your data lives)

Argon indexes your work item changelog — every status change, who made it, and when — so these queries return in seconds instead of crawling the REST API item by item. And because Argon is built entirely on Atlassian Forge, that index lives inside your own Jira Cloud tenant. Nothing is copied to a third-party server.

transitionedBy is one of seventeen functions JQL Argon adds to JQL - check them all :)

Enjoy!

Greetings
Bartek from Orbiscend OU (JQL Argon app provider) 

2 comments

Great examples. Historical workflow questions come up quite often, and I like how you've shown practical use cases rather than just the function itself. Thanks for sharing!

Bartek Szajkowski _ Orbiscend OU
Atlassian Partner
June 2, 2026

Hello @Susanna Babayan - Narva Software 

Thanks for your answer and positive comment :)
On our website we also launched Cheat Sheet for native and JQL Argon functions (for free). I cannot put the line here, but easy to find just in case :) There you can find more examples

Comment

Log in or Sign up to comment
TAGS
AUG Leaders

Atlassian Community Events