Sites, buildings, floors, rooms
For the helpdesk teamSites, buildings, floors, rooms
Section titled “Sites, buildings, floors, rooms”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.

Why the hierarchy matters
Section titled “Why the hierarchy matters”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 location browser
Section titled “The location browser”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.
Adding a site
Section titled “Adding a site”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.
Buildings
Section titled “Buildings”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.
Bulk import
Section titled “Bulk import”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.