Avoid duplicate entries in sys_user_grmember table

ranabiswas
Giga Contributor

I wish to add an user to multiple groups via workflow, and I have been able to implement that, however if I select a group where the user is already a part of there the group is being inserted again for the 2nd time, and it continues, if I select the group afterwards as well. I wish to avoid duplicate entries in the sys_user_grmember table.

Following is the script that I am using to add the groups to the user. I'm using a run script for the same.

var arr = current.variables.group.toString();

var arr1 = arr.split(',');

var user = current.variables.user;

var i=0;

for(i=0;i<arr1.length;i++)

  {

              var members = new GlideRecord('sys_user_grmember');

              members.initialize();

              members.group = arr1[i];

              members.user = user;

            members.insert();

  }

Thanks in advance.

Regards,

Rana

1 ACCEPTED SOLUTION

snehabinani26
Tera Guru

var arr = current.variables.group.toString();


var arr1 = arr.split(',');


var user = current.variables.user;


var i=0;


for(i=0;i<arr1.length;i++)


  {


var count = 0;


var gr3 = new GlideRecord("sys_user_grmember");


  gr3.addQuery("group",arr[i]);


  gr3.addQuery("user",user);


  gr3.query();


  count = gr3.getRowCount();


  if(count == 0){


              var members = new GlideRecord('sys_user_grmember');


              members.initialize();


              members.group = arr1[i];


              members.user = user;


            members.insert();


  }


}


Highligted one is to check if user already exist in that group


Hope this helps you


View solution in original post

4 REPLIES 4

snehabinani26
Tera Guru

var arr = current.variables.group.toString();


var arr1 = arr.split(',');


var user = current.variables.user;


var i=0;


for(i=0;i<arr1.length;i++)


  {


var count = 0;


var gr3 = new GlideRecord("sys_user_grmember");


  gr3.addQuery("group",arr[i]);


  gr3.addQuery("user",user);


  gr3.query();


  count = gr3.getRowCount();


  if(count == 0){


              var members = new GlideRecord('sys_user_grmember');


              members.initialize();


              members.group = arr1[i];


              members.user = user;


            members.insert();


  }


}


Highligted one is to check if user already exist in that group


Hope this helps you


Hi Sneha,



Your modification worked fine. The issue got fixed.



Thank you.


gopi2203
Tera Expert

HI,


Use below script




var arr = current.variables.group.toString();


var arr1 = arr.split(',');


var user = current.variables.user;


var i=0;


for(i=0;i<arr1.length;i++)


  {


              var grpmem=new GlideRecord('sys_user_grmember');


              grpmem.addQuery('user', user);


              grpmem.addQuery('group',arr1[i]);


              grpmem.query();


            if(grpmem.getRowCount()<1){


              var members = new GlideRecord('sys_user_grmember');


              members.initialize();


              members.group = arr1[i];


              members.user = user;


            members.insert();


                  }


  }



thanks


Hi Gobinathan,



Thanks for your reply.