Skip to content

Sites, buildings, floors, rooms

For the helpdesk team

The estates hierarchy is Site → Building → Floor → Room. Every academy is one or more sites; every site is one or more buildings; etc. Data attached to a building (e.g. an asbestos register) propagates up; data attached to a room (e.g. a projector) doesn’t.

Sites index — location browser

The hierarchy isn’t bureaucracy — it’s how the platform knows:

  • “Where is this asset?” (asset.room_id → room → floor → building → site)
  • “Who owns the maintenance for this thing?” (rooms inherit responsibility from buildings)
  • “What compliance applies to this space?” (asbestos register sits at building level; PAT testing at room level)
  • “Where did this ticket come from?” (ticket.location_id → room → building)

Setting it up takes a couple of hours per academy and pays back forever.

The Sites index uses the location browser — four columns, click-to-drill. Click a site, the second column populates with its buildings; click a building, the third with floors; etc.

Pick any level and the right-hand panel shows its detail without navigating away. Useful when you’re scanning “is this room on this floor?” without committing to a page change.

A site has:

  • Name — what the academy calls it (e.g. “Wyvern Park Main Site”)
  • Address — full postal (lines 1 and 2, city, postcode stored separately)
  • School — which academy in the trust owns it
  • Description — anything contextual
  • Site type — e.g. main, annex, sixth-form (free text)

Most trusts only have one site per academy. Multi-site academies (sixth-form annexe + main) use one site per location.

A building is a discrete structure on a site. “East Block”, “Sixth Form Centre”, “Sports Hall”. Each building has:

  • Name + code
  • Building type — informational (e.g. main block, sports hall)
  • Year built — stored for reference; useful context when scheduling compliance work
  • Floor count — how many floors the building has (informational integer)
  • Construction type — informational; useful reference when assessing asbestos or structural risk
  • Is listed — flag for listed-building status, with grade
  • Compliance — see the next article on compliance

Floor count is just a number stored on the building — it’s a plain integer field, not a generator. Setting it doesn’t create floor records; it records how many floors the building has.

The most-used level. Each room has:

  • Name + code“Room 12”, “Library”, “Kitchen 1”. Code is an optional short identifier (e.g. R12).
  • Type — free-text label. Common values: Classroom, Office, Storage, Lab, Hall, Toilet, Kitchen.
  • Capacity — for room bookings
  • Is bookable — flag that controls whether the room appears in the booking picker
  • Asset count — auto-derived from assets.room_id

Rooms are where asset-attached tickets land — “projector in Room 12” knows which projector because the asset is bound to the room.

For a fresh trust, the site and room data is usually a CSV from the architect’s drawings or an existing register. There’s no Estates-specific import screen — bulk imports run through the platform’s import wizard at /admin/imports, which has a dedicated Sites importer. Upload your CSV, map the columns, dry-run to check the shape, then commit.