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

Vishal Birajdar
Giga Sage

Hi @Akshata5 

 

Can you try below code ...!!!

 

/*1. Create group */
var gr = new GlideRecord('sys_user_group');
gr.initialize();
gr.name = current.variables.user_group_name;
var grSysId = gr.insert(); //get the sys_id of newly created group in variable

var userArr = user.toString().split(',');  // assuming you are getting sys_id's here

for(var i=0; i<userArr.length; i++) {
/*Check if user is member of group*/
var grmem = new GlideRecord('sys_user_grmember');
grmem.addEncodedQuery('user=' + userArr[i] + '^group=' + grSysId);
grmem.query();

if(!grmem.next()){
   /*Add user to group */
   var grAddMem = new GlideRecord('sys_user_grmember');
   grAddMem.initialize();
   grAddMem.setValue('group',grSysId);
   grAddMem.setValue('user',userArr[i]);
   grAddMem.insert();

}else {
    //user is laready member of group
}


}
Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

Thank you. I tried below. Now it even stopped creating group.

 

var gr = new GlideRecord('sys_user_group');
gr.initialize();
gr.name = current.variables.user_group_name;
var grSysId = gr.insert();
var userArr = current.variables.user_group_approvers.toString().split(',');

for(var i=0; i<userArr.length; i++) {
/*Check if user is member of group*/
var grmem = new GlideRecord('sys_user_grmember');
grmem.addEncodedQuery('user=' + userArr[i] + '^group=' + grSysId);
grmem.query();

if(!grmem.next()){
/*Add user to group */
var grAddMem = new GlideRecord('sys_user_grmember');
grAddMem.initialize();
grAddMem.setValue('group',grSysId);
grAddMem.setValue('user',userArr[i]);
grAddMem.insert();

}

 

 

Hi @Akshata5 

 

Strange...!!

Can you add some logs and check....!!

 

For me it's working...

 

VishalBirajdar_0-1698052948554.png

 

VishalBirajdar_1-1698052979802.png

 

 

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

Danish Bhairag2
Tera Sage
Tera Sage

Hi @Akshata5 ,

 

In order to add Members to the Group via script u need to create a script on "sys_user_grmember" table.

 

Sharing a sample script with u. Kindly modify it as per requirement.

var gr = new GlideRecord('sys_user_grmember');
gr.initialize();
gr.group = "<Group SYs ID>";//Please enter Group Sys ID
gr.user = "<User Sys ID>"; //Please enter User Sys ID
gr.insert();

 

Thanks,

Danish