
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2024 06:16 AM
Hi Folks,
Often, we need to bulk add large groups of users to specific groups in ServiceNow. Right now, our options are manually adding them to groups or setting up a data source and using a .csv.
I know the group sys_id, but typically, I am provided with usernames. Can someone help me write a script to bulk add users (by username) to group (by sys_id)?
Thanks in advance!
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2024 07:16 AM
@Jon Collins2 You can use the following script to add user in groups in bulk.
function addUsersToGroups(userNameString, groupSysIDString) {
var userNameArray = userNameString.split(',');
var groupIDArray = groupSysIDString.split(',');
for (var i = 0; i < groupIDArray.length; i++) { //loop throgh groupSysIDArray
for (var j = 0; j < userNameArray.length; j++) { // loop through userNameArray
var glideUser = new GlideRecord('sys_user');
if (glideUser.get('user_name', userNameArray[j])) {
var glideGroupMember = new GlideRecord('sys_user_grmember');
glideGroupMember.initialize();
glideGroupMember.setValue('group', groupIDArray[i]);
glideGroupMember.setValue('user', glideUser.getValue('sys_id'));
gs.info('group ' + groupIDArray[i] + ' user ' + userNameArray[j]);
glideGroupMember.insert();
}
}
}
}
var userNameString = 'gita.doe,john.doe'; //Comma separated list of user ids
var groupSysIDString = 'aaccc971c0a8001500fe1ff4302de101,50dfab31475ea11092c98021336d4336'; //Comma sepatated list of group sys_ids
addUsersToGroups(userNameString, groupSysIDString);
In this script, you need to make changes on the following lines.
var userNameString = 'gita.doe,john.doe'; //Comma separated list of user ids
Here provide a comma separated list of user name strings
var groupSysIDString = 'aaccc971c0a8001500fe1ff4302de101,50dfab31475ea11092c98021336d4336'; //Comma sepatated list of group sys_ids
Here provide a comma separated list of group sys_ids.
Please mark the response accepted solution and correct if it manages to address your question.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2024 07:16 AM
@Jon Collins2 You can use the following script to add user in groups in bulk.
function addUsersToGroups(userNameString, groupSysIDString) {
var userNameArray = userNameString.split(',');
var groupIDArray = groupSysIDString.split(',');
for (var i = 0; i < groupIDArray.length; i++) { //loop throgh groupSysIDArray
for (var j = 0; j < userNameArray.length; j++) { // loop through userNameArray
var glideUser = new GlideRecord('sys_user');
if (glideUser.get('user_name', userNameArray[j])) {
var glideGroupMember = new GlideRecord('sys_user_grmember');
glideGroupMember.initialize();
glideGroupMember.setValue('group', groupIDArray[i]);
glideGroupMember.setValue('user', glideUser.getValue('sys_id'));
gs.info('group ' + groupIDArray[i] + ' user ' + userNameArray[j]);
glideGroupMember.insert();
}
}
}
}
var userNameString = 'gita.doe,john.doe'; //Comma separated list of user ids
var groupSysIDString = 'aaccc971c0a8001500fe1ff4302de101,50dfab31475ea11092c98021336d4336'; //Comma sepatated list of group sys_ids
addUsersToGroups(userNameString, groupSysIDString);
In this script, you need to make changes on the following lines.
var userNameString = 'gita.doe,john.doe'; //Comma separated list of user ids
Here provide a comma separated list of user name strings
var groupSysIDString = 'aaccc971c0a8001500fe1ff4302de101,50dfab31475ea11092c98021336d4336'; //Comma sepatated list of group sys_ids
Here provide a comma separated list of group sys_ids.
Please mark the response accepted solution and correct if it manages to address your question.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2024 10:47 AM
@Sandeep Rajput, thank you! This is exactly what I needed.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2024 10:25 AM - edited 06-14-2024 10:30 AM
Try this:
var users = ['alice', 'bob', 'charlie']; // list the login names of your users here
var group = 'f7f2f3bfc39d861064a2bbec050131dc'; // enter the sys_id of your target group here
for (var i = 0; i < users.length; i++) {
var membership = new GlideRecord("sys_user_grmember");
membership.addQuery('user.user_name', users[i]);
membership.addQuery('group', group);
membership.query();
if (!membership.hasNext()) {
membership.initialize();
membership.user = users[i];
membership.group = group;
membership.insert();
}
}
The script provided in the previous comment lacks a check for whether the user already has membership in the group, so it is going to generate errors if that is the case.
Blog: https://sys.properties | Telegram: https://t.me/sys_properties | LinkedIn: https://www.linkedin.com/in/slava-savitsky/

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2024 10:48 AM
@Slava Savitsky, thank you!