I am trying to set the Updated field for an issue via script:
import com.atlassian.jira.component.ComponentAccessor
import java.sql.Timestamp
import java.text.SimpleDateFormat
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.issue.MutableIssue
MutableIssue issue = ComponentAccessor.getIssueManager().getIssueObject("SD-1")
def user = ComponentAccessor.getUserManager().getUserByKey("derek.fields")
log.warn "Initial Updated Date is ${issue.getUpdated()}"
String ts = '24-MAY-18 09:07'
String pattern = 'dd-MMM-yy HH:mm'
def sdf = new SimpleDateFormat(pattern)
def ds = sdf.parse(ts)
def timestamp = new Timestamp(ds.getTime())
log.warn "Timestamp is ${timestamp}"
issue.setUpdated(timestamp)
def updatedIssue = ComponentAccessor.getIssueManager().updateIssue(user, issue, EventDispatchOption.DO_NOT_DISPATCH, false)
log.warn "New Updated value for ${updatedIssue.getKey()} is ${updatedIssue.getUpdated()}"
issue = ComponentAccessor.getIssueManager().getIssueObject(updatedIssue.getKey())
log.warn "Update value in retrieved issue is ${issue.getUpdated()}"
The code should set Updated to be the Timestamp with the 'ts' date in it. I have checked that I am getting a valid timestamp. After I call updateIssue, I am retrieving the issue from the database, but it appears with the old date (that was in the issue when I started)
Here is the log output from my log.warn messages
2018-05-30 16:48:43,981 WARN [runner.ScriptRunnerImpl]: Initial Updated Date is 2018-01-25 11:24:58.554
2018-05-30 16:48:43,984 WARN [runner.ScriptRunnerImpl]: Timestamp is 2018-05-24 09:07:00.0
2018-05-30 16:48:43,984 WARN [runner.ScriptRunnerImpl]: New Updated value for SD-1 is 2018-05-24 09:07:00.0
2018-05-30 16:48:43,985 WARN [runner.ScriptRunnerImpl]: Update value in retrieved issue is 2018-01-25 11:24:58.554
The issue that is returned from the update has the new updated date, but when I go to retrieve it again from the database, it has reverted (or was never changed) to the updated date that I am trying to set
As far as I know, it is by design.
You can not change updated field unless you do some hack (modifying the db value).
What is the point of setUpdated () if it doesn't do anything?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You're right from this point of view, and you're not alone.
Here you can see similar conversation and a workaround. Thay may help.
Or, could you try adding below statement after updating MutableIssue? (I am not sure, but it may work I guess)
issue.store()
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Using issue.store() instead of IssueManager.updateIsssue worked - which is frustrating. It is also risky as a long-term solution, since store() is deprecated. The good news is that I should only have to use it for a short term fix.
I also determined that it is possible to do a direct database update into the jiraissue table, so that it a less risky workaround since that table structure is stable.
Thanks for the help
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.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.