Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

change group Approvals via script

JK1
Giga Expert

Hello Experts!

I have a little struggle with Group approvals for changes. I have a workflow, but in this particular case, I do not want to use it. Hence I add for this change via a script multiple approval groups. But as soon as someone approves from these groups (sys_approval table already) the rest of the changes are not set to not needed anymore.

Does someone have an idea why this happens?

The code i use is :

var val = dev.u_mapr_microservices.split(",").length > 0 ? true : false;

var groupApprovals = ['f8947dfe0f9f76000643f68ce1050e00','e04c13c76f2f5600526b7357ea3ee4d2'];

if(val){

    groupApprovals.push('4aec8ea76f0b5100685246916e3ee4d5');

    log("GroupApprovals array is +1 " + groupApprovals);

    generatePerGroup(groupApprovals, current.sys_id);

}

else{

    log("GroupApprovals is 2 groups " + groupApprovals);

    generatePerGroup(groupApprovals);

}

function generateApproval(group){

    var approval = new GlideRecord('sysapproval_group');

    approval.initialize();

    approval.active = true;

    approval.assignment_group = group;

    approval.parent = current.sys_id;

    approval.approval = 'requested';

    approval.priority = current.priority;

    approval.state = 'requested';

    approval.insert();

    log("Ading   Approval for CHANGE " + current.number + " app.number);

}

function generatePerGroup(groups){

    for(var i in groups){

    log("Generate approval for " + groups[i]);

    generateApproval(groups[i]);

    }

}

So, is there something I am doing wrong ? The type is Anyone to approve in the sys_approvals table.

Thanks in advance!!!

Cheers,

Joro

3 REPLIES 3

Rama Chandra D
Kilo Guru

Hi Georgi,



I think a BR on the Group Approval table, sets the remainder of approvals of a particular group to 'No Longer Required'(not_required) once one of the approvals for the group is either approved or rejected. You can check 'sys approval_group' table for the BR. I do not remember the name of the BR, but it should be an easy find.



Darshak


Hi,


I added a business rule, that handles this type of tickets. As soon as any approval is received per group (approved/rejected) the rest of the approvals are marked as not needed. It uses the group approval record itself - easier than iterating through all approval records.



Cheers,



Joro


Hi Georgi,



I still wonder, why you had to create a new BR to mark the approvals as not needed. Can you check for 'SNC - Moot user approvals for group' BR on sysapproval_group table? Do you have it? Is it inactive?



Best,


Darshak




Edit: Why does generatePerGroup has dynamic number of arguments? I see generatePerGroup(groupApprovals, current.sys_id) and generatePerGroup(groupApprovals) function calls.