Service Catalog - Create a Group and add members to the group through workflow

Akshata5
Tera Guru

Create a Group and add members(we should able add more than two users) to the group through workflow.

 

I am able to create group but unable to add members to that group. Can anybody help me with script.

 

var gr = new GlideRecord('sys_user_group');
gr.initialize();
gr.name = current.variables.user_group_name;
gr.insert();

 

var userArr = user.toString().split(',');
for(var i=0; i<userArr.length; i++)
gr.approvers = current.variables.user_group_approvers;

var grmem = new GlideRecord('sys_user_grmember');

grmem.addQuery('user', userArr[i]);
grmem.addQuery('group', gr.name);

1 ACCEPTED SOLUTION

Peter Bodelier
Giga Sage

Hi @Akshata5 

 

Try this:

 

// Get the group name from the catalog item
var groupName = current.variables.user_group_name;

// Create the group
var group = new GlideRecord('sys_user_group');
group.name = groupName;
group.description = 'Group created from catalog item';
var groupID = group.insert();

// Get the group members from the catalog item
var groupMembers = current.variables.user_group_approvers.split(',');

// Add the group members to the group
for (var i = 0; i < groupMembers.length; i++) {
  var groupMember = new GlideRecord('sys_user_grmember');
  groupMember.user = groupMembers[i];
  groupMember.group = groupID;
  groupMember.insert();
}

Help others to find a correct solution by marking the appropriate response as accepted solution and helpful.

View solution in original post

8 REPLIES 8

Anurag Tripathi
Mega Patron
Mega Patron

Please see my comments on the code below

 

var gr = new GlideRecord('sys_user_group');
gr.initialize();
gr.name = current.variables.user_group_name;

var grp_id = gr.insert();

 
//gr.approvers = current.variables.user_group_approvers; //Not sure what you are trying to do in thsi line. ythere is no oob field calle dapprovers on group or group member

var userArr = user.toString().split(','); //What is user ? this libe wil not work unless you define user and take its value form a variable
for(var i=0; i<userArr.length; i++)
{

var grmem = new GlideRecord('sys_user_grmember');
grmem.initialize();
grmem.addQuery('user', userArr[i]);
grmem.addQuery('group', grp_id );
grmem.insert();
}

 

-Anurag

Peter Bodelier
Giga Sage

Hi @Akshata5 

 

Try this:

 

// Get the group name from the catalog item
var groupName = current.variables.user_group_name;

// Create the group
var group = new GlideRecord('sys_user_group');
group.name = groupName;
group.description = 'Group created from catalog item';
var groupID = group.insert();

// Get the group members from the catalog item
var groupMembers = current.variables.user_group_approvers.split(',');

// Add the group members to the group
for (var i = 0; i < groupMembers.length; i++) {
  var groupMember = new GlideRecord('sys_user_grmember');
  groupMember.user = groupMembers[i];
  groupMember.group = groupID;
  groupMember.insert();
}

Help others to find a correct solution by marking the appropriate response as accepted solution and helpful.

I just had to add .tostring() in below line of code to work. Thank you so much for your help.

 

var groupMembers = current.variables.user_group_approvers.toString().split(',');

Hi @Akshata5,

 

That would mean that it was already an array. So I guess, you could do without .toString().split(',') completely 🙂


Help others to find a correct solution by marking the appropriate response as accepted solution and helpful.