Script to add users to a group by username

Jon Collins2
Kilo Sage

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!

1 ACCEPTED SOLUTION

Sandeep Rajput
Tera Patron
Tera Patron

@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.

 

View solution in original post

4 REPLIES 4

Sandeep Rajput
Tera Patron
Tera Patron

@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.

 

@Sandeep Rajput, thank you! This is exactly what I needed. 

Slava Savitsky
Giga Sage

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.