Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

3 day incremental reminder notification via scheduled script

Imran1
Giga Guru

Hi Everyone,

I have a requirement from client to send 3 days incremental reminder notifications when the record is unattended by the respective users. For accomplishing this I have written a schedule job but unsure How I can have a increment variable which gets factored when the schedule job runs and check if the record was unattended and sends notification on every 3 days, 6 days, 9 days so on until the record is actioned.

Below is the script that I have written to attain it - which is not complete. Any suggestion to meet the above requirement is highly appreciated.

(function(){
var startDate = '';
var incrementaldays = 3;
var counter = 1;
var nDate = '';
var gr = new GlideRecord('table_name');
gr.addQuery('workflow_state','3');
gr.query();
while(gr.next()){
startDate = new GlideDateTime(gr.start_state);
startDate.getDate();
nDate(startDate.addDaysUTC(incrementaldays));
}
if(nDate == new GlideDate()){
gs.eventQueue('3_incremental_sme',gr);
}

})();

(function(){
var startDate = '';
var incrementaldays = 3;
var counter = 1;
var nDate = '';
var gr = new GlideRecord('table_name');
gr.addQuery('workflow_state','6');
gr.query();
while(gr.next()){
startDate = new GlideDateTime(gr.start_state);
startDate.getDate();
nDate(startDate.addDaysUTC(incrementaldays));
}
if(nDate == new GlideDate()){
gs.eventQueue('3_incremental_tl',gr);
}

})();

Thank You for time and effort

Regards,
Imran

 

1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron

Hi,

try something like this in your schedule job script

enhance it as per your need

var gr = new GlideRecord('table_name');
gr.addQuery('workflow_state','3');
gr.query();
while(gr.next()){

var termiDate = new GlideDateTime(gr.start_state);
var today = new GlideDateTime();
var dur = new GlideDuration();
dur = GlideDateTime.subtract(today, termiDate); 
var dayCt = dur.getNumericValue(); 
dayCt = (dayCt / (60 * 60 * 24 * 1000)); 
dayCt = Math.round(dayCt);
gs.info(dayCt, 'dayCT');
if (dayCt == 3 || dayCt == 6 || dayCt == 9) {// if the difference between date is 3, 6 and 9.

if(dayCT == 3){
gs.eventQueue('event name 3 days', gr, );
}
if(dayCT == 6){
gs.eventQueue('event name 6 days', gr, );
}
if(dayCT == 9){
gs.eventQueue('event name 9 days', gr, );
}
}

}

Regards
Ankur

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

View solution in original post

7 REPLIES 7

Ankur Bawiskar
Tera Patron

Hi,

try something like this in your schedule job script

enhance it as per your need

var gr = new GlideRecord('table_name');
gr.addQuery('workflow_state','3');
gr.query();
while(gr.next()){

var termiDate = new GlideDateTime(gr.start_state);
var today = new GlideDateTime();
var dur = new GlideDuration();
dur = GlideDateTime.subtract(today, termiDate); 
var dayCt = dur.getNumericValue(); 
dayCt = (dayCt / (60 * 60 * 24 * 1000)); 
dayCt = Math.round(dayCt);
gs.info(dayCt, 'dayCT');
if (dayCt == 3 || dayCt == 6 || dayCt == 9) {// if the difference between date is 3, 6 and 9.

if(dayCT == 3){
gs.eventQueue('event name 3 days', gr, );
}
if(dayCT == 6){
gs.eventQueue('event name 6 days', gr, );
}
if(dayCT == 9){
gs.eventQueue('event name 9 days', gr, );
}
}

}

Regards
Ankur

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

Hi Imran,

Hope you are doing good.

Let me know if I have answered your question.

If so, please mark appropriate response as correct & helpful so that this thread can be closed and others can be benefited by this.

Regards
Ankur

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

Hi Ankur,

Just checking if I could have the script a perpetual one with 3 days intervals (without any n'th value)

I have modified the script as below and it worked for me taking clue from your script


reminderSME();

function reminderSME() {
var startDate = '';
var day3 = 3,
day6 = 6,
day9 = 9,
day12 = 12;
var nDate3, nDate6, nDate9, nDate12;
var toDay = new GlideDate();

var gr = new GlideRecord('table_name');
gr.addQuery('workflow_state', '3');
gr.addNotNullQuery('state_start');
gr.query();
while (gr.next()) {
var derivedDate = gr.state_start;
startDate = new GlideDate();
startDate.setValue(derivedDate);


nDate3 = new GlideDate();
nDate3.setValue(startDate);
nDate3.addDaysUTC(day3);


nDate6 = new GlideDate();
nDate6.setValue(startDate);
nDate6.addDaysUTC(day6);

nDate9 = new GlideDate();
nDate9.setValue(startDate);
nDate9.addDaysUTC(day9);

nDate12 = new GlideDate();
nDate12.setValue(startDate);
nDate12.addDaysUTC(day12);

if (nDate3.getValue() == toDay.getValue()) {
gs.eventQueue('3_incremental_sme', gr);
}

if (nDate6.getValue() == toDay.getValue()) {
gs.eventQueue('3_incremental_sme', gr);
}
if (nDate9.getValue() == toDay.getValue()) {
gs.eventQueue('3_incremental_sme', gr);
}
if (nDate12.getValue() == toDay.getValue()) {
gs.eventQueue('3_incremental_sme', gr);
}
}

}

Regards,
Imran

Glad to hear

Regards
Ankur

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