Custom Discovery Schedule with a Condition Script

Jim Coyne
Kilo Patron

The "Run" choices we have when setting up a Discovery Schedule are:

  • Daily
  • Weekly
  • Monthly
  • Periodically
  • Once
  • On Demand

 

We would have to create multiple schedules in order to run a Discovery every weekday or just weekends.   Or do we? 

It may not be obvious, but because the Discovery Schedule table is a subclass of the Scheduled Job table, we have access to the Conditional checkbox and Condition script fields.   By adding those fields to the Discovery Schedule form, we can now use a script to decide when it should run.   So for example, set the "Run" field to "Daily", check the "Conditional" field and add the following script to the "Condition" field to run a Discovery on weekends only:

(function() {
  //run on weekends only
  var day = new Date().getDay();
  return (day == 0 || day == 6);

})();

 

Skip Sundays:

(function() {
   //skip Sundays
   var day = new Date().getDay();
   return (day != 6);

})();

 

This script for Monday to Friday:

(function() {
  //run Monday to Friday
  var day = new Date().getDay();
  return (day != 0 && day != 6);

})();

 

This one for Monday, Wednesday and Fridays:

(function() {
  //run on Monday, Wednesday and Fridays
  var day = new Date().getDay();
  return (day == 1 || day == 3 || day == 5);

})();

So what happens is the Discovery Schedule will in fact "run" every day at the specified time, but if the condition fails, the job ends without actually kicking off a Discovery.

1 ACCEPTED SOLUTION

Jim Coyne
Kilo Patron

Just setting this answer as correct as the actual thread was not meant as a question and it cannot be changed because it came from the original Community site.

View solution in original post

26 REPLIES 26

aleck_lin
ServiceNow Employee
ServiceNow Employee

Jim,



I promise to make every effort to make scheduling easier in the future. Nice workaround.


It would be nice to have the following additional "Run" options for all Scheduled Jobs:


  • Weekdays
  • Weekends
  • Last day of the month
  • Start of Calendar Quarter
  • End of Calendar Quarter
  • In this Schedule


The "In this Schedule" option would then allow us to select a custom Schedule record which would allow us to configure really custom run times.


I second Jim's list of options and would like to add two more:


First Day of Week


First Day of Month.



That way I can easily run a report on the previous time period.


Not sure when they were added, but the following additional options are available in Fuji, Geneva, Helsinki and Istanbul now:


  • Weekdays
  • Weekends
  • Month Last Day
  • Calendar Quarter End
  • After Discovery


Nice to see 4 of the 6 suggestions were added, but I'm a little confused why they were only added for Discovery Schedules and not all Scheduled Jobs?   Obviously "After Discovery" make sense just for Discovery, but the other options would have been useful for all jobs.



aleck.lin do you know the reason they were limited to Discovery only?