Hi everyone, I'm Nidhi Bhawari, the GSoC 2026 contributor selected for FINERACT-2169 (New Command Processing Infrastructure). To keep the conversation transparent within the community, here's my current understanding:
*Old command processing flow:* User → JSON body → REST controller (takes String) → CommandWrapper (JSON blob) → SynchronousCommandProcessingService (routes via @CommandType magic strings) → legacy handler (implements NewCommandSourceHandler) → service method (manually extracts fields from JsonCommand) → hand-written validator (~200+ lines) → entity persisted. *New command processing flow:* User → JSON body → REST controller (Jackson auto-fills typed Request POJO) → Command<Request> wrapper → CommandDispatcher (routes via generic types) → CommandHandler<Request, Response> (typed, ~15 lines) → service method (uses typed getters, no extraction) → Jakarta Validation annotations replace the validator file → entity persisted via MapStruct. The infrastructure (fineract-command/) is already built and shipped. Out of ~70 legacy modules, *13 are already migrated:* Business Date, Cache, External Event Configuration, Document Management (documents + images), Currency / Monetary, Staff, Working Days, Payment Type, Resource Notes, Meeting, Interest Rate Charts, Product Mix, Mix Taxonomy I plan to migrate *5–7 modules*, strictly following the fineract-command/ *REFACTORING.md* recipe across all of them. Explicitly out of scope (per FSIP-5 / REFACTORING.md): async and non-blocking dispatcher modes, maker-checker, JAX-RS → Spring Web MVC switch, storage-layer cleanup. Point me if I'm wrong or missing something, or if there are priorities I should be aware of before picking my first module. Best regards, Nidhi
