- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-16-2024 10:13 PM
Hello Community!
I need some help with the Script, can you please help me with the requirement below
I have managers group--contains 10 users.I want to check all users are currently managers of any group?.If yes retain them in managers group.else remove them.This should be happen once in a week.
Thanks in advance.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-16-2024 10:55 PM
Hello @Mad3 ,
Please create a scheduled job for weekly timeframe and use below script-
var getGroupMem = new GlideRecord('sys_user_grmember');
getGroupMem.addEncodedQuery('group=0f06c71787a45e10a274dd7bbbbb359c'); //replace the sys id of youe group's sys id
getGroupMem.query();
while(getGroupMem.next()){
var getManager = new GlideRecord('sys_user_group');
getManager.addEncodedQuery('manager='+getGroupMem.user);
getManager.query();
if(!getManager.next()){ // if the user is not manager of any group
getGroupMem.deleteRecord(); // by this line it will remove the user from manager's group
}
}
Mark ✅ Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-16-2024 11:02 PM
Hi @Mad3
Please try this script in schedule job that run weekly
// Get the "Managers" group
var managersGroup = new GlideRecord('sys_user_group');
managersGroup.get('name', 'Managers');
if (managersGroup.isValidRecord()) {
// Get all users in the Managers group
var groupMembers = new GlideRecord('sys_user_grmember');
groupMembers.addQuery('group', managersGroup.sys_id);
groupMembers.query();
while (groupMembers.next()) {
var user = groupMembers.user;
var isManager = false;
// Check if the user is a manager of any group
var groupsManaged = new GlideRecord('sys_user_group');
groupsManaged.addQuery('manager', user.sys_id);
groupsManaged.query();
if (groupsManaged.hasNext()) {
isManager = true;
}
// Remove the user from the Managers group if they are not managing any group
if (!isManager) {
groupMembers.deleteRecord();
gs.info('User ' + user.getDisplayValue() + ' removed from the Managers group.');
}
}
} else {
gs.error('Managers group not found.');
}
Please mark helpful & correct answer if it's really worthy for you.
Thanks,
BK
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-16-2024 10:55 PM
Hello @Mad3 ,
Please create a scheduled job for weekly timeframe and use below script-
var getGroupMem = new GlideRecord('sys_user_grmember');
getGroupMem.addEncodedQuery('group=0f06c71787a45e10a274dd7bbbbb359c'); //replace the sys id of youe group's sys id
getGroupMem.query();
while(getGroupMem.next()){
var getManager = new GlideRecord('sys_user_group');
getManager.addEncodedQuery('manager='+getGroupMem.user);
getManager.query();
if(!getManager.next()){ // if the user is not manager of any group
getGroupMem.deleteRecord(); // by this line it will remove the user from manager's group
}
}
Mark ✅ Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-16-2024 11:18 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-16-2024 11:02 PM
Hi @Mad3
Please try this script in schedule job that run weekly
// Get the "Managers" group
var managersGroup = new GlideRecord('sys_user_group');
managersGroup.get('name', 'Managers');
if (managersGroup.isValidRecord()) {
// Get all users in the Managers group
var groupMembers = new GlideRecord('sys_user_grmember');
groupMembers.addQuery('group', managersGroup.sys_id);
groupMembers.query();
while (groupMembers.next()) {
var user = groupMembers.user;
var isManager = false;
// Check if the user is a manager of any group
var groupsManaged = new GlideRecord('sys_user_group');
groupsManaged.addQuery('manager', user.sys_id);
groupsManaged.query();
if (groupsManaged.hasNext()) {
isManager = true;
}
// Remove the user from the Managers group if they are not managing any group
if (!isManager) {
groupMembers.deleteRecord();
gs.info('User ' + user.getDisplayValue() + ' removed from the Managers group.');
}
}
} else {
gs.error('Managers group not found.');
}
Please mark helpful & correct answer if it's really worthy for you.
Thanks,
BK
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-16-2024 11:45 PM
Hello @Mad3
Please mark this response as Correct and Helpful if it helps you can mark more that one reply as accepted solution