Special cases in job schedules
Summarize
Summary of Special cases in job schedules
This guide addresses important considerations and special cases when scheduling jobs in ServiceNow, particularly focusing on end-of-month scheduling, weekday-only execution, running scheduled jobs from scripts, and handling scheduled jobs imported from other instances.
Show less
End of the month schedules
- Because months vary in length, avoid scheduling jobs explicitly on the 29th or 30th to prevent non-execution in shorter months like February.
- Scheduling on the 31st executes the job on the last day of the month, even if that month has fewer than 31 days (e.g., February 28 or 29 in leap years).
Weekday schedules
- To restrict scheduled scripts to run only on weekdays, use a script that checks the current day and returns true only for Monday through Friday.
- For scheduled report emails, conditional scripts run in a sandbox environment with limitations: no function definitions and restricted API usage.
- If complex conditional logic using Glide classes is needed for scheduled reports, implement the logic in a Scheduled Job and programmatically trigger the report from that job.
Scheduled jobs from scripts
- To execute a scheduled script job programmatically, query the job by name from the sysautoscript table and invoke
SncTriggerSynchronizer.executeNow(). - You can execute scheduled jobs from multiple tables, including scheduledimportset (import sets), sysautoscript (script execution), sysautotemplate (template generation), and sysautoreport (reports).
- Note that
SncTriggerSynchronizerdoes not support scheduling jobs for future execution, only immediate execution.
Running scheduled scripts and jobs imported from another instance
- Scheduled Script Execution and Scheduled Jobs are data records in the ServiceNow AI Platform and are excluded from update sets by default.
- To verify if a table is included in update sets, check the updatesync=true attribute in the system dictionary.
- Data records can be exported/imported via XML, but importing does not automatically create Schedule Item (systrigger) records, so imported jobs won’t run until updated in the target instance.
- To activate imported scheduled jobs or scripts, manually update their records in the target instance to trigger scheduling.
Some special cases require care in job scheduling.
End of the month schedules
Because months have different lengths, take care when scheduling jobs for the end of the month.
- Scheduling an event for the 29th or 30th is not recommended, because the scheduled job is executed in months (like February) which are shorter than those dates.
- If an event is scheduled for the 31st, it executes on the last day of the month, even if the month is shorter.
For example, something scheduled to run on the 31st of the month runs on February 28 or February 29 in a leap year.
Weekday schedules
For scheduled scripts, use the following script to run only on weekdays:
var isWeekday;
var today = new Date();
var dayOfWeek = today.getDay(); // Get day of the week(0 = Sunday, 1 = Monday, ... , 6 = Saturday)
switch (dayOfWeek) {
case 0: // Sunday
case 6: // Saturday
isWeekday = false;
break;
default:
isWeekday = true;
}
answer=isWeekday;
If the conditional script on a Scheduled Report is more complex and you need to make use of our Glide classes, then please use the following steps as a workaround:
- Create a Scheduled Job and complete all the conditional logic of the Scheduled Report inside the Scheduled Job.
- If all the conditional logic is satisfied, you can trigger the Scheduled Report with the following script inside the Scheduled Job.
var schRpGr = new GlideRecord("sysauto_report"); schRpGr.get("<sys_id of the scheduled report>"); gs.executeNow(schRpGr);
Scheduled jobs from scripts
To execute a scheduled job triggered by an event, use the following script:
//Execute a scheduled script job
var rec = new GlideRecord('sysauto_script');
rec.get('name', 'YOUR_JOB_NAME_HERE');
SncTriggerSynchronizer.executeNow(rec);
- scheduled_import_set (Scheduled Import Sets)
- sysauto_script (Scheduled Script Execution)
- sysauto_template (Scheduled Template Generation)
- sysauto_report (Scheduled Report)
SncTriggerSynchronizer does not provide methods to execute
scheduled jobs in the future.Running scheduled scripts and jobs imported from another instance
Scheduled Script Execution and Scheduled Jobs are categorized as data records in the ServiceNow AI Platform, which means they are excluded from update sets. To determine if a table is included, navigate to and view the Attribute value for the table in question. Only tables with the attribute update_sync=true are included in update sets.
You can optionally export and import data records via XML. However, to prevent unexpected data changes, Schedule Item [sys_trigger] records are not created for data records imported from an XML file such as an update set. To run scheduled jobs or scripts imported from another instance, update the corresponding job or script record in the target instance.