Interested in a ServiceNow event built for developers? Registration for now[dev]26 is officially open!

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

 

47 REPLIES 47

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');
}