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

# Building schedules

> Create and manage preventive maintenance and inspection schedules at the building level in AssetOps

At the [building level](/products/assetops/quickstart/usage-workflow#building-level), **Schedules** generate recurring or on-demand [work orders](/products/assetops/work-orders/work-orders-overview) for preventive maintenance and inspections. Open a building from [Buildings](/products/assetops/resources/buildings), then select **Schedules** in the sidebar.

Schedules use [task templates](/products/assetops/resources/task-templates) and [teams](/products/assetops/resources/teams) you configure at the portfolio level.

***

## Schedule list

The default **list** view shows all schedules for the building.

<Frame caption="Schedules list with title, work type, recurrence, status, and task counts">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedules-list.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=fb088afedf087ab0526c8c84bb6e328d" alt="Building Schedules list view with search, list and calendar toggles, Filters, and Create button" width="1024" height="615" data-path="images/assetops/assetops-building-schedules-list.png" />
</Frame>

| Column         | Description                                                                                                                                          |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Title**      | Schedule name as a link, with schedule ID below (for example, `SCH-02235`). An external-link icon opens the linked Cloud BMS device when applicable. |
| **Work type**  | **Preventive maintenance** or **Inspection**                                                                                                         |
| **Recurrence** | How often work is generated (for example, **Weekly**, **On demand**)                                                                                 |
| **Status**     | **Active** or inactive                                                                                                                               |
| **Tasks**      | Number of tasks and total estimated time                                                                                                             |

Use **Search schedules** to find records. Use the column control to show or hide fields.

### Bulk edit schedules

Update multiple schedules at once from the list at the building or [portfolio](/products/assetops/portfolio/schedules) level. Bulk updates run as a **batch**: AssetOps processes each selected schedule individually. Valid items complete even when some rows fail. Failed rows stay available to review and export with the failure reason.

When you start a batch, a popup confirms that processing started. If another bulk update is already running, the new job is queued. Review the seven-day **Bulk History** for who triggered the update, success and failure counts, and exportable failure details. A badge shows whether the batch finished fully or stopped because of an interruption.

Select one or more rows, then select **Edit**.

<Frame caption="Bulk Edit modal updates assignee, team, and auto-fail for selected schedules">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedules-bulk-edit.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=e0d864a83d83b685edc2dc2b7881e8ee" alt="Bulk Edit modal with warning banner and checkboxes for Assignee, Team Assigned, and Auto-fail fields" width="891" height="674" data-path="images/assetops/assetops-building-schedules-bulk-edit.png" />
</Frame>

<Warning>
  Only checked fields are updated. Review your selection and field choices before you save.
</Warning>

Enable the checkbox next to each field you want to change. Only checked fields are updated on selected schedules that pass validation.

<ParamField path="Assignee" type="Dropdown">
  User assigned to work orders the selected schedules generate.
</ParamField>

<ParamField path="Team assigned" type="Dropdown">
  Team assigned to work orders the selected schedules generate.
</ParamField>

<ParamField path="Auto-fail" type="Dropdown">
  Auto-fail behavior for work orders created by the selected schedules.
</ParamField>

<ParamField path="Activation mode" type="Dropdown">
  Activate or deactivate the selected schedules.
</ParamField>

<ParamField path="Due-by days" type="Field">
  Number of days that set when generated work orders are due.
</ParamField>

<ParamField path="Next run date" type="Date">
  Date that triggers the next schedule run.
</ParamField>

<ParamField path="Auto-fill" type="Toggle">
  Force an immediate auto-fill across the selected schedules.
</ParamField>

<Steps>
  <Step title="Select schedules">
    Use row checkboxes or the header checkbox to select schedules in the list.
  </Step>

  <Step title="Open Bulk edit">
    Select **Edit** in the toolbar.
  </Step>

  <Step title="Choose fields to update">
    Enable the checkbox for each field you want to change. Select values only for checked fields. You can set activation mode, due-by days, next run date, and auto-fill in addition to assignee, team, and auto-fail.
  </Step>

  <Step title="Save and review">
    Select **Save** to start the batch, or **Cancel** to close without saving. Confirm progress in the popup, then use the seven-day bulk history to export any failed rows.
  </Step>
</Steps>

### Calendar view

Select the **calendar** view toggle to see scheduled work on a monthly grid.

<Frame caption="Calendar view shows schedule items by day with maintenance and inspection icons">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedules-calendar.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=a13981a755966e1edbcef0d69de2546f" alt="Schedules calendar view for May 2026 with colored schedule chips and Today navigation" width="1024" height="759" data-path="images/assetops/assetops-building-schedules-calendar.png" />
</Frame>

Use **Today**, month arrows, or the date picker to move between periods. Days with many schedules show a **+N more** link to expand the list.

### Filters

Select **Filters** to open the filter panel.

<Frame caption="Filter schedules by date, work type, assignee, team, frequency, and asset">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedules-filters.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=2b4c6e3b4d8bad7aed0392d7db8d55b3" alt="Schedules filters sidebar with Next Run Date, Work Type, Inspection Type, Assignee, Team Assigned, Frequency, and Asset fields" width="1024" height="780" data-path="images/assetops/assetops-building-schedules-filters.png" />
</Frame>

| Filter              | Description                                       |
| ------------------- | ------------------------------------------------- |
| **Next run date**   | Date range for upcoming runs                      |
| **Work type**       | Preventive maintenance or Inspection              |
| **Inspection type** | Inspection category for inspection schedules      |
| **Assignee**        | User assigned to generated work orders            |
| **Team assigned**   | Team assigned to generated work orders            |
| **Frequency**       | Recurrence pattern (for example, monthly, weekly) |
| **Asset**           | Asset included on the schedule                    |

Select **Clear all** to reset filters.

### Export

Open the vertical ellipsis menu in the schedule list header and select **Export** to download schedule data.

***

## Create a schedule

Select **+ Create** to start a new schedule.

### Choose work type

<Frame caption="Select Preventive Maintenance or Inspection, then choose an inspection type when applicable">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedules-create-inspection-type.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=2e40ec1c97c654a440f916ff1d155e4d" alt="Create Schedule modal with Preventive Maintenance and Inspection work types plus Assets Area and General inspection type options" width="510" height="581" data-path="images/assetops/assetops-building-schedules-create-inspection-type.png" />
</Frame>

| Work type                  | Description                                           |
| -------------------------- | ----------------------------------------------------- |
| **Preventive maintenance** | Recurring maintenance for building systems and assets |
| **Inspection**             | Routine site or asset walkthroughs to log findings    |

When you select **Inspection**, choose an **Inspection type**:

| Inspection type | Description                              |
| --------------- | ---------------------------------------- |
| **Assets**      | Inspect individual assets                |
| **Area**        | Inspect rooms, floors, or common areas   |
| **General**     | Catch-all for miscellaneous observations |

Select **Continue** to open the **New schedule** wizard.

### Wizard overview

The wizard has five steps:

| Step             | Purpose                                                 |
| ---------------- | ------------------------------------------------------- |
| **General info** | Title, asset type, assignment, description, attachments |
| **Schedule**     | Timing, recurrence, due dates, and auto-fail            |
| **Assets**       | Assets included on the schedule                         |
| **Tasks**        | Task templates or task groups for generated work orders |
| **Overview**     | Review settings before you create the schedule          |

***

### Step 1: General info

<Frame caption="General info step with title, asset type, assignee, team, description, and attachments">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedules-wizard-general.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=e88bc90f40aee211ff61a168d0348f25" alt="New Schedule wizard step General Info with Title, Asset Type, Assignee, Assign Team, Description, and Attachments fields" width="1024" height="764" data-path="images/assetops/assetops-building-schedules-wizard-general.png" />
</Frame>

<ParamField path="Title" type="Field" required>
  Name for the schedule.
</ParamField>

<ParamField path="Asset type" type="Dropdown" required>
  Asset types this schedule applies to.
</ParamField>

<ParamField path="Assignee" type="Dropdown">
  User assigned to work orders the schedule generates.
</ParamField>

<ParamField path="Assign team" type="Dropdown">
  Team assigned to work orders the schedule generates. Work orders assign to the entire team so members can assign work to themselves.
</ParamField>

<ParamField path="Description" type="Field">
  Notes about the schedule scope or procedure.
</ParamField>

<ParamField path="Attachments" type="Field">
  Files such as procedures or reference images. Select the upload area to add attachments.
</ParamField>

Select **Next** to continue.

***

### Step 2: Schedule

Configure when and how often the schedule runs.

<Frame caption="Schedule step with recurrent timing, frequency, repeat days, months, and auto-fail">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedules-wizard-schedule.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=cd39f0b55dd06902ee2763d5c829a0bc" alt="New Schedule wizard Schedule step with Recurrent type, dates, Due By Days, Weekly frequency, Repeat On Monday, and Auto-fail toggle" width="1024" height="762" data-path="images/assetops/assetops-building-schedules-wizard-schedule.png" />
</Frame>

<ParamField path="Schedule type" type="Dropdown" required>
  **Just once**, **Recurrent**, or **On demand**. The fields below change based on your selection.
</ParamField>

<ParamField path="Start date and time" type="Date" required>
  When the schedule begins generating work.
</ParamField>

<ParamField path="End date and time" type="Date">
  Optional end date for the schedule window.
</ParamField>

<ParamField path="Due by days" type="Field" required>
  Number of days the assignee has to complete work after it is scheduled.
</ParamField>

<ParamField path="Frequency" type="Dropdown" required>
  Recurrence interval for recurrent schedules (for example, **Weekly**). Some frequencies support custom repeat options.
</ParamField>

For custom recurrence, set **Repeat on** (days of the week) and **On months** when those controls appear.

<ParamField path="Auto-fail" type="Toggle">
  When enabled, work orders auto-fail if not completed by the configured threshold.
</ParamField>

<ParamField path="Days after due date" type="Field" required>
  Days after the due date before auto-fail applies (shown when **Auto-fail** is on).
</ParamField>

Select **Next** to continue.

***

### Step 3: Assets

Choose how assets are included on the schedule.

<Frame caption="Add assets by asset type or by selecting individual assets from a list">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedules-wizard-assets.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=b0b3fdc4311147a5016505a6eacf08e0" alt="New Schedule Assets step with Add by asset types recommended and Add by asset list options" width="1024" height="712" data-path="images/assetops/assetops-building-schedules-wizard-assets.png" />
</Frame>

| Method                                 | Description                                                                                                  |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| **Add by asset type(s)** (recommended) | Includes all assets of the selected types. New assets of those types added later are included automatically. |
| **Add by asset list**                  | Select specific assets from a searchable table.                                                              |

When you use **Add by asset list**, search and filter the table, then select rows.

<Frame caption="Filter assets by level and location when adding by list">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedules-wizard-assets-filters.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=99126b508d9c540271782cc8c5940752" alt="Assets step with Search Assets, Filter by Level, Filter by Located In, and asset table columns" width="1024" height="762" data-path="images/assetops/assetops-building-schedules-wizard-assets-filters.png" />
</Frame>

<Frame caption="Select individual assets with checkboxes before continuing">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedules-wizard-assets-selected.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=a27a79dc744545aa87aa7b137f899006" alt="Assets step with three assets selected showing Title, Asset Type, and Located In columns" width="1024" height="712" data-path="images/assetops/assetops-building-schedules-wizard-assets-selected.png" />
</Frame>

Use **Select all** to include every asset in the current filtered list. Select **Next** when your asset selection is complete.

***

### Step 4: Tasks

Assign work that each generated work order should include.

<Frame caption="Tasks step with task list, search, and selected tasks panel">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedules-wizard-tasks.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=01b5745003f0247cd3a52bdf0fad22e1" alt="New Schedule Tasks step with Tasks and Task Groups tabs, search, and Selected Tasks panel" width="1024" height="827" data-path="images/assetops/assetops-building-schedules-wizard-tasks.png" />
</Frame>

Two tabs are available:

| Tab             | Description                                                                     |
| --------------- | ------------------------------------------------------------------------------- |
| **Tasks**       | Select individual [task templates](/products/assetops/resources/task-templates) |
| **Task groups** | Select a predefined group of templates                                          |

Search tasks, select rows, then use the arrow control to move tasks into **Selected tasks**. Select **Confirm** after search if needed. Select **Next** when at least one task is selected.

***

### Step 5: Overview

Review general info, schedule timing, and selected tasks before you create the schedule. The overview shows title, recurrence, due rules, and selected tasks in read-only summary sections.

Select **Back** to change a prior step, **Cancel** to exit, or **Create** to save the schedule.

<Frame caption="Complete the wizard to create the schedule">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedules-wizard-complete.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=2b14b30c68dc2b16a804eba65c51d539" alt="Overview step footer with Back, Cancel, and Complete buttons" width="1024" height="827" data-path="images/assetops/assetops-building-schedules-wizard-complete.png" />
</Frame>

***

## Schedule detail page

Select a schedule **Title** from the building list or calendar to open the schedule detail page. From the [portfolio schedules](/products/assetops/portfolio/schedules) list or calendar, select the **Title** link or the external-link icon beside the title to open the same detail page in this building context. The header shows the schedule name, a back control, and a menu for additional actions.

Five tabs organize schedule content:

| Tab             | Purpose                                            |
| --------------- | -------------------------------------------------- |
| **Details**     | General information, description, and timing       |
| **Attachments** | Files linked to the schedule                       |
| **Tasks**       | Task templates assigned to generated work orders   |
| **Assets**      | Building assets included on the schedule           |
| **Logs**        | History of work order batches the schedule created |

### Details tab

<Frame caption="Details tab with general information, description, and schedule timing sections">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedule-details.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=df2dfffcc1a998b6e30b586cc0e600c1" alt="Weekly Schedule Details tab showing General Information with status and assignee, and Schedule section with recurrence and auto-fail" width="1024" height="812" data-path="images/assetops/assetops-building-schedule-details.png" />
</Frame>

**General information** includes:

| Field               | Description                                        |
| ------------------- | -------------------------------------------------- |
| Title               | Schedule name                                      |
| Number              | Schedule ID (for example, `SCH-00091`)             |
| Status              | **Active** or inactive                             |
| Assignee            | User assigned to generated work orders             |
| Team assigned       | Team assigned to generated work orders             |
| Created by          | User who created the schedule                      |
| Created at          | Creation date                                      |
| Asset type          | Asset types on the schedule (for example, **AHU**) |
| Start date and time | When the schedule starts                           |

Select the <Icon icon="pencil" size="15" /> icon on **General information** or **Schedule** to edit those sections.

**Description** holds optional notes about the schedule.

**Schedule** shows timing and recurrence:

| Field       | Description                                 |
| ----------- | ------------------------------------------- |
| Next run    | Next scheduled run date and time            |
| End by      | End date for the schedule window            |
| Recurrence  | Pattern (for example, weekly on Monday)     |
| Due by      | Days to complete work after it is scheduled |
| On month(s) | Months when recurrent runs apply            |
| Auto-fail   | Days after due when work auto-fails         |

### Attachments tab

<Frame caption="Attachments tab with Upload and file cards">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedule-attachments.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=e87eb1807230a73c52fd200781e93c1a" alt="Weekly Schedule Attachments tab with Upload button and attachment card showing date uploader and filename" width="1024" height="313" data-path="images/assetops/assetops-building-schedule-attachments.png" />
</Frame>

* Select **Upload** to add files to the schedule.
* Each card shows upload date, uploader, and file name.
* Use the row menu on a card for file actions.

### Tasks tab

<Frame caption="Tasks tab lists assigned templates with search, reorder, and Add Task">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedule-tasks.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=09b707402be93281aa37fe17551058ac" alt="Weekly Schedule Tasks tab with task table showing Title, Asset Types, and Estimated Time columns plus Add Task button" width="1024" height="352" data-path="images/assetops/assetops-building-schedule-tasks.png" />
</Frame>

| Column             | Description                     |
| ------------------ | ------------------------------- |
| **Title**          | Task name or instruction text   |
| **Asset types**    | Asset types the task applies to |
| **Estimated time** | Expected duration for the task  |

Use **Search** to find tasks. Select **Reorder** to change task order on generated work orders.

Select **+ Add task** to assign templates from your portfolio library.

<Frame caption="Add Task dropdown includes Add Custom Task">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedule-add-custom-task.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=21a265f48c9b0941e5e0932b15450a80" alt="Add Task split button menu showing Add Custom Task option" width="304" height="126" data-path="images/assetops/assetops-building-schedule-add-custom-task.png" />
</Frame>

| Option              | Description                                                                                           |
| ------------------- | ----------------------------------------------------------------------------------------------------- |
| **Add task**        | Open the task picker to select existing [task templates](/products/assetops/resources/task-templates) |
| **Add custom task** | Create a one-off task for this schedule only                                                          |

<Frame caption="Add Task modal lists templates with asset types and external links">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedule-add-task.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=662d54860892fafa4b02e46c8abed2d3" alt="Add Task modal with searchable task table, Title and Asset Types columns, and Save button" width="863" height="628" data-path="images/assetops/assetops-building-schedule-add-task.png" />
</Frame>

Select tasks in the modal, then select **Save** to add them to the schedule.

### Assets tab

<Frame caption="Assets tab lists building assets on the schedule with Add Asset">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedule-assets.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=e6d1adb79478590ae177cb8df8315d3d" alt="Weekly Schedule Assets tab with asset table showing Title, Asset Type AHU, and Area columns" width="1024" height="419" data-path="images/assetops/assetops-building-schedule-assets.png" />
</Frame>

| Column         | Description                 |
| -------------- | --------------------------- |
| **Title**      | Asset name on the schedule  |
| **Asset type** | Asset type for the record   |
| **Area**       | Building area for the asset |

Select **+ Add asset** to include more assets. Use **Search** to filter the list.

<Frame caption="Edit addition method changes how assets are added to the schedule">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedule-assets-menu.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=fba8d0081a0cf8831f9bcf3c156232ad" alt="Assets tab menu showing Edit Addition Method option next to Add Asset button" width="1024" height="419" data-path="images/assetops/assetops-building-schedule-assets-menu.png" />
</Frame>

**Edit addition method** switches between adding by asset type and adding by asset list, matching the options in the [create wizard](#step-3-assets).

### Logs tab

<Frame caption="Logs tab shows work order generation history by run number and date">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-schedule-logs.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=edc2193beeb33fd5b2b3d6207f98482f" alt="Weekly Schedule Logs tab with Number, Work Orders, and Created At columns" width="1024" height="288" data-path="images/assetops/assetops-building-schedule-logs.png" />
</Frame>

| Column          | Description                                                      |
| --------------- | ---------------------------------------------------------------- |
| **Number**      | Log entry ID for the schedule run (for example, `SCH-00017-001`) |
| **Work orders** | Count of work orders created in that run                         |
| **Created at**  | Date the batch was generated                                     |

Open a log entry to review work orders created for that run.

***

## Manage schedule status

From the **Details** tab you can:

* Change **Status** between **Active** and inactive
* Edit general information and schedule timing
* **Trigger** on-demand schedules manually when the schedule type is on demand

<Note>
  Inactive schedules do not generate new work orders. Existing work orders already created remain unchanged.
</Note>

***

## Related modules

<CardGroup cols={2}>
  <Card title="Task templates" icon="list-checks" href="/products/assetops/resources/task-templates" arrow={true}>
    Define reusable tasks and task groups for schedules.
  </Card>

  <Card title="Work orders" icon="clipboard-list" href="/products/assetops/work-orders/work-orders-overview" arrow={true}>
    View work orders generated from schedules.
  </Card>

  <Card title="Assets" icon="box" href="/products/assetops/assets/assets" arrow={true}>
    Review assets included on schedules and linked devices.
  </Card>

  <Card title="Teams" icon="users" href="/products/assetops/resources/teams" arrow={true}>
    Assign teams that receive scheduled work orders.
  </Card>

  <Card title="Schedule fields" icon="table" href="/products/assetops/reference/schedule-fields" arrow={true}>
    Look up schedule columns, recurrence options, and field definitions.
  </Card>
</CardGroup>
