- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-04-2024 10:11 PM
Hi,
Please find below interesting use case which is asked in one of interview.
Use Case : Remove inactive users from groups and if user is part of more than 5 groups then do not remove from the group and print user name and email. write a script for it.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-04-2024 10:48 PM
Hi @NishantDhole ,
You're correct.
Here's the revised script:
// Define the query for inactive users
var inactiveUsers = new GlideRecord('sys_user');
inactiveUsers.addQuery('active', false);
inactiveUsers.query();
while (inactiveUsers.next()) {
var userSysId = inactiveUsers.sys_id;
var userGroupMembership = new GlideRecord('sys_user_grmember');
userGroupMembership.addQuery('user', userSysId);
userGroupMembership.query();
var groupCount = 0;
while (userGroupMembership.next()) {
groupCount++;
}
if (groupCount >= 5) {
// If the user is part of 5 or more groups, print their details
gs.print('User with 5 or more groups: ' + inactiveUsers.user_name + ' (' + inactiveUsers.email + ')');
} else {
// If the user is part of fewer than 5 groups, remove them from all groups
userGroupMembership.query(); // Re-query to get the records again
while (userGroupMembership.next()) {
userGroupMembership.deleteRecord();
}
}
}
If you find my response helpful, please consider marking it as the 'Accepted Solution' and giving it a 'Helpful' rating. Your feedback not only supports the community but also encourages me to continue providing valuable assistance.
Thanks,
Amitoj Wadhera
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-05-2024 01:03 AM
Hi @NishantDhole ,
for above use case use below script,
// Get all inactive users
var grUser = new GlideRecord('sys_user');
grUser.addQuery('active', false);
grUser.query();
while (grUser.next()) {
// Get the number of groups the user is a member of
var grUserGrMember = new GlideRecord('sys_user_grmember');
grUserGrMember.addQuery('user', grUser.sys_id);
grUserGrMember.query();
var groupCount = grUserGrMember.getRowCount();
// If the user is a member of less than 5 groups, remove them from their groups
if (groupCount < 5) {
grUserGrMember.query();
while (grUserGrMember.next()) {
grUserGrMember.deleteRecord();
gs.print("User " + grUser.name + " (" + grUser.email + ") was removed from group " + grUserGrMember.group.name);
}
} else {
// If the user is a member of more than 5 groups, print their name and email
gs.print("User " + grUser.name + " (" + grUser.email + ") is a member of more than 5 groups and will not be removed.");
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-05-2024 02:29 AM
Please find below code for above scenario :
// Get all inactive users
var grUser = new GlideRecord('sys_user');
grUser.addQuery('active', false);
grUser.query();
while (grUser.next()) {
// Get the number of groups the user is a member of
var grUserGrMember = new GlideRecord('sys_user_grmember');
grUserGrMember.addQuery('user', grUser.sys_id);
grUserGrMember.query();
var groupCount = grUserGrMember.getRowCount();
// If the user is a member of less than 5 groups, remove them from their groups
if (groupCount < 5) {
grUserGrMember.query();
while (grUserGrMember.next()) {
grUserGrMember.deleteRecord();
gs.print("User " + grUser.name + " (" + grUser.email + ") was removed from group " + grUserGrMember.group.name);
}
} else {
// If the user is a member of more than 5 groups, print their name and email
gs.print("User " + grUser.name + " (" + grUser.email + ") is a member of more than 5 groups and will not be removed.");
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-05-2024 01:03 AM
Hi @NishantDhole ,
for above use case use below script,
// Get all inactive users
var grUser = new GlideRecord('sys_user');
grUser.addQuery('active', false);
grUser.query();
while (grUser.next()) {
// Get the number of groups the user is a member of
var grUserGrMember = new GlideRecord('sys_user_grmember');
grUserGrMember.addQuery('user', grUser.sys_id);
grUserGrMember.query();
var groupCount = grUserGrMember.getRowCount();
// If the user is a member of less than 5 groups, remove them from their groups
if (groupCount < 5) {
grUserGrMember.query();
while (grUserGrMember.next()) {
grUserGrMember.deleteRecord();
gs.print("User " + grUser.name + " (" + grUser.email + ") was removed from group " + grUserGrMember.group.name);
}
} else {
// If the user is a member of more than 5 groups, print their name and email
gs.print("User " + grUser.name + " (" + grUser.email + ") is a member of more than 5 groups and will not be removed.");
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-05-2024 02:29 AM
Please find below code for above scenario :
// Get all inactive users
var grUser = new GlideRecord('sys_user');
grUser.addQuery('active', false);
grUser.query();
while (grUser.next()) {
// Get the number of groups the user is a member of
var grUserGrMember = new GlideRecord('sys_user_grmember');
grUserGrMember.addQuery('user', grUser.sys_id);
grUserGrMember.query();
var groupCount = grUserGrMember.getRowCount();
// If the user is a member of less than 5 groups, remove them from their groups
if (groupCount < 5) {
grUserGrMember.query();
while (grUserGrMember.next()) {
grUserGrMember.deleteRecord();
gs.print("User " + grUser.name + " (" + grUser.email + ") was removed from group " + grUserGrMember.group.name);
}
} else {
// If the user is a member of more than 5 groups, print their name and email
gs.print("User " + grUser.name + " (" + grUser.email + ") is a member of more than 5 groups and will not be removed.");
}
}