Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Update undelivered and OOO emails to the custom table

Aruna13
Tera Contributor

Hi,

 

I have a custom table where i want to update undelivered and OOO emails to the record in activity log.

Below is my business rule i wrote and the conditions.

BR:

(function executeRule(current, previous /*null when async*/ ) {

    var body = current.body.toString();
    if (body.indexOf("DKIM-Filter:") > -1) {
        var str = body.substring(body.indexOf("DKIM-Filter:"));

        var subject = str.substring(str.indexOf("Subject:") + 8);

        var mime = subject.substring(subject.indexOf("MIME-Version:"));
        var sub = subject.replace(mime, '').trim();

        var gr = new GlideRecord('sys_email');
        gr.addQuery('sys_created_onRELATIVEGT@minute@ago@5');
        gr.addQuery('type', 'sent');
        gr.query();
        while (gr.next()) {
            if (((gr.subject.toString()).localeCompare(sub.toString())) || (gr.subject.toString() == sub.toString())) {
                if (current.instance) {
                    current.type = 'received';
                } else {
                    current.type = 'received';
                    current.target_table = 'u_sr_shared_finance';//custom table
                    current.instance = gr.instance;
                }
            }
        }
    } else {
        var emailStart = body.substring(body.indexOf('The mail system') + 27);
        var emailEnd = body.substring(body.indexOf('>: host'));
        var undeliverEmail = emailStart.replace(emailEnd, '').trim();
        var gre = new GlideRecord('sys_email');
        gre.addQuery('sys_created_onRELATIVEGT@minute@ago@5');
        gre.addQuery('type', 'sent');
        gre.addEncodedQuery('recipientsLIKE' + undeliverEmail);
        gre.query();
        if (gre.next()) {
            current.type = 'received';
            current.target_table = 'u_sr_shared_finance';
            current.instance = gre.instance;
        }
    }

    var ap = new GlideRecord('u_sr_shared_finance');
    ap.addQuery('sys_id', current.instance);
    ap.addQuery('state', '4');
    ap.query();
    if(ap.next()){
        ap.state = '9';
        ap.update();
    }
})(current, previous);
 
Conditions:(new ToCheckRecipients()).checkRecipientAP(current.direct) //this will check the recipients are valid
 
Aruna13_0-1717424031947.png

 

I dont know what is wrong here, but it is working for Repluy/ReplyAll/Forward client templates and not the email template for the custom table.

Can anyone please check and le me know what is the issue here? Please help me since i just started learning scripting.

 

@Ankur Bawiskar @Jitendra diwak1 can you please help

Thanks in Advance!!

0 REPLIES 0