- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-13-2016 09:53 AM
i am trying to query in a business rule to see if the opened by user of a change is a part of a group. i cant seem to use current.opened_by.isMemberOf()
so i am querying the group table but i am not returning any results
var usr = current.opened_by.getDisplayValue();
var gr = new GlideRecord('sys_user_grmember');
gr.addQuery('group','group name');
gr.addQuery('user',usr);
gr.query();
while (gr.next()){
gs.log('query ran');
if (gr.user != null){
gs.log('query found' + gr.user);
//do processing
}else{
gs.log('no user found')
}
}
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-13-2016 10:42 AM
var gr2 = new GlideRecord('sys_user_group');
gr2.addQuery('name', 'Desktop Support');
gr2.query();
while (gr2.next()){
var groupsys = gr2.sys_id;
gs.log('The GroupSys ' +groupsys);
}
var gr = new GlideRecord('sys_user_grmember');
gr.addQuery('group', groupsys);
gr.addQuery('user',current.opened_by);
gr.query();
if (gr.next()) {
gs.log('query ran');
gs.log('This person is ' + gr.user + ' is a member');
}
else
{
gs.log('the query still ran');
gs.log('No user');
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-13-2016 10:08 AM
i would rather use the isMemberOf() method but it seems its only available for gs. current logged in user objects
such as gs.getUser().isMemberOf('group name')
i would rather not use sysId's
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-13-2016 10:13 AM
Ok.
Has the above script works ?
Just use the sys_id in
gr.addQuery('group','sys_id of the group you want');
statement and run.
Thanks,
Mihir
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-13-2016 10:19 AM
The user object is ServiceNow's internal representation of the currently logged in user. (Getting a User Object - ServiceNow Wiki ) So it looks like you will have to query the sys_user_group table first to get the sys_id of the group by it's name (as you prefer to reference it). Then use the sys_id of the group in your query of the sys_user_grmember table to find a match along iwth the sys_id of the user you are looking up.
So just query the Group table first to get the Sys_ID of the group and then use that in your query to determine if they are a member of that group:
var gr = new GlideRecord('sys_user_group');
gr.addQuery('name', 'Desktop Support');
gr.query();
while (gr.next()){
var groupsys = gr.sys_id;
gs.log(groupsys);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-13-2016 10:31 AM
ok so i am getting somewhere now... Why wouldnt i get 'no user' if the user wasnt in the group
var gr2 = new GlideRecord('sys_user_group');
gr2.addQuery('name', 'Help Desk');
gr2.query();
while (gr2.next()){
var groupsys = gr2.sys_id;
gs.log('The GroupSys' +groupsys);
}
var gr = new GlideRecord('sys_user_grmember'); | ||
gr.addQuery('group','groupsys'); | ||
gr.addQuery('user',current.opened_by); | ||
gr.query(); | ||
while (gr.next()){ | ||
gs.log('query ran'); | ||
if (gr.user != null){ | ||
gs.log('This person is ' + gr.user); | ||
}else {gs.log('No user'); | ||
} | ||
} |
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-13-2016 10:33 AM
Take the quotes away from 'group_sys' since it's a variable in the line:
- gr.addQuery('group','groupsys');