- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-12-2023 11:48 AM
Hello Community members,
I want to create a BR (client callable) for a custom dynamic filter option 'Not one of my Group', which displays only those records of which loggedin user is NOT a member of.
For this I tried below useful article (refer URL-
but not getting the desired results.
Requesting to please help with the BR scripting part to satisfy the above explained filter condition.
Will mark the desired response as helpful & accepted!
Thanks in Advance.
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-12-2023 11:54 PM
Okay, so you want it to be available as a dynamic filter,
Let's make some minor changes, to make it work, see example below.
Script include:
var MembershipUtil = Class.create();
MembershipUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
notMyGroups : function (){
var notMemberOf = [];
var groupGR = new GlideRecord('sys_user_group');
groupGR.query();
while (groupGR.next()){
var memberGR = new GlideRecord('sys_user_grmember');
memberGR.addEncodedQuery('user=' + gs.getUserID() + '^group=' + groupGR.getUniqueValue());
memberGR.query();
if (!memberGR.hasNext()){
notMemberOf.push(groupGR.getUniqueValue());
}
}
return notMemberOf; // returns sysID of all groups which logged in user is not member of
},
type: 'MembershipUtil'
});
Dynamic filter:

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-12-2023 12:49 PM
Hi,
Try something like this as a script include:
var MembershipUtil = Class.create();
MembershipUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
notMemberOf : function (userID){
var notMemberOf = [];
var groupGR = new GlideRecord('sys_user_group');
groupGR.query();
while (groupGR.next()){
var memberGR = new GlideRecord('sys_user_grmember');
memberGR.addEncodedQuery('user=' + userID + '^group=' + groupGR.getUniqueValue());
memberGR.query();
if (!memberGR.hasNext()){
notMemberOf.push(groupGR.getUniqueValue());
}
}
return notMemberOf.join(','); // returns sysID of all groups which this user is not member of
},
type: 'MembershipUtil'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-12-2023 09:27 PM
@OlaN, Sir or anyone can please check what's wrong here the script while testing on reports not working to provide either group names (Dispalys- 'All>Assignment group is (empty)') nor their associated records of which logged in user are not member of.
-Script include: (Client callable- true)
var MembershipUtil = Class.create();
MembershipUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
notMemberOf: function(userID) {
var notMemberOf = [];
var groupGR = new GlideRecord('sys_user_group');
groupGR.query();
while (groupGR.next()) {
var memberGR = new GlideRecord('sys_user_grmember');
memberGR.addEncodedQuery('user=' + userID + '^group=' + groupGR.getUniqueValue());
memberGR.query();
if (!memberGR.hasNext()) {
notMemberOf.push(groupGR.getUniqueValue());
}
}
return notMemberOf.join(','); // returns sysID of all groups which this user is not member of
},
type: 'MembershipUtil'
});
-Dynamic filter Option to call above created script include
- Result:-
I checked with impersonating users also, and it does not provide any records for any users who are not a member of groups.
Requesting to please check & provide help.
Thanks in advance

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-12-2023 11:54 PM
Okay, so you want it to be available as a dynamic filter,
Let's make some minor changes, to make it work, see example below.
Script include:
var MembershipUtil = Class.create();
MembershipUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
notMyGroups : function (){
var notMemberOf = [];
var groupGR = new GlideRecord('sys_user_group');
groupGR.query();
while (groupGR.next()){
var memberGR = new GlideRecord('sys_user_grmember');
memberGR.addEncodedQuery('user=' + gs.getUserID() + '^group=' + groupGR.getUniqueValue());
memberGR.query();
if (!memberGR.hasNext()){
notMemberOf.push(groupGR.getUniqueValue());
}
}
return notMemberOf; // returns sysID of all groups which logged in user is not member of
},
type: 'MembershipUtil'
});
Dynamic filter:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-13-2023 12:46 AM
Dear @OlaN sir thank you for getting this sorted, just a question I observe the changes but did not clearly understand why you made the changes as I am new to scripting, I marked your answer Helpful & accepted, if you can please help me understand why you make certain changes so results appeared, & where we use the earlier script (which you shared as your 1st response)