Remove role from multiple users
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-28-2018 04:03 AM
Hi All,
I need to remove specific role from 3k users.I have email id as unique field.
Can i use transform map to delete the user role table record?
If i use fix script\Bg script then it is difficult to filter user with 3k email id.
Please let me know your suggestions.
Thanks,
Neethu
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-28-2018 05:17 AM
Hi Neethu,
If you have an excel sheet containing emails of the users of whom you want to remove the particular role, then this can be a possible way to do it,
1) Create the import set table using data load. Do not run the transform map.
2)In the background script, you can write the following code.
var dataUsers = new GlideRecord('import_set_table');
dataUsers.query();
while(dataUsers.next())
{
var userRole = new GlideRecord('sys_user_has_role');
userRole.addQuery('role','role_name');
userRole.addQuery('user.email',dataUsers.getValue('import_set_email_field'));
userRole.query();
if(userRole.next())
{
userRole.deleteRecord();
}
}
Regards,
Manan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-10-2024 02:50 PM
var roleName = 'it_project_user';
var cutoffDate = '2024-04-01';
var roleGR = new GlideRecord('sys_user_role');
roleGR.addQuery('name', roleName);
roleGR.query();
if (roleGR.next()) {
var roleID = roleGR.sys_id;
var userRoleGR = new GlideRecord('sys_user_has_role');
userRoleGR.addQuery('role', roleID);
userRoleGR.addQuery('user.active', true);
userRoleGR.addQuery('user.last_login_time', '<', gs.dateGenerate(cutoffDate, '00:00:00'));
userRoleGR.query();
var affectedCount = 0;
while (userRoleGR.next()) {
var userName = userRoleGR.user.getDisplayValue();
gs.print("Removing role '" + roleName + "' from user: " + userName);
// Log the change
gs.logInfo("Removing role '" + roleName + "' from user: " + userName + " (Last login: " + userRoleGR.user.last_login_time + ")");
// Uncomment the next line to actually delete the role assignment
userRoleGR.deleteRecord();
affectedCount++;
}
gs.print("Removed role '" + roleName + "' from " + affectedCount + " users (Last login before " + cutoffDate + ")");
} else {
gs.print("Role '" + roleName + "' not found");
}
var roleName = 'it_project_user'; var cutoffDate = '2024-04-01'; var roleGR = new GlideRecord('sys_user_role'); roleGR.addQuery('name', roleName); roleGR.query(); if (roleGR.next()) { var roleID = roleGR.sys_id; var userRoleGR = new GlideRecord('sys_user_has_role'); userRoleGR.addQuery('role', roleID); userRoleGR.addQuery('user.active', true); userRoleGR.addQuery('user.last_login_time', '<', gs.dateGenerate(cutoffDate, '00:00:00')); userRoleGR.query(); var affectedCount = 0; while (userRoleGR.next()) { var userName = userRoleGR.user.getDisplayValue(); gs.print("Removing role '" + roleName + "' from user: " + userName); // Log the change gs.logInfo("Removing role '" + roleName + "' from user: " + userName + " (Last login: " + userRoleGR.user.last_login_time + ")"); // Uncomment the next line to actually delete the role assignment // userRoleGR.deleteRecord(); affectedCount++; } gs.print("Removed role '" + roleName + "' from " + affectedCount + " users (Last login before " + cutoffDate + ")"); } else { gs.print("Role '" + roleName + "' not found"); }