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 email@example.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.
Do we need to create
Schedulable Apex Classes?
No, it is not required. Your engineers need to implement only
Batchable interfaces. Scheduleright internally has
Schedulable implementations that it uses to schedule with Salesforce.
Does it support scheduling
No, it does not support scheduling
It is for two reasons.
- Even though Salesforce doesn’t say it,
Futurejobs are effectively
Futuredoesn’t allow to fetch associated
Apex Job Idfor us to track the execution
Do we need to implement custom interfaces to schedule?
No and Yes.
If you just want to run a
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 Parametersallows 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 Logallows 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
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
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
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
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 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.