Cleaning up Done tasks on Kanban board

toddparson October 17, 2013

We are an operations team that does a lot of operational work that comes in through JIRA as well as some discretionary work that also comes in through JIRA. We've started tracking this work on a Kanban board with JIRA Agile. We now have 100's of JIRA issues in the "Done" column and I'm wondering what is the best way to clean these up? Should I do a Release (and continue doing a Release every month)? If a Release is the best way, will it change those completed JIRA issues in any way and will a notification get sent to the Reporter?

24 answers

1 accepted

54 votes
Answer accepted
Justin Leader
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
October 18, 2013

This is a very frequent question with users of Kanban boards.

Using the release function seems like how JIRA expects you to accomplish this, but if you're not actually releasing software, creating that "version" is really pointless and starts to create 'fake' data in JIRA. And yes, it can trigger notifications in certain instances.

My suggestion is to alter the filter so that it ages issues out of the board. In natural language, what you may want is:

  • Any issues that aren't resolved
  • Any issues that have been resolved in the last X days

I'd write that JQL as: " resolution = null or (resolution != null and resolutiondate < X ) " and add that to your filter. You may want to set X to "30d" or something like that.

toddparson October 23, 2013

Thanks Justin!

Like # people like this
Ryan Fernandes May 27, 2015

This alteration limits the use of the 'Reports' feature as only items that fall within this filter criteria will be reported on. E.g I wont be able to see items worked on or closed over a period greater than the filter

Like # people like this
kajtzu May 29, 2015

for the record the following works really well with JIRA 6.4: filter query: project = "something" AND resolution = EMPTY OR (resolution != EMPTY AND resolutiondate > -5d AND component = "customer development") ORDER BY Rank ASC sub-filter: fixVersion in unreleasedVersions() OR fixVersion is EMPTY assumes that you use versions, you have a component named customer development

Like # people like this
Shaun Wickramaratne August 12, 2015

Where I can write JQL query. <It should be under Resolve column? >

Like weyderfs likes this
Radu Stanculescu April 18, 2016

It should be in the swimlanes (Board > Configure > Swimlanes). Since this shows all issues where resolution is null (or EMPTY), it will not impact any columns other than the Done one.

Hazze Molin May 23, 2016

If found the following Query to be very effective in finding and viewing only the issues that are not released in a Kanban board. The check for NULL on the fixVersion did the trick.

project = XXX and not (fixVersion is NULL OR fixVersion in unreleasedVersions() OR fixVersion is EMPTY) ORDER BY Rank ASC

Tested in JIRA On-Demand.

Like katherine likes this
Joviano DIas May 30, 2018

thanks!, My sub-filter looks like this now

(fixVersion in unreleasedVersions() OR fixVersion is EMPTY) AND (resolution = null OR resolutiondate > -2d )
Like # people like this
Rita Humola June 28, 2018

Jovi, where did you put that query?

Like Bob Henkel likes this
Joviano DIas June 29, 2018

@Rita Humola In Board settings -> General -> Kanban board sub-filter

Actually, this is a better version and shows only issues in the Done/Dropped column in the last 3 days.

NOT (resolution = Done AND resolutiondate < -3d AND status in (Done,Dropped))
Like # people like this
Rita Humola August 28, 2018

Thank you, Jovi!  I think that worked.

Patrik March 14, 2019

Some reports get wakko if you remove done items. If you prefer you can use a quick filter instead to hide some done or all done.

 

also I use updated instead of resolutionDate then they can popup again if commented or changed in other-ways.

estelle.calfe May 3, 2019

Thanks @Joviano DIas that worked perfectly. 

Joviano DIas May 13, 2019

You can use it as a quick filter, rather than a board filter too! .. 

NOT (resolution = Done AND resolutiondate < -3d AND status in (Done,Dropped))

 

Like # people like this
Vicki Gearhart July 8, 2019

@Joviano DIas I did this and it worked great for me.  If I ever wanted to look at this old data that has disappeared, is there a way to find it?

Mouli August 16, 2019

The query is almost right.. Except that we need to make Xd as -Xd.. Was breaking my head for about 45 mins before i figured this out.. should have read the comments before..

Liuyang Wan March 31, 2021

Is this even possible with next-gen kanban board?

11 votes
David Mason April 3, 2015

Part of the JQL we're using is: ... and (resolution is EMPTY or resolutiondate >= -25d) Change the number of days accordingly. I ran into some trouble using "null".

Mark McDonnell October 17, 2017

Spot on! Thanks David :-)

Ben Bland May 14, 2018

That was just enough to get me to finally write my first JQL query. And, after some experimental tweaking, it worked! Stoked. Thank you.

Like Joao Borges likes this
David Mason June 1, 2018

Glad to know this was helpful.  Please feel free to reach out if you run into other challenges with workflows, boards, etc. 

Eric Sengbusch August 26, 2019

Simple and to the point! Thank you!

Like Mouli likes this
Mouli August 26, 2019

Wish I had seen your post first.. would have saved quite a bit of my hair! :)

8 votes
Deleted user March 17, 2016

The easiest way for me is to create a new status "Cleaned" or "Archived" or even "Deleted" and leave it as an unmapped status (not assigning it to any of the columns).

When you change the issue to this status it will disappear from the board

Filippa Ehrenborg February 14, 2017

Best idea so far. The biggest problem for me is that I want to make a difference between the issues I have closed because they are duplicates or was removed from the project and the issues I have closed because we have completed them

Jessica Ray March 13, 2017

To do this, I suggest you use the resolution to differentiate how an issue is done. So an issue can be Closed with a resolution of Wont Do, Duplicate, Fixed, or Works As Expected and so on...

"Confusing resolution with status

Status describes where an item is in the workflow; resolution explains why an item is not in flight anymore. Think about Retired vs. Damaged. (People sometimes confuse resolution with transition, too – think Damaged vs. Retire Item.)"

http://blogs.atlassian.com/2013/10/building-workflow-awesome/ 

Like # people like this
Paddy Byrne May 8, 2017

Hi - just to add to Jeroens apparocah, if you were willing to use the ScriptRunner plugin, it has a builtin script called an escalation service that will transition an issue from state X to Y after Z days. We have used this for customers to solve this exact issue on their cluttered boards. They drag the issue all the way to the Completed/Done column. Once it's been there for Z days, the script will transition it to your 'Archived' state, which is not shown on any colum of the board. It helped free up their boards, and they did not have to write any tricky jql..

(no affiliation to adaptavist whatsoever :) )

Like # people like this
froasiooneloop October 3, 2017

Hi, I like this idea but how do you move an issue from done to an unmapped status ?

Ben Robinson October 3, 2017

This. I need to know also.

Matthew Walker July 12, 2018

Great solve, Jeroen!  

Ben, Federico:

1) Go to Board Settings > Columns, then add this new status, calling it "Closed" or "Archived" or whatever you'd like.  Do not create a column for this new status.

2) Now when you go to a card and look at the Status dropdown, you'll see this new option available.  When a user wants the card to no longer appear on the board, they simply select this new option and POOF!... it's no longer on the board.  

HJames Cha September 20, 2018

Is that Board Settings > Columns in VSTS? I don't have option to create Status. Only option I see is create Column. Is this a permission issue or you guys are talking about JIRA?Can't create status.png

Baris Guner November 6, 2018

Hi,

Regarding creating new Status values :

"Define New Status or Steps in JIRA Workflow"

https://confluence.atlassian.com/jirakb/define-new-status-or-steps-in-jira-workflow-718835875.html

Hope that helps,

Cheers,

Baris

Mouli August 27, 2019

Hi @HJames Cha  yes.. this is a jira forum and the discussion is about Jira.. 

Refer here for VSTS documentation:

https://docs.microsoft.com/en-us/azure/devops/boards/boards/add-columns?view=azure-devops

2 votes
abhinav jain February 28, 2017

Tasks that are done and do not need further tracking on the JIRA board, I label them as 'Closed' and use the query as (Labels not in (Closed) or labels is Empty). this way the unnecessary tasks are removed from the board and one does not have to make any releases.

I hope it  helps.

Mark Holland October 12, 2017

YES! Works perfectly, and really quick solution, this has been driving me mad for a while, that's for the great solution.

Stephen Lawson November 6, 2017

This is not working for me. I have labeled a number of issues  "CLOSED" and get the following results

All issues labeled "CLOSED" are removed if the filter is:
labels is EMPTY

All issues labeled "CLOSED" are shown where the filter is :
labels is not EMPTY

All issues labeled "CLOSED" are shown where the filter is :
labels = CLOSED 

All are expected behavior however, trying to filter out all issues where the label equals CLOSED using this filter:
labels != CLOSED

removes everything and it gets a green syntax check mark in the JQL input field and I am using the syntax help. 

I do not want to filter out all non-empty labeled issue because I may want to add labels in the future. 

I just want issues that are labeled "CLOSED" out of site - any clarification or help is greatly 
appreciated

Mark Holland November 6, 2017

I just created a new filter and put the JGL as:

Labels not in (closed) or labels is Empty

 

Then when filtering your kanban board with that filter it works perfectly for me.

1 vote
Maria Petroche November 2, 2018

I used the JQL : (resolution = null OR resolutiondate > -5d ) and it worked.

Is there a way I can go back and see all the done tasks if I need to without having to go back to the JQL query and edit the 'days' field?

Baris Guner April 1, 2019

Assuming they are released, you can use the Releases button to list all of your last releases and the related JIRAs.

Or you can write a JQL in a Search for Issues where you can search for Done tasks with fixed version fields populated.

Cheers,

1 vote
Ioana Radulescu July 2, 2018

Hello guys,

I have created a new issue type for non-functional tasks named Non-Functional since it has a different workflow (To do -> In progress -> Done) then the development ones and it also doesn't fit the fix version and release concept. I wanted to see these tasks in my board but dissapear once they are in the Done column withouth having to add a fix version for them. 

I applied the following filter for the Kanban board sub-filter:

(issuetype != Non-Functional AND (fixVersion in unreleasedVersions() OR fixVersion is EMPTY) ) OR (issuetype = Non-Functional AND resolution = Unresolved)

It applies for all tasks and not for a ceratin period of time. 

I hope it helps you.

Have a great day!

David Mason July 2, 2018

@Ioana Radulescu, try the following:

(issuetype != Non-Functional AND (fixVersion in unreleasedVersions() OR fixVersion is EMPTY) ) OR (issuetype = Non-Functional AND (resolution is EMPTY or resolutiondate >= -30d))

...this, where -30d is the number of days you want it to stay on the board after it is resolved. 

David Mason July 3, 2018

Oh, sorry.  I misread your comment.  You want them to drop as soon as they're resolved.  You've sorted it already :)

Ioana Radulescu July 3, 2018

Yes, I posted this in case it helps someone else. 

1 vote
Joviano DIas June 29, 2018

Try this to limit the Done/Drop column on the board to only issues Done/Dropped in the last 3 days (-3d). 

Board Settings -> General -> Kanban board sub-filter

NOT (resolution = Done AND resolutiondate < -3d AND status in (Done,Dropped))

Also, for this to work, make sure in the Board Settings -> Column view you have Set Resolution checked for status'es that move things to the Done column (Done, Dropped in my case). 

@[deleted]

Note: 

resolution = Done AND 

This bit prevents issues resolved to Done from being hidden from the board. (People clumsiness, re-opened JIRAs)

Stephanie Barlow July 5, 2018

How do you handle ones that don't have a resolution of done though?  For some reason ours show 'closed' as the status but resolution is 'unresolved'

David Mason July 5, 2018

You need to make sure the workflow is setting the resolution when moving to closed.

Go to project --> Project Settings --> Workflows (choose your workflow for this issue)--> Edit (in the top right) --> Select the transition to "closed" --> post functions --> Add post function --> update issue field --> Issue field should be "Resolution" --> set field value to your choice of resolution--> Publish changes. 

Move this down from the first step where it will land as default. 

 

Not setting the resolution can happen if you modify workflows from the simplified ones that jira gives you initially. 

Matt_Dimock November 22, 2019

I had to change to the below, but other than that, @Joviano DIas provided a working solution.

NOT (resolution = Done AND resolutiondate < -3d AND status in (Done))

Thanks!

1 vote
Alex Weinle January 25, 2018

We use the following for a Master Release kanban board, actual releases and version are reserved for genuine resource builds, this however covers anything going out of the front door.

It's useful for us also to see recently completed Releases (issue type) hence the last 7 days of activity for 'Done' items.

We put this in the sub-filter on the Board Settings -> General and Filter

image.png

olivier le sayec March 3, 2019

That worked like a charm for me. Thanks 

1 vote
Christopher Hurney May 9, 2016

My problem with the approach of using JQL to age out the issues, is this...

I am in the infancy of leveraging Kanban for my Ops team.  At start-up we will and do have a lot of old issues in WIP.  I certainly want to truncate the DONE column by either date or issue count, but not WIP or TO-DO ... and to my knowledge, I cannot apply JQL to a specific column.

The MIN/MAX constraints are, unfortunately, not intuitive (see https://jira.atlassian.com/browse/JSW-10627).  They don't limit the visible issues, they just flag conditions that lie outside of the constraints using color coding.  This seems minimally useful IMO.

Shaun Wickramaratne May 9, 2016

Hi Christopher,

If I understood your question clearly, I think you can overcome this issue by applying a JQL query to entire Kanban board, probably like ..... AND (status = DONE AND ...). (Part of board query add this)

Or you can modify the board query to display certain JIRAs with DONE status, like show last 20 days modified ones with DONE status, etc.

Hope this will help you some how.

Thanks,

Shaun W. 

 

Christopher Hurney May 10, 2016

Thanks @Shaun Wickramaratne ...yes, you understood correctly, and yes that is exactly how I was able to truncate my done column ... essentially:

(Project = "Ops", Assignee = "Ops Team Members", Status not Done) OR (Project = "Ops", Assignee = "Ops Team Members", Status is Done, Status Change Date > This Calendar Month)

It works fine, but it seems to me, that simply wanting to truncate the Done column so that it doesn't contain every JIRA issue closed in the history of your organization using the tool would be a very common ask.  Furthermore, I feel that the column constraints should actually limit the visible issues, not just flag the column red when the issue count exceeds the constraint - that red color seems very minimally useful to me.

I'd prefer not to have to rig up truncation functionality with extensive JQL or fake statuses.

Thanks for your response.  Appreciate the feedback.

 

PS...are you Sri Lankan?  Two of my very good friends are Sri Lankan and have the last names Wickramaratne and Seneviratne.

Shaun Wickramaratne May 10, 2016

Hi Christopher,

Good to hear the issue you had pretty fixed. No, I am not Sri Lankan, but I have Sri Lankan background as my parents are Sri Lankan. So I would say my ethnic background from Sri Lanka. by the way, Where you from, located in Australia or? 

 

Ta

David Mason May 10, 2016

Hi Christopher,

It might be better to drive the tasks off of the board with a resolution rather than a status.  This way, if you expand beyond the simplified workflow, your JQL can remain intact.

We're doing it like this...

...AND (resolution is empty or resolutiondate >= -14d)

Christopher Hurney May 11, 2016

Thanks, David.  To be clear, I'm not driving issues off the board with a status.  I am VERY opposed to that.  I've seen others suggest it....even to the point of creating an additional status in the workflow, such as "archived" which would be the final state after Closed/Done.  I am opposed to anything that needlessly bloats what is supposed to be a lean workflow.

As far as your suggestion re: resolution, I would be interested in seeing your entire JQL if you don't mind (you can pseudocode it, to protect anything proprietary) as well as your workflow.  If you cannot share those things, I understand.

 

Christopher Hurney May 11, 2016

No, @Shaun Wickramaratne, I am not Australian.  I'm in Southern California.  Thanks again for the response.

 

Shaun Wickramaratne May 11, 2016

Thanks 

David Mason May 12, 2016

Christopher,

We're using this in two places:

Board1 JQL - category in ("TechOps CAP Projects") or Project in (TechOps, "PCI DSS Implementation") AND (resolution is empty or resolutiondate >= -14d) ORDER BY Rank ASC

There are multiple projects represented on this board, and therefore, multiple workflows. 

Board 2 JQL - project = ITCM AND issuetype in ("Standard Change", "Emergency Change") and (resolution is EMPTY OR resolutiondate >= -30d) ORDER BY Rank ASC

I'll attach an example from Board 2 - this is where we deviated from simplified workflow, and we didn't use only the "Done" status.

 

ITCM_WKFLW.jpg

1 vote
Matt Ring December 16, 2015

While the filter change fixes the "noise" issue on the Kanban board, it also adversely affects the report metrics (such as the CFD), as Ryan F commented below. An alternative workaround might be to create a quick filter to filter out the work items that are older than x days. A better product solution for Atlassian would be to de-couple the metrics from the board visibility so "done" work naturally falls off the board without users having to be explicit about hiding it. Another option would be to collapse the left-most ("Backlog"/"To Do") and right-most ("Done") columns, which is what some competing Kanban tools allow (such as Leankit or TFS).

0 votes
a-kopchinskiy_apollo4u August 31, 2020
fixVersion NOT IN releasedVersions()
0 votes
Scott Beeson
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
July 15, 2020

Just noticed this today!

2020-07-15_9-46-14.png

0 votes
darshan_mahashettiwar February 26, 2020

Not sure if this is the same, but from the Kanban board if you click on Board and then --> Configure , at the bottom of this page there is a field which reads as follows

"Hide completed issues older than".

 

The values provided are 1 Week, 2 Weeks, 4 Weeks and Show All.

 

I tried using this field and when an issue is either completed or done, it does not appear on our board anymore after a week (because we have chosen 1 Week)

 

Has anyone else tried it yet

0 votes
Yaroslav Vavrysh January 4, 2020

I write another answer because accepted one is like a workaround. Now I see can set maximum tasks for each board:

 

 

image.png

 

Also, you can just hide the column from the board.

0 votes
Anatoly Spektor January 2, 2020

For people who digest better in video format, I have created a video how to use Jira Filters to clean Kanban Done Column, hope that helps!

https://youtu.be/XWJutSDSzPU

0 votes
Yash Ruparel March 29, 2019

Hey Guys, I created a new version to clean up all the items from done column and released the version as well BUT still, all the items are showing up on my done column in my Kanban board. Any suggestion to look for why it's still showing up? 

My cuurent sub-filter:

Kanban board sub-filterfixVersion in unreleasedVersions() OR fixVersion is EMPTY OR fixVersion in releasedVersions()

 

Please let me know if you have any recommendations. Thanks!

Baris Guner April 1, 2019

Hi Yash,

Your sub filter is the issue. Ours which is working fine is:

fixVersion in unreleasedVersions() OR fixVersion is EMPTY

Yours has another OR fixVersion in releasedVersions() where you include the issues which are released as well.

So just get rid of the the last OR.

 

Cheers,

Baris

Like Yash Ruparel likes this
Yash Ruparel April 3, 2019

@Baris Guner  --> Thank-you so much. It worked. I should have seen that. Appreciate the help sir!

 

Best,

Yash

0 votes
Fede Serbin March 22, 2019

Hi. None of the above solutions applies to Jira Core right?

Baris Guner April 1, 2019

Hi Federico,

You are right

In short:

JIRA Software = JIRA + JIRA Agile

JIRA core = JIRA only without JIRA Agile.

Check:

https://community.atlassian.com/t5/Jira-questions/What-is-the-difference-between-Jira-Core-and-Jira-Software/qaq-p/65031

Cheers,

Like Fede Serbin likes this
Like Fede Serbin likes this
0 votes
Toland Hon November 29, 2018

I ended up combining a couple of suggestions:

 

… AND (resolution is empty or resolutiondate >= -30d or fixVersion is not empty)

 

This means it'll include any ticket that matches ANY of the following criteria:

• has a fixVersion

• hasn't been resolved

• resolution was within the past 30 days

Toland Hon November 29, 2018

Anything with a fixVersion will be eventually removed once that version is released.

0 votes
Matthew Walker July 12, 2018

I think Jeroen's fix (from 2016) is simplest, but works best if one simply wants to have day-to-day control over how to move tickets from Done to something more "final" so that they are removed from the board.  On the other hand, if you're trying to manage an old project with lots of tickets, this approach would require one to manually move tickets to the new, unmapped Status, i.e. Closed, Archived, etc.  In such a case, Ioana's is definitely the best solve I've seen.

Matt Ulrich March 5, 2019

Where do you put the query? As usual, Atlassian changes and moves all Jira menus around every 6 months, so the path "Board Settings -> General -> Kanban board sub-filter" ends at "General".

Thanks

Mathieu Verholle March 5, 2019

Board Settings -> General -> Filter -> Edit Filter Query

Matt Ulrich March 5, 2019

Thanks Mathieu!

I used Jovi's query and it worked, but I had to remove the "dropped" status as it gave me an error telling me that status isn't set for the column. Is this ok?

0 votes
Chayce Solchaga February 7, 2018

So I've been struggling with this forever and after finding this post it fixed most of my problem BUT ONE THING:

 

There are some issues that I had from ancient projects that don't have a resolution field so I can't use the resolutiondate filter to get rid of those. Any ideas on how to get these off of my kanban? I did "resolution = EMPTY OR resolution != EMPTY AND resolutiondate > -7d"

 

However, since these don't have the resolution field on some of these projects, these tickets that are done still show up on the board. 

 

Any help?!

David Mason February 7, 2018

Add another set of parens for that project:

... or (project=your project and status not in (Done,Resolved,Whatever)

That won’t get you things that were recently transitioned, but if it’s an old project, that shouldn’t matter. 

Deleted user April 1, 2019

This was an old question but in case somebody else is looking for it. If you retrospectively add Resolutions to the project that those items are in, you can bulk edit the items. I know they are already Resolved but trust me, you can resolve them again. Search for Resolved items without Resolutions. Select "Transition Issues" then the radio button of Resolved and then you can add a Resolution. 

0 votes
Anton Fomin March 3, 2017

Does the kanban board have relation to project releases? I.e. we have releases 3 times a year, when release is marked as released, do resolved issues disappear from the Kanban board?

0 votes
Josh McCaully June 13, 2016

I am trying to add this to a Kanban board as well, and I am having some issue.

Here is what I want to do:

  • Show all cases that are open
  • Show all cases that are in progress
  • Show all cases that are closed but have been closed only in the last 5 days.

 

Here is my code, and I can't figure something out, some of the cases have fallen off the board and some have not.  There are cases that are still on the board from two weeks ago, so I don't know what is wrong with this.

 

project = OST AND status = Open OR project = OST AND status = "In Progress" OR project = OST AND status = Closed AND UpdatedDate <= -5d ORDER BY Rank ASC

I did have parentheses in this, but JIRA took them out, so I guess they weren't needed?

Thanks in advance for the feedback.

 

Josh

 

 

David Mason June 13, 2016

Josh,

Assuming you set resolutions on the issues once they're moved to closed, I'd think you'd do it like this:

project = OST AND (resolution is empty or resolutiondate >= -5d) ORDER BY Rank ASC

You can filter out any status you don't want represented by dragging them in or out of columns. If you've modified your workflow, do check to make sure you're setting resolution on transition to "Closed".  This is accomplished via a post function in the workflow:

Screen Shot 2016-06-13 at 1.51.02 PM.png

Dave

Josh McCaully June 15, 2016

Dave, thanks so much for your quick response.  I thought I had tried this exact syntax, but apparently not.  This worked well for me, so thanks again.

 

Josh

Mathieu Verholle June 1, 2018

Thx David ! very helpful for me too ;)

0 votes
Matt McDonnell March 4, 2016

I disagree that creating a "fake" release distorts data.   We are creating administrative "releases" and we are using those as a mechanism to track progress.    We are in the process of implementing this, but our vision is to have a "release" at least once per quarter or any time we have accumulated 20 done items.   Not only does this keep the kanban board clean, it gives us historical reporting capability.   We will have kanbans for business requirement requests (which may end up in a release) and non-systems work.   We are effectively going to use a scrum/kanban approach for everything we do, whether it's directly contributing to software or not.

0 votes
toddparson April 6, 2015

Thanks David! Including resolutiondate in our JQL has solved our problems.

Suggest an answer

Log in or Sign up to answer