Updating due-date on workflow transition, with a custom field off set

Hey

I have a challange, where a transaction, should change the due date of the issue. But the change is not static (+5 days, 1 month). the off set is based on a select custom field.

This field have have different periods (weekly, monthly, etc.)

Anyone know a way to solve this?

2 answers

1 accepted

Found that it could be done with a scripted post function, using Script Runner plugin

Hi Mikkel,

Did you manage to do it with script runner? Coud you post your script here?

Pierre

import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.Issue
import java.text.SimpleDateFormat
import com.atlassian.jira.issue.comments.CommentManager

Issue issue = issue
ComponentManager componentManager = ComponentManager.getInstance()
CustomFieldManager cfManager = componentManager.getCustomFieldManager()
CommentManager comManager= componentManager.getCommentManager()

String value = issue.getCustomFieldValue(cfManager.getCustomFieldObjectByName("Control Frequency"));
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy/MM/dd")
String originalDueDate = dateFormatter.format(issue.dueDate)

Calendar newDueDate = Calendar.getInstance()
newDueDate.setTimeInMillis(issue.dueDate.time)

boolean update = true

switch (value){
        case "Daily (weekdays)":

            newDueDate.add(Calendar.DAY_OF_YEAR, Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY ? 3 : 1)
            break

        case "Weekly":
            newDueDate.add(Calendar.WEEK_OF_YEAR, 1)
            break
.
.
.
        case "Every 4 years":
            newDueDate.add(Calendar.YEAR, 4)
            break

        case "Every 5 years":
            newDueDate.add(Calendar.YEAR, 5)
            break

        default:
            update = false
            break
    }

if (update){
    issue.dueDate.time = newDueDate.timeInMillis
    comManager.create(issue, "System", "Executed and Due date changed from " + originalDueDate + " to " + dateFormatter.format(issue.dueDate), false)
    issue.store()
}

Scripting.

JJupin:

if(customfield_12345 == "1") {

dueDate = currentDate() + "5d";

} else {

dueDate = currentDate() + "4w";

}

http://confluence.kepler-rominfo.com/display/JJUP20/Date+routines

Suggest an answer

Log in or Sign up to answer
Community showcase
Published yesterday in Statuspage

194 years of downtime: looking back on incident data from 2018

Statuspage customers logged more than 194 years of collective incidents in 2018. That’s a whopping 87% increase from the  104 years logged in 2017 , and we aren’t even through December yet....

56 views 1 5
Read article

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