Just a heads up: On March 24, 2025, starting at 4:30pm CDT / 19:30 UTC, the site will be undergoing scheduled maintenance for a few hours. During this time, the site might be unavailable for a short while. Thanks for your patience.
×Use case: The customer wants a number of fields set to read-only when issues have certain statuses.
My solution: I have created a Scriptrunner Behaviour with an Initialiser script as follows:
if (getAction()?.id == 1) { //Do not run script on Create action
log.warn('ACTION = CREATE')
return
}
def lockStatuses = ['status1','status2','status3'] //Statuses where fields should be read-only
def issueStatus = underlyingIssue.status.name.toLowerCase() //Status of the undelying issue
if (!lockStatuses.contains(issueStatus)) {
log.warn('STATUS WILL NOT MAKE FIELDS READ-ONLY')
return
}
else {
log.warn('SETTING FIELDS READ-ONLY!')
def lockFields = ['customField1','customField2','customField3'] //Fields that should be set to read-only
lockFields.each { lockField ->
getFieldByName(lockField).setReadOnly(true)
}
getFieldById("summary").setReadOnly(true)
}
This works fine on Edit- and Transition screens.
My problem: If I first view an issue that has one of the above statuses, and then press the "Create" button, the above fields is being set to read only on the Create screen, despite the first "if" in the script.
If I Cancel out of the Create screen and press the "Create" button once again, the fields are now writable. The issue seems to only occur directly after opening av issue, or after previewing it on boards.
Do anyone have suggestions on what I should try next?
Hi Martin,
Try switching out your first if statement for the following:
if (getActionName() in ["Create Issue", "Create"]) {
return
}
I've found when doing this you need to take into account "Create" and "Create Issue"
Hope this helps!
Steve
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.