How to set "Start Date" in a transition?

Stephen Casey August 8, 2018

I want to set a date field to indicate that an Epic was started on the date when it's transitioned to the "In Progress" status.  I've added a post function which runs the following script inline, but just can't seem to get it to work:

Script is 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
import java.sql.Timestamp

def customFieldManager = ComponentAccessor.getCustomFieldManager()

def dateCf = customFieldManager.getCustomFieldObjectByName('Start Date')
issue.setCustomFieldValue(dateCf, new Timestamp((new Date()).time))

 

Error is: 

2018-08-08 09:27:02,168 ERROR [workflow.ScriptWorkflowFunction]: *************************************************************************************
2018-08-08 09:27:02,169 ERROR [workflow.ScriptWorkflowFunction]: Script function failed on issue: PROJECT-362, actionId: 111, file: <inline script>
java.lang.NullPointerException
	at com.atlassian.jira.issue.IssueImpl.getCustomFieldValue(IssueImpl.java:896)
	at com.atlassian.jira.issue.IssueImpl.setCustomFieldValue(IssueImpl.java:906)
	at com.atlassian.jira.issue.MutableIssue$setCustomFieldValue.call(Unknown Source)
	at Script45.run(Script45.groovy:10)

1 answer

Suggest an answer

Log in or Sign up to answer
0 votes
Alexey Matveev
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.
August 8, 2018

Hello,

I think this line causes the error because the Start Date custom field does not exist:

def dateCf = customFieldManager.getCustomFieldObjectByName('Start Date')

 Add logging to your script like this:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
import java.sql.Timestamp

def customFieldManager = ComponentAccessor.getCustomFieldManager()

def dateCf = customFieldManager.getCustomFieldObjectByName('Start Date')
log.error("dateCF: " + dateCf);
issue.setCustomFieldValue(dateCf, new Timestamp((new Date()).time))

And have a look in the atlassian-jira.log file for this erros message

Stephen Casey August 8, 2018

Hi, I've taken that from other examples, if Start Date isn't there, how can I get at it to set it?  I can create a new user defined field but would prefer to re-use if possible...?

Alexey Matveev
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.
August 8, 2018

You should create a custom field of the Date Time or Date picker or user any available field of this type.

You can create a custom field by going to cog item-> issues -> custom fields.

Stephen Casey August 8, 2018

Start Date appears in the Custom fields already - as a Date Picker...  so I'm not sure why the above code is failing?  Set to being Global (all issues)

Alexey Matveev
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.
August 8, 2018

Did you add logging to your script? If so, have a look in the atlassian-jira.log for the logged message.

TAGS
AUG Leaders

Atlassian Community Events