# [Financial Crime](../domain.md)
## Entities
### Account
An Account represents a financial record used to hold balances and process debits and credits for a customer relationship. In a dimensional model, Account is a key slowly-changing dimension — its status, type, and currency are required attributes for transaction risk analytics and account-level monitoring.
```mermaid
---
config:
layout: elk
---
classDiagram
class Account{
* Account Identifier : string
Account Number : string
Account Type : enum~AccountType~
Account Status : enum~AccountStatus~
Opened Date : date
Closed Date : date
}
Customer "0..*" --> "0..*" Account : holds
Account "0..*" --> "1" Product : instance of
Account "0..*" --> "1" Currency : denominated in
Branch "1" --> "0..*" Account : services
class AccountType["Account Type"]{<>}
class AccountStatus["Account Status"]{<>}
class Customer["Customer"]
class Product["Product"]
class Currency["Currency"]
class Branch["Branch"]
```
```yaml
existence: independent
mutability: slowly_changing
temporal:
tracking: valid_time
description: >
Account status transitions (e.g., Active → Frozen → Active) must be tracked
with valid time to support point-in-time regulatory queries such as "was this
account frozen at the time of this transaction?". Opened Date and Closed Date
serve as the outer valid time boundaries.
attributes:
Account Identifier:
type: string
identifier: primary
description: >
Globally unique surrogate identifier for this account across all systems.
Immutable once assigned.
Account Number:
type: string
description: >
Human-facing account number as presented to the customer. May follow BSB+account
format for Australian accounts or IBAN format for international accounts.
Account Type:
type: enum:Account Type
description: >
Classification of the account by its primary purpose and product characteristics
(e.g., Savings, Current, Term Deposit, Loan). Used as a dimension key in transaction
risk analytics — different account types have different expected transaction patterns
and applicable AML typologies.
Account Status:
type: enum:Account Status
description: >
The current operational lifecycle state of the account. Frozen and Suspended statuses
are set by compliance or fraud operations and must be tracked with their effective dates
to support regulatory audit. Closed accounts must be retained — they must not be deleted.
Opened Date:
type: date
description: >
Date the account was opened and became operational. Establishes the start of the
account's valid time period. Used in dormancy calculations and account age risk factors.
Closed Date:
type: date
description: >
Date the account was permanently closed. A null value indicates the account is still
open. Accounts must not be deleted — the Closed Date and a status of Closed is the
only permitted termination mechanism.
```
```yaml
constraints:
Closed Account Requires Closed Date:
check: >
Account Status != 'Closed'
OR Closed Date IS NOT NULL
description: >
An account with status Closed must have a Closed Date recorded to preserve
valid time integrity.
Closed Date After Opened Date:
check: "Closed Date IS NULL OR Closed Date > Opened Date"
description: >
An account's closure date must be later than its opening date.
```
```yaml
governance:
pii: false
classification: Highly Confidential
retention: 10 years
retention_basis: Domain default retention aligned to AML/CTF record-keeping obligations
description: >
Account records must be retained for 7 years from Closed Date, aligned to AUSTRAC
AML/CTF Act 2006 record-keeping obligations. Accounts must not be deleted — closure
via Closed Date and status update is the only permitted termination mechanism.
access_role:
- FINANCIAL_CRIME_ANALYST
- KYC_OFFICER
- COMPLIANCE_OFFICER
- RELATIONSHIP_MANAGER
compliance_relevance:
- AUSTRAC AML/CTF Act 2006 — Part B account record-keeping
- AUSTRAC AML/CTF Amendment Act 2024
- RBNZ AML/CFT Act 2009 — section 58
- FATF Recommendation 10 — Customer Due Diligence
```
## Relationships
### Account Holds Product
An Account is an instance of one Product definition.
```yaml
source: Account
type: references
target: Product
cardinality: many-to-one
granularity: atomic
ownership: Account
```
### Account Denominated In Currency
An Account is denominated in exactly one Currency. All balances and transaction amounts on the account are expressed in this currency.
```yaml
source: Account
type: references
target: Currency
cardinality: many-to-one
granularity: atomic
ownership: Account
```