- Documentation
- /
- Fins
- /
- Overview
Overview
What this is
Finance Integration Simulator (fins) is a finance integration test-double: a stand-in for a SAP-style ERP finance boundary that a domain application (via the DSLCore Orchestrator) can post to. It holds the GL and master data a real ERP would, validates and "posts" journals into accounting documents, tracks the inbound messages and their attempts, returns acknowledgements, enforces idempotency, and can be told to simulate failures — all so integrations can be exercised end-to-end without a production ERP.
The domain, in one paragraph
A company (with its currencies, fiscal periods, GL accounts, cost/profit centres, tax codes, suppliers/customers and document number sequences) is the master-data backbone. A domain app sends an inbound message (validate or post); it maps to a journal batch with entries and lines coded to GL accounts, cost/profit centres and tax codes. Validation checks the master data and fiscal period; a valid post creates an accounting document with lines and a document number from the sequence. Each attempt is a posting attempt; failures record posting errors; every message gets an acknowledgement (POSTED / REJECTED / DUPLICATE / TEMPORARY_FAILURE). Simulation rules can force rejections, delays or temporary failures (recorded as simulation rule hits), and webhook subscriptions receive outbound events as documents post.
The 23 models by area
🗂️ Master data
Company · Currency · FiscalPeriod · GLAccount · CostCentre · ProfitCentre · TaxCode · DocumentNumberSequence — the chart of accounts, org structure and numbering a real ERP validates against.
🤝 Business partners
Supplier · Customer — AP/AR partners with default accounts and currencies.
📒 Journals
JournalBatch · JournalEntry · JournalLine — the posting request as received/mapped, down to the coded line.
📑 Accounting documents
AccountingDocument · AccountingDocumentLine — the posted result (the ERP's document of record) with its own numbering.
📨 Message processing
InboundMessage · PostingAttempt · PostingError · Acknowledgement — the integration ledger: what arrived, each validate/post attempt, the errors, and the reply.
🎛️ Failure simulation
SimulationRule · SimulationRuleHit — deterministic/probabilistic forced rejections, delays and temporary failures for testing error handling.
🔔 Events & webhooks
WebhookSubscription · OutboundEvent — consumers and the events emitted as documents post.
The demo scenario
DSLCore Demo Resources Pty Ltd (company 1000, AUD, fiscal year starting July) with a mining chart of accounts (bank, AR/AP, GST, revenue, maintenance labour/parts/external), cost centres (Mine Operations, Central Workshop, Port), profit centres (Mobile/Fixed/Infra) and GST tax codes.
- Successful posting: CPM work order WO-28441 sends a maintenance cost-transfer journal
(labour 2,100 + parts 2,450 + external 300 = 4,850 to Maintenance Clearing). The inbound message
is validated then posted, creating accounting document 5100000001 with four lines, two
successful posting attempts (VALIDATE + POST), a POSTED acknowledgement and a
finance.document.postedoutbound event to the Orchestrator webhook. - Rejected posting: work order WO-28442 codes a line to cost centre BAD-MINE →
validation rejects it (
COST_CENTRE_INVALID), recording a posting error and a REJECTED acknowledgement. A simulation rule (force temporary failure on a flagged correlation) and its hit are included.
56 rows across all 23 models.