Sub-task
- [FINERACT-725] - Measure unit test code coverage
- [FINERACT-743] - Add/update swagger document for accounting api's
- [FINERACT-744] - Add swagger document for adhocquery api
- [FINERACT-745] - Update swagger document for batch api
- [FINERACT-746] - Add/update swagger document for commands api's
- [FINERACT-835] - Generate swagger-ui/response.json at build time
- [FINERACT-836] - Integration Test the Swagger UI
- [FINERACT-837] - Make swagger-ui/response.json (?) a pure built time artifact, and remove it from Git
- [FINERACT-838] - Swagger generated client libraries
- [FINERACT-842] - Make the Try it Button on swagger ui accept client requests and produce responses
- [FINERACT-852] - ArrayIndexOutOfBoundsException in ClientSavingsIntegrationTest and SchedulerJobsTest
- [FINERACT-855] - RecurringDepositTest.testRecurringDepositAccountWithClosureTypeTransferToSavings_WITH_HOLD_TAX
- [FINERACT-857] - integrationtests.SchedulerJobsTestResults
- [FINERACT-874] - Remove old release.sh script and related artifacts
- [FINERACT-950] - FixedDepositTest > testFixedDepositAccountClosureTypeWithdrawal_WITH_HOLD_TAX() is flaky
- [FINERACT-962] - Use Renovate for Fineract
- [FINERACT-1003] - Default no-args constructors for jpa
- [FINERACT-1016] - Flaky RecurringDepositTest.testPrematureClosureAmountWithPenalInterestTillPrematureWithdrawal_With_360_Days()
- [FINERACT-1020] - Update apache commons.io to latest version
- [FINERACT-1021] - Move from Junit 4 to jupiter 5
- [FINERACT-1026] - Failing lint check for classfile
- [FINERACT-1027] - Failing lint check for rawtypes
- [FINERACT-1028] - Failing lint test for serial
- [FINERACT-1029] - Failing lint test for static
- [FINERACT-1044] - fineract-provider/swagger-ui/ => /fineract-provider/swagger-ui/index.html
- [FINERACT-1045] - Replace links to demo.openmf.org on Swagger with (local) / links
- [FINERACT-1055] - Update Gradle from v6.1 to v6.3+
- [FINERACT-1056] - Update Jetty to v9.4.22+
- [FINERACT-1072] - Apply Spotless to Gradle files
- [FINERACT-1074] - Clean up plugin configurations
- [FINERACT-1082] - Automate Fineract version number population into Swagger doc
- [FINERACT-1083] - Swagger UI resource location to be version independent
- [FINERACT-1090] - Add a Search/Filter option in swagger-ui
- [FINERACT-1098] - Add JpaSystemException as a JPA transaction exception
- [FINERACT-1103] - Resolve org.eclipse.persistence.exceptions.EntityManagerSetupException
- [FINERACT-1104] - Adjust JPQL query in likelihood repository
- [FINERACT-1134] - Backport FINERACT-1129 to release branch 1.4.0
- [FINERACT-1137] - Backport Gradle task to create release package to release branch 1.4.0
Bug
- [FINERACT-557] - No obvious link to issue tracking system
- [FINERACT-609] - Topup loan is not working for Group loans
- [FINERACT-660] - Not able to import Loan, Savings, Fixed Deposit and Recurring deposits accounts
- [FINERACT-666] - Uploading image ends in errror whereas other files are working just fine
- [FINERACT-677] - Hide Sensitive contents in xml files and logs
- [FINERACT-689] - Able to Create Fixed Deposit/Recurring Deposit product without adding Interest Rate Chart
- [FINERACT-693] - Missing Descriptions for some Global Configurations
- [FINERACT-695] - Fix bug in generating notification.
- [FINERACT-697] - github.com/apache/fineract has no CI to validate PRs
- [FINERACT-719] - Fix test cases around client, loan and savings Import
- [FINERACT-722] - Integration test cases fail when run on the 1st of a month
- [FINERACT-730] - Fix failing gradle task bootRun & can't run simple Spring Boot java -jar (without Tomcat)
- [FINERACT-732] - Travis CI broken
- [FINERACT-738] - Broken link for client Transaction (API docs)
- [FINERACT-753] - incorrect savings account balance when charge transaction is reversed during an overdraft recalculate Daily Balances
- [FINERACT-757] - Client list retrieval returns emtpy result when using search parameter
- [FINERACT-758] - Gradle task for starting tomcat does not when dev profile is selected
- [FINERACT-759] - Possible thread unsafe bug for batch processing
- [FINERACT-761] - Use of (unmaintained) Drizzle JDBC driver in Fineract Build (not run-time) prevents upgrading Flyway <- Gradle
- [FINERACT-763] - Travis CI builds are suddenly failing with a weird error
- [FINERACT-766] - IllegalArgumentException: reserved word type is not valid
- [FINERACT-772] - Fineract Docker build fails on Fedora 30 with Podman instead of Docker, possibly due to ancient Gradle version
- [FINERACT-775] - Clean up Util in src/test vs src/integrationTest
- [FINERACT-776] - TopicTest failure
- [FINERACT-779] - Travis CI breaks due to excessive audit logs when adding Spring Boot Actuator
- [FINERACT-780] - HookIntegrationTest is flaky
- [FINERACT-788] - Fineract Travis CI broken due https://services.gradle.org java.security.cert.CertPathValidatorException: timestamp check failed
- [FINERACT-799] - Sorting for certain columns is not supported in Audit Trails
- [FINERACT-800] - Excessive logs break Travis CI
- [FINERACT-802] - The client can have two or more different usernames to login as self service user
- [FINERACT-803] - No validation(500 Internal Server Error) if we use username which is already taken
- [FINERACT-808] - Some action names do not filter audit trails
- [FINERACT-824] - NullPointerException is thrown when submitting a loan account application with an existing externalId
- [FINERACT-839] - NPE when creating a Loan for a client
- [FINERACT-850] - Random Failing Integration Test
- [FINERACT-858] - Errors (JobExecutionException) in Cron Jobs loose exception root cause details
- [FINERACT-860] - java.util.NoSuchElementException: No value present at java.util.Optional.get(Optional.java:135) at org.apache.fineract.interoperation.service.InteropServiceImpl.findIdentifier(InteropServiceImpl.java:453)
- [FINERACT-881] - Remove all hard-coded default passwords from Kubernetes Deployment
- [FINERACT-885] - ClientLoanIntegrationTest is (still) "flaky"
- [FINERACT-886] - FLAKY org.apache.fineract.integrationtests.FixedDepositTest > testPrematureClosureAmountWithPenalInterestForWholeTerm_With_360 FAILED
- [FINERACT-899] - Flaky AccountingScenarioIntegrationTest checkPeriodicAccrualAccountingFlow_OVER_PAYMENT
- [FINERACT-902] - Fix error "MySQL can only use 61 tables in a join hibernate"
- [FINERACT-905] - Fineract Travis CI broken in Gradle :rat
- [FINERACT-907] - Fineract PRs show Google Cloud Build Check failure
- [FINERACT-913] - Fix broken ignored ClientEntityImportHandlerTest
- [FINERACT-914] - Fineract does too many HTTP redirects if running behind HTTPS SSL Proxy
- [FINERACT-923] - SchedulerJobsTestResults.testApplyHolidaysToLoansJobOutcome Flaky Test Failed
- [FINERACT-925] - SchedulerJobsTestResults.testApplyPenaltyForOverdueLoansJobOutcome
- [FINERACT-933] - ArrayIndexOutOfBoundsException at ClientPersonImportHandler
- [FINERACT-937] - Use Java 11 instead of 12 use on Travis
- [FINERACT-938] - Document (or drop) use of Xerces2 (without requiring NekoHTML)
- [FINERACT-940] - The package javax.xml.parsers is accessible from more than one module: <unnamed>, java.xml (Eclipse only?)
- [FINERACT-943] - Unit tests cannot be easily directly launced in Eclipse anymore
- [FINERACT-952] - Remove un-used "Send messages to Email gateway" Job
- [FINERACT-956] - Logging missing / broken (since Spring Boot and/or Java 11 upgrade)
- [FINERACT-957] - NullPointerException in SavingsAccount.office() and SavingsAccount.officeId()
- [FINERACT-958] - Foreign key constraint fails (`fineract_default`.`m_savings_account_transaction`, CONSTRAINT `FK_m_savings_account_transaction_m_office` FOREIGN KEY (`office_id`) REFERENCES `m_office` (`id`))
- [FINERACT-972] - Ensure Cargo Tomcat is not left running after build
- [FINERACT-974] - .github/workflows/first-interaction.yml fails with Invalid workflow file
- [FINERACT-975] - /tmp needs to be writeable in container
- [FINERACT-976] - Client date of birth can not be greater than the client submitted on date
- [FINERACT-977] - Two NullPointerException in AbstractLoanScheduleGenerator
- [FINERACT-978] - java.lang.reflect.InvocationTargetException at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) Caused by: java.lang.IllegalStateException: Logback configuration error detected:
- [FINERACT-979] - Flyway cannot apply migrations because default schema history table name in new Flyway version now is flyway_schema_history instead of schema_version
- [FINERACT-983] - /actuator/info is empty in container
- [FINERACT-989] - SpotBugs problems (no longer) show up in build failures
- [FINERACT-992] - Field 'office_id' doesn't have a default value
- [FINERACT-993] - Ignore StorageTest IT test
- [FINERACT-994] - Do not try to deploy to fineract.dev on forked branches
- [FINERACT-995] - Operation not allowed for a result set of type ResultSet.TYPE_FORWARD_ONLY in LoanArrearsAgingServiceImpl
- [FINERACT-997] - Accounting Mapping with the Income and Fees Does not Work
- [FINERACT-1002] - Remove all usages of '+' versions in build.gradle
- [FINERACT-1004] - NPE in AddressWritePlatformServiceImpl.updateClientAddress()
- [FINERACT-1005] - Fix Failing test in org.apache.fineract.integrationtests.StaffTest
- [FINERACT-1008] - Field 'version_rank' doesn't have a default value (blocking updates on fineract.dev)
- [FINERACT-1010] - Test testTriggeringManualExecutionOfAllSchedulerJobs of SchedulerJobsTest fails
- [FINERACT-1011] - Execution failed for task ':cargoStartLocal' when running IntegrationTest locally
- [FINERACT-1014] - From/To Amount Range and Period Validatation broken
- [FINERACT-1017] - LoanImport integration tests fail
- [FINERACT-1019] - Office / ClientEntity / SavingsImport Integration Tests are failing and ignored
- [FINERACT-1022] - Update ehcache: 2.10.6 to current 3.8.1
- [FINERACT-1032] - Multi Exception due to not default values
- [FINERACT-1038] - Spotless check should ignore .settings directory
- [FINERACT-1039] - Built JAR / WAR has all the files included twice
- [FINERACT-1040] - Campaign Integration Tests are disabled
- [FINERACT-1041] - Unable to create new system user - error.msg.user.email.invalid
- [FINERACT-1043] - Unable to create client due to invalid error message about required address field
- [FINERACT-1054] - Error at Loan Repayments
- [FINERACT-1060] - UserNotFoundException at org.apache.fineract.useradministration.domain.AppUserRepositoryWrapper.fetchSystemUser()
- [FINERACT-1061] - Operation not allowed for a result set of type ResultSet.TYPE_FORWARD_ONLY in ProductMixReadPlatformServiceImpl.retrieveAllProductMixes()
- [FINERACT-1062] - Platform Exceptions have no message
- [FINERACT-1063] - SimpleDateFormat usage that is not thread safe in ApiParameterError
- [FINERACT-1065] - Integration test errors
- [FINERACT-1066] - NullPointerException at SQLInjectionValidator.validateSQLInput()
- [FINERACT-1087] - NullPointerException at SavingsTransactionsWorkbookPopulator.populateSavingsTable() and FixedDepositTransactionWorkbookPopulator.populateSavingsTable()
- [FINERACT-1091] - PersistenceException: Field 'constitution_cv_id' doesn't have a default value
- [FINERACT-1106] - Rescheduling a loan ignores non-working days/holidays
- [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
- [FINERACT-1109] - Inability to reschedule when interest accrued larger than EMI
- [FINERACT-1117] - Two Swagger UIs do not work due to wrong parameter type
- [FINERACT-1118] - Don't run Swagger code generation if previous build steps failed
- [FINERACT-1128] - Travis build fails with connection refused
- [FINERACT-1133] - Swagger generated library incorrect documentation
- [FINERACT-1135] - Error at Loan Repayments - SQLSyntaxErrorException
- [FINERACT-1141] - Backport FINERACT-1135 to 1.4.0: Error at Loan Repayments - SQLSyntaxErrorException
- [FINERACT-1291] - Wrong disbursement date for loans and transaction date for savings account
- [FINERACT-1402] - Payment Type Must be Mandatory
- [FINERACT-1653] - Security Threat Cannot boot Apache Fineract if database is not on local host and password is not the default
New Feature
- [FINERACT-603] - GSIM and GLIM support
- [FINERACT-706] - Payments switch integration
- [FINERACT-767] - Batch Repayment for Loan
- [FINERACT-783] - Fineract on Kubernetes
- [FINERACT-787] - Support creation of self-service users
- [FINERACT-873] - Release Apache Fineract v1.4.0
- [FINERACT-883] - Expose Fineract build's Git revision on /actuator/info HTTP API endpoint
- [FINERACT-897] - Make Fineract compatible with both MySQL5.7 and MySQL 8
- [FINERACT-915] - Add /echo debug API endpoint
- [FINERACT-916] - New Type Of Charge Time Type
- [FINERACT-918] - Document how to run Fineract in IDEs like Eclipse & IntelliJ - great for easy debugging!
- [FINERACT-919] - Detect, and fix, duplicate classes from similar JARs on the Fineract classpath
- [FINERACT-996] - Fineract Java Client API library
- [FINERACT-1000] - JIRA Dashboard set-up etc.
- [FINERACT-1006] - Auto Format Source Code
Improvement
- [FINERACT-80] - Group loans not included in resultset returned by "LoanReadPlatformServiceImpl.retrieveAll" method
- [FINERACT-83] - Make "interestIncome" variable in "LoanAccrualWritePlatformServiceImpl.updateInterestIncome" method null-safe
- [FINERACT-111] - Do not update charges amount paid if loan transaction is accruals in "AbstractLoanRepaymentScheduleTransactionProcessor.handleTransactionAndCharges"
- [FINERACT-121] - Add 'is_account_transfer' column name to the 'LoanSuspendAccruedIncomeWritePlatformServiceImpl.addSuspendedIncomeTransaction' insert query
- [FINERACT-122] - Add clientId, officeId and groupId to the "CommandProcessingResultBuilder" object in "LoanRescheduleRequestWritePlatformServiceImpl class"
- [FINERACT-428] - Parallelization of Jobs
- [FINERACT-538] - The updated_on or created_on columns in m_client and m_address tables are not populated
- [FINERACT-614] - Associating pre-defined nominal interest rates to loan products
- [FINERACT-629] - Authentication API endpoint forces username and password as URL params
- [FINERACT-696] - use SpotBugs and findbugs-slf4j to detect bad logging anti-patterns
- [FINERACT-700] - Upgrade ancient version of Gradle
- [FINERACT-702] - Integrate SpotBugs and fail build if equals but not hashCode is implemented
- [FINERACT-724] - Upgrade Spring Boot, Spring and Spring Security to their latest stable version
- [FINERACT-726] - Changes to /authentication API's to pass data as part of request body
- [FINERACT-733] - Swagger Documentation for Fineract API's
- [FINERACT-747] - Performance updates : change String.replaceAll() to replace() if the replaced one is plain string.
- [FINERACT-748] - Fixing typos in SPM API
- [FINERACT-762] - Use of (unmaintained) Drizzle JDBC driver in Fineract at run-time (not build) is sub-optimal for performance
- [FINERACT-765] - Remove Flyway completely from Gradle build, and run it only in-App at runtime
- [FINERACT-771] - Fineract Dockerfile multi stage build
- [FINERACT-773] - Make it possible to customize JDBC URLs in Docker Image at run-time instead of at build
- [FINERACT-777] - Use api / implementation instead of compile scoped dependencies
- [FINERACT-794] - Integrate open banking APIs into interoperability layer
- [FINERACT-796] - Use Hikari instead of Tomcat Connection Pool
- [FINERACT-797] - Use Spring Boot BOM to avoid maintaining version numbers in dependencies.gradle
- [FINERACT-804] - Use OkHTTP v3 or at least 2.7.5 instead of 2.0.0
- [FINERACT-805] - Drop more fixed version numbers in build.gradle by replacing them with Spring BOM version
- [FINERACT-806] - Allow customizing Tenants JDBC password, username and driverClassName (not just URL)
- [FINERACT-807] - Use underscore instead of dash in tenants and default tenant database names
- [FINERACT-809] - Upgrade rest-assured to version 3.3.0 (not later, due to Java 8/11)
- [FINERACT-820] - LoanReschedulingWithinCenterTest is flaky and always fails on Sundays
- [FINERACT-821] - Enable and enforce (!) Checkstyle in Fineract
- [FINERACT-822] - Enable and enforce (!) Google's Error Prone quality check tool in Fineract
- [FINERACT-823] - Use Modernizer Java API quality checker tool
- [FINERACT-829] - /rebase & stale + first-interaction GitHub Actions
- [FINERACT-830] - Use distroless base image instead of bitnami/tomcat in container
- [FINERACT-833] - Docker Build (and thus TravisCI for all PRs) fails due to "ERROR 501: HTTPS Required." on http://central.maven.org for drizzle-jdbc-1.4.jar
- [FINERACT-840] - Replace demo.openmf.org/api-docs
- [FINERACT-845] - Integrate community app in docker build
- [FINERACT-846] - Upgrade Fineract 1.x to Java 11 and Upgrade Dependencies to latest versions
- [FINERACT-888] - Fineract Docker Container should only log to STDOUT, not fineract-platform.log
- [FINERACT-893] - Fixed Deposit - Maturity instructions for rollover
- [FINERACT-900] - Clean Up Container Environment Variables
- [FINERACT-908] - Upgrade OpenJPA in Fineract from 3.1.0 to 3.1.1
- [FINERACT-909] - Remove Tomcat Welcome Default App from Fineract Container
- [FINERACT-910] - Include Fineract API Documentation in WAR
- [FINERACT-911] - Alternative way(s) to set Git revision on CI systems which do shallow git clone
- [FINERACT-920] - Upgrade Jersey library from 1.17 to 1.19.4
- [FINERACT-922] - Improve SchedulerJobHelper to be more reliable and prevent flaky tests
- [FINERACT-926] - java.util.Date returned in ISO-8601 instant format ("2011-12-03T10:15:30Z") instead of as "May 3, 2020 10:51:19 PM"
- [FINERACT-927] - Travis CI should display more details for failing tests
- [FINERACT-930] - Excel Imports Fail with more than 4000 records
- [FINERACT-941] - Upgrade Spring Boot from 2.2.4 to 2.2.7
- [FINERACT-942] - Make Checkstyle detect bad logging anti-patterns (and fix problems found)
- [FINERACT-945] - Upgrade Gradle (wrapper) from 6.1 to 6.4
- [FINERACT-946] - use Gradle Wrapper Validation GitHub Action for Fineract
- [FINERACT-947] - Upgrade Spotbugs plugin from 2.0.1 to latest 4.0.8
- [FINERACT-948] - Use Gradle Daemon
- [FINERACT-951] - use Ubuntu Bionic instead of Trusty on Travis
- [FINERACT-953] - Upgrade ical4j from ancient version 1.0.7 to current 3.0.18
- [FINERACT-954] - Use (only) Commons Lang3, not a mixture of Lang(2) and Lang3
- [FINERACT-959] - Tighten javac compilerArgs, turn more warnings into errors (and fix related problems)
- [FINERACT-960] - Automated Dependency Upgrades
- [FINERACT-963] - Upgrade about 15 of our 3rd-party libraries to their latest versions
- [FINERACT-964] - Bump json-path from 0.9.1 to 2.4.0
- [FINERACT-965] - Replace iText with OpenPDF
- [FINERACT-966] - Bump dom4j from 2.1.0 to 2.1.3
- [FINERACT-970] - Automatically continuously integrate and deploy ("CI/CD") Fineract develop branch to fineract.dev
- [FINERACT-971] - Activate a few additional recently introduced new Checkstyle rules
- [FINERACT-986] - Update spotbugs to v4.2.0
- [FINERACT-991] - Upgrade RAT plug-in from 0.3.1 to 0.6.0
- [FINERACT-1018] - Updated more project dependencies
- [FINERACT-1023] - Update dependency spring-boot-gradle-plugin from v2.2.7 to v2.3.1.RELEASE
- [FINERACT-1024] - Change Travis profile from ruby to generic
- [FINERACT-1025] - Upgrade Docker Compose file version and fix MySQL health check
- [FINERACT-1064] - Make class ApiParameterError immutable (almost)
- [FINERACT-1079] - Run Task spotlessApply before commit (Pre-commit)?
- [FINERACT-1093] - Update dependency org.mock-server:mockserver-junit-jupiter from v5.10.0 to v5.11.0
- [FINERACT-1101] - Swagger CodeGen Test Build using Gradle instead of Maven
- [FINERACT-1105] - Swagger generates invalid Open API Specification file
- [FINERACT-1108] - Custom Installment amount for range of planned payments
- [FINERACT-1116] - Add release of already onhold amount from interoperation transaction
- [FINERACT-1129] - Gradle task to create release package
Test
- [FINERACT-1047] - Integration tests for audit trails
Wish
- [FINERACT-760] - Dockerize Fineract 1.x (non-CN)
- [FINERACT-875] - Remove master branch from Fineract git repo
Task
- [FINERACT-810] - Upgrade Flyway from 2.1.1 to 6.4.1 (latest)
- [FINERACT-872] - Use a ConfigMap to setup initdb for kubernetes
Edit/Copy Release Notes
The text area below allows the project release notes to be edited and copied to another document.