how to restrict incident creation from calendar invites for DL
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-05-2025 05:43 AM
As of now we are creating an Incidents via Inbound action , but when there is a calendar invite , still it is creating Incident , How to restrict that ?
I am not able to restrict subject , as it can be any
45 REPLIES 45
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-25-2026 11:21 AM
var validCtaskIds = [];
var ctaskFilterGR = new GlideRecord('change_task');
ctaskFilterGR.addQuery('sys_id', 'IN', breachedCtaskIds.join(','));
ctaskFilterGR.addQuery('change_request.production_system', true);
ctaskFilterGR.addQuery('change_request.state', '!=', '5');
ctaskFilterGR.query();
while (ctaskFilterGR.next()) {
validCtaskIds.push(ctaskFilterGR.getValue('sys_id'));
}
gs.print('Valid CTask IDs after filter: ' + validCtaskIds.length);
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-25-2026 11:21 AM
var ctaskRecords = new GlideAggregate('change_task');
ctaskRecords.addQuery('sys_id', 'IN', validCtaskIds.join(','));
ctaskRecords.addAggregate('COUNT', 'assigned_to');
ctaskRecords.orderByAggregate('COUNT', 'assigned_to');
ctaskRecords.orderBy('assigned_to');
ctaskRecords.orderBy('assignment_group');
ctaskRecords.query();
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-25-2026 11:25 AM
var DRY_RUN = true; // Change to false only when approved
var overDueRecords = [];
var existingChangeEmails = [];
var existingTaskEmails = [];
// ============================================================
// HELPER: Get group details inline
// ============================================================
function getGroupDetails(groupSysId) {
var groupObj = { group_email: '', manager_email: '', manager_name: '', group_name: '' };
if (!groupSysId) return groupObj;
var grpGR = new GlideRecord('sys_user_group');
if (grpGR.get(groupSysId)) {
groupObj.group_email = grpGR.getValue('email') || '';
groupObj.group_name = grpGR.getValue('name') || '';
var grpManager = grpGR.manager.getRefRecord();
if (grpManager && grpManager.isValidRecord() && grpManager.getValue('active') == 'true') {
groupObj.manager_email = grpManager.getValue('email') || '';
groupObj.manager_name = grpManager.getValue('u_preferred_name') ||
(grpManager.getValue('first_name') + ' ' + grpManager.getValue('last_name')) || '';
}
}
return groupObj;
}
// ============================================================
// HELPER: Get manager details inline
// ============================================================
function getManagerDetails(userGR) {
var managerObj = { manager_email: '', manager_name: '', is_manager_active: false };
if (!userGR || !userGR.isValidRecord()) return managerObj;
var manager = userGR.manager.getRefRecord();
if (manager && manager.isValidRecord() && manager.getValue('active') == 'true') {
managerObj.is_manager_active = true;
managerObj.manager_email = manager.getValue('email') || '';
managerObj.manager_name = manager.getValue('u_preferred_name') ||
(manager.getValue('first_name') + ' ' + manager.getValue('last_name')) || '';
}
return managerObj;
}
// ============================================================
// STEP 1: Get breached CHG sys_ids from task_sla
// ============================================================
var breachedChgIds = [];
var chgSlaGR = new GlideRecord('task_sla');
chgSlaGR.addQuery('active', true);
chgSlaGR.addQuery('has_breached', true);
chgSlaGR.addQuery('sla.name', 'WF CHG Resolution');
chgSlaGR.addQuery('task.sys_class_name', 'change_request');
chgSlaGR.query();
while (chgSlaGR.next()) {
var taskId
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-25-2026 11:26 AM
var DRY_RUN = true; // Change to false only when approved
var overDueRecords = [];
var existingChangeEmails = [];
var existingTaskEmails = [];
// ============================================================
// HELPER: Get group details inline
// ============================================================
function getGroupDetails(groupSysId) {
var groupObj = { group_email: '', manager_email: '', manager_name: '', group_name: '' };
if (!groupSysId) return groupObj;
var grpGR = new GlideRecord('sys_user_group');
if (grpGR.get(groupSysId)) {
groupObj.group_email = grpGR.getValue('email') || '';
groupObj.group_name = grpGR.getValue('name') || '';
var grpManager = grpGR.manager.getRefRecord();
if (grpManager && grpManager.isValidRecord() && grpManager.getValue('active') == 'true') {
groupObj.manager_email = grpManager.getValue('email') || '';
groupObj.manager_name = grpManager.getValue('u_preferred_name') ||
(grpManager.getValue('first_name') + ' ' + grpManager.getValue('last_name')) || '';
}
}
return groupObj;
}
// ============================================================
// HELPER: Get manager details inline
// ============================================================
function getManagerDetails(userGR) {
var managerObj = { manager_email: '', manager_name: '', is_manager_active: false };
if (!userGR || !userGR.isValidRecord()) return managerObj;
var manager = userGR.manager.getRefRecord();
if (manager && manager.isValidRecord() && manager.getValue('active') == 'true') {
managerObj.is_manager_active = true;
managerObj.manager_email = manager.getValue('email') || '';
managerObj.manager_name = manager.getValue('u_preferred_name') ||
(manager.getValue('first_name') + ' ' + manager.getValue('last_name')) || '';
}
return managerObj;
}
// ============================================================
// STEP 1: Get breached CHG sys_ids from task_sla
// ============================================================
var breachedChgIds = [];
var chgSlaGR = new GlideRecord('task_sla');
chgSlaGR.addQuery('active', true);
chgSlaGR.addQuery('has_breached', true);
chgSlaGR.addQuery('sla.name', 'WF CHG Resolution');
chgSlaGR.addQuery('task.sys_class_name', 'change_request');
chgSlaGR.query();
while (chgSlaGR.next()) {
var taskId = chgSlaGR.getValue('task');
if (taskId && breachedChgIds.indexOf(taskId) < 0) {
breachedChgIds.push(taskId);
}
}
gs.print('Breached CHG IDs found: ' + breachedChgIds.length);
// ============================================================
// STEP 2: Aggregate on change_request using breached sys_ids
// ============================================================
if (breachedChgIds.length > 0) {
var chgRecords = new GlideAggregate('change_request');
chgRecords.addQuery('sys_id', 'IN', breachedChgIds.join(','));
chgRecords.addQuery('production_system', true);
chgRecords.addQuery('state', 'NOT IN', '3,4');
chgRecords.addAggregate('COUNT', 'requested_by');
chgRecords.orderByAggregate('COUNT', 'requested_by');
chgRecords.orderBy('requested_by');
chgRecords.orderBy('assignment_group');
chgRecords.query();
gs.print('CHG aggregate rows: ' + chgRecords.getRowCount());
while (chgRecords.next()) {
var chgCount = chgRecords.getAggregate('COUNT', 'requested_by');
var chgOverDueObj = {};
chgOverDueObj.is_user_active = false;
chgOverDueObj.has_valid_email = false;
chgOverDueObj.is_manager_active = false;
chgOverDueObj.group = chgRecords.getValue('assignment_group');
chgOverDueObj.overdue_chg_count = chgCount;
chgOverDueObj.overdue_ctask_count = '';
chgOverDueObj.assigned_user_email = '';
chgOverDueObj.group_email = '';
chgOverDueObj.group_name = '';
chgOverDueObj.assigned_name = '';
chgOverDueObj.manager_email = '';
chgOverDueObj.manager_name = '';
var requestedBy = chgRecords.requested_by.getRefRecord();
if (requestedBy && requestedBy.isValidRecord() && requestedBy.getValue('active') == 'true') {
chgOverDueObj.is_user_active = true;
chgOverDueObj.assigned_user_email = requestedBy.getValue('email') || '';
chgOverDueObj.assigned_name = requestedBy.getValue('u_preferred_name') ||
(requestedBy.getValue('first_name') + ' ' + requestedBy.getValue('last_name')) || '';
chgOverDueObj.has_valid_email = (chgOverDueObj.assigned_user_email != '');
var chgManagerDetails = getManagerDetails(requestedBy);
chgOverDueObj.is_manager_active = chgManagerDetails.is_manager_active;
chgOverDueObj.manager_email = chgManagerDetails.manager_email;
chgOverDueObj.manager_name = chgManagerDetails.manager_name;
} else {
var chgGroupDetails = getGroupDetails(chgOverDueObj.group);
chgOverDueObj.group_email = chgGroupDetails.group_email;
chgOverDueObj.group_name = chgGroupDetails.group_name;
chgOverDueObj.manager_email = chgGroupDetails.manager_email;
chgOverDueObj.manager_name = chgGroupDetails.manager_name;
}
if (chgOverDueObj.is_user_active && chgOverDueObj.assigned_user_email &&
existingChangeEmails.indexOf(chgOverDueObj.assigned_user_email) < 0) {
overDueRecords.push(chgOverDueObj);
existingChangeEmails.push(chgOverDueObj.assigned_user_email);
} else if ((!chgOverDueObj.is_user_active || !chgOverDueObj.has_valid_email) &&
chgOverDueObj.group_email &&
existingTaskEmails.indexOf(chgOverDueObj.group_email) < 0) {
overDueRecords.push(chgOverDueObj);
existingTaskEmails.push(chgOverDueObj.group_email);
}
}
}
// ============================================================
// STEP 3: Get breached Change Task sys_ids from task_sla
// ============================================================
var breachedCtaskIds = [];
var ctaskSlaGR = new GlideRecord('task_sla');
ctaskSlaGR.addQuery('active', true);
ctaskSlaGR.addQuery('has_breached', true);
ctaskSlaGR.addQuery('sla.name', 'WF CTask Resolution');
ctaskSlaGR.addQuery('task.sys_class_name', 'change_task');
ctaskSlaGR.query();
while (ctaskSlaGR.next()) {
var ctaskId = ctaskSlaGR.getValue('task');
if (ctaskId && breachedCtaskIds.indexOf(ctaskId) < 0) {
breachedCtaskIds.push(ctaskId);
}
}
gs.print('Breached Change Task IDs found: ' + breachedCtaskIds.length);
// ============================================================
// STEP 3b: Filter ctask IDs — only production + active parent
// ============================================================
var validCtaskIds = [];
if (breachedCtaskIds.length > 0) {
var ctaskFilterGR = new GlideRecord('change_task');
ctaskFilterGR.addQuery('sys_id', 'IN', breachedCtaskIds.join(','));
ctaskFilterGR.addQuery('change_request.production_system', true);
ctaskFilterGR.addQuery('change_request.state', '!=', '5');
ctaskFilterGR.query();
while (ctaskFilterGR.next()) {
validCtaskIds.push(ctaskFilterGR.getValue('sys_id'));
}
}
gs.print('Valid CTask IDs after filter: ' + validCtaskIds.length);
// ============================================================
// STEP 4: Aggregate on change_task using valid sys_ids
// ============================================================
if (validCtaskIds.length > 0) {
var ctaskRecords = new GlideAggregate('change_task');
ctaskRecords.addQuery('sys_id', 'IN', validCtaskIds.join(','));
ctaskRecords.addAggregate('COUNT', 'assigned_to');
ctaskRecords.orderByAggregate('COUNT', 'assigned_to');
ctaskRecords.orderBy('assigned_to');
ctaskRecords.orderBy('assignment_group');
ctaskRecords.query();
gs.print('Change Task aggregate rows: ' + ctaskRecords.getRowCount());
while (ctaskRecords.next()) {
var ctaskCount = ctaskRecords.getAggregate('COUNT', 'assigned_to');
var ctaskOverDueObj = {};
ctaskOverDueObj.is_user_active = false;
ctaskOverDueObj.has_valid_email = false;
ctaskOverDueObj.is_manager_active = false;
ctaskOverDueObj.group = ctaskRecords.getValue('assignment_group');
ctaskOverDueObj.overdue_ctask_count = ctaskCount;
ctaskOverDueObj.overdue_chg_count = '';
ctaskOverDueObj.assigned_user_email = '';
ctaskOverDueObj.group_email = '';
ctaskOverDueObj.group_name = '';
ctaskOverDueObj.assigned_name = '';
ctaskOverDueObj.manager_email = '';
ctaskOverDueObj.manager_name = '';
var assignedTo = ctaskRecords.assigned_to.getRefRecord();
if (assignedTo && assignedTo.isValidRecord() && assignedTo.getValue('active') == 'true') {
ctaskOverDueObj.is_user_active = true;
ctaskOverDueObj.assigned_user_email = assignedTo.getValue('email') || '';
ctaskOverDueObj.assigned_name = assignedTo.getValue('u_preferred_name') ||
(assignedTo.getValue('first_name') + ' ' + assignedTo.getValue('last_name')) || '';
ctaskOverDueObj.has_valid_email = (ctaskOverDueObj.assigned_user_email != '');
var ctaskManagerDetails = getManagerDetails(assignedTo);
ctaskOverDueObj.is_manager_active = ctaskManagerDetails.is_manager_active;
ctaskOverDueObj.manager_email = ctaskManagerDetails.manager_email;
ctaskOverDueObj.manager_name = ctaskManagerDetails.manager_name;
} else {
var ctaskGroupDetails = getGroupDetails(ctaskOverDueObj.group);
ctaskOverDueObj.group_email = ctaskGroupDetails.group_email;
ctaskOverDueObj.group_name = ctaskGroupDetails.group_name;
ctaskOverDueObj.manager_email = ctaskGroupDetails.manager_email;
ctaskOverDueObj.manager_name = ctaskGroupDetails.manager_name;
}
if (ctaskOverDueObj.is_user_active && ctaskOverDueObj.assigned_user_email &&
existingChangeEmails.indexOf(ctaskOverDueObj.assigned_user_email) < 0) {
overDueRecords.push(ctaskOverDueObj);
existingChangeEmails.push(ctaskOverDueObj.assigned_user_email);
} else if ((!ctaskOverDueObj.is_user_active || !ctaskOverDueObj.has_valid_email) &&
ctaskOverDueObj.group_email &&
existingTaskEmails.indexOf(ctaskOverDueObj.group_email) < 0) {
overDueRecords.push(ctaskOverDueObj);
existingTaskEmails.push(ctaskOverDueObj.group_email);
}
}
}
// ============================================================
// STEP 5: DRY RUN output / or fire notifications
// ============================================================
gs.print('--- Total overDueRecords: ' + overDueRecords.length + ' ---');
if (DRY_RUN) {
for (var i = 0; i < overDueRecords.length; i++) {
var rec = overDueRecords[i];
gs.print('Would notify =>' +
' | User Active: ' + rec.is_user_active +
' | Name: ' + rec.assigned_name +
' | User Email: ' + rec.assigned_user_email +
' | Group: ' + rec.group_name +
' | Group Email: ' + rec.group_email +
' | Manager Name: ' + rec.manager_name +
' | Manager Email: ' + rec.manager_email +
' | CHG Count: ' + rec.overdue_chg_count +
' | Task Count: ' + rec.overdue_ctask_count);
}
gs.print('DRY RUN complete - no emails sent');
} else {
// Your existing notification firing logic goes here
}
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-25-2026 11:55 AM
var overdueRecords = [];
//Arrays to remove duplicate email addresses
var existingChangeEmails = [];
var existingCTaskEmails = [];
//First query Change Request table
var chgSLA = new GlideAggregate('task_sla');
chgSLA.addQuery('active', true);
chgSLA.addQuery('has_breached', true);
chgSLA.addQuery('task.sys_class_name', 'change_request');
chgSLA.addQuery('task.production_system', true);
chgSLA.addAggregate('COUNT', 'task.requested_by');
chgSLA.orderByAggregate('COUNT', 'task.requested_by');
chgSLA.orderBy('task.requested_by');
chgSLA.orderBy('task.assignment_group');
chgSLA.query();
while (chgSLA.next()) {
var chgCount = chgSLA.getAggregate('COUNT', 'requested_by');
var chgOverDueObj = {};
chgOverDueObj.is_user_active = false;
chgOverDueObj.has_valid_email = false;
chgOverDueObj.is_manager_active = false;
chgOverDueObj.group = chgSLA.getValue('task.assignment_group');
var requestedBy = chgSLA.task.requested_by.getRefRecord();
//Checks Requested By
if (chgSLA.getValue('requested_by') && isActiveUser(requestedBy)) {
chgOverDueObj.is_user_active = true;
if (requestedBy.getValue('email')) {
chgOverDueObj.assigned_user_email = requestedBy.getValue('email');
chgOverDueObj.assigned_preferred_name = requestedBy.getValue('u_preferred_name');
chgOverDueObj.has_valid_email = true;
}
setManagerDetails(requestedBy, chgOverDueObj);
} else {
setGroupManagerDetails(chgOverDueObj.group, chgOverDueObj);
}
chgOverDueObj.overdue_chg_count = chgCount;
//chgOverDueObj.found_in = 'CHANGE_REQUEST';
if ((chgOverDueObj.is_user_active) && (chgOverDueObj.assigned_user_email) && (existingChangeEmails.indexOf(chgOverDueObj.assigned_user_email) < 0)) {
overdueRecords.push(chgOverDueObj);
existingChangeEmails.push(chgOverDueObj.assigned_user_email);
} else if ((!(chgOverDueObj.is_user_active) || (!(chgOverDueObj.has_valid_email))) && (existingCTaskEmails.indexOf(chgOverDueObj.group_email) < 0)) {
overdueRecords.push(chgOverDueObj);
existingCTaskEmails.push(chgOverDueObj.group_email);
}
}
//Next, query Change Task table
var ctaskSLA = new GlideAggregate('task_sla');
ctaskSLA.addQuery('active', true);
ctaskSLA.addQuery('has_breached', true);
ctaskSLA.addQuery('task.sys_class_name', 'change_task');
ctaskSLA.addQuery('task.production_system', true);
ctaskSLA.addQuery('task.change_request.state', '!=', '5'); // exclude closed CHGs
ctaskSLA.addAggregate('COUNT', 'task.assigned_to');
ctaskSLA.orderBy('task.assigned_to');
ctaskSLA.orderBy('task.assignment_group');
ctaskSLA.query();
while (ctaskSLA.next()) {
var ctaskCount = ctaskSLA.getAggregate('COUNT', 'task.assigned_to');
var ctaskOverDueObj = {};
ctaskOverDueObj.is_user_active = false;
ctaskOverDueObj.has_valid_email = false;
ctaskOverDueObj.is_manager_active = false;
ctaskOverDueObj.group = ctaskSLA.getValue('task.assignment_group');
var assignedTo = ctaskSLA.task.assigned_to.getRefRecord();
// Check Assigned To
if (ctaskSLA.getValue('task.assigned_to') && isActive(assignedTo)) {
ctaskOverDueObj.is_user_active = true;
ctaskOverDueObj.assigned_user_email = assignedTo.getValue('email');
ctaskOverDueObj.assigned_user_preferred_name = assignedTo.getValue('u_preferred_name');
setManagerDetails(assignedTo, ctaskOverDueObj);
} else {
setGroupManagerDetails(ctaskOverDueObj.group, ctaskOverDueObj);
}
ctaskOverDueObj.overdue_ctask_count = ctaskCount;
// Email dedup — user path
if (ctaskOverDueObj.is_user_active &&
ctaskOverDueObj.assigned_user_email &&
existingChangeTaskEmails.indexOf(ctaskOverDueObj.assigned_user_email) < 0) {
overdueRecords.push(ctaskOverDueObj);
existingChangeTaskEmails.push(ctaskOverDueObj.assigned_user_email);
// Email dedup — group path
} else if (!ctaskOverDueObj.is_user_active &&
ctaskOverDueObj.has_valid_email &&
existingChangeEmails.indexOf(ctaskOverDueObj.group_email) < 0) {
overdueRecords.push(ctaskOverDueObj);
existingChangeEmails.push(ctaskOverDueObj.group_email);
}
}
var overDueLength = overdueRecords.length;
for (var i = 0; i < overDueLength; i++) {
var emailAddresses = '';
if ((overdueRecords[i].is_user_active) && (overdueRecords[i].has_valid_email)) {
emailAddresses = overdueRecords[i].assigned_user_email;
if ((overdueRecords[i].is_manager_active) && (overdueRecords[i].manager_email)) {
emailAddresses += ',' + overdueRecords[i].manager_email;
}
} else {
emailAddresses = overdueRecords[i].group_email;
}
if (overdueRecords[i].group) {
gs.log(JSON.stringify(overdueRecords[i]));
var groupRecord = new GlideRecord('sys_user_group');
if (groupRecord.get(overdueRecords[i].group)) {
gs.eventQueue('wf.change.past_due.daily_digest', groupRecord, emailAddresses, JSON.stringify(overdueRecords[i]), '');
}
}
}
//Function to check if user is active
function isActiveUser(user) {
var isActive = false;
if (user.isValidRecord()) {
isActive = user.active;
}
return isActive;
}
//Function to populate Manager details into JSON Obj
function setManagerDetails(user, jsonObj) {
var manager = user.manager.getRefRecord();
jsonObj.is_manager_active = false;
if (isActiveUser(manager)) {
jsonObj.is_manager_active = true;
if (manager.getValue('email')) {
jsonObj.manager_email = manager.getValue('email');
}
}
}
//Function to set Manager & Group Details
function setGroupManagerDetails(groupID, jsonObj) {
var groupEmail = '';
var groupRecord = new GlideRecord('sys_user_group');
if (groupRecord.get(groupID)) {
var groupManager = groupRecord.manager.getRefRecord();
var groupManagerEmail = groupManager.getValue('email');
groupEmail = groupRecord.getValue('email');
if (groupRecord.active && isActiveUser(groupManager) && JSUtil.notNil(groupManagerEmail)) {
jsonObj.group_email = groupManagerEmail;
jsonObj.manager_preferred_name = groupManager.getValue('u_preferred_name');
jsonObj.is_manager_active = true;
} else if (JSUtil.notNil(groupEmail)) {
jsonObj.group_email = groupEmail;
jsonObj.is_manager_active = false;
}
}
}