Skip to content

Commit 94f7b15

Browse files
authored
Create script.js
1 parent 66890e4 commit 94f7b15

File tree

1 file changed

+59
-0
lines changed
  • Server-Side Components/Scheduled Jobs/Clean up Inactive User access

1 file changed

+59
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
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

Comments
 (0)