- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-12-2023 11:22 PM
Dear Community Members,
Can anyone please check what's wrong here, during testing on reports not getting desired results to provide group names as filter condition (here dispalys- 'All>Assignment group is (empty)'- Screenshot attached) & their associated records of which logged-in user are NOT member of those groups.
-Script include: (Client callable- true); Accessible from- All Application Scope; ACL with itil role created while saving (Screenshot attached below this code)
var MemberUtil = Class.create();
MemberUtil.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: 'MemberUtil'
});
-Dynamic filter Option to call above-created script include:-
- Result:-
I checked with impersonating users also, but it does not provide any records for logged-in (impersonated) user who he/she is not member of group(s).
Also checked URL-@https://www.servicenow.com/community/itsm-forum/dynamic-filter-using-script-include-as-reference/m-p/79949, to properly call the script include to dynamic filter option but still no desired results.
Requesting community help to resolve this.
Thanks in advance
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-13-2023 12:12 AM
write below script
var MemberUtil = Class.create();
MemberUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
notMemberOf: function() {
var notMemberOf = [];
var userID = gs.getUserID();
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: 'MemberUtil'
});
Bharath Chintala
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-12-2023 11:31 PM
Hi @rishabh31 ,
I think you need to mention userID in dynamic filter options script which is required in script include.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-13-2023 12:12 AM
write below script
var MemberUtil = Class.create();
MemberUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
notMemberOf: function() {
var notMemberOf = [];
var userID = gs.getUserID();
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: 'MemberUtil'
});
Bharath Chintala