Example scripts
To homepage
Jira

Clone a Work item on transition with new due date and update date attribute of associated Assets.
Features
Post functionsCreated 2 year(s) ago, Updated 2 day(s) ago
App in script

ScriptRunner For Jira
by Adaptavist
Compatibility

Jira
Language |
groovy
import java.time.format.DateTimeFormatter
import java.time.LocalDate
import java.sql.Timestamp
// To find the Assets Attribute ID: Navigate to Scheme > Object Type > Attributes
def assetCustomFieldName = "customfield_12834"
final lastMaintenanceDateAssetAttributeId = 153
def sourceWorkItem = WorkItems.getByKey(issue.key) // Get the work item
def dueDate = sourceWorkItem.getDueDate()
if (!dueDate) {
logger.error "No original due date"
return
}
def assetFieldValue = sourceWorkItem.getCustomFieldValue(assetCustomFieldName)
if (!assetFieldValue) {
logger.error "No value in Assets field: $assetCustomFieldName"
return
}
final dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
def newDueDate = dueDate.toLocalDate().plusMonths(3)
def workItemKey = sourceWorkItem.getSpaceObject().key
def workTypeName = sourceWorkItem.getWorkType().name
WorkItems.create(workItemKey, workTypeName) {
setSummary(sourceWorkItem.getSummary())
setDescription(sourceWorkItem.getDescription())
setDueDate(newDueDate.format(dateFormatter))
setCustomFieldValue(assetCustomFieldName, assetFieldValue)
}.link("clones", sourceWorkItem)
assetFieldValue.each { asset ->
def assetWorkspaceId = asset.workspaceId
def assetObjectId = asset.objectId
def updatedAssetResponse = put("https://api.atlassian.com/jsm/assets/workspace/" + assetWorkspaceId + "/v1/object/" + assetObjectId)
.header("Content-Type", "application/json")
.basicAuth("email@example.com", "<api_token>")
.body([
attributes: [
[
objectTypeAttributeId: lastMaintenanceDateAssetAttributeId,
objectAttributeValues: [
[
value: dueDate.toLocalDate().format(dateFormatter).toString(),
]
]
]
]
])
.asObject(Map)
assert updatedAssetResponse.status >= 200 && updatedAssetResponse.status < 300
}Having an issue with this script?
Report it here