This is an automated email from the ASF dual-hosted git repository.

aleks pushed a change to branch 1.7.0
in repository https://gitbox.apache.org/repos/asf/fineract.git


    from b42423b94 Last minute release plugin fixes
     add 9696a7e90 FINERACT-1615: Fix jakarta mail related dependency issue
     add 665bd0f6f FINERACT-1483: fix Sonar vulnerabilities with `Minor` 
severity
     add a3ab06593 FINERACT-1557 enable previous disabled refundByCash 
accounting tests
     add b0a261cbd FINERACT-1608: Add introduction to Asciidoc
     add a97a3d040 FINERACT-1603- Post Interest Job Fix
     add 3827417a6 Merge pull request #2322 from apurbraj/develop
     add 235dfa873 FINERACT-1607: Improve documentation on Cucumber usage
     add a89fe5393 FINERACT-1471: AsciiDoc extension for read/write/batch 
separation
     add 77fd4ff4c Fine tuning the batch APIs and minor adjustments
     add 66621dcc8 FINERACT-1618 Cater for loans with no schedule at disburse 
time
     add c1a3b98ed Update: Cater for loans with no schedule at disburse time
     add e99995982 FINERACT-1596 Goodwill Accounting Changes
     add 2bb6445b4 Spring Batch documentation + Loan COB
     add 073b1b04b Cleanup around Hooks and Hook templates
     add 6849f45bb Deleting the topics module since its incomplete and 
additional cleanups
     add 64bfe3376 Datatable integration test
     add 69a900492 chore: renovate bot setting to pin actions to a full length 
commit SHA
     add 5942488bd Fix for queries using postgres
     add e277c85c6 Fix in accounting rule system_defined
     add 2e8f01813 Static weaving classpath is tuned to conform with the system 
dependent path separator
     add f576c3f07 FINERACT-1613:Savings Interest Posting Job
     add 18a44d761 Merge pull request #2336 from logoutdhaval/fineract-1613
     add 264cc3a29 FINERACT-1553-fix-boolean-premitive-to-handle-null
     add a5bfa43da FINERACT-1557 (approval removing installment charges)
     add e7b2d6dff remove unused jobs
     add 89a4db47c Reorganizing business events
     add ee1f988be Enable/Disable Messaging in Read Only instance mode
     add ebf0e8b53 Filter for instances read, write, batch
     add 367321d76 Fix NullPointerException at Base64$Encoder in 
ImagesApiResource (FINERACT-1224)
     add ef2d42fe3 Instance type filter polishing and tests
     add 8e37f93ba Remove FK of job_run_history table
     add 2b122a17e Fix for reading multirow datatable entry reads non-belonging 
entry
     add 6a4b17a80 chore(deps): update plugin org.openapi.generator to v6
     add fe500be8c chore(deps): update dependency 
jakarta.activation:jakarta.activation-api to v2
     add 7cd9ff879 chore(deps): pin dependencies
     add 2a7d8b949 Fineract with ReadOnly tenant database connection
     add e9df96e38 Readonly connection support
     add 79375a8b9 Renovate adjustments
     add a38fc3231 Disable receiving events for batch-only instances
     add 4465e632f Business date part 1 (#2362)
     add 78280aab9 Allow headers to be passed for generated fineract client APIs
     add 8fc99a814 FINERACT-1641: Invalid Date of transaction after reversal 
correction
     add 38e5edc93 Business date - doc
     add 3196de0e4 Business date doc
     add 68fcddf7a Fix for Gradle logging on asciidoc and swagger generation
     add 645994f87 FINERACT-1483: Optional value should accessed and throw 
exception if null
     add 49e67a01c FINERACT-1634: Invalid balance after withdrawal correction
     add 2a79a7ed2 Merge pull request #2353 from logoutdhaval/fineract-1634
     add 15fff1fb3 Delete fineract.dev.yaml (for now, may be restored again 
later)
     add 149279c1f FINERACT-1643 Catch external_id duplicates for loan 
transactions
     add 23b56fef6 Fixing submittedOnDate as a String in openAPI definition for 
PostLoansRequest
     add 1fb15fa4b chore(deps): bump actions/setup-java from 3.3.0 to 3.4.0
     add fb473ad8d Specify query parameter for DatatablesApi 
getDatatableManyEntry
     add ba1fddbc5 [FINERACT-1628] remove update loan paidin advance job and 
table
     add fb0556c20 Specify query parameters for LoansApi retrieveLoan
     add 470ff9a74 Specify query parameters for LoanTransactionsApi 
retrieveTransaction
     add ddc6a7668 Integration tests for auditing and loan templating
     add cd3826215 Refactored business events
     add e3a256cb5 FINERACT:1644:Max Heap Space should be Configurable for 
Docker Image
     add 3f02b7d7b Merge pull request #2374 from logoutdhaval/fineract-1644
     add f98681ffd Putting back support for pre business events
     add ff2e6cf4a FINERACT-1642:Bulk reversal of related Transactions
     add 74e43ab62 Merge pull request #2372 from logoutdhaval/fineract-1642
     add 44e1e4478 FINERACT-1645:Invalid Balance after Interest posting with 
withdrawal fee
     add 7e680729f Merge pull request #2379 from logoutdhaval/fineract-1645
     add 55949bf8b Unstable integration test due different timezones
     add 552494974 Fineract-1649: Error for Journal entry table
     add 0d5bace36 Merge pull request #2382 from logoutdhaval/fineract-1649
     add 67850e388 Fixing loan approval open api definition
     add ffb914777 New Instance type: Batch Manager
     add 94924432a Fixing loan approval open api definition
     add 62689eb67 OpenAPI fix for loans
     add 1de7b23c9 Business date - part 1 - Fix swagger
     add 63a3f56dd Business date part 1 fix (#2391)
     add 632a08a5c Business date - part 2 (#2384)
     add 9c8239a9b Implement integration tests for Accounting rules
     add 05dc8f938 Error logging enhancement - log handled exceptions on WARN 
level
     add 0bbcc7251 Renovate fixes for upcoming dep upgrade
     add c5b12c489 swagger schema extended (#2397)
     add ac17e993b Build fix
     add b9e30e2e8 Fix for Fixed Deposit Integration Test
     add 2e0fe6aa9 chore(deps): update all non-major dependencies
     add 2d07e8c86 Fix for JPA getById method deprecation
     add 357062a18 Loan externalId unique validation
     add b44a2f2b1 Business date - part 3: Fix reports
     add e90dd49c8 FINERACT-1541: Pentaho reports converted to table format
     add 83dcc4413 Merge pull request #2404 from 
logoutdhaval/pentaho-to-table-branch
     add ad4fa563d Auditor fix - Detached Auditor entity was not persisted 
during cascade persisting
     add b30d5c5a1 Loan transaction date handling enhancement + Make Loan 
transaction auditable
     add fe8868b50 Scheduler jobs API rename (#2409)
     add e50a32975 Business step implementation and interface for Loan COB
     add 2bb92ae53 Business date response swagger fix
     add 0487bece0 FINERACT-1661 Allow merchant_issued and payout refunds when 
fullyPaid/Overpaid
     add 16aafdf95 FINERACT-1657 Allow schedule approved/submitted multi 
non-tranche loans
     add e4eb8afdf fineract-1652: Account Balance and Transaction running 
balance is wrong
     add d1c77a5e4 Merge pull request #2396 from logoutdhaval/fineract-1652
     add 4fdee75be chore(deps): update all non-major dependencies
     add 4ebe645c5 Charts data is mandatory for creating a fixed deposit product
     add adaac8958 Fix makerchecker inbox list group by error
     add ef96d5cc5 Date to LocalDate - part 1
     add 7ce19d703 Date to LocalDate - Client
     add a765cb00f Fix typo in error messages in Loan
     add 308ede861 FINERACT-1402:PaymentTypeMandatory
     add 8b0854208 chore(deps): bump actions/setup-node from 3.3.0 to 3.4.0
     add f7e21f8db chore(deps): bump actions/setup-java from 3.4.0 to 3.4.1
     add 1db8ef46f Date to LocalDate (scheduler excluded due to quartz)
     add 8a55d5807 FINERACT-1656 Correlation ID propagation and configuration
     add 4f832f948 Correlation ID support implementation
     add 8c023e74a Batch API extensions and a couple of OpenAPI fixes + minor 
datatable fixes
     add 81be86373 Quick code cleaning for client and loan: around the native 
queries
     add b87d915db chore(deps): bump actions/setup-node from 3.4.0 to 3.4.1
     add c2d5a735d Fineract client builder tenant and username/password are 
made optional
     add e4e5fc0ce FINERACT-1658:GroupFilter_In_Center
     add 8ca0650b9 chore(deps): bump actions/stale from 5.0.0 to 5.1.0
     add 801497fa2 chore(deps): update all non-major dependencies
     add 2290886e8 Activation date cannot be earlier than the submitted on date
     add a236d7e91 Fix job mismatched logic
     add 019cdab43 Fineract-1646 (#2440)
     add d388a3aa3 fix for 1665 and 1666 (#2441)
     add ba75f7b93 Fix general ledger report
     add fb15fe180 chore(deps): update actions/stale digest to 3cc1237
     add 0187dc5e5 fix(deps): update dependency org.apache.tomcat:tomcat to 
v9.0.65
     add a555fe63b Fix applyAdditionalShares Use saveAndFlush instead of save 
on ShareAccountRepository
     add 4dada53f8 refactor: add lombok to FinancialActivityAccount module
     add d6f8ef8b7 fix: final class error
     add da920b182 refactor: add lombok to closure module
     add b8f821714 Add CustomAuditHandler for supporting OffsetDateTime and 
store in UTC
     add d8f483ab4 Refactor Client to support auditable fields
     add 176c5700d Refactor Loan to support auditable fields
     add 35cc1fc0d Refactor Loan Transaction to support auditable fields
     add 25823a937 Fix some tests
     add 700038020 Apply fixes (based on review)
     add 0b334b563 chore(deps): bump actions/stale from 5.0.0 to 5.1.0
     add a80f589ad fineract-1646 and fineract-1638 combined fix (#2457)
     add d03044c48 chore(deps): bump actions/stale from 5.1.0 to 5.1.1
     add ff9181cc4 [FINERACT-1667] Introducing Spring Batch as job runner engine
     add 16ab49112 [FINERACT-1669] Store business step configuration
     add dc5abeacb Added archiving test results and server logs on GitHub 
workflows
     add 81601645a Fix Product Mix queries using group by
     add b21cdf59b [FINERACT-1676] fixing saving dormant account job
     add 87204d5a8 Added reschedule loans api resource to Fineract Client and 
batch; minor swagger polishing
     add 6a0928eb9 Rework custom auditing handler
     add a73c593eb Fix transaction cannot be in future check
     add 7fb61d028 Fix transaction cannot be in future check
     add 65c6b18ed Fix inconsistenant Date and Date time handling
     add 7f703a3ee fix(deps): update non-major
     add 5dab0127d chore(deps): pin actions/upload-artifact action to 3cea537
     add c46864c8c Fix for scheduled Spring Batch jobs
     add cabb79c99 Allow accounting mappings for fund source asset or liability
     add 2e5fa2bf2 Merge branch 'develop' into 1.7.0

No new revisions were added by this update.

Summary of changes:
 .github/workflows/build-docker-mariadb.yml         |   4 +-
 .github/workflows/build-docker-postgresql.yml      |   4 +-
 .github/workflows/build-mariadb.yml                |  20 +-
 .github/workflows/build-mysql.yml                  |  20 +-
 .github/workflows/build-postgresql.yml             |  20 +-
 .github/workflows/fineract.dev.yaml                |  45 --
 .github/workflows/sonarqube.yml                    |   4 +-
 .github/workflows/stale.yml                        |   2 +-
 build.gradle                                       |  18 +-
 buildSrc/build.gradle                              |   3 +-
 .../groovy/org.apache.fineract.dependencies.gradle |  75 +-
 docker-compose-postgresql.yml                      |   3 +-
 docker-compose.yml                                 |   1 +
 fineract-client/build.gradle                       |   2 +-
 .../fineract/client/util/FineractClient.java       |  36 +-
 .../java/org/apache/fineract/client/util/JSON.java |   6 +
 .../resources/java/template/build.gradle.mustache  | 218 ------
 .../src/main/resources/java/template/pom.mustache  | 479 -------------
 .../src/main/resources/templates/java/api.mustache | 120 ++++
 .../client/test/FineractClientTechnicalTest.java   |   6 -
 fineract-doc/build.gradle                          |   4 +
 .../docs/en/chapters/architecture/batch-jobs.adoc  | 255 +++++++
 .../en/chapters/architecture/business-date.adoc    | 298 ++++++++
 .../src/docs/en/chapters/architecture/index.adoc   |   6 +
 .../en/chapters/architecture/loan-locking.adoc     |  24 +
 .../src/docs/en/chapters/architecture/modules.adoc |  22 +-
 .../src/docs/en/chapters/deployment/index.adoc     |   2 +
 .../docs/en/chapters/deployment/instance-type.adoc | 177 +++++
 .../en/chapters/release/configuration-email.adoc   |  18 +-
 .../en/chapters/release/configuration-gpg.adoc     |   8 +-
 .../docs/en/chapters/release/process-step03.adoc   |  10 +-
 .../src/docs/en/chapters/security/oauth.adoc       |  24 +-
 .../src/docs/en/images/batch-jobs-chunking.png     | Bin 0 -> 52999 bytes
 .../en/images/batch-jobs-remote-partitioning.png   | Bin 0 -> 46876 bytes
 .../docs/en/images/batch-jobs-state-management.png | Bin 0 -> 108358 bytes
 fineract-doc/src/docs/en/images/business_date.png  | Bin 0 -> 98637 bytes
 fineract-provider/build.gradle                     |  21 +-
 fineract-provider/dependencies.gradle              |   8 +-
 .../AccrualAccountingDataValidator.java            |   2 +-
 .../AccrualAccountingWritePlatformServiceImpl.java |   4 +-
 .../accounting/closure/data/GLClosureData.java     |   8 +-
 .../accounting/closure/domain/GLClosure.java       |  28 +-
 .../exception/GLClosureInvalidDeleteException.java |   4 +-
 .../exception/GLClosureInvalidException.java       |   4 +-
 ...osureWritePlatformServiceJpaRepositoryImpl.java |  16 +-
 .../accounting/common/AccountingConstants.java     |  41 +-
 .../data/FinancialActivityAccountData.java         |   7 +-
 .../data/FinancialActivityData.java                |   6 +-
 .../domain/FinancialActivityAccount.java           |  24 +-
 .../api/GLAccountsApiResourceSwagger.java          |   2 +-
 .../accounting/glaccount/domain/TrialBalance.java  |  22 +-
 .../UpdateTrialBalanceDetailsConfig.java           |  60 ++
 .../UpdateTrialBalanceDetailsTasklet.java          | 100 +++
 .../AccountRunningBalanceUpdateConfig.java         |  58 ++
 .../AccountRunningBalanceUpdateTasklet.java        |  40 ++
 .../accounting/journalentry/api/DateParam.java     |   7 +-
 .../api/JournalEntriesApiResource.java             |   6 +-
 .../journalentry/data/ClientTransactionDTO.java    |   4 +-
 .../journalentry/data/LoanTransactionDTO.java      |   4 +-
 .../journalentry/data/SavingsTransactionDTO.java   |   4 +-
 .../journalentry/data/SharesTransactionDTO.java    |   4 +-
 .../journalentry/domain/JournalEntry.java          |  15 +-
 .../exception/JournalEntryInvalidException.java    |   4 +-
 .../service/AccountingProcessorHelper.java         | 120 ++--
 .../AccrualBasedAccountingProcessorForLoan.java    |  20 +-
 ...edAccountingProcessorForClientTransactions.java |   6 +-
 .../CashBasedAccountingProcessorForLoan.java       |  30 +-
 .../CashBasedAccountingProcessorForSavings.java    |   4 +-
 .../CashBasedAccountingProcessorForShares.java     |  10 +-
 .../service/JournalEntryReadPlatformService.java   |   6 +-
 .../JournalEntryReadPlatformServiceImpl.java       |  17 +-
 ...ournalEntryRunningBalanceUpdateServiceImpl.java |  25 +-
 .../service/JournalEntryWritePlatformService.java  |   6 +-
 ...EntryWritePlatformServiceJpaRepositoryImpl.java |  42 +-
 .../LoanProductToGLAccountMappingHelper.java       |  50 +-
 .../service/ProductToGLAccountMappingHelper.java   |  33 +-
 ...tToGLAccountMappingReadPlatformServiceImpl.java |   4 +
 ...ToGLAccountMappingWritePlatformServiceImpl.java |  17 +-
 .../provisioning/data/ProvisioningEntryData.java   |  10 +-
 .../provisioning/domain/ProvisioningEntry.java     |  14 +-
 .../domain/ProvisioningEntryRepository.java        |   4 +-
 .../ProvisioningEntryAlreadyCreatedException.java  |   4 +-
 ...ningJournalEntriesCannotbeCreatedException.java |   4 +-
 ...visioningEntriesDefinitionJsonDeserializer.java |   2 +-
 .../ProvisioningEntriesReadPlatformService.java    |   4 +-
 ...ProvisioningEntriesReadPlatformServiceImpl.java |  29 +-
 .../ProvisioningEntriesWritePlatformService.java   |   6 +-
 ...triesWritePlatformServiceJpaRepositoryImpl.java |  64 +-
 .../AccountingRuleInvalidDeleteException.java      |   4 +-
 .../exception/AccountingRuleInvalidException.java  |   4 +-
 .../AccountingRuleReadPlatformServiceImpl.java     |   2 +-
 .../fineract/adhocquery/api/AdHocApiResource.java  |  28 +-
 .../service/AdHocReadPlatformServiceImpl.java      |   7 +-
 .../service/AdHocScheduledJobRunnerService.java    |  24 -
 .../AdHocScheduledJobRunnerServiceImpl.java        | 118 ----
 ...AdHocWritePlatformServiceJpaRepositoryImpl.java |  33 +-
 .../fineract/batch/api/BatchApiResource.java       |   5 +-
 .../batch/command/CommandStrategyProvider.java     |  17 +-
 .../batch/command/CommandStrategyUtils.java        |  64 ++
 .../internal/ActivateClientCommandStrategy.java    |  29 +-
 .../command/internal/ApplyLoanCommandStrategy.java |  27 +-
 .../internal/ApplySavingsCommandStrategy.java      |  31 +-
 .../internal/ApproveLoanCommandStrategy.java       |  29 +-
 .../ApproveLoanRescheduleCommandStrategy.java      |  31 +-
 .../internal/CollectChargesCommandStrategy.java    |  31 +-
 .../internal/CreateChargeCommandStrategy.java      |  31 +-
 .../internal/CreateClientCommandStrategy.java      |  29 +-
 ...CreateLoanRescheduleRequestCommandStrategy.java |  65 ++
 .../CreateTransactionLoanCommandStrategy.java      |  87 +++
 .../internal/DisburseLoanCommandStrategy.java      |  29 +-
 ...tDatatableEntryByAppTableIdCommandStrategy.java |  93 +++
 .../internal/GetLoanByIdCommandStrategy.java       | 142 ++++
 .../GetTransactionByIdCommandStrategy.java         |  99 +++
 .../command/internal/RepayLoanCommandStrategy.java |  84 ---
 .../internal/UpdateClientCommandStrategy.java      |  29 +-
 .../batch/service/BatchApiServiceImpl.java         |  31 +-
 .../org/apache/fineract/cob/COBBusinessStep.java   |  30 +
 .../ApplyChargeToOverdueLoansBusinessStep.java     |  66 ++
 .../fineract/cob/loan/LoanCOBBusinessStep.java     |  26 +
 .../fineract/commands/domain/CommandSource.java    |  16 +-
 .../commands/provider/CommandHandlerProvider.java  |   2 +-
 .../service/AuditReadPlatformServiceImpl.java      |  12 +-
 .../commands/service/CommandWrapperBuilder.java    |   7 +
 .../SynchronousCommandProcessingService.java       |   9 +-
 .../infrastructure/DataIntegrityErrorHandler.java  |  48 ++
 .../auditing/CustomAuditingHandler.java            |  94 +++
 .../bulkimport/data/BulkImportEvent.java           |  24 +-
 .../bulkimport/domain/ImportDocument.java          |  15 +-
 .../ChartOfAccountsImportHandler.java              |   7 +-
 .../client/ClientEntityImportHandler.java          |   6 +
 .../client/ClientPersonImportHandler.java          |   6 +
 .../populator/AbstractWorkbookPopulator.java       |  48 +-
 .../populator/SharedProductsSheetPopulator.java    |   8 +-
 .../LoanRepaymentWorkbookPopulator.java            |  18 +-
 .../service/BulkImportEventListener.java           |   6 +-
 .../BulkImportWorkbookPopulatorServiceImpl.java    |   2 +-
 .../service/BulkImportWorkbookServiceImpl.java     |   4 +-
 .../businessdate/api/BusinessDateApiResource.java  | 107 +++
 .../api/BusinessDateApiResourceSwagger.java        |  61 ++
 .../businessdate/data/BusinessDateData.java        |  45 ++
 .../businessdate/domain/BusinessDate.java          |  64 ++
 .../domain/BusinessDateRepository.java             |  28 +
 .../businessdate/domain/BusinessDateType.java      |  37 +
 .../exception/BusinessDateActionException.java     |  31 +
 .../exception/BusinessDateNotFoundException.java   |  41 ++
 .../handler/BusinessDateUpdateHandler.java         |  43 ++
 .../businessdate/mapper/BusinessDateMapper.java    |  35 +
 .../service/BusinessDateReadPlatformService.java   |  34 +
 .../BusinessDateReadPlatformServiceImpl.java       |  85 +++
 .../service/BusinessDateWritePlatformService.java  |  36 +
 .../BusinessDateWritePlatformServiceImpl.java      | 146 ++++
 .../BusinessDateDataParserAndValidator.java        | 107 +++
 .../campaigns/email/api/EmailApiResource.java      |  80 +--
 .../email/api/EmailCampaignApiResource.java        |  94 +--
 .../campaigns/email/domain/EmailCampaign.java      |  78 +--
 .../campaigns/email/domain/EmailMessage.java       |  12 +-
 .../service/EmailCampaignDomainServiceImpl.java    |  95 +--
 ...ailCampaignWritePlatformCommandHandlerImpl.java | 397 +----------
 .../service/EmailCampaignWritePlatformService.java |   9 +-
 .../email/service/EmailReadPlatformService.java    |   4 +-
 .../service/EmailReadPlatformServiceImpl.java      |  12 +-
 .../campaigns/jobs/TenantDateTimeUtil.java         |  41 ++
 .../jobs/executeemail/ExecuteEmailConfig.java      |  75 ++
 .../jobs/executeemail/ExecuteEmailTasklet.java     | 229 +++++++
 .../ExecuteReportMailingJobsConfig.java            |  74 ++
 .../ExecuteReportMailingJobsTasklet.java           | 245 +++++++
 .../GetDeliveryReportsFromSmsGatewayConfig.java    |  63 ++
 .../GetDeliveryReportsFromSmsGatewayTasklet.java   | 112 +++
 .../SendMessageToSmsGatewayConfig.java             |  63 ++
 .../SendMessageToSmsGatewayTasklet.java            | 154 +++++
 .../EmailParamMappingException.java                |  26 +
 ...dateEmailOutboundWithCampaignMessageConfig.java |  71 ++
 ...ateEmailOutboundWithCampaignMessageTasklet.java | 150 ++++
 ...UpdateSmsOutboundWithCampaignMessageConfig.java |  62 ++
 ...pdateSmsOutboundWithCampaignMessageTasklet.java |  83 +++
 .../campaigns/sms/api/SmsCampaignApiResource.java  | 118 ++--
 .../campaigns/sms/domain/SmsCampaign.java          |  78 +--
 .../sms/service/SmsCampaignDomainServiceImpl.java  | 178 ++---
 .../service/SmsCampaignWritePlatformService.java   |   5 +-
 .../SmsCampaignWritePlatformServiceJpaImpl.java    | 210 +-----
 .../codes/api/CodeValuesApiResourceSwagger.java    |   2 +
 .../api/GlobalConfigurationApiResource.java        |   3 +-
 .../data/GlobalConfigurationPropertyData.java      |  10 +-
 .../domain/ConfigurationDomainService.java         |   8 +-
 .../domain/ConfigurationDomainServiceJpa.java      |  24 +-
 .../domain/GlobalConfigurationProperty.java        |  10 +-
 .../ConfigurationReadPlatformServiceImpl.java      |   6 +-
 .../core/api/ApiParameterHelper.java               |  28 +-
 .../infrastructure/core/api/JsonCommand.java       |  67 +-
 .../core/api/LocalDateTimeAdapter.java             |  51 ++
 .../infrastructure/core/api/MutableUriInfo.java    | 147 ++++
 .../core/api/OffsetDateTimeAdapter.java            |  43 ++
 .../core/auditing/CustomDateTimeProvider.java      |  53 ++
 .../core/auditing/JpaAuditingHandlerRegistrar.java |  34 +
 .../EnableFineractEventListenerCondition.java      |  43 ++
 .../core/config/EnableFineractEventsCondition.java |  42 ++
 .../core/config/FineractProperties.java            |  15 +-
 .../infrastructure/core/config/JPAConfig.java      |  16 +-
 .../infrastructure/core/config/SecurityConfig.java |  12 +-
 .../core/data/ApiGlobalErrorResponse.java          |  23 +-
 .../core/data/ApiParameterError.java               |  13 +-
 .../core/data/CommandProcessingResult.java         |  10 +-
 .../core/data/DataValidatorBuilder.java            | 186 ++---
 .../core/domain/AbstractAuditableCustom.java       |  51 +-
 .../AbstractAuditableWithUTCDateTimeCustom.java    | 108 +++
 .../infrastructure/core/domain/ActionContext.java  |  34 +
 .../core/domain/AuditableFieldsConstants.java      |  34 +
 .../core/domain/AuditorAwareImpl.java              |  18 +-
 .../infrastructure/core/domain/ContextHolder.java  |  24 +
 .../core/domain/FineractContext.java               |  37 +
 .../infrastructure/core/domain/FineractEvent.java  |  37 +
 .../core/domain/FineractPlatformTenant.java        |   4 +-
 .../domain/FineractPlatformTenantConnection.java   |  44 +-
 .../infrastructure/core/domain/JdbcSupport.java    |  33 +-
 .../PlatformApiDataValidationException.java        |   5 +
 .../AccessDeniedExceptionMapper.java               |   3 +
 .../BadCredentialsExceptionMapper.java             |   3 +
 .../InvalidJsonExceptionMapper.java                |   4 +-
 .../InvalidTenantIdentifierExceptionMapper.java    |  13 +-
 .../exceptionmapper/JsonSyntaxExceptionMapper.java |   4 +-
 .../MalformedJsonExceptionMapper.java              |   4 +-
 .../NoAuthorizationExceptionMapper.java            |   3 +
 .../exceptionmapper/OAuth2ExceptionEntryPoint.java |   4 +-
 .../PlatformApiDataValidationExceptionMapper.java  |   4 +-
 .../PlatformDataIntegrityExceptionMapper.java      |   4 +-
 .../PlatformDomainRuleExceptionMapper.java         |   4 +-
 .../PlatformInternalServerExceptionMapper.java     |   4 +-
 .../PlatformResourceNotFoundExceptionMapper.java   |   4 +-
 .../PlatformServiceUnavailableExceptionMapper.java |   3 +
 .../UnAuthenticatedUserExceptionMapper.java        |   3 +
 .../UnrecognizedQueryParamExceptionMapper.java     |   4 +-
 .../UnsupportedCommandExceptionMapper.java         |   4 +-
 .../UnsupportedParameterExceptionMapper.java       |   4 +-
 .../core/filters/CorrelationHeaderFilter.java      |  84 +++
 .../serialization/DefaultToApiJsonSerializer.java  |   2 +-
 .../core/serialization/FromJsonHelper.java         |  20 +-
 .../serialization/GoogleGsonSerializerHelper.java  |   6 +
 .../core/serialization/JsonParserHelper.java       | 119 +++-
 .../service/DataSourcePerTenantServiceFactory.java | 122 ++++
 .../infrastructure/core/service/DateUtils.java     |  88 +--
 .../core/service/HikariDataSourceFactory.java      |  31 +
 .../infrastructure/core/service/MDCWrapper.java    |  35 +
 .../core/service/RoutingDataSource.java            |   2 +
 .../core/service/ThreadLocalContextUtil.java       |  77 ++-
 .../TomcatJdbcDataSourcePerTenantService.java      |  44 +-
 .../database/DatabaseSpecificSQLGenerator.java     |  23 +-
 .../creditbureau/domain/CreditBureauToken.java     |  22 +-
 ...ureauConfigurationWritePlatformServiceImpl.java |   2 +-
 ...LoanProductMappingWritePlatformServiceImpl.java |   6 +-
 .../CreditReportWritePlatformServiceImpl.java      |  35 +-
 ...ationCreditBureauWritePlatflormServiceImpl.java |   4 +-
 ...tBureauIntegrationWritePlatformServiceImpl.java |   9 +-
 .../dataqueries/api/DatatablesApiResource.java     |  15 +-
 .../api/DatatablesApiResourceSwagger.java          |  58 +-
 .../data/ResultsetColumnHeaderData.java            |  10 +-
 .../CreateDatatableEntryCommandHandler.java        |  14 +-
 .../service/GenericDataServiceImpl.java            |  22 +-
 .../service/ReadReportingServiceImpl.java          |  54 +-
 .../service/ReadWriteNonCoreDataServiceImpl.java   | 133 ++--
 .../documentmanagement/api/ImagesApiResource.java  |  15 +-
 .../ContentRepositoryFactory.java                  |  10 +-
 .../contentrepository/S3ContentRepository.java     |  21 +-
 .../documentmanagement/data/ImageResizer.java      |   2 +-
 .../data/FineractEntityToEntityMappingData.java    |  12 +-
 .../domain/FineractEntityToEntityMapping.java      |  26 +-
 .../FineractEntityAccessReadServiceImpl.java       |  13 +-
 .../service/FineractEntityAccessUtil.java          |   6 +-
 .../FineractEntityAccessWriteServiceImpl.java      |   8 +-
 .../gcm/domain/DeviceRegistration.java             |  13 +-
 .../gcm/domain/DeviceRegistrationData.java         |   9 +-
 .../DeviceRegistrationReadPlatformServiceImpl.java |   9 +-
 ...DeviceRegistrationWritePlatformServiceImpl.java |   4 +-
 .../gcm/service/NotificationSenderService.java     |  48 +-
 .../infrastructure/hooks/api/HookApiConstants.java |   8 +-
 .../infrastructure/hooks/api/HookApiResource.java  |  16 +-
 .../fineract/infrastructure/hooks/data/Entity.java |  16 +-
 .../fineract/infrastructure/hooks/data/Event.java  |  19 +-
 .../hooks/data/EventResultSetExtractor.java        |  21 +-
 .../fineract/infrastructure/hooks/data/Field.java  |  31 +-
 .../infrastructure/hooks/data/Grouping.java        |  16 +-
 .../infrastructure/hooks/data/HookData.java        |  48 +-
 .../hooks/data/HookTemplateData.java               |  13 +-
 .../fineract/infrastructure/hooks/domain/Hook.java |   4 +-
 .../infrastructure/hooks/event/HookEvent.java      |  40 +-
 .../hooks/event/HookEventSource.java               |  20 +-
 .../hooks/handler/CreateHookCommandHandler.java    |   9 +-
 .../hooks/handler/DeleteHookCommandHandler.java    |  10 +-
 .../hooks/handler/UpdateHookCommandHandler.java    |  10 +-
 .../hooks/listener/FineractHookListener.java       |  36 +-
 .../processor/ElasticSearchHookProcessor.java      |  22 +-
 .../hooks/processor/HookProcessor.java             |   5 +-
 .../processor/MessageGatewayHookProcessor.java     |  32 +-
 .../hooks/processor/TwilioHookProcessor.java       |  32 +-
 .../hooks/processor/WebHookProcessor.java          |  24 +-
 .../HookCommandFromApiJsonDeserializer.java        |   8 +-
 .../hooks/service/HookReadPlatformServiceImpl.java |  56 +-
 .../HookWritePlatformServiceJpaRepositoryImpl.java |  17 +-
 .../api/FineractInstanceModeConstants.java         |  31 +
 .../instancemode/api/InstanceModeApiResource.java  |  78 +++
 .../api/InstanceModeApiResourceSwagger.java        |  41 ++
 .../filter/FineractInstanceModeApiFilter.java      | 119 ++++
 .../jobs/ScheduledJobRunnerConfig.java             |  89 +++
 .../jobs/annotation/CronMethodParser.java          | 104 ---
 .../infrastructure/jobs/annotation/CronTarget.java |  35 -
 .../jobs/api/SchedulerJobApiResource.java          |  51 +-
 .../infrastructure/jobs/data/JobDetailData.java    |   3 +-
 .../infrastructure/jobs/service/JobName.java       |  68 +-
 .../jobs/service/JobRegisterService.java           |   4 +
 .../jobs/service/JobRegisterServiceImpl.java       | 142 +---
 .../jobs/service/JobSchedulerServiceImpl.java      |  69 ++
 .../infrastructure/jobs/service/JobStarter.java    |  64 ++
 .../jobs/service/SchedulerJobListener.java         |  23 +-
 .../service/SchedulerJobRunnerReadService.java     |   2 +
 .../service/SchedulerJobRunnerReadServiceImpl.java |  17 +-
 .../jobs/service/SchedulerTriggerListener.java     |  19 +-
 .../ExecuteAllDirtyJobsConfig.java                 |  50 ++
 .../ExecuteAllDirtyJobsTasklet.java                |  52 ++
 .../IncreaseDateBy1DayService.java                 |  26 +
 .../IncreaseDateBy1DayServiceImpl.java             |  67 ++
 .../IncreaseBusinessDateBy1DayConfig.java          |  57 ++
 .../IncreaseBusinessDateBy1DayTasklet.java         |  41 ++
 .../IncreaseCobDateBy1DayConfig.java               |  57 ++
 .../IncreaseCobDateBy1DayTasklet.java              |  41 ++
 .../jobs/service/updatenpa/UpdateNpaConfig.java    |  67 ++
 .../jobs/service/updatenpa/UpdateNpaTasklet.java   |  90 +++
 .../reportmailingjob/domain/ReportMailingJob.java  |  50 +-
 .../domain/ReportMailingJobRunHistory.java         |  34 +-
 .../ReportMailingJobWritePlatformService.java      |   3 -
 .../ReportMailingJobWritePlatformServiceImpl.java  | 300 +-------
 .../util/ReportMailingJobDateUtil.java             |  49 +-
 .../security/constants/TenantConstants.java        |  33 +
 .../security/domain/TFAccessToken.java             |  26 +-
 .../InvalidInstanceTypeMethodException.java        |  33 +
 .../exception/InvalidTenantIdentiferException.java |  37 -
 .../InvalidTenantIdentifierException.java          |  37 +
 .../TenantAwareBasicAuthenticationFilter.java      |  16 +-
 .../filter/TenantAwareTenantIdentifierFilter.java  |  44 +-
 .../service/BasicAuthTenantDetailsServiceJdbc.java |  94 +--
 .../security/service/JdbcTenantDetailsService.java |  91 +--
 .../SpringSecurityPlatformSecurityContext.java     |  13 +-
 .../security/service/TenantMapper.java             | 124 ++++
 .../security/utils/LogParameterEscapeUtil.java     |  32 +
 .../infrastructure/sms/api/SmsApiResource.java     |  30 +-
 .../infrastructure/sms/domain/SmsMessage.java      |  20 +-
 .../scheduler/SmsMessageScheduledJobService.java   |  10 -
 .../SmsMessageScheduledJobServiceImpl.java         | 231 +------
 .../sms/service/SmsReadPlatformService.java        |   5 +-
 .../sms/service/SmsReadPlatformServiceImpl.java    |  16 +-
 .../survey/service/ReadSurveyServiceImpl.java      |  11 +-
 .../interoperation/data/InteropRequestData.java    |  12 +-
 .../interoperation/domain/InteropIdentifier.java   |  20 +-
 .../interoperation/service/InteropServiceImpl.java |  28 +-
 .../notification/api/NotificationApiResource.java  |  33 +-
 .../api/NotificationApiResourceSwagger.java        |  68 ++
 .../config/MessagingConfiguration.java             |   8 +-
 .../notification/data/NotificationData.java        | 104 +--
 .../fineract/notification/data/TopicData.java      |  74 --
 .../notification/data/TopicSubscriberData.java     |  61 --
 .../fineract/notification/domain/Notification.java |   5 +-
 .../notification/domain/NotificationMapper.java    |   5 +-
 .../apache/fineract/notification/domain/Topic.java | 121 ----
 .../notification/domain/TopicRepository.java       |  30 -
 .../notification/domain/TopicSubscriber.java       |  77 ---
 .../domain/TopicSubscriberRepository.java          |  29 -
 .../ActiveMQNotificationEventListener.java         |  48 ++
 .../ActiveMQNotificationEventPublisher.java        |  44 ++
 .../eventandlistener/NotificationEvent.java        |  39 ++
 .../NotificationEventListener.java                 |  67 +-
 .../NotificationEventPublisher.java                |  26 +
 .../eventandlistener/NotificationEventService.java |  50 --
 .../notification/eventandlistener/SpringEvent.java |  38 --
 .../eventandlistener/SpringEventListener.java      |  84 ---
 .../eventandlistener/SpringEventPublisher.java     |  36 -
 .../SpringNotificationEventListener.java           |  44 ++
 .../SpringNotificationEventPublisher.java          |  44 ++
 .../exception/TopicNotFoundException.java          |  37 -
 .../service/NotificationDomainServiceImpl.java     | 447 +++++-------
 ...ificationGeneratorWritePlatformServiceImpl.java |   8 +-
 .../NotificationReadPlatformServiceImpl.java       |  25 +-
 .../service/NotificationWritePlatformService.java  |   4 +-
 .../NotificationWritePlatformServiceImpl.java      |  42 +-
 .../notification/service/TopicDomainService.java   |  44 --
 .../service/TopicDomainServiceImpl.java            | 248 -------
 .../service/TopicReadPlatformService.java          |  32 -
 .../service/TopicReadPlatformServiceImpl.java      |  96 ---
 .../TopicSubscriberReadPlatformService.java        |  28 -
 .../TopicSubscriberReadPlatformServiceImpl.java    |  77 ---
 .../TopicSubscriberWritePlatformService.java       |  27 -
 ...riberWritePlatformServiceJpaRepositoryImpl.java |  42 --
 .../service/TopicWritePlatformService.java         |  27 -
 ...TopicWritePlatformServiceJpaRepositoryImpl.java |  42 --
 .../holiday/api/HolidaysApiResource.java           |   6 +-
 .../organisation/holiday/domain/Holiday.java       |  47 +-
 .../holiday/domain/HolidayRepository.java          |   4 +-
 .../holiday/domain/HolidayRepositoryWrapper.java   |   7 +-
 .../service/HolidayReadPlatformService.java        |   4 +-
 .../service/HolidayReadPlatformServiceImpl.java    |  10 +-
 .../monetary/api/CurrenciesApiResourceSwagger.java |   4 +-
 .../organisation/office/domain/Office.java         |  19 +-
 .../office/domain/OfficeTransaction.java           |   9 +-
 ...fficeWritePlatformServiceJpaRepositoryImpl.java |  32 +-
 .../provisioning/domain/ProvisioningCriteria.java  |  15 +-
 .../service/ProvisioningCriteriaAssembler.java     |   4 +-
 .../fineract/organisation/staff/domain/Staff.java  |  14 +-
 .../teller/api/CashierApiResource.java             |   6 +-
 .../organisation/teller/api/TellerApiResource.java |  16 +-
 .../teller/api/TellerApiResourceSwagger.java       |  18 +-
 .../organisation/teller/data/CashierData.java      |  14 +-
 .../teller/data/CashierTransactionData.java        |  31 +-
 .../data/CashierTransactionDataValidator.java      |   9 +-
 .../teller/data/TellerJournalData.java             |  10 +-
 .../teller/data/TellerTransactionData.java         |  10 +-
 .../organisation/teller/domain/Cashier.java        |  49 +-
 .../teller/domain/CashierTransaction.java          |  28 +-
 .../organisation/teller/domain/Teller.java         |  51 +-
 .../teller/domain/TellerTransaction.java           |  11 +-
 .../TellerManagementReadPlatformService.java       |  22 +-
 .../TellerManagementReadPlatformServiceImpl.java   |  42 +-
 .../organisation/teller/util/DateRange.java        |  44 +-
 .../api/StandingInstructionApiResource.java        |   6 +-
 .../api/StandingInstructionHistoryApiResource.java |   6 +-
 .../account/data/StandingInstructionDTO.java       |  14 +-
 .../domain/AccountTransferStandingInstruction.java |  40 +-
 .../account/domain/AccountTransferTransaction.java |   9 +-
 .../CreateAccountTransferCommandHandler.java       |   8 +-
 .../handler/RefundByTransferCommandHandler.java    |   8 +-
 .../ExecuteStandingInstructionsConfig.java         |  67 ++
 .../ExecuteStandingInstructionsTasklet.java        | 166 +++++
 .../AccountTransfersReadPlatformService.java       |   3 +-
 .../AccountTransfersReadPlatformServiceImpl.java   |   7 +-
 .../AccountTransfersWritePlatformServiceImpl.java  |   2 +-
 .../PortfolioAccountReadPlatformServiceImpl.java   |  10 +-
 ...gInstructionHistoryReadPlatformServiceImpl.java |   9 +-
 ...StandingInstructionReadPlatformServiceImpl.java |  11 +-
 .../StandingInstructionWritePlatformService.java   |   3 -
 ...tandingInstructionWritePlatformServiceImpl.java | 167 +----
 ...etailsReadPlatformServiceJpaRepositoryImpl.java |   6 +-
 .../portfolio/address/data/AddressData.java        |  21 +-
 .../fineract/portfolio/address/domain/Address.java |  18 +-
 .../service/AddressReadPlatformServiceImpl.java    |  16 +-
 .../service/AddressWritePlatformServiceImpl.java   |  14 +-
 .../businessevent/BusinessEventListener.java       |  35 +
 .../domain/AbstractBusinessEvent.java              |  32 +
 .../businessevent/domain/BusinessEvent.java        |  24 +
 .../domain/client/ClientActivateBusinessEvent.java |  28 +
 .../domain/client/ClientBusinessEvent.java         |  29 +
 .../domain/client/ClientCreateBusinessEvent.java   |  28 +
 .../domain/client/ClientRejectBusinessEvent.java   |  28 +
 .../deposit/FixedDepositAccountBusinessEvent.java  |  29 +
 .../FixedDepositAccountCreateBusinessEvent.java    |  28 +
 .../RecurringDepositAccountBusinessEvent.java      |  29 +
 ...RecurringDepositAccountCreateBusinessEvent.java |  28 +
 .../domain/group/CentersCreateBusinessEvent.java   |  28 +
 .../domain/group/GroupsBusinessEvent.java          |  29 +
 .../domain/group/GroupsCreateBusinessEvent.java    |  28 +
 .../loan/LoanAcceptTransferBusinessEvent.java      |  28 +
 .../loan/LoanAdjustTransactionBusinessEvent.java   |  41 ++
 .../loan/LoanApplyOverdueChargeBusinessEvent.java  |  28 +
 .../domain/loan/LoanApprovedBusinessEvent.java     |  28 +
 .../domain/loan/LoanBusinessEvent.java             |  29 +
 .../loan/LoanCloseAsRescheduleBusinessEvent.java   |  28 +
 .../domain/loan/LoanCloseBusinessEvent.java        |  28 +
 .../domain/loan/LoanCreatedBusinessEvent.java      |  28 +
 .../domain/loan/LoanDisbursalBusinessEvent.java    |  28 +
 .../loan/LoanInitiateTransferBusinessEvent.java    |  28 +
 .../LoanInterestRecalculationBusinessEvent.java    |  28 +
 .../loan/LoanReassignOfficerBusinessEvent.java     |  28 +
 .../loan/LoanRejectTransferBusinessEvent.java      |  28 +
 .../domain/loan/LoanRejectedBusinessEvent.java     |  28 +
 .../loan/LoanRemoveOfficerBusinessEvent.java       |  28 +
 .../domain/loan/LoanUndoApprovalBusinessEvent.java |  28 +
 .../loan/LoanUndoDisbursalBusinessEvent.java       |  28 +
 .../loan/LoanUndoLastDisbursalBusinessEvent.java   |  28 +
 .../loan/LoanWithdrawTransferBusinessEvent.java    |  28 +
 .../loan/charge/LoanAddChargeBusinessEvent.java    |  28 +
 .../loan/charge/LoanChargeBusinessEvent.java       |  29 +
 .../loan/charge/LoanDeleteChargeBusinessEvent.java |  28 +
 .../loan/charge/LoanUpdateChargeBusinessEvent.java |  28 +
 .../loan/charge/LoanWaiveChargeBusinessEvent.java  |  28 +
 .../charge/LoanWaiveChargeUndoBusinessEvent.java   |  28 +
 .../loan/product/LoanProductBusinessEvent.java     |  29 +
 .../product/LoanProductCreateBusinessEvent.java    |  28 +
 .../LoanChargePaymentPostBusinessEvent.java        |  28 +
 .../LoanChargePaymentPreBusinessEvent.java         |  29 +
 .../LoanCreditBalanceRefundPostBusinessEvent.java  |  28 +
 .../LoanCreditBalanceRefundPreBusinessEvent.java   |  29 +
 .../LoanForeClosurePostBusinessEvent.java          |  28 +
 .../LoanForeClosurePreBusinessEvent.java           |  29 +
 .../transaction/LoanRefundPostBusinessEvent.java   |  28 +
 .../transaction/LoanRefundPreBusinessEvent.java    |  29 +
 .../transaction/LoanTransactionBusinessEvent.java  |  29 +
 ...TransactionGoodwillCreditPostBusinessEvent.java |  28 +
 ...nTransactionGoodwillCreditPreBusinessEvent.java |  29 +
 ...nTransactionMakeRepaymentPostBusinessEvent.java |  28 +
 ...anTransactionMakeRepaymentPreBusinessEvent.java |  29 +
 ...ctionMerchantIssuedRefundPostBusinessEvent.java |  28 +
 ...actionMerchantIssuedRefundPreBusinessEvent.java |  29 +
 ...anTransactionPayoutRefundPostBusinessEvent.java |  28 +
 ...oanTransactionPayoutRefundPreBusinessEvent.java |  29 +
 ...ransactionRecoveryPaymentPostBusinessEvent.java |  28 +
 ...TransactionRecoveryPaymentPreBusinessEvent.java |  29 +
 .../LoanUndoWrittenOffBusinessEvent.java           |  28 +
 .../LoanWaiveInterestBusinessEvent.java            |  28 +
 .../LoanWrittenOffPostBusinessEvent.java           |  28 +
 .../LoanWrittenOffPreBusinessEvent.java            |  29 +
 .../savings/SavingsAccountBusinessEvent.java       |  29 +
 .../savings/SavingsActivateBusinessEvent.java      |  28 +
 .../savings/SavingsApproveBusinessEvent.java       |  28 +
 .../domain/savings/SavingsCloseBusinessEvent.java  |  28 +
 .../domain/savings/SavingsCreateBusinessEvent.java |  28 +
 .../savings/SavingsPostInterestBusinessEvent.java  |  28 +
 .../domain/savings/SavingsRejectBusinessEvent.java |  28 +
 .../SavingsAccountTransactionBusinessEvent.java    |  29 +
 .../transaction/SavingsDepositBusinessEvent.java   |  28 +
 .../SavingsWithdrawalBusinessEvent.java            |  28 +
 .../share/ShareAccountApproveBusinessEvent.java    |  28 +
 .../domain/share/ShareAccountBusinessEvent.java    |  29 +
 .../share/ShareAccountCreateBusinessEvent.java     |  28 +
 .../ShareProductDividentsCreateBusinessEvent.java  |  28 +
 .../service/BusinessEventNotifierService.java      |  50 ++
 .../service/BusinessEventNotifierServiceImpl.java  |  76 +++
 .../portfolio/calendar/domain/Calendar.java        |  77 +--
 .../portfolio/calendar/domain/CalendarHistory.java |  26 +-
 .../CalendarCommandFromApiJsonDeserializer.java    |  12 +-
 .../service/CalendarReadPlatformServiceImpl.java   |   4 +-
 .../portfolio/calendar/service/CalendarUtils.java  |  66 +-
 ...endarWritePlatformServiceJpaRepositoryImpl.java |   6 +-
 .../charge/api/ChargesApiResourceSwagger.java      |   4 +
 .../portfolio/client/api/ClientsApiResource.java   |   7 +-
 .../client/api/ClientsApiResourceSwagger.java      |   7 +-
 .../api/InternalClientInformationApiResource.java  |  88 +++
 .../portfolio/client/data/ClientDataValidator.java |   8 +-
 .../fineract/portfolio/client/domain/Client.java   | 171 ++---
 .../portfolio/client/domain/ClientCharge.java      |  23 +-
 .../client/domain/ClientFamilyMembers.java         |  15 +-
 .../portfolio/client/domain/ClientNonPerson.java   |  25 +-
 .../portfolio/client/domain/ClientTransaction.java |  58 +-
 .../client/domain/ClientTransferDetails.java       |  16 +-
 ...FamilyMemberCommandFromApiJsonDeserializer.java |   7 +-
 .../ClientAddressReadPlatformServiceImpl.java      |   2 +-
 .../ClientChargeReadPlatformServiceImpl.java       |   7 +-
 ...hargeWritePlatformServiceJpaRepositoryImpl.java |  21 +-
 ...ClientFamilyMembersReadPlatformServiceImpl.java |   4 +-
 ...lientFamilyMembersWritePlatformServiceImpl.java |  95 +--
 .../ClientIdentifierReadPlatformServiceImpl.java   |   4 +-
 .../client/service/ClientReadPlatformService.java  |   4 +-
 .../service/ClientReadPlatformServiceImpl.java     |  25 +-
 .../ClientTransactionReadPlatformServiceImpl.java  |   8 +-
 ...lientWritePlatformServiceJpaRepositoryImpl.java |  59 +-
 .../data/LoanTransactionData.java                  |   8 +-
 .../CollectionSheetTransactionDataValidator.java   |   2 +-
 .../CollectionSheetReadPlatformServiceImpl.java    |  14 +-
 .../common/BusinessEventNotificationConstants.java | 132 ----
 .../common/service/BusinessEventListener.java      |  41 --
 .../service/BusinessEventNotifierService.java      |  51 --
 .../service/BusinessEventNotifierServiceImpl.java  | 103 ---
 .../floatingrates/data/FloatingRateData.java       |  14 +-
 .../floatingrates/data/FloatingRatePeriodData.java |  20 +-
 .../floatingrates/data/InterestRatePeriodData.java |  14 +-
 .../floatingrates/domain/FloatingRate.java         |  84 +--
 .../floatingrates/domain/FloatingRatePeriod.java   |  83 +--
 .../serialization/FloatingRateDataValidator.java   |   2 +-
 .../FloatingRateWritePlatformServiceImpl.java      |  14 +-
 .../FloatingRatesReadPlatformServiceImpl.java      |  38 +-
 .../portfolio/group/api/CentersApiResource.java    |   3 +-
 .../fineract/portfolio/group/domain/Group.java     |  48 +-
 .../portfolio/group/domain/GroupRepository.java    |   4 +-
 .../group/domain/GroupRepositoryWrapper.java       |   8 +-
 .../group/domain/StaffAssignmentHistory.java       |  21 +-
 .../group/service/CenterReadPlatformService.java   |   4 +-
 .../service/CenterReadPlatformServiceImpl.java     |  15 +-
 .../service/GroupReadPlatformServiceImpl.java      |   9 +-
 ...TypesWritePlatformServiceJpaRepositoryImpl.java |  74 +-
 .../domain/InterestRateChartFields.java            |  38 +-
 .../ClientAttributeIncentiveCalculation.java       |   8 +-
 .../api/InternalLoanInformationApiResource.java    | 111 +++
 .../loanaccount/api/LoanApiConstants.java          |   5 +
 .../api/LoanTransactionsApiResource.java           |  18 +-
 .../api/LoanTransactionsApiResourceSwagger.java    |  19 +-
 .../loanaccount/api/LoansApiResource.java          |  18 +-
 .../loanaccount/api/LoansApiResourceSwagger.java   | 755 ++++++++++++++++++---
 .../loanaccount/data/LoanScheduleAccrualData.java  |   6 +-
 .../portfolio/loanaccount/domain/Loan.java         | 659 +++++++++---------
 .../domain/LoanAccountDomainServiceJpa.java        | 199 +++---
 .../portfolio/loanaccount/domain/LoanCharge.java   |  28 +-
 .../domain/LoanDisbursementDetails.java            |  40 +-
 ...LoanInterestRecalcualtionAdditionalDetails.java |  12 +-
 .../domain/LoanOfficerAssignmentHistory.java       |  28 +-
 .../domain/LoanRepaymentScheduleInstallment.java   |  51 +-
 .../LoanRepaymentScheduleProcessingWrapper.java    |   2 +-
 .../loanaccount/domain/LoanRepository.java         |  10 +-
 .../loanaccount/domain/LoanRepositoryWrapper.java  |  12 +-
 .../loanaccount/domain/LoanTermVariations.java     |  42 +-
 .../loanaccount/domain/LoanTransaction.java        | 212 +++---
 .../guarantor/command/GuarantorCommand.java        |   6 +-
 .../loanaccount/guarantor/domain/Guarantor.java    |  19 +-
 .../service/GuarantorDomainServiceImpl.java        | 189 ++----
 .../service/GuarantorReadPlatformServiceImpl.java  |  14 +-
 ...ntorWritePlatformServiceJpaRepositoryIImpl.java |   5 +-
 .../handler/AddLoanChargeCommandHandler.java       |  25 +-
 .../handler/CreditBalanceRefundCommandHandler.java |  26 +-
 .../handler/DisburseLoanCommandHandler.java        |  12 +-
 .../GLIMApplicationRejectionCommandHandler.java    |   8 +-
 .../handler/GLIMBulkRepaymentCommandHandler.java   |   8 +-
 .../GLIMLoanApplicationApprovalCommandHandler.java |   8 +-
 .../GlimLoanApplicationDisburseCommandHandler.java |   8 +-
 .../LoanApplicationApprovalCommandHandler.java     |   8 +-
 .../LoanApplicationApprovalUndoCommandHandler.java |   8 +-
 .../LoanApplicationDeletionCommandHandler.java     |   8 +-
 .../LoanApplicationModificationCommandHandler.java |   8 +-
 .../LoanApplicationRejectedCommandHandler.java     |   8 +-
 .../LoanApplicationSubmittalCommandHandler.java    |   8 +-
 ...licationWithdrawnByApplicantCommandHandler.java |   8 +-
 .../handler/LoanGoodwilCreditCommandHandler.java   |  45 --
 .../handler/LoanGoodwillCreditCommandHandler.java  |  55 ++
 .../LoanMerchantIssuedRefundCommandHandler.java    |  16 +-
 .../handler/LoanPayoutRefundCommandHandler.java    |  16 +-
 .../handler/LoanRecoveryPaymentCommandHandler.java |   8 +-
 .../handler/LoanRefundByCashCommandHandler.java    |   8 +-
 .../LoanRepaymentAdjustmentCommandHandler.java     |   8 +-
 .../handler/LoanRepaymentCommandHandler.java       |  15 +-
 .../LoanScheduleCreateVariationCommandHandler.java |   8 +-
 .../LoanScheduleDeleteVariationCommandHandler.java |   8 +-
 .../handler/PayLoanChargeCommandHandler.java       |   8 +-
 .../RecoverFromGuarantorCommandHandler.java        |   8 +-
 .../handler/RemoveLoanOfficerCommandHandler.java   |   8 +-
 .../handler/UndoDisbursalLoanCommandHandler.java   |   8 +-
 .../handler/UndoGLIMLoanApplicationApproval.java   |   8 +-
 .../UndoGLIMLoanDisbursalCommandHandler.java       |   8 +-
 .../UndoLastDisbursalLoanCommandHandler.java       |   8 +-
 .../handler/UndoLoanChargeWaiveCommandHandler.java |   8 +-
 .../handler/UndoWriteOffLoanCommandHandler.java    |   8 +-
 .../handler/UpdateLoanChargeCommandHandler.java    |   8 +-
 .../UpdateLoanDisbuseDateCommandHandler.java       |   8 +-
 .../handler/UpdateLoanOfficerCommandHandler.java   |   8 +-
 .../WaiveInterestPortionOnLoanCommandHandler.java  |   8 +-
 .../handler/WaiveLoanChargeCommandHandler.java     |   8 +-
 .../handler/WriteOffLoanCommandHandler.java        |   8 +-
 .../addaccrualentries/AddAccrualEntriesConfig.java |  50 ++
 .../AddAccrualEntriesTasklet.java                  |  74 ++
 .../AddPeriodicAccrualEntriesConfig.java           |  57 ++
 .../AddPeriodicAccrualEntriesTasklet.java          |  52 ++
 .../AddPeriodicAccrualEntriesForLoansConfig.java   |  62 ++
 .../AddPeriodicAccrualEntriesForLoansTasklet.java  |  61 ++
 .../ApplyChargeToOverdueLoanInstallmentConfig.java |  66 ++
 ...ApplyChargeToOverdueLoanInstallmentTasklet.java |  95 +++
 .../ApplyHolidaysToLoansConfig.java                |  67 ++
 .../ApplyHolidaysToLoansTasklet.java               |  83 +++
 .../GenerateLoanlossProvisioningConfig.java        |  60 ++
 .../GenerateLoanlossProvisioningTasklet.java       |  62 ++
 ...ovisioningCriteriaDefinitionFoundException.java |  21 +
 .../RecalculateInterestForLoanConfig.java          |  72 ++
 .../RecalculateInterestForLoanTasklet.java         | 228 +++++++
 .../TransferFeeChargeForLoansConfig.java           |  65 ++
 .../TransferFeeChargeForLoansTasklet.java          | 110 +++
 .../UpdateLoanArrearsAgeingConfig.java             |  64 ++
 .../UpdateLoanArrearsAgeingTasklet.java            | 130 ++++
 .../loanschedule/data/LoanSchedulePeriodData.java  |   6 +-
 .../domain/AbstractLoanScheduleGenerator.java      |  76 ++-
 .../domain/DefaultScheduledDateGenerator.java      |   2 +-
 .../loanschedule/domain/LoanApplicationTerms.java  |  35 +-
 .../domain/LoanRepaymentScheduleHistory.java       |  42 +-
 .../service/LoanScheduleAssembler.java             |  36 +-
 ...LoanScheduleCalculationPlatformServiceImpl.java |   2 +-
 ...LoanScheduleHistoryReadPlatformServiceImpl.java |   8 +-
 ...oanScheduleHistoryWritePlatformServiceImpl.java |  25 +-
 .../LoanScheduleWritePlatformServiceImpl.java      |   4 +-
 .../api/RescheduleLoansApiResource.java            |  24 +
 .../api/RescheduleLoansApiResourceSwagger.java     | 221 ++++++
 .../domain/LoanRescheduleRequest.java              |  66 +-
 .../LoanReschedulePreviewPlatformServiceImpl.java  |   5 +-
 ...anRescheduleRequestReadPlatformServiceImpl.java |  14 +-
 ...nRescheduleRequestWritePlatformServiceImpl.java |  52 +-
 .../service/BulkLoansReadPlatformServiceImpl.java  |   4 +-
 .../GLIMAccountInfoReadPlatformServiceImpl.java    |  12 +-
 .../service/LoanAccrualPlatformService.java        |   7 -
 .../service/LoanAccrualPlatformServiceImpl.java    |  99 +--
 .../LoanAccrualWritePlatformServiceImpl.java       | 243 +++----
 ...ationWritePlatformServiceJpaRepositoryImpl.java |  51 +-
 .../service/LoanArrearsAgingService.java           |  11 +-
 .../service/LoanArrearsAgingServiceImpl.java       | 372 +++++-----
 .../loanaccount/service/LoanAssembler.java         |  17 +-
 .../LoanChargePaidByReadPlatformServiceImpl.java   |   2 +-
 .../service/LoanChargeReadPlatformServiceImpl.java |  23 +-
 .../service/LoanReadPlatformService.java           |   3 +-
 .../service/LoanReadPlatformServiceImpl.java       | 289 ++++----
 .../loanaccount/service/LoanSchedularService.java  |  31 -
 .../service/LoanSchedularServiceImpl.java          | 312 ---------
 .../loanaccount/service/LoanUtilService.java       |  16 +-
 .../service/LoanWritePlatformService.java          |   5 -
 .../LoanWritePlatformServiceJpaRepositoryImpl.java | 541 +++++----------
 .../api/LoanProductsApiResourceSwagger.java        | 171 ++++-
 .../portfolio/loanproduct/domain/LoanProduct.java  |  46 +-
 .../service/ProductMixReadPlatformServiceImpl.java |   4 +-
 .../serialization/LoanProductDataValidator.java    |  12 +-
 .../LoanProductReadPlatformServiceImpl.java        |   4 +-
 ...oductWritePlatformServiceJpaRepositoryImpl.java |  32 +-
 .../portfolio/meeting/api/MeetingsApiResource.java |   2 +-
 .../fineract/portfolio/meeting/domain/Meeting.java |  36 +-
 .../meeting/domain/MeetingRepository.java          |   4 +-
 ...etingWritePlatformServiceJpaRepositoryImpl.java |  13 +-
 .../domain/PostDatedChecks.java                    |  11 +-
 .../api/SavingsAccountTransactionsApiResource.java |   8 +
 ...vingsAccountTransactionsApiResourceSwagger.java |   9 +
 .../savings/data/DepositProductDataValidator.java  |  24 +-
 .../portfolio/savings/data/SavingsAccountData.java |  23 +-
 .../savings/data/SavingsAccountSummaryData.java    |  44 +-
 .../savings/data/SavingsAccountTransactionDTO.java |  11 +-
 .../data/SavingsAccountTransactionData.java        |  46 +-
 .../SavingsAccountTransactionDataValidator.java    |  13 +-
 .../savings/domain/DepositAccountAssembler.java    |   5 +-
 .../domain/DepositAccountDomainServiceJpa.java     |   6 +-
 .../domain/DepositAccountOnHoldTransaction.java    |  21 +-
 .../domain/DepositAccountRecurringDetail.java      |   2 +-
 .../domain/DepositAccountTermAndPreClosure.java    |  38 +-
 .../savings/domain/FixedDepositAccount.java        |  53 +-
 .../savings/domain/RecurringDepositAccount.java    |  64 +-
 .../RecurringDepositScheduleInstallment.java       |  34 +-
 .../portfolio/savings/domain/SavingsAccount.java   | 417 ++++++------
 .../savings/domain/SavingsAccountAssembler.java    |  34 +-
 .../savings/domain/SavingsAccountCharge.java       |  45 +-
 .../domain/SavingsAccountChargeRepository.java     |   6 +-
 .../SavingsAccountChargeRepositoryWrapper.java     |   4 +-
 .../domain/SavingsAccountDomainService.java        |   3 +-
 .../domain/SavingsAccountDomainServiceJpa.java     | 113 +--
 .../domain/SavingsAccountRepositoryWrapper.java    |  11 +-
 .../savings/domain/SavingsAccountSummary.java      |  71 +-
 .../savings/domain/SavingsAccountTransaction.java  | 150 ++--
 .../SavingsAccountTransactionComparator.java       |   2 +-
 .../SavingsAccountTransactionRepository.java       |  13 +-
 .../SavingsAccountTransactionSummaryWrapper.java   |  47 +-
 .../portfolio/savings/domain/SavingsHelper.java    |   3 +-
 .../domain/SavingsOfficerAssignmentHistory.java    |  30 +-
 .../savings/domain/interest/PostingPeriod.java     |  11 +-
 ...rseTransactionSavingsAccountCommandHandler.java |   2 +-
 .../ApplyAnnualFeeForSavingsConfig.java            |  61 ++
 .../ApplyAnnualFeeForSavingsTasklet.java           |  65 ++
 .../GenerateAdhocClientScheduleConfig.java         |  60 ++
 .../GenerateAdhocClientScheduleTasklet.java        | 103 +++
 .../GenerateRdScheduleConfig.java                  |  59 ++
 .../GenerateRdScheduleTasklet.java                 | 100 +++
 .../PayDueSavingsChargesConfig.java                |  61 ++
 .../PayDueSavingsChargesTasklet.java               |  71 ++
 .../PostInterestForSavingConfig.java               |  74 ++
 .../PostInterestForSavingTasklet.java              | 236 +++++++
 .../TransferInterestToSavingsConfig.java           |  61 ++
 .../TransferInterestToSavingsTasklet.java          |  66 ++
 ...UpdateDepositsAccountMaturityDetailsConfig.java |  62 ++
 ...pdateDepositsAccountMaturityDetailsTasklet.java |  67 ++
 .../UpdateSavingsDormantAccountsConfig.java        |  50 ++
 .../UpdateSavingsDormantAccountsTasklet.java       |  68 ++
 .../DepositAccountReadPlatformServiceImpl.java     |   4 +-
 .../DepositAccountWritePlatformService.java        |   3 -
 ...countWritePlatformServiceJpaRepositoryImpl.java | 182 ++---
 ...ocessWritePlatformServiceJpaRepositoryImpl.java |  39 +-
 ...avingsAccountChargeReadPlatformServiceImpl.java |  14 +-
 .../SavingsAccountInterestPostingServiceImpl.java  |  60 +-
 .../SavingsAccountReadPlatformServiceImpl.java     |  37 +-
 .../SavingsAccountWritePlatformService.java        |   3 +-
 ...countWritePlatformServiceJpaRepositoryImpl.java | 154 +++--
 ...ocessWritePlatformServiceJpaRepositoryImpl.java |  93 +--
 .../service/SavingsSchedularInterestPoster.java    | 196 +++---
 .../savings/service/SavingsSchedularService.java   |  30 -
 .../service/SavingsSchedularServiceImpl.java       | 291 --------
 .../search/data/AdHocQueryDataValidator.java       |   4 +-
 .../service/SearchReadPlatformServiceImpl.java     |  20 +-
 .../self/loanaccount/api/SelfLoansApiResource.java |  11 +-
 .../api/SelfLoansApiResourceSwagger.java           | 150 ++--
 .../domain/SelfServiceRegistration.java            |  12 +-
 .../data/ShareAccountDividendData.java             |   6 +-
 .../shareaccounts/domain/ShareAccount.java         |  46 +-
 .../domain/ShareAccountTransaction.java            |  23 +-
 .../PostDividentsForSharesConfig.java              |  61 ++
 .../PostDividentsForSharesTasklet.java             |  79 +++
 .../serialization/ShareAccountDataSerializer.java  |  85 +--
 .../ShareAccountReadPlatformServiceImpl.java       |  11 +-
 .../service/ShareAccountSchedularServiceImpl.java  |   5 +-
 ...countWritePlatformServiceJpaRepositoryImpl.java |  30 +-
 .../data/ShareProductMarketPriceData.java          |   8 +-
 .../shareproducts/domain/ShareProduct.java         |  31 +-
 .../domain/ShareProductDividendPayOutDetails.java  |  20 +-
 .../domain/ShareProductMarketPrice.java            |  13 +-
 .../serialization/ShareProductDataSerializer.java  |  38 +-
 .../service/ShareProductDividendAssembler.java     |   5 +-
 .../ShareProductReadPlatformServiceImpl.java       |   6 +-
 ...oductWritePlatformServiceJpaRepositoryImpl.java |  47 +-
 .../portfolio/tax/domain/TaxComponent.java         |  25 +-
 .../portfolio/tax/domain/TaxComponentHistory.java  |  27 +-
 .../portfolio/tax/domain/TaxGroupMappings.java     |  44 +-
 .../portfolio/tax/serialization/TaxValidator.java  |   4 +-
 .../portfolio/tax/service/TaxAssembler.java        |   4 +-
 .../transfer/api/TransferApiConstants.java         |  12 +-
 ...nsferWritePlatformServiceJpaRepositoryImpl.java |  18 +-
 .../service/ScheduledJobRunnerService.java         |  44 --
 .../service/ScheduledJobRunnerServiceImpl.java     | 526 --------------
 .../apache/fineract/spm/data/ScorecardValue.java   |  13 +-
 .../org/apache/fineract/spm/data/SurveyData.java   |  16 +-
 .../org/apache/fineract/spm/domain/Scorecard.java  |  11 +-
 .../org/apache/fineract/spm/domain/Survey.java     |  18 +-
 .../fineract/spm/domain/SurveyRepository.java      |   6 +-
 .../service/ScorecardReadPlatformServiceImpl.java  |   9 +-
 .../apache/fineract/spm/service/SpmService.java    |  38 +-
 .../apache/fineract/spm/util/ScorecardMapper.java  |   4 +-
 .../template/domain/TemplateFunctions.java         |  11 +-
 .../api/UsersApiResourceSwagger.java               |   7 +-
 .../useradministration/domain/AppUser.java         |  50 +-
 .../domain/AppUserPreviousPassword.java            |   9 +-
 .../domain/AppUserRepository.java                  |   3 +
 ...pUserWritePlatformServiceJpaRepositoryImpl.java |  43 +-
 .../RoleWritePlatformServiceJpaRepositoryImpl.java |  33 +-
 .../src/main/resources/application.properties      |  14 +-
 .../tenant-store/changelog-tenant-store.xml        |   2 +
 .../parts/0004_readonly_database_connection.xml    |  45 ++
 .../parts/0005_jdbc_connection_string.xml          |  30 +
 .../db/changelog/tenant/changelog-tenant.xml       |  12 +
 .../changelog/tenant/parts/0013_remove_topics.xml  |  27 +
 .../tenant/parts/0014_remove_unused_jobs.xml       |  39 ++
 .../tenant/parts/0015_add_business_date.xml        | 123 ++++
 .../0016_changed_unique_constraint_of_ref_no.xml   |  31 +
 .../tenant/parts/0017_fix_stretchy_reports.xml     |  67 ++
 .../tenant/parts/0018_pentaho_reports_to_table.xml | 253 +++++++
 .../parts/0019_refactor_loan_transaction.xml       |  59 ++
 .../tenant/parts/0020_add_audit_entries.xml        | 141 ++++
 .../parts/0021_add_spring_batch_db_structure.xml   | 210 ++++++
 ...add_batch_business_step_configuration_table.xml |  48 ++
 .../0023_use_the_proper_date_or_datetime_type.xml  |  41 ++
 .../tenant/parts/0024_add_audit_entries.xml        | 241 +++++++
 .../src/main/resources/logback-spring.xml          |   1 +
 .../org/apache/fineract/TestConfiguration.java     |  56 +-
 .../test/java/org/apache/fineract/TestSuite.java   |   4 +-
 .../batch/command/CommandStrategyProviderTest.java | 145 ++++
 ...teLoanRescheduleRequestCommandStrategyTest.java | 113 +++
 .../CreateTransactionLoanCommandStrategyTest.java  | 119 ++++
 ...atableEntryByAppTableIdCommandStrategyTest.java | 160 +++++
 .../internal/GetLoanByIdCommandStrategyTest.java   | 144 ++++
 .../GetTransactionByIdCommandStrategyTest.java     | 126 ++++
 .../businessdate/api/BusinessDateApiTest.java      | 163 +++++
 .../businessdate/data/BusinessDataSerialized.java  |  63 ++
 .../businessdate/data/BusinessDataTypeTest.java    |  37 +
 .../mapper/BusinessDateMapperTest.java             |  56 ++
 .../BusinessDateReadPlatformServiceTest.java       |  96 +++
 .../BusinessDateWritePlatformServiceTest.java      | 272 ++++++++
 .../validator/BusinessDateValidatorTest.java       | 120 ++++
 .../DataSourcePerTenantServiceFactoryTest.java     | 235 +++++++
 .../core/InstanceTypeStepDefinitions.java          |   7 +-
 .../core/auditing/CustomDateTimeProviderTest.java  |  71 ++
 .../EnableFineractEventListenerConditionTest.java  | 102 +++
 .../core/filters/CorrelationHeaderFilterTest.java  | 131 ++++
 .../infrastructure/core/service/DateUtilsTest.java |  88 +++
 .../instancemode/InstanceModeMock.java             |  38 ++
 .../filter/FineractInstanceModeApiFilterTest.java  | 247 +++++++
 .../security/utils/LogParameterEscapeUtilTest.java |  51 ++
 .../portfolio/loanaccount/domain/LoanTest.java     |  88 +++
 .../data/auditing/CustomAuditingHandlerTest.java   | 116 ++++
 .../src/test/resources/application-test.properties |   5 +
 .../infrastructure/infrastructure.core.feature     |   2 +-
 .../infrastructure.security.utils.feature          |  32 +
 gradle/wrapper/gradle-wrapper.jar                  | Bin 59821 -> 60756 bytes
 gradle/wrapper/gradle-wrapper.properties           |   2 +-
 gradlew                                            |   6 +
 gradlew.bat                                        |  14 +-
 instancemode-tests/build.gradle                    | 113 +++
 instancemode-tests/dependencies.gradle             |  43 ++
 .../integrationtests/BatchInstanceModeTest.java    | 199 ++++++
 .../src/test/resources/cucumber.properties         |   0
 .../src/test/resources/junit-platform.properties   |   0
 .../test/resources/michael.vorburger-crepes.jpg    | Bin
 integration-tests/build.gradle                     |   9 +-
 integration-tests/dependencies.gradle              |   3 +-
 .../AccountingScenarioIntegrationTest.java         |  65 +-
 .../integrationtests/AuditIntegrationTest.java     |  17 +
 .../fineract/integrationtests/BatchApiTest.java    | 582 +++++++++++++++-
 .../integrationtests/CenterIntegrationTest.java    |  25 +
 .../ClientAuditingIntegrationTest.java             | 133 ++++
 ...lanceRefundandRepaymentTypeIntegrationTest.java |  93 ++-
 .../ClientLoanIntegrationTest.java                 |  53 +-
 ...ntLoanMultipleDisbursementsIntegrationTest.java |   4 -
 ...rancheMultipleDisbursementsIntegrationTest.java | 245 +++++++
 .../ClientSavingsIntegrationTest.java              | 303 ++++++++-
 ...ientUndoRejectAndWithdrawalIntegrationTest.java |  32 +-
 .../fineract/integrationtests/CurrenciesTest.java  |   2 +-
 .../integrationtests/FixedDepositTest.java         | 348 +++++-----
 .../GroupSavingsIntegrationTest.java               |   5 +-
 .../InstanceModeIntegrationTest.java               | 150 ++++
 .../LoanAuditingIntegrationTest.java               | 201 ++++++
 .../LoanReschedulingWithinCenterTest.java          |   1 +
 .../LoanTransactionAuditingIntegrationTest.java    | 212 ++++++
 .../integrationtests/MakercheckerTest.java         |  59 ++
 .../integrationtests/NotificationApiTest.java      |  79 ++-
 .../ProductMixIntegrationTest.java                 |  59 ++
 .../integrationtests/RecurringDepositTest.java     |   9 +-
 .../RepaymentWithPostDatedChecksTest.java          |   8 +-
 ...avingsAccountBalanceCheckAfterReversalTest.java | 142 ++++
 .../SavingsInterestPostingJobIntegrationTest.java  | 311 +++++++++
 .../integrationtests/SchedulerJobsTest.java        |  25 +-
 .../integrationtests/SchedulerJobsTestResults.java | 303 ++-------
 .../accounting/AccountingRuleIntegrationTest.java  |  79 +++
 .../importhandler/loan/LoanImportHandlerTest.java  |  23 +-
 .../integrationtests/client/ReportsTest.java       |  35 +-
 .../integrationtests/common/AuditHelper.java       |  14 +-
 .../integrationtests/common/BatchHelper.java       | 369 +++++++++-
 .../integrationtests/common/CenterDomain.java      |   4 +-
 .../integrationtests/common/ClientHelper.java      |  48 +-
 .../common/GlobalConfigurationHelper.java          |  25 +-
 .../integrationtests/common/GroupHelper.java       |   9 +
 .../common/NotificationHelper.java                 |  42 +-
 .../integrationtests/common/OfficeHelper.java      |  11 +
 .../integrationtests/common/ProductMixHelper.java  |  53 ++
 .../common/ProvisioningIntegrationTest.java        |  19 +-
 .../common/SchedulerJobHelper.java                 |   8 +-
 .../common/StandingInstructionsHelper.java         |  29 +-
 .../fineract/integrationtests/common/Utils.java    |  90 ++-
 .../common/accounting/AccountRuleHelper.java       |  59 ++
 .../common/accounting/AccountingRuleBuilder.java   |  58 ++
 .../common/accounting/JournalEntryHelper.java      |   2 +-
 .../common/commands/MakercheckersHelper.java       |  51 ++
 .../fixeddeposit/FixedDepositProductHelper.java    |  22 +-
 .../common/loans/LoanApplicationTestBuilder.java   |  15 +-
 .../common/loans/LoanProductTestBuilder.java       |  33 +
 .../common/loans/LoanTransactionHelper.java        | 126 ++--
 .../common/organisation/CampaignsHelper.java       |  30 +-
 .../common/organisation/CampaignsTest.java         |   1 +
 .../EntityDatatableChecksIntegrationTest.java      |  20 +
 .../common/provisioning/ProvisioningHelper.java    |  10 +-
 .../common/savings/SavingsAccountHelper.java       |  22 +-
 .../common/savings/SavingsProductHelper.java       |   9 +
 .../shares/ShareAccountIntegrationTests.java       |  64 +-
 .../common/shares/ShareProductHelper.java          |   3 +-
 .../common/system/DatatableHelper.java             |  50 ++
 .../common/system/DatatableIntegrationTest.java    | 133 ++++
 .../instancemode/ConfigureInstanceMode.java        |  38 ++
 .../support/instancemode/InstanceModeHelper.java   |  40 ++
 .../instancemode/InstanceModeSupportExtension.java |  73 ++
 .../useradministration/roles/RolesHelper.java      |   2 +
 .../useradministration/users/UserHelper.java       |  31 +-
 .../src/test/resources/logback.xml                 |   0
 kubernetes/fineract-server-deployment.yml          |   2 +
 oauth2-tests/dependencies.gradle                   |   2 +-
 renovate.json                                      |  23 +-
 twofactor-tests/dependencies.gradle                |   2 +-
 940 files changed, 29381 insertions(+), 15237 deletions(-)
 delete mode 100644 .github/workflows/fineract.dev.yaml
 delete mode 100644 
fineract-client/src/main/resources/java/template/build.gradle.mustache
 delete mode 100644 
fineract-client/src/main/resources/java/template/pom.mustache
 create mode 100644 
fineract-client/src/main/resources/templates/java/api.mustache
 create mode 100644 
fineract-doc/src/docs/en/chapters/architecture/batch-jobs.adoc
 create mode 100644 
fineract-doc/src/docs/en/chapters/architecture/business-date.adoc
 create mode 100644 
fineract-doc/src/docs/en/chapters/architecture/loan-locking.adoc
 create mode 100644 
fineract-doc/src/docs/en/chapters/deployment/instance-type.adoc
 create mode 100644 fineract-doc/src/docs/en/images/batch-jobs-chunking.png
 create mode 100644 
fineract-doc/src/docs/en/images/batch-jobs-remote-partitioning.png
 create mode 100644 
fineract-doc/src/docs/en/images/batch-jobs-state-management.png
 create mode 100644 fineract-doc/src/docs/en/images/business_date.png
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/accounting/jobs/accountrunningbalanceupdate/AccountRunningBalanceUpdateConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/accounting/jobs/accountrunningbalanceupdate/AccountRunningBalanceUpdateTasklet.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocScheduledJobRunnerService.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/adhocquery/service/AdHocScheduledJobRunnerServiceImpl.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandStrategyUtils.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateLoanRescheduleRequestCommandStrategy.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/CreateTransactionLoanCommandStrategy.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdCommandStrategy.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetLoanByIdCommandStrategy.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/GetTransactionByIdCommandStrategy.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/batch/command/internal/RepayLoanCommandStrategy.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/cob/COBBusinessStep.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/cob/loan/ApplyChargeToOverdueLoansBusinessStep.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/cob/loan/LoanCOBBusinessStep.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/DataIntegrityErrorHandler.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/auditing/CustomAuditingHandler.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/businessdate/api/BusinessDateApiResource.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/businessdate/api/BusinessDateApiResourceSwagger.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/businessdate/data/BusinessDateData.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/businessdate/domain/BusinessDate.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/businessdate/domain/BusinessDateRepository.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/businessdate/domain/BusinessDateType.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/businessdate/exception/BusinessDateActionException.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/businessdate/exception/BusinessDateNotFoundException.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/businessdate/handler/BusinessDateUpdateHandler.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/businessdate/mapper/BusinessDateMapper.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/businessdate/service/BusinessDateReadPlatformService.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/businessdate/service/BusinessDateReadPlatformServiceImpl.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/businessdate/service/BusinessDateWritePlatformService.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/businessdate/service/BusinessDateWritePlatformServiceImpl.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/businessdate/validator/BusinessDateDataParserAndValidator.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/TenantDateTimeUtil.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executeemail/ExecuteEmailConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executeemail/ExecuteEmailTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executereportmailingjobs/ExecuteReportMailingJobsConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/executereportmailingjobs/ExecuteReportMailingJobsTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/getdeliveryreportsfromsmsgateway/GetDeliveryReportsFromSmsGatewayConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/getdeliveryreportsfromsmsgateway/GetDeliveryReportsFromSmsGatewayTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/sendmessagetosmsgateway/SendMessageToSmsGatewayConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/sendmessagetosmsgateway/SendMessageToSmsGatewayTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updateemailoutboundwithcampaignmessage/EmailParamMappingException.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updateemailoutboundwithcampaignmessage/UpdateEmailOutboundWithCampaignMessageConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updateemailoutboundwithcampaignmessage/UpdateEmailOutboundWithCampaignMessageTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updatesmsoutboundwithcampaignmessage/UpdateSmsOutboundWithCampaignMessageConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/jobs/updatesmsoutboundwithcampaignmessage/UpdateSmsOutboundWithCampaignMessageTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/LocalDateTimeAdapter.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/MutableUriInfo.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/api/OffsetDateTimeAdapter.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/auditing/CustomDateTimeProvider.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/auditing/JpaAuditingHandlerRegistrar.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/EnableFineractEventListenerCondition.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/EnableFineractEventsCondition.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableWithUTCDateTimeCustom.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/ActionContext.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AuditableFieldsConstants.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/ContextHolder.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/FineractContext.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/FineractEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/filters/CorrelationHeaderFilter.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/DataSourcePerTenantServiceFactory.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/HikariDataSourceFactory.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/MDCWrapper.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/api/FineractInstanceModeConstants.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/api/InstanceModeApiResource.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/api/InstanceModeApiResourceSwagger.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilter.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/ScheduledJobRunnerConfig.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/annotation/CronMethodParser.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/annotation/CronTarget.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobSchedulerServiceImpl.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobStarter.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/executealldirtyjobs/ExecuteAllDirtyJobsConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/executealldirtyjobs/ExecuteAllDirtyJobsTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/IncreaseDateBy1DayService.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/IncreaseDateBy1DayServiceImpl.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasebusinessdateby1day/IncreaseBusinessDateBy1DayTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/increasedateby1day/increasecobdateby1day/IncreaseCobDateBy1DayTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/updatenpa/UpdateNpaConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/updatenpa/UpdateNpaTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/constants/TenantConstants.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidInstanceTypeMethodException.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentiferException.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/exception/InvalidTenantIdentifierException.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/TenantMapper.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/utils/LogParameterEscapeUtil.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/api/NotificationApiResourceSwagger.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/data/TopicData.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/data/TopicSubscriberData.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/domain/Topic.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/domain/TopicRepository.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/domain/TopicSubscriber.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/domain/TopicSubscriberRepository.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/ActiveMQNotificationEventListener.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/ActiveMQNotificationEventPublisher.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/NotificationEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/NotificationEventPublisher.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/NotificationEventService.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringEvent.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringEventListener.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringEventPublisher.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringNotificationEventListener.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/eventandlistener/SpringNotificationEventPublisher.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/exception/TopicNotFoundException.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicDomainService.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicDomainServiceImpl.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicReadPlatformService.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicReadPlatformServiceImpl.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberReadPlatformService.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberReadPlatformServiceImpl.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberWritePlatformService.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicSubscriberWritePlatformServiceJpaRepositoryImpl.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicWritePlatformService.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/notification/service/TopicWritePlatformServiceJpaRepositoryImpl.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/account/jobs/executestandinginstructions/ExecuteStandingInstructionsConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/account/jobs/executestandinginstructions/ExecuteStandingInstructionsTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/BusinessEventListener.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/AbstractBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/BusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/client/ClientActivateBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/client/ClientBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/client/ClientCreateBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/client/ClientRejectBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/deposit/FixedDepositAccountBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/deposit/FixedDepositAccountCreateBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/deposit/RecurringDepositAccountBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/deposit/RecurringDepositAccountCreateBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/group/CentersCreateBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/group/GroupsBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/group/GroupsCreateBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanAcceptTransferBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanAdjustTransactionBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanApplyOverdueChargeBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanApprovedBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanCloseAsRescheduleBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanCloseBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanCreatedBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanDisbursalBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanInitiateTransferBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanInterestRecalculationBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanReassignOfficerBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanRejectTransferBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanRejectedBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanRemoveOfficerBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanUndoApprovalBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanUndoDisbursalBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanUndoLastDisbursalBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/LoanWithdrawTransferBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/charge/LoanAddChargeBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/charge/LoanChargeBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/charge/LoanDeleteChargeBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/charge/LoanUpdateChargeBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/charge/LoanWaiveChargeBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/charge/LoanWaiveChargeUndoBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/product/LoanProductBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/product/LoanProductCreateBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanChargePaymentPostBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanChargePaymentPreBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanCreditBalanceRefundPostBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanCreditBalanceRefundPreBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanForeClosurePostBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanForeClosurePreBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanRefundPostBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanRefundPreBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanTransactionBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanTransactionGoodwillCreditPostBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanTransactionGoodwillCreditPreBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanTransactionMakeRepaymentPostBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanTransactionMakeRepaymentPreBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanTransactionMerchantIssuedRefundPostBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanTransactionMerchantIssuedRefundPreBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanTransactionPayoutRefundPostBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanTransactionPayoutRefundPreBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanTransactionRecoveryPaymentPostBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanTransactionRecoveryPaymentPreBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanUndoWrittenOffBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanWaiveInterestBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanWrittenOffPostBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/loan/transaction/LoanWrittenOffPreBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/savings/SavingsAccountBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/savings/SavingsActivateBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/savings/SavingsApproveBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/savings/SavingsCloseBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/savings/SavingsCreateBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/savings/SavingsPostInterestBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/savings/SavingsRejectBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/savings/transaction/SavingsAccountTransactionBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/savings/transaction/SavingsDepositBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/savings/transaction/SavingsWithdrawalBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/share/ShareAccountApproveBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/share/ShareAccountBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/share/ShareAccountCreateBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/domain/share/ShareProductDividentsCreateBusinessEvent.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/service/BusinessEventNotifierService.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/businessevent/service/BusinessEventNotifierServiceImpl.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/InternalClientInformationApiResource.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/common/BusinessEventNotificationConstants.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventListener.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventNotifierService.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventNotifierServiceImpl.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/InternalLoanInformationApiResource.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanGoodwilCreditCommandHandler.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanGoodwillCreditCommandHandler.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addaccrualentries/AddAccrualEntriesConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addaccrualentries/AddAccrualEntriesTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentries/AddPeriodicAccrualEntriesConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentries/AddPeriodicAccrualEntriesTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentriesforloanswithincomepostedastransactions/AddPeriodicAccrualEntriesForLoansConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/addperiodicaccrualentriesforloanswithincomepostedastransactions/AddPeriodicAccrualEntriesForLoansTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applychargetooverdueloaninstallment/ApplyChargeToOverdueLoanInstallmentConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applychargetooverdueloaninstallment/ApplyChargeToOverdueLoanInstallmentTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applyholidaystoloans/ApplyHolidaysToLoansConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/applyholidaystoloans/ApplyHolidaysToLoansTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/GenerateLoanlossProvisioningTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/generateloanlossprovisioning/NoProvisioningCriteriaDefinitionFoundException.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/recalculateinterestforloan/RecalculateInterestForLoanConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/recalculateinterestforloan/RecalculateInterestForLoanTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/transferfeechargeforloans/TransferFeeChargeForLoansConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/transferfeechargeforloans/TransferFeeChargeForLoansTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/updateloanarrearsageing/UpdateLoanArrearsAgeingConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/jobs/updateloanarrearsageing/UpdateLoanArrearsAgeingTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/api/RescheduleLoansApiResourceSwagger.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanSchedularService.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanSchedularServiceImpl.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/applyannualfeeforsavings/ApplyAnnualFeeForSavingsConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/applyannualfeeforsavings/ApplyAnnualFeeForSavingsTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generateadhocclientschhedule/GenerateAdhocClientScheduleConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generateadhocclientschhedule/GenerateAdhocClientScheduleTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generaterdschedule/GenerateRdScheduleConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/generaterdschedule/GenerateRdScheduleTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/payduesavingscharges/PayDueSavingsChargesConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/payduesavingscharges/PayDueSavingsChargesTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/postinterestforsavings/PostInterestForSavingConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/postinterestforsavings/PostInterestForSavingTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/transferinteresttosavings/TransferInterestToSavingsConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/transferinteresttosavings/TransferInterestToSavingsTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatedepositsaccountmaturitydetails/UpdateDepositsAccountMaturityDetailsConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatedepositsaccountmaturitydetails/UpdateDepositsAccountMaturityDetailsTasklet.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatesavingsdormantaccounts/UpdateSavingsDormantAccountsConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/jobs/updatesavingsdormantaccounts/UpdateSavingsDormantAccountsTasklet.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularService.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularServiceImpl.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/jobs/postdividentsforshares/PostDividentsForSharesConfig.java
 create mode 100644 
fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/jobs/postdividentsforshares/PostDividentsForSharesTasklet.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/scheduledjobs/service/ScheduledJobRunnerService.java
 delete mode 100644 
fineract-provider/src/main/java/org/apache/fineract/scheduledjobs/service/ScheduledJobRunnerServiceImpl.java
 create mode 100644 
fineract-provider/src/main/resources/db/changelog/tenant-store/parts/0004_readonly_database_connection.xml
 create mode 100644 
fineract-provider/src/main/resources/db/changelog/tenant-store/parts/0005_jdbc_connection_string.xml
 create mode 100644 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0013_remove_topics.xml
 create mode 100644 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0014_remove_unused_jobs.xml
 create mode 100644 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0015_add_business_date.xml
 create mode 100644 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0016_changed_unique_constraint_of_ref_no.xml
 create mode 100644 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0017_fix_stretchy_reports.xml
 create mode 100644 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0018_pentaho_reports_to_table.xml
 create mode 100644 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0019_refactor_loan_transaction.xml
 create mode 100644 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0020_add_audit_entries.xml
 create mode 100644 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0021_add_spring_batch_db_structure.xml
 create mode 100644 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0022_add_batch_business_step_configuration_table.xml
 create mode 100644 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0023_use_the_proper_date_or_datetime_type.xml
 create mode 100644 
fineract-provider/src/main/resources/db/changelog/tenant/parts/0024_add_audit_entries.xml
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/batch/command/CommandStrategyProviderTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateLoanRescheduleRequestCommandStrategyTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/CreateTransactionLoanCommandStrategyTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetDatatableEntryByAppTableIdCommandStrategyTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetLoanByIdCommandStrategyTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/batch/command/internal/GetTransactionByIdCommandStrategyTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/infrastructure/businessdate/api/BusinessDateApiTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/infrastructure/businessdate/data/BusinessDataSerialized.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/infrastructure/businessdate/data/BusinessDataTypeTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/infrastructure/businessdate/mapper/BusinessDateMapperTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/infrastructure/businessdate/service/BusinessDateReadPlatformServiceTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/infrastructure/businessdate/service/BusinessDateWritePlatformServiceTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/infrastructure/businessdate/validator/BusinessDateValidatorTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/DataSourcePerTenantServiceFactoryTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/auditing/CustomDateTimeProviderTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/config/EnableFineractEventListenerConditionTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/filters/CorrelationHeaderFilterTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/infrastructure/core/service/DateUtilsTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/infrastructure/instancemode/InstanceModeMock.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/infrastructure/instancemode/filter/FineractInstanceModeApiFilterTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/infrastructure/security/utils/LogParameterEscapeUtilTest.java
 create mode 100644 
fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTest.java
 create mode 100644 
fineract-provider/src/test/java/org/springframework/data/auditing/CustomAuditingHandlerTest.java
 create mode 100644 
fineract-provider/src/test/resources/features/infrastructure/infrastructure.security.utils.feature
 create mode 100644 instancemode-tests/build.gradle
 create mode 100644 instancemode-tests/dependencies.gradle
 create mode 100644 
instancemode-tests/src/test/java/org/apache/fineract/integrationtests/BatchInstanceModeTest.java
 copy {fineract-client => 
instancemode-tests}/src/test/resources/cucumber.properties (100%)
 copy {integration-tests => 
instancemode-tests}/src/test/resources/junit-platform.properties (100%)
 copy {integration-tests => 
instancemode-tests}/src/test/resources/michael.vorburger-crepes.jpg (100%)
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientAuditingIntegrationTest.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientLoanNonTrancheMultipleDisbursementsIntegrationTest.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/InstanceModeIntegrationTest.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAuditingIntegrationTest.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanTransactionAuditingIntegrationTest.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/MakercheckerTest.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/ProductMixIntegrationTest.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsAccountBalanceCheckAfterReversalTest.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsInterestPostingJobIntegrationTest.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/accounting/AccountingRuleIntegrationTest.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/common/ProductMixHelper.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/common/accounting/AccountRuleHelper.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/common/accounting/AccountingRuleBuilder.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/common/commands/MakercheckersHelper.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/common/system/DatatableIntegrationTest.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/support/instancemode/ConfigureInstanceMode.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/support/instancemode/InstanceModeHelper.java
 create mode 100644 
integration-tests/src/test/java/org/apache/fineract/integrationtests/support/instancemode/InstanceModeSupportExtension.java
 copy {fineract-provider => integration-tests}/src/test/resources/logback.xml 
(100%)

Reply via email to