- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-01-2023 12:32 AM
Hello all,
I need to configure email notifications which will be triggered after 7,14,21 days. The final reminder is the one post completing 21days. I am using event, notification, scheduled script execution, email script
Could anyone please help me out with the scripting part here?
Any kind of help would be highly appreciated.
Thank you
.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-01-2023 07:26 AM - edited 10-01-2023 10:20 PM
Hi @Utkarsha ,
Please use the below scheduled script to trigger the notifications.
var gr = new GlideRecord('sysapproval_approver');
gr.addEncodedQuery('sysapproval.numberSTARTSWITHINC^state=requested'); // assuming the reminder needs to be sent for Incident records, please modify the query based on your requirement
gr.query();
while(gr.next()){
var createdDate = new GlideDateTime(gr.sys_created_on);
var today = new GlideDateTime();
var noOfDays = GlideDateTime.subtract(today, createdDate).getDayPart();
if (noOfDays == 7 || noOfDays == 14 || noOfDays == 21) {
gs.eventQueue('reminder_email', gr, gr.approver,noOfDays);
}else{
//
}
}
You can write a Email Script where u can use event.parm2 to indicate the reminder email whether its 1/2/final reminder. You can use same email for triggering all the reminder notifications.
Please mark my answer helpful & accepted if it helps you resolve your query.
Thanks,
Danish
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-01-2023 01:32 AM - edited 10-01-2023 01:58 AM
Hi @Utkarsha ,
Use below script in schedule job runs daily and change table name and encoded query and event names accordingly.
notifications.
var gr = new GlideRecord('incident ');
gr.addEncodedQuery(‘add_your_query according to your requirment');
gr.query();
if (gr.next()) {
var createdDate = new GlideDateTime(gr.sys_created_on);
var today = new GlideDateTime();
var daysSinceCreation = GlideDateTime.subtract(today, createdDate).getDayPart();
if (daysSinceCreation == 7) {
// Trigger the 7-day notification
gs.eventQueue('notification_trigger_event', gr, gr.caller_id);
} else if (daysSinceCreation == 14) {
// Trigger the 14-day notification
gs.eventQueue('notification_trigger_event', gr, gr.caller_id);
} else if (daysSinceCreation == 21) {
// Trigger the 21-day notification
gs.eventQueue('notification_trigger_event', gr, gr.caller_id);
}
}
Please mark helpful and solution proposed if it works.
Thanks,
Anand
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-01-2023 07:26 AM - edited 10-01-2023 10:20 PM
Hi @Utkarsha ,
Please use the below scheduled script to trigger the notifications.
var gr = new GlideRecord('sysapproval_approver');
gr.addEncodedQuery('sysapproval.numberSTARTSWITHINC^state=requested'); // assuming the reminder needs to be sent for Incident records, please modify the query based on your requirement
gr.query();
while(gr.next()){
var createdDate = new GlideDateTime(gr.sys_created_on);
var today = new GlideDateTime();
var noOfDays = GlideDateTime.subtract(today, createdDate).getDayPart();
if (noOfDays == 7 || noOfDays == 14 || noOfDays == 21) {
gs.eventQueue('reminder_email', gr, gr.approver,noOfDays);
}else{
//
}
}
You can write a Email Script where u can use event.parm2 to indicate the reminder email whether its 1/2/final reminder. You can use same email for triggering all the reminder notifications.
Please mark my answer helpful & accepted if it helps you resolve your query.
Thanks,
Danish
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-01-2023 10:43 AM
Hi @Anand Kumar P ,
Hope you are doing great.
o configure email notifications triggered after 7, 14, and 21 days, with the final reminder sent after completing 21 days in ServiceNow, you can follow these steps:
- In your ServiceNow instance, navigate to "System Notification" > "Notifications." Create a new notification for the email you want to send. Configure the email content, subject, and recipient as needed
-
Create an Event:
- Go to "System Policy" > "Events."
- Create a new event that will trigger this notification. Give it a meaningful name.
- Set the "Table" to the table you're tracking, such as "Incident" or "Task."
- Define the conditions for when this event should be fired. For example, you might use a condition like "incident_state = 'In Progress'."
-
Create a Scheduled Script Execution:
- In ServiceNow, go to "System Scheduler" > "Scheduled Script Execution."Create a new schedule for your script. Specify the frequency, such as daily.
- In the script field, write a script that checks the records in your target table.
- Calculate the time difference between the current date and the date the record was created.
- If the difference is 7, 14, or 21 days, trigger the event you created earlier.
simplified example of a script to get you started:
// Assuming 'current' represents the record being checked
var createdDate = new GlideDateTime(current.sys_created_on);
var currentDate = new GlideDateTime();
var daysSinceCreated = GlideDateTime.subtract(currentDate, createdDate).getDayPart();
if (daysSinceCreated == 7 || daysSinceCreated == 14 || daysSinceCreated == 21) {
gs.eventQueue("your_custom_event_name", current, current.user); // Trigger the event
}
Regards,
Riya Verma