Overview
In Etlworks, Schedules allow you to execute Flows automatically based on time, events, or continuous execution rules.
A scheduled Flow is referred to as a schedule (or event). Schedules are managed from the Schedules screen and can be created, edited, enabled, disabled, duplicated, or executed manually.
Accessing the Scheduler
From the Schedules Screen
1. Navigate to Schedules.
2. Click Add schedule.
From this screen you can:
-
Filter schedules by name or type
-
Select schedules for group operations
- Switch between Table and Card Views
-
Enable or disable schedules
-
View execution statistics
-
Manually execute schedules
-
Edit existing schedules
From the Flows Screen
You can also create schedules directly from a Flow:
1. Open the Flows screen.
2. Click View schedules for a Flow.
3. Click Add schedule.
If a Flow already has at least one schedule, the calendar icon changes from a gray icon to a calendar with a checkmark.
Parallel execution and overlapping schedules
A single Flow can be scheduled multiple times using different schedules.
Schedules can overlap, which means the same Flow can be triggered by multiple schedules at the same time. Starting with version 9.3.1, these executions can run in parallel.
Why this is useful
-
You can design a single reusable Flow and run it with multiple schedules
-
Each schedule can pass different parameters, including dynamic connections and steps
-
This allows building fully customizable pipelines without duplicating Flows
-
Supports high-frequency and long-running jobs without blocking new executions
Key behavior
-
If a Flow is triggered by multiple schedules, each schedule can start its own execution
-
Each execution is treated as a separate instance
-
Instances are tracked independently and can be monitored and canceled independently
Manual execution behavior
-
If a Flow is started manually, scheduled executions will not start while the manual run is in progress
Status and monitoring
-
Status is displayed per schedule, not just for the last execution
-
If multiple executions have different outcomes (for example, one failed and one succeeded), both statuses are shown
-
Clicking on a status link opens the specific execution in the Flow Statistics dashboard
-
If a schedule is not currently running but the Flow is running due to another schedule or manual execution, a spinning icon is displayed with a link to the active execution
This behavior provides full visibility and control when the same Flow is executed multiple times in parallel.
Managing Schedules
The Schedules screen provides tools for managing existing schedules individually or in bulk.
From this screen you can:
-
Enable or disable schedules
Disabled schedules remain configured but will not execute automatically.
-
Manually execute selected schedules
Select one or more schedules and click Run to trigger execution immediately, regardless of the defined schedule.
-
Delete schedules
Select one or more schedules and click Delete to permanently remove them.
-
Edit schedules
Click a schedule name to modify its configuration, notifications, parameters, or execution rules.
-
View execution status and timing
The grid shows the last execution result, last run time, and the next scheduled execution for each schedule.
These actions allow you to safely pause, test, clean up, or reorganize schedules without modifying the underlying Flows.
Table and Card Views
The Schedules page supports two visual layouts for browsing Shedules: Table view and Card view.
You can switch between views using the view selector in the toolbar.
Table View
Table view displays Schedules in a compact grid format.
Table view is optimized for:
-
Managing large numbers of Schedules
-
Sorting and filtering
-
Performing bulk operations
Card View
Card view displays each Schedule as a visual card.
Card view is useful when browsing or visually scanning Schedules, especially when working with a smaller number of Schedules.
Both views operate on the same Schedule and switching between them does not affect Schedule configuration, execution, or scheduling.
Context Menu (Right-Click Menu)
You can quickly manage schedules using the right-click context menu on the Schedules page.
To open the menu, right-click any schedule in the grid.
For a single schedule, the context menu provides the following actions:
-
Open schedule – opens the schedule editor.
-
Open flow – opens the Flow associated with the schedule.
-
Deactivate schedule – disables the schedule without deleting it.
-
Run schedule – immediately executes the scheduled Flow.
-
Delete schedule – removes the schedule.
When multiple schedules are selected, the menu also provides bulk actions, including:
-
Deactivate selected schedules
-
Run selected schedules
-
Advanced options
-
Delete selected schedules
The context menu provides a fast way to manage schedules directly from the grid without opening each schedule individually.
Bulk Operations on Schedules
The Schedules page supports bulk operations that allow you to manage multiple schedules at once. This is useful when working with environments that contain many scheduled jobs.
To perform bulk actions:
-
Navigate to the Schedules page.
-
Select one or more schedules using the checkboxes on the left side of the grid.
-
Open the Actions menu or use the right-click context menu.
-
Choose one of the available operations.
Available bulk actions include:
-
Run selected schedules – executes all selected schedules immediately.
-
Deactivate selected schedules – disables the selected schedules without deleting them.
-
Advanced options – opens the Bulk Actions dialog with additional configuration options.
-
Delete selected schedules – permanently removes the selected schedules.
Advanced Bulk Actions
The Advanced bulk actions dialog allows you to update multiple schedules in a single operation.
Supported bulk updates include:
-
Name prefix – add a prefix to the names of selected schedules.
-
Name suffix – add a suffix to the names of selected schedules.
-
Name regex replace – rename schedules using a regular expression pattern.
-
Add tags – add one or more tags to all selected schedules.
-
Remove tags – remove specific tags from selected schedules.
-
Set tags – replace all existing tags with a new set.
Bulk operations help maintain consistent naming conventions and tagging across schedules and simplify administration in large deployments.
Scheduling Periodic Flows (Cron or Interval)
Periodic schedules execute a Flow automatically based on a cron expression or a seconds-based fixed interval.
Common Schedule Parameters
When creating or editing a periodic schedule, the following fields are available:
-
Name
A descriptive name for the schedule.
-
Flow
The Flow that will be executed.
-
Schedule
Defines when the Flow runs. Can be cron-based or interval-based.
-
Active
If disabled, the schedule will not execute automatically.
Email Notifications
-
Send email on success
Sends an email when the Flow completes successfully.
-
Send email on failure
Sends an email when the Flow fails or is canceled.
-
Emails
A space-separated list of recipient email addresses.
Note: Administrators can enforce required email-on-failure and default recipients at the account level. See Account-Level Notification Controls below.
Execution Monitoring
-
Expected flow execution time (minutes)
Sends a notification if execution exceeds the specified time.
-
Repeat expected time notifications
When enabled, the scheduler continues sending alerts every N minutes until the Flow finishes or is stopped.
This helps distinguish long-running jobs from stalled executions.
Retry on Failure
-
Retry on failure
Automatically retries execution if the Flow fails.
-
Retries
Maximum number of retry attempts (up to 5).
-
Delay between retries
Delay between retries, in minutes.
Retry Exception Filtering
-
Retry Exception Mask
Only retry when the error message matches one of the specified patterns.
-
Retry Exception Mask (Exclude)
Do not retry when the error matches one of these patterns.
Use semicolons (;) to separate values.
Logging and Statistics
-
Record Console Log
Records debug-level logs for each execution. Enabled by default for periodic schedules.
-
Extra Log Step
Adds a log checkpoint after every N processed records. Useful for large data volumes (typically over 1 million records).
-
Keep Empty Statistics
Retains execution statistics even if zero records or files were processed.
Cron Scheduling Examples
Every 4 hours
-
Every day
-
Hours: 0, 4, 8, 12, 16, 20
-
Minutes: 0
Monday, Wednesday, Friday at 23:59
-
Every week
-
Days: Mon, Wed, Fri
-
Time: 23:59
Every day at 1:00 AM
-
Every month
-
Every day of the month
-
Time: 1:00
Every 20 minutes
-
Every hour
-
Minutes: 0, 20, 40
Continuous (Looping) Schedules
Continuous schedules run a Flow, wait a short period after completion, and restart automatically.
This mode is recommended for:
-
Streaming CDC pipelines
-
Message queue consumers
-
Near-real-time integrations
Schedule Flow to run continuously
1. Set Schedule to seconds.
2. Enter the delay in seconds.
3. Enable Use as delay (recommended).
4. Optionally enable Disable on failure.
If Use as delay is disabled, the scheduler attempts to start the Flow every N seconds regardless of whether the previous execution finished.
Real-Time Schedules
Real-time schedules keep a Flow running continuously and restart it automatically if it stops.
If a real-time Flow fails, the schedule is automatically disabled.
To pause or resume:
-
Toggle Active on the schedule.
Availability
Note: Real-time scheduling is only available for Enterprise and on-premise plans and must be manually enabled. Please contact support@etlworks.com for more information.
Real-Time Schedule Parameters
Same as periodic schedules, except:
-
No cron or interval selection
-
Keep Empty Statistics is disabled by default
Event-Driven Schedules
Event-driven flows execute when an external event occurs, such as an HTTP request to a Listener.
Examples:
-
Webhooks
-
API callbacks
-
External system triggers
The event-driven Flows are clearly marked in the Schedules grid:
Schedule event-driven Flows
After creating an event-driven schedule, allow up to one minute for listeners to activate.
Additional Parameters
-
Keep Message
Stores request bodies in the Messages application.
-
Record Console Log
Disabled by default for event-driven schedules.
Schedule Exclusions
You can exclude specific weeks of the month or days of the week.
If execution falls into an exclusion window, the run is skipped.
Note: The UI may still display the next execution time even if it falls within an exclusion.
Notification Configuration
Email Content Options
- Include metrics in email: Adds execution metrics as an HTML table.
- Include flow parameters in email: Includes schedule parameters as an HTML table.
Note: Secure parameters are not obfuscated. Use with caution.
Truncate Exception Details
A global setting under Settings → Flows allows truncating exception stack traces in failure emails.
When enabled:
-
Only the error message and description are included
-
Applies to all scheduled flows on the instance and agents
Account-Level Notification Controls
Administrators can configure default behavior under Settings → Schedules:
-
Require email on failure for schedules
-
Default notification emails
These apply to new schedules only.
Enhanced Scheduler Email Notifications
You can customize scheduler email notifications by adding an Additional Notification Message and an optional Schedule Script.
Additional Notification Message
Appended to the standard success and failure email templates. It can include {tokens} which are replaced at send time.
Features:
-
HTML supported
-
{Token} placeholders supported (replaced at runtime with the values of the global variables with the same name).
-
Rendered only if not empty
Example:
<h2>Handled Exceptions</h2>
<ul>
{handled_exceptions}
</ul>
Schedule Script
Each schedule can define a JavaScript block executed after flow execution and before notifications.
The script:
-
Has access to execution results and handled exceptions
-
Can define variables used in message tokens
-
Can conditionally suppress email delivery
This script runs once per schedule execution, not per flow step.
The following variables are available in the JavaScript code:
| Name | Class name/JavaDoc |
|
etlConfig |
|
|
message |
The value configured in Additional Notification Message (may be empty). |
|
etlRequest |
|
|
etlResponse |
Example: Include handled exceptions in scheduler email
This example reads handled (ignored) exceptions from etlConfig, formats them as an HTML list, and injects the result into the email using the {handled_exceptions} token.
Additional Notification Message
<h2>All Handled Exceptions</h2>
<ul>
{handled_exceptions}
</ul>
Schedule Script
var allExceptions = etlConfig.getValue('all_exceptions');
var exceptions = "";
if (allExceptions != null && !allExceptions.isEmpty()) {
for each (var element in allExceptions) {
var etlException = element.getKey();
var error = com.toolsverse.util.Utils.getMessage(etlException, null);
var flow = etlException.getScenarioName();
var block = etlException.getBlockName();
var task = etlException.getTaskName();
var reason = etlException.getReason();
var isWarning = etlException.isWarning();
var msg = 'Error: ' + error
+ '. Flow: ' + flow
+ '. ETL block: ' + block
+ '. Task: ' + task;
exceptions = exceptions + "<li>" + element.getValue() + ' - ' + msg + "</li>";
}
} else {
exceptions = "<li>No exceptions</li>";
}
com.toolsverse.config.SystemConfig.instance().getProperties().put('handled_exceptions', exceptions);
Example: Suppress email notifications for failed executions
This example disables scheduler email notifications when the flow result is an error.
Schedule Script
if (etlResponse.getRetCode() == com.toolsverse.etl.core.config.EtlConfig.RETURN_ERROR) {
etlResponse.setDisableEmailNotification(true);
}
Example: Add tenant name to email notifications
This example adds tenant name to email notifications
Additional Notification Message
<strong>Tenant:<strong> {tenant}
Suppress In-App Execution Notifications
To reduce UI noise for high-frequency schedules:
-
Enable Disable execution popup notifications
Note: This disables top-right popups only. Email and webhook notifications are not affected.
Auto-Stopping Long-Running Flows
You can automatically stop Flows that exceed a time limit.
-
Stop flow after time (minutes)
The stop signal is sent to the Flow, but termination is not guaranteed if the Flow is blocked in a non-cancelable operation.
Prevent Execution When Other Flows Are Running
Add Flows to the No running flows list to prevent concurrent execution.
Automatic Activation and Deactivation by Date
Schedules can activate or deactivate automatically on a future date.
-
Activate on date
-
Deactivate on date
Key points:
-
Changes occur at midnight server time
-
Server timezone is defined by the host OS
-
Maintenance task timing does not affect date evaluation
Flow Parameters
Schedule parameters are passed to Flows as global and flow variables.
Recommendations:
-
Use uppercase keys
-
Avoid whitespace
Auto-Population
You can configure auto-population for parameter keys and values using global settings managed by a super admin. This feature enables dropdown suggestions based on predefined or previously entered parameters, making it easier to maintain consistency across flows.
Learn more about configuring auto-suggestions for flow parameters
Empty String Values
To pass an empty string, use:
\u200B
Secure Parameters
Passwords and secrets must be entered in the Secure parameters section.
Force Execution
In Etlworks the flow can be manually stopped by the user or canceled by scheduler when it is running longer than expected.
Important: It is not 100% guaranteed that the flow will be actually completely stopped. There could be long-running blocking IO operations, such as executing the SQL query, which could still be running, hence preventing the flow from completely stopping.
When the flow is stopped by the user or canceled it is marked as canceled by the system:
When it happens, the ETL engine sets a flag that indicates that the flow might still be running. The flag is cleared when the flow actually stops or after 24 hours, whatever comes first.
This flag prevents the flow from being executed manually or by the scheduler. It is possible to ignore the flag by enabling Force execution. Note that by default, Force execution is disabled for new schedules.
Scheduler Timezone
- Schedules are always set in server timezone. The server timezone is the timezone set for the host OS running Etlworks. On Linux it is UTC in most cases (unless manually changed). It is recommend to use the default server timezone.
-
The message in UI tells user what time that schedule will run in their local timezone (browser timezone) for convenience purposes, so that they don't have to calculate it in their head. They can adjust schedule so that it matches desired time in their timezone.
- Settings -> Timezone -> Administration Timezone sets Super Admin level timezone that is used when calculating and aggregating statistics for the Statistics screen. It is used the same way as Timezone set in the tenant creation/edit screen.
Duplicating Schedules
1. Open a schedule
2. Click Duplicate
3. Save the new copy
All settings and parameters are preserved.