How can i trigger notification for 14th day and 30th day from the time of survey creation

NAIDILE S
Tera Contributor

Hi,
I have a survey which last for 42 days and in that i want to trigger notification twice i.e. 14 day and 30th day.
how can i achieve this ?

i tried with event is fired and SJ its not working.

"Script-

function attestationReminder1() {
    var grAttestReminder = new GlideRecord("asmt_assessment_instance");
 gs.info("NAIDILS Processing grAttestReminder" + grAttestReminder);
    // Proper encoded query:
    // - state IN ready,wip
    // - sys_updated_on less than 14 days ago (RELATIVELT@dayofweek@ago@14 means within last 14 days)
    // - sn_grc_item.attestation equals attestationSysId
    var encodedQuery = 'stateINready,wip^sys_updated_onRELATIVELT@dayofweek@ago@14^sn_grc_item.attestation=' + attestationSysId;

    grAttestReminder.addEncodedQuery(encodedQuery);
    grAttestReminder.query();

    while (grAttestReminder.next()) {
        gs.info("NAIDILS Processing assessment instance: " + grAttestReminder.number);

        // Send event, passing the record as parameter
        gs.eventQueue('sn_grc.attest.sendreminder', grAttestReminder, grAttestReminder.sn_grc_item.owner, '');

        gs.info('NAIDILS Owner: ' + grAttestReminder.sn_grc_item.owner);
        gs.info('NAIDILS Assessment Instance Number: ' + grAttestReminder.number);
    }
}

attestationReminder1()

thanks,
Naidile 

 

1 ACCEPTED SOLUTION

@NAIDILE S 

This is how you can do the logic

1) run scheduled job daily and check which surveys are yet to be completed, don't give past days encoded query

2) iterate those records 1 by 1

3) compare today's date and the survey creation date

a) if it' 14 days difference then send email with some content

b) if it' 30 days difference then send email with some other content

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

19 REPLIES 19

Hi @Ankur Bawiskar 

var today = new GlideDateTime(); // Use GlideDateTime for full timestamp

var grAttestReminder = new GlideRecord("asmt_assessment_instance");
gs.info("NAIDILS - Starting Attestation Reminder Scan");

var controlObjectiveSysId = gs.getProperty('sn_grc.control.objective.annual.data.compliance');
var encodedQuery = 'stateINready,wip^sn_grc_item.content=' + controlObjectiveSysId;
grAttestReminder.addEncodedQuery(encodedQuery);
grAttestReminder.query();

while (grAttestReminder.next()) {
    var grItem = grAttestReminder.sn_grc_item.getRefRecord();
    var owner = grItem.owner;
    var ownerManager = owner ? owner.manager : "";

    var createdDateTime = new GlideDateTime(grAttestReminder.getValue('sys_created_on'));
    var durationMs = GlideDateTime.subtract(today, createdDateTime).getNumericValue(); // in ms
    // var days = durationMs / (1000 * 60 * 60 * 24); // convert ms to days
    var days = Math.floor(durationMs / (1000 * 60 * 60 * 24)); // Force integer
    gs.info("NAIDILS - Record: " + grAttestReminder.number + ", Days since creation: " + days);

      if (days >= 13.5 && days < 14.5) {
        gs.info("NAIDILS - Sending 14-day reminder for: " + grAttestReminder.number);
        gs.eventQueue('sn_grc.attest.sendreminder', grAttestReminder, owner, '');
    } else if (days >= 29.5 && days < 30.5) {
        gs.info("NAIDILS - Sending 30-day reminder for: " + grAttestReminder.number);
        gs.eventQueue('sn_grc.attest.sendreminder', grAttestReminder, owner, ownerManager);
    }
}

its not goin inside the if loop atall , kindly help me here

@NAIDILE S 

what value came in log for days?

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@NAIDILE S 

Change the If condition from

 

 if (days >= 13.5 && days < 14.5)

 

TO

 

if (days >= -14.5 && days < -13.5)

OR

if (days == -14)

 

Accept the solution and mark as helpful if it does, to benefit future readers.
Regards,
Sumanth

 

Hi @SumanthDosapati @Ankur Bawiskar 
thanks its worked 

@NAIDILE S 

Glad to know.

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader