Skip to content

FINERACT-2298: migrate Standing Instructions to CommandDispatcher#6034

Draft
aditinikam wants to merge 1 commit into
apache:developfrom
aditinikam:FINERACT-2298-v2
Draft

FINERACT-2298: migrate Standing Instructions to CommandDispatcher#6034
aditinikam wants to merge 1 commit into
apache:developfrom
aditinikam:FINERACT-2298-v2

Conversation

@aditinikam

Copy link
Copy Markdown

Migrate the Standing Instructions module off the legacy CommandWrapperBuilder -> logCommandSource -> @CommandType (JsonCommand) write path onto the typed CommandDispatcher (CQRS) infrastructure, fully JsonCommand-free.

  • API resource now injects CommandDispatcher and dispatches typed StandingInstruction{Create,Update,Delete}Command; keeps the PUT ?command=update|delete contract.
  • New typed StandingInstructionWriteService + command handlers do locale-aware parsing (DateTimeFormatter), validation, account-transfer assembly (new ID-based AccountTransferDetailAssembler overloads) and typed AccountTransferStandingInstruction.update(...).
  • Reads: StandingInstructionReadPlatformService renamed to StandingInstructionReadService; inline read permission checks removed in favour of declarative SecurityConfig GET matchers.
  • SecurityConfig adds GET/POST/PUT matchers for /standinginstructions (READ/CREATE/UPDATE+DELETE) so write authorization is enforced after the logCommandSource permission check is gone.
  • Removed legacy write platform service, @CommandType handlers, StandingInstructionDataValidator, StandingInstructionAssembler, the JsonCommand AccountTransferStandingInstruction.update, and the CommandWrapperBuilder standing-instruction methods.

Description

Describe the changes made and why they were made. (Ignore if these details are present on the associated Apache Fineract JIRA ticket.)

Checklist

Please make sure these boxes are checked before submitting your pull request - thanks!

  • Write the commit message as per our guidelines
  • Acknowledge that we will not review PRs that are not passing the build ("green") - it is your responsibility to get a proposed PR to pass the build, not primarily the project's maintainers.
  • Create/update unit or integration tests for verifying the changes made.
  • Follow our coding conventions.
  • Add required Swagger annotation and update API documentation at fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with details of any API changes
  • This PR must not be a "code dump". Large changes can be made in a branch, with assistance. Ask for help on the developer mailing list.

Your assigned reviewer(s) will follow our guidelines for code reviews.

@aditinikam aditinikam force-pushed the FINERACT-2298-v2 branch 2 times, most recently from 2579dd0 to 2ea71c7 Compare June 25, 2026 02:56
@Aman-Mittal

Copy link
Copy Markdown
Member

@aditinikam SpotBugs check is failing you can run this locally with ./gradlew spotbugsMain spotbugsTest.

while we can ignore api-compatibility-check

Migrate the Standing Instructions module off the legacy
CommandWrapperBuilder -> logCommandSource -> @CommandType (JsonCommand)
write path onto the typed CommandDispatcher (CQRS) infrastructure, fully
JsonCommand-free.

- API resource now injects CommandDispatcher and dispatches typed
  StandingInstruction{Create,Update,Delete}Command; keeps the
  PUT ?command=update|delete contract.
- New typed StandingInstructionWriteService + command handlers do
  locale-aware parsing (DateTimeFormatter), validation, account-transfer
  assembly (new ID-based AccountTransferDetailAssembler overloads) and
  typed AccountTransferStandingInstruction.update(...).
- Reads: StandingInstructionReadPlatformService renamed to
  StandingInstructionReadService; inline read permission checks removed in
  favour of declarative SecurityConfig GET matchers.
- SecurityConfig adds GET/POST/PUT matchers for /standinginstructions
  (READ/CREATE/UPDATE+DELETE) so write authorization is enforced after the
  logCommandSource permission check is gone.
- Removed legacy write platform service, @CommandType handlers,
  StandingInstructionDataValidator, StandingInstructionAssembler, the
  JsonCommand AccountTransferStandingInstruction.update, and the
  CommandWrapperBuilder standing-instruction methods.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants