Scheduleright FAQ

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

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 Queueable or Batchable interfaces. Scheduleright internally has Schedulable implementations that it uses to schedule with Salesforce.

Does it support scheduling Future jobs?

No, it does not support scheduling Future jobs.

It is for two reasons.

  1. Even though Salesforce doesn’t say it, Future jobs are effectively deprecated
  2. Future doesn’t allow to fetch associated Apex 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.