Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

background Script - code correction

Not applicable
Hello All 
 
I have background script which add user's manager into the group('Approval'). If user is no longer manager then it will removed it from the approval group. 
Now i have to add one more condition, if the manager is having itil role then he / she should not be get added into the approval group. I have added a function but it is not working as per the requirement. Could you please check my code and suggest me. 

var groupId = 'e883de65935102109e34b03efaba1094';

 

addMembersToGroup(groupId);
checkExistingMembers(groupId);



function checkExistingMembers(groupId) {
    var isManager = false;
    var query = 'group=' + groupId;
    var grMember = new GlideRecord('sys_user_grmember');
    grMember.addEncodedQuery(query);
    grMember.query();
    while (grMember.next()) {
        isManager = checkIfManager(grMember.user);
        if (isManager == false) {
            grMember.deleteRecord();
        }
    }
}

 

function checkIfManager(userManager) {
    var return_flag = false;
    var query = 'manager=' + userManager + '^active=true';
    var grUser = new GlideRecord('sys_user');
    grUser.addEncodedQuery(query);
    grUser.query();
    if (grUser.next()) {
        return_flag = true;
    }
    return return_flag;
}




function addMembersToGroup(groupId) {

 

    var query = 'manager!=NULL^active=true';
    var grUser = new GlideRecord('sys_user');
    grUser.addEncodedQuery(query);
    grUser.query();
    while (grUser.next())
    {
        var itilRole = new GlideRecord('sys_user_has_role'); // validation for the itil role of the manager's 
        itilRole.addQuery('user', grUser.manager.sys_id);
        itilRole.addQuery('role', 'itil');
        itilRole.query();
        if (!itilRole.next()) {
            addToGroup(grUser.manager, groupId);
        }
    }
} //  validation for the itil role of the manager's / 

 

function addToGroup(userManager, groupId) {
    var query = 'group=' + groupId + '^user=' + userManager;
    var grMember = new GlideRecord('sys_user_grmember');
    grMember.addEncodedQuery(query);
    grMember.query();
    if (!grMember.next()) {
        grMember.newRecord();
        grMember.group = groupId;
        grMember.user = userManager;
        grMember.insert();
    }
}
1 REPLY 1

Hayo Lubbers
Kilo Sage

Hi @Community Alums ,

 

If you have inherited roles or child groups, it makes things more complicated.

 

Please try with the GlideUser() to check the role/group : https://developer.servicenow.com/dev.do#!/reference/api/washingtondc/server_legacy/GUserAPI#GUser-is...

It will return true/false if a user is member of a group or has the specified role.

 

Basic example : 

function getUserInfo(userId){
	var user = gs.getUser().getUserByID(userId); // fetch a different user using the user_name or sys_id field
	gs.info(user.getFirstName());
	gs.info(user.isMemberOf(­'Service Desk'))
	gs.info(user.hasRole(­'itil'))
}

getUserInfo('andrew.jackson');
getUserInfo('beth.anglin');