Here are some of the questions we have been repeatedly getting from customers and hope they clarify how Scheduleright can solve your Scheduling issues.
If you have any questions which are not covered here, feel free to ping us at support@datasert.com
Does it support scheduling granularity at minute level?
Yes, schedule force supports granularity up to a minute. You can run many (Queueable or Batch) jobs every minute.
Does it offer pre-defined intervals and custom timing?
Yes, it defines many pre-defined intervals that many of our customers use (like First day of Quarter
or Last day of Quarter
or End of Year
etc). If that doesn’t suit your needs you can define custom timing using cron expressions.
Does it support special chars for minute and second segments of Cron?
It supports using any of special chars like , / - *
for minute segment. But for second it must be zero always.
Does it support manually kicking off jobs?
Yes, we have a Frequency called On Demand
that can be used to run jobs manually. It can also be used to kick off jobs based custom logic from within the Apex Code.
Does it support Timezones?
Yes, it supports Default Timezones as well as Job specific timezones. As you can see the documentation, Timezones serves two purposes. When to kick off as well as how to format dates when logging. If you are using On Demand
Frequency, then timezone is used only merely for logging date formatting.
How many Queueable and Batch jobs can it run every minute?
Queueable: It can schedule up to 49 (50 Salesforce maximum - 1) jobs
every minute. It uses one job for internal processing.
Batch: It can schedule up to 100 - current processing batch jobs
. So if there are no Batch jobs running, it can schedule up to 100. If there are some running, let’s say 15, then it can schedule 85 of them.
Schedulable
Apex Classes?
Do we need to create No, it is not required. Your engineers need to implement only Queueable
or Batchable
interfaces. Scheduleright internally has Schedulable
implementations that it uses to schedule with Salesforce.
Future
jobs?
Does it support scheduling No, it does not support scheduling Future
jobs.
It is for two reasons.
- Even though Salesforce doesn’t say it,
Future
jobs are effectivelydeprecated
Future
doesn’t allow to fetch associatedApex Job Id
for us to track the execution
Do we need to implement custom interfaces to schedule?
No and Yes.
If you just want to run a Queueable
or Batch
job as it is written, No you don’t need to implement any custom interfaces. They can be scheduled fine in Scheduleright.
Scheduleright has a couple of powerful features:
-
Job Parameters
allows you to set custom values for each Job allowing you to write dynamic Jobs. So you can customize your job execution without having to make code changes all the time. -
Run Log
allows you to capture run log and store it for later analysis.
If you want to take advantage of these features, your jobs need to extend from SchedulerJobBase
or implement SchedulerJob
interface.
Does it support to wait for previous runs of the same job to complete before starting new ones?
Yes, unlike Salesforce standard scheduler, Scheduleright can be configured to Wait for Previous Runs
of the same job before starting new run.
How about waiting on completion of other Jobs?
Yes, this is one of the powerful features of Scheduleright. It can be configured with one or more Job Dependencies
. New Job will not be started until runs of those
jobs are finished.
Does it support parent/child Jobs?
Yes, it supports parent and child jobs. All child jobs executions are tied to Parent and the only parent can be configured with required Frequency
.
Can we disable jobs without having to delete them?
Yes, you can disable jobs. Scheduleright will not schedule any new jobs if they are disabled.
Can we set arbitrary delay for a Job?
Yes, you can set an arbitrary for a job. Scheduleright will not schedule that job that delay is reached. After that, it will follow usual Frequency. If job Frequency matures while it has delay set, Job will be marked as Ready to Process
and soon after delay passed, it will schedule it.
What can it do with Apex Exception Emails that Salesforce sends when a job fails?
It comes with implementation of receive those emails and appends that log to appropriate run. So you always have all the log associated with a run in one place.
Does it keep run history? If yes, does it help cleanup after?
Yes, each Job’s execution is tracked as a Job Run
. So you can see all executions of a Job and their status, and logs. It also comes with job SchedulerCleanupRunsBatch
to cleanup runs. When you install this package, this job is automatically setup to run every day (at midnight) and it is configured to delete all Runs which are older than 30 days. You can change the timing of its run or how many days old runs it deletes using Job Parameters.
Does it notify if a job fails?
Yes, we have powerful notification built in. It can notify on Emails
, Slack
, Salesforce Case
or Webhook
. Note that each job can be configured to notify on one or more of these types.
Emails
: You can configure list of emails that need to be notified (default for all jobs as well as job specific). These emails need not be a Salesforce users but can be just Contacts
.
Slack
: You can configure Slack Webhook Url
(default for all jobs as well as job specific).
Salesforce Case
: It creates case using standard fields. You can customize the fields and their values if required.
Does it have any pre-defined jobs?
Yes, it comes with pre-defined jobs to Mass Update
, Mass Delete
and Mass Purge
records. The specifics of the each can be customized using Job Parameters.
For Update job, you can update to a fixed value or can map to other Salesforce fields.
Does it magically increase Salesforce limits?
No :) It works with in the limits of Salesforce. But we have tried to design an engine that provides enterprise-level Scheduling features within the constraints of Salesforce.
Does it make our jobs run successfully?
Again, answer is No. Scheduleright is responsible to maintain jobs, schedule them and capture run logs. It doesn’t change your job behavior. If you have a job that is always failing, scheduling it on Scheduleright will not make it magically work fine.