I have several issues which should have been resolved some time back. I want to close and resolve them now, but do not know how to properly backdate the Resolved date. it is important for reporting purpuses and GH charts.
Thanks,
-Jim
Use ScriptRunner - this will update only 1 ticket at a time.
Paste this template the ScriptRunner script console,
Update the ticket number and the date. Run.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.MutableIssue
import java.sql.Timestamp
import com.atlassian.jira.util.ImportUtils
import java.text.SimpleDateFormat
import java.text.DateFormat;
import java.util.Date;
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss");
Date date = dateFormat.parse("05/23/2019 06:00:00");
long time = date.getTime();
Timestamp targetDate = new Timestamp(time);
IssueManager issueManager = ComponentAccessor.getIssueManager()
MutableIssue missue = (MutableIssue) issueManager.getIssueObject("PS-2469")
missue.setResolutionDate(targetDate);
missue.store();
return (targetDate);
works fine for me.
But history entry mismatch needs to be taken into account.
Thanks!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
It is important to trigger issue reindex then !
import com.atlassian.jira.issue.index.IssueIndexingService
def indexingService = ComponentAccessor.getOSGiComponentInstanceOfType(IssueIndexingService)
boolean wasIndexing = ImportUtils.isIndexIssues()
ImportUtils.setIndexIssues(true)
indexingService.reIndex(missue)
ImportUtils.setIndexIssues(wasIndexing)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Would it be possible to loop this over the issues in a saved filter or JQL?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Ugh, answering my own question, but for those who follow... https://library.adaptavist.com/entity/perform-a-jql-search-in-scriptrunner-for-jira was very helpful.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I almost started running the script but the warning put me off, showing in the script console:
"(!) Since version v5.0. DO NOT USE THIS as it overwrites all the fields of the issue which can result in difficult to reproduce bugs. Prefer to use QueryDslAccessor to change only needed fields @ line 24, column 8"
We're using Jira D.C. 8.14.x with ScriptRunner Version: 6.21.0
I could not create a script myself using QueryDslAccessor as this seems to be possible only from database queries, not ScriptRunner, but I may be wrong.
Does anyone have a workaround or update to this script that uses a method that updates only the Resolution Date field and will not overwrites all fields as the warning implies?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Michiel Schuijer - I saw the same warning. I ran it in my non-prod and it worked without any apparent problems. All of my original data remained on the issue and the resolved date was updated.
It did not work if I commented out line 24.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I know I'm hopping onto an old thread, but this was the first page I came across when searching for an answer.
This turned out to be a very straight forward fix in SQL. The resolved date is stored in the dbo.jiraissue table.
I updated the resolved date on mine by executing the following:
UPDATE dbo.jiraissue SET UPDATED = '2013-05-23 12:19:22.087', RESOLUTIONDATE = '2013-05-23 12:19:22.127' WHERE pkey = 'CCSP-455'
Just change the pkey to the issue key that you're trying to update. The update didn't require any re-indexing nor did I bring Jira offline (rebel!).
Hope this helps anyone doing the same search as me.
UPDATE FOR JIRA 6.1+:
It looks like they deprecated the pkey identifier starting in Jira v6.1. This is the new query I ran to accomplish the same in the new version:
UPDATE dbo.jiraissue SET UPDATED = '2014-02-03 14:07:22.087', RESOLUTIONDATE = '2014-02-03 14:07:22.087' WHERE PROJECT = 10104 AND issuenum = 44
It may take some searching for you to identify the PROJECT value.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Works for me; to be safe, I did a complete reindex afterwards. I was actually fixing up resolve dates on issues which were imported from another system, so I was able to do a direct join between the two SQL Server databases and update all the JIRA issues in one go :-)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Remember that this is only appropriate for imported issues that don't have a history entry for when the resolution changed from <null> to <something>
If you have history records, then hacking the resolution date will make your data inconsistent nonsense.
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 update here, knoche. Very helpful
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
This approach doesn't work on JIRA 7, changed both values and the Resolved Date didn't change, I did a locked re-index and tried with different issues with no luck, is there anywhere else i can get to that value?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You can't. The resolved date is derived from the last time you resolved the issue, which you can't alter.
Of course, there's always hacking - in this case, you'd need to use SQL to change the date on the changegroup (and I think you'd need to alter the os_workflow too). That does require backups, downtime and re-indexing though (never alter a Jira database while it's running. Just. No. Never), and will destroy the information about when your users actually resolved it.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
For newer Jira instance SQL command should look like:
update jiraissue set updated = '2018-11-28 09:22:22.498+01', resolutiondate = '2018-11-28 09:22:22.498+01' where id = 59918;
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I was thinking you could go in to the workflow and do the modification that way. Create a new field put it on the transistion. Then as a part of the post workflow actions, have the Resolved date copy the date of the field you just entered.
(Added in later) But make the transistion go back to the same step it was previously ie. New - New, Open -Open, etc> You will lose the last updated date but at least you get your Resolved data back
Also then to protect yourself, go back and make sure that you or the jira-admins are the only people who can see that workflow option.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
No. Generally, that is a very good approach and exactly what I'd do. Looped transitions are immensely useful to get around the weakness in "edit" permissions. It's just that for this one field, it's not right - because it's derived field, you don't need to touch it - and in fact, you can't. It'll take its value from the changed change history.
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.