Technical Requirements and Implementation Plan
Domain-Driven Design & Event-Based Architecture plan.
Executive Summary & Architecture Topology
The VSLA (Self-Funded Group) module is implemented as a standalone Spring Boot application (vsla-service) that sits alongside a standard Apache Fineract deployment. Fineract Core is treated as an external financial ledger and account engine; it is not modified and is consumed exclusively through the official Apache Fineract Java REST API Client (fineract-client).
Topology
Key Principles
VSLA Service is the System of Record for all VSLA-specific domain logic: group parameters, meeting schedules, attendance, internal lending lifecycle, voting, share-out calculations, earnings allocation, and group-level accounting.
Fineract Core is the System of Record for: client registry, savings account balances, external loans (group ↔ bank/MFI), and institution-level GL postings.
All cross-system mutations are asynchronous and eventually consistent, using an Outbox + Inbox pattern over the Fineract REST API.
No shared database; loose coupling via REST only.
Trapdoor setting (
vsla.group-type) is a deployment-time configuration in the VSLA service. When active, all group lifecycle and internal lending operations are owned byvsla-service; Fineract remains unaware of group semantics.