Background script
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-08-2024 03:14 AM - edited 08-08-2024 03:46 AM
Hi All,
I am trying to build a script to find all the ‘Group’ managers and validate if they are part of another group ‘ITSM-Managers’. And want to retrieve the list of ‘Group’ managers who are not present in the 'ITSM-Managers’ group .
Please assist on how to go about this .
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-08-2024 04:01 AM
Something like this?
var nonITSMManagers = [];
var groupGR = new GlideRecord('sys_user_group');
groupGR.query();
while (groupGR.next()) {
var managerSysId = groupGR.getValue('manager');
if (managerSysId) {
var itsmGroupMemberGR = new GlideRecord('sys_user_grmember');
itsmGroupMemberGR.addQuery('group.name', 'ITSM-Managers'); // or use the sys_id of the group to be sure
itsmGroupMemberGR.addQuery('user', managerSysId);
itsmGroupMemberGR.query();
if (!itsmGroupMemberGR.hasNext()) {
nonITSMManagers.push(managerSysId);
}
}
}
if (nonITSMManagers.length > 0) {
gs.info('Managers not in ITSM-Managers group:');
var nonITSMManagerGR = new GlideRecord('sys_user');
nonITSMManagerGR.addQuery('sys_id', 'IN', nonITSMManagers.join(','));
nonITSMManagerGR.query();
while (nonITSMManagerGR.next()) {
gs.info('Manager: ' + nonITSMManagerGR.getValue('name') + ' (Sys ID: ' + nonITSMManagerGR.getValue('sys_id') + ')');
}
} else {
gs.info('All group managers are part of the ITSM-Managers group.');
}
Please mark any helpful or correct solutions as such. That helps others find their solutions.
Mark
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-08-2024 04:15 AM
Hi @JP6,
Please try below script:
(function() {
// Define the target group name
var targetGroupName = 'ITSM-Managers';
// Retrieve the Sys ID of the 'ITSM-Managers' group
var targetGroup = new GlideRecord('sys_user_group');
targetGroup.addQuery('name', targetGroupName);
targetGroup.query();
if (!targetGroup.next()) {
gs.info('The group "' + targetGroupName + '" does not exist.');
return;
}
var targetGroupId = targetGroup.sys_id;
// Retrieve all groups and their managers
var groupGR = new GlideRecord('sys_user_group');
groupGR.query();
while (groupGR.next()) {
var groupName = groupGR.name;
var managerSysId = groupGR.manager;
// Check if the group has a manager
if (managerSysId) {
var managerGR = new GlideRecord('sys_user');
if (managerGR.get(managerSysId)) {
// Check if the manager is a member of the target group
var userGR = new GlideRecord('sys_user_grmember');
userGR.addQuery('group', targetGroupId);
userGR.addQuery('user', managerSysId);
userGR.query();
if (!userGR.next()) {
// If the manager is not a member of the target group
gs.info('Manager ' + managerGR.name + ' (Sys ID: ' + managerSysId + ') from group "' + groupName + '" is NOT a member of the "' + targetGroupName + '" group.');
}
}
}
}
})();
Please accept my solution if it works for you and thumps up.
Thanks
Jitendra

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-08-2024 04:15 AM
Hi @JP6 ,
Here u go,
//get ALL group members
var out = [];
var grManagers = new GlideRecord("sys_user_group");
grManagers.addEncodedQuery("manager!=NULL")
grManagers.query();
while (grManagers.next()) {
//gs.info(grManagers.getValue("manager"))
//loop through IT Managers group members to check if they are part of or not
var member = new GlideRecord("sys_user_grmember");
member.addQuery("group", "c38f00f4530360100999ddeeff7b1298"); //replace sys_id of the ITSM-Managers group
member.query();
while (member.next()) {
//gs.info(grManagers.getValue("sys_id"))
if (member.getValue("user") == grManagers.getValue("manager")) {
out.push(member.getDisplayValue("user"));
}
}
}
gs.info("Managers who are in the ITSM-Managers group::"+ " "+out);
Output:
Hope this helps!!
Thank you,
Hemanth
Certified Technical Architect (CTA), ServiceNow MVP 2024, 2025

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-08-2024 04:37 AM
Hi,
Here is short script for obtaining the list of user sysIds which are managers of groups, but not part of ITSM-Managers.
var itGroupSysId = ''; //add here your it managers group sys id
gs.print(getNonItManagers());
function getNonItManagers() {
return new global.GlideQuery('sys_user_grmember')
.where('group', itGroupSysId)
.select('user')
.map(function (grMember){ return grMember.user; })
.flatMap(function (userId){
return new global.GlideQuery('sys_user_group')
.where('active', true)
.select('manager')
.map(function (group) {
if(userId != group.manager){
return group.manager;
}
});
})
.reduce(function (arr, e){
if(arr.indexOf(e) === -1){
arr.push(e);
}
return arr;
}, []);
}
Please mark my response as helpful or correct if this solved your issue.
Kind regards,
Ionut Carp