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

Reply via email to