Accounting - Audit Trail & Compensating Strategies
Regulatory compliance, immutable audit logs, and correction strategies for the FMS domain.
Audit Trail & Compensating Strategies
The Accounting & FMS domain is designed to satisfy regulatory scrutiny, external audit requirements, and internal control frameworks. Every action leaves an immutable footprint, and every correction follows a formal compensating strategy rather than record destruction.
1. Regulatory Compliance & Audit Log
Every mutation within the Accounting context is recorded with immutable context:
| Audit Attribute | Purpose |
|---|---|
| Actor Identity | Identifies the user, system job, or integration process that initiated or approved the action. |
| Timestamp | Records the precise moment of the action in UTC. |
| Origin Context | Identifies the source domain event, user interface module, or integration job that triggered the action. |
| Before / After Snapshot | Captures the state of the voucher or balance before and after the change. |
| Reason Code | Captures the business justification for the mutation, especially for reversals and adjustments. |
Audit Invariants
- Audit log entries are append-only. They can never be edited or deleted.
- Posted journal vouchers retain a complete lineage of approval actors, posting timestamps, and source aliases.
- Period open/close actions are recorded with the actor and a mandatory reason.
2. Correction Through Reversals
Erroneous posted transactions are never deleted. The domain supports three compensating strategies:
| Strategy | Use Case |
|---|---|
| Reversing Journal Entry (Storno) | Create an equal and opposite journal voucher on the same date to cancel the original. |
| Credit Note | Reduce a previously recognized revenue or receivable. |
| Debit Note | Increase a receivable or correct an under-billed amount. |
Reversal Rules
- Every reversal document must reference the original journal voucher.
- Reversals pass through the same maker-checker and balance-validation workflow as original entries.
- Reversals are posted in an open accounting period, even if the original entry belongs to a closed period.
- The audit trail links the original entry, the reversal entry, and any replacement entry into a single correction chain.
Correction Chain Example
Original JV #1000 Reversal JV #1001 Replacement JV #1002
(Erroneous posting) (Storno reversal) (Corrected posting)
| | |
└───────────────────────────┴────────────────────────────┘
Correction Chain
Why Deletion Is Forbidden
Deleting a posted transaction would break:
- The immutable audit trail required by regulators.
- The sequential integrity of journal voucher numbering.
- The ability to reproduce historical financial statements exactly as originally reported.
- The compensating entry pattern that preserves the complete history of corrections.
3. Summary
The Accounting & General Ledger domain in Obelaw is a rigorous, event-driven bounded context that enforces financial correctness through immutable posted entries, zero-sum balancing, closed-period locks, and comprehensive audit trails. It remains isolated from operational domains via an Anti-Corruption Layer and consumes only the financial events necessary to maintain the canonical ledger.