How to send a reminder notification based on due date

Gopal14
Tera Contributor

Hi Team,

 

I need to create a reminder workflow based on due Date using Scheduled Job.

Before 12 days, 6 days, 3 days, and After 3 days.

 

I have Event and Called event in scheduled job. below is my scheduled job script.

 

Gopal14_0-1664780346490.png

 

var gr = new GlideRecord('incident');
gr.addEncodedQuery('active=true^due_dateRELATIVEGT@dayofweek@ahead@12');
gr.query();

while (gr.next()) {
gs.eventQueue("incident.expiring", gr);
}

 

I have written code for only 12 days. How can I achieve for remaining days.

 

@asifnoor 

7 REPLIES 7

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

are you having same event name for 12,6,3 days or different ones?

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

same event

Hi,

then how in your email notification you are determining what content to show based on days

You can use similar code for other events then

send12Days();
send6Days();
send3Days();

// similarly do for after 3 days

function send12Days(){
	var gr = new GlideRecord('incident');
	gr.addEncodedQuery('active=true^due_dateRELATIVEGT@dayofweek@ahead@12');
	gr.query();
	while (gr.next()) {
		gs.eventQueue("incident.expiring", gr);
	}
}

function send6Days(){
	var gr = new GlideRecord('incident');
	gr.addEncodedQuery('active=true^due_dateRELATIVEGT@dayofweek@ahead@6');
	gr.query();
	while (gr.next()) {
		gs.eventQueue("incident.expiring", gr);
	}
}

function send3Days(){
	var gr = new GlideRecord('incident');
	gr.addEncodedQuery('active=true^due_dateRELATIVEGT@dayofweek@ahead@3');
	gr.query();
	while (gr.next()) {
		gs.eventQueue("incident.expiring", gr);
	}
}
Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hi @Ankur Bawiskar 

 

Below is my code.

 

gs.log('GOVREMINDER testing started1');

var task = new GlideRecord('sc_task');
task.addActiveQuery();
task.addEncodedQuery('request.u_catalog_item=96a1edb84794559022feb6be536d430b');
task.groupBy('assigned_to');
task.setLimit(1);
task.query();
while (task.next()){

//For each of the tasks assigned to each user check the due dates and run the following logic to start building the message
var string = 'Overdue Tasks:';

var twoweektask = new GlideRecord('sc_task');
//twoweektask.addEncodedQuery('request.u_catalog_item=96a1edb84794559022feb6be536d430b^due_dateRELATIVEGT@dayofweek@ahead@14^due_dateRELATIVELT@dayofweek@ahead@15^stateIN28,2');
twoweektask.addEncodedQuery('request.u_catalog_item=96a1edb84794559022feb6be536d430b^stateIN28,2^due_dateRELATIVEGT@dayofweek@ahead@14');
twoweektask.addQuery('assigned_to',task.assigned_to);
twoweektask.query();
if (twoweektask.next()){
// look up all the governance tasks and group them by assigned to. Look into using glide aggregate for this perhaps.
gs.log('GOVREMINDER twoweektask found');
//if there are tasks which are Due in 2 weeks from todays date add this to the string:
string += '\n' + 'Due in 2 weeks:';
}
while (twoweektask.next()){
string += '\n' + twoweektask.cmdb_ci.name + ' for ' + twoweektask.short_description;
// gs.eventQueue('task.reminder','twoweektask','task.assigned_to');

}

//Do the same again for 1 week:
var oneweektask = new GlideRecord('sc_task');
oneweektask.addEncodedQuery('request.u_catalog_item=96a1edb84794559022feb6be536d430b^due_dateRELATIVEGT@dayofweek@ahead@7^due_dateRELATIVELT@dayofweek@ahead@8^stateIN28,2');
oneweektask.addQuery('assigned_to',task.assigned_to);
oneweektask.query();
if (oneweektask.next()){
gs.log('GOVREMINDER oneweektask found');
//if there are tasks which are Due in 2 weeks from todays date add this to the string:
string += '\n' + 'Due in 1 weeks:';
while (oneweektask.next()){
string += '\n' + oneweektask.cmdb_ci.name + ' for ' + oneweektask.short_description;
// gs.eventQueue('task.reminder','oneweektask');
}
}


//do the same for 1 day
var onedaytask = new GlideRecord('sc_task');
onedaytask.addEncodedQuery('request.u_catalog_item=96a1edb84794559022feb6be536d430b^due_dateRELATIVEGT@dayofweek@ahead@1^due_dateRELATIVELT@dayofweek@ahead@1^stateIN28,2');
onedaytask.addQuery('assigned_to',task.assigned_to);
onedaytask.query();
if (onedaytask.next()){
gs.log('GOVREMINDER onedaytask found');
//if there are tasks which are Due in 2 weeks from todays date add this to the string:
string += '\n' + 'Due in 1 day:';
while (onedaytask.next()){
string += '\n' + onedaytask.cmdb_ci.name + ' for ' + onedaytask.short_description;
// gs.eventQueue('task.reminder','onedaytask');
}
}


//do the same for overdue by one week
var overdueoneweektask = new GlideRecord('sc_task');
overdueoneweektask.addEncodedQuery('request.u_catalog_item=96a1edb84794559022feb6be536d430b^due_dateRELATIVELT@dayofweek@ago@7^due_dateRELATIVEGT@dayofweek@ago@8^stateIN28,2');
overdueoneweektask.addQuery('assigned_to',task.assigned_to);
overdueoneweektask.query();
if (overdueoneweektask.next()){
gs.log('GOVREMINDER overdueoneweektask found');
//if there are tasks which are Due in 2 weeks from todays date add this to the string:
string += '\n' + 'Overdue by 1 week:';
while (overdueoneweektask.next()){
string += '\n' + overdueoneweektask.cmdb_ci.name + ' for ' + overdueoneweektask.short_description;
// gs.eventQueue('task.reminder','overdueoneweektask');
}
}

//do the same for overdue by two weeks
var overduetwoweektask = new GlideRecord('sc_task');
overduetwoweektask.addEncodedQuery('request.u_catalog_item=96a1edb84794559022feb6be536d430b^due_dateRELATIVELT@dayofweek@ago@14^due_dateRELATIVEGT@dayofweek@ago@15^stateIN28,2');
overduetwoweektask.addQuery('assigned_to',task.assigned_to);
overduetwoweektask.query();
if (overduetwoweektask.next()){
gs.log('GOVREMINDER overduetwoweektask found');
//if there are tasks which are Due in 2 weeks from todays date add this to the string:
string += '\n' + 'Overdue by 2 week:';
while (overduetwoweektask.next()){
string += '\n' + overduetwoweektask.cmdb_ci.name + ' for ' + overduetwoweektask.short_description;
// gs.eventQueue('task.reminder','overduetwoweektask');
}
}
gs.log('GOVREMINDER: ' + string);
gs.eventQueue('task.reminder',string,task.assigned_to);
}

 

when I am putting logs 

1st(GOVREMINDER testing started1) log is coming

then directly it is going into GOVREMINDER: Overdue Tasks:

 

Can you tell me what is the wrong in the code?