Skip to content
Updated Sep 26, 2026 by Barča Dvořáková · Owner: analysisactiveentityconfluence-migration Edit on GitHub

Entity: dashboardLayout ​

Entity Type: Database table

Description: A dashboardLayout represents a single user's personalised dashboard — the collection of tiles (dashboardBlock records) they have pinned and how those tiles are arranged. Exactly one dashboardLayout exists per user.

Data Attributes Table ​

Attribute NameDescriptionData TypeDefault ValueRequired (= Nullable)UniqueFormatValidationsIndexExample
idUnique identifier for the dashboard layout record.UUIDGenerated in code (app layer)YesYesUUID v7Must be a valid UUID v7.Primary Key01960000-0000-7000-8000-000000000101
tenantIdTenant this dashboard layout belongs to. Required on every entity — primary mechanism for data isolation across organisations.UUID-YesNoUUID v7Foreign Key → tenant.idname: idx_dashboardLayout_tenantId, type: btree01960000-0000-7000-8000-000000000099
userIdThe user this dashboard belongs to.UUID-YesYesUUID v7Foreign Key → user.id. Unique per tenant — exactly one dashboardLayout per user.name: idx_dashboardLayout_userId, type: btree, unique01960000-0000-7000-8000-000000000050
createdAtTimestamp of entity creation. Immutable.Timestamp with time zoneSet in codeYesNoISO 8601--2026-07-24T10:00:00Z
updatedAtTimestamp of last entity update — every layout change (move/resize/add/remove tile) updates this.Timestamp with time zoneSet in codeYesNoISO 8601--2026-07-24T10:00:00Z
deletedAtTimestamp of soft delete. Once set, immutable. Records with deletedAt IS NULL are considered active.Timestamp with time zonenullNoNoISO 8601--null
createdByIdentifier of the actor who created this record.String-YesNotype:actor--user:01960000-0000-7000-8000-000000000050
updatedByIdentifier of the actor who last updated this record.String-YesNotype:actor--user:01960000-0000-7000-8000-000000000050

Audited fields ​

Recorded on created (in full), updated (changed only) and deleted (in full): userId.

Excluded: none.

Every entry would carry subjectEntityType = user / subjectEntityId = userId — exactly one layout per user, so the layout's own history and "what changed on this person's dashboard" are the same question. Most layout changes in practice are dashboardBlock entries filed against this record's children, not updated entries here — this entity's own updated would fire only if a future feature adds a directly-editable layout-level field.

Not registered for entityName resolution — one row per user (userId unique); described via the user it belongs to.