Using a https://docs.adaptavist.com/sr4js/latest/features/listeners , it is easy to update Environment Custom Fields .

In this example, we automatically select the target Environment in our Change Requests (Jira issues), depending on the type of change defined in the "Promotion Path" field (Production Fix, Change Request, Enhancement).

For that, we have created a ScriptRunner Listener:

ScriptRunner Listener

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder

def customFieldManager = ComponentAccessor.customFieldManager
def issue = event.issue

final environmentCustomFieldName = 'Environment(s)'
def environmentCustomField = customFieldManager.getCustomFieldObjects(issue).findByName(environmentCustomFieldName)
assert environmentCustomField : "Could not find custom field with name $environmentCustomFieldName"

final triggerCustomFieldName = 'Promotion Path'
def triggerCustomField = customFieldManager.getCustomFieldObjects(issue).findByName(triggerCustomFieldName)
assert triggerCustomField : "Could not find custom field with name $triggerCustomFieldName"

if (issue.getCustomFieldValue(triggerCustomField).toString() == "Enhancement") {
  def customFieldType = environmentCustomField.getCustomFieldType()
  def environment1 = customFieldType.getSingularObjectFromString("58") // eCommerce DEV1
  def environment2 = customFieldType.getSingularObjectFromString("467") // eCommerce Test
  def environmentList = [environment1, environment2]
  environmentCustomField.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(environmentCustomField), environmentList), new DefaultIssueChangeHolder())
}
GROOVY