FINERACT-2587: Remove CLIENTCHARGE|INACTIVATE write path (never implemented since 2015)#5764
Open
AshharAhmadKhan wants to merge 1 commit intoapache:developfrom
Conversation
…mented since 2015)
6 tasks
Contributor
Author
|
@adamsaghy failure unrelated to my code. Please re run it when you get a chance! |
oleksii-novikov-onix
approved these changes
Apr 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
POST /clients/{clientId}/charges/{chargeId}?command=inactivatehas thrownerror.msg.command.unsupportedon every call since August 2015 and has neverreturned a successful response in any version of Fineract or its predecessor MifosX.
The service method
inactivateCharge()was a stub returningnullfrom its veryfirst commit (
d0fd3e4a6c, August 17 2015, Vishwas Babu A J). No command handlerfor
CLIENTCHARGE|INACTIVATEwas ever registered in any commit across the fullrepository history.
git log --all -S "clientCharge.inactivate"returns zero results.Runtime confirmation against
apache/fineract:latest(April 2026): HTTP 400,error.msg.command.unsupported.m_portfolio_command_sourceshowsmade_on_date=NULL,status=5— rejected before any processing began.m_client_charge.is_activewas never written. Historical record showed zeroprior attempts before the validation run.
Following community discussion on the DEV list, architectural direction from
Victor (charges should be account-associated, not client-associated) and
confirmation from PMC Chair James Dailey, this PR removes the write path
scaffolding (Phase 1 only).
What this PR removes:
else ifrouting branch forcommand=inactivateinClientChargesApiResourceinactivateCharge()interface method and null stub implementation inClientChargeWritePlatformServiceandClientChargeWritePlatformServiceImplinactivateClientCharge()builder method inCommandWrapperBuilderCLIENT_CHARGE_ACTION_INACTIVATEandCLIENT_CHARGE_COMMAND_INACTIVATE_CHARGEconstants fromClientApiConstants0228deletingINACTIVATE_CLIENTCHARGEandINACTIVATE_CLIENTCHARGE_CHECKERfromm_permissionbarebones_db.sqlandload_sample_data.sqlWhat this PR does NOT remove (Phase 2 decision):
isActiveandinactivationDatefrom the GET/clients/{clientId}/chargesresponse — removing these fields changes the response contract and requires a separate deprecation noticeObservable behavior change for callers:
?command=inactivate→ HTTP 400,error.msg.command.unsupported?command=inactivate→ HTTP 400,error.msg.unrecognized.paramReferences: