Hi Petri,

Please take a look at the Jira Ticket
https://issues.apache.org/jira/browse/FINERACT-2290. I had released a Pull
Request https://github.com/apache/fineract/pull/4943.

Thanks,
Kapil

On Mon, Sep 1, 2025 at 7:27 AM Petri Tuomola <petri.tuom...@gmail.com>
wrote:

> Hi
>
> I'm happy to help fix issues with Collection Sheet API.
>
> If I look at the emails that started all this, I can only see this comment:
>
> "The *Collection Sheet API* in its current state appears non-functional
> and contains several logical errors"
>
>
> I think it's fair to expect a bit more detailed bug report than that.
>
> Is there any more details on this issue: how is it non-functional, and
> what are the logical errors?
>
>
> Who can provide the list of JIRAs that need to be fixed? I can then have a
> look this weekend.
>
>
> Regards
>
> Petri
>
>
>
> ------------------------------
> *From:* James Dailey <jdai...@apache.org>
> *Sent:* Saturday, August 30, 2025 3:01 AM
> *To:* dev@fineract.apache.org <dev@fineract.apache.org>; Edward Cable <
> edca...@mifos.org>
> *Subject:* Re: Collection Sheet Deprecation was [Re: Questions and
> Observations on FINERACT-2290 (Collection Sheet API Refactor)]
>
> Devs -  Are we done with this?
>
> First, I am NOT ruling out this functionality as important but if no one
> is actually demanding it, and no one is willing to maintain it, then it
> doesn't get maintained.  That is the nature of open source projects.
>
> Second, it can happen that an outside vendor (e.g. Mifos) that relies
> on this Collection Sheet functionality (or any functionality) inadvertently
> drops that from their front end release.  Because the tests at Fineract do
> not cover this fully, no one at the Vendor and no one at the Fineract
> project will see the functionality fail in a build until a customer or
> implementer notices. So, tests are vital for ensuring ongoing
> maintainability.
>
> Third, if this type of thing isn't "naturally" part of the core - then it
> will make a lot more sense to have it be an outside extension - in which
> case the tests have to be written for the API calls, and a Vendor should
> try to get such tests contributed.   I could be wrong about this, I would
> be happy to debate where this belongs.
>
> @Edward Cable <edca...@mifos.org> - what is the assessment and status of
> needed functionality and where do you think it should live?
>
> Thanks,
> James
>
> On Mon, Aug 18, 2025 at 8:21 AM James Dailey <jdai...@apache.org> wrote:
>
> Sifiso -
>
> Do we have a way to reach the tens of thousands of institutions you
> believe are there?
>
> My belief (just anecdotal information) is that it’s more like a few
> hundred institutions and that out of that number, less than 10% are on a
> recent release.  And, of that smaller number, few, if any, are still using
> Collection Sheets.  I could be wrong - I’d like the data!  I’d say that
> vendors can show up with their data here to help make this vendor neutral
> space more informed.
>
> If group lending and group-member lending and collection sheets are still
> needed, then perhaps those project volunteers can contribute the needed
> updates to keep the functionality useful.
>
> Thanks
> Thanks
>
>
> On Mon, Aug 18, 2025 at 6:48 AM Sifiso Mtetwa <sif...@skyburgsystems.org>
> wrote:
>
> Hi guys,
>
>
>
> This is an interesting topic. I have been wondering why, in general, we
> seem to be deprecating more and more system functions. The individual
> collection sheet has served us well over the years and still does, If
> anything we could improve on its functionality by maybe adding a bulk
> collection sheet template with little detail compared to a full loan
> repayment bulk import template.
>
>
>
> Fineract is used by tens of thousands of organisations throughout the
> world and most of them are not on this listing and may not have a voice to
> air their concerns. Maybe we can find a way of exposing this thread to
> include more voters.
>
>
>
> Regards,
>
>
>
> *From:* James Dailey [mailto:jdai...@apache.org]
> *Sent:* Saturday, 16 August 2025 02:53
> *To:* dev@fineract.apache.org
> *Subject:* Re: Collection Sheet Deprecation was [Re: Questions and
> Observations on FINERACT-2290 (Collection Sheet API Refactor)]
>
>
>
> Ed
>
>
>
> I agree this needs to be discussed but it is important to acknowledge that
> THIS Fineract listserv is the only official (and required) discussion
> space.  It is not the intention to bury anything in “an email thread”.
>
>
>
> When I started up Mifos we spent a lot of time looking at Collection
> Sheets and designing process flows around them. I fully know that this
> design direction was important back then in 2002-2006.
>
>
>
> However if there is no one here asking for them to be retained besides
> you, then that is a sign that they have perhaps reached an end of their
> utility.  Or, that the users are not actually here, which is a different
> problem.
>
>
>
> So,… If there is a group using collection sheets in production AND they
> are not on some permanent forked (old) version, then now is the time to
> speak up.  Here.
>
>
>
> Generally, I’m fairly certain we can refactor this with an eye toward
> extracting it from the core.  Repeating the logic in two places makes no
> sense either.  Collection sheets are kind of assembled from
> constituent loans and savings.  The balances and due payments should be
> calculated in the underlying components.
>
>
>
> As the system gets restructured we need to decide to keep this at all, to
> keep it in a new place, or as some external concept/plug in. Why wouldn’t
> we want a separate component?
>
>
>
> Cheers
>
>
>
> On Thu, Aug 14, 2025 at 4:16 PM Ed Cable <edca...@mifos.org> wrote:
>
> I'll leave the other thread for discussion of the API versioning and
> refactoring related to Collection Sheet API but wanted to create a separate
> thread regarding the deprecation of the Collection Sheet.
>
>
>
> In general, for this and removal of any functionality, it's something that
> needs to be discussed openly with the community and with a vote and not a
> decision buried in a mailing list thread.
>
>
>
> For the collection sheet specifically, more thought has to be given to its
> deprecation as the centrality and highly coupled nature of the collection
> sheet is being understated as it isn't merely a report that's to be printed
> or a form filled out via a mobile application. It's a significant portion
> of the user interface and highly coupled to many of the microfinance
> features around groups/centers/meeting scheduling, staff assignment, etc.
>
>
>
> I do agree that from a UI perspective, the collection sheet and other
> microfinance-centric functionalities and flows should be viewable based on
> a configurable setting. As it doesn't lend itself to the optimal user
> experience for a large portion of current Fineract user base.
>
>
>
> I also am supportive of a strategy of slimming Fineract to its core
> services and functionality above core Fineract services and APIs can be
> extracted out.
>
>
>
> So I do think we should give thoughtful consideration to what abstracting
> out the collection sheet and corresponding microfinance functionality would
> look like and what that effort would entail to abstract it out without
> adversely impacting the original user base of the software but it's not as
> simple as deprecating these API.
>
>
>
> I welcome others' thoughts and inputs as I know even with microfinance
> itself, the methodology has evolved and group lending and the concept of a
> collection sheet isn't as central as it once was
>
>
>
> Thanks,
>
>
>
> Ed
>
>
>
>
>
>
>
> On Wed, Aug 13, 2025 at 6:36 PM Kapil Panchal <
> kapil.panchal.developm...@gmail.com> wrote:
>
> Hi James,
>
>
>
> I can proceed by marking this feature as @Deprecated and/or performing a
> safe refactor to remove the API.
>
>
>
> For API versioning I agree to Aleksandar Vidakovic's proposal on adapting
> to the SpringBoot v7/Spring Framework v4. If I may, Aleksandar
> Vidakovic takes the lead on this project and I can help to support the
> conversion?
>
>
>
> Thanks,
>
> Kapil
>
>
>
> On Thu, Aug 14, 2025 at 5:07 AM James Dailey <jdai...@apache.org> wrote:
>
> Hi Kapil
>
>
>
> I might suggest looking at this as an opportunity to remove the collection
> sheet entirely from the Fineract namespace.  It’s a legacy concept I and
> others designed a long time ago, originally in 2002 based on collection
> sheets we gathered from a dozen countries. It is strongly tied to concepts
> in microfinance field operations, and especially when there was no data
> connectivity.
>
>
>
> It belongs perhaps as a sort of external microservice - data loading via a
> bulk import could still be enabled.
>
> The API versioning is a good idea but needs to be more holistic across the
> platform I think.
>
>
>
>
>
>
>
> On Mon, Aug 11, 2025 at 4:43 AM Ádám Sághy <adamsa...@gmail.com> wrote:
>
> Hi Kapil,
>
> Thank you for raising the concerns below. I’ll need some additional
> details to fully understand your points:
>
> 1.      *Collection Sheet API* – You mentioned it appears non-functional
> and contains several logical errors.
>
> o    If it’s indeed not working, that’s a separate, high-priority
> discussion.
>
> o    Could you clarify which logical errors you were referring to, and
> what specifically makes you think it’s non-functional?
>
> 2.      *Service annotations* – You noted that service methods are not
> annotated with @Service and that beans are defined manually.
>
> o    Are you referring to the
> CollectionSheetWritePlatformServiceJpaRepositoryImpl bean being defined
> via configuration?
>
> 3.      *Repository wrappers annotated with **@Service* – You mentioned
> that this mandates full unit test coverage but that they should ideally be
> annotated with @Component.
>
> o    Could you point out the exact classes you had in mind?
>
> As for the other points, I agree we can refactor and remove redundant
> logic—please feel free to suggest specific improvements or start work on
> them immediately!
>
> However, be careful by moving anything into the fineract-core… We are
> aiming to keep it as small as possible as everything is built on top of
> this module! If collection sheet are used for loans and savings - for
> example - than the recommended move is NOT to move this logic into core!
>
> Either:
>
> - we split the logic into fineract-loan and fineract-savings
>
> - Move the logic into a new module
>
> - Leave it in fineract-provider for now
>
>
>
> Shall you have any questions, please let us know!
>
> Regards,
> Adam
>
>
>
>
>
> On 2025. Aug 11., at 12:09, Kapil Panchal <
> kapil.panchal.developm...@gmail.com> wrote:
>
>
>
> Hi Adam,
>
> I’m currently working on *FINERACT-2290* and have a few questions before
> I submit a pull request.
>
> The *Collection Sheet API* in its current state appears non-functional
> and contains several logical errors. It seems there was an earlier attempt
> to convert from a JSON string request parameter to a class-based request
> object, but:
>
> Certain fields are missing.
>
> The serializer is not correctly populating the objects, which causes the
> conditional checks to be bypassed and results in incorrect (false)
> responses.
>
> This change set is *high risk* because it touches most of the loan and
> savings product logic. I’ve had to refactor almost all major methods.
> Extensive integration and end-to-end testing will be required to ensure
> there are no regressions, especially in edge cases. At present, there are
> no unit or integration tests for this functionality, and test creation is
> outside the current ticket scope. I’ve been iterating on this for a while,
> and only today have I reached a stable state after several experimental and
> build-breaking attempts.
>
> *Key Observations:*
>
> Service methods are not annotated with @Service; instead, beans are
> defined manually.
>
> Repository wrappers are annotated with @Service. This mandates full unit
> test coverage for these methods, but they should ideally be annotated with
> @Component.
>
> I agree with prior discussions on separating bean validation — having a
> dedicated @Component validation class allows the request object to handle
> checks independent of database queries.
>
> Validation components can also perform database-related validations; these
> can be injected into service classes for cleaner architecture.
>
> Such validation components should be placed in *Fineract-Core* so they
> are reusable across modules, reducing future refactoring needs.
>
> The current design of having commands in *Fineract-Core* and
> handlers/services/repositories in respective modules is good — it cleanly
> decouples command definition from execution.
>
> There is extensive use of this. in singleton contexts (API, Service,
> Repository). While not harmful, it’s unnecessary boilerplate.
>
> Multiple redundant intermediate DTOs exist where the request DTO itself
> could be reused for data transfer.
>
> I found redundant logic — e.g., a for loop with a break statement that
> effectively executes only once; this can be simplified.
>
> Some JDBC template queries use reserved SQL keywords, causing exceptions.
> Refactoring these queries resolves the issue and returns proper response
> objects.
>
> *Suggestions:*
>
> *Where appropriate, large tickets should be broken into subtasks to manage
> complexity and reviewability.*
>
> It may help to have a dedicated *developer-only Slack channel *for
> technical discussions. This could complement other community spaces if
> there’s a need to keep certain conversations more focused.
>
> What are your thoughts on the above?
>
> Thanks,
> Kapil
>
>
>
>
>
>
> --
>
> *Ed Cable*
>
> President/CEO, Mifos Initiative
>
> edca...@mifos.org | Skype: edcable | Mobile: +1.484.477.8649
>
>
>
> *Collectively Creating a World of 3 Billion Maries | *http://mifos.org *
> <http://facebook.com/mifos>  <http://www.twitter.com/mifos>*
>
>
>
>

Reply via email to