configuration PK: id 10 required 1 unique

Description

Per-organization overrides for display strings and labels used throughout the Meander platform. Enables each tenant to substitute canonical terms (e.g. 'Contact', 'Peer Mentor', 'Coordinator') with organization-specific vocabulary (e.g. 'Familie', 'Bruker', 'Veileder') without code changes. Overrides are fetched at session bootstrap and cached offline on the mobile app.

11
Attributes
3
Indexes
5
Validation Rules
11
CRUD Operations

Data Structure

Name Type Description Constraints
id uuid Primary key — surrogate UUID for the override row
PKrequiredunique
organization_id uuid Foreign key to the organization that owns this override. Each override is strictly scoped to one tenant.
required
key string The canonical terminology key being overridden. Must be a value from the platform-defined key registry (e.g. 'contact', 'contacts', 'my_contacts', 'peer_mentor', 'peer_mentors', 'coordinator', 'activity', 'assignment', 'reimbursement'). Clients resolve labels by key at runtime.
required
value string The replacement display string for this key within the owning organization. Must be non-empty. Example: key='contact', value='Familie' for Barnekreftforeningen.
required
locale string BCP-47 locale tag for the override value. Defaults to 'nb' (Norwegian Bokmål). Future support for 'nn' (Nynorsk), 'en', and Sami ('se') planned. Allows separate overrides per locale for the same key.
required
is_active boolean Soft-disable flag. When false the override is ignored and the platform default is used. Allows admins to preview or roll back terminology changes without deleting records.
required
description text Optional free-text note explaining why this override exists (e.g. 'Barnekreftforeningen uses Familie instead of Contact to reflect their family-centred model'). Admin-facing only, never displayed to end users.
-
created_at datetime UTC timestamp when the override was first created.
required
updated_at datetime UTC timestamp of the most recent update to this row.
required
created_by uuid FK to users.id — the Org Admin or Global Admin who created this override. Preserved for audit purposes even if the user is later deactivated.
required
updated_by uuid FK to users.id — the Org Admin or Global Admin who last modified this override.
required

Database Indexes

idx_terminology_overrides_org_key_locale
btree unique

Columns: organization_id, key, locale

idx_terminology_overrides_organization_id
btree

Columns: organization_id

idx_terminology_overrides_active
btree

Columns: organization_id, is_active

Validation Rules

value_not_empty error

Validation failed

value_max_length error

Validation failed

locale_bcp47_format error

Validation failed

key_snake_case_lowercase error

Validation failed

description_max_length error

Validation failed

Business Rules

unique_key_per_org_locale
on_create

Each (organization_id, key, locale) triplet must be unique. An organization cannot have two active values for the same display key in the same locale. Enforced by the unique index; the service layer surfaces a descriptive error when violated.

key_must_be_registered
on_create

The key field must match an entry in the platform's static terminology key registry. Keys outside the registry are rejected. This prevents unbounded key proliferation and ensures the mobile client can always resolve a label. The registry currently includes: contact, contacts, my_contacts, peer_mentor, peer_mentors, coordinator, coordinators, activity, activities, assignment, assignments, reimbursement.

org_scoped_write_access
on_create

Only Org Admins belonging to the owning organization, or Global Admins with active time-bounded support access for that organization, may create, update, or delete overrides. The service verifies the caller's organization membership and role before any write.

bootstrap_cache_invalidation
on_update

Any write to terminology_overrides for an organization must invalidate the bootstrap cache for all active sessions belonging to that organization, so the updated labels reach clients on their next token refresh without requiring a force-logout.

soft_disable_over_delete
on_delete

Deleting a terminology override hard-deletes the row. Admins are encouraged to use is_active=false to disable an override rather than deleting it, preserving the audit trail and allowing easy re-activation. The UI presents this as a toggle rather than a delete action.

audit_all_writes
always

Every create, update, and delete on terminology_overrides must produce an entry in audit_logs with actor, organization_id, key, old_value, and new_value. Terminology changes affect every user in the organization and must be fully traceable.

Storage Configuration

Storage Type
lookup_table
Location
main_db
Partitioning
No Partitioning
Retention
Permanent Storage