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.

Add or remove member from the group

Michael51
Tera Guru

Hello All,

I have an requirement to Automate request for Add or remove member to group Item ,  we have two list collector fields 

one is for Adding members and the other one for removing members , here my challenge is sometimes if user is already included in the group we need to Auto complete the request by adding work notes as "request already exists " in the group  , need your help in understanding how we can tackle this Scenario 

 

I have following script for adding and removing members from the group for run script 

var group = current.variables.group_name;

var usersToAdd = current.variables.addmemberlist; // give correct variable name here

var usersToRemove = current.variables.removememberlist;
 
var grp1 = new GlideRecord('sys_user_grmember');
grp1.addQuery('group',group);
grp1.addQuery('user',usersToRemove);
grp1.query();
while(grp1.next())
{
grp1.deleteMultiple();
}

var arr = usersToAdd.toString().split(',');

for (var i = 0; i < arr.length; i++) {
    var addRec = new GlideRecord('sys_user_grmember');
    addRec.addQuery("user", arr[i]);
    addRec.addQuery("group", group);
    addRec.query();
    if (!addRec.hasNext()) {
        gs.info("getting into if loop");
        addRec.initialize();
        addRec.user = arr[i];
        addRec.group = group;
        addRec.insert();
    }
}

can you please give some suggestion how we can develop this kind of automation 

@Ankur Bawiskar @jaheerhattiwale 

25 REPLIES 25

@Michael51 

so you are removing user from those groups selected?

is it always not deleting that 1 record?

Example: if you selected Abel Tuter and selected 5 groups then there would be 5 records into sys_user_grmember

Then is it not deleting all 5 records from sys_user_grmember table?

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@Ankur , here we select only Single group and multiple users to remove , so this has to remove corresponding entry of user from group member table related to selected group

 

I have ran the following script in Background script and this works fine , no empty record is getting appeared, it is removing everything

 

var users = ['6816f79cc0a8016401c5a33be04be441','62826bf03710200044e0bfc8bcbe5df1'];
var groupid = 'cfcbad03d711110050f5edcb9e61038f';

var seperated = users.toString().split(',');
for (var i = 0; i < seperated.length; i++){

    var gr = new GlideRecord('sys_user_grmember');
    gr.addQuery('group',groupid);
    gr.addQuery('user',seperated[i]);
    gr.query();
    while(gr.next()){
        gr.deleteMultiple();
        gs.addInfoMessage("user records got deleted")
    }
}

Hello @Ankur Bawiskar, did you get any chance to look into recent script? Which i shared

@Michael51 

try this

var users = ['6816f79cc0a8016401c5a33be04be441','62826bf03710200044e0bfc8bcbe5df1'];
var groupid = 'cfcbad03d711110050f5edcb9e61038f';

var gr = new GlideRecord('sys_user_grmember');
gr.addQuery('group',groupid);
gr.addQuery('user','IN', users.toString());
gr.query();
gr.deleteMultiple();
Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@Ankur Bawiskar , above script is working fine for me already when I manually pass the sys id and do 

but i want this script in dynamic as I get remove members list from variable

 

this below script is not working

variable

 

variable

 

var group = current.variables.group_name;
gs.log("group name is: " + group);

var usersToAdd = current.variables.addmemberlist;
var usersToRemove = current.variables.removememberlist;
gs.log("users to be removed: " + usersToRemove);

var arra = usersToRemove.toString().split(',');

for (var k = 0; k < arra.length; k++) {
gs.log("entered into for loop");
var grp1 = new GlideRecord('sys_user_grmember');
grp1.addQuery('group', group);
grp1.addQuery('user', "IN", arra[k]);
gs.log("user information is: " + arra[k]);
grp1.query();
if (grp1.hasNext()) { // Check if there are records to delete
while (grp1.next()) {
grp1.deleteMultiple();
}

can you please help me in making change’s