Sometimes we need to know the “real” closing date of tickets, for different reasons: workflows with bad config (Resolve Issue screen missing in final statuses…), two Resolve Issue screens in Resolved and Closed statuses, etc.
And, as always, we have a trick using the plugin Scriptrunner!
It’s very simple, just create a Scripted custom field and use a configuration like this:

And use and modify this code:
import com.atlassian.jira.component.ComponentAccessor
import java.math.*
import java.util.Date
def changeHistoryManager = ComponentAccessor.getChangeHistoryManager()
def done = changeHistoryManager.getChangeItemsForField(issue, "status").reverse().find {
it.toString == "Done"
}?.getCreated()
def closed = changeHistoryManager.getChangeItemsForField(issue, "status").reverse().find {
it.toString == "Closed"
}?.getCreated()
def discarded = changeHistoryManager.getChangeItemsForField(issue, "status").reverse().find {
it.toString == "Discarded"
}?.getCreated()
def doneTime = done?.getTime()
def closedTime = closed?.getTime()
def discardedTime = discarded?.getTime()
def lasttime = null;
if ( closedTime > doneTime && closedTime > discardedTime)
lasttime = closedTime
else if ( doneTime > closedTime && doneTime > discardedTime)
lasttime = doneTime
else if ( discardedTime > closedTime && discardedTime > doneTime)
lasttime = discardedTime
if ( lasttime == null) return null
def date = new Date((long)lasttime);
return date
Remember, the searcher must be “Date Time Range picker”

finally place the field on all screens to see this date working!
By MrAddon






One thought on “Example of script field in Jira to know the Closing date”