Remove role from multiple users

neethu4
Giga Expert

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

6 REPLIES 6

Manan Raval
Giga Expert

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

Prinesh Kumar S
Tera Contributor

 

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"); }