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
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  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

View solution in original post

7 REPLIES 7

Ankur Bawiskar
Tera Patron
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  ||  ✨ 9x 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  ||  ✨ 9x 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  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader