> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.kodelabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Schedules

> Automate equipment operation with time-based schedules, holiday overrides, and AI-powered Optimized Start/Stop.

<Info>
  Schedules is a building-level module. Select a building from the [sites list](/products/kode-os/sites-and-map) to access its schedules. Mass write is accessible at the portfolio level.
</Info>

Schedules automate equipment operation based on time. Define when devices should turn on and off, set temperature setpoints for occupied and unoccupied periods, and configure holiday overrides. Cloud BMS supports two schedule types:

* **Weekly schedules** -- define recurring time-based events for regular building operation
* **Calendar schedules** -- define exception dates for holidays and special events that can be referenced by weekly schedules

```mermaid actions={false} theme={"theme":{"light":"github-dark","dark":"github-dark"}}
---
config:
  theme: neutral
---
flowchart LR
    SCH[Schedule] -- "controls" --> DEV[Device]
    OSS[OSS Algorithm] -- "optimizes" --> SCH
    OSS -. "inputs" .- SENS[Sensor Data]
    OSS -. "inputs" .- WX[Weather Data]

    classDef sky stroke:#374D7C,fill:#E2EBFF,color:#374D7C
    classDef peach stroke:#FBB35A,fill:#FFEFDB,color:#8F632D
    classDef green fill:#B0E4CC,color:#285A48,stroke:#285A48

    class SCH sky
    class DEV peach
    class OSS green
    class SENS,WX green
```

## Navigate to schedules

<Steps>
  <Step title="Select your site">
    Click `Sites` in the left navigation bar and select the building.
  </Step>

  <Step title="Open the schedules module">
    Click `Schedules` in the left sidebar menu. The schedules list displays all configured schedules for the selected site.

    <Frame caption="The Schedules list shows all schedules with their current and next values, area, data source, and options to search, filter, sync, and create">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-list.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=0dc524db9a8dbee2ce33c70943f99935" alt="Schedules list showing three schedules with Name, Area, Current and Next Value, and Data Source columns, plus search, Weekly Schedules filter, Show Only Visible filter, Filters button, Sync button, and Create Schedule button" width="1024" height="714" data-path="images/kode-os/schedules/kode-os-schedules-list.png" />
    </Frame>
  </Step>
</Steps>

The schedules list displays the building's local time and shows each schedule's current value and next scheduled value with timestamp. Use the toolbar to:

* **Search** for schedules by name
* **Filter** by schedule type (`Weekly Schedules` or `Calendar Schedules`) and visibility
* **Sync** schedules with the external building automation system
* Toggle between list and calendar view using the view icons

<Frame caption="The type filter dropdown lets you switch between Weekly Schedules and Calendar Schedules">
  <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-filter-type.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=b4a907de54456077abe97376c8925e8e" alt="Schedules list with the type filter dropdown open showing Weekly Schedules selected with a checkmark and Calendar Schedules as an alternative option" width="1018" height="310" data-path="images/kode-os/schedules/kode-os-schedules-filter-type.png" />
</Frame>

### Schedule actions

Click the three-dot menu on a schedule row to access schedule-level actions.

<Frame caption="The row menu provides options to duplicate, hide, edit, or delete a schedule">
  <img src="https://mintcdn.com/kodelabs/IqRYtNzjTvsoxL_7/images/kode-os/schedules/kode-os-schedules-row-menu.png?fit=max&auto=format&n=IqRYtNzjTvsoxL_7&q=85&s=8c1c86ae944ff3edceacdd4cffa5397d" alt="Schedule row menu showing Duplicate Schedule, Hide Schedule, Edit Schedule, Delete from Cloud BMS, and Delete Everywhere options" width="1013" height="478" data-path="images/kode-os/schedules/kode-os-schedules-row-menu.png" />
</Frame>

* **Duplicate Schedule** -- create a copy of the schedule with the same configuration
* **Hide Schedule** -- hide the schedule from the list without deleting it (use `Show Only Visible` filter to toggle hidden schedules)
* **Edit Schedule** -- open the schedule details page to modify its configuration
* **Delete from Cloud BMS** -- remove the schedule from Cloud BMS only, keeping it in the data source
* **Delete Everywhere** -- remove the schedule from both Cloud BMS and the connected data source

### Batch update

Click the batch update icon in the toolbar to open the Schedules Batch Update view.

<Frame caption="The batch update icon in the toolbar opens the Schedules Batch Update page">
  <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-batch-update.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=c43981dc5ee30287dfccd6e926126662" alt="Schedules list with the batch update icon highlighted in the toolbar showing a Schedules Batch Update tooltip" width="1024" height="443" data-path="images/kode-os/schedules/kode-os-schedules-batch-update.png" />
</Frame>

Select one or more schedules using the checkboxes to perform bulk actions. The batch update view shows the schedule path, area, and current and next values. Use the action bar at the bottom to delete selected schedules from Cloud BMS, delete them everywhere, or change their visibility.

<Frame caption="The batch update view allows selecting multiple schedules for bulk delete or visibility changes">
  <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-batch-update-view.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=509b4b8c55f75982470fc6ba02a9199a" alt="Schedules Batch Update page with Weekly Schedule and Scoda Nexus_training selected, showing Name, Path, Area, and Current and Next Value columns, with Cancel, Delete from Cloud BMS, Delete Everywhere, and Change Visibility buttons at the bottom" width="1016" height="878" data-path="images/kode-os/schedules/kode-os-schedules-batch-update-view.png" />
</Frame>

### Calendar view

Switch to the calendar view using the calendar icon in the toolbar. The calendar view displays all schedules on a weekly grid, showing event blocks with their time ranges and values.

<Frame caption="The calendar view displays schedule events on a weekly grid with day, week, and month views">
  <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-calendar-view.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=aeef1e1b701889946c133ce02db8e4cd" alt="Calendar view showing May 2026 in week view with Weekly Schedule selected, displaying green event blocks from 8:00 AM to 4:00 PM Monday through Friday with value true, and a Friday all-day special event in orange" width="1024" height="876" data-path="images/kode-os/schedules/kode-os-schedules-calendar-view.png" />
</Frame>

Use the sidebar on the left to select which schedules to display. Each schedule shows the number of special events configured. Toggle between `Day`, `Week`, and `Month` views using the tabs at the top, and navigate between weeks using the arrow buttons.

## Create a schedule

Click `Create Schedule` to open the creation dialog.

<Frame caption="The Create New Schedule dialog collects the schedule name, folder, data source, type, and kind">
  <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-create.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=0620855a7bee192d81e50164a31141a8" alt="Create New Schedule dialog with fields for Name, Folder, Data Source dropdown, Type selection between Calendar Schedule and Weekly Schedule, and Kind dropdown showing Boolean Schedule" width="618" height="520" data-path="images/kode-os/schedules/kode-os-schedules-create.png" />
</Frame>

<ParamField path="Name" type="Field">
  Enter a descriptive name for the schedule (for example, `Weekly Schedule`).
</ParamField>

<ParamField path="Folder" type="Field">
  Specify the folder path where the schedule is stored in the data source.
</ParamField>

<ParamField path="Data Source" type="Field">
  Select the data source connector this schedule belongs to.
</ParamField>

<ParamField path="Type" type="Field">
  Choose the schedule type:

  * **Calendar Schedule** -- for special events and holidays
  * **Weekly Schedule** -- for regular recurring usage
</ParamField>

<ParamField path="Kind" type="Field">
  Select the schedule kind (for example, `Boolean Schedule` for on/off control).
</ParamField>

Click `Save` to create the schedule and open its details page.

## Configure schedule types

After you create a schedule, configure weekly recurrence or calendar exceptions.

<Tabs>
  <Tab title="Weekly schedules" icon="calendar-days">
    Weekly schedules define recurring time-based events for regular building operation. Select `Weekly Schedule` as the type when creating a schedule.

    ### Schedule details and properties

    After creating or selecting a weekly schedule, the details page displays the schedule configuration and the weekly calendar grid.

    <Frame caption="The Schedule Details page shows schedule properties, effective period, default value, and key/value mappings">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-details.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=28fa9e610940573305c53d60f56bdc47" alt="Schedule Details page for Weekly Schedule showing Schedule Name, Display Name, Data Source, Area, Kind, Location fields, Effective Period with Start and End dates, Default Value set to False, and Key/Value pairs for falseText and trueText" width="1018" height="869" data-path="images/kode-os/schedules/kode-os-schedules-details.png" />
    </Frame>

    The `Schedule Details & Properties` panel includes:

    * **Schedule Name** -- the internal name of the schedule
    * **Display Name** -- the user-facing name shown in the schedules list
    * **Data Source** -- the connected data source
    * **Area** -- the area this schedule applies to (optional)
    * **Kind** -- the schedule kind (for example, `BooleanSchedule`)
    * **Location** -- the slot path in the data source

    #### Effective period and default value

    * **Effective Start / Effective End** -- define the date range during which the schedule is active
    * **Default Value** -- the fallback value when no scheduled event is active (for example, `False` for a boolean schedule). Check `Null` to use no default value.
    * **Key/Value pairs** -- define the display text for schedule values (for example, `falseText` = `false`, `trueText` = `true`)

    Click `Sync` to synchronize the schedule with the external system. The last synced timestamp is displayed next to the sync button.

    <Note>
      Some fields and functionalities may not be available for editing because of data source capabilities. A warning banner appears at the top of the page when this applies.
    </Note>

    ### Configure weekly events

    The weekly calendar grid displays the schedule's time blocks for each day of the week. Click on a time slot to access event options.

    <Frame caption="Click on the weekly calendar to create events, all day events, or clear the week">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-calendar-menu.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=e7d3924b51f004b4551f393e0bce34ec" alt="Weekly schedule calendar grid showing Sunday through Saturday with time slots from 12:00am to 9:00pm, and a right-click menu with Create Event, All Day Event, and Clear Week options" width="1017" height="834" data-path="images/kode-os/schedules/kode-os-schedules-calendar-menu.png" />
    </Frame>

    * **Create Event** -- add a time-based event for a specific day
    * **All Day Event** -- create an event that spans the entire day
    * **Clear Week** -- remove all events from the weekly schedule

    #### Add an event

    Select `Create Event` to open the Add Event dialog.

    <Frame caption="The Add Event dialog sets the start time, end time, value, and null option for the event">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-add-event.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=994d1868bb8b00bd2a9c83b6bc9465e5" alt="Add Event dialog with Start Time set to 08:00 AM, End Time set to 04:00 PM, Value dropdown set to True, and a Null checkbox" width="798" height="707" data-path="images/kode-os/schedules/kode-os-schedules-add-event.png" />
    </Frame>

    <ParamField path="Start Time" type="Field">
      Set the event start time. Toggle between `AM` and `PM`.
    </ParamField>

    <ParamField path="End Time" type="Field">
      Set the event end time. Toggle between `AM` and `PM`.
    </ParamField>

    <ParamField path="Value" type="Field">
      Select the value to write during this event (for example, `True` for on, `False` for off).
    </ParamField>

    Check `Null` to clear the value during this period instead of writing a specific value. Click `Save` to add the event to the calendar.

    #### Manage events

    Once an event is created, it appears as a colored block on the calendar. Click a created event to access management options.

    <Frame caption="Click a created event to edit, delete, or apply it across multiple days">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-event-menu.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=fc23e3a440d5c5e601706052ace72ec4" alt="Weekly schedule showing a green event block on Monday from 8:00 AM to 4:00 PM with value true, and a right-click menu showing Edit Event, Delete Event, Apply M-F, Apply Everyday, and Clear Week options" width="1001" height="704" data-path="images/kode-os/schedules/kode-os-schedules-event-menu.png" />
    </Frame>

    * **Edit Event** -- modify the event's time window or value
    * **Delete Event** -- remove the event from the calendar
    * **Apply M-F** -- copy the event to all weekdays (Monday through Friday)
    * **Apply Everyday** -- copy the event to every day of the week
    * **Clear Week** -- remove all events from the weekly schedule

    Click `Save` at the top right to save all changes. After saving, the schedule view displays the configured weekly calendar with the activity log on the right showing the change history.

    <Frame caption="The saved schedule shows the weekly calendar with events applied Monday through Friday, and the activity log on the right">
      <img src="https://mintcdn.com/kodelabs/IqRYtNzjTvsoxL_7/images/kode-os/schedules/kode-os-schedules-saved-calendar.png?fit=max&auto=format&n=IqRYtNzjTvsoxL_7&q=85&s=dd6fdea9bfa5e36d334397297d3bfd2f" alt="Weekly Schedule view showing green event blocks from 8:00 AM to 4:00 PM on Monday through Friday with value true, History Logs and Point References links, and an activity log with user change entries" width="1024" height="755" data-path="images/kode-os/schedules/kode-os-schedules-saved-calendar.png" />
    </Frame>

    The schedule header provides access to `History Logs` and `Point References`. Click `Delete Schedule` to remove the schedule entirely.

    ### Schedule history and revert

    Open `History Logs` (or the History tab on the schedule) to review prior versions. Select a timestamp, then click `Revert` to restore that version. When the connector supports it, Cloud BMS pushes the restored version back to the data source.

    ### Special events

    Special events override the weekly schedule on specific dates such as holidays, building closures, or maintenance windows. Switch to the `Special Events` tab to manage exception dates.

    <Frame caption="The Special Events tab shows a list of exception events with options to create new ones">
      <img src="https://mintcdn.com/kodelabs/IqRYtNzjTvsoxL_7/images/kode-os/schedules/kode-os-schedules-special-events-empty.png?fit=max&auto=format&n=IqRYtNzjTvsoxL_7&q=85&s=2b8ed1ce55df7bf54f631fa2d407bed9" alt="Special Events tab showing an empty events list with Name, Type, and Value columns, and a New Event button" width="1019" height="844" data-path="images/kode-os/schedules/kode-os-schedules-special-events-empty.png" />
    </Frame>

    #### Create a special event

    Click `+ New Event` to open the Add Special Event dialog.

    <Frame caption="The Add Special Event dialog configures the event name, type, date, and recurrence">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-add-special-event.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=2bcdd7aafbaf4f3b30e89c11d75244e9" alt="Add Special Event dialog with Name field showing Friday off, Type dropdown set to Custom, Weekday set to Friday, Day set to 15, Week set to Any, Month set to May, and Year set to 2026" width="636" height="459" data-path="images/kode-os/schedules/kode-os-schedules-add-special-event.png" />
    </Frame>

    <ParamField path="Name" type="Field">
      Enter a descriptive name for the special event (for example, `Friday off`).
    </ParamField>

    <ParamField path="Type" type="Field">
      Select the event type:

      * **Custom** -- define a one-off exception date manually
      * **Reference** -- link to a calendar schedule so its events are inherited automatically
    </ParamField>

    <ParamField path="Weekday / Day / Week / Month" type="Field">
      Configure the date pattern for the event. Set the specific weekday, day of the month, week, and month.
    </ParamField>

    <ParamField path="Year" type="Field">
      Select the year for the event. Click the calendar icon to pick a date visually.
    </ParamField>

    <Frame caption="The calendar picker helps select the exact date for the special event">
      <img src="https://mintcdn.com/kodelabs/IqRYtNzjTvsoxL_7/images/kode-os/schedules/kode-os-schedules-special-event-calendar.png?fit=max&auto=format&n=IqRYtNzjTvsoxL_7&q=85&s=bd04397e9c7c05a29f93d52b96905814" alt="Add Special Event dialog with a calendar picker showing May 2026 with the 15th highlighted" width="850" height="677" data-path="images/kode-os/schedules/kode-os-schedules-special-event-calendar.png" />
    </Frame>

    Click `Save` to create the event. The event appears in the Special Events list with a "Time Missing" indicator if no time-based event has been added to its day calendar.

    <Frame caption="The created special event shows in the list with a Time Missing warning and the day calendar on the right">
      <img src="https://mintcdn.com/kodelabs/IqRYtNzjTvsoxL_7/images/kode-os/schedules/kode-os-schedules-special-event-created.png?fit=max&auto=format&n=IqRYtNzjTvsoxL_7&q=85&s=e7648a696ba8959d95f06b42753ee1fc" alt="Special Events tab showing Friday off event with Custom type, Time Missing indicator, and a blank day calendar on the right with edit and delete icons" width="1023" height="833" data-path="images/kode-os/schedules/kode-os-schedules-special-event-created.png" />
    </Frame>

    #### Add events to a special event day

    Click on the day calendar on the right to add time-based events for the special event day.

    <Frame caption="Click on the special event day calendar to create an event or all day event">
      <img src="https://mintcdn.com/kodelabs/IqRYtNzjTvsoxL_7/images/kode-os/schedules/kode-os-schedules-special-event-day-menu.png?fit=max&auto=format&n=IqRYtNzjTvsoxL_7&q=85&s=7469257cbf353419cdc97838c0077e48" alt="Special event day calendar with a right-click menu showing Create Event and All Day Event options" width="458" height="350" data-path="images/kode-os/schedules/kode-os-schedules-special-event-day-menu.png" />
    </Frame>

    After adding an event, the day calendar shows the override value for the special event day (for example, `false` for the entire day to turn equipment off).

    <Frame caption="The special event day calendar shows an all-day override with the configured value">
      <img src="https://mintcdn.com/kodelabs/IqRYtNzjTvsoxL_7/images/kode-os/schedules/kode-os-schedules-special-event-value.png?fit=max&auto=format&n=IqRYtNzjTvsoxL_7&q=85&s=19e1fc6065ac95770c95faaafe5faba7" alt="Special Events tab with Friday off event showing a pink all-day block with value false from 12:00 AM to 12:00 AM on the day calendar" width="1011" height="800" data-path="images/kode-os/schedules/kode-os-schedules-special-event-value.png" />
    </Frame>

    Expand a special event row by clicking the chevron to view its date details (Weekday, Week, Day, Month).

    <Frame caption="The expanded special event row shows the configured date pattern alongside the day calendar and Point Trends">
      <img src="https://mintcdn.com/kodelabs/IqRYtNzjTvsoxL_7/images/kode-os/schedules/kode-os-schedules-special-event-details.png?fit=max&auto=format&n=IqRYtNzjTvsoxL_7&q=85&s=95d929c5a1089bbc50a1c554eaa8ce54" alt="Schedule Details page showing the Special Events tab with Friday off expanded showing Weekday Friday, Week Any, Day 15, Month May, and the day calendar with a pink false block" width="1006" height="846" data-path="images/kode-os/schedules/kode-os-schedules-special-event-details.png" />
    </Frame>

    #### Reference events

    Reference events link a [calendar schedule](#calendar-schedules) to a weekly schedule. Instead of manually recreating the same holidays across multiple weekly schedules, you reference a single calendar schedule and all its events are inherited automatically.

    To add a reference event, click `+ New Event` and set the `Type` to `Reference`. Select the calendar schedule from the `Reference` dropdown.

    <Frame caption="A Reference type event links to an existing calendar schedule by its slot path">
      <img src="https://mintcdn.com/kodelabs/IqRYtNzjTvsoxL_7/images/kode-os/schedules/kode-os-schedules-special-event-reference.png?fit=max&auto=format&n=IqRYtNzjTvsoxL_7&q=85&s=68aee984741eb92fb4a91c9c885e94ec" alt="Add Special Event dialog with Name set to Holidays, Type set to Reference, and Reference dropdown showing a slot path to a calendar schedule" width="1024" height="723" data-path="images/kode-os/schedules/kode-os-schedules-special-event-reference.png" />
    </Frame>

    The referenced calendar schedule's events appear in the Special Events list alongside any custom events. Changes made to the source calendar schedule (adding, editing, or removing events) are automatically reflected in every weekly schedule that references it.

    <Frame caption="The Special Events list shows both Custom and Reference events, with the day calendar displaying the override value for the selected event">
      <img src="https://mintcdn.com/kodelabs/IqRYtNzjTvsoxL_7/images/kode-os/schedules/kode-os-schedules-special-events-reference-applied.png?fit=max&auto=format&n=IqRYtNzjTvsoxL_7&q=85&s=84a088e8e4bbf0738e4516c71dffa8ad" alt="Special Events tab showing Friday off as Custom type and Holidays as Reference type with slot path value, day calendar on the right showing an all-day false override from 12:00 AM to 12:00 AM, plus Reorder Events Priority button" width="1020" height="845" data-path="images/kode-os/schedules/kode-os-schedules-special-events-reference-applied.png" />
    </Frame>

    <Tip>
      Use reference events to maintain a shared holiday calendar across multiple weekly schedules. Update the calendar schedule once and all linked weekly schedules reflect the changes automatically.
    </Tip>

    ### Point references

    Point references link the schedule to specific device points that the schedule controls. Click `Point References` in the schedule header to view and manage the points associated with this schedule.

    <Frame caption="The Point References page lists all points linked to this schedule with their device, type, and current value">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-point-references.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=c525fe3de9eab9c5705157879089da6e" alt="Point References page for Weekly Schedule showing a table with Point, Device, Type, Target Slot, Kind, Area, Data Source, Source Slot, and Current Value columns, with a search bar and Filters option" width="1019" height="869" data-path="images/kode-os/schedules/kode-os-schedules-point-references.png" />
    </Frame>

    Click the edit icon to enter edit mode, then click `Add Point References` to link new points.

    <Frame caption="Edit mode for Point References shows the Add Point References option">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-point-references-edit.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=bff37ede1ebc818f4dbeb54b2f4dc02a" alt="Edit mode for Point References showing the Add Point References link, with Point, Device, Type, Target Slot, Kind, Area, Data Source, and Source Slot columns" width="1019" height="876" data-path="images/kode-os/schedules/kode-os-schedules-point-references-edit.png" />
    </Frame>

    #### Add point references

    Click `Add Point References` to open the Apply Point References dialog. The process has two steps:

    **Step 1: Choose filters** -- narrow down the available points by Data Sources, Area, Device Type, Kind, and Field.

    <Frame caption="Step 1 filters points by data source, area, and device type">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-apply-filters.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=1e1a4d90c226a3b0e82836171dc1c8ae" alt="Apply Point References dialog showing step 1 Choose Filters with Data Sources filter showing TR Fisnik with 220 points, Area filter with Floor 2, Floor 3, and Not Assigned options, and Device Type filter with Loop System, FCU, AHU, VAV, and Not Assigned options" width="834" height="697" data-path="images/kode-os/schedules/kode-os-schedules-apply-filters.png" />
    </Frame>

    <Frame caption="Additional filters for Kind and Field help narrow down the exact points to reference">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-apply-filters-kind.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=ac8246feee23416720bf39724a267e3d" alt="Apply Point References dialog showing Device Type, Kind filter with Bool selected showing 50 points, and Field filter with occ search showing occupancy_status and occupied_mode options" width="815" height="665" data-path="images/kode-os/schedules/kode-os-schedules-apply-filters-kind.png" />
    </Frame>

    **Step 2: Choose points** -- select the individual points from the filtered list.

    <Frame caption="Step 2 displays the filtered points for selection with their kind, data source, and device">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-choose-points.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=535067733c006a3407379ba1c1b86055" alt="Apply Point References step 2 showing 38 selected Occupancy Cmd points of kind Bool from TR Fisnik data source across VAV_101 through VAV_109 devices, with an Apply Point Reference button" width="822" height="681" data-path="images/kode-os/schedules/kode-os-schedules-choose-points.png" />
    </Frame>

    Select the points you want to link to the schedule and click `Apply Point Reference`.

    After applying, the point references list shows all linked points with their type, target slot, kind, and area.

    When you schedule writable points, confirm the <Tooltip tip="The command priority slot where the schedule writes values on the point. The default is often in10, but integrations can differ.">Target slot</Tooltip> before you mass-apply references. The default is often `in10`, but the correct slot can vary by integration. Confirm your deployment standard first.

    Importing a discovered schedule does not create missing points. If a schedule references points that do not exist in Cloud BMS, those references stay unresolved until you discover and add the points.

    <Frame caption="The applied point references show Occupancy Cmd points linked to VAV devices with Direct type and in10 target slot">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-point-references-applied.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=38846ea41582bbc7d9ab261a709be1c5" alt="Point References edit mode showing 38 Occupancy Cmd points with Direct type, in10 target slot, Bool kind, and areas including Floor 2 and Floor 3, with delete icons on each row" width="1024" height="882" data-path="images/kode-os/schedules/kode-os-schedules-point-references-applied.png" />
    </Frame>

    #### Reference types

    Each point reference has a `Type` that determines how the schedule controls the point. Click the Type dropdown to change the reference type.

    <Frame caption="The Type dropdown provides Direct and Indirect reference options with descriptions">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-point-references-type.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=5ad67bfe120236ecbfe04aac01451027" alt="Type dropdown showing Direct option selected with description that the point reference will be synced with the data source, and Indirect option with description that the relation remains in Cloud BMS but is not synced" width="997" height="409" data-path="images/kode-os/schedules/kode-os-schedules-point-references-type.png" />
    </Frame>

    * **<Tooltip tip="Synced with the data source so the schedule can control the point when the connector supports it.">Direct</Tooltip>** -- the point reference is synced with the data source. If successful, the schedule controls the device directly. Direct references are available only when the point can be controlled by Cloud BMS directly.
    * **<Tooltip tip="Stored in Cloud BMS only. Tracks the relationship without syncing control to the data source.">Indirect</Tooltip>** -- the relation is stored in Cloud BMS but is not synced with the data source. Use indirect references when you want to track the relationship without actively controlling the point. If the point reference does not exist in the data source, the schedule does not control the device.

    Click `Save` to confirm the changes.

    ### Monitor schedule performance

    After saving point references, the schedule details page displays a `Point Trends` section that charts the occupancy status of all referenced points over a configurable date range. Each row shows the point name, device, current status (Occupied or UnOccupied), and a timeline bar.

    <Frame caption="Point Trends shows the occupancy status timeline for all referenced points over the selected date range">
      <img src="https://mintcdn.com/kodelabs/IqRYtNzjTvsoxL_7/images/kode-os/schedules/kode-os-schedules-point-trends.png?fit=max&auto=format&n=IqRYtNzjTvsoxL_7&q=85&s=dae515929f411d79234347813f661e3a" alt="Schedule Details page showing Point Trends with Occupancy Cmd points for VAV devices, each displaying Occupied or UnOccupied status with orange and green timeline bars over a two-day period" width="1012" height="733" data-path="images/kode-os/schedules/kode-os-schedules-point-trends.png" />
    </Frame>

    The `Point References` count in the header updates to reflect the total number of linked points (for example, `Point References (38)`). Click the download icon to export the trend data.

    ### Schedule command levels

    When a schedule is actively commanding a point, the command panel for that point shows the exact priority level the schedule is controlling. For example, if the schedule commands a point at level 9, the command panel displays level 9 with its current value.

    <Frame caption="The command panel shows the priority level and value at which the schedule is commanding the point">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-command-panel.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=26ed72ae9f046054bb0d08b78214c604" alt="Command panel showing Occupancy Cmd variable with Occupied value, Action section with Priority set to Override, Value set to Occupied, Duration, Reason, Permanent checkbox, and Specific Reason fields, and Level 9 and 10 both showing Occupied as current value" width="792" height="592" data-path="images/kode-os/schedules/kode-os-schedules-command-panel.png" />
    </Frame>

    This view confirms that the schedule is actively controlling the point. You can override the schedule's command by setting a higher priority level in the Action section.

    <Info>
      ### Command actions and priority levels

      Cloud BMS uses a BACnet-inspired priority model for writable points. The same command dialog appears for BACnet and non-BACnet integrations, such as REST API thermostats. How each action maps on the device depends on the connector.

      BACnet points that accept commands have **16 priority levels** (1 is highest, 16 is lowest). When every level is empty (`null`), the point uses a **fallback / default** value (`Relinquish_Default` in BACnet). That fallback is **not** a 17th BACnet priority. Some interfaces label it as level 17 for display only.

      `Override` and `Set` turn different knobs under the hood, even when the visible value looks the same.

      | Action     | What it writes\*     | Description                                                                                 |
      | ---------- | -------------------- | ------------------------------------------------------------------------------------------- |
      | `Override` | Priority 8\*         | Temporary exception in the priority array. Takes precedence over lower-priority automation. |
      | `Set`      | Fallback / default\* | Changes the fallback or default value.                                                      |
      | `Auto`     | —                    | Clears an `Override`                                                                        |
      | `Release`  | —                    | Clears a `Set`                                                                              |

      \*Typical for most BACnet and Niagara deployments. Connectors and site standards can differ.

      `Override`, `Auto`, and `Set` borrow Niagara-style action names. `Release` is a Cloud BMS action that clears a `Set`.

      In Niagara-style control, `Set` keeps a non-null fallback so sequences and logic keep a reliable baseline. Use the priority array (including `Override`) for programmed automation and temporary exceptions.

      To make `Set` write to priority 16 instead of the fallback or default, enable **`Set in Slot16`** (Niagara) on the point. Configure that option from [device details](/products/kode-os/devices/devices#view-and-edit-points), [device templates](/products/kode-os/devices/device-templates), or [points batch update](/products/kode-os/points/points-batch-update).
    </Info>
  </Tab>

  <Tab title="Calendar schedules" icon="calendar">
    Calendar schedules define exception dates for holidays and special events. Create a calendar schedule to maintain a centralized list of holidays that can be [referenced by multiple weekly schedules](#reference-events).

    When creating a schedule, select `Calendar Schedule` as the type.

    <Frame caption="Select Calendar Schedule to create a holiday or special event schedule">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-create-calendar.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=9997d1691d3573d75f2066c08fb79ad9" alt="Create New Schedule dialog with Calendar Schedule selected, Name set to Holiday Schedule, Folder set to Schedules, and Data Source set to Demo Jace" width="621" height="447" data-path="images/kode-os/schedules/kode-os-schedules-create-calendar.png" />
    </Frame>

    After creating a calendar schedule, the details page opens directly to the events list.

    <Frame caption="A new calendar schedule shows an empty events list with a New Event button">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-calendar-empty.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=70073e981f3614b3412c55d046241905" alt="Holiday Schedule details page showing an empty events list with Name, Type, and Value columns, and a New Event button" width="1018" height="882" data-path="images/kode-os/schedules/kode-os-schedules-calendar-empty.png" />
    </Frame>

    ### Event types

    Click `+ New Event` to add holiday or special event entries. The event type determines how the date is specified:

    **Date** -- use for holidays that fall on the same calendar date each year (for example, Independence Day on July 4).

    <Frame caption="A Date type event targets a specific day and month, with an optional year">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-calendar-date-event.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=4c9b5105aa8c5818fb4950722e996ab7" alt="Add Special Event dialog with Name set to Independence Day, Type set to Date, Weekday set to Any, Day set to 4, Month set to July, and Year set to Any" width="619" height="453" data-path="images/kode-os/schedules/kode-os-schedules-calendar-date-event.png" />
    </Frame>

    **Week And Day** -- use for holidays that fall on a specific weekday and week of a month (for example, Thanksgiving on the fourth Thursday of November, or Memorial Day on the last Monday of May).

    <Frame caption="A Week And Day type event targets a specific weekday, week, and month">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-calendar-thanksgiving.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=00475a86dc052e3a5886eb1000b99203" alt="Add Special Event dialog with Name set to Thanksgiving, Type set to Week And Day, Weekday set to Thursday, Week set to Week 4, and Month set to November" width="616" height="378" data-path="images/kode-os/schedules/kode-os-schedules-calendar-thanksgiving.png" />
    </Frame>

    <Frame caption="Memorial Day uses Week And Day type with Last 7 Days to target the last Monday of May">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-calendar-weekday-event.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=c11585cc0fa7d64dddb1920f463f67fe" alt="Edit Memorial Day dialog with Type set to Week And Day, Weekday set to Monday, Week set to Last 7 Days, and Month set to May" width="627" height="386" data-path="images/kode-os/schedules/kode-os-schedules-calendar-weekday-event.png" />
    </Frame>

    ### Manage calendar events

    The events list shows all configured holidays with their type, value, and options to edit or delete each event. Click `Reorder Events Priority` to change the priority order when multiple events overlap.

    <Frame caption="The calendar schedule events list shows all holidays with options to edit, delete, and reorder priority">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-calendar-events-list.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=9771122d4944afbdf4d35f0cefdc6318" alt="Holiday Schedule events list showing Memorial Day (Week And Day), Independence Day (Date, July 4 Any), and Thanksgiving (Week And Day), with Reorder Events Priority button and edit/delete icons" width="1018" height="885" data-path="images/kode-os/schedules/kode-os-schedules-calendar-events-list.png" />
    </Frame>
  </Tab>
</Tabs>

## Discover existing schedules

When you connect a data source that has schedules configured in the external building automation system, Cloud BMS can discover and import them. You can start discovery from the Schedules module or from the Data Sources page by clicking the three-dot menu on a data source row and selecting `Discover Schedules`.

<Frame caption="You can also start schedule discovery from the Data Sources page via the row menu">
  <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-discover-datasource-menu.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=abf6e1b556e7d074449250922c1b7c82" alt="Data Sources page showing TR Fisnik data source with a three-dot menu open displaying Discover Devices, Discover Schedules, Edit, Duplicate, and Delete options" width="1024" height="716" data-path="images/kode-os/schedules/kode-os-schedules-discover-datasource-menu.png" />
</Frame>

<Steps>
  <Step title="Start discovery">
    From the Schedules module, click the three-dot menu in the upper right corner and select `Discover Schedules`.

    <Frame caption="The three-dot menu provides access to Discover Schedules and Mass Write Schedules">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-discover-menu.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=122a55d8c4d74c179c5f6765d5e35939" alt="Schedules list with the three-dot menu open showing Discover Schedules and Mass Write Schedules options" width="1017" height="445" data-path="images/kode-os/schedules/kode-os-schedules-discover-menu.png" />
    </Frame>
  </Step>

  <Step title="Select data sources">
    The Data Sources page shows all connected data sources with their discovery support status. Select the data sources you want to discover schedules from and click `Discover Schedules`. The Activity Log at the bottom tracks the discovery progress.

    <Frame caption="Select data sources and click Discover Schedules to start the discovery process">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-discover-data-sources.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=4ef7c9031db510c6f9530c80020f5829" alt="Data Sources page showing TR Fisnik data source with Devices and Schedules discovery support, Tridium Niagara type, and Activity Log showing Completed status, with Discover Schedules and Discover Devices buttons" width="1024" height="858" data-path="images/kode-os/schedules/kode-os-schedules-discover-data-sources.png" />
    </Frame>
  </Step>

  <Step title="Review discovered schedules">
    The Schedule Discovery page displays discovered schedules separated into `New Schedules` and `Existing Schedules` tabs. Use the filter tabs to view schedules with no time periods, no references, or duplicate references. Search and select the schedules you want to import.

    <Frame caption="The Schedule Discovery page lists new and existing schedules with filter options and an Add to Database button">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-discover-results.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=806e64f7c046566d517f109070cb37c0" alt="Schedule Discovery page showing 242 new schedules and 8 existing schedules, with All, No Time Periods, No References, and Duplicate References filter tabs, a selected Weekly Events Schedule, and Add to Database button" width="1024" height="881" data-path="images/kode-os/schedules/kode-os-schedules-discover-results.png" />
    </Frame>
  </Step>

  <Step title="Add to database">
    Select the schedules you want to import and click `Add to Database`. A success notification confirms the schedules have been added.

    <Frame caption="A success notification confirms the selected schedules have been added">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-discover-success.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=6edfcce98ba6ae49af2a5ca81e9a1e69" alt="Success notification showing Saved Successfully with message that selected schedules have been added" width="352" height="98" data-path="images/kode-os/schedules/kode-os-schedules-discover-success.png" />
    </Frame>

    The discovered schedules appear in the schedules list. Schedules without point references display a warning indicator.

    <Frame caption="The schedules list shows the newly discovered schedule alongside existing schedules">
      <img src="https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/schedules/kode-os-schedules-discover-added.png?fit=max&auto=format&n=wYHWxi9OuQhq1u6c&q=85&s=7f227d1018611a5f11aeeed17b9e0d33" alt="Schedules list showing newly added Weekly Events Schedule Test at the top with a 1 without point references warning, alongside four existing schedules with their current and next values" width="1021" height="857" data-path="images/kode-os/schedules/kode-os-schedules-discover-added.png" />
    </Frame>
  </Step>
</Steps>

## Driver capabilities

Some schedule features depend on deeper synchronization with the source system. Capabilities differ based on whether the schedule driver is installed. For Niagara stations, see [Install the Niagara driver](/products/kode-os/niagara-driver-installation).

| Capability                                                        | With driver       | Without driver                                |
| ----------------------------------------------------------------- | ----------------- | --------------------------------------------- |
| Discover schedules and manage visibility (Hidden / Visible / All) | Yes               | Discovery and list view still available       |
| Create schedules in Cloud BMS and sync to the source              | Yes               | Limited or unavailable                        |
| Edit weekly time slots and properties                             | Yes               | Partial (weekly slots and some properties)    |
| Add and manage special events                                     | Yes               | Limited; may be restricted to week references |
| View Next Value Change (next change time and value)               | Yes               | Typically unavailable                         |
| Delete schedules created in Cloud BMS                             | Yes               | Limited                                       |
| Delete source-discovered schedules from Cloud BMS                 | May be restricted | May be restricted                             |

## Mass write schedules

Mass write is a portfolio-level feature that allows you to update schedules and points in bulk across buildings. You can access it from the portfolio view or from the three-dot menu in the Schedules module by selecting `Mass Write Schedules`.

<Card title="Mass write" icon="layers" href="/products/kode-os/mass-write" arrow={true} cta="Learn more">
  Write multiple points and update multiple schedules simultaneously across your portfolio.
</Card>

## Optimized Start/Stop (OSS)

OSS is an AI-powered module that calculates the optimal HVAC start time based on sensor data, weather conditions, and building characteristics. Instead of starting equipment at a fixed time, OSS predicts exactly when to start so the building reaches the target temperature by occupancy. OSS has its own dedicated section in the building sidebar.

<Card title="Optimized Start/Stop (OSS)" icon="zap" href="/products/kode-os/oss" arrow={true} cta="Learn more">
  Configure OSS adapters, select operation modes, and monitor optimization performance.
</Card>

## Next steps

<CardGroup cols={2}>
  <Card title="Trends" icon="chart-line" href="/products/kode-os/trends" arrow={true} cta="Analyze">
    Chart historical point data to evaluate schedule effectiveness.
  </Card>

  <Card title="Devices" icon="cpu" href="/products/kode-os/devices/devices" arrow={true} cta="Manage">
    View and manage the equipment that schedules control.
  </Card>
</CardGroup>
