Skip to main content
All Docs
FeaturesagentOS Block ManagerUpdated April 13, 2026

Asset Register

Asset Register

The Asset Register lets you track physical building assets on a per-block basis — covering plant and equipment, building fabric, and compliance systems. For each asset you can record condition ratings, estimated replacement costs, projected replacement timelines, and freeform survey notes.

Navigate to Dashboard → Asset Register to access the module.


Asset Classes

Every asset must be assigned one of three classes:

ClassUse for
Plant & EquipmentLifts, boilers, pumps, CCTV, door entry systems, etc.
Building FabricRoofs, external walls, windows, communal flooring, etc.
Compliance WorksFire suppression, lightning protection, asbestos remediation, etc.

Building Fabric assets support section-by-section sub-entries (e.g. North elevation, Flat roof — main block) with individual condition ratings and notes per section.

Compliance Works assets can be linked to compliance certificate records.


Creating an Asset

  1. Go to Asset Register and click New Asset.
  2. Select the block this asset belongs to.
  3. Enter an asset name (required) and optionally a description.
  4. Choose an asset class.
  5. Fill in any applicable fields:

Identity fields

  • Location — e.g. Basement Plant Room, Roof Level
  • Manufacturer — e.g. Otis, Worcester Bosch
  • Model — model number or name
  • Serial Number — optional

Lifecycle fields

  • Install / Last Replaced Date — the date the asset was installed or last replaced
  • Estimated Lifespan (years) — combined with the install date to auto-calculate the projected replacement year
  • Condition Rating (1–5) — see the Condition Rating section below

Cost fields

  • Estimated Replacement Cost (£) — stored to the penny; displayed in GBP throughout the UI
  • Benchmarking flag — tick this if the cost figure comes from a benchmarking reference table rather than a site-specific quote; flagged assets are indicated in the list and detail views

Notes field

  • Notes — unlimited free-text field for survey observations, contractor recommendations, and condition history narratives. Notes are displayed on the detail view and included in capex exports. This field does not affect any calculations.

Building Fabric only

  • Fabric Sections (JSON) — section-by-section breakdown. Each entry should follow the format:
    [
      { "section": "North elevation", "condition": 3, "notes": "Repointing needed" },
      { "section": "Flat roof — main block", "condition": 2, "notes": "Survey due Q2" }
    ]
    

Condition Rating (1–5)

RatingLabelEffect
5Excellent (as new)No flag
4GoodNo flag
3Average (serviceable)No flag
2Below Average (plan replacement)⚠️ Early replacement flag set
1Poor (replace immediately)⚠️ Early replacement flag set

Assets with a condition rating of 1 or 2 are automatically flagged for early replacement. These assets appear in the alert banner on the register list view and can be filtered with the Early replacement only toggle.


Projected Replacement Year

When both an Install / Last Replaced Date and an Estimated Lifespan are provided, the system automatically calculates a projected replacement year:

Projected replacement year = install year + estimated lifespan (years)

The list view shows the replacement year alongside a colour-coded indicator:

  • Red — replacement due within 2 years or overdue
  • Amber — replacement due within 5 years
  • Default — more than 5 years remaining

Manual Replacement Year Override

If a surveyor or contractor recommends a different replacement timeline, you can override the projected year:

  1. Open the asset detail view.
  2. In the Replacement Year Override section, click Set Override.
  3. Enter the replacement year and a mandatory reason (e.g. Surveyor recommendation after inspection).
  4. Click Save Override.

The override is audit-logged with the reason and timestamp. The original projected year remains visible alongside the override.

To revert to the auto-calculated projection, click Clear Override — this action is also audit-logged.


Asset Register List View

The list view shows a summary dashboard at the top:

  • Total Assets — count of all assets in the current filter scope
  • Total Replacement Cost — sum of all estimated replacement costs; benchmarked estimates are noted
  • Early Replacement Flags — count of assets rated condition 1 or 2
  • Class Breakdown — counts for Plant & Equipment, Building Fabric, and Compliance Works

Filtering and search

FilterOptions
SearchMatches on name, location, manufacturer, description
BlockFilter to a single block
Asset ClassPlant & Equipment, Building Fabric, Compliance Works
Early replacement onlyShows only condition 1–2 assets

Asset Detail View

The detail view is organised into sections:

  1. Header — asset name, early replacement badge (if flagged), class badge, condition badge
  2. Summary cards — replacement cost, replacement year, install date + lifespan, condition
  3. Replacement Year Override — current override status and form to set or clear an override
  4. Asset Details — location, manufacturer, model, serial number, description
  5. Notes — survey observations and recommendations (free-text, whitespace preserved)
  6. Building Fabric Sections — section-by-section breakdown (Building Fabric assets only)
  7. Metadata — created and last updated timestamps

Permissions

All create, update, override, and delete operations require admin role. Read access follows standard tenant isolation — assets are scoped to your organisation and cannot be accessed across tenants.


API Reference

The Asset Register is powered by the asset tRPC router. All mutations are admin-gated and audit-logged.

asset.list

Returns a paginated list of assets.

Input

{
  limit?: number;
  blockId?: string;               // filter to a specific block
  assetClass?: AssetClass;        // 'plant_and_equipment' | 'building_fabric' | 'compliance_works'
  earlyReplacementOnly?: boolean; // true to return only condition 1–2 assets
}

asset.getById

Returns full detail for a single asset.

Input

{ id: string }

asset.create

Creates a new asset. Automatically calculates projectedReplacementYear from install date and lifespan, and sets earlyReplacementFlag if condition rating is 1 or 2.

Key input fields

{
  blockId: string;
  name: string;
  assetClass: AssetClass;
  installDate?: Date;
  estimatedLifespanYears?: number;
  conditionRating?: number;                 // 1–5
  estimatedReplacementCostPence?: number;   // integer, pence
  isBenchmarked?: boolean;
  fabricSections?: string;                  // JSON string (building_fabric only)
  notes?: string;                           // unlimited free-text
  // ... other optional identity fields
}

asset.update

Updates an existing asset. Recalculates projectedReplacementYear and earlyReplacementFlag when relevant fields change.

Input: same shape as create plus id: string, all fields optional.

asset.overrideReplacementYear

Sets a manual replacement year. Audit-logged.

{
  id: string;
  manualReplacementYear: number;
  reason: string;  // required
}

asset.clearOverride

Clears the manual replacement year, reverting to the auto-calculated projection. Audit-logged.

{ id: string }

asset.delete

Deletes an asset. Audit-logged.

{ id: string }

asset.blockSummary

Returns aggregate stats (total assets, total replacement cost, early flag count, class counts) for a given block.