background script to copy members from one grp to other

kbanerje
Mega Guru

Hi,

I have two grps one newly created as permission type   grp(X) and another existing support type grp (Y).

The support type grp(Y) has 900 + users.   I need all the members of Y grp to be copied to X grp through background script.

Can any one help us with the background script for this?

1 ACCEPTED SOLUTION

Geoffrey2
ServiceNow Employee
ServiceNow Employee

var groupXid = 'sys_id_of_group_X';


var groupYid = 'sys_id_of_group_Y';


var newGr;


var gr = new GlideRecord('sys_user_grmember');


gr.addQuery('group', groupYid);


gr.query();


while (gr.next()) {


  newGr = new GlideRecord('sys_user_grmember');


  newGr.initialize();


  newGr.group = groupXid;


  newGr.user = gr.user;


  newGr.insert();


}


View solution in original post

5 REPLIES 5

above Script works great, except has a one small issue what if the member already exist in target / cop_to group (it will foce duplicate). Below script should address the issue



//sys_id of the group you are copying from  


var copy_from = '287ebd7da9fe198100f92cc8d1d2154e';




//sys_id of the group you are copying to  


var copy_to = '8cee8950db01320017c278eebf961993';




var grUser = new GlideRecord("sys_user_grmember");


grUser.addQuery("group", copy_from);


grUser.query();


while (grUser.next()) {


      gs.log("Members Identified: " + grUser.user);


      //Check if user already exist


      var grUserExist = new GlideRecord("sys_user_grmember");


      grUserExist.addQuery("user", grUser.user);


      grUserExist.addQuery("group", copy_to);


      grUserExist.query();


      if (!grUserExist.next()) {


              gs.log("Add Members: " + grUser.user);


              var rec = new GlideRecord('sys_user_grmember');


              rec.initialize();


              rec.group = copy_to;


              rec.user = grUser.user.sys_id;


              rec.insert();


      }


}