How do I set a custom field with the current date/time in a post function?

Hi Everyone,

We're on JIRA cloud and are trying out the ScriptRunner addon.  Is it possible to set a custom date picker field with the current date/time in a workflow transition's post function?  If so, how would I do so?

 

6 answers

1 accepted

This widget could not be displayed.

By playing around with a test workflow, I think I found what you need:

  1. Decide which workflow transition you want this to take effect (perhaps all of them)
  2. Select the transition and open its Post Functions
  3. Click the "Add Post Function" button on the top right of this table
  4. Choose "Update Issue Custom Field" and click Add
  5. From the Issue Custom Field dropdown, select your date field
  6. In the Custom Field Value text area, enter %%CURRENT_DATETIME%% and click Add
  7. Publish your workflow


I have not tested this, but I'm trusting what I read on screen on Step 6 as JIRA shows:

Please make sure that the value you enter is valid for custom field its datatype
and context configuration for the project using this workflow.
Otherwise, the transition may fail at execution time.
Additionally to enter text or numbers as value, you may use the following:

  • You may use macro '%%CURRENT_USER%%' to insert the function caller.
  • You may use macro '%%CURRENT_DATETIME%%' to insert the current date and time.
  • You may use macro '%%ADD_CURRENT_USER%%' to append the function caller. Obsolete please use append option instead with user macro above.
  • For Cascading Select fields, you may either use the value of the option to be selected, no need to add the parent for childs. Or simply enter the ID of the option to be selected.

 

This turned out to be the solution!  Thanks!

This widget could not be displayed.
Vasiliy Zverev Community Champion Nov 17, 2016

Here is code for custom script post-function:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.UpdateIssueRequest

import java.sql.Timestamp

issue.setCustomFieldValue(
        ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("customFieldname")
        , new Timestamp()
)

//only for create transition
/*
ComponentAccessor.getIssueManager().updateIssue(
        ComponentAccessor.getJiraAuthenticationContext().getUser()
        , issue
        , UpdateIssueRequest.builder().sendMail(false).eventDispatchOption(EventDispatchOption.ISSUE_UPDATED).build()
)
*/

This answer is for server, not cloud wink

But for server, you should not need the commented out bit even on create.

This widget could not be displayed.

Edit your workflow, add new post-function on the action of type "Script Post-function".

Choose "Modify Issue" function.

Enter the following code:

issueInput.fields.customfield_10132 = new Date().format("yyyy-MM-dd")

where 10132 is the ID of the custom field you want to update.

You'll be better off using a ZonedDate to make sure you get the date in the correct timezone:

issueInput.fields.customfield_10132 = ZonedDateTime.now(ZoneId.of("UTC")).format(DateTimeFormatter.ISO_LOCAL_DATE)

I'm getting this error now.  Is there any way to set this field without having to surface it on my screens?  I'd rather not allow users to change this value.

 

2016-11-21 19:09:28,388 INFO - Serializing object into 'interface java.util.Map'
2016-11-21 19:09:28,390 INFO - PUT /rest/api/2/issue/80258 asObject Request Duration: 326ms
2016-11-21 19:09:28,403 ERROR - assert resp.status == 204
       |    |      |
       |    400    false
       status: 400 -` Bad Request
       body: [errorMessages:[], errors:[customfield_15500:Field 'customfield_15500' cannot be set. It is not on the appropriate screen, or unknown.]]

I use version 3.0.6 of ScriptRunner. The above mentioned script fragment 

issueInput.fields.customfield_11100 = new Date().format("yyyy-MM-dd")

didn't throw an error but it did not have any visible result. Does it work for my companies old version of ScriptRunner? 

Marco - that code snippet will only work for Jira Cloud.

If you have version 3.0.6 of ScriptRunner then you are using Jira Server.

Randy - apologies for the extremely slow reply but yes you can.

The Jira Cloud REST API docs state you can use the overrideScreenSecurity query parameter as long as your script is being executed by the ScriptRunner Add-on user.

Thanks Jon!

This widget could not be displayed.

Thank you Jon! As I am still new to ScriptRunner: What would be the correct way to update a custom field in a scripted post-function when using a Jira Server?

Marco, refer to Vasiliy Zverev 's answer in this thread for the server solution.

THX, Randy, I tried it and it works!

This widget could not be displayed.

Hi,

I want only the month to be updated in the custom field. Is there any macro similar to %%CURRENT_DATETIME%% available for the same.

Thanks,
Vinay 

There isnt.

This widget could not be displayed.

@Jon Bevan [Adaptavist]

Hi,

I dont have script runner.

I want only the month to be updated in the custom field. Is there any macro similar to %%CURRENT_DATETIME%% available for the same.

Could there be any solution, either a direct macro for month, or to extract only the month part from the datetime, and populate it to another custom field.

Thanks,
Vinay 

What you want to do isnt possible without add-on's

Suggest an answer

Log in or Sign up to answer
Community showcase
Posted Tuesday in Jira

What modern development practices are at the heart of how your team delivers software?

Hey Community mates! Claire here from the Software Product Marketing team. We all know software development changes rapidly, and it's often tough to keep up. But from our research, we've found the h...

142 views 1 3
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you