> ## Documentation Index
> Fetch the complete documentation index at: https://internal.softcrum.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ADR-009 — customer-core as Shared Bounded Context

> Loyalty, Messaging and CRM all need contact profiles, identities, consents, behavioral events and segments. Building these inside any one module couples the others to it and forces refactors when new modules need segments.

Status: Proposed · Date: 2026-08-15 · Refs: DEC-B1, v0.2 §1

## Context

Loyalty, Messaging and CRM all need contact profiles, identities, consents, behavioral events and segments. Building these inside any one module couples the others to it and forces refactors when new modules need segments.

## Decision

A fourth bounded context `customer-core` (schema `core`) owns: contacts, identities, merges, consents, tracked\_events, segments, attribute definitions, event taxonomies, plus platform cross-cutting tables (currencies, national\_id\_types, audit\_log, usage\_snapshots, processed\_jobs, dead\_letters). Dependency rules (enforced by dependency-cruiser): loyalty/messaging/crm MAY import core; core NEVER imports them; they NEVER import each other — communication only via domain events (outbox).

## Consequences

* Any future module consumes profiles/segments without touching loyalty. + Single owner for PII/compliance surface. − One more context to govern; core changes need cross-module review.
