- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-12-2018 01:30 AM
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
Solved! Go to Solution.
- Labels:
-
Service Catalog
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-12-2018 01:57 AM
Hi Arjun,
Can you try the following script.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-07-2019 03:16 PM
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);