Trigger a notification based on employee start date 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();
//my script 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);            
            }
        }
    }
}

 

Please help me with solution/suggestions.
I will be more thankful to you.

 

Kind Regards,

Bhuvana

1 ACCEPTED SOLUTION

Eswar Chappa
Mega Sage
Mega Sage

Hi @bhuvana7 Can you please check with the below code:

 

 

var par = new GlideRecord('sn_hr_le_case');
par.addEncodedQuery('hr_service=0f022b791bee9410cc129759bc4bcbff');
par.query();
while (par.next()) {
    var user = par.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.employment_start_date);
        empSD.addDays(2);
        var empSD2 = empSD.getDate();   
        var task = new GlideRecord('sn_hr_core_task');
        task.addQuery('parent',caseID);
        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);            
            }
        }
    }

 

 

Thanks & Regards,

Eswar Chappa

Mark my answer correct and Helpful if this helps you 😀

View solution in original post

3 REPLIES 3

Eswar Chappa
Mega Sage
Mega Sage

Hi @bhuvana7 Can you please check with the below code:

 

 

var par = new GlideRecord('sn_hr_le_case');
par.addEncodedQuery('hr_service=0f022b791bee9410cc129759bc4bcbff');
par.query();
while (par.next()) {
    var user = par.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.employment_start_date);
        empSD.addDays(2);
        var empSD2 = empSD.getDate();   
        var task = new GlideRecord('sn_hr_core_task');
        task.addQuery('parent',caseID);
        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);            
            }
        }
    }

 

 

Thanks & Regards,

Eswar Chappa

Mark my answer correct and Helpful if this helps you 😀

Hi Eswar,

 

Thank you so much for your kindness and support. Your suggestions helped a lot to me!

 

Kind Regards

Bhuvana

Hi Eswar,

 

As per your suggestions below Scheduled job script is triggered, But one condition is missing. depending on employment_start_date the job should trigger.

For Ex:

  • In script we have added 2 days to the 'employment_start_date' and the value stored in 'test' variable.
  • And I am storing today date in the variable 'today'.
  • So, my scheduled job needs to trigger if test and today variables matches.
  • For this I tried below script but it is not filtering the records by 'employment_start_date'
  • Please correct me with this this script or suggest any other ways.

 

var par = new GlideRecord('sn_hr_le_case');
gs.info("testing SJ");
par.addEncodedQuery('active=true^hr_service.fulfillment_type=lifecycle_event^subject_person.location.country=in^hr_service=0f022b791bee9410cc129759bc4bcbff');

par.query();
while (par.next()) {
     var test = new GlideDateTime(par.subject_person_hr_profile.employment_start_date);
     test.addDays(2);
    var today = new GlideDateTime();
    var gr = new GlideRecord('sn_hr_core_task');
    var arr = [];
    gr.addQuery('parent', par.sys_id);
	gr.addQuery('u_due_date', today);
    gr.query();
    while (gr.next()) {
        arr.push(gr.sys_id + "");
    }
   if (test.getGlideObject().getDisplayValue() === today.getGlideObject().getDisplayValue()) {
        gs.eventQueue("sn_hr_le.lifecycle_event_duedates", par, par.subject_person, arr.toString());
        gs.info('dd3 successful' + arr.toString());
    }
}