remove user from a servicnow group from array of user sys_ids
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-13-2023 09:49 PM
hi there
very similar to the attached script i need a script for following scenario
array of sys_user id, in some instances there will only be 1 sys_id
group name will be specified
remove servicenow group members with the list from the array
if user from the array is not a member , skip that user and itereate to the next user
please provide me with missing bits in my script below
Thank You
Levino
workflow.scratchpad.Description = current.variables.description;
workflow.scratchpad.NewGroupName = current.variables.new_group_name;
var gr = new GlideRecord('sys_user_group'); //To create group
gr.initialize();
gr.name = workflow.scratchpad.NewGroupName;
gr.type = 'a23a29e8dbec8850304c147a3a96191f';
gr.description = workflow.scratchpad.Description;
gr.setWorkflow(false);
gr.autoSysFields(false);
gr.sys_updated_by = 'admin_sp';
gr.sys_created_by = 'admin_sp';
gr.company = 'd9057fc1db98d7005070326f7c961926';
var grSysid = gr.insert();
hi
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-13-2023 10:07 PM - edited 11-13-2023 10:09 PM
Hi @levino ,
Use below script and replace user sys_id with actual variable where you are getting user sys_id.
var description = workflow.scratchpad.Description;
var newGroupName = workflow.scratchpad.NewGroupName;
var userArray = ['Usersys_id_1', 'Usersys_id_2', 'Usersys_id_3'];
var group = new GlideRecord('sys_user_group');
if (group.get('name', newGroupName)) {
for (var i = 0; i < userArray.length; i++) {
var userId = userArray[i];
var member = new GlideRecord('sys_user_grmember');
member.addQuery('user', userId);
member.addQuery('group', group.sys_id);
member.query();
if (member.next()) {
member.deleteRecord();
gs.log('User ' + userId + ' removed from group ' + group.name);
} else {
gs.log('User ' + userId + ' is not a member of group ' + group.name);
}
}
} else {
gs.log('Group ' + newGroupName + ' not found');
}
Please mark it as helpful and solution proposed if its serves your purpose.
Thanks,
Anand
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-17-2023 03:16 AM
Hi Anand
the below evaluates to false , the user not member , even though user is member of
var newGroupName = 'Service Desk';
var userArray = ['d6266a10c0a8016700a11212dabddd67'];
var group = new GlideRecord('sys_user_group');
if (group.get('name', newGroupName))
{ for (var i = 0; i < userArray.length; i++)
{ var userId = userArray[i];
var member = new GlideRecord('sys_user_grmember');
member.addQuery('user', userId);
member.addQuery('group', group.sys_id);
member.query();
if (member.next())
{ gs.print('User ' + userId + ' removed from group ' + group.name); }
else { gs.print('User ' + userId + ' is not a member of group ' + group.name); } } }
else { gs.print('Group ' + newGroupName + ' not found'); }
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-14-2023 08:23 AM