> ## 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.

# Points

> Understand and manage the individual data values associated with your building equipment in Cloud BMS.

> [!NOTE]
>
> Points is a building-level module. Select a building from the [sites list](/products/kode-os/sites-and-map.md) to access its points.

A point is the most granular unit of data in Cloud BMS. Each point represents a single data value associated with a device: a temperature sensor reading, a valve position, a setpoint, an occupancy status, or a fan speed command. Points are the foundation of monitoring, control, trending, and analytics in the platform.

```mermaid actions={false} theme={"theme":{"light":"github-light","dark":"github-dark"}}
---
config:
  theme: neutral
---
flowchart LR
    DEV[Device] -- "contains" --> RO[Read-Only Point]
    DEV -- "contains" --> WR[Writable Point]
    VDEV[Virtual Device] -- "contains" --> VP[Virtual Point]
    DEV -- "mirrors to" --> CP[Copied Point]

    classDef sky stroke:#374D7C,fill:#E2EBFF,color:#374D7C
    classDef rose stroke:#FF5978,fill:#FFDFE5,color:#8E2236
    classDef peach stroke:#FBB35A,fill:#FFEFDB,color:#8F632D

    class DEV,VDEV sky
    class RO,WR rose
    class VP,CP peach
```

## Point types

Cloud BMS categorizes points into four types based on their origin and behavior:

| Type | Description |
| - | - |
| **Read-only** | Data values that report a measurement or status. You can view and trend these points but cannot write to them. Examples: temperature sensors, humidity readings, power consumption. |
| **Writable** | Points that accept commands to change equipment behavior. Examples: temperature setpoints, fan speed commands, lighting levels. |
| **Virtual** | Calculated or manually defined points on virtual devices. These do not correspond to a physical sensor. Examples: aggregated totals, derived calculations. |
| **Copied** | Mirrors of existing points duplicated into another device context. The source device retains ownership of the data. |

## How points are discovered

When you add a data source, Cloud BMS discovers the available devices and their points through the discovery process. Discovery queries the external system and imports the raw point names, values, and metadata.

After discovery, points appear with their native names from the data source (for example, `AHU1.SA-T` or `Zone3_OccSensor`). You then normalize these raw names using device templates and the ontology mapping tools.

## Navigate points

From the building view, click **`Points`** in the left navigation. The Points section contains four sub-pages: **Points Status**, **Points List**, **Batch Update Points**, and **Mass Write Points**.

### Points Status

**Points Status** gives you a real-time health summary of every point in the building. Status badges across the top show counts for **Ok**, **Down**, **Fault**, **Disabled**, **No Value**, **Overridden**, **FDD**, and **Stale** points. Click any badge to filter the table to that status.

The table lists each point with its **Name**, **Value**, **Field**, and **Device**. Use the search bar to find a specific point by name.

![Points Status page with status badges showing Ok 1390, Down 0, Fault 0, Disabled 0, No Value 29, Overridden 3, FDD 0, and Stale 0, plus a table listing points with Name, Value, Field, and Device columns](https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/points/kode-os-points-status-page.png?fit=max\&auto=format\&n=wYHWxi9OuQhq1u6c\&q=85\&s=9242cb221c18c6cf41cde0ade9b8aee2)

Points Status shows live health badges and a sortable table of all building points

### Points List

**Points List** provides the same point data with advanced filtering. Use the filter row at the top to narrow results by **Field**, **Kind**, **Device Type**, **Ontology Type**, **Area**, **Data Sources**, or **Writability**. You can also access **`Mass Write Points`** directly from this page.

![Points List page with filter dropdowns for Field, Kind, Device Type, Ontology Type, Area, Data Sources, and Writability across the top, Export and Mass Write Points buttons, and a table listing points with Name, Value, Field, and Device columns](https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/points/kode-os-points-list-page.png?fit=max\&auto=format\&n=wYHWxi9OuQhq1u6c\&q=85\&s=b5b3001fddc0def003114ded4ee2751c)

Points List adds filtering controls for Field, Kind, Device Type, Ontology Type, Area, Data Sources, and Writability

### Export points

Cloud BMS supports two export workflows for points. Use **Export** on **Points Status** or **Points List** to download the current point inventory. Use **Export Point Timeseries** to download historical values as CSV for analysis outside the platform.

#### Export point list

Both **Points Status** and **Points List** include an **`Export`** button. The export captures the filtered point list as it appears on screen, not historical readings.

Click **`Export`** to open the dialog. Enter a **File Name**, choose which **Columns** to include, then click **`Export`** to download the file.

![Export dialog with File Name text field, Columns dropdown showing Selected 8, and Cancel and Export buttons](https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/points/kode-os-points-export-dialog.png?fit=max\&auto=format\&n=wYHWxi9OuQhq1u6c\&q=85\&s=4d887f35c324f92c3b0e611ecb57b445)

The export dialog lets you name the file and choose which columns to include

#### Export point timeseries

**Export Point Timeseries** exports historical point data as CSV. Use it to share evidence with contractors, analyze data in Excel, or build reports outside Cloud BMS.

Open the export from any of these locations:

| Location | Scope |
| - | - |
| [Trends](/products/kode-os/trends.md) | Building-wide — query and export points across the site |
| **Device Details** | Single device — open the three-dot menu and select **Export Points** |
| **System Details** | System scope — exports points on devices in that system |

**1. Select points**

In **Export Points**, stay on **Select points to Export**. Use the search bar and filters to narrow the list by **Ontology Field**, **Device Type**, **Canonical Type**, **Device**, **Area**, **Ontology Type**, **Data Source**, **Writability**, or **Kind**. Select one or more points, then click **Next**.

![Export Point Timeseries step 1 showing a list of points with checkboxes, values, fields, and device assignments](https://mintcdn.com/kodelabs/njejy12QoNdTJ3U4/images/kode-os/devices/kode-os-devices-export-select-points.png?fit=max\&auto=format\&n=njejy12QoNdTJ3U4\&q=85\&s=23e49ce3b6e6286e470607a60de6123e)

Step 1 filters and selects points for the timeseries export

**2. Configure export settings**

Choose **Export Format**, set the **Time range**, then configure format-specific options. Click **Export** to download the CSV.

![Export settings showing Raw List and Pivoted format options, time range selector, granularity dropdown, and columns picker](https://mintcdn.com/kodelabs/njejy12QoNdTJ3U4/images/kode-os/devices/kode-os-devices-export-settings.png?fit=max\&auto=format\&n=njejy12QoNdTJ3U4\&q=85\&s=67607aea8d1560b5c10c183e2d55eece)

Step 2 sets format, time range, granularity, and columns

##### Export formats

| Format | Structure | Best for |
| - | - | - |
| **Raw List** | One row per collected sample; points grouped and sorted by point | Troubleshooting, audit trails, exports that need metadata per record |
| **Pivoted** | Time periods as rows; points as columns | Spreadsheet analysis, comparing multiple points on the same time axis |

**Raw List** exports every collected value for the selected points. It does not support granularity or aggregation. You can choose which metadata columns to include, such as **Point Display Name**, **Original Name**, **Field**, **Device Name**, **Date & Time (US)**, **Value**, **Unit**, and **Status**.

**Pivoted** aligns data to time buckets and is optimized for summarized reporting. Select **Granularity** and, when granularity is not **Raw**, set an aggregation function per point.

##### Granularity (Pivoted only)

| Option | Description |
| - | - |
| **Raw** | No time alignment |
| **1 min**, **2 mins**, **5 mins**, **15 mins**, **30 mins** | Sub-hourly buckets |
| **1 hour**, **1 day** | Hourly or daily summaries |

When you select a non-raw granularity, choose **Original Name** or **Display Name (Ontology)** for column headers. Review the **Aggregate Functions** section and set a function for each exported point.

##### Aggregation functions (Pivoted only)

| Point type | Available functions |
| - | - |
| **Number** | Average, Sum, Median, Min, Max, First, Last, Count, Delta |
| **Boolean / Enum** | First, Last, Longest value active |

**Longest value active** returns the value that was active for the longest duration within the alignment period. For example, with **1 hour** granularity, the export uses the state that held for the most time during that hour.

##### Limits

> [!WARNING]
>
> Each export supports up to **500** points and **800,000** total rows. Row count depends on time range, number of points, and collection frequency. If the export exceeds the limit, reduce the time range or export fewer points.

##### Fill behavior (Pivoted)

When granularity is applied:

* If a point is **down** for the entire alignment period, the export value is null or down for that period.
* If a point has status **OK** but no new sample during the period, the export carries forward the **last value** — but only for gaps **under one hour**.
* If a point has no value for **longer than one hour**, the export does not keep filling. Values are treated as missing or down based on status.

## Mass write points

**Mass write points** sends write commands to multiple writable points in a single tracked job. Use it when you need the same priority, value, and duration applied across many setpoints or commands — for example seasonal setpoint changes, releasing overrides overnight, or peak demand reductions.

This workflow writes live values to equipment. To change point metadata, writability, or normalization instead, use [Points batch update](/products/kode-os/points/points-batch-update.md). For portfolio-wide jobs across many buildings, see [Mass write](/products/kode-os/mass-write.md).

### Access mass write points

**Building level**

1. Select a building from the [sites list](/products/kode-os/sites-and-map.md).
2. Open **`Points`** in the left navigation.
3. Click **`Mass Write Points`** in the left sub-menu.

You can also open **`Mass Write Points`** from **Points List**.

The **Mass Write Points** page lists previous jobs for the building. Search by job name, review status and statistics, or click **`Write Points`** to start a new job.

![Mass Write Points page at building level with job list showing Name, Buildings, Statistics, User, Reason, and Time columns, search bar, and Write Points button](https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/points/kode-os-points-mass-write-jobs.png?fit=max\&auto=format\&n=wYHWxi9OuQhq1u6c\&q=85\&s=ce69a233291f6220d338c1e4ffbcd3b6)

The Mass Write Points page lists previous jobs and provides access to Write Points

**Portfolio level**

1. From the portfolio view, open **`Mass Write`**.
2. Click **`Points`** in the left-side menu.
3. Click **`Write Points`** to start a new job or open an existing job from the list.

See [Mass write](/products/kode-os/mass-write.md) for the full portfolio workflow, permissions, and screenshots.

### Selection and search

Only writable points appear in the mass write list. Points are not selected by default — select targets explicitly with row checkboxes.

Use **`Select all`** to include every point across all pages. After **`Select all`**, deselect individual exceptions as needed.

Use **Filters** to narrow the list by point type, canonical type, area, ontology field, data source type, and other attributes. To find non-templated points, set **Ontology Field** to **Not Assigned**.

Search supports three match modes — **Starts with**, **Contains**, and **Exact** — across these fields:

| Field | Description |
| - | - |
| **Point Name** | Display or raw point name |
| **Path** | Point path in the data source |
| **Ontology Field** | Normalized ontology field name |
| **Device Name** | Device that owns the point |

Toggle between **List** and **Grouped** view in the upper right.

#### Grouped selection

Grouped view simplifies selection for large point sets, especially non-templated points.

In grouped mode:

* Points are grouped by name and kind.
* Each group shows the group name, point count, and device count.
* Expand a group to review the underlying point list with the same columns as the standard table.
* Select entire groups. You cannot include or exclude individual points inside a group.

Filters still apply to the full list before grouping. Grouping does not replace filters.

> [!WARNING]
>
> When writing very large point sets, confirm that target data sources can handle the write volume. This matters when many buildings share a single data source.

### Create a mass write points job

**1. Open mass write points (building level)**

From **Mass Write Points**, click **`Write Points`** to start a new job.

**2. Filter buildings (portfolio only)**

On portfolio-level jobs, use the **Filters** panel on the left to select buildings by country, state, city, or building name. Click **`Apply`** to load points from those buildings.

**3. Filter and search points**

Use **Filters** to narrow the list by **Kind**, **Area**, **Canonical**, **Field**, **Datasource**, and other attributes. Use the search bar to find points by name. Set **Ontology Field** to **Not Assigned** when you need non-templated points.

**4. Select points**

Choose targets in **List** or **Grouped** view. Use row checkboxes or group checkboxes, or click **`Select all`** in the selection banner to include every point across all pages. Deselect any exceptions.

![Select Points page at building level with Kind, Area, Canonical, Field, and Datasource filters, four points selected, Select all link, and point table with Name, Value, Point Type, Device, and Data Source Type columns](https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/points/kode-os-points-mass-write-select-points.png?fit=max\&auto=format\&n=wYHWxi9OuQhq1u6c\&q=85\&s=fc699aa12b1319cfbf1295e1cedff669)

The Select Points step shows filters, List and Grouped view toggle, and a selection count banner

Click **`Continue to Set Values`** when the selection is final.

> [!WARNING]
>
> You cannot remove points in later steps. Verify your selection before continuing.

**5. Set values and execute**

Enter a **Name**, **Reason Type**, and **Reason Description**. Points are grouped automatically by ontology field, unit, and accepted values. Configure each group:

| Field | Description |
| - | - |
| **Priority** | Write priority: **Override**, **Auto**, **Set**, or **Release** |
| **Value** | Value to write to every point in the group. Negative values are supported for numeric points. |
| **Duration** | How long the value persists before reverting. Check **Permanent** to keep the value until released. |

Click **`Save`** for each group. Color highlights indicate missing information.

![Set Values page at building level with Name, Reason Type, and Reason Description fields and a point group table showing Override priority, true value, and 00:30 duration](https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/points/kode-os-points-mass-write-set-values.png?fit=max\&auto=format\&n=wYHWxi9OuQhq1u6c\&q=85\&s=b765a98efce9e64d93da5c31d9ac2cbb)

Set Name, Reason Type, and priority, value, and duration for each point group

After saving all groups, click **`Execute`** to start the write operation.

### Job details and post-actions

After execution, Cloud BMS opens the job details page with status, timestamp, reason, user, and success and failure counts per group. Click the blue point counts to view individual points and their write results.

![Mass Write Points job details page at building level showing Completed status, time, reason, user, and Point Groups table with Priority, Value, Duration, and Status columns](https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/points/kode-os-points-mass-write-job-details.png?fit=max\&auto=format\&n=wYHWxi9OuQhq1u6c\&q=85\&s=56dc16e22f0353803959481115d0f143)

Job details shows status, reason, user, and per-group write results

From job details, use the three-dot menu to:

| Action | Behavior |
| - | - |
| **Edit Details** | Update the job name or description |
| **Re-run Job** | Re-execute using all original points. You can edit the selection and write configuration before running |
| **Retry Job with failed points** | Re-execute immediately for failed points only. You can edit the configuration before running |

![Job details three-dot menu showing Edit Details, Re-run Job, and Retry Job with failed points options](https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/points/kode-os-points-mass-write-job-actions.png?fit=max\&auto=format\&n=wYHWxi9OuQhq1u6c\&q=85\&s=40e3f7fc03d5bee5d8e9341d51d5b8cb)

The job actions menu provides options to edit, re-run, or retry failed points

Click **`Export`** to download job results as CSV. Enter a **File Name**, choose which **Columns** to include, then click **`Export`**.

The CSV export includes **Building ID**, **Building Name**, **Device ID**, **Device Name**, **Name**, **Field**, **Priority**, **Value**, **Duration**, **Status**, and **Failed Reason**.

![Export dialog with File Name field and Columns dropdown set to All Columns](https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/points/kode-os-points-mass-write-export-dialog.png?fit=max\&auto=format\&n=wYHWxi9OuQhq1u6c\&q=85\&s=bfd48f60254944eae36546b979f6aa8d)

Export job results with a custom file name and column selection

Completed jobs remain listed on the **Mass Write Points** page. Open the three-dot menu on any job row to edit details, re-run, or retry failed points.

![Mass Write Points job list with three-dot menu open showing Edit Details, Re-run Job, and Retry Job with failed points options](https://mintcdn.com/kodelabs/wYHWxi9OuQhq1u6c/images/kode-os/points/kode-os-points-mass-write-jobs-actions.png?fit=max\&auto=format\&n=wYHWxi9OuQhq1u6c\&q=85\&s=ca888b2843883304a225f61f41a00269)

Manage previous jobs from the Mass Write Points list

## Normalize point names

Point normalization standardizes raw point names from different manufacturers into a consistent ontology format. This is critical for cross-building analytics, automated fault detection, and dashboard generation.

Cloud BMS provides an ML-powered auto-suggest tool that recommends standardized names based on the raw point name. The mapping follows the ontology field format:

`[aggregator]_[descriptor]_[component]_[measurement descriptor]_[measurement]_[point type]`

For example:

| Raw Point Name | Standardized Name |
| - | - |
| `SA-T` | `supply_air_temperature_sensor` |
| `RA-T` | `return_air_temperature_sensor` |
| `CLG-SP` | `cooling_temperature_setpoint` |
| `FAN-CMD` | `fan_run_command` |
| `OCC-STS` | `occupancy_status` |

> [!TIP]
>
> Consistent normalization enables platform-wide benefits: simplified dashboard generation (filter and select points by ontology field), cross-building comparisons, and automated fault detection rules that apply universally.

## Point writability

Writable points allow you to command equipment directly from Cloud BMS. See [command and control points](/products/kode-os/points/commanding-points.md) for how to send commands from device details or a floor plan.

To make a point writable (or remove writability), you can modify it individually from the device details or in bulk using the points batch update feature.

### Remove writability from a single point

**1. Navigate to the device**

Go to `Devices` and select the device containing the point.

**2. Open point editing**

From device details, click the information icon in the right sidebar, then click the edit button to open the full point list.

**3. Modify writability**

Click the point you want to update. In the panel that opens, uncheck the `Writable` option and remove the `Writable` tag. Click `Save`.

## Enum mapping

Some points report enumerated values (enums) rather than numeric readings. For example, an operating mode point might report values like `0`, `1`, `2` that correspond to `Off`, `Heat`, `Cool`.

Enum mapping translates these numeric codes into human-readable labels. Navigate to the enum mapping interface from the device or point settings to configure these translations.

> [!NOTE]
>
> Enum mappings are critical for features like OSS, FDD, and FTT. For example, OSS requires a correctly mapped `Occupied Mode` enum to determine when a space is in occupied or unoccupied mode. Incorrect mappings can cause false fault detections or missed schedule optimizations.

## Next steps

> **[Trends](/products/kode-os/trends.md)**
>
> Plot point history and export timeseries from the building-wide Trends module.

> **[Command points](/products/kode-os/points/commanding-points.md)**
>
> Send commands to writable points from device details or floor plans.

> **[Copied points](/products/kode-os/devices/copied-points.md)**
>
> Mirror point values into other devices for shared monitoring.

> **[Points batch update](/products/kode-os/points/points-batch-update.md)**
>
> Make mass edits to point metadata, writability, and normalization.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.