Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Creat BR for remove member from group if he is not manager of appliction

nadavt182355205
Tera Contributor

Hello every one,

i need to make a BR that is remove members in a group that i created called "IT URS".

It triggers when a field  called 'managed_by' on the cmdb_ci_appl table is change and it is referance to the user table.

What the BR need to do is when the 'managed_by' field is change it takes the previous user and check if he managed another app from the cmdb_ci_appl table, if no he need to remove him from a group called IT URS.

 

thanks for the help

1 ACCEPTED SOLUTION

Bhavya11
Kilo Patron
Kilo Patron

Hi @nadavt182355205 ,

 

Please write Business rule on cmdb_ci_appl table it will run after update 

filter condition : manged_by changes

Bhavya11_0-1730978139369.png

 

condition : current.managed_by != previous.managed_by 

 

in script:

Bhavya11_1-1730978168981.png

 

(function executeRule(current, previous /*null when async*/ ) {

    var previousUser = previous.managed_by;


    if (previousUser) {
        var appCheck = new GlideRecord('cmdb_ci_appl');
        appCheck.addQuery('managed_by', previousUser);
        appCheck.addQuery('sys_id', '!=', current.sys_id); // Exclude the current record
        appCheck.query();

        if (!appCheck.hasNext()) {
            var group = new GlideRecord('sys_user_grmember');
            group.addQuery('group.name', 'IT URS');
            group.addQuery('user', previousUser);
            group.query();

            if (group.next()) {
                group.deleteRecord(); 
               
            }
        }
    }

})(current, previous);

 

 

 

Please mark helpful & correct answer if it's really worthy for you.

 

Thanks,

BK

View solution in original post

2 REPLIES 2

Bhavya11
Kilo Patron
Kilo Patron

Hi @nadavt182355205 ,

 

Please write Business rule on cmdb_ci_appl table it will run after update 

filter condition : manged_by changes

Bhavya11_0-1730978139369.png

 

condition : current.managed_by != previous.managed_by 

 

in script:

Bhavya11_1-1730978168981.png

 

(function executeRule(current, previous /*null when async*/ ) {

    var previousUser = previous.managed_by;


    if (previousUser) {
        var appCheck = new GlideRecord('cmdb_ci_appl');
        appCheck.addQuery('managed_by', previousUser);
        appCheck.addQuery('sys_id', '!=', current.sys_id); // Exclude the current record
        appCheck.query();

        if (!appCheck.hasNext()) {
            var group = new GlideRecord('sys_user_grmember');
            group.addQuery('group.name', 'IT URS');
            group.addQuery('user', previousUser);
            group.query();

            if (group.next()) {
                group.deleteRecord(); 
               
            }
        }
    }

})(current, previous);

 

 

 

Please mark helpful & correct answer if it's really worthy for you.

 

Thanks,

BK

SufiyanMurshad
Tera Contributor

Hi @nadavt182355205 ,

you need to add table {cmdb_ci_appl} (or the appropriate table if it's customized).

When : After.

filter condition is select Field as managed_by and trigger when it Changed.

 

BR script:


var previousUser = previous.managed_by;

var appCheck = new GlideRecord('cmdb_ci_appl');
appCheck.addQuery('managed_by', previousUser);
appCheck.query();

 

if(!appCheck.hasNext()) {
var groupGR = new GlideRecord('sys_user_group');
groupGR.addQuery('name', 'IT URS');
groupGR.query();

 

if(groupGR.next()) {
var groupMember = new GlideRecord('sys_user_grmember');
groupMember.addQuery('group', groupGR.sys_id);
groupMember.addQuery('user', previousUser);
groupMember.query();

 

if(groupMember.next()) {
groupMember.deleteRecord();
}
}
}

 

 

 

 

 

 

Please mark helpful & correct answer if it's really worthy for you.