Periodic jobs
A periodic job is a job that runs automatically on a recurring schedule, without manual intervention. Periodicity is configured using cron expressions, a standard syntax for defining time-based schedules.
Overview
Each job can have up to 3 periodicity rules. Each rule is defined by a cron expression and can be independently enabled or disabled. When a periodicity rule is enabled, the platform automatically queues job executions on the associated pipeline according to the defined schedule.
Periodic executions appear in the job execution history with the origin PERIODIC, distinguishing them from manual or API-triggered runs.
Configuration
Periodicity is configured on a job through the periodicity property. This property is an array of objects, each containing:
| Property | Type | Required | Description |
|---|---|---|---|
Whether this periodicity rule is active. Set to true to enable automatic execution. | |||
| A cron expression defining the execution schedule. |
Example: a job with two periodicity rules
json
{
"periodicity": [
{
"isEnabled": true,
"cronExpression": "0 9 * * *"
},
{
"isEnabled": true,
"cronExpression": "0 18 * * *"
}
]
}1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
In this example, the job runs every day at 09:00 and at 18:00 (UTC).
Cron expression syntax
A cron expression is a string of five fields separated by spaces. Each field represents a unit of time:
┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of month (1 - 31)
│ │ │ ┌───────────── month (1 - 12)
│ │ │ │ ┌───────────── day of week (0 - 7, where 0 and 7 = Sunday)
│ │ │ │ │
* * * * *1
2
3
4
5
6
7
2
3
4
5
6
7
Field values
| Field | Allowed values | Description |
|---|---|---|
| Minute | 0 - 59 | The minute of the hour at which the job runs. |
| Hour | 0 - 23 | The hour of the day at which the job runs (UTC). |
| Day of month | 1 - 31 | The day of the month on which the job runs. |
| Month | 1 - 12 | The month in which the job runs. |
| Day of week | 0 - 7 | The day of the week on which the job runs (0 and 7 both represent Sunday). |
Special characters
| Character | Description | Example |
|---|---|---|
* | Matches every value in the field. | * * * * * = every minute (not allowed, see limits). |
, | Separates multiple values. | 0,30 * * * * = at minute 0 and minute 30 of every hour. |
- | Defines a range of values. | 0 9-17 * * * = every hour from 09:00 to 17:00 (at minute 0). |
/ | Defines a step interval. | */30 * * * * = every 30 minutes. |
Common examples
| Cron expression | Description |
|---|---|
0 9 * * * | Every day at 09:00 UTC. |
0 0 * * * | Every day at midnight UTC. |
0 9 * * 1 | Every Monday at 09:00 UTC. |
0 9 * * 1-5 | Every weekday (Monday to Friday) at 09:00 UTC. |
0 9,18 * * * | Every day at 09:00 and 18:00 UTC. |
0 */6 * * * | Every 6 hours (at 00:00, 06:00, 12:00, 18:00 UTC). |
0 9 1 * * | The 1st of every month at 09:00 UTC. |
0,30 * * * * | Every 30 minutes (at :00 and :30). |
0 9 1 1 * | Every January 1st at 09:00 UTC. |
TIP
All cron schedules are evaluated in UTC. Make sure to account for your local timezone when defining the schedule.
Limits
| Limit | Value | Description |
|---|---|---|
| Minimum interval | 15 minutes | Two consecutive executions of the same job cannot be separated by less than 15 minutes. A cron expression that produces a shorter interval will be rejected. |
| Maximum periodicity rules | 3 | A single job can have at most 3 periodicity rules. |
WARNING
If a cron expression results in two executions separated by less than 15 minutes, the platform rejects it with an error. For example, */2 * * * * (every 2 minutes) or * * * * * (every minute) are not valid.
Execution behavior
When a periodic execution is triggered:
- The platform queues a new job execution on the job's associated pipeline.
- The pipeline's FIFO scheduling rules apply: if the pipeline is busy, the execution waits in the queue.
- Once the pipeline is available, the job runs normally.
- The execution result is recorded in the job execution history.
TIP
If a previous execution is still running when the next periodic trigger fires, the new execution is queued. It does not cancel or replace the running execution.
Enabling and disabling periodicity
Each periodicity rule has an isEnabled flag. Setting it to false pauses the automatic schedule for that rule without removing the cron expression. This lets you temporarily suspend a periodic job and re-enable it later without reconfiguring the schedule.
json
{
"periodicity": [
{
"isEnabled": false,
"cronExpression": "0 9 * * *"
}
]
}1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
API reference
Periodicity is managed through the Data Factory Jobs API. The periodicity field is part of the job resource and is required when creating or updating a job via the API.
Create a job with periodicity
When creating a job through the API (POST /v1/data-factory/jobs), include the periodicity array in the request body:
json
{
"key": "my-daily-import",
"title": "Daily product import",
"pipelineId": "your-pipeline-id",
"projectId": "your-project-id",
"status": "PRODUCTION",
"periodicity": [
{
"isEnabled": true,
"cronExpression": "0 6 * * *"
}
],
"tasks": []
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Update periodicity
To modify the periodicity of an existing job, update the periodicity array through the API (PUT /v1/data-factory/jobs). You can add, remove, or modify rules, or toggle isEnabled on individual rules.