- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-11-2024 10:47 PM
Hello,
Facing error on the script of my schedule job the output of the script is all the user has include on removing the roles and that shouldn't be happen the output must only for the users with last login time 30 days ago, Help!
var roleNames = ['sn_incident_write', 'problem_coordinator']; // Define the roles want to remove
getUsers.addQuery('last_login_timeRELATIVELT@dayofweek@ago@30');
getUsers.query();
while (getUsers.next()) {
roleNames.forEach(function(roleName) {
// Query to get the sys_id of the role
var roleGr = new GlideRecord('sys_user_role');
roleGr.addQuery('name', roleName);
roleGr.query();
if (roleGr.next()) {
var userRoleGr = new GlideRecord('sys_user_has_role');
userRoleGr.addQuery('role', roleGr.sys_id) ||
userRoleGr.query();
while (userRoleGr.next()) {
// Delete the user’s role
userRoleGr.deleteRecord();
gs.info('Removed role ' + roleName + ' from user ' + userRoleGr.user.getDisplayValue());
}
} else {
gs.warn('Role ' + roleName + ' not found');
}
});
}
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-11-2024 10:56 PM
Hi @Community Alums
var roleNames = ['sn_incident_write', 'problem_coordinator'];
var getUsers = new GlideRecord('sys_user');
getUsers.addQuery('last_login', '<=', gs.beginningOfLast30Days());
getUsers.query();
while (getUsers.next()) {
roleNames.forEach(function(roleName) {
var roleGr = new GlideRecord('sys_user_role');
roleGr.addQuery('name', roleName);
roleGr.query();
if (roleGr.next()) {
var userRoleGr = new GlideRecord('sys_user_has_role');
userRoleGr.addQuery('role', roleGr.sys_id);
userRoleGr.addQuery('user', getUsers.sys_id);
userRoleGr.query();
while (userRoleGr.next()) {
userRoleGr.deleteRecord();
}
Can you try above? Have used last_login instead of last_login_time.
Regards,
Amit
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-11-2024 11:18 PM
Hi @Community Alums ,
please try with below script;-
var roleNames = ['sn_incident_write', 'problem_coordinator'];
var getUsers = new GlideRecord('sys_user');
getUsers.addQuery('last_login', '<=', gs.beginningOfLast30Days());
getUsers.query();
while (getUsers.next()) {
roleNames.forEach(function(roleName) {
var roleGr = new GlideRecord('sys_user_role');
roleGr.addQuery('name', roleName);
roleGr.query();
if (roleGr.next()) {
var userRoleGr = new GlideRecord('sys_user_has_role');
userRoleGr.addQuery('role', roleGr.sys_id);
userRoleGr.addQuery('user', getUsers.sys_id);
userRoleGr.query();
while (userRoleGr.next()) {
userRoleGr.deleteRecord();
}
}
});
}
If my answer has helped with your question, please mark my answer as accepted solution and give a thumb up.
Regards,
Ranjit
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-11-2024 10:56 PM
Hi @Community Alums
var roleNames = ['sn_incident_write', 'problem_coordinator'];
var getUsers = new GlideRecord('sys_user');
getUsers.addQuery('last_login', '<=', gs.beginningOfLast30Days());
getUsers.query();
while (getUsers.next()) {
roleNames.forEach(function(roleName) {
var roleGr = new GlideRecord('sys_user_role');
roleGr.addQuery('name', roleName);
roleGr.query();
if (roleGr.next()) {
var userRoleGr = new GlideRecord('sys_user_has_role');
userRoleGr.addQuery('role', roleGr.sys_id);
userRoleGr.addQuery('user', getUsers.sys_id);
userRoleGr.query();
while (userRoleGr.next()) {
userRoleGr.deleteRecord();
}
Can you try above? Have used last_login instead of last_login_time.
Regards,
Amit
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-11-2024 11:18 PM
Hi @Community Alums ,
please try with below script;-
var roleNames = ['sn_incident_write', 'problem_coordinator'];
var getUsers = new GlideRecord('sys_user');
getUsers.addQuery('last_login', '<=', gs.beginningOfLast30Days());
getUsers.query();
while (getUsers.next()) {
roleNames.forEach(function(roleName) {
var roleGr = new GlideRecord('sys_user_role');
roleGr.addQuery('name', roleName);
roleGr.query();
if (roleGr.next()) {
var userRoleGr = new GlideRecord('sys_user_has_role');
userRoleGr.addQuery('role', roleGr.sys_id);
userRoleGr.addQuery('user', getUsers.sys_id);
userRoleGr.query();
while (userRoleGr.next()) {
userRoleGr.deleteRecord();
}
}
});
}
If my answer has helped with your question, please mark my answer as accepted solution and give a thumb up.
Regards,
Ranjit