Trigger a notification based on employee start date (In user profile) for HR Tasks

bhuvana7
Tera Contributor

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

 

2 REPLIES 2

Karthiga S
Kilo Sage

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!

 

 

 

 

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);            
            }
        }
    }
}