# Quartz cron examples

Documentation owner: product `control`; documentation version: `1.3.0`.
Source: `content/products/control/1.3.0/configuration-reference/modules/schedules/quartz-cron-examples.md` at commit `eaf7a020437971baeee95e87eaf963636040ac71`.

Control supports custom Quartz cron expressions for schedules. In the management UI, the expression is entered in this format:

```
seconds minutes hours day-of-month month day-of-week
```

## Field overview

| Field        | Position | Typical values             | Example   |
| ------------ | -------- | -------------------------- | --------- |
| Seconds      | 1        | `0`, `15`, `0/30`          | `0`       |
| Minutes      | 2        | `0`, `5`, `0/5`            | `0/15`    |
| Hours        | 3        | `0`, `9`, `8-17`           | `9`       |
| Day of month | 4        | `*`, `1`, `15`, `?`        | `?`       |
| Month        | 5        | `*`, `1`, `1-6`, `JAN`     | `*`       |
| Day of week  | 6        | `*`, `MON-FRI`, `SUN`, `?` | `MON-FRI` |

## Important syntax rules

* Use `*` to mean "every value" in that field.
* Use `?` in either `day-of-month` or `day-of-week` when that field is intentionally not used.
* Use `-` for ranges, for example `8-17`.
* Use `/` for intervals, for example `0/15`.
* Use `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT`, and `SUN` for weekdays when that is easier to read.

:::note
When a schedule is based on weekday logic, it is usually clearer to use `?` for `day-of-month`.
:::

## Common examples

| Use case                                      | Quartz cron               | Description                                                |
| --------------------------------------------- | ------------------------- | ---------------------------------------------------------- |
| Every minute                                  | `0 * * * * ?`             | Runs once per minute.                                      |
| Every 5 minutes                               | `0 0/5 * * * ?`           | Runs every fifth minute, every hour.                       |
| Every 15 minutes                              | `0 0/15 * * * ?`          | Runs every 15 minutes.                                     |
| Every 30 minutes                              | `0 0/30 * * * ?`          | Runs twice per hour.                                       |
| Every hour                                    | `0 0 * * * ?`             | Runs at minute 0 every hour.                               |
| Every day at midnight                         | `0 0 0 * * ?`             | Runs once every day at 00:00.                              |
| Every day at noon                             | `0 0 12 * * ?`            | Runs once every day at 12:00.                              |
| Every Sunday at midnight                      | `0 0 0 ? * SUN`           | Runs weekly on Sunday.                                     |
| Weekdays at 08:00                             | `0 0 8 ? * MON-FRI`       | Runs Monday to Friday at 08:00.                            |
| Weekdays every 15 minutes during office hours | `0 0/15 8-17 ? * MON-FRI` | Runs every 15 minutes between 08:00 and 17:59 on weekdays. |
| First day of every month at 00:00             | `0 0 0 1 * ?`             | Runs once per month.                                       |
| First day of every month at 09:30             | `0 30 9 1 * ?`            | Useful for monthly reports or maintenance tasks.           |

## Example schedule object

```json
{
  "id": "20260320_101500",
  "display_name": "Weekday synchronization",
  "type": "Pipes",
  "schedule": "0 0/15 8-17 ? * MON-FRI",
  "run_on_start": false,
  "params": {
    "pipes": [
      "20260320_101500_pipe"
    ]
  }
}
```

## Legacy aliases

Some existing configurations may still use aliases instead of explicit Quartz cron expressions, for example:

* `EVERY_5_MINUTES`
* `EVERY_30_MINUTES`
* `EVERY_HOUR`
* `EVERYDAY_AT_MIDNIGHT`

For new configurations, prefer explicit Quartz cron expressions because they are easier to review and adjust.
