# [Financial Crime](../domain.md) ## Entities ### Customer A Customer is a Party Role representing an active or prospective relationship with the institution for products and services. ```mermaid --- config: layout: elk --- classDiagram class Customer{ * Customer Number : string Onboarding Date : date Relationship Start Date : date } Customer --|> PartyRole Customer "0..*" --> "0..*" Account : holds Customer "1" --> "0..1" CustomerPreferences : has class PartyRole["Party Role"] class Account["Account"] class CustomerPreferences["Customer Preferences"] ``` ```yaml extends: Party Role existence: independent mutability: slowly_changing attributes: Customer Number: type: string identifier: primary description: Unique customer identifier used for service and support operations. Onboarding Date: type: date description: Date the customer onboarding process was completed. Relationship Start Date: type: date description: Date the customer relationship became effective. ``` ```yaml governance: retention_basis: Inherited from domain default retention of 10 years post relationship end for AML/CTF record-keeping ``` ## Relationships ### Customer Holds Account A Customer can hold one or more Accounts, and an Account can be held by one or more Customers. Joint accounts, business accounts with multiple authorized signatories, and beneficial ownership structures all require many-to-many cardinality. In the Financial Crime domain this is the structural basis for network analysis — connecting Customers through shared Accounts. ```yaml source: Customer type: has target: Account cardinality: many-to-many granularity: atomic ownership: Customer relationship_attributes: - Holder Type (enum:Account Holder Type) - Holder Start Date - Holder End Date - Is Primary Holder ``` ### Customer Has Preferences A Customer has at most one active Customer Preferences profile at a time. ```yaml source: Customer type: has target: Customer Preferences cardinality: one-to-one granularity: atomic ownership: Customer ```