Unify and manage your data

Cron Expressions

Use this topic as a reference for building and validating Quartz-style cron expressions supported by Reltio for scheduling recurring jobs.

Cron expression structure

A cron expression consists of 6 or 7 space-separated fields. Each field represents a time unit and defines the schedule pattern. Reltio uses the Quartz Scheduler format, which differs from traditional UNIX cron by including a seconds field and supporting an optional year field.

┌───────────── second (0–59)
│ ┌───────────── minute (0–59)
│ │ ┌───────────── hour (0–23)
│ │ │ ┌───────────── day of month (1–31)
│ │ │ │ ┌───────────── month (1–12 or JAN–DEC)
│ │ │ │ │ ┌───────────── day of week (1–7 or SUN–SAT, where 1 = Sunday)
│ │ │ │ │ │ ┌───────────── year (optional, 1970–2199)
│ │ │ │ │ │ │
* * * * * * [*]

Field Reference

Each cron expression is composed of multiple fields, where each field represents a specific unit of time such as seconds, minutes, hours, days, etc. The combination of all fields defines when and how often a job runs. The table below lists each field, the valid ranges of values it can take, and the special characters you can use to customize scheduling patterns.

FieldAllowed valuesSpecial characters
Seconds0–59, - /
Minutes0–59, - /
Hours0–23, - /
Day of month1–31, - ? / L W LW
Month1–12 or JAN–DEC, - /
Day of week1–7 or SUN–SAT (1 = Sunday), - ? / L #
Year(optional) 1970–2199 or empty, - /

Special Characters

Cron expressions support special characters that provide flexibility beyond simple numeric values. These characters let you define ranges, increments, lists, and special conditions (like the last day of a month or the nearest weekday). They are what make cron expressions powerful, allowing complex schedules to be expressed compactly.

The table below explains the purpose of each special character and how it affects the scheduling logic:

SymbolMeaning
*Every possible value (e.g., * in minutes = every minute)
? No specific value (used only in day-of-month or day-of-week)
-Range (e.g., 10-12 = 10, 11, 12)
,List (e.g., MON,WED,FRI)
/Step (e.g., 0/15 in minutes = every 15 min starting at 0)
LLast (e.g., L in day-of-month = last day of the month)
WNearest weekday (e.g., 15W = weekday near the 15th)
#Nth day of week (e.g., 6#3 = 3rd Friday of the month)

Important rules for writing valid Quartz cron expressions

  • Use ? in either the day-of-month or day-of-week field to avoid ambiguity.
  • Do not use 0 for day-of-week. Use 1 for Sunday through 7 for Saturday.
  • The year field is optional and supports a range from 1970 to 2199.

Example

The following example shows how to construct, validate, and execute a cron expression for the use case: every 15 minutes:

0 */15 * * * ?
Current time = Wed Aug 13 15:53:45 WEST 2025
Enter values for cron expression:
Seconds (0-59 or *): 0
Minutes (0-59 or *): */15
Hours (0-23 or *): *
Day of a month (1-31, * or ?): *
Month (1-12 or JAN-DEC, *): *
Day of a week (1-7 or SUN-SAT, * or ?): ?
Year (optional, 1970-2199 or *): 
Built expression : 0 */15 * * * ? *
✅ Expression is valid
Child job will start at: Wed Aug 13 16:00:00 WEST 2025
Internal, seconds: 900
Timing of child job 1 = Wed Aug 13 16:15:00 WEST 2025
Timing of child job 2 = Wed Aug 13 16:30:00 WEST 2025
Timing of child job 3 = Wed Aug 13 16:45:00 WEST 2025
Timing of child job 4 = Wed Aug 13 17:00:00 WEST 2025
Timing of child job 5 = Wed Aug 13 17:15:00 WEST 2025

All other common examples of cron expression are summarized below in tabular format for quick reference.

Table 1. Common Cron Expression Examples
Use CaseCron ExpressionDescription
Every Hour0 0 * * * ?Runs at the top of every hour
Every Weekday at 9 AM0 0 9 ? * MON-FRIRuns Monday through Friday at 9:00 AM
First Day of Every Month at 1 AM0 0 1 1 * ?Runs on the 1st of every month at 1:00 AM
Every Minute on Jan 1st 0 * * 1 1 ?Runs every minute on January 1st
Every Minute on Sundays in December0 * * * 12 SUNRuns every minute on Sundays in December
One-Time Execution (July 4, 2026, 10:15 AM)0 15 10 4 7 ? 2026Executes once on July 4, 2026, at 10:15 AM