# Schedules as Code

### What are Paradime YAML-Based Schedules?

Paradime YAML schedules are configuration-as-code definitions, allowing you to define, version, and manage your data pipeline schedules directly within your dbt project repository. These schedules are configured in a single file named `paradime_schedules.yml` located in the root directory of your dbt project (alongside `dbt_project.yml`).

{% hint style="warning" %}

#### Prerequisites

* In order to run yaml-based schedules, connect your data warehouse to the [Scheduler Environment](https://docs.paradime.io/app-help/documentation/settings/connections/scheduler-environment).&#x20;
  {% endhint %}

#### File Location and Structure

```yaml
your-dbt-project/
├── dbt_project.yml
├── paradime_schedules.yml    # All schedules must be defined here
├── models/
├── tests/
└── ...
```

### Why Use YAML-Based Schedules?

1. **Version Control**
   * Schedule configurations are tracked alongside your dbt models
   * Review schedule modifications through Pull Requests
   * Enforce team review processes for schedule changes
2. **Infrastructure as Code**
   * Schedules are treated as code, not just UI configurations
   * Easy replication across environments
   * Enables automated deployment pipelines
3. **Team Collaboration**
   * Simplified schedule review process
   * Standard formatting and validation
   * Documentation lives with the code

### How YAML-bases schedules are deployed?

Schedules are always read from the `paradime_schedules.yml` file on your default branch (usually `main` or `master`).&#x20;

* **Automatic Refresh**: Paradime checks for changes every 10 minutes.
* **Manual Refresh**: For immediate updates, navigate to the Bolt interface and click **Parse Schedules**.

{% hint style="info" %}
💡 **Note**: To update your schedules, make sure to merge your changes to the default branch first.
{% endhint %}

***

## Configuration Reference

This section describes the YAML configuration format for scheduling and managing automated tasks. The configuration supports various execution modes including scheduled runs, trigger-based execution, deferred scheduling, CI/CD integration and API.

{% hint style="info" %}
💡 **Looking for complete examples?** Jump to the [Example Configurations](#example-complete-configuration) section below.
{% endhint %}

### Base Configuration

Every scheduler configuration must include these basic fields:

```yaml
name: string               # Name of the schedule
description: string        # Job description
owner_email: string       # Email of the job owner
git_branch: string        # Target Git branch
environment: string       # Only "production" is supported
commands:                 # List of commands to execute
  - string
```

### Execution Modes

#### 1. Schedule-Triggered Execution

Basic scheduled execution using cron expression:

```yaml
schedule: '0 */2 * * *'     # Runs every 2 hours
timezone: UTC               # Timezone
```

<details>

<summary>Supported Timezone List</summary>

| Timezone                         | Timezone                  | Timezone              |
| -------------------------------- | ------------------------- | --------------------- |
| Africa/Accra                     | America/Sao\_Paulo        | Etc/GMT-6             |
| Africa/Addis\_Ababa              | America/Scoresbysund      | Etc/GMT-7             |
| Africa/Algiers                   | America/Shiprock          | Etc/GMT-8             |
| Africa/Asmara                    | America/Sitka             | Etc/GMT-9             |
| Africa/Asmera                    | America/St\_Barthelemy    | Etc/GMT-10            |
| Africa/Bamako                    | America/St\_Johns         | Etc/GMT-11            |
| Africa/Bangui                    | America/St\_Kitts         | Etc/GMT-12            |
| Africa/Banjul                    | America/St\_Lucia         | Etc/GMT-13            |
| Africa/Bissau                    | America/St\_Thomas        | Etc/GMT-14            |
| Africa/Blantyre                  | America/St\_Vincent       | Etc/GMT+0             |
| Africa/Brazzaville               | America/Swift\_Current    | Etc/GMT+1             |
| Africa/Bujumbura                 | America/Tegucigalpa       | Etc/GMT+2             |
| Africa/Cairo                     | America/Thule             | Etc/GMT+3             |
| Africa/Casablanca                | America/Thunder\_Bay      | Etc/GMT+4             |
| Africa/Ceuta                     | America/Tijuana           | Etc/GMT+5             |
| Africa/Conakry                   | America/Toronto           | Etc/GMT+6             |
| Africa/Dakar                     | America/Tortola           | Etc/GMT+7             |
| Africa/Dar\_es\_Salaam           | America/Vancouver         | Etc/GMT+8             |
| Africa/Djibouti                  | America/Virgin            | Etc/GMT+9             |
| Africa/Douala                    | America/Whitehorse        | Etc/GMT+10            |
| Africa/El\_Aaiun                 | America/Winnipeg          | Etc/GMT+11            |
| Africa/Freetown                  | America/Yakutat           | Etc/GMT+12            |
| Africa/Gaborone                  | America/Yellowknife       | Etc/GMT0              |
| Africa/Harare                    | Antarctica/Casey          | Etc/Greenwich         |
| Africa/Johannesburg              | Antarctica/Davis          | Etc/UCT               |
| Africa/Juba                      | Antarctica/DumontDUrville | Etc/Universal         |
| Africa/Kampala                   | Antarctica/Macquarie      | Etc/UTC               |
| Africa/Khartoum                  | Antarctica/Mawson         | Etc/Zulu              |
| Africa/Kigali                    | Antarctica/McMurdo        | Europe/Amsterdam      |
| Africa/Kinshasa                  | Antarctica/Palmer         | Europe/Andorra        |
| Africa/Lagos                     | Antarctica/Rothera        | Europe/Astrakhan      |
| Africa/Libreville                | Antarctica/South\_Pole    | Europe/Athens         |
| Africa/Lome                      | Antarctica/Syowa          | Europe/Belfast        |
| Africa/Luanda                    | Antarctica/Troll          | Europe/Belgrade       |
| Africa/Lubumbashi                | Antarctica/Vostok         | Europe/Berlin         |
| Africa/Lusaka                    | Arctic/Longyearbyen       | Europe/Bratislava     |
| Africa/Malabo                    | Asia/Aden                 | Europe/Brussels       |
| Africa/Maputo                    | Asia/Almaty               | Europe/Bucharest      |
| Africa/Maseru                    | Asia/Amman                | Europe/Budapest       |
| Africa/Mbabane                   | Asia/Anadyr               | Europe/Busingen       |
| Africa/Mogadishu                 | Asia/Aqtau                | Europe/Chisinau       |
| Africa/Monrovia                  | Asia/Aqtobe               | Europe/Copenhagen     |
| Africa/Nairobi                   | Asia/Ashgabat             | Europe/Dublin         |
| Africa/Ndjamena                  | Asia/Ashkhabad            | Europe/Gibraltar      |
| Africa/Niamey                    | Asia/Atyrau               | Europe/Guernsey       |
| Africa/Nouakchott                | Asia/Baghdad              | Europe/Helsinki       |
| Africa/Ouagadougou               | Asia/Bahrain              | Europe/Isle\_of\_Man  |
| Africa/Porto-Novo                | Asia/Baku                 | Europe/Istanbul       |
| Africa/Sao\_Tome                 | Asia/Bangkok              | Europe/Jersey         |
| Africa/Timbuktu                  | Asia/Barnaul              | Europe/Kaliningrad    |
| Africa/Tripoli                   | Asia/Beirut               | Europe/Kiev           |
| Africa/Tunis                     | Asia/Bishkek              | Europe/Kirov          |
| Africa/Windhoek                  | Asia/Brunei               | Europe/Kyiv           |
| America/Adak                     | Asia/Calcutta             | Europe/Lisbon         |
| America/Anchorage                | Asia/Chita                | Europe/Ljubljana      |
| America/Anguilla                 | Asia/Choibalsan           | Europe/London         |
| America/Antigua                  | Asia/Chongqing            | Europe/Luxembourg     |
| America/Araguaina                | Asia/Chungking            | Europe/Madrid         |
| America/Argentina/Buenos\_Aires  | Asia/Colombo              | Europe/Malta          |
| America/Argentina/Catamarca      | Asia/Dacca                | Europe/Mariehamn      |
| America/Argentina/ComodRivadavia | Asia/Damascus             | Europe/Minsk          |
| America/Argentina/Cordoba        | Asia/Dhaka                | Europe/Monaco         |
| America/Argentina/Jujuy          | Asia/Dili                 | Europe/Moscow         |
| America/Argentina/La\_Rioja      | Asia/Dubai                | Europe/Nicosia        |
| America/Argentina/Mendoza        | Asia/Dushanbe             | Europe/Oslo           |
| America/Argentina/Rio\_Gallegos  | Asia/Famagusta            | Europe/Paris          |
| America/Argentina/Salta          | Asia/Gaza                 | Europe/Podgorica      |
| America/Argentina/San\_Juan      | Asia/Harbin               | Europe/Prague         |
| America/Argentina/San\_Luis      | Asia/Hebron               | Europe/Riga           |
| America/Argentina/Tucuman        | Asia/Ho\_Chi\_Minh        | Europe/Rome           |
| America/Argentina/Ushuaia        | Asia/Hong\_Kong           | Europe/Samara         |
| America/Aruba                    | Asia/Hovd                 | Europe/San\_Marino    |
| America/Asuncion                 | Asia/Irkutsk              | Europe/Sarajevo       |
| America/Atikokan                 | Asia/Istanbul             | Europe/Saratov        |
| America/Atka                     | Asia/Jakarta              | Europe/Simferopol     |
| America/Bahia                    | Asia/Jayapura             | Europe/Skopje         |
| America/Bahia\_Banderas          | Asia/Jerusalem            | Europe/Sofia          |
| America/Barbados                 | Asia/Kabul                | Europe/Stockholm      |
| America/Belem                    | Asia/Kamchatka            | Europe/Tallinn        |
| America/Belize                   | Asia/Karachi              | Europe/Tirane         |
| America/Blanc-Sablon             | Asia/Kashgar              | Europe/Tiraspol       |
| America/Boa\_Vista               | Asia/Kathmandu            | Europe/Ulyanovsk      |
| America/Bogota                   | Asia/Katmandu             | Europe/Uzhgorod       |
| America/Boise                    | Asia/Khandyga             | Europe/Vaduz          |
| America/Buenos\_Aires            | Asia/Kolkata              | Europe/Vatican        |
| America/Cambridge\_Bay           | Asia/Krasnoyarsk          | Europe/Vienna         |
| America/Campo\_Grande            | Asia/Kuala\_Lumpur        | Europe/Vilnius        |
| America/Cancun                   | Asia/Kuching              | Europe/Volgograd      |
| America/Caracas                  | Asia/Kuwait               | Europe/Warsaw         |
| America/Catamarca                | Asia/Macao                | Europe/Zagreb         |
| America/Cayenne                  | Asia/Macau                | Europe/Zaporozhye     |
| America/Cayman                   | Asia/Magadan              | Europe/Zurich         |
| America/Chicago                  | Asia/Makassar             | Factory               |
| America/Chihuahua                | Asia/Manila               | GB                    |
| America/Ciudad\_Juarez           | Asia/Muscat               | GB-Eire               |
| America/Coral\_Harbour           | Asia/Nicosia              | GMT                   |
| America/Cordoba                  | Asia/Novokuznetsk         | GMT-0                 |
| America/Costa\_Rica              | Asia/Novosibirsk          | GMT+0                 |
| America/Coyhaique                | Asia/Omsk                 | GMT0                  |
| America/Creston                  | Asia/Oral                 | Greenwich             |
| America/Cuiaba                   | Asia/Phnom\_Penh          | Hongkong              |
| America/Curacao                  | Asia/Pontianak            | HST                   |
| America/Danmarkshavn             | Asia/Pyongyang            | Iceland               |
| America/Dawson                   | Asia/Qatar                | Indian/Antananarivo   |
| America/Dawson\_Creek            | Asia/Qostanay             | Indian/Chagos         |
| America/Denver                   | Asia/Qyzylorda            | Indian/Christmas      |
| America/Detroit                  | Asia/Rangoon              | Indian/Cocos          |
| America/Dominica                 | Asia/Riyadh               | Indian/Comoro         |
| America/Edmonton                 | Asia/Saigon               | Indian/Kerguelen      |
| America/Eirunepe                 | Asia/Sakhalin             | Indian/Mahe           |
| America/El\_Salvador             | Asia/Samarkand            | Indian/Maldives       |
| America/Ensenada                 | Asia/Seoul                | Indian/Mauritius      |
| America/Fort\_Nelson             | Asia/Shanghai             | Indian/Mayotte        |
| America/Fort\_Wayne              | Asia/Singapore            | Indian/Reunion        |
| America/Fortaleza                | Asia/Srednekolymsk        | Iran                  |
| America/Glace\_Bay               | Asia/Taipei               | Israel                |
| America/Godthab                  | Asia/Tashkent             | Jamaica               |
| America/Goose\_Bay               | Asia/Tbilisi              | Japan                 |
| America/Grand\_Turk              | Asia/Tehran               | Kwajalein             |
| America/Grenada                  | Asia/Tel\_Aviv            | Libya                 |
| America/Guadeloupe               | Asia/Thimbu               | MET                   |
| America/Guatemala                | Asia/Thimphu              | Mexico/BajaNorte      |
| America/Guayaquil                | Asia/Tokyo                | Mexico/BajaSur        |
| America/Guyana                   | Asia/Tomsk                | Mexico/General        |
| America/Halifax                  | Asia/Ujung\_Pandang       | MST                   |
| America/Havana                   | Asia/Ulaanbaatar          | MST7MDT               |
| America/Hermosillo               | Asia/Ulan\_Bator          | Navajo                |
| America/Indiana/Indianapolis     | Asia/Urumqi               | NZ                    |
| America/Indiana/Knox             | Asia/Ust-Nera             | NZ-CHAT               |
| America/Indiana/Marengo          | Asia/Vientiane            | Pacific/Apia          |
| America/Indiana/Petersburg       | Asia/Vladivostok          | Pacific/Auckland      |
| America/Indiana/Tell\_City       | Asia/Yakutsk              | Pacific/Bougainville  |
| America/Indiana/Vevay            | Asia/Yangon               | Pacific/Chatham       |
| America/Indiana/Vincennes        | Asia/Yekaterinburg        | Pacific/Chuuk         |
| America/Indiana/Winamac          | Asia/Yerevan              | Pacific/Easter        |
| America/Indianapolis             | Atlantic/Azores           | Pacific/Efate         |
| America/Inuvik                   | Atlantic/Bermuda          | Pacific/Enderbury     |
| America/Iqaluit                  | Atlantic/Canary           | Pacific/Fakaofo       |
| America/Jamaica                  | Atlantic/Cape\_Verde      | Pacific/Fiji          |
| America/Jujuy                    | Atlantic/Faeroe           | Pacific/Funafuti      |
| America/Juneau                   | Atlantic/Faroe            | Pacific/Galapagos     |
| America/Kentucky/Louisville      | Atlantic/Jan\_Mayen       | Pacific/Gambier       |
| America/Kentucky/Monticello      | Atlantic/Madeira          | Pacific/Guadalcanal   |
| America/Knox\_IN                 | Atlantic/Reykjavik        | Pacific/Guam          |
| America/Kralendijk               | Atlantic/South\_Georgia   | Pacific/Honolulu      |
| America/La\_Paz                  | Atlantic/St\_Helena       | Pacific/Johnston      |
| America/Lima                     | Atlantic/Stanley          | Pacific/Kanton        |
| America/Los\_Angeles             | Australia/ACT             | Pacific/Kiritimati    |
| America/Louisville               | Australia/Adelaide        | Pacific/Kosrae        |
| America/Lower\_Princes           | Australia/Brisbane        | Pacific/Kwajalein     |
| America/Maceio                   | Australia/Broken\_Hill    | Pacific/Majuro        |
| America/Managua                  | Australia/Canberra        | Pacific/Marquesas     |
| America/Manaus                   | Australia/Currie          | Pacific/Midway        |
| America/Marigot                  | Australia/Darwin          | Pacific/Nauru         |
| America/Martinique               | Australia/Eucla           | Pacific/Niue          |
| America/Matamoros                | Australia/Hobart          | Pacific/Norfolk       |
| America/Mazatlan                 | Australia/LHI             | Pacific/Noumea        |
| America/Mendoza                  | Australia/Lindeman        | Pacific/Pago\_Pago    |
| America/Menominee                | Australia/Lord\_Howe      | Pacific/Palau         |
| America/Merida                   | Australia/Melbourne       | Pacific/Pitcairn      |
| America/Metlakatla               | Australia/North           | Pacific/Pohnpei       |
| America/Mexico\_City             | Australia/NSW             | Pacific/Ponape        |
| America/Miquelon                 | Australia/Perth           | Pacific/Port\_Moresby |
| America/Moncton                  | Australia/Queensland      | Pacific/Rarotonga     |
| America/Monterrey                | Australia/South           | Pacific/Saipan        |
| America/Montevideo               | Australia/Sydney          | Pacific/Samoa         |
| America/Montreal                 | Australia/Tasmania        | Pacific/Tahiti        |
| America/Montserrat               | Australia/Victoria        | Pacific/Tarawa        |
| America/Nassau                   | Australia/West            | Pacific/Tongatapu     |
| America/New\_York                | Australia/Yancowinna      | Pacific/Truk          |
| America/Nipigon                  | Brazil/Acre               | Pacific/Wake          |
| America/Nome                     | Brazil/DeNoronha          | Pacific/Wallis        |
| America/Noronha                  | Brazil/East               | Pacific/Yap           |
| America/North\_Dakota/Beulah     | Brazil/West               | Poland                |
| America/North\_Dakota/Center     | Canada/Atlantic           | Portugal              |
| America/North\_Dakota/New\_Salem | Canada/Central            | PRC                   |
| America/Nuuk                     | Canada/Eastern            | PST8PDT               |
| America/Ojinaga                  | Canada/Mountain           | ROC                   |
| America/Panama                   | Canada/Newfoundland       | ROK                   |
| America/Pangnirtung              | Canada/Pacific            | Singapore             |
| America/Paramaribo               | Canada/Saskatchewan       | Turkey                |
| America/Phoenix                  | Canada/Yukon              | UCT                   |
| America/Port\_of\_Spain          | CET                       | Universal             |
| America/Port-au-Prince           | Chile/Continental         | US/Alaska             |
| America/Porto\_Acre              | Chile/EasterIsland        | US/Aleutian           |
| America/Porto\_Velho             | CST6CDT                   | US/Arizona            |
| America/Puerto\_Rico             | Cuba                      | US/Central            |
| America/Punta\_Arenas            | EET                       | US/East-Indiana       |
| America/Rainy\_River             | Egypt                     | US/Eastern            |
| America/Rankin\_Inlet            | Eire                      | US/Hawaii             |
| America/Recife                   | EST                       | US/Indiana-Starke     |
| America/Regina                   | EST5EDT                   | US/Michigan           |
| America/Resolute                 | Etc/GMT                   | US/Mountain           |
| America/Rio\_Branco              | Etc/GMT-0                 | US/Pacific            |
| America/Rosario                  | Etc/GMT-1                 | US/Samoa              |
| America/Santa\_Isabel            | Etc/GMT-2                 | UTC                   |
| America/Santarem                 | Etc/GMT-3                 | W-SU                  |
| America/Santiago                 | Etc/GMT-4                 | WET                   |
| America/Santo\_Domingo           | Etc/GMT-5                 | Zulu                  |

</details>

#### 2. Run Completion Trigger

Triggers execution based on completion of another job:

```yaml
schedule: 'OFF'
schedule_trigger:
  enabled: true
  schedule_name: string     # Name of the trigger schedule
  workspace_name: string    # Workspace containing the trigger schedule
  trigger_on:               # Events that trigger execution
    - passed
    - failed
```

#### 3. Merge Trigger

Triggers execution on merge events:

```yaml
schedule: 'OFF'
trigger_on_merge: true     # Enables merge-triggered execution
```

{% hint style="warning" %}
Requires [**GitHub integration**](https://docs.paradime.io/app-help/documentation/integrations/ci-cd/github).
{% endhint %}

#### 4. Deferred Scheduling

Allows schedules to used dbt defer to artifacts comparison:

```yaml
schedule: 'OFF'
deferred_schedule:
  enabled: true
  deferred_schedule_name: string  # Name of the deferred schedule
  successful_run_only: boolean    
```

#### 5. Turbo CI Configuration

Configuration for CI pipelines:

```yaml
schedule: 'OFF'
turbo_ci:
  enabled: true
  deferred_schedule_name: string  # Name of the schedule for CI
  successful_run_only: boolean    # Whether to run only after successful executions
```

#### 6. API Configuration

Basic configuration when triggering Bolt via API:

```yaml
schedule: 'OFF'
```

{% hint style="info" %}
For more details on Paradime APIs check our [**Developers guide**](https://docs.paradime.io/app-help/developers).
{% endhint %}

#### 7. Suspended State

Configuration for suspended jobs:

```yaml
suspended: true            # Indicates the job is suspended
```

### Notifications Configuration

Notifications can be configured for various events through multiple channels:

```yaml
notifications:
  emails:                  # Email notifications configuration
    - address: string      # List of recipient email address
      events:              # List of events to notify for each recipient
        - passed           # Schedule completed successfully
        - failed          # Schedule completed successfully with errors
        - sla             # SLA threshold exceeded
        
  microsoft_teams:         # Microsoft Teams notifications
    - channel: string      # List of Teams channel name
      events:              # List of events to notify for each recipient
        - passed          # Schedule completed successfully
        - failed          # Schedule completed successfully with errors
        - sla             # SLA threshold exceeded
        
  slack_channels:
    - channel: string      # List of Slack channel name
      events:              # List of events to notify for each recipient
        - passed          # Schedule completed successfully
        - failed          # Schedule completed successfully with errors
        - sla             # SLA threshold exceeded
        
sla_minutes: number        # SLA threshold in minutes
```

{% hint style="info" %}
For Slack and MS Teams notifications, check our integrations guide:

* [**Slack**](https://docs.paradime.io/app-help/documentation/integrations/notifications/slack)
* [**Microsoft Teams**](https://docs.paradime.io/app-help/documentation/integrations/notifications/microsoft-teams)
  {% endhint %}

### Trigger integration

You can set up triggers to automate actions when runs complete. [Trigger Settings](https://docs.paradime.io/app-help/documentation/bolt/creating-schedules/trigger-integrations) allow you to connect Bolt to external tools and services, enabling automated workflows based on your pipeline execution results.&#x20;

```yml
integrations:
  incident_io:
    - status_id: 01JZNBWY12QNFFJ2G1E8H2FKDR
      status: Merged
      mode: retrospective
      type_id: 01JZNBWY12JPEG0AWMDK9TWG6V
      type: Default
      severity_id: 01JZNBWY12XG5HTZT11DYJ2TDN
      severity: Minor
      visibility: public
  pagerduty:
    - mode: standard
      from_email: datateam@acme.io
      incident_type_name: incident_default
      incident_type_display_name: Base Incident
      service_id: PO26BTW
      service_name: Data Alerts
      urgency: low
      priority_id: PEI9MBW
      priority_name: P1
      escalation_policy_id: PFEBPFK
      escalation_policy_name: Default
  datadog:
    - severity: SEV_1
      severity_name: Critical
      customer_impacted: true
      state: ACTIVE
      state_name: Active
      commander_user_id: 39363321-5c14-11f0-a281-2e6613966262
      commander_user_name: Kaustav Mitra
      notification_handles:
        - '@kaustav@paradimehq.com'
  new_relic:
    - environment: testing
```

### Example: Complete Configuration

{% tabs %}
{% tab title="Scheduled Trigger" %}

```yaml
schedules:
  - name: daily run
    description: "Daily build of all dbt models"
    owner_email: john@acme.io 
    environment: production
    git_branch: main  
    commands:
      - dbt run
      - dbt test
    schedule: 0 10 * * *
    timezone: UTC    
    sla_minutes: 60
    notifications:
      emails:                 
        - address: john@acme.io 
          events:
            - failed
            - sla
      slack_channels:
        - channel: data-team    
          events:            
            - passed         
            - failed         
        - channel: pipeline-monitoring    
          events:                    
            - failed         
            - sla  
```

{% endtab %}

{% tab title="Run Completion Trigger" %}

```yaml
schedules:
  - name: "Finance reports update"
    description: "Update all finance models"
    owner_email: john@acme.io 
    environment: production
    git_branch: main  
    commands:
      - dbt run --select tag:finance
    schedule: 'OFF'
    schedule_trigger:
      enabled: true
      schedule_name: "Daily Run"
      workspace_name: data-platform
      trigger_on:
        - passed
        - failed  
    sla_minutes: 60
    notifications:
      emails:                 
        - address: john@acme.io 
          events:
            - failed
            - sla
      slack_channels:
        - channel: data-team    
          events:            
            - passed         
            - failed         
        - channel: pipeline-monitoring    
          events:                    
            - failed         
            - sla  
```

{% endtab %}

{% tab title="Merge Trigger" %}

```yaml
schedules:
  - name: "On Merge run CD"
    description: "Continuos deployment run to deploy changes as soon as Merged to the MAIN branch"
    owner_email: john@acme.io 
    environment: production
    git_branch: main  
    commands:
      - dbt run --select state:modified+
    schedule: 'OFF'
    trigger_on_merge: true 
    deferred_schedule:
      enabled: true
      deferred_schedule_name: "On Merge run CD"  
      successful_run_only: True     
    sla_minutes: 60
    notifications:
      emails:                 
        - address: john@acme.io 
          events:
            - failed
      slack_channels:
        - channel: data-team    
          events:            
            - passed         
            - failed         
        - channel: pipeline-monitoring    
          events:                    
            - failed         
```

{% endtab %}

{% tab title="Deferred Schedules" %}

```yaml
schedules:
  - name: "High Frequency run"
    description: "Trigger run and build models only when new data landed in sources tables"
    owner_email: john@acme.io 
    environment: production
    git_branch: main  
    commands:
      - dbt source freshness
      - dbt build --select source_status:fresher+ state:modified+ result:error+ result:fail+
    schedule: '0,30 6-23 * * *'
    timezone: UTC
    deferred_schedule:
      enabled: true
      deferred_schedule_name: "High Frequency run"
      successful_run_only: False     
    sla_minutes: 60
    notifications:
      emails:                 
        - address: john@acme.io 
          events:
            - failed
            - sla
      slack_channels:
        - channel: data-team    
          events:            
            - passed         
            - failed         
        - channel: pipeline-monitoring    
          events:                    
            - failed         
            - sla
```

{% endtab %}

{% tab title="Turbo CI Configuration" %}

```yaml
schedules:
  - name: "Turbo CI run"
    description: "Trigger run and build models when a Pull Request is opened in a temporary schema"
    owner_email: john@acme.io 
    environment: production
    git_branch: main  
    commands:
      - dbt build --select state:modified+
    schedule: 'OFF'
    deferred_schedule:
      enabled: true
      deferred_schedule_name: "High Frequency run"
      successful_run_only: False     
    sla_minutes: 60
    notifications:
      emails:                 
        - address: john@acme.io 
          events:
            - failed
            - sla
      slack_channels:
        - channel: data-team    
          events:            
            - passed         
            - failed         
        - channel: pipeline-monitoring    
          events:                    
            - failed         
            - sla 
```

{% endtab %}
{% endtabs %}

***

## Best Practices

#### Schedule Format

* Use standard cron expressions for scheduling&#x20;
  * ✅ Standard cron to define days 0-6
    * `10 * * * 0-6` : At minute 10 on every day-of-week from Sunday through Saturday.  &#x20;
  * ❌ Non-standard cron to define days 1-7
    * `10 * * * 1-7` : At minute 10 on every day-of-week from Monday through Sunday
* Use `'OFF'` to disable scheduled execution
* Use [**crontab.guru**](https://crontab.guru/#10_*_*_*_0-6) to validate your cron expressions&#x20;

#### **SLA Configuration**

* `sla_minutes` should be set based on job complexity

  Consider dependencies when setting SLA
* Recommended minimum: 30 minutes

#### Notification Configuration

* Configure at least one notification channel
* Include critical events (failed, SLA) in notifications
* Use team channels for collaborative workflows
* Make sure to set the Slack / MS Teams Channel or Email for System notifications. Check our guide here for [**Notifications Settings**](https://docs.paradime.io/app-help/settings/notifications#bolt-system-alerts-notifications)**s**

***

## Paradime schedules terminal commands <a href="#paradime-schedules-terminal-commands" id="paradime-schedules-terminal-commands"></a>

Before running any of the following commands, navigate to your dbt™️ project directory where `paradime_schedules.yml` is located.

<table data-full-width="false"><thead><tr><th width="406">CLI command</th><th width="457">Description</th></tr></thead><tbody><tr><td><pre><code>paradime schedule verify
</code></pre></td><td><strong>Validate File Format -</strong> This command checks the <code>paradime_schedules.yml</code> for formatting errors and outputs the result.</td></tr><tr><td><pre><code>paradime schedule run
</code></pre></td><td><strong>Run Schedule Locally</strong> - To run all defined schedules based on your local context: (ie. based on your development environment and your current branch).</td></tr><tr><td><pre><code>paradime schedule run &#x3C;schedule_name>
</code></pre></td><td><strong>Run Selected Schedule Locally -</strong> To run the named schedule based on your local context: (ie. based on your development environment  and your current branch).</td></tr><tr><td><pre><code>paradime schedule run --dry-run
</code></pre></td><td><strong>Dry run</strong> - To simulate all schedule executions without running dbt™️ models.</td></tr><tr><td><pre><code>paradime schedule run --dry-run &#x3C;schedule_name>
</code></pre></td><td><strong>Dry run</strong> - To simulate the named schedule executions without running dbt™️ models.</td></tr></tbody></table>
