How to send a reminder notification based on due date
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-03-2022 12:00 AM - edited 10-03-2022 12:01 AM
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.
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-03-2022 12:11 AM
Hi,
are you having same event name for 12,6,3 days or different ones?
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-03-2022 02:38 AM
same event
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-03-2022 03:26 AM
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);
}
}
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-06-2022 02:07 AM
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?