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

it means query for in between GlideRecord is not giving you the count

Try to debug further

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

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:

bhuvana7_0-1688722250347.png

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:

bhuvana7_1-1688722355313.png

 

Thank you in advance. I will be grateful if anyone could help on this.
Regards,

Bhuvana

 

Mahendra RC
Mega Sage

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, "", "");
	}
})();