You can use one of these samples as a good starting point to begin writing and editing code that fits your requirements.

Flag an Issue

This example shows how you can flag the Issues returned by the JQL search which is run at a specified time.

In order to use this example you will need to paste the example code below inside the code box. You will also need to specify the JQL Query to search for the issues to be updated, along with the schedule of when this escalation service should run.

// Look up the custom field ID for the flagged field
def flaggedCustomField = get("/rest/api/2/field")
        .asObject(List)
        .body
        .find {
    (it as Map).name == 'Flagged'
} as Map

// Update the issue setting the flagged field
def result = put("/rest/api/2/issue/${issue.key}")
        .header('Content-Type', 'application/json')
        .body([
        fields:[
                // The format below specifies the Array format for the flagged field
                // More information on flagging an issue can be found in the documentation at:
                // https://confluence.atlassian.com/jirasoftwarecloud/flagging-an-issue-777002748.html
                (flaggedCustomField.id): [ // Initialise the Array
                                           [ // set the component value
                                             value: "Impediment",
                                           ],

                ]
        ]

])
        .asString()

// Check if the issue was updated correctly
// Log out the issues updated or which failed to update
if (result.status == 204) { (11)
    logger.info("The ${issue.key} issue was flagged as an Impediment. ")
} else {
    logger.warn("Failed to set the Impediment flag on the ${issue.key} issue. ${result.status}: ${result.body}")
}

// Add a return message to show which issues the escalation service ran on.
return "Escalation Service completed on ${issue.key}"

GROOVY

Transition an Issue

This example shows how you can automatically transition the Issues returned by the JQL search which is run at a specified time.

In order to use this example you will need to paste the example code below inside the code box. You will also need to specify the JQL Query to search for the issues to be updated, along with the schedule of when this escalation service should run.

// The ID of the workflow transition to execute.
// Note - The transition ID must represent a valid transition for the workflow that the issue uses.
def transitionID = '<TransitionIDHere>'

// The rest call to transition the issue
def result = post("/rest/api/2/issue/${issue.key}/transitions")
        .header("Content-Type", "application/json")
        .body([transition: [id: transitionID]])
        .asObject(Map)

// Check if the issue was transitioned correctly
// Log out the issues updated or which failed to update
if (result.status == 204) {
    logger.info("The ${issue.key} issue was transitioned by the escalation service.")
} else {
    logger.warn("The escalation service failed to transition the ${issue.key}issue. ${result.status}: ${result.body}")
}

// Add a return message to show which issues the escalation service ran on.
return "Escalation Service completed on ${issue.key}"
GROOVY