Query "sys_user_grmember" table for user in specific group

Arjun Chamaraj
Tera Contributor

I need to access "sys_user_grmember" table for user being part of a specific group, if so return the user and match requested_for user.

I'm having problem when a user is part of multiple groups, then the script only checks for first group and returns false.

need help for a recursive search and return true if he is part of mentioned group.

*********************************************************************************************

answer = ifScript();

function ifScript() {

var usr=current.variables.requested_for;
var gr = new GlideRecord('sys_user_grmember');
gr.addQuery('user', usr);
gr.query();
while(gr.next())
{
var director = gr.u_director;
gs.log("the Group name" + gr.getDisplayValue('group'));
gs.log("Is director true or false" + director );
if(gr.getDisplayValue('group') == 'Director Group' && director == 'true')

{

return 'yes';
}
return 'no';
}
}

 

Regards

Arjun

1 ACCEPTED SOLUTION

Community Alums
Not applicable

Hi Arjun,


Can you try the following script. 

answer = ifScript();

function ifScript() {
varusr=current.variables.requested_for; //Requsted for user
vargr=newGlideRecord('sys_user_grmember');
gr.addEncodedQuery('user='+usr+'^group.name=Director Group');
gr.query();
if (gr.next()) {
return'yes';
}
return'no';
}
 
Please mark the answer helpful or correct based on the impact of the answer.
 
Thanks
Ishan Parikh

View solution in original post

5 REPLIES 5

Obah
Tera Contributor

Hi 

Business Rule *before*

This works perfect for preventing duplicate record entries to the Group Member table (sys_user_grmember)

Remember to add a filter if you are targeting ONLY a specific group.

(function executeRule(current, previous /*null when async*/) {
       // Add your code here

 var rec = new GlideRecord('sys_user_grmember');
rec.addEncodedQuery('group.name=your_groupname^active=true');//Action to apply only to members of this group
rec.addQuery('user',current.user);
rec.query();
if(rec.getRowCount() == 1){
gs.addErrorMessage(current.user.getDisplayValue() + " is already high risk asset owner");
current.setAbortAction(true);

}


})(current, previous);