Import & Export
Assets can be bulk imported or exported using CSV files. This is useful for initial setup, integration with other systems, or performing bulk edits.
CSV Structure
Each row in the CSV represents a single asset. The following fields are recognized:
| Field | Required | Description |
|---|---|---|
name |
Required | The display name of the asset (e.g., AHU-1). |
type |
Required | The asset type (see Asset Types). |
id |
Optional | The system identifier of the asset. If provided, import will attempt to merge with an existing asset. If omitted, a new asset is created. |
parent_space_id |
Optional | The space this asset is located in (e.g., sp.4). |
parent_zone_ids |
Optional | The zones this asset serves, as a comma-separated list (e.g.,
z.1,z.2). |
fed_by_asset_ids |
Optional | The assets that feed this one, as a comma-separated list (e.g.,
a.4,a.5). |
Because parent_zone_ids and
fed_by_asset_ids hold comma-separated lists, quote the cell
when it contains more than one id:
name, type, parent_space_id, parent_zone_ids
AHU-1, mech.ahu, sp.4, "z.1,z.2"
In addition to these, any space property may be included as a column
using its property id (see Asset
Properties). For example, model or
serial_number. See Property Data Types for how each type
is written in CSV, plus how omitted and empty cells are handled.
Example
Adding two assets with properties:
name, type, manufacturer, model, installation_date, expected_life, expected_replacement_cost
AHU-1, mech.ahu, Carrier, AHU-M8, 2023-09-07, 9 years, $65,000
VAV-12, mech.vav, Distech, VAV-HX1, 2023-09-07, 15 years, $2,500
Updating only the comments on an existing asset, leaving every other property untouched:
id, general_comments
a.7, Check back in 2 weeks
Temporary Ids
Relationships normally reference a record by its system id, which
means the record has to exist already. To relate two assets that are
both being created in the same import, give the first one a
temporary id - any label starting with @ -
in the id column, then reference that label:
name, id, type, fed_by_asset_ids
AHU-1, @ahu1, mech.ahu,
VAV-1, , mech.vav, @ahu1
VAV-2, , mech.vav, @ahu1
A row whose id starts with @ is still
treated as a new record - the label only exists to be referenced. Lists
work the same way, so "@ahu1,@ahu2" is valid.
Two rules apply:
- A temporary id must be at least one character after the
@. - The row defining a label must appear before any row referencing it. Rows are processed in order, and a reference to an unknown label fails the import.
Temporary ids exist only for the duration of the import and are never stored. They are most useful in the NEX format, where a label defined on one sheet can be referenced from another.
In addition to these, any asset property may be included as a column
using its property id (see Asset
Properties). For example, model or
installation_date.
Import Behavior
Merge — If an
idis provided and a matching asset exists, the row’s properties are merged into the existing record. Properties not listed remain unchanged.Add Asset — If no
idis provided, the row is added as a new asset.Validation —
nameandtypeare required on every row. If import validation fails, no data will be added or updated. All errors are reported so they can be corrected and the import retried.
Export
Export produces a CSV with all defined assets, including:
id,name, andtypeparent_space_id,parent_zone_ids, andfed_by_asset_ids- A column for every asset property, whether or not it has a value
This export can be used as a template for re-importing updates.