Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Send email reminder notification to HR case ticket.

Naveen87
Tera Guru

 Hello Guys,

I need to send a reminder notification on HR case ticket .

For example: If I was assigned a case on Monday 1st June and the State is “Ready “or “Work in Progress” .

I would receive a reminder on the 5th business day after it’s been opened (6th July) and again 2 days after that (Wednesday, 8th July).

I would continue to receive the reminder every 2 business days until the State is changed to “closed complete”, “closed incomplete” or “suspended”.

 

Someone help me here schedule job script. Please.

 

Thank you.

1 ACCEPTED SOLUTION

Hi Naveen,

Something like this; updated the script for 5, 7, 9 days

HRreminder();
function HRreminder() {

var task = new GlideRecord('hr_task');
task.addQuery('short_description', 'receive draft');
task.addQuery('active', true);
task.query();
while(task.next()){

var isToday5BusinessDays = checkBusinessDays(task.sys_created_on, 5);
if(isToday5BusinessDays){
gs.eventQueue('event.name', task, gs.getUserID(), gs.username()); // your event name for 5 days reminder email
}

var isToday7BusinessDays = checkBusinessDays(task.sys_created_on, 7);
if(isToday7BusinessDays){
gs.eventQueue('event.name', task, gs.getUserID(), gs.username()); // your event name for 7 days reminder email
}

var isToday9BusinessDays = checkBusinessDays(task.sys_created_on, 9);
if(isToday9BusinessDays){
gs.eventQueue('event.name', task, gs.getUserID(), gs.username()); // your event name for 9 days reminder email
}

}
}

function checkBusinessDays(createdTime, days){

var gdt =  new GlideDateTime(createdTime);
var dc = new DurationCalculator();
dc.setSchedule('090eecae0a0a0b260077e1dfa71da828'); // Schedule sys_id I have used 8-5 weekdays excluding holidays 
dc.setStartDateTime(gdt);
dc.calcDuration(days*9*3600); // 9 hours is the schedule time from 8 to 5

var edt = new GlideDateTime(dc.getEndDateTime());

var nowTime = new GlideDateTime();

if(nowTime.getNumericValue() == edt.getNumericValue())
return true;
else
return false;
}

Regards
Ankur

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

View solution in original post

24 REPLIES 24

Hi Naveen,

Something like this; updated the script for 5, 7, 9 days

HRreminder();
function HRreminder() {

var task = new GlideRecord('hr_task');
task.addQuery('short_description', 'receive draft');
task.addQuery('active', true);
task.query();
while(task.next()){

var isToday5BusinessDays = checkBusinessDays(task.sys_created_on, 5);
if(isToday5BusinessDays){
gs.eventQueue('event.name', task, gs.getUserID(), gs.username()); // your event name for 5 days reminder email
}

var isToday7BusinessDays = checkBusinessDays(task.sys_created_on, 7);
if(isToday7BusinessDays){
gs.eventQueue('event.name', task, gs.getUserID(), gs.username()); // your event name for 7 days reminder email
}

var isToday9BusinessDays = checkBusinessDays(task.sys_created_on, 9);
if(isToday9BusinessDays){
gs.eventQueue('event.name', task, gs.getUserID(), gs.username()); // your event name for 9 days reminder email
}

}
}

function checkBusinessDays(createdTime, days){

var gdt =  new GlideDateTime(createdTime);
var dc = new DurationCalculator();
dc.setSchedule('090eecae0a0a0b260077e1dfa71da828'); // Schedule sys_id I have used 8-5 weekdays excluding holidays 
dc.setStartDateTime(gdt);
dc.calcDuration(days*9*3600); // 9 hours is the schedule time from 8 to 5

var edt = new GlideDateTime(dc.getEndDateTime());

var nowTime = new GlideDateTime();

if(nowTime.getNumericValue() == edt.getNumericValue())
return true;
else
return false;
}

Regards
Ankur

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

Hi Ankur, 

 

I tried the codes and executed the Schedule jobs.

But it missed.

Idk what needs to be done here. Please suggest if i'm missing something.

 

1.I have created 3 notification which are fired by 3 event.

2.Schedule job.

find_real_file.png

 

3. I clicked on execute now and this happened.

find_real_file.png

 

Please suggest and correct me if i'm wrong somewhere.

 

Thank you..

Hi Naveen,

Did you verify your job triggered or not?

I could see you are using some condition in your condition field of job

the last line of condition field should evaluate to true

so update as below

hr.hasNext();

Regards
Ankur

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

@Ankur Bawiskar 

I have similar requirement to send email reminder to the "HR Task Assigned to" after 3 business days the task created on. I am try using above script, execute it on demand, but emails are not triggered nor the event is getting created. I can see 8 hr task created 3 days before & active = true.

Created Event and notification......what I am missing?

@Ankur Bawiskar 

I have similar requirement - to send email reminder to Assigned to aster 3 business days. I am trying to use this script, but event is not created nor the emails are triggered.

I created Event & notification. Running On demand schedule job. I can see there are 8 HR task created 3 days back, and active = true.

What I am missing? can you please help.