Add users to managers group if they manager of any other group, else remove them from managers group

Mad3
Tera Expert

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.

 

2 ACCEPTED SOLUTIONS

Harsh_Deep
Giga Sage
Giga Sage

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.

View solution in original post

Bhavya11
Kilo Patron

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

View solution in original post

4 REPLIES 4

Harsh_Deep
Giga Sage
Giga Sage

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.

Hi @Harsh_Deep ,

 

Thank you for the script and it is working fine.

Bhavya11
Kilo Patron

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

Eshwar Reddy
Kilo Sage

Hello @Mad3 

pandu5_0-1726555472900.png

Please mark this response as Correct and Helpful if it helps you can mark more that one reply as accepted solution