Trigger a notification based on employee start date (In user profile) for HR Tasks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2023 04:41 AM
Hello All,
I need to trigger a notification based on below conditions,
the notification has to be sent to the assigned person of HR task under HR LCE Case.
When to send conditions:
HR Service ->Onboarding
HR Profile ->After 2 days of 'employee start date' (It is a field under HR Profile table)
User country -> India
So I need to send out a reminder to the user with Subject Line: 'Your tasks are in due, please complete'.
I have tried below schedule job, but not working as expected.
var par = new GlideRecord('sn_hr_le_case');
par.addEncodedQuery('hr_service=0f022b791bee9410cc129759bc4bcbff');
par.query();
while (par.next()) {
var user = par.getValue('subject_person');
var caseID = par.sys_id;
var gr = new GlideRecord('sn_hr_core_profile');
gr.addQuery('user', 'e686369f1b0265d0c2904227cc4bcb5b');
gr.addEncodedQuery('user.location.country=in');
gr.query();
while (gr.next()) {
var empSD = new GlideDateTime(gr.getValue('employment_start_date'));
empSD.addDays(2);
var empSD2 = empSD.getDate();
var case_number = par.getValue('number');
var task = new GlideRecord('sn_hr_core_task');
task.addQuery('parent',case_number);
task.addEncodedQuery('hr_service=0f022b791bee9410cc129759bc4bcbff^active=true^stateIN10,18^ORstate=20');
task.query();
if (task.next()) {
var date = new GlideDateTime();
var dt = date.getDate();
var dur = GlideDateTime.subtract(empSD2, dt);
var days = dur.getRoundedDayPart();
if (days == '0') {
gs.eventQueue("sn_hr_le.lifecycle_event_duedates", par, par.subject_person);
}
}
}
}
Please help me with solution/suggestions.
I will be more thankful to you.
Regards,
Bhuvana
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2023 06:05 AM
Hi @bhuvana7
Use Scheduled events to tackle the issue.
var gdt = new GlideDateTime(gr.sys_created_on);
gdt.addDaysUTC(1);
gs.eventQueueScheduled('approval.reminder', gr, '', '', gdt);
Replace the snippet with the actual variable names of your needs.
Please mark it Correct and Hit Like if you find this helpful!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2023 07:01 AM
HI @Karthiga S ,
I verified it from log messages, please see the below-mentioned comment. Until my comment, my script is working!
var par = new GlideRecord('sn_hr_le_case');
par.addEncodedQuery('hr_service=0f022b791bee9410cc129759bc4bcbff');
par.query();
while (par.next()) {
var user = par.getValue('subject_person');
var caseID = par.sys_id;
var gr = new GlideRecord('sn_hr_core_profile');
gr.addQuery('user', 'e686369f1b0265d0c2904227cc4bcb5b');
gr.addEncodedQuery('user.location.country=in');
gr.query();
//my script is working till here
while (gr.next()) {
var empSD = new GlideDateTime(gr.getValue('employment_start_date'));
empSD.addDays(2);
var empSD2 = empSD.getDate();
var case_number = par.getValue('number');
var task = new GlideRecord('sn_hr_core_task');
task.addQuery('parent',case_number);
task.addEncodedQuery('hr_service=0f022b791bee9410cc129759bc4bcbff^active=true^stateIN10,18^ORstate=20');
task.query();
if (task.next()) {
var date = new GlideDateTime();
var dt = date.getDate();
var dur = GlideDateTime.subtract(empSD2, dt);
var days = dur.getRoundedDayPart();
if (days == '0') {
gs.eventQueue("sn_hr_le.lifecycle_event_duedates", par, par.subject_person);
}
}
}
}