How to make catalog item visible to the particular group and also users who do not have managers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
5 hours ago
I have requirement to make the catalog item visible only based on below conditions
1. User should be member of "XYZ" group AND
2. User should not have manager assigned.
How to do this? Anyone can help me on this
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
5 hours ago
You need to create the script this and then identify the user based on the criteria.
something:
function checkUserConditions(userSysId) { var userSysId = userSysId || gs.getUserID(); // Default to current user // Condition 1: Check if user is a member of "XYZ" group var groupMember = new GlideRecord('sys_user_grmember'); groupMember.addQuery('user', userSysId); groupMember.addQuery('group.name', 'XYZ'); groupMember.query(); var isInGroup = groupMember.hasNext(); // Condition 2: Check if user has no manager assigned var user = new GlideRecord('sys_user'); user.get(userSysId); var hasNoManager = user.isValidRecord() && user.getValue('manager') == null || user.getValue('manager') == ''; return isInGroup && hasNoManager; } // Example usage - can be called from Business Rule, Script Include, etc. var result = checkUserConditions(gs.getUserID()); gs.info('User meets conditions: ' + result);
Regards
Dr. Atul G. - Learn N Grow Together
ServiceNow Techno - Functional Trainer
LinkedIn: https://www.linkedin.com/in/dratulgrover
YouTube: https://www.youtube.com/@LearnNGrowTogetherwithAtulG
Topmate: https://topmate.io/dratulgrover [ Connect for 1-1 Session]
****************************************************************************************************************
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
5 hours ago
(function (/*GlideRecord*/ user) {
// Condition 1: Check if user is a member of "XYZ" group
var groupMember = new GlideRecord('sys_user_grmember');
groupMember.addQuery('user', user.sys_id);
groupMember.addQuery('group.name', 'XYZ'); // Replace with your exact group name
groupMember.setLimit(1);
groupMember.query();
var isInXYZGroup = groupMember.hasNext();
// Condition 2: Check if user has NO manager assigned
var hasNoManager = user.getValue('manager') === null || user.getValue('manager') === '';
// Both conditions must be true for the item to be visible
return isInXYZGroup && hasNoManager;
})(user);
Regards
Dr. Atul G. - Learn N Grow Together
ServiceNow Techno - Functional Trainer
LinkedIn: https://www.linkedin.com/in/dratulgrover
YouTube: https://www.youtube.com/@LearnNGrowTogetherwithAtulG
Topmate: https://topmate.io/dratulgrover [ Connect for 1-1 Session]
****************************************************************************************************************
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
5 hours ago
you can use User Criteria with script
Then add this in "Available For" related list on that item
1) visit that catalog item and click New in Related list for "Available For"
2) then create this below user criteria
Note: it's recommended to use user_id in user criteria script and not gs.getUser() etc. check below KB
user_id variable usage for user criteria
var user = user_id;
var memberRec = new GlideRecord('sys_user_grmember');
memberRec.addQuery('user', user);
memberRec.addQuery('group.name', 'XYZ'); // Exact group name
memberRec.query();
var inGroup = memberRec.hasNext();
// Check if user has no manager
var hasManager = !gs.nil(memberRec.user.manager.toString());
answer = inGroup && !hasManager;
💡 If my response helped, please mark it as correct ✅ and close the thread 🔒— this helps future readers find the solution faster! 🙏
Ankur
✨ Certified Technical Architect || ✨ 10x ServiceNow MVP || ✨ ServiceNow Community Leader
