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

Entity: clientNotificationMatrix ​

Entity Definition ​

  • Entity Name: clientNotificationMatrix
  • Entity Type: Database table
  • Description: Stores the per-client notification dispatch configuration. Each row represents one cell in the matrix — a specific (notificationType, roleKey) combination — and records whether notifications of that type are dispatched to users of that role, and in what delivery form. A missing row is treated as the system default for that cell. The delivery form is stored per notification type, not per cell.

Data Attributes Table ​

Attribute NameDescriptionData TypeDefault ValueRequired (= Nullable)UniqueFormatValidationsIndexExample
idPrimary keyUUIDGenerated in code (app layer)YesYesUUID v7-Primary Key018ed0b3-c298-7c7a-96d5-8b36f5a7f8d2
tenantIdTenant this record belongs to.UUID-YesNoUUID v7FK → tenant; must existname: idx_client_notification_matrix_tenantId, type: btree018fa51f-fda1-79f4-8461-2cb8f1cabc10
clientIdClient this matrix row belongs toUUID-YesNoUUID v7FK → client; must exist — see clientname: idx_client_notification_matrix_clientId, type: btree018fa51f-fda1-79f4-8461-2cb8f1cabc10
notificationTypeThe notification type this row configures (e.g. readingDueReminder, gaugeLimitOverflow)String-YesNocamelCase stringNon-empty; must be a known notification type; unique with (clientId, roleKey)name: idx_client_notification_matrix_clientId_type, type: btreegaugeLimitOverflow
roleKeyUser role this row applies toString-YesNocamelCase stringNon-empty; must be a known role key (admin, manager, worker, technician, accountant)-manager
enabledWhether notifications of this type are dispatched to users with this roleBoolean-YesNo---true
deliveryFormHow this notification type is delivered. Applies to all roles — stored per notificationType, not per role cell.Enum-YesNoEnum - NotificationDeliveryFormMust be a valid NotificationDeliveryForm value-immediate
createdAtTimestamp of when the record was created. Immutable after insert.Timestamp with time zonenow() — set in codeYesNoISO 8601 — YYYY-MM-DDTHH:mm:ss.SSSZCannot be null; cannot be modified after creation-2025-03-16T18:00:00Z
updatedAtTimestamp of the last update.Timestamp with time zonenow() — set in codeYesNoISO 8601 — YYYY-MM-DDTHH:mm:ss.SSSZCannot be null-2025-03-16T18:00:00Z
deletedAtTimestamp of soft deletion. Null means active. Once set, immutable.Timestamp with time zone-NoNoISO 8601 — YYYY-MM-DDTHH:mm:ss.SSSZImmutable once set. Active records: WHERE deletedAt IS NULL-2025-06-01T09:00:00Z
createdByIdentifier of the actor who created the recordString-YesNotype:actorNon-empty-user:018ed0b3-c298-7c7a-96d5-8b36f5a7f8d2
updatedByIdentifier of the actor who last updated the recordString-YesNotype:actorNon-empty-user:018ed0b3-c298-7c7a-96d5-8b36f5a7f8d2

Ambiguity: both notificationType and deliveryForm reference value sets ("a known notification type"; "Enum - NotificationDeliveryForm") with no linked Confluence page and no enumeration of legal values given on this page. Neither the full set of notification types nor of delivery-form values could be confirmed from this source — recommend locating or creating those catalog pages separately.

Audited fields ​

Recorded on created (in full), updated (changed only) and deleted (in full): clientId, notificationType, roleKey, enabled, deliveryForm.

Excluded: none.

Every entry would carry subjectEntityType = client / subjectEntityId = clientId — one matrix cell's toggle is a client-level configuration change.

Not registered for entityName resolution, and has no independent human-readable attribute to register — identified by its clientId/notificationType/roleKey scope.