Add or remove member from the group
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-19-2023 03:42 AM
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-20-2023 02:20 AM
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?
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-20-2023 02:27 AM
@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")
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-20-2023 04:37 AM
Hello @Ankur Bawiskar, did you get any chance to look into recent script? Which i shared
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-20-2023 04:54 AM
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();
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-20-2023 04:58 AM
@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