Skip to main content

Data Model

This page describes the entities a KNX Clarity organisation works with and how they relate. The goal is to make the platform's information architecture readable without disclosing implementation details — the underlying storage engine, table layout, and indexes are intentionally not part of this page.

Entities at a glance

Organisation
├── Members (users with roles)
├── Customers
│ └── Owner profile (when the customer is also a portal user)
└── Projects
├── Project members (users assigned to the project)
├── Project shares (customers granted read-access)
│ └── Redaction rules (rooms hidden from the customer)
├── ETS files (versioned uploads)
├── Floor plans
├── Rooms
│ └── Devices
│ ├── Group addresses (linked via device functions)
│ └── Device functions
├── Service cases
│ └── Comments + attachments
├── Change requests
├── Activity feed
├── Audit log entries
├── Milestones (basic programming, handover, escrow, …)
├── Escrow record
└── Transfer request (when ownership moves between orgs)

Core entities

Organisation

The top-level container. Billing, member management, the audit log, and every project all sit underneath an organisation. A user belongs to zero or more organisations; cross-organisation access is never implicit.

Member

A user attached to an organisation, with a memberRole that determines what they can do. The current roles are admin, integrator, and field_staff (see Team for the role matrix).

Customer

The building owner / end-customer record an integrator captures in their CRM-style "Customers" list. A customer may or may not have a sign-in account; once they accept an invitation, the customer record is linked to their portal account so they can view shared projects.

Owner profile

The portal-side identity of a customer once they've signed in. A single owner profile can be linked to customer records from multiple integrators — useful if a building owner works with more than one integrator.

Project

A building automation project. Belongs to one organisation and optionally references one customer. Holds the building name, address, status (active, completed, archived, escrow), and the milestones that track the project's lifecycle.

Project share

Grants a specific customer read-access to a specific project. The share carries optional redaction rules — currently a list of room IDs the integrator wants to hide from the customer; hiding a room transitively hides its devices, group addresses, and service cases.

ETS file

A versioned upload of an .knxproj export. Each upload is a new version, never an overwrite. Parsing extracts the rooms, devices, group addresses, and device functions captured below.

Floor plan

A PDF or image plan attached to a project. Plans can be annotated with per-room markers; markers are visible to the customer when the floor plan is flagged as customer-visible.

Room → Device → Group address / Function

The parsed KNX structure. Rooms belong to a project; devices belong to a room; device functions and group addresses hang off devices. Group addresses also carry the canonical KNX address notation (1/2/3) and the datapoint type.

Service case

A ticket scoped to a project. Has a status (open, in_progress, resolved, closed), a priority, an optional room/device anchor, and a thread of comments with attachments.

Change request

A customer-initiated request for a change in their shared project. The integrator approves, rejects, or asks for more details; the customer sees a status thread.

Milestone

A named checkpoint in the project lifecycle: basic programming confirmed, partial invoice sent/paid, ETS file released, handover confirmed. Confirming a milestone is gated by role — some are integrator-only, some are customer-confirmable.

Escrow record / Transfer request

Optional. An escrow record is the integrator's deliverable package held back from the customer until a handover step is confirmed. A transfer request is the cross-organisation handover when ownership moves from one integrator to another (e.g. when the building owner switches service providers).

Activity feed & Audit log

Every meaningful change writes one or both of:

  • An activity entry — surfaced in the project's "Activity" tab and the global notifications feed, designed for awareness.
  • An audit log entry — surfaced under Settings → Audit log, designed for compliance review. Admin-only.

Relationships in plain English

  • One organisation has many projects; each project belongs to exactly one organisation.
  • A project may be assigned to at most one customer; a customer may be assigned to many projects.
  • A project may be shared with many customer users; a customer user may have shares across many projects (typical for owner-profile identities that span several integrators).
  • An ETS file belongs to one project; uploading a new version doesn't replace the old one, it stacks on top.
  • A service case belongs to one project; comments and attachments belong to one service case.

Questions

Use the in-app feedback button (bottom-right on every page) or email info@knx-clarity.com.