Scriptrunner: Validator field required by value of another field

Marco Brundel
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 8, 2018

I want to make a field (Company and Role) mandatory in the Create screen if another field (Application Area)(select list) has the value "SL SAP ECC”.

 

I use a validator on transition Create.

 

import com.onresolve.jira.groovy.user.FieldBehaviours

import groovy.transform.BaseScript

 

@BaseScript FieldBehaviours fieldBehaviours

 

def ApplicationAreaField = getFieldById(getFieldChanged())

def CompanyandRoleField = getFieldByName("Company and Role")

 

String ApplicationAreaValue = ApplicationAreaField.getValue()

 

if (ApplicationAreaValue == 'SL SAP ECC') {

    CompanyandRoleField.setRequired(true)

} else {

    CompanyandRoleField.setRequired(false)

}

 

But JIRA gives the report about that field, regardless of which value is chosen in the select list.

 

Where do I make the mistake?

2 answers

1 accepted

Suggest an answer

Log in or Sign up to answer
0 votes
Answer accepted
Marco Brundel
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 12, 2018

Adaptavist told me the following:

 

To achieve what you are asking you need to use a behaviour instead of a validation.

Can you try this code as a server side script for a behaviour on the "Application Area" field:

 

def ApplicationAreaField = getFieldByName("Application Area")
def CompanyandRoleField = getFieldByName("Company and Role")

ArrayList ApplicationAreaValue = ApplicationAreaField.getValue() as ArrayList

if (ApplicationAreaValue.contains("SL SAP ECC")){ 
CompanyandRoleField.setRequired(true)
} else{ 
CompanyandRoleField.setRequired(false) 
}

 And this works for my situation

1 vote
Ivan Tovbin
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 10, 2018

Hi Marco,

If we are talking about a transition validator, the script should be something like this:

import com.atlassian.jira.component.ComponentAccessor
import com.opensymphony.workflow.InvalidInputException

def cfMgr = ComponentAccessor.getCustomFieldManager()
def companyAndRole = issue.getCustomFieldValue(cfMgr.getCustomFieldObjectByName("Company and Role"))
def applicationArea = issue.getCustomFieldValue(cfMgr.getCustomFieldObjectByName("Application Area"))

if(!companyAndRole && applicationArea.getValue().equals("SL SAP ECC")){
throw new InvalidInputException("Company and Role field is required!")
}
return true
TAGS
AUG Leaders

Atlassian Community Events