Assets
The asset record in full - identity, placement, lifecycle data, statuses, costs, and the detail page that gathers everything an asset knows.
An asset is any piece of equipment worth tracking individually: a rooftop unit, a pump, a generator, a scoreboard, an ice resurfacer. This page covers the record itself; for bulk creation see Importing your data.
Anatomy of an asset
Identity
- Name - how your team refers to it. Make it unambiguous at a glance: "AHU-3 Pool Mezzanine" beats "Air Handler".
- Asset ID - the record's identifier: a tag number, barcode value, or your own numbering scheme.
- Asset type - the catalog entry ("Centrifugal Pump", "Exit Sign"). Types carry defaults (useful life, unit replacement rates) so records stay consistent.
- Manufacturer, model, serial - for warranty claims, recalls, and parts lookup.
- Status - operational state. Ships with sensible defaults (Active, Inactive, In Repair, Decommissioned…), editable under Settings.
AssetLab is designed for multi-site portfolios, so names don't have to be unique - every arena can have its own "AHU-1". Identical names stay distinguishable by location and by attributes like the Asset ID.
Placement
Both hierarchies, as covered in Core concepts:
- Site → building → location (as deep as is useful)
- System class → system group → system
An asset's site and building are what you set them to, and its location is a room within that building. Room names repeat from building to building - most sites have a "Roof" or a "Mechanical Room" - so an import matches a location by name only inside the building named on the same row, and creates it there when that building does not have one yet.
Creating what is missing, without leaving the form
Every dropdown on the asset form - status, asset type, manufacturer, site, building, location, system class, system group, system - is searchable and carries an Add New row at the bottom. Use it and a small dialog asks only for the name (and a description, where the record has one); the new record is created in your organization, selected on the asset, and available to every other asset from then on. A record created below one you just picked is filed under it: a building lands in the selected site, a system group in the selected system class.
Asset types are the one exception that asks for more, because they belong to an asset type group rather than to anything you have already chosen on the form. The dialog offers the group picker, and a New group button beside it if the right one does not exist yet. Leave it blank and the type is filed under Unassigned, which you can correct later on the classifications page.
The row only appears if your role can create that kind of record - sites, buildings, locations, system classes, system groups and systems are Manager and above; statuses, asset types and manufacturers are Staff and above. Records that need more than a name are still worth creating properly on their own page; the dialog is for the moment you are mid-asset and the entry simply does not exist yet.
Attaching documents as you go
The New asset form carries the same Documents panel as an existing asset, below Basic information. Add the O&M manual, warranty, commissioning sheet or spec sheet while you have them to hand and they upload the moment the asset is created - there is no need to save the asset, find it again and come back.
Files are held in the browser until then, so cancelling the form uploads nothing. Each file is capped at 10 MB, and PDFs, Word documents and images are accepted. Everything arrives filed under Other; set the real category on the asset's own Documents section afterwards.
Lifecycle & value
| Field | Drives |
|---|---|
| Installation date | Age, remaining useful life |
| Useful life (years) | Lifecycle forecasts, replacement year |
| Purchase cost | Depreciation, net book value, and - aged forward from the installation date - current replacement value |
| Replacement value | Recorded separately from purchase cost. What it costs to replace the asset today |
| Condition | Risk scores, degradation projection |
Purchase cost and replacement value are different numbers
Purchase cost is what you paid. It is the depreciation basis, so it is also what net book value is written down from, and it belongs with the installation date that dates it.
Replacement value is what it would cost today. On the asset form, the replacement value block has two modes: Enter a total takes one figure, and Calculate from units takes a quantity, a unit of measure and a unit replacement value and multiplies them. Only one mode is live at a time - switching to units clears the entered total, so the two can never disagree. Either way, record the date you last confirmed the figure. It is stored exactly as entered and is never aged forward - a figure you gave in today's money does not need escalating to today's money.
The unit calculator does not touch purchase cost, and neither does an import carrying quantity and unit value columns: purchase cost stays what you paid, or empty if you did not say.
How an asset gets priced
Current replacement value is resolved in this order, and both the asset detail panel and the Financial card on the asset page say which one produced the number, so you know which field to edit:
| Order | Source | Aged forward? |
|---|---|---|
| 1 | Replacement value, if you recorded one | No - it is already in today's money |
| 2 | Quantity x unit replacement value, in Calculate from units mode | No - the same reason |
| 3 | Purchase cost, aged from the installation date | Yes |
| 4 | Purchase cost, when there is no installation date to age it from | No |
| 5 | Nothing - the asset is unpriced, not worth zero | - |
Step 5 matters. An asset nobody has costed is left out of value totals rather than counted as zero, because a zero is a figure and "we have not costed this" is not.
The asset detail page
The page opens on a summary header - the asset's photo, type, where it sits, its name, and any scheduled replacement year.
Below it the Overview pairs the record with its supporting material, row by row: Identity & condition beside the photo, Location beside the description, Classification & risk beside Financial. Custom fields and the QR code share the bottom row.
Everything else is one click away in the section list, and each section shows how many records it holds:
- Timeline - the record's event history: work orders raised and completed, costs, condition readings, capital work, project involvement and edits to the record itself, each filterable on and off. Capital work that was also filed as a cost appears once, as the capital work, so the same payment is not counted twice
- Work orders - the asset's work history, newest first, showing about ten before it scrolls. Each row carries who it is assigned to, or who completed it once it is closed, plus the due date (flagged when overdue), cost, and priority; hovering opens the description and any completion comment
- TCO - the asset's total cost of ownership: the accumulated cost curve, and below it every cost against the asset: date, type, description, the work order it came from, invoice and PO numbers, who recorded it, and the amount
- Betterments - capital work that extended the asset's service life, with what it cost and the years it bought
- Condition assessments - measured condition and its projection (details)
- Parts - linked spare parts
- Comments - the running conversation
- Documents - files attached to the record
On a wide screen, Work orders, TCO, Betterments and Condition assessments show the full record beside the list: click a work order, a cost, a betterment or an assessment and its details open on the right, with the newest one open to start. On a narrower screen the details sit below the list.
Sections load when you open them, so a page you land on from a QR scan or a dashboard drill-down shows the asset without pulling every attachment, cost, and comment first. The section you are on is part of the address, so a link to a specific section opens there.
QR codes
Every QR the product prints - asset labels, location labels, the bulk exports, the printed asset sheet - is drawn the same way: rounded modules in AssetLab navy, shaped corner markers, and the AssetLab mark on a white plate in the middle. Codes are generated at error-correction level H, which reconstructs up to 30% of a damaged code, so the mark in the centre costs nothing in reliability and a scuffed label still scans.
Editing
Every card on the Overview edits in place. Click the pencil in a card's header, change what you need, and Save; Cancel discards. One card is open at a time, so an unsaved change in another card is never written by accident. There is no separate edit form.
Condition and risk read in colour. Condition on the Identity & condition card, and on Classification & risk the whole block - consequence, likelihood, the risk score, and each impact rating - shares one green-to-red scale, the same bands the risk dashboards and the reporting views apply. A critical asset looks critical wherever you meet it. Scores carry their ceiling too, so a risk score reads 20 / 25 rather than a bare number you have to know the scale for.
Editing an asset is Manager and above, which is where it has always sat. Staff read the page: no pencils, and the Financial card and the Costs section are hidden along with them. Any scheduled replacement year stays visible to everyone, in the header.
The list view
- Select / Done toggles selection mode; see the next section for what a selection unlocks.
- Single-click a row to open an editable detail sheet; double-click to open the full asset page.
- A sticky footer totals purchase cost, current replacement value, net book value, and accumulated depreciation - for the selection when rows are selected, otherwise for everything shown.
- A project badge beside an asset's name counts the projects currently working on it. Live projects only: one whose phase means complete or cancelled, or one that has been archived, stops badging the assets it named. The detail sheet's Linked panel keeps them under Past projects, labelled completed, cancelled or archived, and the banner on the asset's edit dialog names the live ones only.
- A warning-triangle column flags assets missing lifecycle or risk fields, so data gaps are visible without running a report.
- Compact or comfortable density, and drag-to-reorder columns - order and visibility are remembered in your browser.
- Staff restrictions: financial columns (purchase cost, CRV, net book value, depreciation, risk factor, remaining life) are hidden for Staff, and the Export / Custom Fields / Add toolbar requires Manager or above.
Two searches exist: the page-level search matches asset ID, name, status, description, model, serial number, manufacturer, and location; the search box inside the list matches name, manufacturer, and asset type only.
Duplicating an asset
A Duplicate button sits beside Delete on every row of the asset list, for Managers and above. It creates a copy of that asset and takes you straight to the copy's own page so you can finish it off - useful for the tenth identical rooftop unit, where only the serial number and location differ.
What the copy carries:
- Everything the asset records about itself - type, manufacturer, model, classification, placement, lifecycle and financial fields, condition, risk scoring, and every custom field value.
- Its photo, copied as a separate file so deleting either asset leaves the other's image intact.
What it deliberately does not carry:
- The serial number, which is unique to a physical unit.
- The Asset ID and QR code. The copy's Asset ID starts blank, for you to fill in.
- History and relationships - work orders, costs, assessments, documents, parts and risk history all stay with the original. Copying cost history would distort the new asset's FCI and every lifecycle figure derived from it.
The copy's name gets a "(copy)" suffix so it is distinguishable in the list until you rename it.
What selecting assets unlocks
Turn on Select, pick rows, and a bulk action bar appears. Actions are role-gated:
| Action | Minimum role | What it does |
|---|---|---|
| Create Work Order | Staff | New work order prefilled with the selection; warns when the selection spans sites or buildings (the first asset's location is used) |
| Insights | Manager | Analytics over just the selected assets |
| Create Project | Manager | New project prefilled with the selection's sites, buildings, system classes, and system groups (requires the projects feature) |
| Move | Manager | Rewrite location or classification for the whole selection |
| Change Status | Manager | Set a status across the selection |
| Apply Risk Profile | Manager | Stamp a consequence-of-failure profile (details) |
| Delete | Administrator | Remove the selected records |
Statuses vs. deletion
Decommissioned equipment should be status-changed, not deleted - its cost and work history still informs type-level statistics and audits. Deletion is for records created in error, and is permission-gated accordingly.
Finding assets fast
- List and grid views - filter by site, building, system class, type, status; column layouts are saved.
- Canvas view - the classification hierarchy as a draggable graph, one site at a time. It uses the same filters and search as the other views: pick a site above it (organizations with one site skip this), then narrow by building, location, class, group, system or asset name. Dragging an asset onto a different system reclassifies it; dragging a system into a different group re-parents every asset under it.
- QR codes - scan the label on the machine and land on the record.
- Floorplans - click the unit on the drawing (also available as a view on the Assets page).
- Map view - for geolocated and infrastructure assets.
Exporting
Export (Manager and above) produces a CSV of the visible columns or a branded Excel report with inflation-adjusted projections and a summary sheet. There is no PDF export from the asset list; for print-ready documents see Reporting.
Working with assets programmatically
Assets are first-class in the REST API (assets:read / assets:write scopes) and the MCP tools (list_assets, create_asset, update_asset, …). Bulk endpoints exist for scripted migrations.