Overview


This document outlines at a high level the major enhancements, new features and bug fixes going into the Fineract 1.4 and corresponding Mifos X release. The target audience includes all stakeholders, internal and external, potential clients of the software and anyone who wants to get a synthesis of what’s going on in it as well as what not as part of this release.

Release Plan


Phase

Projected Timeline

Actual Timeline

Planning

Dec 17 2019 - Jan 7 2020


Release Announcement

Jan 18 2020

Aug 5 2020

QA

Jan 18 2020 - Feb 1 2020

Aug 5-27 2020

Publish Release Notes

Feb 1 2020

Aug 2020

Vote on Release

Feb 8 2020

Aug 27 2020

Target Release Date

Feb 15 2020

Sep 3 2020


Scope

Below are the main goals of this release

  1. Share the pull requests and features that have been contributed by several partner organizations
  2. Share the APIs built for external contributors that haven't been shipped yet
  3. Share the features from 1.3 that didn't ship in 1.3
  4. Share any critical bug fixes and minor enhancements. 


1.4.0 - Apache Fineract


New Features


[#FINERACT-1136] Backport Two Factor Auth Filter Type Cast Error to release branch 1.4.0 - ASF JIRA

Backport 2-factor authentication to 1.4.0 

 [#FINERACT-1129] Backport FINERACT-1129 to release branch 1.4.0 

Backport Gradle task to create release package to release branch 1.4.0

[#FINERACT-1104] Adjust JPQL query in likelihood repository - ASF JIRA 

Adjust JPQL query in likelihood repository

[#FINERACT-603] GSIM and GLIM support - ASF JIRA 

Support for Group Loans with Individual Monitoring and Group Savings with Individual Monitoring added by Nikhil Pawar with use cases and support from iDT Labs. 

[#FINERACT-706] Payments switch integration - ASF JIRA 

Basically, there are a few minor changes are needed to fineract1.x to support integration with a payments hub. The payments hub will handle most of the functionality, so the changes to fineract1.x are to be minimal. 

https://issues.apache.org/jira/browse/FINERACT-767 

There is already a make Repayment Api /loans/{loanId}/transactions?command=repayment on Mifos.

This API should also be available while making batch requests to avoid unnecessary API calls.

This can be used when there are mutiple repayment calls to make.

[#FINERACT-783] Fineract on Kubernetes - ASF JIRA 

It would be useful if Fineract had a ready to roll out of the box working Kubernetes YAML, equivalent to the docker-compose.yml.

[#FINERACT-783] Support creation of self-service users

A self-service user is a staff user assigned to a specific role which can perform certain actions. These users are used to login to the self-service web and mobile applications. The challenge is that there's no user-friendly way of creating a self-service user. 

[#FINERACT-873] Release Apache Fineract v1.4.0 - ASF JIRA 

There is also a 1.4.0 related both branch and even tag. It was created 2 months ago, and does not match current JIRA issues for 1.4.0, and as far as I remember (please comment here if this is wrong!) there was never a vote approving it, and it's not available on http://fineract.apache.org. I therefore propose that we start over.

[#FINERACT-883] Expose Fineract build's Git revision on /actuator/info HTTP API endpoint - ASF JIRA 

It can be useful to be able to know what exact build of Fineract is running on a given server.

This can be achieved by automatically including Git revision etc. details in a properties file during build time, and then exposing that information on an HTTP API endpoint.

[#FINERACT-897] Make Fineract compatible with both MySQL5.7 and MySQL 8 - ASF JIRA 

Test Fineract with the latest version of MySQL v8 instead of the old MySQL 5 we currently seem to be mostly using.

[#FINERACT-915] Add /echo debug API endpoint - ASF JIRA 

To investigate a problem such as FINERACT-914, but perhaps also similar other ones like it in the future, it would be useful if Fineract out of the box included a simple /echo API, which would simply return all HTTP Headers received in a request - exactly like the application received it.

[#FINERACT-916] New Type Of Charge Time Type - ASF JIRA 

A charge time type element has to be developed in Fineract. This event is similar to other events of a banking cycle such as Withdrawal, disbursement, account activation(for eg savings activation) The time type is association with Fund Transfer action.

[#FINERACT-918] Document how to run Fineract in IDEs like Eclipse & IntelliJ - great for easy debugging! - ASF JIRA 

The goal of this issue is to be able to easily run (something like) org.apache.fineract.ServerApplication directly within the IDE.

[#FINERACT-919] Detect, and fix, duplicate classes from similar JARs on the Fineract classpath - ASF JIRA 

Proposed to detect, and fix, duplicate classes from similar JARs on the Fineract classpath. This should help to avoid weird problems.

[#FINERACT-996] Fineract Java Client API library - ASF JIRA 

It may be neat to have a Java Client API library for Fineract.

Retrofit is a nice way to build that (just quickly hand hard-code!).

Integration Tests could use this (instead of http://rest-assured.io). Future scale tests could use this.

[#FINERACT-1000] JIRA Dashboard set-up etc. - ASF JIRA 

Create an initial version of a (shared, open, public) JIRA Dashboard for this project.

Do a first round of some related triage / clean up / re-configuration.

Use this issue to publicly clearly record everything done.

[#FINERACT-1006] Auto Format Source Code - ASF JIRA 

Further exploring auto formatting for this project, but if we really do do this, then how about not as a manual "one off", but through integrating Gradle task that any future contributor can easily use


Enhancements

[#FINERACT-1129] Gradle task to create release package - ASF JIRA

Add Gradle task to create release package with following artifacts:

1)WAR

2) server JAR

3) client JAR

4) README

[#FINERACT-1116] Add release of already onhold amount from interoperation transaction - ASF JIRA

The release of onhold interoperation transactions were not implemented in the past because lack of time so this change implements it. Also some refactor happened, removed similar methods from InteropServiceImpl favoring spring data. The change was tested with PHEE (payment hub enterprise edition) environment preparing/booking/releasing transfers which is using fineract as AMS backend.

[#FINERACT-1108] Custom Installment amount for range of planned payments - ASF JIRA

No functionality to adjust a small number of scheduled payment values.

Customers will tell us that they can only afford to pay a certain amount in monthly installment. We need a solution to accept the new schedule amount and for the system to calculate the duration.

Improvement sponsored by Updraft and developed by Mifos Initiative and Fynarfin.

[#FINERACT-1105] Swagger generates invalid Open API Specification file - ASF JIRA

The Open API Specification file produced by Swagger Gradle Plugin is invalid.

  1. Run ./gradlew build
  2. Use the contents of the generated Open API Spec file build/classes/java/main/static/swagger-ui/fineract.yaml to debug/validate spec file from here: https://validator.swagger.io/  - Use Debug POST request to validate 

there are basically 2 types of errors:

"attribute paths.'{path_name}'(request_type).responses.200.description is missing" - This is because the "description" field is empty in all the APIs that are producing this error. Eg. GLClosureApi

"attribute paths.'{path_name}' Declared path parameter\ {path_param} needs to be defined as a path parameter in path or operation level"

[#FINERACT-1101] Swagger CodeGen Test Build using Gradle instead of Maven - ASF JIRA  

Swagger Client Code Generation seems to be built using Maven mvn... but on docs/developers/swagger/client.md we document the use of Gradle. This seems inconsistent, and requiring Fineract developers to have Maven installed just for this may be unnecessary

[#FINERACT-743] Add/update swagger document for accounting api's 

Add documentation for remaining api's of accounting module.

Update/correct existing documentation of accounting module.

[#FINERACT-744] Add swagger document for adhocquery api - ASF JIRA 

Add documentation for adhocquery api module.

[#FINERACT-745] Update swagger document for batch api - ASF JIRA 

Update/correct existing documentation of batch api module.

[#FINERACT-836] Integration Test the Swagger UI 

With the various changes related to Swagger proposed in the other subtasks, it occurred to me what it could be nice and cool if there was an integration test which provided for future non-regression proving that "Swagger worked".

[#FINERACT-1082] Automate Fineract version number population into Swagger doc - ASF JIRA 

Currently the Fineract version (e.g. 1.4.0) for Swagger documentation is hardcoded into fineract-provider/config/swagger/fineract-input.json. This should be automatically populated based on current Fineract version

[#FINERACT-838] Swagger generated client libraries - ASF JIRA 

Having (Swagger automatically generate!) client libraries in Java (and even other languages?!) seems like a cool idea. It's also something that perhaps needs a bit more investigation than only adding the respective Gradle plugin. If we actually do do this, after having done all of the work in the other Sub Tasks, then I think we would have to include sample code in the repo building against the generated client libraries to test and illustrate their usage. We would also have to publish those client libraries, e.g. as downloadable JAR from the release page (or later even made available on Maven central). It would perhaps be clearest if there was another directory in the Fineract source tree, next to and outside of not inside, the fineract-provider (which is the "server") for this purpose.

Bugs Resolved

[#FINERACT-753] incorrect savings account balance when charge transaction is reversed during an overdraft recalculate Daily Balances - ASF JIRA 

This bug occurs in specific scenarios where there is an overdraft on account  code section 

[#FINERACT-761] Use of (unmaintained) Drizzle JDBC driver in Fineract Build (not run-time) prevents upgrading Flyway <- Gradle - ASF JIRA 

Apache Fineract project is stuck on very ancient versions of a number of 3rd party tools and libraries, including the Gradle Build tools, JDBC driver, automated code quality tools like FindBugs (which has security related impacts; more recent versions would permit switching to SpotBugs and add automated SQL injection vulnerability scanning and the like).


[#FINERACT-860] github.com/apache/fineract has no CI to validate PRs 

While code reviewing https://github.com/apache/fineract/pull/468/ noticed that Fineract (non-CN) doesn't have CI set-up for GH PRs

[#FINERACT-609] Topup loan is not working for Group loans - ASF JIRA 

Create a  loan product with top up enabled.

Take a group loan and disburse it.

Take another group loan application , Check 'Is topup loan' and try  to select previous loan  account.  Previously created loan account is not displaying.

Top up loan  is working fine client level loan application. 

[#FINERACT-660] Not able to import Loan, Savings, Fixed Deposit and Recurring deposits accounts - ASF JIRA 

In bulk importation, when you want to import loan accounts, Savings account, Fixed Deposit Accounts and Recurring Accounts, you can download the template but when you upload, it doesn't give any error but when you refresh to see the record, it shows the importation didn't complete even if you wait for a long time.

[#FINERACT-689] Able to Create Fixed Deposit/Recurring Deposit product without adding Interest Rate Chart - ASF JIRA 


1) Go to Admin>Products and select either Fixed Deposit Products or Recurring Deposit Products and then click on Create Fixed Deposit Product/Recurring Deposit Product.

2) Give all mandatory inputs and under 'Interest Rate Chart' provide 'Valid From Date' and then just submit it without adding interest rate.

> Able to Submit and create FD/RD product without interest rate chart.

Expected: Validation should be thrown 'Interest Rate is not added' , once submit button is hit. 

[#FINERACT-802] The client can have two or more different usernames to login as self service user - ASF JIRA 

Go to client page> click on 'More' button.

In 'More' menu, click on 'Create Self Service user'

In next navigation page - create self service user page - provide unique username.

Provide password and then click on 'Activate Self Service User' button.

Again in 'More' menu, click on 'Create Self Service user' and follow 3rd and 4th steps( this time give different username).

[#FINERACT-997] Accounting Mapping with the Income and Fees Does not Work - ASF JIRA 

1) Create savings product and associate charges

2) Adde Advanced Accounting config and map any selected mapping in income and fees area type.

3) Does not get posted in appropriate headers.

[#FINERACT-1106] Rescheduling a loan ignores non-working days/holidays - ASF JIRA 

Rescheduling a loan to pick a new regular payment day ignores non-working days/holidays for the first payment day.

Fix being sponsored by Updraft and developed by Mifos Initiative and Fynarfin.

[#FINERACT-1107] Rescheduling a loan with a payment day on 29, 30, 31 of the month to the first/second of the following month doesn't work as expected - ASF JIRA 

Rescheduling a loan with a payment day on 29, 30, 31 of the month to the first/second of the following month doesn’t work as expected. Future payments are not on the first/second, but remain on the 29/30/31 and there is a long (60 day) period. This seems to work fine if the loan is earlier in the month, so something specific to “longer than 28 day months”

Fix sponsored by Updraft and developed by Mifos Initiative and Fynarfin.

[#FINERACT-1109] Inability to reschedule when interest accrued larger than EMI 

Payment holidays that run longer than the interest accrued during the window are impossible to reschedule.


Mifos X 20.8


"Filter by name" field missing in "Manage Roles and Permissions" #2904

The Filter by name (search field) is not there in the "Manage Roles and Permissions" (view roles) section. It is difficult for the administrator to search for a name amongst hundreds of names in the list.

UI inconsistency in the side navbar #3159

The cursor's image changes when it highlights every item on the side navigation bar except the help item (the last item).

No Validations for username and password length while creating self-service user #3136

Self service mobile app expects minimum 5 characters for username and 6 characters for password. But while creating self service user on Web, there is no validation for username and password length

Mifos X Web App - Fix broken icons #2621

When we moved from the old skin to new skin, a lot of icons are missing in buttons and inputs due to switching from icon classes to fa classes. Many of the classes are spelled incorrectly in the code. 

Admin can uncheck "ALL FUNCTION" permission checkbox which removes the admin privilages #2952

Admin user is allowed to uncheck "ALL FUNCTION" permission on Permissions: Special screen. It drops the admin privileges for all the other admin user as well.

Not able to attach Client while creating the Group #1654

Create a Client and activate it.

Click on Groups -> Create Group - In Create Group page click on add Clients, Even after typing the characters of the existing clients not getting populated in the same page.

Display relevant error messages when attempting to submit wizard for new notifications. #2717

When attempting to save a new notification of the type scheduled, the wizard doesn't actually proceed to save during final step.

No error message was displayed and it was only when I realized that the "Schedule Date" wasn't after the submission date that I understood why it wasn't being submitted.

Error messages should be displayed reflecting why the wizard is not successfully being submitted.

Create fixed deposit product form does not have numeric value validation. #2794

Create fixed deposit product form does not have numeric value check validation which allows the user to fill the entire form with alphanumeric characters and when we submit only then error is displayed

Newly added fixed deposit application and recurring deposit applications are not being displayed in the client page #2879

Newly added fixed deposit application and recurring deposit applications are not being displayed in the client page( like the loan, shares, savings etc).

Account Usage is empty when editing the chart of account #2966

When editing the chart of account, the field of account usage do not come with the previous filled value

Need a new permission for Assign Staff and Unassign Staff for Loans & Savings #3043

If We go to System>Manage Roles and Permissions , There is no choice of permission for Assign Staff & Unassign Staff under 'Loan Transactions' and 'Savings Transactions Category'.

Ambiguous "buttons" on create template #2765

On the "create template" screen, there are pieces of text one can click to add certain variables into a template. They function fine, but their use is somewhat ambiguous, and may look like a glitch at first glance.

Permission for Post Interest As On for savings #3010

Currently, Post Interest As On is only available when User is given ALL FUNCTION permission. However, this is needed by many Users who should not be given the ALL FUNCTION (loan officers etc). This function is used when a client leaves the MFI and all their Savings are posted up to date and withdrawn. It would be ideal to have a separate permission setting for this function.

Selecting Reccuring brings Fixed Deposit Product #2942

Selecting Rec-curing deposit Products brings Fixed Deposit Products during loan application to the client.

Need a Notes Field in Savings Deposit and Withdrawal page #2414

There is no Notes Field while making deposits and withdrawals for savings account. We can see the same for Loan repayments page:

Completed Teller transactions aren't displayed in proper currency - only shows as $ #1732

Set currency as Indian Rupees, US Dollar, UAE Dirhams, in currency configuration.

Create teller and add cashier to it.

Add office financial mapping for main cash at vault and for cash at teller/cashier.

Allocate cash in Indian Rupees, and Settle cash in UAE Dirhams,

Click on search Journal entries in which all entries got created with $ symbol.
It should be with particular currency symbol with which transaction has been done.

Unable to go to next page #2984

On the All Reports, Users and Configurations pages, I am unable to browse the pages as clicking on the page numbers does not work.

If I sign out, refresh a few times and log back in, it will work for a few minutes and then stop working.








  • No labels

1 Comment

  1. Aashish Sawhney.  Note new location within hierarchy for this page.