/
Reopen a Form.
Reopen a Form.
Purpose | Hosting | Compatible Tools |
---|---|---|
Reopen a submitted form. | Cloud | Any scripting tool, such as JMWE, Power Scripts or Scriptrunner, that uses Groovy. |
Script | //// When using this script in the script console uncomment the next line:
def issueKey = 'ISSUE-1'
//// When using this script in a transition uncomment the next line:
// def issueKey = issue.key
String formName = "Form Name"
Closure getFormIds = { def propertyValue, String name ->
def ids = []
for(def form : propertyValue.value.forms){
if(form.name.equals(name)){
ids.add(form.id)
}
}
return ids
}
def proFormaForm = get('/rest/api/3/issue/' + issueKey + '/properties/proforma.forms')
.header('Content-Type', 'application/json')
.asObject(Map)
if(proFormaForm.status == 200){
def forms = getFormIds(proFormaForm.body, formName)
for(def formId : forms){
def property = get('/rest/api/3/issue/' + issueKey + '/properties/proforma.forms.i' + formId)
.header('Content-Type', 'application/json')
.asObject(Map)
boolean updateAllForms = false
if(property.status == 200){
if(property.body.value.schemaVersion.equals(8)){
if(property.body.value.state.status.equals("s")){
property.body.value.state.status = "o"
def insertProperty = put('/rest/api/3/issue/' + issueKey + '/properties/' + property.body.key)
.header('Content-Type', 'application/json')
.body(property.body.value)
.asString()
updateAllForms = true
}
}
}
if(updateAllForms){
def searchProperty = get('/rest/api/3/issue/' + issueKey + '/properties/proforma.forms.search')
.header('Content-Type', 'application/json')
.asObject(Map)
if(searchProperty.status == 200){
def openForms = searchProperty.body.value.count.open.value
def submittedForms = searchProperty.body.value.count.submitted.value
searchProperty.body.value.count.open = openForms + 1
searchProperty.body.value.count.submitted = submittedForms - 1
def insertSearchProperty = put('/rest/api/3/issue/' + issueKey + '/properties/' + searchProperty.body.key)
.header('Content-Type', 'application/json')
.body(searchProperty.body.value)
.asString()
}
for(def form : proFormaForm.body.value.forms){
if(form.id == formId){
form.remove("submitted")
def insertProperty = put('/rest/api/3/issue/' + issueKey + '/properties/' + proFormaForm.body.key)
.header('Content-Type', 'application/json')
.body(proFormaForm.body.value)
.asString()
}
}
}
}
} |
Installation instructions |
|
Possible use cases | Use this script to reopen a submitted form, for example if a form needs to be reopened for an Approver to add/amend information. |
Limitations |
|
, multiple selections available,
Related content
Unlock a Form.
Unlock a Form.
More like this
Change the Internal/External Setting.
Change the Internal/External Setting.
More like this
Copy Forms to Another Issue.
Copy Forms to Another Issue.
More like this
Create Issues Based on Form Field Values.
Create Issues Based on Form Field Values.
More like this
Send Email Notification to an Approver.
Send Email Notification to an Approver.
Read with this
Add a Form Template to an Issue(s)
Add a Form Template to an Issue(s)
More like this