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-06-2022 02:20 AM
it means query for in between GlideRecord is not giving you the count
Try to debug further
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-07-2023 02:39 AM
Hi Ankur,
Your answer helped to create a schedule job for my similar requirement.
but I need to Send a reminder for all the HR Tasks which are assigned for a new hire(user).
For example:
Need to Send out one general reminder to the new hires to complete ALL employee HR Tasks assigned to him/her depending on due date for (2,4,7) days.
I also created a due date field in HR Task table by adding 2 days to the employee start day, so I want to trigger a notification depending on this due date field.
My Requirement:
send out one general reminder to the new hires to complete ALL employee tasks assigned to him/her after 2 days past joining date? If it’s possible also to repeat the reminder in the event that the new hire has not completed all tasks after the first reminder.
I am attaching whatever I created FYI.
Scheduled Job:
send7Days();
send2Days();
send0Days();
function send7Days() {
var gr = new GlideRecord('sn_hr_core_task');
gr.addEncodedQuery('hr_service=a7fbf4461b9e5c902fa3da4cbc4bcbc3^ORhr_service=0f022b791bee9410cc129759bc4bcbff^active=true^assigned_toISNOTEMPTY^u_due_dateONLast week@javascript:gs.beginningOfLastWeek()@javascript:gs.endOfLastWeek()');
gr.query();
while (gr.next()) {
gs.eventQueue("sn_hr_le.lifecycle_event_duedates", gr);
}
}
function send2Days() {
var gr = new GlideRecord('sn_hr_core_task');
gr.addEncodedQuery('hr_service=a7fbf4461b9e5c902fa3da4cbc4bcbc3^ORhr_service=0f022b791bee9410cc129759bc4bcbff^active=true^assigned_toISNOTEMPTY^u_due_dateONToday@javascript:gs.beginningOfToday()@javascript:gs.endOfToday()^ORu_due_dateONYesterday@javascript:gs.beginningOfYesterday()@javascript:gs.endOfYesterday()');
gr.query();
while (gr.next()) {
gs.eventQueue("sn_hr_le.lifecycle_event_duedates", gr);
}
}
function send0Days() {
var gr = new GlideRecord('sn_hr_core_task');
gr.addEncodedQuery('');
gr.query();
while (gr.next()) {
gs.eventQueue("hr_service=a7fbf4461b9e5c902fa3da4cbc4bcbc3^ORhr_service=0f022b791bee9410cc129759bc4bcbff^active=true^assigned_toISNOTEMPTY^u_due_dateONToday@javascript:gs.beginningOfToday()@javascript:gs.endOfToday()", gr);
}
}
Notification:
Notification HTML Content:
Hi,
Your Task: ${number} - is due on ${u_due_date}
please take necessary action from your end.
Thanks & Regards
HR Team
HR Task Form for Due Date:
Thank you in advance. I will be grateful if anyone could help on this.
Regards,
Bhuvana
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-03-2022 09:03 AM
Hello @Gopal14
You can check with below script:
(function () {
var query = "due_dateON{date_value}@javascript:gs.dateGenerate('{date_value}','start')@javascript:gs.dateGenerate('{date_value}','end')";
var queryArray = [];
var nowGDT = new GlideDateTime(); // today is 2022-10-03
var nowDate = nowGDT.getDate() + "";
nowGDT.addDays(-12); //-12 days from current date (i.e 2022-09-21)
var twelveDaysAgo = nowGDT.getDate() + "";
if (twelveDaysAgo)
queryArray.push(query.replaceAll("{date_value}", twelveDaysAgo));
nowGDT.addDays(6); //add 6 days to 2022-09-21 to get -6 days date (i.e. 2022-09-27) from today's date;
var sixDaysAgo = nowGDT.getDate() + "";
if (sixDaysAgo)
queryArray.push(query.replaceAll("{date_value}", sixDaysAgo));
nowGDT.addDays(3); // add 3 days to 2022-09-27 to get -3 days date (i.e 2022-09-30) from today's date
var threeDaysAgo = nowGDT.getDate() + "";
if (threeDaysAgo)
queryArray.push(query.replaceAll("{date_value}", threeDaysAgo));
nowGDT.addDays(6); // add 6 days to 2022-09-30 to get 3 days date (i.e 2022-10-06) form today's date
var threeDaysAhead = nowGDT.getDate() + "";
if (threeDaysAhead)
queryArray.push(query.replaceAll("{date_value}", threeDaysAhead));
var incidentGR = new GlideRecord("incident");
incidentGR.addEncodedQuery(queryArray.join("^OR"));
incidentGR.query();
while (incidentGR.next()) {
gs.eventQueue("incident.expiring", incidentGR, "", "");
}
})();