|
| 1 | +///This is a Scheduled Job Script to be added in "Run this script" |
| 2 | +//replace the email in line 56- 'email.setFrom('xyz@service-now.com');' |
| 3 | +//replace the property name in line 44 'var recipientList = gs.getProperty('glide.xyz.admin.email.recipients');' |
| 4 | + |
| 5 | +var emailBody = 'Daily Inactive User Group/Role/Task Clean-up Completed: \n<br><br>'; |
| 6 | + |
| 7 | +//REMOVE INACTIVE USERS FROM GROUPS |
| 8 | +var queryString = "user.active=false^user.web_service_access_only=false^user.sourceSTARTSWITHldap:"; //query to find inactive members belonging to groups and ignores any users with "web service access only" = TRUE. |
| 9 | +var recGrp = new GlideRecord('sys_user_grmember'); //searches the User Group Member table |
| 10 | +recGrp.addEncodedQuery(queryString); |
| 11 | +recGrp.query(); |
| 12 | +while (recGrp.next()) { |
| 13 | + emailBody += 'Inactive User, ' + recGrp.user.getDisplayValue() + ', member of Group: ' + recGrp.group.getDisplayValue() + ' was removed from Group.\n<br>'; |
| 14 | + gs.log('Inactive User, ' + recGrp.user.getDisplayValue() + ', member of Group: ' + recGrp.group.getDisplayValue() + ' was removed from Group.'); |
| 15 | + recGrp.deleteRecord(); //deletes group membership record from inactive user |
| 16 | +} |
| 17 | + |
| 18 | +//REMOVE ROLES FROM INACTIVE USERS THAT WERE NOT ADDED BY GROUP MEMBERSHIP |
| 19 | +var recRole = new GlideRecord('sys_user_has_role'); // search view User Has Role table |
| 20 | +var queryString2 = "user.active=false^user.web_service_access_only=false^user.sourceSTARTSWITHldap:^inherited=false"; |
| 21 | +recRole.addEncodedQuery(queryString2); // find inactive users that have a role assigned and ignores any users with "web service access only" = TRUE. |
| 22 | +recRole.query(); |
| 23 | +while (recRole.next()) { |
| 24 | + emailBody += 'Inactive User, ' + recRole.user.name + ' found - Role: ' + recRole.role.getDisplayValue() + ', was removed.\n<br>'; |
| 25 | + gs.log('Inactive User, ' + recRole.user.name + ' found - Role: ' + recRole.role.getDisplayValue() + ', was removed.'); // add info message to system log about what user was inactive and role was removed |
| 26 | + recRole.deleteRecord(); //deletes role record from inactive user |
| 27 | +} |
| 28 | + |
| 29 | +//CLEARS ASSIGNED TO ON ACTIVE TASKS ASSIGNED TO INACTIVE USERS |
| 30 | +var recTask = new GlideRecord('task'); // search task table |
| 31 | +var queryString3 = "assigned_to.active=false^assigned_to.web_service_access_only=false^active=true"; |
| 32 | +recTask.addEncodedQuery(queryString3); // find inactive users that have active tasks assigned to them and ignores any users with "web service access only" = TRUE. |
| 33 | +recTask.query(); |
| 34 | +while (recTask.next()) { |
| 35 | + emailBody += 'Removed task from Inactive User: ' + recTask.assigned_to.getDisplayValue() + ' ' + recTask.number + '.\n<br>'; |
| 36 | + gs.log('Removed task from Inactive User: ' + recTask.assigned_to.getDisplayValue() + ' ' + recTask.number); // add message about what user was inactive tasks removed |
| 37 | + recTask.work_notes = 'System Administrator removed "Assigned to" value as the user is no longer active.'; //add work note explanation without workflow |
| 38 | + recTask.update(); |
| 39 | + recTask.assigned_to = ''; |
| 40 | + recTask.setWorkflow(false); //removes assigned_to value without workflow |
| 41 | + recTask.update(); |
| 42 | +} |
| 43 | + |
| 44 | +var recipientList = gs.getProperty('glide.xyz.admin.email.recipients'); |
| 45 | +var email = new GlideEmailOutbound(); |
| 46 | +email.setSubject('Daily Inactive User Group/Role/Task Clean-up Completed'); |
| 47 | +email.setBody(emailBody); |
| 48 | +if (recipientList.includes(',')) { |
| 49 | + var recipients = recipientList.split(","); |
| 50 | + for (var i = 0; i < recipients.length; i++) { |
| 51 | + email.addRecipient(recipients[i]); // Add recipients from system property |
| 52 | + } |
| 53 | +} else { |
| 54 | + email.addRecipient(recipientList); // Add single recipient from system property |
| 55 | +} |
| 56 | +email.setFrom('xyz@service-now.com'); |
| 57 | +email.save(); |
| 58 | + |
| 59 | +gs.log('Daily Inactive User Group/Role/Task Clean-up Completed: \n\n' + emailBody); |
0 commit comments