Some PDIs are currently unavailable, and PDI actions are paused. View the latest updates here. Read More

how to restrict incident creation from calendar invites for DL

RudhraKAM
Tera Guru

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 

 

RudhraKAM_0-1764942196011.png

 

45 REPLIES 45

pratyusha11
Tera Contributor
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();

pratyusha11
Tera Contributor
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);
    }
}

pratyusha11
Tera Contributor
var gr = new GlideRecord('task_sla');
gr.addQuery('active', true);
gr.addQuery('has_breached', true);
gr.addQuery('sla.name', 'WF CHG Resolution');
gr.addQuery('task.sys_class_name', 'change_request');
gr.addQuery('task.production_system', true);
gr.query();

gs.print('Total breached records: ' + gr.getRowCount());

while (gr.next()) {
    gs.print('CHG: ' + gr.getDisplayValue('task') + 
             ' | Assigned To: ' + gr.getDisplayValue('task.assigned_to') +
             ' | Group: ' + gr.getDisplayValue('task.assignment_group') +
             ' | Breach Time: ' + gr.getDisplayValue('breach_time'));
}

pratyusha11
Tera Contributor
var groups = ['NMC', 'ICNF', 'EFT-PAS-CC-ESS', 'SES-Operations', 'TIPH', 'Cyber Security'];

for (var i = 0; i < groups.length; i++) {
    var gr = new GlideRecord('sys_user_group');
    gr.addQuery('name', groups[i]);
    gr.query();
    if (gr.next()) {
        gs.print('Group: ' + gr.getValue('name') + 
                 ' | Email: ' + gr.getValue('email') +
                 ' | Manager: ' + gr.getDisplayValue('manager'));
    }
}

pratyusha11
Tera Contributor
var DRY_RUN = true; // Change to false only when approved

var overDueRecords = [];
var existingChangeEmails = [];
var existingTaskEmails = [];

//First query Change Request table via task_sla
var chgRecords = new GlideAggregate('task_sla');
chgRecords.addQuery('active', true);
chgRecords.addQuery('has_breached', true);
chgRecords.addQuery('sla.name', 'WF CHG Resolution');
chgRecords.addQuery('task.sys_class_name', 'change_request');
chgRecords.addQuery('task.production_system', true);
chgRecords.addQuery('task.state', 'NOT IN', '3,4');
chgRecords.addAggregate('COUNT', 'task.requested_by');
chgRecords.orderByAggregate('COUNT', 'task.requested_by');
chgRecords.orderBy('task.requested_by');
chgRecords.orderBy('task.assignment_group');
chgRecords.query();

gs.print('CHG breached SLA records found: ' + chgRecords.getRowCount());

while (chgRecords.next()) {
    var chgCount = chgRecords.getAggregate('COUNT', 'task.requested_by');
    var chgOverDueObj = {};
    chgOverDueObj.is_user_active = false;
    chgOverDueObj.has_valid_email = false;
    chgOverDueObj.is_manager_active = false;
    chgOverDueObj.group = chgRecords.getValue('task.assignment_group');

    var requestedBy = chgRecords.task.requested_by.getRefRecord();
    if (requestedBy && requestedBy.isValidRecord() && isActiveUser(requestedBy)) {
        chgOverDueObj.is_user_active = true;
        chgOverDueObj.assigned_user_email = requestedBy.getValue('email');
        chgOverDueObj.assigned_name = requestedBy.getValue('u_preferred_name');
        setManagerDetails(requestedBy, chgOverDueObj);
    } else {
        setGroupManagerDetails(chgOverDueObj.group, chgOverDueObj);
    }

    chgOverDueObj.overdue_chg_count = chgCount;

    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) &&
               existingTaskEmails.indexOf(chgOverDueObj.group_email) < 0) {
        overDueRecords.push(chgOverDueObj);
        existingTaskEmails.push(chgOverDueObj.group_email);
    }
}

gs.print('--- overDueRecords built: ' + overDueRecords.length + ' ---');

if (DRY_RUN) {
    for (var i = 0; i < overDueRecords.length; i++) {
        var rec = overDueRecords[i];
        gs.print('Would notify => Email: ' + rec.assigned_user_email +
                 ' | Group Email: ' + rec.group_email +
                 ' | Name: ' + rec.assigned_name +
                 ' | CHG Count: ' + rec.overdue_chg_count +
                 ' | User Active: ' + rec.is_user_active);
    }
    gs.print('DRY RUN complete - no emails sent');
}