I am trying to capture the history of due dates in a custom text field, 'Deadline Extension History'. I have set up a ScriptRunner (v 6.24.0) behavior to make the change each time the due date is changed by a user.
----
import java.text.SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
def DEH = getFieldByName("Deadline Extension History")
def dueDateField = getFieldById(getFieldChanged()) // Due date has changed
def dueDate = dueDateField.getValue() as Date
// Get the current value of the Deadline Extension History
def selectedOption = DEH.getValue() as String
def valueSet = selectedOption + '\n' + sdf.format(dueDate)
DEH.setFormValue(valueSet)
----
When I make a change to the date, instead of concatenating a single date to the Deadline Extension History it adds several dates:
Expected:
2021/05/10
2021/05/17
Actual:
2021/05/10
2021/05/10
2021/05/10
2021/05/17
2021/05/17
When I modiry the valueSet to either 'selectedOption' or to 'sdf.format(dueDate)', the Deadline Extension History will take on only the value of selectedOption or sdf.format(dueDate), respectively.
Is there a there a better way to set up the behavior to get the expected value? I am able to make this happen on transition, but would prefer to avoid that path.
Hello @Cory Strope
Rather than storing every single change in a text field, it would be better to use a read-only/calculated custom field which will directly provide historical dates for duedate field.
Let me try with a code snippet below. dueDateChanges variable will hold every date values
import com.atlassian.jira.component.ComponentAccessor
def changeHistoryManager = ComponentAccessor.changeHistoryManager
def issueManager = ComponentAccessor.getIssueManager()
def dueDateChanges = []
changeHistoryManager.getChangeItemsForField (issue, "duedate").each {
if (null != it.from) dueDateChanges.add(it.from)
}
if (null != issue.dueDate) dueDateChanges.add (issue.dueDate)
If dueDate changed it will add the "from value" of the change item, then it adds the current value at the end.
You might do the correct date conversions but this code will do your trick after changing a couple of lines for your needs.
I hope it helps
Tuncay
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.
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.