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.

Notification not working in scoped application

AnandKumar1
Tera Expert

HI, 

I created a scheduled job in scoped application which based on the expire date email will be sending in advance for alert.

the day calculation i havent shared here, but i am able see the logs but notification is not getting triggered. For
example : i can post the logs which received for 1 day record.

Certificate expires 1 days from today: Facility Management Appl - L2owned by - Christoffer A.
*** Script: Certificate expires 1 days from today: Facility Management Appl - L2owned by - Christoffer A.
Evaluator: com.glide.script.RhinoEcmaError: "applicationGR" is not defined. script : Line(80) column(0) 77: if (days == 1) { 78: 79: gs.info("Certificate expires 1 days from today: " + managedByGroup + "owned by - " + ownedBy); ==> 80: gs.eventQueue('sn_disco_certmgmt.1day',applicationGR , managedByGroup, ownedBy); 81: } 82:

 

 

*********************************************************************************************************************

var serverIdsArr = [];

    var relationdata = new GlideRecord('cmdb_rel_ci');
    relationdata.addEncodedQuery("parent.sys_class_name=cmdb_ci_certificate^type=6afd799338a02000c18673032c71b87b");
    relationdata.addQuery('parent', commonname);
    relationdata.query();
    while (relationdata.next()) {
        serverIdsArr.push(relationdata.child.toString());
    }
    gs.info("server ID " +serverIdsArr);

    var serverIdsStr = serverIdsArr.join();
    var splitIds = serverIdsStr.split(',');

    if (serverIdsStr) {
        for (var i = 0; i < splitIds.length; i++) {
            gs.info("Realtionshipinfos3 ------------>" + splitIds[i]);

            var app = new GlideRecord('u_m2m_servers_applications');
 
            app.addEncodedQuery('u_server.sys_id=' + splitIds[i]);
            app.query();
    

            while (app.next()) {

                var applicationSysId = app.u_application.toString();
                gs.info('Application sysID' + applicationSysId);
                var ownedBy = getOwnedByForApplication(applicationSysId);
                var managedByGroup = getManagedByGroupForApplication(applicationSysId);
                gs.info('ownedby Value from while ----->  ' + ownedBy);
                gs.info('managedby Value from while ----->  ' + managedByGroup);
 
                if (days == 15) {

                    gs.info("Certificate expires 15days from today: " + managedByGroup + "owned by - " + ownedBy);
                    gs.eventQueue('sn_disco_certmgmt.15days', managedByGroup, ownedBy);
                }
                if (days == 7) {

                    gs.info("Certificate expires 7days from today: " + managedByGroup + "owned by - " + ownedBy);
                    gs.eventQueue('sn_disco_certmgmt.7dDays', managedByGroup, ownedBy);
                }
                if (days == 1) {

      gs.info("Certificate expires 1 days from today: " + managedByGroup + "owned by - " + ownedBy);
     gs.eventQueue('sn_disco_certmgmt.1day','', managedByGroup, ownedBy);
                }
 
 
            

            }          
        }
    }
}

function getOwnedByForApplication(applicationSysId) {
    var ownedBy = '';
    var applicationGR = new GlideRecord('cmdb_ci_service_discovered');
    applicationGR.addQuery('sys_id', applicationSysId);
    applicationGR.query();

    if (applicationGR.next()) {
        ownedBy = applicationGR.owned_by.name;
        gs.info('ownedby Value ----->  ' + ownedBy);
    }

    return ownedBy;
}

function getManagedByGroupForApplication(applicationSysId) {
    var managedByGroup = '';
    var applicationGR = new GlideRecord('cmdb_ci_service_discovered');
    applicationGR.addQuery('sys_id', applicationSysId);
    applicationGR.query();

    if (applicationGR.next()) {
        managedByGroup = applicationGR.u_managed_by_group.name;
        gs.info('managedby Value ----->  ' + managedByGroup);
    }

    return managedByGroup;
}
*********************************************************************************************************************
Thanks.
7 REPLIES 7

SunilKumar_P
Giga Sage

Hi @AnandKumar1, as gs.eventQueue() methods expects object instance in it. I have updated the code to with null ('') value in the eventQueue methods. Can you give a try?

 

var gr = new GlideRecord('cmdb_ci_certificate');
gr.addEncodedQuery('sys_id', '151477f31bd679542fc2da42b24bcbba');
gr.query();
gs.info('certificate query inner loop');
while (gr.next()) {
    var validTo = gr.valid_to;
    var commonname = gr.sys_id;

    var endDate = new GlideDateTime(gr.valid_to);
    var nowTime = new GlideDateTime();
    gs.info('certificate inner loop');

    var duration = GlideDateTime.subtract(nowTime, endDate);
    var days = parseInt(duration.getNumericValue() / 86400000);
    gs.info('print the days' + days);


    var serverIdsArr = [];

    var relationdata = new GlideRecord('cmdb_rel_ci');
    relationdata.addEncodedQuery("parent.sys_class_name=cmdb_ci_certificate^type=6afd799338a02000c18673032c71b87b");
    relationdata.addQuery('parent', commonname);
    relationdata.query();
    while (relationdata.next()) {
        serverIdsArr.push(relationdata.child.toString());
    }
    gs.info("server ID " + serverIdsArr);

    var serverIdsStr = serverIdsArr.join();
    var splitIds = serverIdsStr.split(',');

    if (serverIdsStr) {
        for (var i = 0; i < splitIds.length; i++) {
            gs.info("Realtionshipinfos3 ------------>" + splitIds[i]);

            var app = new GlideRecord('u_m2m_servers_applications');
            //app.addQuery("u_server", splitIds[i]);
            app.addEncodedQuery('u_server.sys_id=' + splitIds[i]);
            app.query();
            //var applicationsArr = [];

            while (app.next()) {

                var applicationSysId = app.u_application.toString();
                gs.info('Application sysID' + applicationSysId);
                var ownedBy = getOwnedByForApplication(applicationSysId);
                var managedByGroup = getManagedByGroupForApplication(applicationSysId);
                gs.info('ownedby Value from while ----->  ' + ownedBy);
                gs.info('managedby Value from while ----->  ' + managedByGroup);

                if (days == 59) {
                    gs.info("excluding today + 3days and result will be 5th day " + validTo);
                    gs.eventQueue('sn_disco_certmgmt.60days', null, managedByGroup, ownedBy);
                    gs.info('sn_disco_certmgmt.60 Days', +managedByGroup + ownedBy);
                }
                if (days == 45) {
                    gs.info("Certificate expires 45 days from today: " + validTo);
                    gs.eventQueue('sn_disco_certmgmt.45days', null, managedByGroup, ownedBy);

                }
                if (days == 30) {

                    gs.info("Certificate expires 30 days from today: " + validTo);
                    gs.eventQueue('sn_disco_certmgmt.30days', null, managedByGroup, ownedBy);

                }
                if (days == 15) {

                    gs.info("Certificate expires 15 days from today: " + validTo);
                    gs.eventQueue('sn_disco_certmgmt.15days',null, managedByGroup, ownedBy);
                }
                if (days == 7) {

                    gs.info("Certificate expires 7 days from today: " + validTo);
                    gs.eventQueue('sn_disco_certmgmt.7days',null, managedByGroup, ownedBy);
                }
                if (days == 1) {

                    gs.info("Certificate expires 1 days from today: " + managedByGroup + "owned by - " + ownedBy);
                    gs.eventQueue('sn_disco_certmgmt.1day', gr, managedByGroup, ownedBy);
                }


            }

        }
    }
}

function getOwnedByForApplication(applicationSysId) {
    var ownedBy = '';
    var applicationGR = new GlideRecord('cmdb_ci_service_discovered');
    applicationGR.addQuery('sys_id', applicationSysId);
    applicationGR.query();

    if (applicationGR.next()) {
        ownedBy = applicationGR.owned_by.name;
        gs.info('ownedby Value ----->  ' + ownedBy);
    }

    return ownedBy;
}

function getManagedByGroupForApplication(applicationSysId) {
    var managedByGroup = '';
    var applicationGR = new GlideRecord('cmdb_ci_service_discovered');
    applicationGR.addQuery('sys_id', applicationSysId);
    applicationGR.query();

    if (applicationGR.next()) {
        managedByGroup = applicationGR.u_managed_by_group.name;
        gs.info('managedby Value ----->  ' + managedByGroup);
    }

    return managedByGroup;
}

 

 

Regards,

Sunil

HI Sunil,

Thank you for the email. I have tried this with glide option and its working.. Earlier too this was working the reason the parameter was not coming is i was using (u_managed_by_group.name) instead i should have passed the sys_id... Now tried without DOT WALKING and its working now. 

f (applicationGR.next()) {
        managedByGroup = applicationGR.u_managed_by_group.name;
        gs.info('managedby Value ----->  ' + managedByGroup);
    }

 

Hi @AnandKumar1, Glad that its working.

 

Regards,

Sunil