ERP Core / Accounting

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 AttributePurpose
Actor IdentityIdentifies the user, system job, or integration process that initiated or approved the action.
TimestampRecords the precise moment of the action in UTC.
Origin ContextIdentifies the source domain event, user interface module, or integration job that triggered the action.
Before / After SnapshotCaptures the state of the voucher or balance before and after the change.
Reason CodeCaptures 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:

StrategyUse Case
Reversing Journal Entry (Storno)Create an equal and opposite journal voucher on the same date to cancel the original.
Credit NoteReduce a previously recognized revenue or receivable.
Debit NoteIncrease 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.

Our Premium Sponsors

Obelaw is proudly open-source. Continued development, bug fixes, and community support are made possible by the generosity of our sponsors.

Sponsor Obelaw