Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

How can I make it so that when assigning a ticket it is validated that it is in the support group pr

Victor Tobon
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
January 15, 2025

 

Hello Atlassian community and I am trying to make a Listener so that when editing the assigne field there is another field called support group with value L1 if the user to whom the request is assigned is not in that group it should be deleted, however I have not been able to share my code

 

 

 

import groovy.json.JsonSlurper
import java.net.URL
import java.net.HttpURLConnection

// Obtener el campo "Grupo de Asignación" por su ID personalizado
def customFieldId = "customfield_10101" // Usa el ID de tu campo personalizado
def groupFieldValue = issue.getCustomFieldValue(customFieldId)

if (groupFieldValue != null) {
    // Usar la API REST de Jira Cloud para obtener los miembros del grupo de soporte
    def groupName = groupFieldValue.toString()
   
    // Configurar la URL de la API para obtener los usuarios del grupo
    def baseUrl = "https://ejemplo.atlassian.net" // Tu dominio Jira Cloud
    def apiUrl = "/rest/api/3/group?groupname=${groupName}&expand=members"
   
    // Crear la conexión HTTP y configurar la autenticación
    def encodedAuth = ""
    def connection = new URL(baseUrl + apiUrl).openConnection() as HttpURLConnection
    connection.setRequestMethod('GET')
    connection.setRequestProperty('Authorization', encodedAuth) // Autenticación básica

    // Leer la respuesta de la API
    def response = new JsonSlurper().parseText(connection.inputStream.text)
   
    // Verificar si la persona asignada está en el grupo de soporte
    def assignee = issue.getAssignee()

    if (assignee != null && assignee.name != null) {
        def assigneeName = assignee.name
        def groupMembers = response.members.collect { it.name }
       
        if (groupMembers.contains(assigneeName)) {
            return true // La persona asignada está en el grupo
        } else {
            // La persona asignada no está en el grupo, retornar false
            return false
        }
    } else {
        // Si no hay una persona asignada o el nombre es nulo
        return false
    }
}

return false // Si no se encuentra el valor del grupo, retornamos false

1 answer

0 votes
Tuncay Senturk _Snapbytes_
Community Champion
January 15, 2025

Hi @Victor Tobon 

Your code seems OK, considering the fact that you set up a token and use for your connection.

For the rest, let me try to give you some snippet which may lead you to the right point.

def response = new JsonSlurper().parseText(connection.inputStream.text)
def members = response?.members?.values?.collect { it.accountId } ?: []

def assignee = issue.getAssignee()
if (assignee != null && !members.contains(assignee.getKey())) {
// Assignee is not in the support group; delete the custom field value
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def customField = customFieldManager.getCustomFieldObject(customFieldId)
issue.setCustomFieldValue(customField, null)

def issueManager = ComponentAccessor.getIssueManager()
issueManager.updateIssue(event.getUser(), issue, EventDispatchOption.DO_NOT_DISPATCH, false)

log.info("Custom field 'Support Group' value cleared because assignee is not in the group.")
}

 I hope it helps

Suggest an answer

Log in or Sign up to answer
DEPLOYMENT TYPE
CLOUD
PRODUCT PLAN
PREMIUM
PERMISSIONS LEVEL
Product Admin
TAGS
AUG Leaders

Atlassian Community Events