How to send reminder notification before 30 days based on End Date

chanikya
Tera Guru

Hi,

 

in catalog items, i have one filed, documents submit "Last  End Date"  (variable in catalog item)

ex: Last End Date=20/08/2018  19:50:20  then notification trigger one month before means on 20/07/2018.

So how can we do it.

my Br script is not working...

if(gs.dateDiff(gs.nowDateTime(), current.variables.ex_date.getDisplayValue(),true)/3600>=720)
{
var gdt = new GlideDateTime(current.variables.ex_date.getDisplayValue());
gdt.addDaysLocalTime(-30);
gs.eventQueueScheduled ( "thirty" , current, gs. getUserID ( ) , gs. getUserName ( ) , gdt) ;

}

1 ACCEPTED SOLUTION

Hi Chanikya,

You need to use your variable instead of my column name. Also I think you need to run this only for specific catalog item so if yes then add that query as well.

try this:

send1streminder();
function send1streminder() {
var task = new GlideRecord('sc_req_item');
task.addQuery('active', 'true');

var encodedQuery = task.variables.ex_date + 'RELATIVEGE@dayofweek@ahead@30^' + task.variables.ex_date + 'RELATIVELE@dayofweek@ahead@31';

task.addEncodedQuery(encodedQuery);
task.query();
while(task.next()){
gs.eventQueue('last_date', task, gs.getUserID(), gs.username());
}
}

Mark Correct if this solves your issue and also hit Like and Helpful if you find my response worthy based on the impact.
Thanks
Ankur

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

View solution in original post

20 REPLIES 20

Hi Chanikya,

Good to hear that it worked. Can you also mark my answer as correct, helpful. This helps in removing this question from unanswered list and helps users to learn from your thread. Thanks in advance.

Regards

Ankur

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

Hello Ankur,

I need to exclude Weekends and holidays(I have a schedule), How can I exclude that days?

Thanks

Shashikant Yada
Tera Guru

Try below code in scheduled job:

var gr = new GlideRecord('sc_req_item');
gr.addEncodedQuery('');//add the item name for which you wanted to run the script
gr.query();
while(gr.next()){
var datedif = gs.dateDiff(gr.variables.variable_name,gs.nowDateTime());//add variable name
var datetrim=datedif;
var index=datedif.indexOf(' ');
var aftertrim=datetrim.substring(0,index);
gs.log('check date', aftertrim)
if(aftertrim < '30'){
gs.eventQueueScheduled ( "thirty" , current, gs. getUserID ( ) , gs. getUserName ( )) ;
}

}

Hi 

 

not more than 30 days , not less than 30 days

 

ex: Last Date= 20/08/2018 12:10:50  trigger exact 30 days count 

to days date is 13/07/2018 to tigger 30 days of Last Date 13/08/2018, should not trigger 12,14,15,16 / 08/2018

change it to if(aftertrim == '30'){

Also change check what log you are getting for aftertrim