You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by vo...@apache.org on 2020/06/14 16:31:57 UTC

[fineract] branch develop updated (6462834 -> 9da5932)

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

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


    from 6462834  remove (old, bad) SchedulerJobHelper.executeJob() [FINERACT-922]
     new 89e321a  FINERACT-1006 Added spotless to auto format source code
     new 9da5932  bulk auto reformat ca. 2900 files using ./gradlew :spotlessApply [FINERACT-1006]

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 README.md                                          |   17 +-
 config/fineractdev-cleanup.xml                     |   70 +
 config/fineractdev-eclipse-preferences.epf         |  418 --
 config/fineractdev-formatter.xml                   |  365 ++
 fineract-provider/build.gradle                     |  123 +-
 fineract-provider/config/checkstyle/checkstyle.xml |   24 +-
 fineract-provider/dependencies.gradle              |   40 +-
 .../properties/oauth/application.properties        |    2 +-
 .../AccountNumberPreferencesTest.java              |  109 +-
 .../integrationtests/AccountTransferTest.java      |   28 +-
 .../AccountingScenarioIntegrationTest.java         |  111 +-
 .../integrationtests/ActuatorIntegrationTest.java  |    5 +-
 .../fineract/integrationtests/BatchApiTest.java    |   20 +-
 .../BatchRequestsIntegrationTest.java              |    5 +-
 .../integrationtests/CenterIntegrationTest.java    |   32 +-
 .../ClientLoanIntegrationTest.java                 | 1515 +++---
 .../ClientSavingsIntegrationTest.java              |  616 +--
 .../integrationtests/ClientStatusChecker.java      |   16 +-
 ...ientUndoRejectAndWithdrawalIntegrationTest.java |   39 +-
 .../ConcurrencyIntegrationTest.java                |   12 +-
 .../fineract/integrationtests/CurrenciesTest.java  |    3 +-
 .../integrationtests/CurrencyIntegrationTest.java  |    1 -
 .../DisbursalAndRepaymentScheduleTest.java         |  696 ++-
 .../ExternalServicesConfigurationTest.java         |    9 +-
 .../FinancialActivityAccountsTest.java             |   14 +-
 .../integrationtests/FixedDepositTest.java         |  460 +-
 ...xibleSavingsInterestPostingIntegrationTest.java |   17 +-
 .../integrationtests/FundsIntegrationTest.java     |  100 +-
 ...restChargedFromDateSameAsDisbursalDateTest.java |   28 +-
 .../integrationtests/GlobalConfigurationTest.java  |   58 +-
 .../integrationtests/GroupLoanIntegrationTest.java |   49 +-
 .../GroupSavingsIntegrationTest.java               |   49 +-
 .../fineract/integrationtests/GroupTest.java       |    5 +-
 .../integrationtests/HookIntegrationTest.java      |   13 +-
 .../LoanApplicationApprovalTest.java               |   26 +-
 .../LoanApplicationUndoLastTrancheTest.java        |   19 +-
 .../LoanDisbursalDateValidationTest.java           |   35 +-
 .../LoanDisbursementDetailsIntegrationTest.java    |   57 +-
 .../LoanRepaymentRescheduleAtDisbursementTest.java |   34 +-
 .../LoanRescheduleRequestTest.java                 |   55 +-
 .../LoanReschedulingWithinCenterTest.java          |   44 +-
 ...ithWaiveInterestAndWriteOffIntegrationTest.java |   19 +-
 ...mDaysBetweenDisbursalAndFirstRepaymentTest.java |    2 +-
 .../integrationtests/NotificationApiTest.java      |    3 +-
 .../integrationtests/OfficeIntegrationTest.java    |   11 +-
 .../PasswordPreferencesIntegrationTest.java        |    7 +-
 .../fineract/integrationtests/RatesTest.java       |   52 +-
 .../integrationtests/RecurringDepositTest.java     |  515 +-
 .../fineract/integrationtests/RolesTest.java       |    3 +-
 .../integrationtests/SchedulerJobsTest.java        |   11 +-
 .../integrationtests/SchedulerJobsTestResults.java | 1509 +++---
 .../SkipRepaymentOnMonthFirstTest.java             |   45 +-
 .../integrationtests/StaffImageApiTest.java        |    4 +-
 .../fineract/integrationtests/StaffTest.java       |    6 +-
 .../integrationtests/SurveyIntegrationTest.java    |    2 +-
 .../fineract/integrationtests/SystemCodeTest.java  |   15 +-
 .../integrationtests/TemplateIntegrationTest.java  |    6 +-
 .../integrationtests/UserAdministrationTest.java   |   29 +-
 .../integrationtests/XBRLIntegrationTest.java      |    1 +
 .../client/ClientEntityImportHandlerTest.java      |   98 +-
 .../importhandler/loan/LoanImportHandlerTest.java  |   88 +-
 .../office/OfficeImportHandlerTest.java            |   52 +-
 .../savings/SavingsImportHandlerTest.java          |   89 +-
 .../client/ClientEntityWorkbookPopulatorTest.java  |   37 +-
 .../populator/loan/LoanWorkbookPopulatorTest.java  |   74 +-
 .../office/OfficeWorkBookPopulatorTest.java        |   21 +-
 .../savings/SavingsWorkbookPopulateTest.java       |   57 +-
 .../integrationtests/common/BatchHelper.java       |   15 +-
 .../integrationtests/common/CalendarHelper.java    |   17 +-
 .../integrationtests/common/CenterDomain.java      |   20 +-
 .../integrationtests/common/CenterHelper.java      |   32 +-
 .../integrationtests/common/ClientChargesTest.java |    4 +-
 .../integrationtests/common/ClientHelper.java      |  223 +-
 .../integrationtests/common/CommonConstants.java   |    1 -
 .../integrationtests/common/CurrenciesHelper.java  |    7 +-
 .../integrationtests/common/CurrencyDomain.java    |    8 +-
 .../ExternalServicesConfigurationHelper.java       |   22 +-
 .../common/GlobalConfigurationHelper.java          |   74 +-
 .../integrationtests/common/GroupHelper.java       |   69 +-
 .../integrationtests/common/HolidayHelper.java     |   10 +-
 .../integrationtests/common/HookHelper.java        |   16 +-
 .../integrationtests/common/ImageHelper.java       |    4 +-
 .../common/LoanRescheduleRequestHelper.java        |    1 +
 .../common/NotificationHelper.java                 |    3 +-
 .../integrationtests/common/OfficeDomain.java      |   33 +-
 .../integrationtests/common/OfficeHelper.java      |   50 +-
 .../common/PasswordPreferencesHelper.java          |   26 +-
 .../integrationtests/common/PaymentTypeHelper.java |   42 +-
 .../common/ProvisioningIntegrationTest.java        |  135 +-
 .../common/SchedulerJobHelper.java                 |   55 +-
 .../common/StandingInstructionsHelper.java         |   16 +-
 .../integrationtests/common/SurveyHelper.java      |   17 +-
 .../common/TaxComponentHelper.java                 |    5 +-
 .../integrationtests/common/TaxGroupHelper.java    |    6 +-
 .../fineract/integrationtests/common/Utils.java    |   95 +-
 .../integrationtests/common/WorkingDaysHelper.java |    8 +-
 .../common/accounting/Account.java                 |    1 +
 .../common/accounting/AccountHelper.java           |   15 +-
 .../accounting/FinancialActivityAccountHelper.java |   11 +-
 .../common/accounting/JournalEntry.java            |    1 +
 .../common/charges/ChargesHelper.java              |   99 +-
 .../fixeddeposit/FixedDepositAccountHelper.java    |  117 +-
 .../FixedDepositAccountStatusChecker.java          |   26 +-
 .../fixeddeposit/FixedDepositProductHelper.java    |   16 +-
 .../integrationtests/common/funds/FundsHelper.java |   21 +-
 .../common/funds/FundsResourceHandler.java         |   21 +-
 .../common/loans/LoanApplicationTestBuilder.java   |   29 +-
 .../common/loans/LoanDisbursementTestBuilder.java  |   48 +-
 .../common/loans/LoanProductTestBuilder.java       |   26 +-
 .../common/loans/LoanTransactionHelper.java        |  238 +-
 .../common/organisation/CampaignsHelper.java       |   62 +-
 .../common/organisation/Currency.java              |   12 +-
 .../common/organisation/CurrencyHelper.java        |   17 +-
 .../organisation/EntityDatatableChecksHelper.java  |   13 +-
 .../EntityDatatableChecksIntegrationTest.java      |    1 +
 .../common/organisation/StaffHelper.java           |   39 +-
 .../common/provisioning/ProvisioningHelper.java    |   10 +-
 .../ProvisioningTransactionHelper.java             |   37 +-
 .../integrationtests/common/rates/RatesHelper.java |  106 +-
 .../RecurringDepositAccountHelper.java             |  177 +-
 .../RecurringDepositAccountStatusChecker.java      |   28 +-
 .../RecurringDepositProductHelper.java             |   10 +-
 .../integrationtests/common/report/ReportData.java |    4 +-
 .../common/savings/AccountTransferHelper.java      |   31 +-
 .../common/savings/SavingsAccountHelper.java       |  117 +-
 .../savings/SavingsApplicationTestBuilder.java     |   26 +-
 .../common/savings/SavingsProductHelper.java       |   11 +-
 .../common/savings/SavingsStatusChecker.java       |   56 +-
 .../common/shares/DividendsIntegrationTests.java   |  107 +-
 .../common/shares/ShareAccountHelper.java          |  103 +-
 .../shares/ShareAccountIntegrationTests.java       |  217 +-
 .../shares/ShareAccountTransactionHelper.java      |    4 +-
 .../shares/ShareDividendsTransactionHelper.java    |   25 +-
 .../common/shares/ShareProductHelper.java          |  140 +-
 .../shares/ShareProductTransactionHelper.java      |    8 +-
 .../system/AccountNumberPreferencesHelper.java     |  151 +-
 .../AccountNumberPreferencesTestBuilder.java       |    1 +
 .../integrationtests/common/system/CodeHelper.java |  148 +-
 .../common/system/DatatableHelper.java             |   11 +-
 .../interoperation/InteropHelper.java              |   12 +-
 .../interoperation/InteropTest.java                |   40 +-
 .../loanaccount/guarantor/GuarantorHelper.java     |    4 +-
 .../loanaccount/guarantor/GuarantorTest.java       |  122 +-
 .../guarantor/GuarantorTestBuilder.java            |    3 +-
 .../useradministration/roles/RolesHelper.java      |   11 +-
 .../useradministration/users/UserHelper.java       |   55 +-
 ...VariableInstallmentsDecliningBalanceHelper.java |   42 +-
 .../VariableInstallmentsFlatHelper.java            |   29 +-
 .../VariableInstallmentsIntegrationTest.java       |  555 ++-
 .../VariableIntallmentsTransactionHelper.java      |   17 +-
 .../org/apache/fineract/ServerApplication.java     |   13 +-
 .../accrual/api/AccrualAccountingApiResource.java  |   17 +-
 .../api/AccrualAccountingApiResourceSwagger.java   |    2 +
 .../ExecutePeriodicAccrualCommandHandler.java      |    2 +-
 .../AccrualAccountingDataValidator.java            |    5 +-
 .../AccrualAccountingWritePlatformServiceImpl.java |    3 +-
 .../closure/api/GLClosureJsonInputParams.java      |    3 +-
 .../closure/api/GLClosuresApiResource.java         |   45 +-
 .../closure/api/GLClosuresApiResourceSwagger.java  |   19 +-
 .../closure/command/GLClosureCommand.java          |   14 +-
 .../accounting/closure/data/GLClosureData.java     |    2 +-
 .../accounting/closure/domain/GLClosure.java       |    5 +-
 .../exception/GLClosureDuplicateException.java     |    7 +-
 .../exception/GLClosureInvalidDeleteException.java |    2 +-
 .../exception/GLClosureInvalidException.java       |    7 +-
 .../exception/GLClosureNotFoundException.java      |    2 +-
 .../handler/CreateGLClosureCommandHandler.java     |    2 +-
 .../handler/DeleteGLClosureCommandHandler.java     |    2 +-
 .../handler/UpdateGLClosureCommandHandler.java     |    2 +-
 .../GLClosureCommandFromApiJsonDeserializer.java   |    2 +-
 ...osureWritePlatformServiceJpaRepositoryImpl.java |   22 +-
 .../accounting/common/AccountingConstants.java     |  110 +-
 .../AccountingDropdownReadPlatformService.java     |    2 +-
 .../AccountingDropdownReadPlatformServiceImpl.java |    2 +-
 .../accounting/common/AccountingRuleType.java      |    2 +-
 .../api/FinancialActivityAccountsApiResource.java  |   40 +-
 ...inancialActivityAccountsApiResourceSwagger.java |   35 +-
 .../api/FinancialActivityAccountsConstants.java    |    6 +-
 .../FinancialActivityAccountsJsonInputParams.java  |    3 +-
 .../data/FinancialActivityAccountData.java         |    3 +-
 .../domain/FinancialActivityAccount.java           |    2 +-
 .../domain/FinancialActivityAccountRepository.java |    4 +-
 .../FinancialActivityAccountRepositoryWrapper.java |    3 +-
 ...cateFinancialActivityAccountFoundException.java |    2 +-
 .../FinancialActivityAccountInvalidException.java  |   14 +-
 .../FinancialActivityAccountNotFoundException.java |    7 +-
 .../CreateFinancialActivityAccountHandler.java     |    2 +-
 ...leteFinancialActivityAccountCommandHandler.java |    2 +-
 ...dateFinancialActivityAccountCommandHandler.java |    2 +-
 .../FinancialActivityAccountDataValidator.java     |    8 +-
 ...inancialActivityAccountReadPlatformService.java |    2 +-
 ...cialActivityAccountReadPlatformServiceImpl.java |    3 +-
 ...nancialActivityAccountWritePlatformService.java |    2 +-
 ...ialActivityAccountWritePlatformServiceImpl.java |   25 +-
 .../glaccount/api/GLAccountJsonInputParams.java    |    7 +-
 .../glaccount/api/GLAccountsApiResource.java       |  109 +-
 .../api/GLAccountsApiResourceSwagger.java          |   41 +-
 .../glaccount/command/GLAccountCommand.java        |   14 +-
 .../accounting/glaccount/data/GLAccountData.java   |   22 +-
 .../accounting/glaccount/domain/GLAccount.java     |    4 +-
 .../domain/GLAccountRepositoryWrapper.java         |    2 +-
 .../accounting/glaccount/domain/GLAccountType.java |   34 +-
 .../accounting/glaccount/domain/TrialBalance.java  |   25 +-
 .../glaccount/domain/TrialBalanceRepository.java   |    5 +-
 .../domain/TrialBalanceRepositoryWrapper.java      |   17 +-
 .../exception/GLAccountDisableException.java       |    6 +-
 .../exception/GLAccountDuplicateException.java     |    2 +-
 .../GLAccountInvalidClassificationException.java   |    2 +-
 .../exception/GLAccountInvalidDeleteException.java |   11 +-
 .../exception/GLAccountInvalidParentException.java |    6 +-
 .../exception/GLAccountInvalidUpdateException.java |   11 +-
 .../exception/GLAccountInvalidUsageException.java  |    2 +-
 .../exception/GLAccountNotFoundException.java      |    2 +-
 .../handler/CreateGLAccountCommandHandler.java     |    2 +-
 .../handler/DeleteGLAccountCommandHandler.java     |    2 +-
 .../handler/UpdateGLAccountCommandHandler.java     |    2 +-
 .../GLAccountCommandFromApiJsonDeserializer.java   |    6 +-
 .../service/GLAccountReadPlatformService.java      |    2 +-
 .../service/GLAccountReadPlatformServiceImpl.java  |   20 +-
 ...countWritePlatformServiceJpaRepositoryImpl.java |   52 +-
 .../api/JournalEntriesApiResource.java             |  115 +-
 .../api/JournalEntriesApiResourceSwagger.java      |   10 +-
 .../api/JournalEntryJsonInputParams.java           |   12 +-
 .../journalentry/command/JournalEntryCommand.java  |    8 +-
 .../command/SingleDebitOrCreditEntryCommand.java   |    2 +-
 .../accounting/journalentry/data/CreditDebit.java  |    1 +
 .../journalentry/data/JournalEntryData.java        |   58 +-
 .../data/JournalEntryDataValidator.java            |    6 +-
 .../journalentry/data/LoanTransactionDTO.java      |   12 +-
 .../journalentry/data/TransactionTypeEnumData.java |    2 +-
 .../journalentry/domain/JournalEntry.java          |    4 +-
 .../domain/JournalEntryRepository.java             |   24 +-
 .../exception/JournalEntriesNotFoundException.java |    7 +-
 .../exception/JournalEntryInvalidException.java    |   11 +-
 .../exception/JournalEntryNotFoundException.java   |    7 +-
 .../exception/JournalEntryRuntimeException.java    |    1 -
 .../handler/CreateJournalEntryCommandHandler.java  |    2 +-
 .../handler/ReverseJournalEntryCommandHandler.java |    2 +-
 ...JournalEntryCommandFromApiJsonDeserializer.java |   13 +-
 .../service/AccountingProcessorHelper.java         |  188 +-
 .../AccrualBasedAccountingProcessorForLoan.java    |   59 +-
 .../CashBasedAccountingProcessorForLoan.java       |   66 +-
 .../CashBasedAccountingProcessorForSavings.java    |   61 +-
 .../CashBasedAccountingProcessorForShares.java     |   10 +-
 .../service/JournalEntryReadPlatformService.java   |    2 +-
 .../JournalEntryReadPlatformServiceImpl.java       |   51 +-
 ...ournalEntryRunningBalanceUpdateServiceImpl.java |   54 +-
 .../service/JournalEntryWritePlatformService.java  |    4 +-
 ...EntryWritePlatformServiceJpaRepositoryImpl.java |  113 +-
 .../domain/PortfolioProductType.java               |    1 +
 .../domain/ProductToGLAccountMapping.java          |   15 +-
 .../ProductToGLAccountMappingRepository.java       |   21 +-
 .../ProductToGLAccountMappingInvalidException.java |    9 +-
 ...ProductToGLAccountMappingNotFoundException.java |    2 +-
 ...tToGLAccountMappingFromApiJsonDeserializer.java |  173 +-
 .../LoanProductToGLAccountMappingHelper.java       |  102 +-
 .../service/ProductToGLAccountMappingHelper.java   |   83 +-
 ...oductToGLAccountMappingReadPlatformService.java |    2 +-
 ...tToGLAccountMappingReadPlatformServiceImpl.java |   20 +-
 ...ductToGLAccountMappingWritePlatformService.java |    2 +-
 ...ToGLAccountMappingWritePlatformServiceImpl.java |   34 +-
 .../SavingsProductToGLAccountMappingHelper.java    |   51 +-
 .../ShareProductToGLAccountMappingHelper.java      |   33 +-
 .../api/ProvisioningEntriesApiResource.java        |   52 +-
 .../api/ProvisioningEntriesApiResourceSwagger.java |   15 +-
 .../constant/ProvisioningEntriesApiConstants.java  |    8 +-
 .../data/LoanProductProvisioningEntryData.java     |   64 +-
 .../provisioning/data/ProvisioningEntryData.java   |   48 +-
 .../domain/LoanProductProvisioningEntry.java       |   66 +-
 .../provisioning/domain/ProvisioningEntry.java     |   25 +-
 .../domain/ProvisioningEntryRepository.java        |    4 +-
 .../NoProvisioningCriteriaDefinitionFound.java     |    1 -
 .../ProvisioningEntryAlreadyCreatedException.java  |    4 +-
 .../ProvisioningEntryNotfoundException.java        |    1 -
 ...teProvisioningEntriesRequestCommandHandler.java |    5 +-
 ...sioningJournalEntriesRequestCommandHandler.java |    5 +-
 ...eateProvisioningEntryRequestCommandHandler.java |    7 +-
 ...visioningEntriesDefinitionJsonDeserializer.java |   17 +-
 .../ProvisioningEntriesReadPlatformService.java    |   15 +-
 ...ProvisioningEntriesReadPlatformServiceImpl.java |   22 +-
 .../ProvisioningEntriesWritePlatformService.java   |    5 +-
 ...triesWritePlatformServiceJpaRepositoryImpl.java |   45 +-
 .../rule/api/AccountingRuleApiResource.java        |   81 +-
 .../rule/api/AccountingRuleApiResourceSwagger.java |   18 +-
 .../rule/api/AccountingRuleJsonInputParams.java    |    6 +-
 .../accounting/rule/data/AccountingRuleData.java   |    2 +-
 .../accounting/rule/domain/AccountingRule.java     |   11 +-
 .../accounting/rule/domain/AccountingTagRule.java  |    3 +-
 .../exception/AccountingRuleDataException.java     |    4 +-
 .../AccountingRuleDuplicateException.java          |    2 +-
 .../AccountingRuleInvalidDeleteException.java      |    2 +-
 .../exception/AccountingRuleInvalidException.java  |    7 +-
 .../exception/AccountingRuleNotFoundException.java |    2 +-
 .../CreateAccountingRuleCommandHandler.java        |    2 +-
 .../DeleteAccountingRuleCommandHandler.java        |    2 +-
 .../UpdateAccountingRuleCommandHandler.java        |    2 +-
 ...countingRuleCommandFromApiJsonDeserializer.java |   36 +-
 .../AccountingRuleReadPlatformServiceImpl.java     |   19 +-
 ...gRuleWritePlatformServiceJpaRepositoryImpl.java |   13 +-
 .../exception/TrialBalanceNotFoundException.java   |    8 +-
 .../fineract/adhocquery/api/AdHocApiResource.java  |   26 +-
 .../adhocquery/api/AdHocJsonInputParams.java       |    9 +-
 .../apache/fineract/adhocquery/data/AdHocData.java |   46 +-
 .../apache/fineract/adhocquery/domain/AdHoc.java   |   41 +-
 .../adhocquery/domain/ReportRunFrequency.java      |   15 +-
 .../exception/AdHocNotFoundException.java          |    5 +-
 .../handler/CreateAdHocCommandHandler.java         |    2 +-
 .../handler/DeleteAdHocCommandHandler.java         |    2 +-
 .../handler/UpdateAdHocCommandHandler.java         |    2 +-
 .../adhocquery/service/AdHocDataValidator.java     |   23 +-
 .../service/AdHocReadPlatformService.java          |    3 +-
 .../service/AdHocReadPlatformServiceImpl.java      |   24 +-
 .../service/AdHocScheduledJobRunnerService.java    |    1 +
 .../AdHocScheduledJobRunnerServiceImpl.java        |   32 +-
 .../service/AdHocWritePlatformService.java         |    2 +-
 ...AdHocWritePlatformServiceJpaRepositoryImpl.java |    8 +-
 .../fineract/batch/api/BatchApiResource.java       |   29 +-
 .../batch/api/BatchApiResourceSwagger.java         |    7 +-
 .../fineract/batch/command/CommandContext.java     |   35 +-
 .../batch/command/CommandStrategyProvider.java     |   20 +-
 .../internal/ActivateClientCommandStrategy.java    |    9 +-
 .../command/internal/ApplyLoanCommandStrategy.java |    8 +-
 .../internal/ApplySavingsCommandStrategy.java      |   10 +-
 .../internal/ApproveLoanCommandStrategy.java       |   20 +-
 .../ApproveLoanRescheduleCommandStrategy.java      |    3 +-
 .../internal/CollectChargesCommandStrategy.java    |    8 +-
 .../internal/CreateChargeCommandStrategy.java      |   13 +-
 .../internal/CreateClientCommandStrategy.java      |    4 +-
 .../internal/DisburseLoanCommandStrategy.java      |   18 +-
 .../command/internal/RepayLoanCommandStrategy.java |   11 +-
 .../exception/ClientDetailsNotFoundException.java  |    2 +-
 .../fineract/batch/exception/ErrorHandler.java     |   15 +-
 .../serialization/BatchRequestJsonHelper.java      |    4 +-
 .../fineract/batch/service/BatchApiService.java    |   10 +-
 .../batch/service/BatchApiServiceImpl.java         |   61 +-
 .../fineract/batch/service/ResolutionHelper.java   |    4 +-
 .../fineract/commands/annotation/CommandType.java  |    3 +-
 .../fineract/commands/api/AuditsApiResource.java   |   65 +-
 .../commands/api/MakercheckersApiResource.java     |   53 +-
 .../api/MakercheckersApiResourceSwagger.java       |   14 +-
 .../apache/fineract/commands/data/AuditData.java   |    6 +-
 .../fineract/commands/data/AuditSearchData.java    |    2 +-
 .../commands/data/ProcessingResultLookup.java      |    2 +-
 .../domain/CommandProcessingResultType.java        |    2 +-
 .../fineract/commands/domain/CommandSource.java    |   13 +-
 .../commands/domain/CommandSourceRepository.java   |    2 +-
 .../fineract/commands/domain/CommandWrapper.java   |   30 +-
 .../CommandNotAwaitingApprovalException.java       |    2 +-
 .../exception/CommandNotFoundException.java        |    2 +-
 .../exception/UnsupportedCommandException.java     |    2 +-
 .../commands/handler/NewCommandSourceHandler.java  |    2 +-
 .../commands/provider/CommandHandlerProvider.java  |   30 +-
 .../commands/service/AuditReadPlatformService.java |    2 +-
 .../service/AuditReadPlatformServiceImpl.java      |   21 +-
 .../commands/service/CommandProcessingService.java |    4 +-
 .../commands/service/CommandWrapperBuilder.java    |   84 +-
 ...PortfolioCommandSourceWritePlatformService.java |    2 +-
 ...folioCommandSourceWritePlatformServiceImpl.java |   10 +-
 .../SynchronousCommandProcessingService.java       |    7 +-
 .../api/AccountNumberFormatsApiResource.java       |   68 +-
 .../AccountNumberFormatsApiResourceSwagger.java    |   20 +-
 .../data/AccountNumberFormatDataValidator.java     |   43 +-
 .../domain/AccountNumberFormat.java                |    5 +-
 .../domain/AccountNumberFormatEnumerations.java    |   33 +-
 .../domain/AccountNumberFormatRepository.java      |    4 +-
 .../AccountNumberFormatRepositoryWrapper.java      |    3 +-
 .../domain/EntityAccountType.java                  |    9 +-
 .../AccountNumberFormatNotFoundException.java      |    4 +-
 ...AccountNumberFormatReadPlatformServiceImpl.java |    4 +-
 ...ormatWritePlatformServiceJpaRepositoryImpl.java |    7 +-
 .../bulkimport/api/BulkImportApiResource.java      |   36 +-
 .../bulkimport/constants/CenterConstants.java      |   40 +-
 .../constants/ChartOfAcountsConstants.java         |   33 +-
 .../constants/ClientEntityConstants.java           |   76 +-
 .../constants/ClientPersonConstants.java           |   73 +-
 .../bulkimport/constants/GroupConstants.java       |   46 +-
 .../bulkimport/constants/GuarantorConstants.java   |   20 +-
 .../constants/JournalEntryConstants.java           |    2 +-
 .../bulkimport/constants/LoanConstants.java        |  100 +-
 .../constants/LoanRepaymentConstants.java          |   48 +-
 .../bulkimport/constants/OfficeConstants.java      |   10 +-
 .../constants/RecurringDepositConstants.java       |    1 -
 .../bulkimport/constants/SavingsConstants.java     |    2 +-
 .../constants/SharedAccountsConstants.java         |   44 +-
 .../bulkimport/constants/StaffConstants.java       |   18 +-
 .../constants/TemplatePopulateImportConstants.java |  238 +-
 .../bulkimport/constants/UserConstants.java        |   23 +-
 .../bulkimport/data/BulkImportEvent.java           |   10 +-
 .../infrastructure/bulkimport/data/Count.java      |   10 +-
 .../bulkimport/data/GlobalEntityType.java          |   57 +-
 .../infrastructure/bulkimport/data/ImportData.java |   28 +-
 .../bulkimport/data/ImportFormatType.java          |   19 +-
 .../bulkimport/domain/ImportDocument.java          |   23 +-
 .../domain/ImportDocumentRepository.java           |    3 +-
 .../exceptions/ImportTypeNotFoundException.java    |    2 +-
 .../bulkimport/importhandler/ImportHandler.java    |    2 +-
 .../importhandler/ImportHandlerUtils.java          |  270 +-
 .../importhandler/center/CenterImportHandler.java  |  130 +-
 .../ChartOfAccountsImportHandler.java              |   94 +-
 .../client/ClientEntityImportHandler.java          |  112 +-
 .../client/ClientPersonImportHandler.java          |  108 +-
 .../fixeddeposits/FixedDepositImportHandler.java   |  202 +-
 .../FixedDepositTransactionImportHandler.java      |   74 +-
 .../importhandler/group/GroupImportHandler.java    |  160 +-
 .../guarantor/GuarantorImportHandler.java          |   77 +-
 .../importhandler/helper/ClientIdSerializer.java   |    8 +-
 .../helper/CodeValueDataIdSerializer.java          |    1 +
 .../helper/CurrencyDateCodeSerializer.java         |    3 +-
 .../importhandler/helper/DateSerializer.java       |    2 +-
 .../helper/EnumOptionDataIdSerializer.java         |    1 +
 .../helper/EnumOptionDataValueSerializer.java      |    1 +
 .../importhandler/helper/GroupIdSerializer.java    |    7 +-
 .../journalentry/JournalEntriesImportHandler.java  |  182 +-
 .../importhandler/loan/LoanImportHandler.java      |  277 +-
 .../loanrepayment/LoanRepaymentImportHandler.java  |   69 +-
 .../importhandler/office/OfficeImportHandler.java  |   52 +-
 .../RecurringDepositImportHandler.java             |  160 +-
 .../RecurringDepositTransactionImportHandler.java  |   81 +-
 .../savings/SavingsImportHandler.java              |  194 +-
 .../savings/SavingsTransactionImportHandler.java   |   72 +-
 .../sharedaccount/SharedAccountImportHandler.java  |  112 +-
 .../importhandler/staff/StaffImportHandler.java    |   71 +-
 .../importhandler/users/UserImportHandler.java     |   68 +-
 .../populator/AbstractWorkbookPopulator.java       |  187 +-
 .../bulkimport/populator/CenterSheetPopulator.java |   23 +-
 .../bulkimport/populator/ClientSheetPopulator.java |   14 +-
 .../bulkimport/populator/ExtrasSheetPopulator.java |   12 +-
 .../FixedDepositProductSheetPopulator.java         |  117 +-
 .../populator/GlAccountSheetPopulator.java         |    5 +-
 .../bulkimport/populator/GroupSheetPopulator.java  |   45 +-
 .../populator/LoanProductSheetPopulator.java       |   16 +-
 .../bulkimport/populator/OfficeSheetPopulator.java |   79 +-
 .../populator/PersonnelSheetPopulator.java         |  161 +-
 .../RecurringDepositProductSheetPopulator.java     |  130 +-
 .../bulkimport/populator/RoleSheetPopulator.java   |   12 +-
 .../populator/SavingsAccountSheetPopulator.java    |   50 +-
 .../populator/SavingsProductSheetPopulator.java    |   19 +-
 .../populator/SharedProductsSheetPopulator.java    |  106 +-
 .../bulkimport/populator/WorkbookPopulator.java    |    4 +-
 .../centers/CentersWorkbookPopulator.java          |  158 +-
 .../chartofaccounts/ChartOfAccountsWorkbook.java   |  264 +-
 .../client/ClientEntityWorkbookPopulator.java      |  399 +-
 .../client/ClientPersonWorkbookPopulator.java      |  597 ++-
 .../comparator/LoanComparatorByStatusActive.java   |   18 +-
 .../FixedDepositTransactionWorkbookPopulator.java  |  124 +-
 .../FixedDepositWorkbookPopulator.java             |  311 +-
 .../populator/group/GroupsWorkbookPopulator.java   |  170 +-
 .../guarantor/GuarantorWorkbookPopulator.java      |  329 +-
 .../JournalEntriesWorkbookPopulator.java           |  137 +-
 .../populator/loan/LoanWorkbookPopulator.java      |  329 +-
 .../LoanRepaymentWorkbookPopulator.java            |  141 +-
 .../populator/office/OfficeWorkbookPopulator.java  |   81 +-
 ...curringDepositTransactionWorkbookPopulator.java |  137 +-
 .../RecurringDepositWorkbookPopulator.java         |  281 +-
 .../SavingsTransactionsWorkbookPopulator.java      |  124 +-
 .../savings/SavingsWorkbookPopulator.java          |  242 +-
 .../SharedAccountWorkBookPopulator.java            |  241 +-
 .../populator/staff/StaffWorkbookPopulator.java    |   83 +-
 .../populator/users/UserWorkbookPopulator.java     |   94 +-
 .../service/BulkImportEventListener.java           |  100 +-
 .../BulkImportWorkbookPopulatorService.java        |    4 +-
 .../BulkImportWorkbookPopulatorServiceImpl.java    |  543 ++-
 .../service/BulkImportWorkbookService.java         |    5 +-
 .../service/BulkImportWorkbookServiceImpl.java     |  140 +-
 .../cache/PlatformCacheConfiguration.java          |    4 +-
 .../infrastructure/cache/api/CacheApiResource.java |   19 +-
 .../cache/api/CacheApiResourceSwagger.java         |   12 +-
 .../cache/command/UpdateCacheCommandHandler.java   |    5 +-
 .../infrastructure/cache/data/CacheData.java       |    2 +-
 .../infrastructure/cache/domain/CacheType.java     |    2 +-
 .../infrastructure/cache/domain/PlatformCache.java |    2 +-
 .../cache/domain/PlatformCacheRepository.java      |    2 +-
 .../cache/service/CacheWritePlatformService.java   |    2 +-
 ...CacheWritePlatformServiceJpaRepositoryImpl.java |    2 +-
 .../service/RuntimeDelegatingCacheManager.java     |    2 +-
 .../campaigns/constants/CampaignType.java          |    4 +-
 .../campaigns/email/EmailApiConstants.java         |    6 +-
 .../campaigns/email/ScheduledEmailConstants.java   |   26 +-
 .../campaigns/email/api/EmailApiResource.java      |    2 +-
 .../email/api/EmailCampaignApiResource.java        |   61 +-
 .../email/api/EmailConfigurationApiResource.java   |   14 +-
 .../email/data/EmailBusinessRulesData.java         |   23 +-
 .../campaigns/email/data/EmailCampaignData.java    |   49 +-
 .../email/data/EmailCampaignTimeLine.java          |    5 +-
 .../email/data/EmailCampaignValidator.java         |   83 +-
 .../email/data/EmailConfigurationData.java         |    1 +
 .../email/data/EmailConfigurationValidator.java    |   27 +-
 .../campaigns/email/data/EmailData.java            |   40 +-
 .../campaigns/email/data/EmailDataValidator.java   |  146 +-
 .../email/data/EmailMessageWithAttachmentData.java |   18 +-
 .../email/data/ScheduledEmailEnumerations.java     |    5 +-
 .../campaigns/email/domain/EmailCampaign.java      |  148 +-
 .../email/domain/EmailCampaignRepository.java      |    3 +-
 .../email/domain/EmailCampaignStatus.java          |   15 +-
 .../domain/EmailCampaignStatusEnumerations.java    |   21 +-
 .../campaigns/email/domain/EmailCampaignType.java  |   12 +-
 .../campaigns/email/domain/EmailConfiguration.java |    1 +
 .../email/domain/EmailConfigurationRepository.java |    4 +-
 .../campaigns/email/domain/EmailMessage.java       |   50 +-
 .../email/domain/EmailMessageAssembler.java        |    9 +-
 .../email/domain/EmailMessageEnumerations.java     |    6 +-
 .../email/domain/EmailMessageRepository.java       |    3 +-
 .../email/domain/EmailMessageStatusType.java       |    6 +-
 .../domain/ScheduledEmailAttachmentFileFormat.java |   23 +-
 ...cheduledEmailStretchyReportParamDateOption.java |   24 +-
 .../email/exception/EmailBusinessRuleNotFound.java |    3 +-
 ...ilCampaignMustBeClosedToBeDeletedException.java |    5 +-
 .../EmailCampaignMustBeClosedToEditException.java  |    1 -
 .../email/exception/EmailCampaignNotFound.java     |    5 +-
 .../EmailConfigurationSMTPUsernameNotValid.java    |    7 +-
 .../email/exception/EmailNotFoundException.java    |    2 +-
 .../ActivateEmailCampaignCommandHandler.java       |    1 +
 .../handler/CloseEmailCampaignCommandHandler.java  |    5 +-
 .../email/handler/CreateEmailCommandHandler.java   |    2 +-
 .../handler/DeleteEmailCampaignCommandHandler.java |    3 +-
 .../email/handler/DeleteEmailCommandHandler.java   |    2 +-
 .../ReactivateEmailCampaignCommandHandler.java     |    3 +-
 .../handler/UpdateEmailCampaignCommandHandler.java |    4 +-
 .../EmailCampaignReadPlatformServiceImpl.java      |   91 +-
 ...ailCampaignWritePlatformCommandHandlerImpl.java |    9 +-
 .../EmailConfigurationReadPlatformServiceImpl.java |   14 +-
 .../EmailConfigurationWritePlatformService.java    |    1 -
 ...EmailConfigurationWritePlatformServiceImpl.java |   45 +-
 .../email/service/EmailMessageJobEmailService.java |    1 -
 .../service/EmailMessageJobEmailServiceImpl.java   |   35 +-
 .../service/EmailReadPlatformServiceImpl.java      |   28 +-
 .../email/service/EmailWritePlatformService.java   |    2 +-
 ...EmailWritePlatformServiceJpaRepositoryImpl.java |   11 +-
 .../campaigns/helper/SmsConfigUtils.java           |   20 +-
 .../campaigns/sms/api/SmsCampaignApiResource.java  |   22 +-
 .../sms/constants/SmsCampaignEnumerations.java     |   16 +-
 .../sms/constants/SmsCampaignTriggerType.java      |    1 +
 .../campaigns/sms/data/SmsBusinessRulesData.java   |   12 +-
 .../campaigns/sms/data/SmsCampaignData.java        |   25 +-
 .../campaigns/sms/data/SmsProviderData.java        |    4 +-
 .../campaigns/sms/domain/SmsCampaign.java          |   32 +-
 .../sms/domain/SmsCampaignRepository.java          |    5 +-
 .../sms/domain/SmsCampaignStatusEnumerations.java  |   22 +-
 .../sms/exception/ConnectionFailureException.java  |    4 +-
 ...msCampaignMustBeClosedToBeDeletedException.java |    5 +-
 .../sms/exception/SmsCampaignNotFound.java         |    5 +-
 .../handler/CloseSmsCampaignCommandHandler.java    |    5 +-
 .../handler/DeleteSmsCampaignCommandHandler.java   |    3 +-
 .../ReactivateSmsCampaignCommandHandler.java       |    3 +-
 .../sms/serialization/SmsCampaignValidator.java    |   25 +-
 .../sms/service/SmsCampaignDomainService.java      |    3 +-
 .../sms/service/SmsCampaignDomainServiceImpl.java  |  246 +-
 ...SmsCampaignDropdownReadPlatformServiceImpl.java |   35 +-
 .../SmsCampaignReadPlatformServiceImpl.java        |    9 +-
 .../service/SmsCampaignWritePlatformService.java   |    4 +-
 .../SmsCampaignWritePlatformServiceJpaImpl.java    |  142 +-
 .../infrastructure/codes/CodeConstants.java        |    5 +-
 .../codes/api/CodeValuesApiResource.java           |   55 +-
 .../codes/api/CodeValuesApiResourceSwagger.java    |   18 +-
 .../infrastructure/codes/api/CodesApiResource.java |   29 +-
 .../codes/api/CodesApiResourceSwagger.java         |   18 +-
 .../infrastructure/codes/data/CodeData.java        |    2 +-
 .../infrastructure/codes/data/CodeValueData.java   |   23 +-
 .../fineract/infrastructure/codes/domain/Code.java |    2 +-
 .../codes/domain/CodeRepository.java               |    2 +-
 .../infrastructure/codes/domain/CodeValue.java     |   10 +-
 .../codes/domain/CodeValueRepository.java          |    2 +-
 .../codes/exception/CodeNotFoundException.java     |    2 +-
 .../exception/CodeValueNotFoundException.java      |   10 +-
 .../codes/handler/CreateCodeCommandHandler.java    |    2 +-
 .../handler/CreateCodeValueCommandHandler.java     |    2 +-
 .../codes/handler/DeleteCodeCommandHandler.java    |    2 +-
 .../handler/DeleteCodeValueCommandHandler.java     |    2 +-
 .../codes/handler/UpdateCodeCommandHandler.java    |    2 +-
 .../handler/UpdateCodeValueCommandHandler.java     |    2 +-
 .../CodeCommandFromApiJsonDeserializer.java        |    8 +-
 .../CodeValueCommandFromApiJsonDeserializer.java   |   17 +-
 .../codes/service/CodeReadPlatformServiceImpl.java |    2 +-
 .../service/CodeValueReadPlatformService.java      |    2 +-
 .../service/CodeValueWritePlatformService.java     |    2 +-
 ...ValueWritePlatformServiceJpaRepositoryImpl.java |   15 +-
 .../codes/service/CodeWritePlatformService.java    |    2 +-
 .../CodeWritePlatformServiceJpaRepositoryImpl.java |   11 +-
 .../ExternalServiceConfigurationApiConstant.java   |    3 +-
 .../ExternalServicesConfigurationApiResource.java  |   25 +-
 ...nalServicesConfigurationApiResourceSwagger.java |    5 +-
 .../api/GlobalConfigurationApiResource.java        |   45 +-
 .../api/GlobalConfigurationApiResourceSwagger.java |   18 +-
 .../command/UpdateGlobalConfigurationCommand.java  |    2 +-
 .../data/GlobalConfigurationData.java              |    2 +-
 .../data/GlobalConfigurationDataValidator.java     |   22 +-
 .../data/GlobalConfigurationPropertyData.java      |    8 +-
 .../configuration/data/SMTPCredentialsData.java    |    7 +-
 .../domain/ConfigurationDomainService.java         |    2 +-
 .../domain/ConfigurationDomainServiceJpa.java      |   20 +-
 .../configuration/domain/ExternalService.java      |    3 +-
 .../domain/ExternalServicePropertiesPK.java        |   12 +-
 .../domain/ExternalServicesProperties.java         |    1 +
 .../ExternalServicesPropertiesRepository.java      |    5 +-
 ...xternalServicesPropertiesRepositoryWrapper.java |    7 +-
 .../domain/GlobalConfigurationProperty.java        |   15 +-
 .../domain/GlobalConfigurationRepository.java      |    6 +-
 .../GlobalConfigurationRepositoryWrapper.java      |    3 +-
 ...GlobalConfigurationPropertyCannotBeModfied.java |    5 +-
 ...obalConfigurationPropertyNotFoundException.java |    2 +-
 .../UpdateGlobalConfigurationCommandHandler.java   |    2 +-
 ...onfigurationCommandFromApiJsonDeserializer.java |    6 +-
 .../service/ConfigurationReadPlatformService.java  |    2 +-
 .../ConfigurationReadPlatformServiceImpl.java      |    8 +-
 .../service/ExternalServicesConstants.java         |    8 +-
 ...ernalServicesPropertiesReadPlatformService.java |    2 +-
 ...lServicesPropertiesReadPlatformServiceImpl.java |   13 +-
 .../GlobalConfigurationWritePlatformService.java   |    3 +-
 ...ationWritePlatformServiceJpaRepositoryImpl.java |   13 +-
 .../core/api/ApiParameterHelper.java               |    3 +-
 .../core/api/ApiRequestParameterHelper.java        |    2 +-
 .../infrastructure/core/api/DateAdapter.java       |    7 +-
 .../core/api/JodaLocalDateAdapter.java             |    6 +-
 .../core/api/JodaMonthDayAdapter.java              |    6 +-
 .../infrastructure/core/api/JsonCommand.java       |   42 +-
 .../core/api/ParameterListExclusionStrategy.java   |    2 +-
 .../core/api/ParameterListInclusionStrategy.java   |    2 +-
 .../boot/AbstractApplicationConfiguration.java     |   15 +-
 .../core/boot/ApplicationExitUtil.java             |    5 +-
 .../infrastructure/core/boot/JDBCDriverConfig.java |    7 +-
 .../core/boot/WebFrontEndConfiguration.java        |   15 +-
 .../core/boot/WebTwoFactorXmlConfiguration.java    |    4 +-
 .../core/boot/WebXmlConfiguration.java             |    4 +-
 .../core/boot/WebXmlOauthConfiguration.java        |   11 +-
 .../core/data/ApiErrorMessageArg.java              |    2 +-
 .../core/data/ApiGlobalErrorResponse.java          |    6 +-
 .../core/data/ApiParameterError.java               |    7 +-
 .../core/data/CommandProcessingResult.java         |   25 +-
 .../core/data/CommandProcessingResultBuilder.java  |    6 +-
 .../core/data/DataValidatorBuilder.java            |   94 +-
 .../infrastructure/core/data/EnumOptionData.java   |   14 +-
 .../core/data/PaginationParameters.java            |    2 +-
 .../data/PaginationParametersDataValidator.java    |   37 +-
 .../core/domain/AbstractAuditableCustom.java       |    7 +-
 .../core/domain/AbstractPersistableCustom.java     |   13 +-
 .../core/domain/Base64EncodedImage.java            |    2 +-
 .../infrastructure/core/domain/EmailDetail.java    |    2 +-
 .../core/domain/FineractPlatformTenant.java        |    6 +-
 .../domain/FineractPlatformTenantConnection.java   |   16 +-
 .../infrastructure/core/domain/JdbcSupport.java    |    2 +
 .../core/domain/LocalDateInterval.java             |    2 +-
 .../core/domain/MySQLDictionaryCustom.java         |   32 +-
 .../infrastructure/core/domain/Tenant.java         |    2 +-
 .../AbstractPlatformDomainRuleException.java       |    2 +-
 .../AbstractPlatformResourceNotFoundException.java |    2 +-
 ...bstractPlatformServiceUnavailableException.java |    2 +-
 .../GeneralPlatformDomainRuleException.java        |    2 +-
 .../core/exception/InvalidJsonException.java       |    2 +-
 .../core/exception/MultiException.java             |   20 +-
 .../PlatformApiDataValidationException.java        |    2 +-
 .../exception/PlatformDataIntegrityException.java  |    2 +-
 .../exception/PlatformInternalServerException.java |    2 +-
 .../exception/UnrecognizedQueryParamException.java |    2 +-
 .../exception/UnsupportedParameterException.java   |    2 +-
 .../AccessDeniedExceptionMapper.java               |    2 +-
 .../BadCredentialsExceptionMapper.java             |    2 +-
 .../InvalidJsonExceptionMapper.java                |    2 +-
 .../InvalidTenantIdentifierExceptionMapper.java    |    2 +-
 .../exceptionmapper/JsonSyntaxExceptionMapper.java |    2 +-
 .../MalformedJsonExceptionMapper.java              |    2 +-
 .../NoAuthorizationExceptionMapper.java            |    2 +-
 .../PlatformApiDataValidationExceptionMapper.java  |    6 +-
 .../PlatformDataIntegrityExceptionMapper.java      |    7 +-
 .../PlatformDomainRuleExceptionMapper.java         |    2 +-
 .../PlatformInternalServerExceptionMapper.java     |    2 +-
 .../PlatformResourceNotFoundExceptionMapper.java   |    2 +-
 .../UnAuthenticatedUserExceptionMapper.java        |    2 +-
 .../UnrecognizedQueryParamExceptionMapper.java     |    6 +-
 .../UnsupportedCommandExceptionMapper.java         |   10 +-
 .../UnsupportedParameterExceptionMapper.java       |   10 +-
 .../core/filters/ResponseCorsFilter.java           |    5 +-
 .../AbstractFromApiJsonDeserializer.java           |    2 +-
 .../AbstractFromCommandJsonDeserializer.java       |    2 +-
 .../ApiRequestJsonSerializationSettings.java       |    2 +-
 .../CommandProcessingResultJsonSerializer.java     |    2 +-
 .../core/serialization/CommandSerializer.java      |    2 +-
 .../CommandSerializerDefaultToJson.java            |    2 +-
 .../DatatableCommandFromApiJsonDeserializer.java   |   32 +-
 .../serialization/DefaultToApiJsonSerializer.java  |    8 +-
 ...hPrettyPrintingOffJsonSerializerGoogleGson.java |    2 +-
 ...thPrettyPrintingOnJsonSerializerGoogleGson.java |    2 +-
 .../serialization/FromApiJsonDeserializer.java     |    2 +-
 .../serialization/FromCommandJsonDeserializer.java |    2 +-
 .../core/serialization/FromJsonHelper.java         |    5 +-
 .../serialization/GoogleGsonSerializerHelper.java  |    7 +-
 .../core/serialization/JsonParserHelper.java       |   91 +-
 .../core/serialization/ToApiJsonSerializer.java    |    2 +-
 ...AbandonedConnectionCleanupShutdownListener.java |   19 +-
 .../infrastructure/core/service/DateUtils.java     |    4 +-
 .../service/GmailBackedPlatformEmailService.java   |   21 +-
 .../fineract/infrastructure/core/service/Page.java |    2 +-
 .../core/service/PlatformEmailService.java         |    3 +-
 .../core/service/RoutingDataSource.java            |    2 +-
 .../core/service/RoutingDataSourceService.java     |    2 +-
 .../core/service/SearchParameters.java             |   33 +-
 .../core/service/TenantDatabaseUpgradeService.java |   93 +-
 .../core/service/ThreadLocalContextUtil.java       |    2 +-
 .../TomcatJdbcDataSourcePerTenantService.java      |   21 +-
 .../api/CreditBureauConfigurationAPI.java          |   37 +-
 .../data/CreditBureauConfigurationData.java        |    9 +-
 .../creditbureau/data/CreditBureauData.java        |   11 +-
 .../data/CreditBureauLoanProductMappingData.java   |   17 +-
 .../creditbureau/data/CreditBureauProduct.java     |    3 +-
 .../data/OrganisationCreditBureauData.java         |   14 +-
 .../creditbureau/domain/CreditBureau.java          |    1 -
 .../domain/CreditBureauConfiguration.java          |    1 +
 .../domain/CreditBureauLoanProductMapping.java     |   49 +-
 .../domain/CreditBureauRepository.java             |    4 +-
 .../domain/OrganisationCreditBureau.java           |    2 -
 ...editBureauLoanProductMappingCommandHandler.java |    3 +-
 ...editBureauLoanProductMappingCommandHandler.java |    3 +-
 ...CreditBureauCommandFromApiJsonDeserializer.java |   33 +-
 ...uLoanProductCommandFromApiJsonDeserializer.java |   89 +-
 ...uLoanProductMappingReadPlatformServiceImpl.java |    5 +-
 ...LoanProductMappingWritePlatformServiceImpl.java |    6 +-
 .../CreditBureauReadConfigurationServiceImpl.java  |   10 +-
 .../CreditBureauReadPlatformServiceImpl.java       |    7 +-
 ...rganisationCreditBureauReadPlatformService.java |    1 +
 ...isationCreditBureauReadPlatformServiceImpl.java |   11 +-
 ...ationCreditBureauWritePlatflormServiceImpl.java |   12 +-
 .../dataqueries/api/DataTableApiConstant.java      |    4 +-
 .../dataqueries/api/DatatablesApiResource.java     |  138 +-
 .../api/DatatablesApiResourceSwagger.java          |   80 +-
 .../api/EntityDatatableChecksApiResource.java      |   48 +-
 .../EntityDatatableChecksApiResourceSwagger.java   |   20 +-
 .../dataqueries/api/ReportsApiResource.java        |   38 +-
 .../dataqueries/api/ReportsApiResourceSwagger.java |   25 +-
 .../dataqueries/api/RunreportsApiResource.java     |   43 +-
 .../api/RunreportsApiResourceSwagger.java          |    4 +
 .../dataqueries/data/DataTableValidator.java       |    3 +-
 .../dataqueries/data/DatatableData.java            |   13 +-
 .../data/EntityDataTableChecksData.java            |    2 +-
 .../data/EntityDataTableChecksTemplateData.java    |   29 +-
 .../dataqueries/data/EntityTables.java             |   46 +-
 .../dataqueries/data/GenericResultsetData.java     |    2 +-
 .../dataqueries/data/ReportData.java               |    2 +-
 .../dataqueries/data/ReportParameterData.java      |    2 +-
 .../dataqueries/data/ReportParameterJoinData.java  |    2 +-
 .../data/ResultsetColumnHeaderData.java            |   10 +-
 .../dataqueries/data/ResultsetColumnValueData.java |    2 +-
 .../dataqueries/data/StatusEnum.java               |    2 +-
 .../dataqueries/domain/EntityDatatableChecks.java  |    7 +-
 .../domain/EntityDatatableChecksRepository.java    |   14 +-
 .../infrastructure/dataqueries/domain/Report.java  |   17 +-
 .../dataqueries/domain/ReportParameter.java        |    2 +-
 .../domain/ReportParameterRepository.java          |    2 +-
 .../dataqueries/domain/ReportParameterUsage.java   |   41 +-
 .../domain/ReportParameterUsageRepository.java     |    6 +-
 .../dataqueries/domain/ReportRepository.java       |    2 +-
 .../domain/ReportRepositoryWrapper.java            |   15 +-
 .../exception/DatatableEntryRequiredException.java |    9 +-
 .../exception/DatatableNotFoundException.java      |    2 +-
 .../exception/DatatableSystemErrorException.java   |    2 +-
 ...EntityDatatableCheckAlreadyExistsException.java |   19 +-
 .../EntityDatatableCheckNotAllowException.java     |    8 +-
 .../EntityDatatableCheckNotSupportedException.java |    7 +-
 .../EntityDatatableChecksNotFoundException.java    |    5 +-
 .../exception/ReportNotFoundException.java         |    2 +-
 .../ReportParameterNotFoundException.java          |    2 +-
 .../handler/CreateDatatableCommandHandler.java     |    2 +-
 .../CreateDatatableEntryCommandHandler.java        |    2 +-
 .../CreateEntityDatatableChecksCommandHandler.java |    5 +-
 .../handler/CreateReportCommandHandler.java        |    2 +-
 .../handler/DeleteDatatableCommandHandler.java     |    2 +-
 .../DeleteEntityDatatableChecksCommandHandler.java |    5 +-
 ...eleteOneToManyDatatableEntryCommandHandler.java |    2 +-
 ...DeleteOneToOneDatatableEntryCommandHandler.java |    2 +-
 .../handler/DeleteReportCommandHandler.java        |    2 +-
 .../handler/RegisterDatatableCommandHandler.java   |    5 +-
 .../handler/UpdateDatatableCommandHandler.java     |    2 +-
 ...pdateOneToManyDatatableEntryCommandHandler.java |    6 +-
 ...UpdateOneToOneDatatableEntryCommandHandler.java |    6 +-
 .../handler/UpdateReportCommandHandler.java        |    2 +-
 .../ReportCommandFromApiJsonDeserializer.java      |    2 +-
 .../EntityDatatableChecksDataValidator.java        |   17 +-
 ...tityDatatableChecksReadPlatformServiceImpl.java |    2 +-
 .../service/EntityDatatableChecksReadService.java  |    2 +-
 .../EntityDatatableChecksWritePlatformService.java |   10 +-
 ...ityDatatableChecksWritePlatformServiceImpl.java |   17 +-
 .../dataqueries/service/GenericDataService.java    |    2 +-
 .../service/GenericDataServiceImpl.java            |   46 +-
 .../dataqueries/service/ReadReportingService.java  |   14 +-
 .../service/ReadReportingServiceImpl.java          |  178 +-
 .../service/ReadWriteNonCoreDataService.java       |    2 +-
 .../service/ReadWriteNonCoreDataServiceImpl.java   |  220 +-
 .../service/ReportWritePlatformService.java        |    2 +-
 .../service/ReportWritePlatformServiceImpl.java    |   14 +-
 .../api/DocumentManagementApiResource.java         |   85 +-
 .../api/DocumentManagementApiResourceSwagger.java  |   14 +-
 .../documentmanagement/api/ImagesApiResource.java  |   12 +-
 .../api/ImagesApiResourceSwagger.java              |    1 +
 .../command/DocumentCommand.java                   |    2 +-
 .../command/DocumentCommandValidator.java          |   12 +-
 .../contentrepository/ContentRepositoryUtils.java  |   19 +-
 .../FileSystemContentRepository.java               |    5 +-
 .../contentrepository/S3ContentRepository.java     |    5 +-
 .../documentmanagement/data/DocumentData.java      |    2 +-
 .../documentmanagement/data/ImageData.java         |    2 +-
 .../documentmanagement/domain/Document.java        |    2 +-
 .../domain/DocumentRepository.java                 |    2 +-
 .../documentmanagement/domain/Image.java           |    2 +-
 .../documentmanagement/domain/ImageRepository.java |    2 +-
 .../documentmanagement/domain/StorageType.java     |    1 +
 .../exception/ContentManagementException.java      |    8 +-
 .../exception/DocumentNotFoundException.java       |    4 +-
 ...idEntityTypeForDocumentManagementException.java |    2 +-
 .../service/DocumentReadPlatformService.java       |    2 +-
 .../service/DocumentReadPlatformServiceImpl.java   |    2 +-
 .../service/DocumentWritePlatformService.java      |    5 +-
 ...umentWritePlatformServiceJpaRepositoryImpl.java |   26 +-
 .../service/ImageReadPlatformService.java          |    2 +-
 .../service/ImageReadPlatformServiceImpl.java      |   11 +-
 ...ImageWritePlatformServiceJpaRepositoryImpl.java |   10 +-
 .../FineractEntityAccessConstants.java             |    9 +-
 .../api/FineractEntityApiResource.java             |    4 +-
 .../api/FineractEntityApiResourceConstants.java    |    4 +-
 .../data/FineractEntityAccessData.java             |    7 +-
 .../data/FineractEntityDataValidator.java          |   28 +-
 .../data/FineractEntityRelationData.java           |    2 +-
 .../data/FineractEntityToEntityMappingData.java    |    4 +-
 .../entityaccess/domain/FineractEntity.java        |    8 +-
 .../entityaccess/domain/FineractEntityAccess.java  |   36 +-
 .../domain/FineractEntityAccessRepository.java     |    3 +-
 .../FineractEntityAccessRepositoryWrapper.java     |    7 +-
 .../domain/FineractEntityAccessType.java           |   16 +-
 .../domain/FineractEntityRelation.java             |   33 +-
 .../domain/FineractEntityRelationRepository.java   |    2 +-
 .../FineractEntityRelationRepositoryWrapper.java   |   11 +-
 .../domain/FineractEntityToEntityMapping.java      |    7 +-
 .../FineractEntityToEntityMappingRepository.java   |    8 +-
 ...ractEntityToEntityMappingRepositoryWrapper.java |    6 +-
 .../entityaccess/domain/FineractEntityType.java    |   35 +-
 ...FineractEntityAccessConfigurationException.java |   11 +-
 .../FineractEntityAccessNotFoundException.java     |    6 +-
 ...ineractEntityMappingConfigurationException.java |    5 +-
 ...FineractEntityToEntityMappingDateException.java |    5 +-
 .../NotOfficeSpecificProductException.java         |    8 +-
 .../CreateEntityToEntityMappingCommandHandler.java |    2 +-
 .../UpdateEntityToEntityMappingCommandHandler.java |    2 +-
 .../service/FineractEntityAccessReadService.java   |    8 +-
 .../FineractEntityAccessReadServiceImpl.java       |   73 +-
 .../service/FineractEntityAccessUtil.java          |   76 +-
 .../service/FineractEntityAccessWriteService.java  |    4 +-
 .../FineractEntityAccessWriteServiceImpl.java      |   23 +-
 .../fineract/infrastructure/gcm/GcmConstants.java  |    4 +-
 .../gcm/api/DeviceRegistrationApiConstants.java    |    1 +
 .../gcm/api/DeviceRegistrationApiResource.java     |    2 +-
 .../gcm/domain/DeviceRegistration.java             |    3 +-
 .../gcm/domain/DeviceRegistrationData.java         |    9 +-
 .../gcm/domain/DeviceRegistrationRepository.java   |    8 +-
 .../DeviceRegistrationRepositoryWrapper.java       |    6 +-
 .../infrastructure/gcm/domain/Message.java         |   20 +-
 .../infrastructure/gcm/domain/MulticastResult.java |   12 +-
 .../gcm/domain/NotificationConfigurationData.java  |    8 +-
 .../fineract/infrastructure/gcm/domain/Result.java |    8 +-
 .../fineract/infrastructure/gcm/domain/Sender.java |  222 +-
 .../DeviceRegistrationNotFoundException.java       |   10 +-
 .../gcm/exception/InvalidRequestException.java     |    3 +-
 .../DeviceRegistrationReadPlatformServiceImpl.java |   35 +-
 ...DeviceRegistrationWritePlatformServiceImpl.java |   48 +-
 .../gcm/service/NotificationSenderService.java     |   36 +-
 .../infrastructure/hooks/api/HookApiConstants.java |   14 +-
 .../infrastructure/hooks/api/HookApiResource.java  |  104 +-
 .../hooks/api/HookApiResourceSwagger.java          |   30 +-
 .../fineract/infrastructure/hooks/data/Event.java  |    3 +-
 .../hooks/data/EventResultSetExtractor.java        |   20 +-
 .../fineract/infrastructure/hooks/data/Field.java  |   10 +-
 .../infrastructure/hooks/data/HookData.java        |   36 +-
 .../hooks/data/HookTemplateData.java               |    6 +-
 .../fineract/infrastructure/hooks/domain/Hook.java |    4 +-
 .../hooks/domain/HookConfiguration.java            |   10 +-
 .../hooks/domain/HookConfigurationRepository.java  |    7 +-
 .../hooks/domain/HookRepository.java               |    7 +-
 .../infrastructure/hooks/domain/HookResource.java  |    6 +-
 .../infrastructure/hooks/domain/HookTemplate.java  |    2 +-
 .../hooks/domain/HookTemplateRepository.java       |    4 +-
 .../infrastructure/hooks/event/HookEvent.java      |    3 +-
 .../hooks/exception/HookNotFoundException.java     |    9 +-
 .../exception/HookTemplateNotFoundException.java   |   10 +-
 .../hooks/handler/CreateHookCommandHandler.java    |    3 +-
 .../hooks/handler/DeleteHookCommandHandler.java    |    3 +-
 .../hooks/handler/UpdateHookCommandHandler.java    |    6 +-
 .../hooks/listener/FineractHookListener.java       |   17 +-
 .../hooks/processor/HookProcessor.java             |    4 +-
 .../hooks/processor/HookProcessorProvider.java     |    9 +-
 .../hooks/processor/ProcessorHelper.java           |   25 +-
 .../hooks/processor/TwilioHookProcessor.java       |   61 +-
 .../hooks/processor/WebHookProcessor.java          |   31 +-
 .../hooks/processor/WebHookService.java            |   22 +-
 .../HookCommandFromApiJsonDeserializer.java        |   74 +-
 .../hooks/service/HookReadPlatformService.java     |    2 +-
 .../hooks/service/HookReadPlatformServiceImpl.java |   69 +-
 .../HookWritePlatformServiceJpaRepositoryImpl.java |  153 +-
 .../jobs/annotation/CronMethodParser.java          |   14 +-
 .../jobs/api/SchedulerApiResource.java             |   16 +-
 .../jobs/api/SchedulerApiResourceSwagger.java      |    6 +-
 .../jobs/api/SchedulerJobApiConstants.java         |   17 +-
 .../jobs/api/SchedulerJobApiResource.java          |   45 +-
 .../jobs/api/SchedulerJobApiResourceSwagger.java   |   11 +-
 .../jobs/data/JobDetailDataValidator.java          |    6 +-
 .../jobs/data/JobDetailHistoryData.java            |    2 +-
 .../infrastructure/jobs/domain/JobParameter.java   |   15 +-
 .../jobs/domain/JobParameterRepository.java        |    2 +-
 .../jobs/domain/ScheduledJobDetailRepository.java  |    3 +-
 .../jobs/domain/ScheduledJobRunHistory.java        |    4 +-
 .../domain/ScheduledJobRunHistoryRepository.java   |    4 +-
 .../jobs/exception/JobNotFoundException.java       |    2 +-
 .../exception/OperationNotAllowedException.java    |    6 +-
 .../infrastructure/jobs/service/JobName.java       |   59 +-
 .../jobs/service/JobRegisterServiceImpl.java       |   26 +-
 ...dularWritePlatformServiceJpaRepositoryImpl.java |    4 +-
 .../jobs/service/SchedulerJobListener.java         |   14 +-
 .../service/SchedulerJobRunnerReadServiceImpl.java |   15 +-
 .../jobs/service/SchedulerServiceConstants.java    |    2 +-
 .../jobs/service/SchedulerTriggerListener.java     |    8 +-
 .../infrastructure/openjpa/OpenJpaDialect.java     |   38 +-
 .../openjpa/OpenJpaVendorAdapter.java              |   54 +-
 .../report/annotation/ReportService.java           |    2 +-
 .../provider/ReportingProcessServiceProvider.java  |    5 +-
 .../report/service/ReportingProcessService.java    |    2 +-
 .../ReportMailingJobConstants.java                 |   26 +-
 .../api/ReportMailingJobApiResource.java           |   98 +-
 .../api/ReportMailingJobApiResourceSwagger.java    |   41 +-
 .../api/ReportMailingJobRunHistoryApiResource.java |   28 +-
 ...portMailingJobRunHistoryApiResourceSwagger.java |    7 +-
 .../data/ReportMailingJobConfigurationData.java    |    1 +
 .../data/ReportMailingJobData.java                 |   34 +-
 .../ReportMailingJobEmailAttachmentFileFormat.java |   20 +-
 .../data/ReportMailingJobEmailData.java            |    1 +
 .../data/ReportMailingJobPreviousRunStatus.java    |    9 +-
 .../data/ReportMailingJobRunHistoryData.java       |    9 +-
 ...ortMailingJobStretchyReportParamDateOption.java |   32 +-
 .../data/ReportMailingJobTimelineData.java         |    4 +-
 .../reportmailingjob/domain/ReportMailingJob.java  |   97 +-
 .../domain/ReportMailingJobConfiguration.java      |    6 +-
 .../ReportMailingJobConfigurationRepository.java   |    4 +-
 .../ReportMailingJobEmailAttachmentFileFormat.java |   24 +-
 .../domain/ReportMailingJobRepository.java         |    4 +-
 .../domain/ReportMailingJobRepositoryWrapper.java  |   11 +-
 .../domain/ReportMailingJobRunHistory.java         |   11 +-
 .../ReportMailingJobRunHistoryRepository.java      |    3 +-
 ...rtMailingJobConfigurationNotFoundException.java |    7 +-
 .../ReportMailingJobNotFoundException.java         |    7 +-
 ...eportMailingJobRunHistoryNotFoundException.java |    8 +-
 .../CreateReportMailingJobCommandHandler.java      |    1 +
 .../DeleteReportMailingJobCommandHandler.java      |    1 +
 .../UpdateReportMailingJobCommandHandler.java      |    1 +
 .../reportmailingjob/helper/IPv4Helper.java        |   54 +-
 ...MailingJobConfigurationReadPlatformService.java |    1 +
 ...ingJobConfigurationReadPlatformServiceImpl.java |    5 +-
 .../service/ReportMailingJobEmailService.java      |    4 +-
 .../service/ReportMailingJobEmailServiceImpl.java  |   35 +-
 .../ReportMailingJobReadPlatformService.java       |    7 +-
 .../ReportMailingJobReadPlatformServiceImpl.java   |   29 +-
 ...ortMailingJobRunHistoryReadPlatformService.java |   10 +-
 ...ailingJobRunHistoryReadPlatformServiceImpl.java |   12 +-
 .../ReportMailingJobWritePlatformService.java      |    4 +
 .../ReportMailingJobWritePlatformServiceImpl.java  |  123 +-
 .../util/ReportMailingJobDateUtil.java             |   27 +-
 .../validation/ReportMailingJobValidator.java      |  151 +-
 .../security/api/AuthenticationApiResource.java    |   22 +-
 .../api/AuthenticationApiResourceSwagger.java      |    5 +-
 .../security/api/TwoFactorApiResource.java         |   24 +-
 .../api/TwoFactorConfigurationApiResource.java     |   16 +-
 .../security/api/UserDetailsApiResource.java       |   22 +-
 .../api/UserDetailsApiResourceSwagger.java         |    5 +-
 .../InvalidateTFAccessTokenCommandHandler.java     |   22 +-
 .../UpdateTwoFactorConfigCommandHandler.java       |    9 +-
 .../constants/TwoFactorConfigurationConstants.java |   20 +-
 .../security/data/AuthenticatedOauthUserData.java  |    2 +-
 .../security/data/AuthenticatedUserData.java       |    4 +-
 .../infrastructure/security/data/OTPMetadata.java  |    3 +-
 .../infrastructure/security/data/OTPRequest.java   |    7 +-
 .../security/data/PlatformRequestLog.java          |    2 +-
 .../data/TwoFactorConfigurationValidator.java      |   38 +-
 .../domain/BasicPasswordEncodablePlatformUser.java |    2 +-
 .../security/domain/OTPRequestRepository.java      |    1 -
 .../security/domain/PlatformUser.java              |    2 +-
 .../security/domain/PlatformUserRepository.java    |    2 +-
 .../security/domain/TFAccessToken.java             |   13 +-
 .../security/domain/TFAccessTokenRepository.java   |    2 +-
 .../security/domain/TwoFactorConfiguration.java    |   11 +-
 .../domain/TwoFactorConfigurationRepository.java   |    4 +-
 .../exception/ForcePasswordResetException.java     |    5 +-
 .../exception/InvalidTenantIdentiferException.java |    2 +-
 .../exception/NoAuthorizationException.java        |    2 +-
 .../OTPDeliveryMethodInvalidException.java         |    4 +-
 .../security/exception/ResetPasswordException.java |    5 +-
 .../InsecureTwoFactorAuthenticationFilter.java     |   13 +-
 .../TenantAwareBasicAuthenticationFilter.java      |   20 +-
 .../filter/TenantAwareTenantIdentifierFilter.java  |   23 +-
 .../filter/TwoFactorAuthenticationFilter.java      |   58 +-
 .../service/BasicAuthTenantDetailsService.java     |    2 +-
 .../service/BasicAuthTenantDetailsServiceJdbc.java |    6 +-
 .../security/service/JdbcTenantDetailsService.java |    2 +-
 .../security/service/PlatformPasswordEncoder.java  |    2 +-
 .../security/service/PlatformSecurityContext.java  |    2 +-
 .../service/PlatformUserDetailsService.java        |    2 +-
 .../security/service/RandomOTPGenerator.java       |    2 +-
 .../security/service/RandomPasswordGenerator.java  |    2 +-
 .../SpringSecurityPlatformSecurityContext.java     |   19 +-
 .../TenantAwareJpaPlatformUserDetailsService.java  |    2 +-
 .../security/service/TenantDetailsService.java     |    2 +-
 .../service/TwoFactorConfigurationService.java     |   11 +-
 .../service/TwoFactorConfigurationServiceImpl.java |   88 +-
 .../security/service/TwoFactorServiceImpl.java     |   85 +-
 .../security/service/TwoFactorUtils.java           |    8 +-
 .../security/utils/ColumnValidator.java            |   80 +-
 .../infrastructure/security/utils/SQLBuilder.java  |  102 +-
 .../security/utils/SQLInjectionValidator.java      |   66 +-
 .../security/vote/SelfServiceUserAccessVote.java   |   11 +-
 .../infrastructure/sms/SmsApiConstants.java        |    2 +-
 .../infrastructure/sms/api/SmsApiResource.java     |    6 +-
 .../fineract/infrastructure/sms/data/SmsData.java  |    2 +-
 .../infrastructure/sms/data/SmsDataValidator.java  |    9 +-
 .../sms/data/SmsMessageApiQueueResourceData.java   |    1 +
 .../sms/data/SmsMessageApiReportResourceData.java  |    5 +-
 .../sms/data/SmsMessageApiResponseData.java        |    1 +
 .../sms/data/SmsMessageDeliveryReportData.java     |    8 +-
 .../infrastructure/sms/domain/SmsMessage.java      |   22 +-
 .../sms/domain/SmsMessageAssembler.java            |    6 +-
 .../sms/domain/SmsMessageEnumerations.java         |   10 +-
 .../sms/domain/SmsMessageRepository.java           |    2 +-
 .../sms/domain/SmsMessageStatusType.java           |    5 +-
 .../sms/exception/SmsNotFoundException.java        |    2 +-
 .../sms/handler/CreateSmsCommandHandler.java       |    2 +-
 .../sms/handler/DeleteSmsCommandHandler.java       |    2 +-
 .../sms/handler/UpdateSmsCommandHandler.java       |    2 +-
 .../scheduler/SmsMessageScheduledJobService.java   |   13 +-
 .../SmsMessageScheduledJobServiceImpl.java         |   97 +-
 .../sms/service/SmsReadPlatformServiceImpl.java    |   16 +-
 .../sms/service/SmsWritePlatformService.java       |    2 +-
 .../SmsWritePlatformServiceJpaRepositoryImpl.java  |   11 +-
 .../survey/api/PovertyLineApiResource.java         |    3 +-
 .../survey/api/SurveyApiConstants.java             |    3 +-
 .../survey/api/SurveyApiResource.java              |   22 +-
 .../survey/api/SurveyApiResourceSwagger.java       |   15 +-
 .../survey/data/LikelihoodDataValidator.java       |    6 +-
 .../survey/data/LikelihoodStatus.java              |    4 +-
 .../survey/data/PovertyLineData.java               |    5 +-
 .../survey/data/PpiPovertyLineData.java            |    5 +-
 .../infrastructure/survey/data/SurveyData.java     |    3 +-
 .../survey/domain/LikelihoodRepository.java        |    6 +-
 .../handler/FullFilSurveyCommandHandler.java       |    3 +-
 .../handler/RegisterSurveyCommandHandler.java      |    1 -
 .../handler/UpdateLikelihoodCommandHandler.java    |    1 -
 .../survey/service/PovertyLineServiceImpl.java     |   18 +-
 .../survey/service/ReadLikelihoodService.java      |    1 +
 .../survey/service/ReadSurveyServiceImpl.java      |   22 +-
 .../survey/service/WriteLikelihoodServiceImpl.java |    4 +-
 .../interoperation/api/InteropApiResource.java     |  217 +-
 .../interoperation/api/InteropWrapperBuilder.java  |    4 +-
 .../interoperation/data/ExtensionData.java         |    8 +-
 .../fineract/interoperation/data/GeoCodeData.java  |    8 +-
 .../interoperation/data/InteropAccountData.java    |   62 +-
 .../data/InteropIdentifierAccountResponseData.java |    7 +-
 .../data/InteropIdentifierRequestData.java         |   15 +-
 .../data/InteropIdentifiersResponseData.java       |    3 +-
 .../data/InteropQuoteRequestData.java              |   38 +-
 .../data/InteropQuoteResponseData.java             |   24 +-
 .../interoperation/data/InteropRequestData.java    |   36 +-
 .../interoperation/data/InteropResponseData.java   |   15 +-
 .../data/InteropTransactionData.java               |   60 +-
 .../data/InteropTransactionRequestData.java        |   31 +-
 .../InteropTransactionRequestResponseData.java     |   20 +-
 .../data/InteropTransactionTypeData.java           |   23 +-
 .../data/InteropTransactionsData.java              |    5 +-
 .../data/InteropTransferRequestData.java           |   21 +-
 .../data/InteropTransferResponseData.java          |   19 +-
 .../fineract/interoperation/data/MoneyData.java    |   12 +-
 .../interoperation/domain/InteropActionState.java  |    3 +-
 .../interoperation/domain/InteropAmountType.java   |    3 +-
 .../interoperation/domain/InteropIdentifier.java   |   33 +-
 .../domain/InteropIdentifierRepository.java        |    3 +-
 .../domain/InteropIdentifierType.java              |    9 +-
 .../domain/InteropInitiatorType.java               |    5 +-
 .../domain/InteropTransactionRole.java             |    5 +-
 .../domain/InteropTransactionScenario.java         |    6 +-
 .../domain/InteropTransferActionType.java          |    4 +-
 .../handler/CommitInteropTransferHandler.java      |    2 +-
 .../handler/CreateInteropIdentifierHandler.java    |    2 +-
 .../handler/CreateInteropQuoteHandler.java         |    2 +-
 .../handler/CreateInteropRequestHandler.java       |    2 +-
 .../handler/DeleteInteropIdentifierHandler.java    |    2 +-
 .../handler/PrepareInteropTransferHandler.java     |    2 +-
 .../serialization/InteropDataValidator.java        |   13 +-
 .../interoperation/service/InteropService.java     |   12 +-
 .../interoperation/service/InteropServiceImpl.java |  126 +-
 .../fineract/interoperation/util/MathUtil.java     |  118 +-
 .../fineract/mix/api/MixReportApiResource.java     |    8 +-
 .../fineract/mix/api/MixTaxonomyApiResource.java   |   12 +-
 .../mix/api/MixTaxonomyMappingApiResource.java     |    6 +-
 .../apache/fineract/mix/data/MixTaxonomyData.java  |    2 +-
 .../fineract/mix/data/MixTaxonomyMappingData.java  |    2 +-
 .../apache/fineract/mix/data/NamespaceData.java    |    2 +-
 .../org/apache/fineract/mix/data/XBRLData.java     |    2 +-
 .../mix/domain/MixTaxonomyMappingRepository.java   |    5 +-
 .../MixTaxonomyMappingReadPlatformServiceImpl.java |    2 +-
 .../MixTaxonomyReadPlatformServiceImpl.java        |    2 +-
 .../service/NamespaceReadPlatformServiceImpl.java  |    2 +-
 .../apache/fineract/mix/service/XBRLBuilder.java   |    5 +-
 .../fineract/mix/service/XBRLResultService.java    |    2 +-
 .../mix/service/XBRLResultServiceImpl.java         |   73 +-
 .../notification/api/NotificationApiResource.java  |   30 +-
 .../cache/CacheNotificationResponseHeader.java     |    4 +-
 .../config/MessagingConfiguration.java             |   22 +-
 .../notification/data/NotificationData.java        |    3 +-
 .../fineract/notification/data/TopicData.java      |    6 +-
 .../fineract/notification/domain/Notification.java |    2 +-
 .../notification/domain/NotificationMapper.java    |    1 -
 .../domain/NotificationRepository.java             |    1 -
 .../apache/fineract/notification/domain/Topic.java |    3 +-
 .../notification/domain/TopicRepository.java       |    2 +
 .../notification/domain/TopicSubscriber.java       |    3 +-
 .../domain/TopicSubscriberRepository.java          |    1 +
 .../NotificationEventListener.java                 |   19 +-
 .../eventandlistener/NotificationEventService.java |    1 +
 .../eventandlistener/SpringEventListener.java      |   19 +-
 .../eventandlistener/SpringEventPublisher.java     |    1 +
 .../service/NotificationDomainServiceImpl.java     |  327 +-
 ...NotificationGeneratorReadRepositoryWrapper.java |    2 -
 ...ficationGeneratorReadRepositoryWrapperImpl.java |    2 +-
 .../NotificationGeneratorWritePlatformService.java |    2 +-
 .../NotificationMapperReadRepositoryWrapper.java   |    1 -
 .../NotificationMapperWritePlatformService.java    |    1 -
 .../NotificationReadPlatformServiceImpl.java       |   53 +-
 .../service/NotificationWritePlatformService.java  |    9 +-
 .../NotificationWritePlatformServiceImpl.java      |   49 +-
 .../notification/service/TopicDomainService.java   |   18 +-
 .../service/TopicDomainServiceImpl.java            |   36 +-
 .../TopicSubscriberReadPlatformServiceImpl.java    |    2 +-
 ...riberWritePlatformServiceJpaRepositoryImpl.java |    2 +-
 .../holiday/api/HolidaysApiResource.java           |   58 +-
 .../holiday/api/HolidaysApiResourceSwagger.java    |   30 +-
 .../holiday/data/HolidayDataValidator.java         |   26 +-
 .../organisation/holiday/domain/Holiday.java       |   17 +-
 .../holiday/domain/HolidayRepositoryWrapper.java   |    3 +-
 .../holiday/domain/HolidayStatusType.java          |    2 +-
 .../holiday/domain/RescheduleType.java             |   35 +-
 .../exception/HolidayNotFoundException.java        |    2 +-
 .../holiday/service/HolidayEnumerations.java       |    4 +-
 .../service/HolidayReadPlatformServiceImpl.java    |    5 +-
 .../organisation/holiday/service/HolidayUtil.java  |    5 +-
 ...lidayWritePlatformServiceJpaRepositoryImpl.java |   27 +-
 .../monetary/api/CurrenciesApiResource.java        |   17 +-
 .../monetary/api/CurrenciesApiResourceSwagger.java |   29 +-
 .../data/ApplicationCurrencyConfigurationData.java |    2 +-
 .../organisation/monetary/data/CurrencyData.java   |   22 +-
 .../organisation/monetary/data/MoneyData.java      |    2 +-
 .../monetary/domain/ApplicationCurrency.java       |    2 +-
 .../domain/ApplicationCurrencyRepository.java      |    6 +-
 .../ApplicationCurrencyRepositoryWrapper.java      |    2 +-
 .../monetary/domain/MonetaryCurrency.java          |    2 +-
 .../organisation/monetary/domain/Money.java        |    6 +-
 .../organisation/monetary/domain/MoneyHelper.java  |    6 +-
 .../monetary/exception/CurrencyInUseException.java |    3 +-
 .../exception/CurrencyNotFoundException.java       |    2 +-
 .../OrganizationalCurrencyNotFoundException.java   |    6 +-
 .../handler/UpdateCurrencyCommandHandler.java      |    2 +-
 .../CurrencyCommandFromApiJsonDeserializer.java    |    8 +-
 .../service/CurrencyReadPlatformService.java       |    2 +-
 .../service/CurrencyReadPlatformServiceImpl.java   |    2 +-
 .../service/CurrencyWritePlatformService.java      |    2 +-
 ...rencyWritePlatformServiceJpaRepositoryImpl.java |    5 +-
 .../OrganisationCurrencyReadPlatformService.java   |    2 +-
 ...rganisationCurrencyReadPlatformServiceImpl.java |    2 +-
 .../office/api/OfficeTransactionsApiResource.java  |    8 +-
 .../office/api/OfficesApiResource.java             |   52 +-
 .../office/api/OfficesApiResourceSwagger.java      |   26 +-
 .../organisation/office/data/OfficeData.java       |   15 +-
 .../office/data/OfficeTransactionData.java         |    2 +-
 .../organisation/office/domain/Office.java         |    2 +-
 .../office/domain/OfficeRepositoryWrapper.java     |   11 +-
 .../office/domain/OfficeTransaction.java           |    5 +-
 .../office/domain/OrganisationCurrency.java        |    2 +-
 .../domain/OrganisationCurrencyRepository.java     |    4 +-
 .../OrganisationCurrencyRepositoryWrapper.java     |    2 +-
 .../office/exception/OfficeNotFoundException.java  |    2 +-
 .../OfficeTransactionNotFoundException.java        |    2 +-
 .../office/handler/CreateOfficeCommandHandler.java |    2 +-
 .../CreateOfficeTransactionCommandHandler.java     |    2 +-
 .../DeleteOfficeTransactionCommandHandler.java     |    2 +-
 .../office/handler/UpdateOfficeCommandHandler.java |    2 +-
 .../OfficeCommandFromApiJsonDeserializer.java      |   12 +-
 ...eTransactionCommandFromApiJsonDeserializer.java |    8 +-
 .../office/service/OfficeReadPlatformService.java  |    2 +-
 .../service/OfficeReadPlatformServiceImpl.java     |   17 +-
 .../office/service/OfficeWritePlatformService.java |    2 +-
 ...fficeWritePlatformServiceJpaRepositoryImpl.java |   17 +-
 .../api/ProvisioningCategoryApiResource.java       |    6 +-
 .../api/ProvisioningCriteriaApiResource.java       |   65 +-
 .../ProvisioningCriteriaApiResourceSwagger.java    |   22 +-
 .../constants/ProvisioningCriteriaConstants.java   |    1 +
 .../data/ProvisioningCategoryData.java             |    4 +-
 .../data/ProvisioningCriteriaData.java             |   18 +-
 .../data/ProvisioningCriteriaDefinitionData.java   |    8 +-
 .../domain/LoanProductProvisionCriteria.java       |    9 +-
 .../domain/ProvisioningCategoryRepository.java     |    4 +-
 .../provisioning/domain/ProvisioningCriteria.java  |   50 +-
 .../domain/ProvisioningCriteriaDefinition.java     |   11 +-
 .../ProvisioningCriteriaDefinitionRepository.java  |    4 +-
 .../domain/ProvisioningCriteriaRepository.java     |    4 +-
 ...ovisioningCriteriaCannotBeDeletedException.java |    3 +-
 ...eProvisioningCriteriaRequestCommandHandler.java |    5 +-
 ...eProvisioningCategoryRequestCommandHandler.java |    3 +-
 ...eProvisioningCriteriaRequestCommandHandler.java |    3 +-
 ...isioningCriteriaDefinitionJsonDeserializer.java |  117 +-
 .../ProvisioningCategoryReadPlatformService.java   |    3 +-
 ...rovisioningCategoryReadPlatformServiceImpl.java |    6 +-
 .../ProvisioningCategoryWritePlatformService.java  |    5 +-
 ...egoryWritePlatformServiceJpaRepositoryImpl.java |   17 +-
 .../service/ProvisioningCriteriaAssembler.java     |   31 +-
 .../ProvisioningCriteriaReadPlatformService.java   |    9 +-
 ...rovisioningCriteriaReadPlatformServiceImpl.java |   29 +-
 .../ProvisioningCriteriaWritePlatformService.java  |    5 +-
 ...teriaWritePlatformServiceJpaRepositoryImpl.java |   89 +-
 .../organisation/staff/api/StaffApiResource.java   |   60 +-
 .../staff/api/StaffApiResourceSwagger.java         |   16 +-
 .../staff/data/BulkTransferLoanOfficerData.java    |    2 +-
 .../data/StaffAccountSummaryCollectionData.java    |    2 +-
 .../organisation/staff/data/StaffData.java         |   17 +-
 .../staff/domain/StaffEnumerations.java            |    2 +-
 .../staff/domain/StaffOrganisationalRoleType.java  |    2 +-
 .../organisation/staff/domain/StaffRepository.java |    2 +-
 .../staff/domain/StaffRepositoryWrapper.java       |    9 +-
 .../staff/exception/StaffNotFoundException.java    |    2 +-
 .../staff/exception/StaffRoleException.java        |    5 +-
 .../staff/handler/CreateStaffCommandHandler.java   |    2 +-
 .../staff/handler/UpdateStaffCommandHandler.java   |    2 +-
 .../StaffCommandFromApiJsonDeserializer.java       |   20 +-
 .../staff/service/StaffReadPlatformService.java    |    2 +-
 .../service/StaffReadPlatformServiceImpl.java      |   94 +-
 .../staff/service/StaffWritePlatformService.java   |    2 +-
 ...StaffWritePlatformServiceJpaRepositoryImpl.java |   19 +-
 .../teller/api/CashierApiResource.java             |    6 +-
 .../organisation/teller/api/TellerApiResource.java |  133 +-
 .../teller/api/TellerApiResourceSwagger.java       |   49 +-
 .../teller/api/TellerJournalApiResource.java       |    6 +-
 .../organisation/teller/data/CashierData.java      |   99 +-
 .../teller/data/CashierTransactionData.java        |   40 +-
 .../data/CashierTransactionDataValidator.java      |   81 +-
 .../data/CashierTransactionTypeTotalsData.java     |   14 +-
 .../data/CashierTransactionsWithSummaryData.java   |   49 +-
 .../organisation/teller/data/TellerData.java       |   55 +-
 .../teller/data/TellerJournalData.java             |   38 +-
 .../teller/data/TellerTransactionData.java         |   38 +-
 .../organisation/teller/domain/Cashier.java        |   36 +-
 .../teller/domain/CashierRepository.java           |    3 +-
 .../teller/domain/CashierRepositoryWrapper.java    |    4 +-
 .../teller/domain/CashierTransaction.java          |   33 +-
 .../domain/CashierTransactionRepository.java       |    3 +-
 .../organisation/teller/domain/CashierTxnType.java |   39 +-
 .../organisation/teller/domain/Teller.java         |   28 +-
 .../organisation/teller/domain/TellerJournal.java  |    3 +-
 .../teller/domain/TellerRepository.java            |    4 +-
 .../teller/domain/TellerRepositoryWrapper.java     |    9 +-
 .../organisation/teller/domain/TellerStatus.java   |    7 +-
 .../teller/domain/TellerTransactionRepository.java |    6 +-
 .../teller/exception/CashierAlreadyAlloacated.java |    6 +-
 ...hierDateRangeOutOfTellerDateRangeException.java |    6 +-
 .../exception/CashierExistForTellerException.java  |    3 +-
 .../CashierInsufficientAmountException.java        |    6 +-
 .../teller/exception/CashierNotFoundException.java |    3 +-
 .../exception/InvalidDateInputException.java       |    7 +-
 .../teller/exception/TellerNotFoundException.java  |    3 +-
 .../AllocateCashToCashierCommandHandler.java       |    4 +-
 .../AllocateCashierToTellerCommandHandler.java     |    7 +-
 .../teller/handler/CreateTellerCommandHandler.java |    5 +-
 .../DeleteCashierAllocationCommandHandler.java     |    7 +-
 .../teller/handler/DeleteTellerCommandHandler.java |    4 +-
 .../handler/ModifyCashierCommandHandler.java       |    5 +-
 .../SettleCashFromCashierCommandHandler.java       |    4 +-
 .../UpdateCashierAllocationCommandHandler.java     |    7 +-
 .../teller/handler/UpdateTellerCommandHandler.java |    4 +-
 .../TellerCommandFromApiJsonDeserializer.java      |    8 +-
 .../service/CashierWritePlatformService.java       |    3 +-
 .../TellerManagementReadPlatformService.java       |    4 +-
 .../TellerManagementReadPlatformServiceImpl.java   |  148 +-
 .../TellerTransactionWritePlatformService.java     |    3 +-
 .../teller/service/TellerWritePlatformService.java |   32 +-
 .../service/TellerWritePlatformServiceJpaImpl.java |   59 +-
 .../organisation/teller/util/DateRange.java        |    5 +-
 .../workingdays/api/WorkingDaysApiConstants.java   |    8 +-
 .../workingdays/api/WorkingDaysApiResource.java    |   25 +-
 .../api/WorkingDaysApiResourceSwagger.java         |    9 +
 .../workingdays/data/AdjustedDateDetailsDTO.java   |    3 +-
 .../workingdays/data/WorkingDayValidator.java      |   16 +-
 .../workingdays/data/WorkingDaysData.java          |    6 +-
 .../domain/RepaymentRescheduleType.java            |    6 +-
 .../workingdays/domain/WorkingDays.java            |   22 +-
 .../domain/WorkingDaysEnumerations.java            |   33 +-
 .../domain/WorkingDaysRepositoryWrapper.java       |    2 +-
 .../exception/WorkingDaysNotFoundException.java    |    2 +-
 .../handler/UpdateWorkingDaysCommandHandler.java   |    4 +-
 .../WorkingDaysReadPlatformServiceImpl.java        |   15 +-
 .../workingdays/service/WorkingDaysUtil.java       |    3 +-
 .../portfolio/account/AccountDetailConstants.java  |    3 +-
 .../portfolio/account/PortfolioAccountType.java    |    2 +-
 .../account/api/AccountTransfersApiConstants.java  |    2 +-
 .../account/api/AccountTransfersApiResource.java   |   92 +-
 .../api/AccountTransfersApiResourceSwagger.java    |  141 +-
 .../api/StandingInstructionApiConstants.java       |    9 +-
 .../api/StandingInstructionApiResource.java        |  135 +-
 .../api/StandingInstructionApiResourceSwagger.java |  144 +-
 .../api/StandingInstructionHistoryApiResource.java |   38 +-
 ...andingInstructionHistoryApiResourceSwagger.java |   24 +-
 .../portfolio/account/data/AccountTransferDTO.java |   10 +-
 .../account/data/AccountTransferData.java          |    6 +-
 .../data/AccountTransfersDataValidator.java        |   42 +-
 .../data/AccountTransfersDetailDataValidator.java  |    6 +-
 .../account/data/StandingInstructionDTO.java       |    4 +-
 .../account/data/StandingInstructionData.java      |    7 +-
 .../data/StandingInstructionDataValidator.java     |  189 +-
 .../account/domain/AccountAssociationType.java     |    2 +-
 .../domain/AccountAssociationsRepository.java      |    7 +-
 .../account/domain/AccountTransferAssembler.java   |    2 +-
 .../domain/AccountTransferDetailAssembler.java     |    8 +-
 .../domain/AccountTransferDetailRepository.java    |    4 +-
 .../account/domain/AccountTransferDetails.java     |   13 +-
 .../domain/AccountTransferRecurrenceType.java      |    2 +-
 .../account/domain/AccountTransferRepository.java  |    6 +-
 .../domain/AccountTransferStandingInstruction.java |   28 +-
 .../account/domain/AccountTransferTransaction.java |   13 +-
 .../account/domain/AccountTransferType.java        |    2 +-
 .../domain/StandingInstructionAssembler.java       |    2 +-
 .../domain/StandingInstructionPriority.java        |    2 +-
 .../domain/StandingInstructionRepository.java      |   11 +-
 .../account/domain/StandingInstructionStatus.java  |    2 +-
 .../account/domain/StandingInstructionType.java    |    2 +-
 .../AccountTransferNotFoundException.java          |    2 +-
 .../StandingInstructionNotFoundException.java      |    2 +-
 .../CreateAccountTransferCommandHandler.java       |    2 +-
 .../handler/RefundByTransferCommandHandler.java    |    2 +-
 ...AccountAssociationsReadPlatformServiceImpl.java |   15 +-
 .../service/AccountTransferEnumerations.java       |    2 +-
 .../AccountTransfersReadPlatformService.java       |    9 +-
 .../AccountTransfersReadPlatformServiceImpl.java   |  433 +-
 .../AccountTransfersWritePlatformService.java      |    2 +-
 .../AccountTransfersWritePlatformServiceImpl.java  |   72 +-
 .../PortfolioAccountReadPlatformService.java       |    2 +-
 .../PortfolioAccountReadPlatformServiceImpl.java   |   57 +-
 ...ndingInstructionHistoryReadPlatformService.java |    2 +-
 ...gInstructionHistoryReadPlatformServiceImpl.java |    3 +-
 .../StandingInstructionReadPlatformService.java    |    2 +-
 ...StandingInstructionReadPlatformServiceImpl.java |   27 +-
 .../StandingInstructionWritePlatformService.java   |    2 +-
 ...tandingInstructionWritePlatformServiceImpl.java |   31 +-
 .../data/AccountSummaryCollectionData.java         |   39 +-
 .../data/GuarantorAccountSummaryData.java          |   10 +-
 .../data/LoanAccountSummaryData.java               |   19 +-
 .../data/SavingsAccountSummaryData.java            |   10 +-
 .../accountdetails/data/SavingsSummaryCustom.java  |   19 +-
 .../data/ShareAccountSummaryData.java              |   23 +-
 .../accountdetails/domain/AccountType.java         |    7 +-
 .../service/AccountDetailsReadPlatformService.java |    2 +-
 ...etailsReadPlatformServiceJpaRepositoryImpl.java |  317 +-
 .../service/AccountEnumerations.java               |    3 +-
 .../accounts/api/AccountsApiResource.java          |  150 +-
 .../accounts/api/AccountsApiResourceSwagger.java   |  125 +-
 .../accounts/constants/AccountsApiConstants.java   |    5 +-
 .../constants/ShareAccountApiConstants.java        |   26 +-
 .../portfolio/accounts/data/AccountData.java       |    1 -
 .../exceptions/ShareAccountNotFoundException.java  |    5 +-
 .../accounts/service/AccountsCommandsService.java  |    3 +-
 .../api/EntityFieldConfigurationApiResources.java  |   23 +-
 ...ntityFieldConfigurationApiResourcesSwagger.java |    9 +-
 .../portfolio/address/data/AddressData.java        |   59 +-
 .../portfolio/address/data/ClientAddressData.java  |    4 +-
 .../address/data/FieldConfigurationData.java       |   13 +-
 .../fineract/portfolio/address/domain/Address.java |   21 +-
 .../exception/AddressNotFoundException.java        |    4 +-
 .../AddressCommandFromApiJsonDeserializer.java     |   24 +-
 .../service/AddressReadPlatformService.java        |    1 +
 .../service/AddressReadPlatformServiceImpl.java    |   36 +-
 .../service/AddressWritePlatformService.java       |    1 +
 .../service/AddressWritePlatformServiceImpl.java   |   40 +-
 .../FieldConfigurationReadPlatformService.java     |    1 +
 .../FieldConfigurationReadPlatformServiceImpl.java |   12 +-
 .../portfolio/calendar/CalendarConstants.java      |   15 +-
 .../calendar/api/CalendarsApiResource.java         |   16 +-
 .../portfolio/calendar/data/CalendarData.java      |  176 +-
 .../calendar/data/CalendarHistoryDataWrapper.java  |    8 +-
 .../portfolio/calendar/domain/Calendar.java        |   74 +-
 .../calendar/domain/CalendarFrequencyType.java     |   11 +-
 .../domain/CalendarInstanceRepository.java         |   14 +-
 .../domain/CalendarInstanceRepositoryWrapper.java  |    3 +-
 .../calendar/domain/CalendarRepositoryWrapper.java |    3 +-
 .../calendar/domain/CalendarWeekDaysType.java      |    8 +-
 .../calendar/exception/CalendarDateException.java  |    2 +-
 .../CalendarEntityTypeNotSupportedException.java   |    2 +-
 .../CalendarInstanceNotFoundException.java         |    5 +-
 .../exception/CalendarNotFoundException.java       |    2 +-
 ...lendarParameterUpdateNotSupportedException.java |    2 +-
 .../MeetingFrequencyMismatchException.java         |    5 +-
 .../exception/NotValidRecurringDateException.java  |    2 +-
 .../handler/DeleteCalendarCommandHandler.java      |    2 +-
 .../CalendarCommandFromApiJsonDeserializer.java    |  127 +-
 .../CalendarDropdownReadPlatformService.java       |    3 +-
 .../CalendarDropdownReadPlatformServiceImpl.java   |    1 +
 .../calendar/service/CalendarEnumerations.java     |   14 +-
 .../service/CalendarReadPlatformService.java       |    2 -
 .../service/CalendarReadPlatformServiceImpl.java   |   53 +-
 .../portfolio/calendar/service/CalendarUtils.java  |  122 +-
 ...endarWritePlatformServiceJpaRepositoryImpl.java |   90 +-
 .../portfolio/charge/api/ChargesApiResource.java   |   40 +-
 .../charge/api/ChargesApiResourceSwagger.java      |   61 +-
 .../fineract/portfolio/charge/data/ChargeData.java |   32 +-
 .../fineract/portfolio/charge/domain/Charge.java   |   83 +-
 .../portfolio/charge/domain/ChargeAppliesTo.java   |   15 +-
 .../charge/domain/ChargeCalculationType.java       |   17 +-
 .../portfolio/charge/domain/ChargePaymentMode.java |    2 +-
 .../portfolio/charge/domain/ChargeTimeType.java    |   17 +-
 ...eDueAtDisbursementCannotBePenaltyException.java |    2 +-
 .../exception/ChargeIsNotActiveException.java      |    2 +-
 .../exception/ChargeMustBePenaltyException.java    |    2 +-
 ...ChargeParameterUpdateNotSupportedException.java |    2 +-
 .../LoanChargeCannotBeAddedException.java          |    2 +-
 .../LoanChargeCannotBeDeletedException.java        |    9 +-
 .../LoanChargeCannotBePayedException.java          |    9 +-
 .../LoanChargeCannotBeUpdatedException.java        |    9 +-
 .../LoanChargeCannotBeWaivedException.java         |    5 +-
 .../exception/LoanChargeNotFoundException.java     |    2 +-
 .../LoanChargeWithoutMandatoryFieldException.java  |    2 +-
 ...avingsAccountChargeCannotBeWaivedException.java |    9 +-
 .../SavingsAccountChargeNotFoundException.java     |    7 +-
 ...ccountChargeWithoutMandatoryFieldException.java |    2 +-
 ...ccountChargeWithoutMandatoryFieldException.java |    2 +-
 .../CreateChargeDefinitionCommandHandler.java      |    2 +-
 .../DeleteChargeDefinitionCommandHandler.java      |    2 +-
 .../UpdateChargeDefinitionCommandHandler.java      |    2 +-
 ...geDefinitionCommandFromApiJsonDeserializer.java |   22 +-
 .../service/ChargeDropdownReadPlatformService.java |    6 +-
 .../ChargeDropdownReadPlatformServiceImpl.java     |    6 +-
 .../charge/service/ChargeEnumerations.java         |   23 +-
 .../charge/service/ChargeReadPlatformService.java  |    2 +-
 .../service/ChargeReadPlatformServiceImpl.java     |    4 +-
 ...hargeWritePlatformServiceJpaRepositoryImpl.java |   35 +-
 .../client/api/ClientAddressApiResources.java      |   65 +-
 .../api/ClientAddressApiResourcesSwagger.java      |   24 +-
 .../portfolio/client/api/ClientApiConstants.java   |   34 +-
 .../client/api/ClientChargesApiResource.java       |   74 +-
 .../api/ClientChargesApiResourceSwagger.java       |   44 +-
 .../api/ClientFamilyMembersApiResources.java       |   53 +-
 .../client/api/ClientIdentifiersApiResource.java   |   64 +-
 .../api/ClientIdentifiersApiResourceSwagger.java   |   40 +-
 .../client/api/ClientTransactionsApiResource.java  |   31 +-
 .../api/ClientTransactionsApiResourceSwagger.java  |   29 +-
 .../portfolio/client/api/ClientsApiResource.java   |  179 +-
 .../client/api/ClientsApiResourceSwagger.java      |  112 +-
 .../client/command/ClientIdentifierCommand.java    |   17 +-
 .../client/command/ClientNoteCommand.java          |    8 +-
 .../client/data/ClientApiCollectionConstants.java  |   33 +-
 .../fineract/portfolio/client/data/ClientData.java |  223 +-
 .../portfolio/client/data/ClientDataValidator.java |  148 +-
 .../client/data/ClientFamilyMembersData.java       |   50 +-
 .../client/data/ClientIdentifierData.java          |    5 +-
 .../portfolio/client/data/ClientNonPersonData.java |   19 +-
 .../portfolio/client/data/ClientTimelineData.java  |    2 +-
 .../client/domain/AccountNumberGenerator.java      |   10 +-
 .../fineract/portfolio/client/domain/Client.java   |   80 +-
 .../portfolio/client/domain/ClientAddress.java     |    6 +-
 .../client/domain/ClientAddressRepository.java     |    7 +-
 .../domain/ClientAddressRepositoryWrapper.java     |    8 +-
 .../domain/ClientChargeRepositoryWrapper.java      |    3 +-
 .../client/domain/ClientEnumerations.java          |    5 +-
 .../client/domain/ClientFamilyMembers.java         |  308 +-
 .../domain/ClientFamilyMembersRepository.java      |    3 +-
 .../portfolio/client/domain/ClientIdentifier.java  |   11 +-
 .../client/domain/ClientIdentifierRepository.java  |    2 +-
 .../client/domain/ClientIdentifierStatus.java      |   11 +-
 .../portfolio/client/domain/ClientNonPerson.java   |   22 +-
 .../client/domain/ClientNonPersonRepository.java   |    2 +-
 .../domain/ClientNonPersonRepositoryWrapper.java   |    8 +-
 .../portfolio/client/domain/ClientRepository.java  |    2 +-
 .../client/domain/ClientRepositoryWrapper.java     |   18 +-
 .../portfolio/client/domain/ClientStatus.java      |   14 +-
 .../portfolio/client/domain/ClientTransaction.java |    4 +-
 .../client/domain/ClientTransferDetails.java       |   17 +-
 .../domain/ClientTransferDetailsRepository.java    |    2 +-
 .../ClientTransferDetailsRepositoryWrapper.java    |    2 +-
 .../exception/ClientActiveForUpdateException.java  |    4 +-
 .../ClientIdentifierNotFoundException.java         |    2 +-
 .../ClientMustBePendingToBeDeletedException.java   |    6 +-
 ...ClientNonPersonNotFoundByClientIdException.java |    3 +-
 .../ClientNonPersonNotFoundException.java          |    3 +-
 .../client/exception/ClientNotFoundException.java  |    4 +-
 .../ClientTransactionCannotBeUndoneException.java  |    2 +-
 .../DuplicateClientIdentifierException.java        |   11 +-
 .../client/exception/ImageNotFoundException.java   |    2 +-
 .../handler/ActivateClientCommandHandler.java      |    2 +-
 .../handler/AddClientAddressCommandHandler.java    |    1 +
 .../AddClientFamilyMemberCommandHandler.java       |    9 +-
 .../client/handler/CloseClientCommandHandler.java  |    2 +-
 .../CreateClientIdentifierCommandHandler.java      |    2 +-
 .../client/handler/DeleteClientCommandHandler.java |    2 +-
 .../DeleteClientFamilyMemberCommandHandler.java    |    7 +-
 .../DeleteClientIdentifierCommandHandler.java      |    2 +-
 .../client/handler/RejectClientCommandHandler.java |    6 +-
 .../handler/UndoRejectClientCommandHandler.java    |   11 +-
 .../handler/UndoWithdrawalCommandHandler.java      |   13 +-
 .../client/handler/UpdateClientCommandHandler.java |    2 +-
 .../UpdateClientFamilyMemberCommandHandler.java    |    6 +-
 .../UpdateClientIdentifierCommandHandler.java      |    2 +-
 .../UpdateClientSavingsAccountCommandHandler.java  |    2 +-
 .../handler/WithdrawClientCommandHandler.java      |   21 +-
 ...FamilyMemberCommandFromApiJsonDeserializer.java |  202 +-
 ...ntIdentifierCommandFromApiJsonDeserializer.java |    4 +-
 .../ClientAddressReadPlatformServiceImpl.java      |    7 +-
 ...hargeWritePlatformServiceJpaRepositoryImpl.java |   11 +-
 .../ClientFamilyMembersReadPlatformService.java    |    3 +-
 ...ClientFamilyMembersReadPlatformServiceImpl.java |   55 +-
 .../ClientFamilyMembersWritePlatformService.java   |    7 +-
 ...lientFamilyMembersWritePlatformServiceImpl.java |  305 +-
 .../ClientIdentifierReadPlatformService.java       |    2 +-
 .../ClientIdentifierReadPlatformServiceImpl.java   |    6 +-
 .../ClientIdentifierWritePlatformService.java      |    2 +-
 ...ifierWritePlatformServiceJpaRepositoryImpl.java |   21 +-
 .../client/service/ClientReadPlatformService.java  |    2 +-
 .../service/ClientReadPlatformServiceImpl.java     |   99 +-
 .../client/service/ClientWritePlatformService.java |    3 +-
 ...lientWritePlatformServiceJpaRepositoryImpl.java |  183 +-
 .../portfolio/client/service/LoanStatusMapper.java |    2 +-
 .../collateral/api/CollateralApiConstants.java     |    4 +-
 .../collateral/api/CollateralsApiResource.java     |   60 +-
 .../api/CollateralsApiResourceSwagger.java         |   44 +-
 .../collateral/command/CollateralCommand.java      |   24 +-
 .../portfolio/collateral/data/CollateralData.java  |    2 +-
 .../collateral/domain/LoanCollateral.java          |   38 +-
 .../CollateralCannotBeCreatedException.java        |    9 +-
 .../CollateralCannotBeDeletedException.java        |    9 +-
 .../CollateralCannotBeUpdatedException.java        |    9 +-
 .../exception/CollateralNotFoundException.java     |    2 +-
 .../handler/CreateCollateralCommandHandler.java    |    2 +-
 .../handler/DeleteCollateralCommandHandler.java    |    2 +-
 .../handler/UpdateCollateralCommandHandler.java    |    2 +-
 .../CollateralCommandFromApiJsonDeserializer.java  |    5 +-
 .../service/CollateralReadPlatformServiceImpl.java |   12 +-
 .../service/CollateralWritePlatformService.java    |    2 +-
 ...teralWritePlatformServiceJpaRepositoryImpl.java |   29 +-
 .../collectionsheet/CollectionSheetConstants.java  |    2 +-
 .../api/CollectionSheetApiResourceSwagger.java     |   20 +-
 .../api/CollectionSheetApiResourse.java            |   15 +-
 .../CollectionSheetBulkDisbursalCommand.java       |    2 +-
 .../CollectionSheetBulkRepaymentCommand.java       |    2 +-
 .../command/SingleDisbursalCommand.java            |    2 +-
 .../command/SingleRepaymentCommand.java            |    2 +-
 .../CollectionSheetTransactionDataValidator.java   |  127 +-
 .../collectionsheet/data/IndividualClientData.java |    4 +-
 .../data/IndividualCollectionSheetData.java        |    2 +-
 .../IndividualCollectionSheetLoanFlatData.java     |    2 +-
 .../collectionsheet/data/JLGClientData.java        |   22 +-
 .../data/JLGCollectionSheetData.java               |    2 +-
 .../data/JLGCollectionSheetFlatData.java           |    8 +-
 .../collectionsheet/data/JLGGroupData.java         |   10 +-
 .../collectionsheet/data/LoanDueData.java          |    2 +-
 .../collectionsheet/data/SavingsDueData.java       |    5 +-
 ...ulkDisbursalCommandFromApiJsonDeserializer.java |    6 +-
 ...ulkRepaymentCommandFromApiJsonDeserializer.java |   11 +-
 ...heetGenerateCommandFromApiJsonDeserializer.java |   16 +-
 .../CollectionSheetReadPlatformServiceImpl.java    |  160 +-
 ...SheetWritePlatformServiceJpaRepositoryImpl.java |    6 +-
 .../common/BusinessEventNotificationConstants.java |   61 +-
 .../portfolio/common/domain/DayOfWeekType.java     |   12 +-
 .../portfolio/common/domain/DaysInMonthType.java   |    3 +-
 .../portfolio/common/domain/DaysInYearType.java    |    2 +-
 .../portfolio/common/domain/NthDayType.java        |   12 +-
 .../common/domain/PeriodFrequencyType.java         |    7 +-
 .../service/BusinessEventNotifierServiceImpl.java  |    6 +-
 .../common/service/CommonEnumerations.java         |   28 +-
 .../service/DropdownReadPlatformServiceImpl.java   |    2 +-
 .../api/FloatingRatesApiResource.java              |   81 +-
 .../api/FloatingRatesApiResourceSwagger.java       |   40 +-
 .../floatingrates/data/FloatingRateData.java       |   30 +-
 .../floatingrates/data/FloatingRatePeriodData.java |   25 +-
 .../floatingrates/data/InterestRatePeriodData.java |    9 +-
 .../floatingrates/domain/FloatingRate.java         |   97 +-
 .../floatingrates/domain/FloatingRatePeriod.java   |   22 +-
 .../domain/FloatingRateRepository.java             |   12 +-
 .../domain/FloatingRateRepositoryWrapper.java      |    6 +-
 .../exception/FloatingRateNotFoundException.java   |    6 +-
 .../handler/CreateFloatingRateCommandHandler.java  |    6 +-
 .../handler/UpdateFloatingRateCommandHandler.java  |    6 +-
 .../serialization/FloatingRateDataValidator.java   |  226 +-
 .../FloatingRateWritePlatformServiceImpl.java      |   57 +-
 .../FloatingRatesReadPlatformServiceImpl.java      |  169 +-
 .../portfolio/fund/api/FundsApiResource.java       |   26 +-
 .../fund/api/FundsApiResourceSwagger.java          |   24 +-
 .../fineract/portfolio/fund/data/FundData.java     |    2 +-
 .../fineract/portfolio/fund/domain/Fund.java       |    2 +-
 .../portfolio/fund/domain/FundRepository.java      |    2 +-
 .../fund/exception/FundNotFoundException.java      |    2 +-
 .../fund/handler/CreateFundCommandHandler.java     |    2 +-
 .../fund/handler/UpdateFundCommandHandler.java     |    2 +-
 .../FundCommandFromApiJsonDeserializer.java        |    8 +-
 .../fund/service/FundReadPlatformService.java      |    2 +-
 .../fund/service/FundReadPlatformServiceImpl.java  |    2 +-
 .../fund/service/FundWritePlatformService.java     |    2 +-
 .../FundWritePlatformServiceJpaRepositoryImpl.java |   21 +-
 .../portfolio/group/api/CentersApiResource.java    |  127 +-
 .../group/api/CentersApiResourceSwagger.java       |   97 +-
 .../group/api/GroupingTypesApiConstants.java       |   28 +-
 .../portfolio/group/api/GroupsApiResource.java     |  277 +-
 .../group/api/GroupsApiResourceSwagger.java        |  147 +-
 .../group/api/GroupsLevelApiResource.java          |    6 +-
 .../fineract/portfolio/group/data/CenterData.java  |   92 +-
 .../portfolio/group/data/GroupGeneralData.java     |  179 +-
 .../portfolio/group/data/GroupLevelData.java       |    2 +-
 .../portfolio/group/data/GroupRoleData.java        |   14 +-
 .../portfolio/group/data/GroupSummary.java         |    2 +-
 .../portfolio/group/data/GroupTimelineData.java    |   34 +-
 .../fineract/portfolio/group/domain/Group.java     |   27 +-
 .../portfolio/group/domain/GroupLevel.java         |    2 +-
 .../group/domain/GroupRepositoryWrapper.java       |    7 +-
 .../group/domain/GroupRoleRepositoryWrapper.java   |    3 +-
 .../group/domain/GroupingTypeEnumerations.java     |    2 +-
 .../portfolio/group/domain/GroupingTypeStatus.java |    2 +-
 .../exception/ClientExistInGroupException.java     |    4 +-
 .../exception/GroupExistsInCenterException.java    |    6 +-
 ...pMemberCountNotInPermissibleRangeException.java |    5 +-
 .../GroupMemberNotFoundInGSIMException.java        |   11 +-
 .../GroupMustBePendingToBeDeletedException.java    |    2 +-
 .../exception/GroupNotExistsInCenterException.java |    2 +-
 .../handler/ActivateCenterCommandHandler.java      |    2 +-
 .../group/handler/ActivateGroupCommandHandler.java |    2 +-
 .../AssociateClientsToGroupCommandHandler.java     |    2 +-
 .../group/handler/CreateCenterCommandHandler.java  |    2 +-
 .../group/handler/CreateGroupCommandHandler.java   |    2 +-
 .../group/handler/DeleteCenterCommandHandler.java  |    2 +-
 .../group/handler/DeleteGroupCommandHandler.java   |    2 +-
 ...DisassociateClientsFromGroupCommandHandler.java |    2 +-
 .../SaveCenterCollectionSheetCommandHandler.java   |    2 +-
 .../SaveGroupCollectionSheetCommandHandler.java    |    2 +-
 .../handler/UnassignGroupStaffCommandHandler.java  |    2 +-
 .../UnassignStaffFromCenterCommandHandler.java     |    2 +-
 .../group/handler/UpdateCenterCommandHandler.java  |    2 +-
 .../group/handler/UpdateGroupCommandHandler.java   |    2 +-
 .../serialization/GroupRolesDataValidator.java     |    6 +-
 .../serialization/GroupingTypesDataValidator.java  |  105 +-
 .../group/service/AllGroupTypesDataMapper.java     |    4 +-
 .../service/CenterReadPlatformServiceImpl.java     |   73 +-
 .../group/service/GroupReadPlatformService.java    |    2 +-
 .../service/GroupReadPlatformServiceImpl.java      |   98 +-
 ...TypesWritePlatformServiceJpaRepositoryImpl.java |   76 +-
 .../InterestIncentiveApiConstants.java             |    6 +-
 .../InterestRateChartApiConstants.java             |   24 +-
 .../InterestRateChartSlabApiConstants.java         |    2 +-
 .../api/InterestRateChartSlabsApiResource.java     |   60 +-
 .../InterestRateChartSlabsApiResourceSwagger.java  |   52 +-
 .../api/InterestRateChartsApiResource.java         |   59 +-
 .../api/InterestRateChartsApiResourceSwagger.java  |   45 +-
 .../data/InterestIncentiveDataValidator.java       |   10 +-
 .../data/InterestRateChartData.java                |   31 +-
 .../data/InterestRateChartDataValidator.java       |   23 +-
 .../data/InterestRateChartRepository.java          |    2 +-
 .../data/InterestRateChartRepositoryWrapper.java   |    3 +-
 .../data/InterestRateChartSlabData.java            |    2 +-
 .../data/InterestRateChartSlabDataValidator.java   |   18 +-
 .../data/InterestRateChartSlabRepository.java      |    5 +-
 .../InterestRateChartSlabRepositoryWrapper.java    |   10 +-
 .../domain/InterestIncentivesFields.java           |    6 +-
 .../domain/InterestRateChart.java                  |   57 +-
 .../domain/InterestRateChartFields.java            |    5 +-
 .../domain/InterestRateChartSlab.java              |    6 +-
 .../domain/InterestRateChartSlabFields.java        |    8 +-
 .../InterestRateChartNotFoundException.java        |    2 +-
 .../InterestRateChartSlabNotFoundException.java    |    6 +-
 .../CreateInterestRateChartCommandHandler.java     |    2 +-
 .../CreateInterestRateChartSlabCommandHandler.java |    2 +-
 .../DeleteInterestRateChartCommandHandler.java     |    2 +-
 .../DeleteInterestRateChartSlabCommandHandler.java |    4 +-
 .../UpdateInterestRateChartCommandHandler.java     |    2 +-
 .../UpdateInterestRateChartSlabCommandHandler.java |    4 +-
 .../incentive/InterestIncentiveAttributeName.java  |    2 +-
 .../incentive/InterestIncentiveEntityType.java     |    2 +-
 .../incentive/InterestIncentiveType.java           |    2 +-
 ...terestIncentiveDropdownReadPlatformService.java |    2 +-
 .../service/InterestIncentivesEnumerations.java    |    2 +-
 .../service/InterestRateChartAssembler.java        |    5 +-
 ...terestRateChartDropdownReadPlatformService.java |    2 +-
 ...stRateChartDropdownReadPlatformServiceImpl.java |    2 +-
 .../service/InterestRateChartEnumerations.java     |   16 +-
 .../InterestRateChartReadPlatformService.java      |    6 +-
 .../InterestRateChartReadPlatformServiceImpl.java  |   25 +-
 .../service/InterestRateChartSlabAssembler.java    |    9 +-
 .../InterestRateChartSlabReadPlatformService.java  |    2 +-
 ...terestRateChartSlabReadPlatformServiceImpl.java |   19 +-
 .../InterestRateChartSlabWritePlatformService.java |    2 +-
 ...tSlabWritePlatformServiceJpaRepositoryImpl.java |   10 +-
 .../InterestRateChartWritePlatformService.java     |    2 +-
 ...ChartWritePlatformServiceJpaRepositoryImpl.java |    2 +-
 .../loanaccount/api/BulkLoansApiResource.java      |    6 +-
 .../loanaccount/api/LoanApiConstants.java          |    8 +-
 .../loanaccount/api/LoanChargesApiResource.java    |  101 +-
 .../api/LoanChargesApiResourceSwagger.java         |   64 +-
 .../api/LoanDisbursementDetailApiResource.java     |   12 +-
 .../loanaccount/api/LoanScheduleApiResource.java   |   20 +-
 .../api/LoanScheduleApiResourceSwagger.java        |   16 +-
 .../api/LoanTransactionsApiResource.java           |   63 +-
 .../api/LoanTransactionsApiResourceSwagger.java    |   44 +-
 .../loanaccount/api/LoansApiResource.java          |  405 +-
 .../loanaccount/api/LoansApiResourceSwagger.java   |  136 +-
 .../loanaccount/command/LoanChargeCommand.java     |    2 +-
 .../loanaccount/command/LoanUpdateCommand.java     |    8 +-
 .../command/UndoStateTransitionCommand.java        |    2 +-
 .../command/UpdateLoanOfficerCommand.java          |   14 +-
 .../loanaccount/data/DisbursementData.java         |   39 +-
 .../portfolio/loanaccount/data/GLIMContainer.java  |   68 +-
 .../loanaccount/data/GlimRepaymentTemplate.java    |  118 +-
 .../GroupLoanIndividualMonitoringAccountData.java  |   40 +-
 .../loanaccount/data/LoanAccountData.java          |  453 +-
 .../data/LoanApplicationTimelineData.java          |   28 +-
 .../loanaccount/data/LoanApprovalData.java         |   22 +-
 .../portfolio/loanaccount/data/LoanChargeData.java |    3 +-
 .../loanaccount/data/LoanChargePaidByData.java     |    6 +-
 .../loanaccount/data/LoanChargePaidDetail.java     |    6 +-
 .../loanaccount/data/LoanConvenienceData.java      |    2 +-
 .../data/LoanInterestRecalculationData.java        |    3 +-
 .../loanaccount/data/LoanScheduleAccrualData.java  |   10 +-
 .../loanaccount/data/LoanStatusEnumData.java       |    2 +-
 .../loanaccount/data/LoanSummaryData.java          |    6 +-
 .../loanaccount/data/LoanTermVariationsData.java   |    4 +-
 .../data/LoanTermVariationsDataWrapper.java        |    6 +-
 .../loanaccount/data/LoanTransactionData.java      |  196 +-
 .../loanaccount/data/LoanTransactionEnumData.java  |    2 +-
 .../loanaccount/data/PaidInAdvanceData.java        |   15 +-
 .../data/RepaymentScheduleRelatedLoanData.java     |    9 +-
 .../loanaccount/data/ScheduleGeneratorDTO.java     |   13 +-
 .../domain/DefaultLoanLifecycleStateMachine.java   |    2 +-
 .../domain/GLIMAccountInfoRepository.java          |    9 +-
 .../GroupLoanIndividualMonitoringAccount.java      |  169 +-
 .../portfolio/loanaccount/domain/Loan.java         |  572 +--
 .../domain/LoanAccountDomainService.java           |    6 +-
 .../domain/LoanAccountDomainServiceJpa.java        |  105 +-
 .../portfolio/loanaccount/domain/LoanCharge.java   |   73 +-
 .../loanaccount/domain/LoanChargePaidBy.java       |    3 +-
 .../domain/LoanDisbursementDetails.java            |   11 +-
 .../loanaccount/domain/LoanInstallmentCharge.java  |    7 +-
 .../domain/LoanInterestRecalculationDetails.java   |   11 +-
 .../domain/LoanRepaymentDataComparator.java        |    2 +-
 .../domain/LoanRepaymentScheduleInstallment.java   |   54 +-
 ...LoanRepaymentScheduleInstallmentRepository.java |    4 +-
 .../LoanRepaymentScheduleProcessingWrapper.java    |   17 +-
 ...paymentScheduleTransactionProcessorFactory.java |    2 +-
 .../loanaccount/domain/LoanRepository.java         |    2 +-
 .../loanaccount/domain/LoanRepositoryWrapper.java  |  138 +-
 ...oanRescheduleRequestToTermVariationMapping.java |    5 +-
 .../portfolio/loanaccount/domain/LoanStatus.java   |    2 +-
 .../loanaccount/domain/LoanSubStatus.java          |    5 +-
 .../portfolio/loanaccount/domain/LoanSummary.java  |   17 +-
 .../loanaccount/domain/LoanSummaryWrapper.java     |   11 +-
 .../loanaccount/domain/LoanTermVariationType.java  |    8 +-
 .../loanaccount/domain/LoanTermVariations.java     |    6 +-
 .../loanaccount/domain/LoanTopupDetails.java       |   54 +-
 .../loanaccount/domain/LoanTrancheCharge.java      |   12 +-
 .../domain/LoanTrancheDisbursementCharge.java      |   10 +-
 .../loanaccount/domain/LoanTransaction.java        |  101 +-
 ...oanTransactionProcessingStrategyRepository.java |    6 +-
 .../domain/LoanTransactionRepository.java          |    2 +-
 .../LoanTransactionToRepaymentScheduleMapping.java |    6 +-
 .../loanaccount/domain/LoanTransactionType.java    |    9 +-
 ...tLoanRepaymentScheduleTransactionProcessor.java |   40 +-
 .../LoanRepaymentScheduleTransactionProcessor.java |    2 +-
 ...eLoanRepaymentScheduleTransactionProcessor.java |    9 +-
 ...tLoanRepaymentScheduleTransactionProcessor.java |    6 +-
 ...eLoanRepaymentScheduleTransactionProcessor.java |    9 +-
 ...yLoanRepaymentScheduleTransactionProcessor.java |    4 +-
 ...rLoanRepaymentScheduleTransactionProcessor.java |   13 +-
 ...rLoanRepaymentScheduleTransactionProcessor.java |   13 +-
 ...ILoanRepaymentScheduleTransactionProcessor.java |   22 +-
 .../exception/DateMismatchException.java           |   17 +-
 .../InvalidLoanStateTransitionException.java       |    2 +-
 .../InvalidLoanTransactionTypeException.java       |    2 +-
 .../exception/InvalidLoanTypeException.java        |    2 +-
 .../InvalidPaidInAdvanceAmountException.java       |    7 +-
 .../exception/InvalidRefundDateException.java      |    9 +-
 ...ttedAndPendingApprovalStateCannotBeDeleted.java |    6 +-
 ...tedAndPendingApprovalStateCannotBeModified.java |    6 +-
 .../exception/LoanDisbursalException.java          |    5 +-
 .../exception/LoanNotFoundException.java           |    2 +-
 .../LoanOfficerAssignmentDateException.java        |    3 +-
 .../exception/LoanOfficerAssignmentException.java  |    8 +-
 .../LoanTemplateTypeRequiredException.java         |    2 +-
 .../LoanTransactionNotFoundException.java          |    6 +-
 ...sactionProcessingStrategyNotFoundException.java |    6 +-
 ...sbursalAndFirstRepaymentViolationException.java |    6 +-
 .../NotSupportedLoanTemplateTypeException.java     |    2 +-
 .../UndoLastTrancheDisbursementException.java      |    6 +-
 .../loanaccount/guarantor/GuarantorConstants.java  |    8 +-
 .../guarantor/api/GuarantorsApiResource.java       |   31 +-
 .../guarantor/command/GuarantorCommand.java        |   32 +-
 .../loanaccount/guarantor/data/GuarantorData.java  |   39 +-
 .../guarantor/data/GuarantorFundingData.java       |    8 +-
 .../loanaccount/guarantor/data/ObligeeData.java    |   15 +-
 .../loanaccount/guarantor/domain/Guarantor.java    |   13 +-
 .../guarantor/domain/GuarantorFundStatusType.java  |    2 +-
 .../guarantor/domain/GuarantorFundingDetails.java  |    2 +-
 .../domain/GuarantorFundingRepository.java         |    4 +-
 .../GuarantorFundingTransactionRepository.java     |    6 +-
 .../guarantor/domain/GuarantorRepository.java      |    2 +-
 .../guarantor/domain/GuarantorType.java            |    1 +
 .../exception/GuarantorNotFoundException.java      |    6 +-
 .../exception/InvalidGuarantorException.java       |   12 +-
 .../handler/CreateGuarantorCommandHandler.java     |    2 +-
 .../handler/DeleteGuarantorCommandHandler.java     |    2 +-
 .../handler/UpdateGuarantorCommandHandler.java     |    2 +-
 .../GuarantorCommandFromApiJsonDeserializer.java   |   19 +-
 .../service/GuarantorDomainServiceImpl.java        |    7 +-
 .../service/GuarantorReadPlatformService.java      |    3 +-
 .../service/GuarantorReadPlatformServiceImpl.java  |   47 +-
 .../service/GuarantorWritePlatformService.java     |    2 +-
 ...ntorWritePlatformServiceJpaRepositoryIImpl.java |   37 +-
 ...AndDeleteLoanDisburseDetailsCommandHandler.java |    2 +-
 .../handler/AddLoanChargeCommandHandler.java       |    2 +-
 .../BulkUpdateLoanOfficerCommandHandler.java       |    2 +-
 .../CloseLoanAsRescheduledCommandHandler.java      |    2 +-
 .../handler/CloseLoanCommandHandler.java           |    2 +-
 .../handler/DeleteLoanChargeCommandHandler.java    |    2 +-
 .../handler/DisburseLoanCommandHandler.java        |    2 +-
 .../DisburseLoanToSavingsCommandHandler.java       |    2 +-
 .../GLIMApplicationRejectionCommandHandler.java    |   25 +-
 .../handler/GLIMBulkRepaymentCommandHandler.java   |    2 +-
 .../GLIMLoanApplicationApprovalCommandHandler.java |   20 +-
 .../GlimLoanApplicationDisburseCommandHandler.java |    5 +-
 .../LoanApplicationApprovalCommandHandler.java     |    2 +-
 .../LoanApplicationApprovalUndoCommandHandler.java |    2 +-
 .../LoanApplicationDeletionCommandHandler.java     |    2 +-
 .../LoanApplicationModificationCommandHandler.java |    2 +-
 .../LoanApplicationRejectedCommandHandler.java     |    2 +-
 .../LoanApplicationSubmittalCommandHandler.java    |    2 +-
 ...licationWithdrawnByApplicantCommandHandler.java |    2 +-
 .../handler/LoanRefundByCashCommandHandler.java    |    2 +-
 .../LoanRepaymentAdjustmentCommandHandler.java     |    2 +-
 .../handler/LoanRepaymentCommandHandler.java       |    2 +-
 .../handler/PayLoanChargeCommandHandler.java       |    2 +-
 .../handler/RemoveLoanOfficerCommandHandler.java   |    2 +-
 .../handler/UndoDisbursalLoanCommandHandler.java   |    2 +-
 .../handler/UndoGLIMLoanApplicationApproval.java   |   25 +-
 .../UndoGLIMLoanDisbursalCommandHandler.java       |    7 +-
 .../UndoLastDisbursalLoanCommandHandler.java       |    2 +-
 .../handler/UndoWriteOffLoanCommandHandler.java    |    2 +-
 .../handler/UpdateLoanChargeCommandHandler.java    |    2 +-
 .../UpdateLoanDisbuseDateCommandHandler.java       |    2 +-
 .../handler/UpdateLoanOfficerCommandHandler.java   |    2 +-
 .../WaiveInterestPortionOnLoanCommandHandler.java  |    2 +-
 .../handler/WaiveLoanChargeCommandHandler.java     |    2 +-
 .../handler/WriteOffLoanCommandHandler.java        |    2 +-
 .../loanschedule/data/LoanScheduleDTO.java         |    3 +-
 .../loanschedule/data/LoanScheduleData.java        |    2 +-
 .../loanschedule/data/LoanScheduleParams.java      |    2 +-
 .../loanschedule/data/LoanSchedulePeriodData.java  |   22 +-
 .../loanschedule/data/OverdueLoanScheduleData.java |    1 -
 .../domain/AbstractLoanScheduleGenerator.java      |  323 +-
 .../loanschedule/domain/AprCalculator.java         |   42 +-
 ...liningBalanceInterestLoanScheduleGenerator.java |   10 +-
 .../DefaultLoanScheduleGeneratorFactory.java       |    2 +-
 .../DefaultPaymentPeriodsInOneYearCalculator.java  |    4 +-
 .../domain/DefaultScheduledDateGenerator.java      |   17 +-
 .../loanschedule/domain/FinanicalFunctions.java    |    2 +-
 .../domain/FlatInterestLoanScheduleGenerator.java  |   17 +-
 .../loanschedule/domain/LoanApplicationTerms.java  |  248 +-
 .../domain/LoanRepaymentScheduleHistory.java       |   10 +-
 .../LoanRepaymentScheduleHistoryRepository.java    |    3 +-
 .../loanschedule/domain/LoanScheduleGenerator.java |    2 +-
 .../loanschedule/domain/LoanScheduleModel.java     |    4 +-
 .../LoanScheduleModelDisbursementPeriod.java       |    3 +-
 .../domain/LoanScheduleModelPeriod.java            |    1 +
 .../domain/LoanScheduleModelRepaymentPeriod.java   |    3 +-
 .../domain/PaymentPeriodsInOneYearCalculator.java  |    2 +-
 .../domain/ScheduledDateGenerator.java             |    2 +-
 .../service/LoanScheduleAssembler.java             |  159 +-
 ...LoanScheduleCalculationPlatformServiceImpl.java |   27 +-
 ...LoanScheduleHistoryReadPlatformServiceImpl.java |   24 +-
 .../LoanScheduleHistoryWritePlatformService.java   |    5 +-
 ...oanScheduleHistoryWritePlatformServiceImpl.java |    4 +-
 .../RescheduleLoansApiConstants.java               |   10 +-
 .../api/RescheduleLoansApiResource.java            |   47 +-
 .../data/LoanRescheduleRequestData.java            |   10 +-
 .../data/LoanRescheduleRequestDataValidator.java   |   93 +-
 .../data/LoanRescheduleRequestEnumerations.java    |   23 +-
 .../data/LoanRescheduleRequestTimelineData.java    |   11 +-
 .../rescheduleloan/domain/LoanRescheduleModel.java |   15 +-
 .../domain/LoanRescheduleRequest.java              |   43 +-
 .../domain/LoanRescheduleRequestRepository.java    |    3 +-
 .../LoanRescheduleRequestNotFoundException.java    |   10 +-
 ...ApproveLoanRescheduleRequestCommandHandler.java |    4 +-
 .../CreateLoanRescheduleRequestCommandHandler.java |    3 +-
 .../RejectLoanRescheduleRequestCommandHandler.java |    4 +-
 .../LoanReschedulePreviewPlatformServiceImpl.java  |   16 +-
 .../LoanRescheduleRequestReadPlatformService.java  |    8 +-
 ...anRescheduleRequestReadPlatformServiceImpl.java |    6 +-
 ...nRescheduleRequestWritePlatformServiceImpl.java |   91 +-
 ...alculateLoanScheduleQueryFromApiJsonHelper.java |   61 +-
 .../LoanApplicationCommandFromApiJsonHelper.java   |  352 +-
 .../LoanApplicationTransitionApiJsonValidator.java |   31 +-
 .../serialization/LoanEventApiJsonValidator.java   |   82 +-
 .../LoanUpdateCommandFromApiJsonDeserializer.java  |    2 +-
 .../VariableLoanScheduleFromApiJsonValidator.java  |   10 +-
 .../service/BulkLoansReadPlatformServiceImpl.java  |    2 +-
 .../GLIMAccountInfoReadPlatformService.java        |   22 +-
 .../GLIMAccountInfoReadPlatformServiceImpl.java    |  160 +-
 .../GLIMAccountInfoWritePlatformService.java       |    2 +-
 .../GLIMAccountInfoWritePlatformServiceImpl.java   |   47 +-
 .../service/LoanAccrualPlatformService.java        |    1 +
 .../service/LoanAccrualPlatformServiceImpl.java    |    5 +-
 .../service/LoanAccrualWritePlatformService.java   |    3 +-
 .../LoanAccrualWritePlatformServiceImpl.java       |   13 +-
 .../LoanApplicationWritePlatformService.java       |    2 +-
 ...ationWritePlatformServiceJpaRepositoryImpl.java |  641 ++-
 .../service/LoanArrearsAgingServiceImpl.java       |   61 +-
 .../loanaccount/service/LoanAssembler.java         |   43 +-
 .../loanaccount/service/LoanChargeAssembler.java   |    9 +-
 .../LoanChargePaidByReadPlatformServiceImpl.java   |   71 +-
 .../service/LoanChargeReadPlatformService.java     |    3 +-
 .../service/LoanChargeReadPlatformServiceImpl.java |    7 +-
 .../service/LoanReadPlatformService.java           |    7 +-
 .../service/LoanReadPlatformServiceImpl.java       |  367 +-
 .../loanaccount/service/LoanSchedularService.java  |    3 +-
 .../service/LoanSchedularServiceImpl.java          |   96 +-
 .../loanaccount/service/LoanUtilService.java       |   71 +-
 .../service/LoanWritePlatformService.java          |    2 +-
 .../LoanWritePlatformServiceJpaRepositoryImpl.java |  475 +-
 .../service/RecalculateInterestPoster.java         |   22 +-
 .../loanproduct/LoanProductConstants.java          |   11 +-
 .../loanproduct/api/LoanProductsApiResource.java   |  106 +-
 .../api/LoanProductsApiResourceSwagger.java        |  277 +-
 .../portfolio/loanproduct/data/LoanOverdueDTO.java |    1 -
 .../loanproduct/data/LoanProductData.java          |  194 +-
 .../data/LoanProductInterestRecalculationData.java |   12 +-
 .../data/TransactionProcessingStrategyData.java    |    2 +-
 .../loanproduct/domain/AmortizationMethod.java     |    3 +-
 .../domain/InterestCalculationPeriodMethod.java    |    3 +-
 .../loanproduct/domain/InterestMethod.java         |    4 +-
 .../domain/InterestRecalculationPeriodMethod.java  |    1 +
 .../portfolio/loanproduct/domain/LoanProduct.java  |  224 +-
 .../domain/LoanProductBorrowerCycleVariations.java |   18 +-
 .../domain/LoanProductConfigurableAttributes.java  |   36 +-
 .../domain/LoanProductFloatingRates.java           |    9 +-
 .../LoanProductInterestRecalculationDetails.java   |   17 +-
 .../domain/LoanProductMinMaxConstraints.java       |   19 +-
 .../loanproduct/domain/LoanProductParamType.java   |    2 +-
 .../domain/LoanProductRelatedDetail.java           |   66 +-
 .../loanproduct/domain/LoanProductRepository.java  |    2 +-
 .../domain/LoanProductTrancheDetails.java          |    3 +-
 .../domain/LoanProductValueConditionType.java      |    2 +-
 .../domain/LoanRescheduleStrategyMethod.java       |    4 +-
 .../domain/LoanTransactionProcessingStrategy.java  |    6 +-
 .../domain/RecalculationFrequencyType.java         |    1 +
 .../exception/InvalidCurrencyException.java        |    2 +-
 .../exception/InvalidLendingStrategy.java          |    2 +-
 ...nnotBeModifiedDueToNonClosedLoansException.java |    3 +-
 .../exception/LoanProductNotFoundException.java    |    2 +-
 .../exception/NotInMinMaxRangeException.java       |    2 +-
 .../handler/CreateLoanProductCommandHandler.java   |    2 +-
 .../handler/UpdateLoanProductCommandHandler.java   |    2 +-
 .../productmix/api/ProductMixApiResource.java      |    7 +-
 .../productmix/data/ProductMixData.java            |    3 +-
 .../serialization/ProductMixDataValidator.java     |    6 +-
 ...ctMixWritePlatformServiceJpaRepositoryImpl.java |    3 +-
 .../serialization/LoanProductDataValidator.java    |  775 ++--
 .../service/LoanDropdownReadPlatformService.java   |    4 +-
 .../LoanDropdownReadPlatformServiceImpl.java       |    5 +-
 .../loanproduct/service/LoanEnumerations.java      |   68 +-
 .../service/LoanProductReadPlatformService.java    |    2 +-
 .../LoanProductReadPlatformServiceImpl.java        |   65 +-
 .../service/LoanProductWritePlatformService.java   |    2 +-
 ...oductWritePlatformServiceJpaRepositoryImpl.java |   62 +-
 .../portfolio/meeting/MeetingApiConstants.java     |    2 +-
 .../portfolio/meeting/api/MeetingsApiResource.java |   11 +-
 .../meeting/attendance/AttendanceType.java         |    2 +-
 .../attendance/domain/ClientAttendance.java        |    3 +-
 .../AttendanceDropdownReadPlatformService.java     |    2 +-
 .../attendance/service/AttendanceEnumerations.java |    2 +-
 .../ClientAttendanceReadPlatformServiceImpl.java   |    2 +-
 .../meeting/data/MeetingDataValidator.java         |    9 +-
 .../fineract/portfolio/meeting/domain/Meeting.java |   24 +-
 .../meeting/domain/MeetingRepositoryWrapper.java   |    3 +-
 .../meeting/exception/MeetingDateException.java    |    2 +-
 .../exception/MeetingNotFoundException.java        |    2 +-
 .../MeetingNotSupportedResourceException.java      |    2 +-
 .../handler/DeleteMeetingCommandHandler.java       |    2 +-
 .../service/MeetingReadPlatformServiceImpl.java    |    2 +-
 ...etingWritePlatformServiceJpaRepositoryImpl.java |   65 +-
 .../portfolio/note/api/NotesApiResource.java       |   65 +-
 .../note/api/NotesApiResourceSwagger.java          |   40 +-
 .../portfolio/note/command/NoteCommand.java        |    2 +-
 .../fineract/portfolio/note/data/NoteData.java     |    2 +-
 .../fineract/portfolio/note/domain/Note.java       |    3 +-
 .../portfolio/note/domain/NoteRepository.java      |    2 +-
 .../fineract/portfolio/note/domain/NoteType.java   |    5 +-
 .../note/exception/NoteNotFoundException.java      |    6 +-
 .../NoteResourceNotSupportedException.java         |    2 +-
 .../note/handler/DeleteNoteCommandHandler.java     |    2 +-
 .../NoteCommandFromApiJsonDeserializer.java        |    8 +-
 .../note/service/NoteReadPlatformService.java      |    2 +-
 .../note/service/NoteReadPlatformServiceImpl.java  |   10 +-
 .../NoteWritePlatformServiceJpaRepositoryImpl.java |   13 +-
 .../paymentdetail/PaymentDetailConstants.java      |    2 +-
 .../paymentdetail/data/PaymentDetailData.java      |   21 +-
 .../paymentdetail/domain/PaymentDetail.java        |    2 +-
 .../domain/PaymentDetailRepository.java            |    2 +-
 .../service/PaymentDetailWritePlatformService.java |    2 +-
 ...etailWritePlatformServiceJpaRepositoryImpl.java |    2 +-
 .../paymenttype/api/PaymentTypeApiResource.java    |   35 +-
 .../api/PaymentTypeApiResourceConstants.java       |    3 +-
 .../api/PaymentTypeApiResourceSwagger.java         |   32 +-
 .../paymenttype/data/PaymentTypeData.java          |   15 +-
 .../paymenttype/data/PaymentTypeDataValidator.java |   23 +-
 .../exception/PaymentTypeNotFoundException.java    |    4 -
 .../handler/UpdatePaymentTypeCommandHandler.java   |    2 +-
 .../service/PaymentTypeReadPlatformService.java    |    1 +
 .../service/PaymentTypeWriteServiceImpl.java       |    6 +-
 .../products/api/ProductsApiResource.java          |   54 +-
 .../products/api/ProductsApiResourceSwagger.java   |  152 +-
 .../products/constants/ProductsApiConstants.java   |    5 +-
 .../portfolio/products/data/ProductData.java       |    1 -
 .../exception/ProductNotFoundException.java        |    4 +-
 .../exception/ResourceNotFoundException.java       |    5 +-
 .../products/service/ProductCommandsService.java   |    4 +-
 .../service/ProductReadPlatformService.java        |    2 +-
 .../portfolio/rate/api/RateApiConstants.java       |   10 +-
 .../portfolio/rate/api/RateApiResource.java        |  150 +-
 .../fineract/portfolio/rate/data/RateData.java     |   34 +-
 .../fineract/portfolio/rate/domain/Rate.java       |  251 +-
 .../portfolio/rate/domain/RateAppliesTo.java       |   67 +-
 .../portfolio/rate/domain/RateRepository.java      |    8 +-
 .../rate/domain/RateRepositoryWrapper.java         |   53 +-
 .../rate/exception/RateAlreadyExistException.java  |    5 +-
 .../rate/exception/RateNotFoundException.java      |   13 +-
 .../rate/handler/CreateRateCommandHandler.java     |   21 +-
 .../rate/handler/UpdateRateCommandHandler.java     |   23 +-
 ...teDefinitionCommandFromApiJsonDeserializer.java |  112 +-
 .../portfolio/rate/service/RateAssembler.java      |   59 +-
 .../portfolio/rate/service/RateEnumerations.java   |   32 +-
 .../portfolio/rate/service/RateReadService.java    |   15 +-
 .../rate/service/RateReadServiceImpl.java          |  183 +-
 .../portfolio/rate/service/RateWriteService.java   |    3 +-
 .../rate/service/RateWriteServiceImpl.java         |   15 +-
 .../savings/DepositAccountOnClosureType.java       |   10 +-
 .../DepositAccountOnHoldTransactionType.java       |    2 +-
 .../portfolio/savings/DepositAccountType.java      |    2 +-
 .../portfolio/savings/DepositsApiConstants.java    |   94 +-
 .../savings/PreClosurePenalInterestOnType.java     |    1 +
 .../portfolio/savings/RecurringDepositType.java    |    1 +
 .../savings/SavingsAccountTransactionType.java     |   11 +-
 .../portfolio/savings/SavingsApiConstants.java     |   18 +-
 .../SavingsCompoundingInterestPeriodType.java      |    2 +-
 .../SavingsInterestCalculationDaysInYearType.java  |    2 +-
 .../savings/SavingsInterestCalculationType.java    |    2 +-
 .../savings/SavingsPeriodFrequencyType.java        |    1 +
 .../savings/SavingsPostingInterestPeriodType.java  |    2 +-
 .../savings/SavingsWithdrawalFeesType.java         |    2 +-
 ...itAccountOnHoldFundTransactionsApiResource.java |   11 +-
 ...FixedDepositAccountTransactionsApiResource.java |   22 +-
 .../api/FixedDepositAccountsApiResource.java       |  172 +-
 .../FixedDepositAccountsApiResourceSwagger.java    |  124 +-
 .../api/FixedDepositProductsApiResource.java       |   50 +-
 .../FixedDepositProductsApiResourceSwagger.java    |  156 +-
 ...rringDepositAccountTransactionsApiResource.java |   78 +-
 ...positAccountTransactionsApiResourceSwagger.java |   52 +-
 .../api/RecurringDepositAccountsApiResource.java   |  164 +-
 ...RecurringDepositAccountsApiResourceSwagger.java |  120 +-
 .../api/RecurringDepositProductsApiResource.java   |   51 +-
 ...RecurringDepositProductsApiResourceSwagger.java |  161 +-
 .../api/SavingsAccountChargesApiResource.java      |  108 +-
 .../SavingsAccountChargesApiResourceSwagger.java   |   69 +-
 .../api/SavingsAccountTransactionsApiResource.java |   19 +-
 .../savings/api/SavingsAccountsApiResource.java    |  215 +-
 .../api/SavingsAccountsApiResourceSwagger.java     |   96 +-
 .../savings/api/SavingsApiSetConstants.java        |   60 +-
 .../savings/api/SavingsProductsApiResource.java    |   58 +-
 .../api/SavingsProductsApiResourceSwagger.java     |  212 +-
 .../savings/data/ClosingOfSavingsAccounts.java     |   17 +-
 .../portfolio/savings/data/DepositAccountData.java |   56 +-
 .../savings/data/DepositAccountDataValidator.java  |  114 +-
 .../data/DepositAccountInterestRateChartData.java  |   10 +-
 .../DepositAccountInterestRateChartSlabData.java   |    8 +-
 .../data/DepositAccountOnHoldTransactionData.java  |    7 +-
 .../DepositAccountTransactionDataValidator.java    |   54 +-
 .../portfolio/savings/data/DepositProductData.java |   22 +-
 .../savings/data/DepositProductDataValidator.java  |  174 +-
 .../savings/data/FixedDepositAccountData.java      |  131 +-
 .../savings/data/FixedDepositProductData.java      |  111 +-
 .../portfolio/savings/data/GSIMContainer.java      |    5 +-
 ...roupSavingsIndividualMonitoringAccountData.java |  148 +-
 .../savings/data/RecurringDepositAccountData.java  |  110 +-
 .../savings/data/RecurringDepositProductData.java  |   98 +-
 .../savings/data/SavingsAccountAnnualFeeData.java  |    2 +-
 .../SavingsAccountApplicationTimelineData.java     |    2 +-
 .../savings/data/SavingsAccountChargeData.java     |    7 +-
 .../data/SavingsAccountChargeDataValidator.java    |    8 +-
 .../savings/data/SavingsAccountConstant.java       |   37 +-
 .../portfolio/savings/data/SavingsAccountData.java |  231 +-
 .../savings/data/SavingsAccountDataDTO.java        |    4 +-
 .../savings/data/SavingsAccountDataValidator.java  |   91 +-
 .../savings/data/SavingsAccountStatusEnumData.java |    2 +-
 .../data/SavingsAccountSubStatusEnumData.java      |    6 +-
 .../savings/data/SavingsAccountSummaryData.java    |    4 +-
 .../savings/data/SavingsAccountTransactionDTO.java |    4 +-
 .../data/SavingsAccountTransactionData.java        |   73 +-
 .../SavingsAccountTransactionDataValidator.java    |   23 +-
 .../data/SavingsAccountTransactionEnumData.java    |    2 +-
 .../portfolio/savings/data/SavingsActivation.java  |    7 +-
 .../portfolio/savings/data/SavingsApproval.java    |    7 +-
 .../portfolio/savings/data/SavingsProductData.java |   92 +-
 .../savings/data/SavingsProductDataValidator.java  |  321 +-
 .../savings/data/TransactionDateData.java          |    2 +-
 .../savings/domain/DepositAccountAssembler.java    |   33 +-
 .../domain/DepositAccountDomainService.java        |   11 +-
 .../domain/DepositAccountDomainServiceJpa.java     |   64 +-
 .../domain/DepositAccountInterestRateChart.java    |    4 +-
 .../DepositAccountInterestRateChartSlabs.java      |    7 +-
 .../domain/DepositAccountOnHoldTransaction.java    |    2 +-
 .../DepositAccountOnHoldTransactionRepository.java |    6 +-
 .../domain/DepositAccountRecurringDetail.java      |    9 +-
 .../domain/DepositAccountTermAndPreClosure.java    |   20 +-
 .../savings/domain/DepositPreClosureDetail.java    |    2 +-
 .../domain/DepositProductAmountDetails.java        |    5 +-
 .../savings/domain/DepositProductAssembler.java    |   26 +-
 .../domain/DepositProductRecurringDetail.java      |    2 +-
 .../domain/DepositProductTermAndPreClosure.java    |    2 +-
 .../savings/domain/DepositRecurringDetail.java     |    2 +-
 .../savings/domain/DepositTermDetail.java          |   20 +-
 .../savings/domain/FixedDepositAccount.java        |   47 +-
 .../domain/FixedDepositAccountRepository.java      |    6 +-
 .../savings/domain/FixedDepositProduct.java        |   20 +-
 .../domain/FixedDepositProductRepository.java      |    6 +-
 .../portfolio/savings/domain/GSIMRepositoy.java    |    8 +-
 .../domain/GroupSavingsIndividualMonitoring.java   |  160 +-
 .../savings/domain/RecurringDepositAccount.java    |   84 +-
 .../domain/RecurringDepositAccountRepository.java  |    6 +-
 .../savings/domain/RecurringDepositProduct.java    |    2 +-
 .../domain/RecurringDepositProductRepository.java  |    6 +-
 .../RecurringDepositScheduleInstallment.java       |   16 +-
 .../portfolio/savings/domain/SavingsAccount.java   |  275 +-
 .../savings/domain/SavingsAccountAssembler.java    |   16 +-
 .../savings/domain/SavingsAccountCharge.java       |   50 +-
 .../domain/SavingsAccountChargeAssembler.java      |    8 +-
 .../domain/SavingsAccountChargeRepository.java     |    4 +-
 .../SavingsAccountChargeRepositoryWrapper.java     |    3 +-
 .../domain/SavingsAccountDomainService.java        |    2 +-
 .../domain/SavingsAccountDomainServiceJpa.java     |   11 +-
 .../savings/domain/SavingsAccountRepository.java   |    4 +-
 .../domain/SavingsAccountRepositoryWrapper.java    |   37 +-
 .../savings/domain/SavingsAccountStatusType.java   |    2 +-
 .../domain/SavingsAccountSubStatusEnum.java        |   12 +-
 .../savings/domain/SavingsAccountSummary.java      |    3 +-
 .../savings/domain/SavingsAccountTransaction.java  |   69 +-
 .../SavingsAccountTransactionComparator.java       |    2 +-
 .../SavingsAccountTransactionRepository.java       |    4 +-
 .../SavingsAccountTransactionSummaryWrapper.java   |    6 +-
 .../portfolio/savings/domain/SavingsHelper.java    |   20 +-
 .../portfolio/savings/domain/SavingsProduct.java   |   39 +-
 .../savings/domain/SavingsProductAssembler.java    |    6 +-
 .../domain/SavingsProductChargeAssembler.java      |    8 +-
 .../savings/domain/SavingsProductRepository.java   |    2 +-
 .../domain/interest/AnnualCompoundingPeriod.java   |   15 +-
 .../domain/interest/BiAnnualCompoundingPeriod.java |   15 +-
 .../domain/interest/CompoundInterestHelper.java    |    5 +-
 .../savings/domain/interest/CompoundingPeriod.java |    3 +-
 .../domain/interest/DailyCompoundingPeriod.java    |   14 +-
 .../savings/domain/interest/EndOfDayBalance.java   |   18 +-
 .../domain/interest/MonthlyCompoundingPeriod.java  |   15 +-
 .../savings/domain/interest/PostingPeriod.java     |   94 +-
 .../interest/QuarterlyCompoundingPeriod.java       |   15 +-
 ...tAccountInterestRateChartNotFoundException.java |    6 +-
 .../exception/DepositAccountNotFoundException.java |    6 +-
 ...positAccountTransactionNotAllowedException.java |    8 +-
 .../FixedDepositProductNotFoundException.java      |    2 +-
 .../InsufficientAccountBalanceException.java       |    2 +-
 .../exception/PostInterestAsOnDateException.java   |   23 +-
 .../RecurringDepositProductNotFoundException.java  |    2 +-
 .../exception/SavingsAccountNotFoundException.java |    5 +-
 ...SavingsAccountTransactionNotFoundException.java |    5 +-
 ...ingsActivityPriorToClientTransferException.java |    2 +-
 .../SavingsOfficerAssignmentDateException.java     |    5 +-
 .../SavingsOfficerUnassignmentDateException.java   |    1 -
 .../SavingsOfficerUnassignmentException.java       |    3 +-
 .../exception/SavingsProductNotFoundException.java |    2 +-
 ...ransferTransactionsCannotBeUndoneException.java |    2 +-
 .../TransactionUpdateNotAllowedException.java      |    5 +-
 .../ActivateFixedDepositAccountCommandHandler.java |    2 +-
 ...ivateRecurringDepositAccountCommandHandler.java |    2 +-
 .../ActivateSavingsAccountCommandHandler.java      |    2 +-
 .../AddSavingsAccountChargeCommandHandler.java     |    2 +-
 ...ApplyAnnualFeeSavingsAccountCommandHandler.java |    2 +-
 ...eInterestFixedDepositAccountCommandHandler.java |    2 +-
 ...erestRecurringDepositAccountCommandHandler.java |    2 +-
 ...culateInterestSavingsAccountCommandHandler.java |    2 +-
 .../CloseFixedDepositAccountCommandHandler.java    |    2 +-
 .../savings/handler/CloseGSIMCommandHandler.java   |    6 +-
 ...CloseRecurringDepositAccountCommandHandler.java |    2 +-
 .../CreateFixedDepositProductCommandHandler.java   |    2 +-
 ...reateRecurringDepositProductCommandHandler.java |    2 +-
 .../CreateSavingsProductCommandHandler.java        |    2 +-
 .../DeleteFixedDepositProductCommandHandler.java   |    2 +-
 ...eleteRecurringDepositProductCommandHandler.java |    2 +-
 .../DeleteSavingsAccountChargeCommandHandler.java  |    2 +-
 .../DeleteSavingsProductCommandHandler.java        |    2 +-
 .../DepositSavingsAccountCommandHandler.java       |    2 +-
 ...itAccountApplicationApprovalCommandHandler.java |    2 +-
 ...countApplicationApprovalUndoCommandHandler.java |    2 +-
 ...itAccountApplicationDeletionCommandHandler.java |    2 +-
 ...countApplicationModificationCommandHandler.java |    2 +-
 ...itAccountApplicationRejectedCommandHandler.java |    2 +-
 ...tAccountApplicationSubmittalCommandHandler.java |    2 +-
 ...licationWithdrawnByApplicantCommandHandler.java |    2 +-
 .../FixedDepositAccountDepositCommandHandler.java  |    2 +-
 ...DepositTransactionAdjustmentCommandHandler.java |    2 +-
 .../GSIMAccountActivationCommandHandler.java       |    6 +-
 .../GSIMApplicationApprovalCommandHandler.java     |   10 +-
 .../GSIMApplicationModificationCommandHandler.java |   27 +-
 .../handler/GSIMApplicationRejectionHandler.java   |    9 +-
 .../GSIMApplicationSubmittalCommandHandler.java    |    9 +-
 .../savings/handler/GSIMDepositCommandHandler.java |    2 -
 .../handler/GSIMUndoApprovalCommandHandler.java    |    6 +-
 .../PaySavingsAccountChargeCommandHandler.java     |    2 +-
 ...tInterestFixedDepositAccountCommandHandler.java |    2 +-
 ...erestRecurringDepositAccountCommandHandler.java |    2 +-
 .../PostInterestSavingsAccountCommandHandler.java  |    2 +-
 ...tureCloseFixedDepositAccountCommandHandler.java |    2 +-
 ...CloseRecurringDepositAccountCommandHandler.java |    5 +-
 ...itAccountApplicationApprovalCommandHandler.java |    6 +-
 ...countApplicationApprovalUndoCommandHandler.java |    2 +-
 ...itAccountApplicationDeletionCommandHandler.java |    2 +-
 ...countApplicationModificationCommandHandler.java |    2 +-
 ...itAccountApplicationRejectedCommandHandler.java |    2 +-
 ...tAccountApplicationSubmittalCommandHandler.java |    2 +-
 ...licationWithdrawnByApplicantCommandHandler.java |    2 +-
 ...curringDepositAccountDepositCommandHandler.java |    2 +-
 ...itAccountUpdateDepositAmountCommandHandler.java |    2 +-
 ...DepositTransactionAdjustmentCommandHandler.java |    5 +-
 ...gsAccountApplicationApprovalCommandHandler.java |    2 +-
 ...countApplicationApprovalUndoCommandHandler.java |    2 +-
 ...countApplicationModificationCommandHandler.java |    2 +-
 ...gsAccountApplicationRejectedCommandHandler.java |    2 +-
 ...sAccountApplicationSubmittalCommandHandler.java |    2 +-
 ...licationWithdrawnByApplicantCommandHandler.java |    2 +-
 ...ansactionFixedDepositAccountCommandHandler.java |    2 +-
 ...ctionRecurringDepositAccountCommandHandler.java |    5 +-
 ...ndoTransactionSavingsAccountCommandHandler.java |    2 +-
 .../UpdateFixedDepositProductCommandHandler.java   |    2 +-
 ...pdateRecurringDepositProductCommandHandler.java |    2 +-
 .../UpdateSavingsAccountChargeCommandHandler.java  |    2 +-
 .../UpdateSavingsProductCommandHandler.java        |    2 +-
 ...ateWithHoldTaxSavingsAccountCommandHandler.java |    2 +-
 .../WaiveSavingsAccountChargeCommandHandler.java   |    2 +-
 .../WithdrawSavingsAccountCommandHandler.java      |    2 +-
 ...ithdrawalFixedDepositAccountCommandHandler.java |    2 +-
 ...rawalRecurringDepositAccountCommandHandler.java |    2 +-
 ...ntInterestRateChartReadPlatformServiceImpl.java |   19 +-
 ...ntOnHoldTransactionReadPlatformServiceImpl.java |    3 +-
 ...untPreMatureCalculationPlatformServiceImpl.java |   18 +-
 .../service/DepositAccountReadPlatformService.java |    3 +-
 .../DepositAccountReadPlatformServiceImpl.java     |  235 +-
 .../DepositAccountWritePlatformService.java        |    2 +-
 ...countWritePlatformServiceJpaRepositoryImpl.java |  108 +-
 ...ositApplicationProcessWritePlatformService.java |    2 +-
 ...ocessWritePlatformServiceJpaRepositoryImpl.java |   61 +-
 .../DepositProductReadPlatformServiceImpl.java     |   54 +-
 .../DepositsDropdownReadPlatformService.java       |    2 +-
 .../DepositsDropdownReadPlatformServiceImpl.java   |   12 +-
 .../FixedDepositProductWritePlatformService.java   |    2 +-
 ...oductWritePlatformServiceJpaRepositoryImpl.java |   20 +-
 .../savings/service/GSIMReadPlatformService.java   |    4 +-
 .../service/GSIMReadPlatformServiceImpl.java       |  573 ++-
 ...gsIndividualMonitoringWritePlatformService.java |    7 +-
 ...dividualMonitoringWritePlatformServiceImpl.java |   80 +-
 ...ecurringDepositProductWritePlatformService.java |    2 +-
 ...oductWritePlatformServiceJpaRepositoryImpl.java |   16 +-
 ...countApplicationTransitionApiJsonValidator.java |    2 +-
 ...avingsAccountChargeReadPlatformServiceImpl.java |   27 +-
 .../service/SavingsAccountReadPlatformService.java |    9 +-
 .../SavingsAccountReadPlatformServiceImpl.java     |  188 +-
 .../SavingsAccountWritePlatformService.java        |    3 +-
 ...countWritePlatformServiceJpaRepositoryImpl.java |  177 +-
 ...ingsApplicationProcessWritePlatformService.java |    2 +-
 ...ocessWritePlatformServiceJpaRepositoryImpl.java |  339 +-
 .../SavingsDropdownReadPlatformService.java        |    2 +-
 .../SavingsDropdownReadPlatformServiceImpl.java    |   14 +-
 .../savings/service/SavingsEnumerations.java       |  185 +-
 .../SavingsProductReadPlatformServiceImpl.java     |   26 +-
 .../SavingsProductWritePlatformService.java        |    2 +-
 ...oductWritePlatformServiceJpaRepositoryImpl.java |   20 +-
 .../savings/service/SavingsSchedularService.java   |    1 -
 .../service/SavingsSchedularServiceImpl.java       |   15 +-
 .../fineract/portfolio/search/SearchConstants.java |   11 +-
 .../portfolio/search/api/SearchApiResource.java    |   41 +-
 .../search/api/SearchApiResourceSwagger.java       |    8 +-
 .../search/data/AdHocQueryDataValidator.java       |  142 +-
 .../search/data/AdHocQuerySearchConstants.java     |   12 +-
 .../portfolio/search/data/SearchConditions.java    |   35 +-
 .../fineract/portfolio/search/data/SearchData.java |    5 +-
 .../service/SearchReadPlatformServiceImpl.java     |   12 +-
 .../api/SelfAccountTransferApiResource.java        |  201 +-
 .../api/SelfAccountTransferApiResourceSwagger.java |   29 +-
 .../api/SelfBeneficiariesTPTApiResource.java       |  103 +-
 .../SelfBeneficiariesTPTApiResourceSwagger.java    |   39 +-
 .../self/account/data/SelfAccountTemplateData.java |   29 +-
 .../self/account/data/SelfAccountTransferData.java |    3 +-
 .../data/SelfAccountTransferDataValidator.java     |  132 +-
 .../account/data/SelfBeneficiariesTPTData.java     |   10 +-
 .../data/SelfBeneficiariesTPTDataValidator.java    |  104 +-
 .../self/account/domain/SelfBeneficiariesTPT.java  |    9 +-
 .../domain/SelfBeneficiariesTPTRepository.java     |    5 +-
 .../BeneficiaryTransferLimitExceededException.java |    3 +-
 ...TPTTransactionAmountLimitExceededException.java |    7 +-
 .../InvalidAccountInformationException.java        |   13 +-
 .../exception/InvalidBeneficiaryException.java     |    7 +-
 .../AddSelfBeneficiariesTPTCommandHandler.java     |    7 +-
 .../DeleteSelfBeneficiariesTPTCommandHandler.java  |    7 +-
 .../UpdateSelfBeneficiariesTPTCommandHandler.java  |    7 +-
 .../service/SelfAccountTransferReadService.java    |    3 +-
 .../SelfAccountTransferReadServiceImpl.java        |   59 +-
 .../SelfBeneficiariesTPTReadPlatformService.java   |    3 +-
 ...elfBeneficiariesTPTReadPlatformServiceImpl.java |   84 +-
 ...lfBeneficiariesTPTWritePlatformServiceImpl.java |   67 +-
 .../self/client/api/SelfClientsApiResource.java    |  144 +-
 .../client/api/SelfClientsApiResourceSwagger.java  |   88 +-
 .../self/client/data/SelfClientDataValidator.java  |   21 +-
 .../AppuserClientMapperReadServiceImpl.java        |   16 +-
 .../self/loanaccount/api/SelfLoansApiResource.java |  143 +-
 .../api/SelfLoansApiResourceSwagger.java           |  172 +-
 .../loanaccount/data/SelfLoansDataValidator.java   |   98 +-
 .../service/AppuserLoansMapperReadServiceImpl.java |   14 +-
 .../self/pockets/api/PocketApiResource.java        |   98 +-
 .../self/pockets/api/PocketApiResourceSwagger.java |   36 +-
 .../pockets/data/PocketAccountMappingData.java     |    6 +-
 .../self/pockets/data/PocketDataValidator.java     |   43 +-
 .../portfolio/self/pockets/domain/Pocket.java      |    6 +-
 .../self/pockets/domain/PocketAccountMapping.java  |    6 +-
 .../PocketAccountMappingRepositoryWrapper.java     |    7 +-
 .../self/pockets/domain/PocketRepository.java      |    2 +-
 .../pockets/domain/PocketRepositoryWrapper.java    |    5 +-
 .../MappingIdNotLinkedToPocketException.java       |    5 +-
 .../DelinkAccountsFromPocketCommandHandler.java    |    1 +
 .../service/AccountEntityServiceFactory.java       |   19 +-
 .../service/AccountEntityServiceForLoanImpl.java   |    6 +-
 .../AccountEntityServiceForSavingsImpl.java        |    3 +-
 .../AccountEntityServiceForShareAccountsImpl.java  |    1 -
 ...ocketAccountMappingReadPlatformServiceImpl.java |   10 +-
 .../service/PocketWritePlatformService.java        |    1 -
 .../service/PocketWritePlatformServiceImpl.java    |   14 +-
 .../products/api/SelfLoanProductsApiResource.java  |  217 +-
 .../api/SelfSavingsProductsApiResource.java        |    3 +-
 .../products/api/SelfShareProductsApiResource.java |    9 +-
 .../self/registration/SelfServiceApiConstants.java |   14 +-
 .../api/SelfServiceRegistrationApiResource.java    |    9 +-
 .../domain/SelfServiceRegistrationRepository.java  |    4 +-
 .../SelfServiceRegistrationNotFoundException.java  |    4 +-
 ...erviceRegistrationWritePlatformServiceImpl.java |   20 +-
 .../self/runreport/SelfRunReportApiResource.java   |   32 +-
 .../runreport/SelfRunReportApiResourceSwagger.java |   30 +-
 .../self/savings/api/SelfSavingsApiResource.java   |   89 +-
 .../savings/api/SelfSavingsApiResourceSwagger.java |   76 +-
 .../savings/data/SelfSavingsDataValidator.java     |  110 +-
 .../AppuserSavingsMapperReadServiceImpl.java       |   17 +-
 .../api/SelfAuthenticationApiResource.java         |   12 +-
 .../api/SelfAuthenticationApiResourceSwagger.java  |   16 +-
 .../self/security/api/SelfUserApiResource.java     |   54 +-
 .../security/api/SelfUserApiResourceSwagger.java   |   16 +-
 .../security/api/SelfUserDetailsApiResource.java   |   21 +-
 .../api/SelfUserDetailsApiResourceSwagger.java     |   16 +-
 .../api/SelfShareAccountsApiResource.java          |  231 +-
 .../api/SelfShareAccountsApiResourceSwagger.java   |  168 +-
 .../data/SelfShareAccountsDataValidator.java       |   14 +-
 ...ShareAccountsMapperReadPlatformServiceImpl.java |   18 +-
 .../self/spm/api/SelfScorecardApiResource.java     |   13 +-
 .../portfolio/self/spm/api/SelfSpmApiResource.java |    6 +-
 .../data/ShareAccountApplicationTimelineData.java  |    8 +-
 .../shareaccounts/data/ShareAccountChargeData.java |   12 +-
 .../shareaccounts/data/ShareAccountData.java       |   87 +-
 .../data/ShareAccountDividendData.java             |   12 +-
 .../data/ShareAccountStatusEnumData.java           |    2 +-
 .../data/ShareAccountTransactionData.java          |   16 +-
 .../data/ShareAccountTransactionEnumData.java      |    1 -
 .../domain/PurchasedSharesStatusType.java          |    6 +-
 .../shareaccounts/domain/ShareAccount.java         |   91 +-
 .../shareaccounts/domain/ShareAccountCharge.java   |   18 +-
 .../domain/ShareAccountChargePaidBy.java           |   29 +-
 .../domain/ShareAccountDividendRepository.java     |    4 +-
 .../domain/ShareAccountRepository.java             |    1 -
 .../domain/ShareAccountRepositoryWrapper.java      |   12 +-
 .../domain/ShareAccountStatusType.java             |    2 +-
 .../domain/ShareAccountTransaction.java            |  134 +-
 .../IssueableSharesExceededException.java          |    2 +-
 .../ActivateShareAccountCommandHandler.java        |    8 +-
 .../ApplyAddtionalSharesCommandHandler.java        |    8 +-
 .../ApproveAddtionalSharesCommandHandler.java      |    8 +-
 .../handler/ApproveShareAccountCommandHandler.java |    8 +-
 .../handler/CloseShareAccountCommandHandler.java   |    8 +-
 .../handler/CreateShareAccountCommandHandler.java  |    8 +-
 .../handler/RedeemSharesCommandHandler.java        |    8 +-
 .../RejectAddtionalSharesCommandHandler.java       |    8 +-
 .../handler/RejectShareAccountCommandHandler.java  |    8 +-
 .../UndoApproveShareAccountCommandHandler.java     |    8 +-
 .../handler/UpdateShareAccountCommandHandler.java  |    4 +-
 .../serialization/ShareAccountDataSerializer.java  |  363 +-
 .../PurchasedSharesReadPlatformService.java        |    2 +-
 .../PurchasedSharesReadPlatformServiceImpl.java    |   57 +-
 .../ShareAccountChargeReadPlatformService.java     |    2 +-
 .../ShareAccountChargeReadPlatformServiceImpl.java |   75 +-
 .../service/ShareAccountCommandsServiceImpl.java   |   35 +-
 ...hareAccountDividendReadPlatformServiceImpl.java |    3 +-
 .../service/ShareAccountReadPlatformService.java   |    3 +-
 .../ShareAccountReadPlatformServiceImpl.java       |   49 +-
 .../service/ShareAccountSchedularService.java      |    2 -
 .../service/ShareAccountWritePlatformService.java  |   18 +-
 ...countWritePlatformServiceJpaRepositoryImpl.java |   85 +-
 .../shareaccounts/service/SharesEnumerations.java  |   36 +-
 .../shareproducts/SharePeriodFrequencyType.java    |    1 +
 .../api/ShareDividendApiResource.java              |    6 +-
 .../shareproducts/data/ShareProductData.java       |   24 +-
 .../data/ShareProductMarketPriceData.java          |   10 +-
 .../shareproducts/domain/ShareProduct.java         |   35 +-
 .../domain/ShareProductDividendPayOutDetails.java  |    2 +-
 .../domain/ShareProductDividendStatusType.java     |    1 -
 ...hareProductDividentPayOutDetailsRepository.java |    4 +-
 ...ductDividentPayOutDetailsRepositoryWrapper.java |    4 +-
 .../domain/ShareProductMarketPrice.java            |   16 +-
 .../domain/ShareProductRepository.java             |    1 -
 .../domain/ShareProductRepositoryWrapper.java      |   11 +-
 .../exception/DividendNotFoundException.java       |    2 +-
 .../exception/ShareAccountsNotFoundException.java  |    3 +-
 .../handler/CreateShareProductCommandHandler.java  |    4 +-
 .../handler/UpdateShareProductCommandHandler.java  |    4 +-
 .../serialization/ShareProductDataSerializer.java  |  112 +-
 .../service/ShareProductCommandsServiceImpl.java   |   10 +-
 .../service/ShareProductDividendAssembler.java     |   20 +-
 ...hareProductDividendReadPlatformServiceImpl.java |    3 +-
 .../ShareProductDropdownReadPlatformService.java   |    2 +-
 ...hareProductDropdownReadPlatformServiceImpl.java |    4 +-
 .../ShareProductReadPlatformServiceImpl.java       |    8 +-
 ...oductWritePlatformServiceJpaRepositoryImpl.java |   54 +-
 .../portfolio/tax/api/TaxComponentApiResource.java |   34 +-
 .../tax/api/TaxComponentApiResourceSwagger.java    |   40 +-
 .../portfolio/tax/api/TaxGroupApiResource.java     |   33 +-
 .../tax/api/TaxGroupApiResourceSwagger.java        |   48 +-
 .../portfolio/tax/domain/TaxComponent.java         |    8 +-
 .../portfolio/tax/domain/TaxComponentHistory.java  |   13 +-
 .../tax/domain/TaxComponentRepositoryWrapper.java  |    3 +-
 .../fineract/portfolio/tax/domain/TaxGroup.java    |    2 +-
 .../tax/domain/TaxGroupRepositoryWrapper.java      |    3 +-
 .../tax/exception/TaxMappingNotFoundException.java |    2 +-
 .../portfolio/tax/serialization/TaxValidator.java  |   50 +-
 .../portfolio/tax/service/TaxAssembler.java        |    4 +-
 .../tax/service/TaxReadPlatformServiceImpl.java    |    4 +-
 .../transfer/api/TransferApiConstants.java         |    2 +-
 .../transfer/data/TransfersDataValidator.java      |   38 +-
 ...ClientNotAwaitingTransferApprovalException.java |    4 +-
 ...tAwaitingTransferApprovalOrOnHoldException.java |    4 +-
 .../exception/TransferNotSupportedException.java   |   11 +-
 .../AcceptClientTransferCommandHandler.java        |    2 +-
 ...oposeAndAcceptClientTransferCommandHandler.java |    2 +-
 .../ProposeClientTransferCommandHandler.java       |    2 +-
 .../RejectClientTransferCommandHandler.java        |    2 +-
 ...TransferClientsBetweenGroupsCommandHandler.java |    2 +-
 .../WithdrawClientTransferCommandHandler.java      |    2 +-
 .../transfer/service/TransferEventType.java        |    5 +-
 .../service/TransferWritePlatformService.java      |    2 +-
 ...nsferWritePlatformServiceJpaRepositoryImpl.java |   66 +-
 .../service/ScheduledJobRunnerService.java         |    2 +-
 .../service/ScheduledJobRunnerServiceImpl.java     |  134 +-
 .../fineract/spm/api/LookupTableApiResource.java   |   35 +-
 .../fineract/spm/api/ScorecardApiResource.java     |   18 +-
 .../apache/fineract/spm/api/SpmApiResource.java    |   27 +-
 .../apache/fineract/spm/data/ComponentData.java    |    3 +-
 .../apache/fineract/spm/data/LookupTableData.java  |    3 +-
 .../org/apache/fineract/spm/data/QuestionData.java |    2 +-
 .../org/apache/fineract/spm/data/ResponseData.java |    3 +-
 .../apache/fineract/spm/data/ScorecardValue.java   |    3 -
 .../org/apache/fineract/spm/data/SurveyData.java   |    5 +-
 .../org/apache/fineract/spm/domain/Survey.java     |    8 +-
 .../fineract/spm/domain/SurveyValidator.java       |    4 +-
 .../SurveyResponseNotAvailableException.java       |    3 +-
 .../spm/repository/LookupTableRepository.java      |    1 +
 .../spm/repository/ScorecardRepository.java        |    1 +
 .../fineract/spm/service/LookupTableService.java   |    3 +-
 .../spm/service/ScorecardReadPlatformService.java  |    3 +-
 .../service/ScorecardReadPlatformServiceImpl.java  |    3 +-
 .../fineract/spm/service/ScorecardService.java     |    3 +-
 .../apache/fineract/spm/service/SpmService.java    |   28 +-
 .../fineract/spm/util/LookupTableMapper.java       |    4 +-
 .../apache/fineract/spm/util/ScorecardMapper.java  |   30 +-
 .../fineract/spm/util/SurveyApiConstants.java      |    3 +-
 .../org/apache/fineract/spm/util/SurveyMapper.java |   25 +-
 .../template/api/TemplatesApiResource.java         |   48 +-
 .../template/api/TemplatesApiResourcesSwagger.java |   17 +
 .../apache/fineract/template/domain/Template.java  |   38 +-
 .../template/domain/TemplateEntitySerializer.java  |    4 +-
 .../template/domain/TemplateFunctions.java         |    2 +-
 .../template/domain/TemplateTypeSerializer.java    |    4 +-
 .../exception/TemplateNotFoundException.java       |    2 +-
 .../template/service/JpaTemplateDomainService.java |   40 +-
 .../template/service/TemplateMergeService.java     |   16 +-
 .../fineract/template/service/TrustModifier.java   |    9 +-
 .../api/PasswordPreferencesApiConstants.java       |    3 +-
 .../api/PasswordPreferencesApiResource.java        |   23 +-
 .../api/PasswordPreferencesApiResourceSwagger.java |    5 +
 .../api/PermissionsApiResource.java                |   33 +-
 .../api/PermissionsApiResourceSwagger.java         |    8 +-
 .../useradministration/api/RolesApiResource.java   |   59 +-
 .../api/RolesApiResourceSwagger.java               |   32 +-
 .../useradministration/api/UsersApiResource.java   |   60 +-
 .../api/UsersApiResourceSwagger.java               |   22 +
 .../command/PermissionsCommand.java                |    2 +-
 .../useradministration/data/AppUserData.java       |   44 +-
 .../data/PasswordValidationPolicyData.java         |    2 +-
 .../useradministration/data/PermissionData.java    |    2 +-
 .../fineract/useradministration/data/RoleData.java |    4 +-
 .../data/RolePermissionsData.java                  |    2 +-
 .../useradministration/domain/AppUser.java         |   42 +-
 .../domain/AppUserClientMapping.java               |   16 +-
 .../domain/AppUserPreviousPassword.java            |    2 +-
 .../domain/AppUserPreviousPasswordRepository.java  |    4 +-
 .../domain/AppUserRepositoryWrapper.java           |   12 +-
 .../domain/JpaUserDomainService.java               |    6 +-
 .../domain/PasswordValidationPolicy.java           |    2 +-
 .../domain/PasswordValidationPolicyRepository.java |    6 +-
 .../useradministration/domain/RoleRepository.java  |    2 +-
 .../exception/PasswordPreviouslyUsedException.java |    3 +-
 .../PasswordValidationPolicyNotFoundException.java |    5 +-
 .../PermissionCantBeMakerCheckerableException.java |    2 +-
 .../exception/PermissionNotFoundException.java     |    2 +-
 .../exception/RoleAssociatedException.java         |    3 +-
 .../exception/RoleNotFoundException.java           |    2 +-
 .../exception/UserNotFoundException.java           |    2 +-
 .../exception/UsernameAlreadyExistsException.java  |    2 +-
 .../handler/CreateRoleCommandHandler.java          |    2 +-
 .../handler/CreateUserCommandHandler.java          |    2 +-
 .../handler/DeleteUserCommandHandler.java          |    2 +-
 ...pdateMakerCheckerPermissionsCommandHandler.java |    2 +-
 .../UpdatePasswordPreferencesCommandHandler.java   |    2 +-
 .../handler/UpdateRoleCommandHandler.java          |    2 +-
 .../UpdateRolePermissionsCommandHandler.java       |    2 +-
 .../handler/UpdateUserCommandHandler.java          |    2 +-
 .../PermissionsCommandFromApiJsonDeserializer.java |    2 +-
 .../service/AppUserReadPlatformService.java        |    2 +-
 .../service/AppUserReadPlatformServiceImpl.java    |   18 +-
 .../service/AppUserWritePlatformService.java       |    2 +-
 ...pUserWritePlatformServiceJpaRepositoryImpl.java |   43 +-
 .../PasswordPreferencesWritePlatformService.java   |    2 +-
 ...asswordValidationPolicyReadPlatformService.java |    2 +-
 ...ordValidationPolicyReadPlatformServiceImpl.java |    2 +-
 .../service/PermissionReadPlatformService.java     |    2 +-
 .../service/PermissionReadPlatformServiceImpl.java |    5 +-
 .../service/PermissionWritePlatformService.java    |    2 +-
 ...ssionWritePlatformServiceJpaRepositoryImpl.java |    6 +-
 .../service/RoleDataValidator.java                 |    2 +-
 .../service/RoleReadPlatformService.java           |    2 +-
 .../service/RoleReadPlatformServiceImpl.java       |    5 +-
 .../service/RoleWritePlatformService.java          |    2 +-
 .../RoleWritePlatformServiceJpaRepositoryImpl.java |   17 +-
 .../service/UserDataValidator.java                 |   38 +-
 .../src/main/resources/META-INF/orm.xml            |   24 +-
 .../src/main/resources/META-INF/persistence.xml    |   16 +-
 .../main/resources/META-INF/spring/appContext.xml  |  170 +-
 .../src/main/resources/META-INF/spring/cache.xml   |   24 +-
 .../src/main/resources/META-INF/spring/ehcache.xml |   64 +-
 .../resources/META-INF/spring/hikariDataSource.xml |   14 +-
 .../resources/META-INF/spring/infrastructure.xml   |   48 +-
 .../main/resources/META-INF/spring/jdbc.properties |    2 +-
 .../resources/META-INF/spring/securityContext.xml  |  376 +-
 .../main/resources/META-INF/spring/spmContext.xml  |    6 +-
 .../src/main/resources/META-INF/spring/swagger.xml |    2 +-
 .../core_db/V100__Group_saving_summary_report.sql  |    2 +-
 ..._add_mulitplesof_to_account_transfers_table.sql |    2 +-
 .../core_db/V102__client_attendance_tables.sql     |   30 +-
 .../V103__cluster_support_for_batch_jobs.sql       |   12 +-
 .../core_db/V104__permissions_for_transfers.sql    |    2 +-
 ...V105__track_loan_transaction_against_office.sql |    2 +-
 .../V106__more_permissions_for_transfers.sql       |    2 +-
 .../core_db/V107__datatable_code_mappings.sql      |   10 +-
 .../core_db/V108__client_has_transfer_office.sql   |    6 +-
 ...count_transfer_withdrawal_fee_configuration.sql |    4 +-
 .../V10__interest-posting-fields-for-savings.sql   |    2 +-
 ...suspense_account_for_existing_loan_products.sql |    2 +-
 ...nstraint_approach_for_datatables_by_default.sql |    2 +-
 .../core_db/V112__mixreport_sql_support.sql        |  112 +-
 ...3__track_savings_transaction_against_office.sql |    2 +-
 ...ccount_for_existing_savings_products - Copy.sql |    2 +-
 .../core_db/V115__permissions_for_cache_api.sql    |    2 +-
 .../V116__track_currency_for_journal_entries.sql   |    6 +-
 .../core_db/V117__loan_charge_from_savings.sql     |   26 +-
 .../V118_1__savings_charge_patch_update.sql        |    4 +-
 ...e_duplicate_fund_source_to_account_mappings.sql |    2 +-
 ...pense_account_for_existing_savings_products.sql |    2 +-
 ...r_income_from_penalties_for savings_product.sql |    2 +-
 ...18_7__move_withdrawal_annual_fee_to_charges.sql |  294 +-
 ...verpayments_seperately_in_loan_transactions.sql |    4 +-
 .../migrations/core_db/V118__savings_charge.sql    |   72 +-
 .../core_db/V119__add_template_table.sql           |    6 +-
 .../core_db/V11__add-payment-details.sql           |   20 +-
 .../core_db/V120__accounting_running_balance.sql   |    4 +-
 ...accounting_running_balance_for_organization.sql |    2 +-
 .../V122__recurring_fee_support_for_savings.sql    |    8 +-
 .../V123__remove_payment_mode_for_savings.sql      |    2 +-
 ..._column_for_actual_fee_amount_or_percentage.sql |    2 +-
 ...initial_database_structure_for_sms_outbound.sql |    2 +-
 .../migrations/core_db/V127__mobile_no_fields.sql  |    2 +-
 .../V128__added_loan_installment_charge.sql        |   30 +-
 .../core_db/V129__client_and_group_timeline.sql    |    2 +-
 .../V12__add_external_id_to_couple_of_tables.sql   |   14 +-
 .../core_db/V130__calendar-history-table.sql       |   36 +-
 ...V131__holiday-status-column-and-permissions.sql |    6 +-
 .../core_db/V132__borrower_cycle_changes.sql       |   24 +-
 ...3__adding_payment_detail_with_journal_entry.sql |    8 +-
 .../V136_1__update_script_strechy_parameter.sql    |    2 +-
 .../V137__added_is_active_column_in_m_staff.sql    |    2 +-
 ...me_for_m_product_loan_and_m_savings_product.sql |   16 +-
 ...ue_for_is_active_updated_to_true_in_m_staff.sql |    4 +-
 ...ed_payment_detail_id_in_ac_gl_journal_entry.sql |    4 +-
 .../core_db/V140__added_loan_charge_status.sql     |    2 +-
 .../core_db/V144__spelling_mistake_corrections.sql |    2 +-
 ...add_force_password_reset_in_c_configuration.sql |    2 +-
 .../sql/migrations/core_db/V146__tranche_loans.sql |   42 +-
 .../V147__tranche_loans_column_name_changes.sql    |    6 +-
 .../migrations/core_db/V148__overdraft_changes.sql |   14 +-
 .../V149__add_created_date_savings_transaction.sql |    4 +-
 .../core_db/V14__rename_status_id_to_enum.sql      |    2 +-
 .../core_db/V150__basic_savings_report.sql         |    2 +-
 ...V151__add_default_savings_account_to_client.sql |    4 +-
 .../core_db/V152__added_grace_for_over_due.sql     |    4 +-
 .../core_db/V153__Insert_missed_permissions.sql    |    2 +-
 .../sql/migrations/core_db/V154__aging_details.sql |    2 +-
 .../core_db/V155__stretchy_into_pentaho.sql        |    2 -
 .../V156__added_loan_saving_txns_pentaho.sql       |    2 +-
 .../core_db/V157__overdue_charge_improvements.sql  |   18 +-
 ...action_id_column_m_portfolio_command_source.sql |    2 +-
 .../migrations/core_db/V15__center_permissions.sql |    2 +-
 ...Allow_nullValue_For_principal_on_lonProduct.sql |    2 +-
 .../core_db/V160__standing_instruction_changes.sql |  184 +-
 .../core_db/V161__added_accrual_batch_job.sql      |    6 +-
 .../core_db/V162__overdue_charge_batch_job.sql     |    2 +-
 .../core_db/V163__added_npa_for_loans.sql          |    6 +-
 .../core_db/V164__fd_and_rd_deposit_tables.sql     |    4 +-
 ...d_permission_for_disburse_to_saving_account.sql |    2 +-
 ...posit_amount_to_product_term_and_preclosure.sql |    8 +-
 ...er_fixed_deposit_interest_to_linked_account.sql |    6 +-
 ...reports_to_core_reports_use_report_to_false.sql |    2 +-
 .../V16__drop_min_max_column_on_loan_table.sql     |   12 +-
 ...pdate_deposit_accounts_maturity_details_job.sql |    2 +-
 ...171__added_mandatory_savings_and_rd_changes.sql |   98 +-
 .../V172__accounting_changes_for_transfers.sql     |   18 +-
 .../resources/sql/migrations/core_db/V173__ppi.sql |   80 +-
 .../V175__added_incentive_interest_rates.sql       |   66 +-
 ...176__updates_to_financial_activity_accounts.sql |    8 +-
 .../V177__cleanup_for_client_incentives.sql        |    2 +-
 ..._updates_to_financial_activity_accounts_pt2.sql |    2 +-
 ..._action_names_for_maker_checker_permissions.sql |    2 +-
 .../core_db/V17__update_stretchy_reporting_ddl.sql |    2 +-
 ..._vs_awaitingdisbursal_and_groupnamesbystaff.sql |    2 +-
 .../core_db/V181__standing_instruction_logging.sql |   18 +-
 ...ded_min_required_balance_to_savings_product.sql |    8 +-
 ..._added_min_balance_for_interest_calculation.sql |    4 +-
 ...te_min_required_balance_for_savings_product.sql |    4 +-
 ..._add_accrual_till_date_for_periodic_accrual.sql |    2 +-
 .../core_db/V186__added_periodic_accrual_job.sql   |    2 +-
 .../V187__added_permission_to_periodic_accrual.sql |    2 +-
 ...8__add_savingscharge_inactivate_permissions.sql |    2 +-
 .../V189__m_loan_interest_recalculation_tables.sql |   36 +-
 ...ssociategroup_disassociategroup_permissions.sql |    2 +-
 ...update_gl_account_increase_size_of_name_col.sql |    2 +-
 .../core_db/V192__interest_recalculate_job.sql     |    2 +-
 .../V193__added_column_joiningDate_for_staff.sql   |    2 +-
 ...nterestComponent_for_interest_recalculation.sql |    2 +-
 ...V195__moved_rest_frequency_to_product_level.sql |   12 +-
 ..._added_loan_running_balance_to_transactions.sql |    2 +-
 ...pdated_loan_running_balance_of_transactions.sql |    8 +-
 ...removed_extra_columns_from_schedule_history.sql |   38 +-
 .../core_db/V1__mifosplatform-core-ddl-latest.sql  |   40 +-
 .../sql/migrations/core_db/V201__webhooks.sql      |    2 -
 .../V202__savings_officer_history_table.sql        |    1 -
 ...ert_script_for_charges_paid_by_for_accruals.sql |    2 +-
 ...or_charge_and_interest_waiver_with_accruals.sql |    6 +-
 .../V206__interest_posting_configuration.sql       |    2 +-
 .../core_db/V207__min_max_clients_per_group.sql    |    4 +-
 .../V208__min_max_clients_in_group_redux.sql       |    6 +-
 .../V210__track_manually_adjusted_transactions.sql |    2 +-
 ..._days_between_disbursal_and_first_repayment.sql |    2 +-
 ...V212__add_NthDay_and_DayOfWeek_columns_loan.sql |    2 +-
 ...ay_and_DayOfWeek_columns_should_be_nullable.sql |    4 +-
 .../V215__guarantee_on_hold_fund_changes.sql       |   24 +-
 .../V216__adding_loan_proposed_amount_to_loan.sql  |    4 +-
 ..._client_substatus_and_codevalue_description.sql |   11 +-
 ..._and_datetime_for_loan_savings_transactions.sql |   10 +-
 ..._guarantor_on_hold_fund_changes_for_account.sql |   69 +-
 .../V21__activation-permissions-for-clients.sql    |    2 +-
 .../core_db/V220__account_number_preferences.sql   |   12 +-
 .../V221__add_version_for_m_savings_account.sql    |    2 +-
 ...antor_on_hold_fund_changes_for_transactions.sql |   15 +-
 .../V223__add_version_for_m_loan_account.sql       |    2 +-
 .../V224__client_lifecycle_adding_statuses.sql     |   26 +-
 ...ation_for_enforcing_calendars_for_jlg_loans.sql |    2 +-
 .../core_db/V227__loan-refund-permissions.sql      |   15 +-
 .../core_db/V228__entity_to_entity_access.sql      |   42 +-
 .../core_db/V229__teller_cash_management.sql       |  204 +-
 ...alter-group-for-consistency-add-permissions.sql |    2 +-
 ...0__role_status_and_correspoding_permissions.sql |    2 +-
 ...__m_cashier_transaction_added_currency_code.sql |    2 +-
 .../core_db/V232__insert_center_closure_reason.sql |    2 +-
 .../core_db/V233__Savings_Transaction_Receipt.sql  |    6 +-
 .../core_db/V234__opening_balaces_setup.sql        |   46 +-
 .../core_db/V235__add_ugd_template_id_m_hook.sql   |    2 +-
 ...36__individual_collection_sheet_permissions.sql |    2 +-
 ...7__add_threshold_config_for_last_instalment.sql |    8 +-
 .../V238__update_staff_display_name_length.sql     |    4 +-
 ...sable-configuration-for-client-group-status.sql |    2 +-
 ...ars_aging_config_for_interest_recalculation.sql |    6 +-
 .../migrations/core_db/V241__fixed_emi_changes.sql |    4 +-
 .../V242__entitytoentitymappingrelation.sql        |   32 +-
 .../V243__alter_loan_disbursement_details.sql      |    2 +-
 .../V244__staff_assignment_history_table.sql       |    2 +-
 .../migrations/core_db/V245__open_rd_changes.sql   |    1 -
 ...__drop_group_client_foreign_key_from_m_loan.sql |    2 +-
 ...pelling_principalThresholdForLastInstalment.sql |    2 +-
 .../V248__added_password_never_expired_to_User.sql |    2 +-
 .../core_db/V249__workingdays_permissions.sql      |    3 -
 ...client-foreign-key-constraint-in-loan-table.sql |    2 +-
 .../core_db/V250__password_validation_policy.sql   |    5 -
 .../migrations/core_db/V251__paymentType_table.sql |   46 +-
 .../V252__bug_fix_teller_cash_management.sql       |   10 +-
 .../V253__product_loan_configurable_attributes.sql |    4 +-
 .../core_db/V254__General_Ledger_Report.sql        |   21 +-
 .../V255__pre_close_interest_period_config.sql     |    2 +-
 ...56__Update script for General_Ledger_report.sql |    6 +-
 .../core_db/V257__staff_image_association.sql      |    6 +-
 .../core_db/V258__interest_compounding_changes.sql |   16 +-
 .../core_db/V259__alter_working_days.sql           |    2 +-
 ...ipt for Client_Loan_Account_Schedule_Report.sql |    4 +-
 .../core_db/V262__accountNumber_for_groups.sql     |    2 +-
 .../sql/migrations/core_db/V263__mifos_reports.sql |    3 -
 .../V265__modify_external_service_schema.sql       |   17 +-
 .../sql/migrations/core_db/V266__client_fees.sql   |   97 +-
 .../V267__client_transaction_permissions.sql       |    2 +-
 .../core_db/V268__update_gmail_password.sql        |    2 +-
 .../V269__increased_calendar_title_length .sql     |    6 +-
 ..._add-support-for-withdrawal-fees-on-savings.sql |    2 +-
 .../V270__add_rounding_mode_configuration.sql      |    4 +-
 .../V271__accounting_for_client_charges.sql        |    8 +-
 .../V272__loan_tranche_disbursement_charge.sql     |   28 +-
 .../sql/migrations/core_db/V273__oauth_changes.sql |    1 -
 .../core_db/V274__Loan_Reschedule_Code_Value.sql   |    4 -
 ...n_transaction_to_repayment_schedule_mapping.sql |   28 +-
 .../core_db/V276__loan_recalulated_till_date.sql   |    2 +-
 .../core_db/V277__Loan_Product_Provisioning.sql    |  129 +-
 .../V278__LoanTransactionProcessingStrategy.sql    |    9 +-
 .../migrations/core_db/V279__floating_rates.sql    |   76 +-
 .../V27__add-loan-type-column-to-loan-table.sql    |    2 +-
 .../core_db/V280__spm_framework_initial_tables.sql |   18 +-
 ..._add_configuration_param_backdate-penalties.sql |    1 -
 .../core_db/V282__CustomerSelfService.sql          |   16 +-
 .../core_db/V283__Variable_Installments.sql        |   30 +-
 .../migrations/core_db/V284__update_codevalue.sql  |    2 +-
 .../core_db/V285__undo_last_tranche_script.sql     |    1 -
 .../V286__partial_period_interest_calcualtion.sql  |   13 +-
 .../migrations/core_db/V289__client_non_person.sql |   35 +-
 ...28__accounting-abstractions-and-autoposting.sql |   74 +-
 .../V290__shares_dividends_permissions_script.sql  |    2 +-
 .../V291__organisation_start_date_config.sql       |    2 +-
 ...93__interest_rate_chart_support_for_amounts.sql |   18 +-
 .../V296__skip_repayment_on first-day_of_month.sql |    2 +-
 .../core_db/V297__Adding_Meeting_Time_column.sql   |    2 +-
 .../core_db/V298__savings_interest_tax.sql         |  177 +-
 .../migrations/core_db/V299__share_products.sql    |   98 +-
 ...V29__add-support-for-annual-fees-on-savings.sql |    2 +-
 .../V2__mifosx-base-reference-data-utf8.sql        |   30 +-
 ...figuration_for_allow_changing_of_emi_amount.sql |    4 +-
 ...301__recurring_moratorium_principal_periods.sql |    6 +-
 .../V302__add_status_to_client_identifier.sql      |    1 -
 ...customer_self_service_third_party_transfers.sql |   22 +-
 ...y_freq_and_insertion_script_for_accrual_job.sql |   20 +-
 ...__add_domancy_tracking_job_to_savings_group.sql |    6 +-
 .../migrations/core_db/V307__add_share_notes.sql   |    2 +-
 ...d_interest_recalculation_in_savings_account.sql |    5 +-
 .../V309__add_loan_write_off_reason_code.sql       |    2 +-
 ...add-referenceNumber-to-acc_gl_journal_entry.sql |    2 +-
 ...titytoentityaccess_to_entitytoentitymapping.sql |    4 +-
 .../core_db/V311__foreclosure_details.sql          |    6 +-
 .../V312__add_is_mandatory_to_code_value.sql       |    2 +-
 .../core_db/V313__multi_rescheduling_script.sql    |   64 +-
 ...ed_with_disbursement_date_in_m_product_loan.sql |    2 +-
 .../V316__address_module_tables_metadat.sql        |  118 +-
 .../core_db/V317__report_mailing_job_module.sql    |    6 +-
 .../sql/migrations/core_db/V318__topuploan.sql     |   23 +-
 .../migrations/core_db/V319__client_undoreject.sql |    6 +-
 .../V321__boolean_field_As_Interest_PostedOn.sql   |    2 +-
 .../core_db/V322_1__scheduled_email_campaign.sql   |   53 +-
 .../core_db/V322_2__email_business_rules.sql       |    2 +-
 .../sql/migrations/core_db/V322__sms_campaign.sql  |  114 +-
 .../migrations/core_db/V324__datatable_checks.sql  |   24 +-
 .../core_db/V325__add_is_staff_client_data.sql     |    2 +-
 ...26__data_migration_for_client_tr_gl_entries.sql |    2 +-
 .../core_db/V327__creditbureau_configuration.sql   |    8 +-
 .../V329__sms_messages_without_campaign.sql        |    2 +-
 ...disassociate-clients-from-group-permissions.sql |    2 +-
 ...V330__savings_account_transaction_releaseId.sql |   13 +-
 .../core_db/V331__holiday_schema_changes.sql       |    2 +-
 .../V332__self_service_registration_schema.sql     |   28 +-
 .../sql/migrations/core_db/V333__adhocquery.sql    |   28 +-
 .../core_db/V334__notification_module_tables.sql   |    2 -
 .../core_db/V335__self_service_user_role.sql       |    2 +-
 .../core_db/V336__sms_campaign_notification.sql    |   29 +-
 .../core_db/V337__equal_amortization.sql           |    2 +-
 .../core_db/V338__two_factor_authentication.sql    |    2 +-
 .../core_db/V339__report-run-frequency.sql         |    2 +-
 .../core_db/V340__nullable-adhoc-email.sql         |    2 +-
 .../migrations/core_db/V341__m_import_document.sql |    2 +-
 ...d_paging_recalculate_interest_for_loans_job.sql |    2 +-
 .../V345__reports_for_self_service_user.sql        |    3 +-
 .../V346__nullable_saving_product_description.sql  |    2 +-
 .../core_db/V348__m_trial_balance_table.sql        |   14 +-
 .../core_db/V349__client_transfer_details.sql      |   40 +-
 .../migrations/core_db/V351__pocket_mapping.sql    |   26 +-
 .../sql/migrations/core_db/V352__interop_init.sql  |   34 +-
 .../V354__self_service_user_unique_for_client.sql  |    2 +-
 .../core_db/V356__GSIM_migration_script.sql        |   38 +-
 .../core_db/V357__GLIM_migration_script.sql        |   40 +-
 .../V358__fixed_deposit_rollover_transfer.sql      |    2 +-
 ...35__add_hierarchy_column_for_acc_gl_account.sql |    2 +-
 .../V36__add_tag_id_column_for_acc_gl_account.sql  |    2 +-
 .../core_db/V39__payment-channels-updates.sql      |   10 +-
 .../V40__add_permissions_for_accounting_rule.sql   |    2 +-
 ...efault_value_for_id_for_acc_accounting_rule.sql |    2 +-
 .../core_db/V43__accounting-for-savings.sql        |    2 +-
 .../V44__document-increase-size-of-column-type.sql |    2 +-
 .../core_db/V45__create_acc_rule_tags_table.sql    |   20 +-
 .../migrations/core_db/V48__adding-S3-Support.sql  |   44 +-
 ...V49__track-loan-charge-payment-transactions.sql |   18 +-
 .../V50__add-grace-settings-to-loan-product.sql    |    2 +-
 ...-details-related-to-installment-performance.sql |    2 +-
 ...boolean_support_cols_to_acc_accounting_rule.sql |    2 +-
 ...ck-advance-and-late-payments-on-installment.sql |    2 +-
 .../V54__charge-to-income-account-mappings.sql     |    4 +-
 ...dditional-transaction-processing-strategies.sql |    2 +-
 .../V56__track-overpaid-amount-on-loans.sql        |    2 +-
 ...bit_and_credit_accounts_acc_accounting_rule.sql |    4 +-
 .../core_db/V58__create-holiday-tables_changed.sql |   16 +-
 ...V59__add_group_roles_schema_and_permissions.sql |   26 +-
 ...__update-savings-product-and-account-tables.sql |    2 +-
 .../core_db/V60__quipo_dashboard_reports.sql       |   96 +-
 .../core_db/V61__txn_running_balance_example.sql   |   64 +-
 .../V62__add_staff_id_to_m_client_changed.sql      |    2 +-
 ...nc_disbursement_with_meeting_column_to_loan.sql |    2 +-
 .../V64__add_permission_for_assign_staff.sql       |    2 +-
 .../core_db/V65__fix_rupee_symbol_issues.sql       |    2 +-
 .../V68__quipo_dashboard_reports_updated.sql       |   96 +-
 .../core_db/V69__loans_in_advance_initialise.sql   |    2 +-
 .../V6__add_min_max_principal_column_to_loan.sql   |    8 +-
 .../V70__quipo_program_detail_query_fix.sql        |    4 +-
 ...nsert_reschedule_repayment_to_configuration.sql |    2 +-
 .../core_db/V72__add_m_loan_counter_changes.sql    |   26 +-
 ...cheduled_to_and_processed_column_to_holiday.sql |    4 +-
 .../V74__alter_m_loan_counter_table_add_group.sql  |    4 +-
 ...ule-repayments-on-holidays_to_configuration.sql |    2 +-
 .../core_db/V77__alter_m_product_loan_changes.sql  |    2 +-
 .../core_db/V79__schedule_jobs_tables.sql          |   50 +-
 .../V7__remove_read_makerchecker_permission.sql    |    1 -
 .../core_db/V80__schedule_jobs_tables_updates.sql  |   18 +-
 .../core_db/V81__savings_related_changes.sql       |    2 +-
 ...dule_jobs_tables_updates_for_running_status.sql |    4 +-
 .../core_db/V83__non-working-days-table.sql        |   10 +-
 .../V84__undo_savings_transaction_permission.sql   |    2 +-
 .../core_db/V85__product_mix_related_changes.sql   |   20 +-
 .../core_db/V86__update-working-days.sql           |    2 +-
 .../core_db/V87__add_permission_for_scheduler.sql  |    2 +-
 ...__added_update_constrain_for_scheduler_jobs.sql |    2 +-
 .../core_db/V89__added_scheduler_group.sql         |    2 +-
 ...posit-transaction-permissions-if-they-exist.sql |    1 -
 ...ion_settings_for_holiday_and_non_workingday.sql |    2 +-
 .../core_db/V91__apply_annual_fees_permission.sql  |    2 +-
 .../core_db/V93__loan_transaction_external_id.sql  |    2 +-
 .../core_db/V94__added_savings_accont type.sql     |    2 +-
 .../V96__savings_accounts_transfers_table.sql      |    2 +-
 ...d_permission_for_adjust_savings_transaction.sql |    2 +-
 .../V98__added_currency_roundof_for_multipleof.sql |   12 +-
 ...n_max_constraint_column_to_loan_loanproduct.sql |   56 +-
 .../V2__externalize-connection-properties.sql      |    2 +-
 .../list_db/V3__deadlock-retry-properties.sql      |    2 +-
 ...columns_and_tenants_server_connection_table.sql |   77 +-
 .../sql/migrations/sample_data/barebones_db.sql    | 4424 +++++++++---------
 .../migrations/sample_data/interop_sample_data.sql |    2 +-
 .../migrations/sample_data/load_sample_data.sql    | 4902 ++++++++++----------
 .../src/main/resources/swagger-ui/response.json    |    2 +-
 fineract-provider/src/main/webapp/WEB-INF/web.xml  |   14 +-
 .../accounting/common/AccountingConstantsTest.java |    9 +-
 .../provider/CommandHandlerProviderTest.java       |    5 +-
 .../java/org/apache/fineract/common/Utils.java     |    5 +-
 .../ClasspathHellDuplicatesCheckExtension.java     |   20 +-
 .../ClasspathHellDuplicatesCheckRuleTest.java      |    9 +-
 .../classdupes/ClasspathHellDuplicatesChecker.java |  137 +-
 ...TestsWithoutDatabaseAndNoJobsConfiguration.java |    6 +-
 .../core/exception/MultiExceptionTest.java         |    4 +-
 .../security/utils/SQLBuilderTest.java             |   11 +-
 .../mix/report/service/XBRLBuilderTest.java        |    7 +-
 .../org/apache/fineract/notification/Listener.java |    4 +-
 .../apache/fineract/notification/StorageTest.java  |   49 +-
 ...nRepaymentScheduleTransactionProcessorTest.java |    3 +-
 ...nRepaymentScheduleTransactionProcessorTest.java |    3 +-
 .../LoanProductRelatedDetailTestHelper.java        |   10 +-
 .../LoanRepaymentScheduleInstallmentBuilder.java   |    2 +-
 .../loanaccount/LoanScheduleTestDataHelper.java    |    4 +-
 .../portfolio/loanaccount/MoneyBuilder.java        |    2 +-
 .../template/TemplateMergeServiceTest.java         |    4 +-
 2903 files changed, 45049 insertions(+), 46529 deletions(-)
 create mode 100644 config/fineractdev-cleanup.xml
 create mode 100644 config/fineractdev-formatter.xml
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientSavingsIntegrationTest.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ConcurrencyIntegrationTest.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FinancialActivityAccountsTest.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/GroupTest.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/ClientHelper.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CommonConstants.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/GroupHelper.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeHelper.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/WorkingDaysHelper.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/accounting/FinancialActivityAccountHelper.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/charges/ChargesHelper.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/loans/LoanTransactionHelper.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/organisation/StaffHelper.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/savings/SavingsApplicationTestBuilder.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/savings/SavingsStatusChecker.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/loanaccount/guarantor/GuarantorHelper.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/loanaccount/guarantor/GuarantorTest.java
 mode change 100755 => 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/loanaccount/guarantor/GuarantorTestBuilder.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingApiResource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/handler/ExecutePeriodicAccrualCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/serialization/AccrualAccountingDataValidator.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/service/AccrualAccountingWritePlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/closure/api/GLClosureJsonInputParams.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/closure/api/GLClosuresApiResource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/closure/api/GLClosuresApiResourceSwagger.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/closure/command/GLClosureCommand.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/closure/data/GLClosureData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/closure/domain/GLClosure.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureDuplicateException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureInvalidDeleteException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureInvalidException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureNotFoundException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/closure/handler/CreateGLClosureCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/closure/handler/DeleteGLClosureCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/closure/handler/UpdateGLClosureCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/closure/serialization/GLClosureCommandFromApiJsonDeserializer.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureWritePlatformServiceJpaRepositoryImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/common/AccountingConstants.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/common/AccountingDropdownReadPlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/common/AccountingDropdownReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/common/AccountingRuleType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/api/GLAccountJsonInputParams.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/data/GLAccountData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccountRepositoryWrapper.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccountType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDuplicateException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidClassificationException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidDeleteException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidParentException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidUpdateException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidUsageException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountNotFoundException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/handler/CreateGLAccountCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/handler/DeleteGLAccountCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/handler/UpdateGLAccountCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/serialization/GLAccountCommandFromApiJsonDeserializer.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/api/JournalEntriesApiResource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/api/JournalEntryJsonInputParams.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/command/JournalEntryCommand.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/command/SingleDebitOrCreditEntryCommand.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryDataValidator.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/LoanTransactionDTO.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntryRepository.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntriesNotFoundException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntryInvalidException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntryNotFoundException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/handler/CreateJournalEntryCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/handler/ReverseJournalEntryCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/serialization/JournalEntryCommandFromApiJsonDeserializer.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccountingProcessorHelper.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccrualBasedAccountingProcessorForLoan.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForLoan.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/CashBasedAccountingProcessorForSavings.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryRunningBalanceUpdateServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/PortfolioProductType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMapping.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMappingRepository.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/exception/ProductToGLAccountMappingInvalidException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/exception/ProductToGLAccountMappingNotFoundException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/serialization/ProductToGLAccountMappingFromApiJsonDeserializer.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/LoanProductToGLAccountMappingHelper.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingWritePlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingWritePlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/rule/api/AccountingRuleApiResource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/rule/api/AccountingRuleJsonInputParams.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/rule/data/AccountingRuleData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRule.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleDuplicateException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleInvalidDeleteException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleInvalidException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleNotFoundException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/rule/handler/CreateAccountingRuleCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/rule/handler/DeleteAccountingRuleCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/rule/handler/UpdateAccountingRuleCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/rule/serialization/AccountingRuleCommandFromApiJsonDeserializer.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleWritePlatformServiceJpaRepositoryImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/commands/api/MakercheckersApiResource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/commands/data/AuditData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandSource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandWrapper.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/commands/service/PortfolioCommandSourceWritePlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/commands/service/PortfolioCommandSourceWritePlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/commands/service/SynchronousCommandProcessingService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/data/GlobalConfigurationPropertyData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationProperty.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ConfigurationReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/service/ExternalServicesConstants.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/Tenant.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/exception/AbstractPlatformServiceUnavailableException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/service/SearchParameters.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/ImageReadPlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/ImageReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/service/ImageWritePlatformServiceJpaRepositoryImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/api/SchedulerApiResource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/api/SchedulerJobApiConstants.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/api/SchedulerJobApiResource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/data/JobDetailDataValidator.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/data/JobDetailHistoryData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/exception/JobNotFoundException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/exception/OperationNotAllowedException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/JobName.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerJobRunnerReadServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/service/SchedulerTriggerListener.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/organisation/staff/domain/StaffRepositoryWrapper.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/api/WorkingDaysApiConstants.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/api/WorkingDaysApiResource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/data/WorkingDayValidator.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/data/WorkingDaysData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDaysEnumerations.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/exception/WorkingDaysNotFoundException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/handler/UpdateWorkingDaysCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/service/WorkingDaysReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/AccountDetailConstants.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/api/StandingInstructionApiConstants.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/api/StandingInstructionApiResource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/api/StandingInstructionHistoryApiResource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransferDTO.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransfersDetailDataValidator.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionDTO.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionDataValidator.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountAssociationType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountAssociationsRepository.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferDetailAssembler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferDetailRepository.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferDetails.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferRecurrenceType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferStandingInstruction.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/StandingInstructionAssembler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/StandingInstructionPriority.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/StandingInstructionRepository.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/StandingInstructionStatus.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/StandingInstructionType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/exception/StandingInstructionNotFoundException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountAssociationsReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionHistoryReadPlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionHistoryReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionReadPlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionWritePlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/StandingInstructionWritePlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/service/AccountDetailsReadPlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/service/AccountDetailsReadPlatformServiceJpaRepositoryImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/service/AccountEnumerations.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/data/ChargeData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargePaymentMode.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/ChargeTimeType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeMustBePenaltyException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeDeletedException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBePayedException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeUpdatedException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/LoanChargeCannotBeWaivedException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/serialization/ChargeDefinitionCommandFromApiJsonDeserializer.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeDropdownReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeEnumerations.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/service/ChargeReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientRepositoryWrapper.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/client/exception/ClientActiveForUpdateException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/client/handler/UpdateClientSavingsAccountCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierReadPlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierWritePlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientIdentifierWritePlatformServiceJpaRepositoryImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/api/CollateralApiConstants.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/api/CollateralsApiResource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/command/CollateralCommand.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/exception/CollateralCannotBeCreatedException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/exception/CollateralCannotBeDeletedException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/exception/CollateralCannotBeUpdatedException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/exception/CollateralNotFoundException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/handler/CreateCollateralCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/handler/DeleteCollateralCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/handler/UpdateCollateralCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/serialization/CollateralCommandFromApiJsonDeserializer.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/service/CollateralWritePlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/service/CollateralWritePlatformServiceJpaRepositoryImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/api/CollectionSheetApiResourse.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/IndividualClientData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/IndividualCollectionSheetData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/IndividualCollectionSheetLoanFlatData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/common/BusinessEventNotificationConstants.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DayOfWeekType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInMonthType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/DaysInYearType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/NthDayType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/BusinessEventNotifierServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/CommonEnumerations.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/DropdownReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/group/api/GroupingTypesApiConstants.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/group/api/GroupsApiResource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/group/serialization/GroupingTypesDataValidator.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestIncentiveApiConstants.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveDataValidator.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentivesFields.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveAttributeName.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveEntityType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentiveDropdownReadPlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentivesEnumerations.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanTransactionsApiResource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargeData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidByData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidDetail.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanScheduleAccrualData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/ScheduleGeneratorDTO.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallmentRepository.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepository.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepositoryWrapper.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/AbstractLoanRepaymentScheduleTransactionProcessor.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/GuarantorConstants.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorFundingData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/Guarantor.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundStatusType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingDetails.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingRepository.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingTransactionRepository.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorRepository.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/handler/CreateGuarantorCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/handler/DeleteGuarantorCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/handler/UpdateGuarantorCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/serialization/GuarantorCommandFromApiJsonDeserializer.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/service/GuarantorDomainServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/DisburseLoanToSavingsCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/PayLoanChargeCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoWriteOffLoanCommandHandler.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/OverdueLoanScheduleData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleHistoryReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleHistoryWritePlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleHistoryWritePlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualWritePlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualWritePlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanArrearsAgingServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/LoanProductConstants.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanOverdueDTO.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductBorrowerCycleVariations.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductParamType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductValueConditionType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/serialization/LoanProductDataValidator.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/PaymentDetailConstants.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/data/PaymentDetailData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetail.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetailRepository.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/service/PaymentDetailWritePlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/service/PaymentDetailWritePlatformServiceJpaRepositoryImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountOnHoldTransactionType.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/DepositAccountOnHoldFundTransactionsApiResource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountOnHoldTransactionData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataDTO.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDTO.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransaction.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransactionRepository.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainServiceJpa.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountTransactionNotFoundException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/TransactionUpdateNotAllowedException.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountOnHoldTransactionReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformServiceJpaRepositoryImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/useradministration/api/UsersApiResource.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/useradministration/data/AppUserData.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserReadPlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/useradministration/service/AppUserReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleReadPlatformService.java
 mode change 100755 => 100644 fineract-provider/src/main/java/org/apache/fineract/useradministration/service/RoleReadPlatformServiceImpl.java
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V103__cluster_support_for_batch_jobs.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V107__datatable_code_mappings.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V109__account_transfer_withdrawal_fee_configuration.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V117__loan_charge_from_savings.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V11__add-payment-details.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V120__accounting_running_balance.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V121__accounting_running_balance_for_organization.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V125__added_column_for_actual_fee_amount_or_percentage.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V128__added_loan_installment_charge.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V132__borrower_cycle_changes.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V133__adding_payment_detail_with_journal_entry.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V147__tranche_loans_column_name_changes.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V148__overdraft_changes.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V149__add_created_date_savings_transaction.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V150__basic_savings_report.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V151__add_default_savings_account_to_client.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V152__added_grace_for_over_due.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V157__overdue_charge_improvements.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V160__standing_instruction_changes.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V161__added_accrual_batch_job.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V162__overdue_charge_batch_job.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V163__added_npa_for_loans.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V165__added_permission_for_disburse_to_saving_account.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V168__added_transfer_fixed_deposit_interest_to_linked_account.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V175__added_incentive_interest_rates.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V177__cleanup_for_client_incentives.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V181__standing_instruction_logging.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V183__added_min_balance_for_interest_calculation.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V185__add_accrual_till_date_for_periodic_accrual.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V186__added_periodic_accrual_job.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V187__added_permission_to_periodic_accrual.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V192__interest_recalculate_job.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V194__added_recalculatedInterestComponent_for_interest_recalculation.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V195__moved_rest_frequency_to_product_level.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V196__added_loan_running_balance_to_transactions.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V197__updated_loan_running_balance_of_transactions.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V199__removed_extra_columns_from_schedule_history.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V204__insert_script_for_charges_paid_by_for_accruals.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V205__fix_for_charge_and_interest_waiver_with_accruals.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V219__guarantor_on_hold_fund_changes_for_account.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V222__guarantor_on_hold_fund_changes_for_transactions.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V236__individual_collection_sheet_permissions.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V237__add_threshold_config_for_last_instalment.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V28__accounting-abstractions-and-autoposting.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V39__payment-channels-updates.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V43__accounting-for-savings.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V44__document-increase-size-of-column-type.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V48__adding-S3-Support.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V49__track-loan-charge-payment-transactions.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V54__charge-to-income-account-mappings.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V65__fix_rupee_symbol_issues.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V79__schedule_jobs_tables.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V82__schedule_jobs_tables_updates_for_running_status.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V88__added_update_constrain_for_scheduler_jobs.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V89__added_scheduler_group.sql
 mode change 100755 => 100644 fineract-provider/src/main/resources/sql/migrations/core_db/V94__added_savings_accont type.sql


[fineract] 01/02: FINERACT-1006 Added spotless to auto format source code

Posted by vo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vorburger pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git

commit 89e321acafefcd8fd606d91defee4a0d92be3e04
Author: Manthan Surkar <ma...@gmail.com>
AuthorDate: Sat Jun 13 08:16:55 2020 +0530

    FINERACT-1006 Added spotless to auto format source code
---
 README.md                                  |  17 +-
 config/fineractdev-cleanup.xml             |  70 +++++
 config/fineractdev-eclipse-preferences.epf | 418 -----------------------------
 config/fineractdev-formatter.xml           | 365 +++++++++++++++++++++++++
 fineract-provider/build.gradle             |  23 ++
 5 files changed, 471 insertions(+), 422 deletions(-)

diff --git a/README.md b/README.md
index 57af875..febda81 100644
--- a/README.md
+++ b/README.md
@@ -195,12 +195,21 @@ Instructions to run Apache RAT (Release Audit Tool)
 2. Run `./gradlew rat`. A report will be generated under build/reports/rat/rat-report.txt
 
 
-Checkstyle
+Checkstyle and Spotless
 ============
 
-This project enforces its code conventions using [checkstyle.xml](fineract-provider/config/checkstyle/checkstyle.xml).  It is configured to run automatically during the normal Gradle build, and fail if there are any style violations detected.
-We recommend that you configure your favourite Java IDE to match those conventions.  For Eclipse, you can
-File > Import > General > Preferences our [config/fineractdev-eclipse-preferences.epf](config/fineractdev-eclipse-preferences.epf).
+This project enforces its code conventions using [checkstyle.xml](fineract-provider/config/checkstyle/checkstyle.xml) through Checkstyle and [fineract-formatting-preferences.xml](config/fineract-formatting-preferences.xml) through Spotless. They are configured to run automatically during the normal Gradle build, and fail if there are any violations detected. You can run the following command to automatically fix spotless violations: 
+
+    `./gradlew spotlessApply`
+
+Since some checks are present in both Checkstyle and Spotless, the same command can help you fix some of the Checkstyle violations (but not all, other Checkstyle violations need to fixed manually).
+
+You can also check for Spotless violations (only; but normally don't have to, because the regular build full already includes this anyway):
+
+    `./gradlew spotlessCheck`
+
+We recommend that you configure your favourite Java IDE to match those conventions. For Eclipse, you can go to 
+Window > Java > Code Style and import our [config/fineractdev-formatter.xml](config/fineractdev-formatter.xml) under formatter section and [config/fineractdev-cleanup.xml](config/fineractdev-cleanup.xml) under Clean up section. The same fineractdev-formatter.xml configuration file (that can be used in Eclipse IDE) is also used by Spotless to both check for violations and autoformat code on the CLI. 
 You could also use Checkstyle directly in your IDE (but you don't neccesarily have to, it may just be more convenient for you).  For Eclipse, use https://checkstyle.org/eclipse-cs/ and load our checkstyle.xml into it, for IntelliJ you can use [CheckStyle-IDEA](https://plugins.jetbrains.com/plugin/1065-checkstyle-idea).
 
 
diff --git a/config/fineractdev-cleanup.xml b/config/fineractdev-cleanup.xml
new file mode 100644
index 0000000..eedf759
--- /dev/null
+++ b/config/fineractdev-cleanup.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<profiles version="2">
+    <profile kind="CleanUpProfile" name="fineractdevprofile" version="2">
+        <setting id="cleanup.use_autoboxing" value="false"/>
+        <setting id="cleanup.qualify_static_method_accesses_with_declaring_class" value="false"/>
+        <setting id="cleanup.always_use_this_for_non_static_method_access" value="false"/>
+        <setting id="cleanup.organize_imports" value="true"/>
+        <setting id="cleanup.remove_trailing_whitespaces_ignore_empty" value="false"/>
+        <setting id="cleanup.use_directly_map_method" value="false"/>
+        <setting id="cleanup.format_source_code_changes_only" value="false"/>
+        <setting id="cleanup.qualify_static_field_accesses_with_declaring_class" value="false"/>
+        <setting id="cleanup.add_generated_serial_version_id" value="false"/>
+        <setting id="cleanup.remove_redundant_semicolons" value="false"/>
+        <setting id="cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class" value="true"/>
+        <setting id="cleanup.remove_redundant_type_arguments" value="false"/>
+        <setting id="cleanup.remove_unused_imports" value="true"/>
+        <setting id="cleanup.insert_inferred_type_arguments" value="false"/>
+        <setting id="cleanup.make_private_fields_final" value="true"/>
+        <setting id="cleanup.use_lambda" value="true"/>
+        <setting id="cleanup.simplify_lambda_expression_and_method_ref" value="false"/>
+        <setting id="cleanup.always_use_blocks" value="true"/>
+        <setting id="cleanup.use_this_for_non_static_field_access_only_if_necessary" value="false"/>
+        <setting id="cleanup.sort_members_all" value="false"/>
+        <setting id="cleanup.remove_trailing_whitespaces_all" value="true"/>
+        <setting id="cleanup.add_missing_annotations" value="true"/>
+        <setting id="cleanup.remove_unnecessary_array_creation" value="false"/>
+        <setting id="cleanup.always_use_this_for_non_static_field_access" value="true"/>
+        <setting id="cleanup.make_parameters_final" value="true"/>
+        <setting id="cleanup.sort_members" value="false"/>
+        <setting id="cleanup.remove_private_constructors" value="true"/>
+        <setting id="cleanup.always_use_parentheses_in_expressions" value="false"/>
+        <setting id="cleanup.remove_unused_local_variables" value="false"/>
+        <setting id="cleanup.convert_to_enhanced_for_loop" value="false"/>
+        <setting id="cleanup.remove_unused_private_fields" value="true"/>
+        <setting id="cleanup.remove_redundant_modifiers" value="false"/>
+        <setting id="cleanup.never_use_blocks" value="false"/>
+        <setting id="cleanup.number_suffix" value="false"/>
+        <setting id="cleanup.add_missing_deprecated_annotations" value="true"/>
+        <setting id="cleanup.use_this_for_non_static_field_access" value="true"/>
+        <setting id="cleanup.remove_unnecessary_nls_tags" value="true"/>
+        <setting id="cleanup.qualify_static_member_accesses_through_instances_with_declaring_class" value="true"/>
+        <setting id="cleanup.add_missing_nls_tags" value="false"/>
+        <setting id="cleanup.remove_unnecessary_casts" value="true"/>
+        <setting id="cleanup.use_unboxing" value="false"/>
+        <setting id="cleanup.use_blocks_only_for_return_and_throw" value="false"/>
+        <setting id="cleanup.format_source_code" value="true"/>
+        <setting id="cleanup.convert_functional_interfaces" value="false"/>
+        <setting id="cleanup.add_default_serial_version_id" value="true"/>
+        <setting id="cleanup.remove_unused_private_methods" value="true"/>
+        <setting id="cleanup.remove_trailing_whitespaces" value="true"/>
+        <setting id="cleanup.make_type_abstract_if_missing_method" value="false"/>
+        <setting id="cleanup.add_serial_version_id" value="false"/>
+        <setting id="cleanup.use_this_for_non_static_method_access" value="true"/>
+        <setting id="cleanup.use_this_for_non_static_method_access_only_if_necessary" value="true"/>
+        <setting id="cleanup.use_anonymous_class_creation" value="false"/>
+        <setting id="cleanup.add_missing_override_annotations_interface_methods" value="true"/>
+        <setting id="cleanup.remove_unused_private_members" value="false"/>
+        <setting id="cleanup.make_local_variable_final" value="true"/>
+        <setting id="cleanup.add_missing_methods" value="true"/>
+        <setting id="cleanup.never_use_parentheses_in_expressions" value="true"/>
+        <setting id="cleanup.qualify_static_member_accesses_with_declaring_class" value="true"/>
+        <setting id="cleanup.push_down_negation" value="false"/>
+        <setting id="cleanup.use_parentheses_in_expressions" value="false"/>
+        <setting id="cleanup.add_missing_override_annotations" value="true"/>
+        <setting id="cleanup.use_blocks" value="true"/>
+        <setting id="cleanup.make_variable_declarations_final" value="true"/>
+        <setting id="cleanup.correct_indentation" value="true"/>
+        <setting id="cleanup.remove_unused_private_types" value="true"/>
+    </profile>
+</profiles>
diff --git a/config/fineractdev-eclipse-preferences.epf b/config/fineractdev-eclipse-preferences.epf
index 8019350..7611df5 100644
--- a/config/fineractdev-eclipse-preferences.epf
+++ b/config/fineractdev-eclipse-preferences.epf
@@ -39,428 +39,10 @@
 /instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
 /instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.release=enabled
 /instance/org.eclipse.jdt.core/org.eclipse.jdt.core.compiler.source=1.8
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.align_with_spaces=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_block_comments=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_header=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_html=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_line_comments=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.format_source_code=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.line_length=80
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.compact_else_if=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.continuation_indentation=2
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_empty_lines=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.indentation.size=4
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.join_lines_in_comments=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.join_wrapped_lines=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_if_empty
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_if_empty
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_if_empty
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_if_empty
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_if_empty
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_if_empty
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_if_empty
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_if_empty
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_if_empty
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_if_empty
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.lineSplit=140
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.tabulation.char=space
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.tabulation.size=4
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.text_block_indentation=0
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.use_on_off_tags=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
-/instance/org.eclipse.jdt.core/org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
-/instance/org.eclipse.jdt.ui/cleanup.add_default_serial_version_id=true
-/instance/org.eclipse.jdt.ui/cleanup.add_generated_serial_version_id=false
-/instance/org.eclipse.jdt.ui/cleanup.add_missing_annotations=true
-/instance/org.eclipse.jdt.ui/cleanup.add_missing_deprecated_annotations=true
-/instance/org.eclipse.jdt.ui/cleanup.add_missing_methods=true
-/instance/org.eclipse.jdt.ui/cleanup.add_missing_nls_tags=false
-/instance/org.eclipse.jdt.ui/cleanup.add_missing_override_annotations=true
-/instance/org.eclipse.jdt.ui/cleanup.add_missing_override_annotations_interface_methods=true
-/instance/org.eclipse.jdt.ui/cleanup.add_serial_version_id=false
-/instance/org.eclipse.jdt.ui/cleanup.always_use_blocks=true
-/instance/org.eclipse.jdt.ui/cleanup.always_use_parentheses_in_expressions=false
-/instance/org.eclipse.jdt.ui/cleanup.always_use_this_for_non_static_field_access=true
-/instance/org.eclipse.jdt.ui/cleanup.always_use_this_for_non_static_method_access=false
-/instance/org.eclipse.jdt.ui/cleanup.convert_to_enhanced_for_loop=false
-/instance/org.eclipse.jdt.ui/cleanup.correct_indentation=true
-/instance/org.eclipse.jdt.ui/cleanup.format_source_code=true
-/instance/org.eclipse.jdt.ui/cleanup.format_source_code_changes_only=false
-/instance/org.eclipse.jdt.ui/cleanup.make_local_variable_final=true
-/instance/org.eclipse.jdt.ui/cleanup.make_parameters_final=true
-/instance/org.eclipse.jdt.ui/cleanup.make_private_fields_final=true
-/instance/org.eclipse.jdt.ui/cleanup.make_type_abstract_if_missing_method=false
-/instance/org.eclipse.jdt.ui/cleanup.make_variable_declarations_final=true
-/instance/org.eclipse.jdt.ui/cleanup.never_use_blocks=false
-/instance/org.eclipse.jdt.ui/cleanup.never_use_parentheses_in_expressions=true
-/instance/org.eclipse.jdt.ui/cleanup.organize_imports=true
-/instance/org.eclipse.jdt.ui/cleanup.qualify_static_field_accesses_with_declaring_class=false
-/instance/org.eclipse.jdt.ui/cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-/instance/org.eclipse.jdt.ui/cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-/instance/org.eclipse.jdt.ui/cleanup.qualify_static_member_accesses_with_declaring_class=true
-/instance/org.eclipse.jdt.ui/cleanup.qualify_static_method_accesses_with_declaring_class=false
-/instance/org.eclipse.jdt.ui/cleanup.remove_private_constructors=true
-/instance/org.eclipse.jdt.ui/cleanup.remove_trailing_whitespaces=true
-/instance/org.eclipse.jdt.ui/cleanup.remove_trailing_whitespaces_all=true
-/instance/org.eclipse.jdt.ui/cleanup.remove_trailing_whitespaces_ignore_empty=false
-/instance/org.eclipse.jdt.ui/cleanup.remove_unnecessary_casts=true
-/instance/org.eclipse.jdt.ui/cleanup.remove_unnecessary_nls_tags=true
-/instance/org.eclipse.jdt.ui/cleanup.remove_unused_imports=true
-/instance/org.eclipse.jdt.ui/cleanup.remove_unused_local_variables=false
-/instance/org.eclipse.jdt.ui/cleanup.remove_unused_private_fields=true
-/instance/org.eclipse.jdt.ui/cleanup.remove_unused_private_members=false
-/instance/org.eclipse.jdt.ui/cleanup.remove_unused_private_methods=true
-/instance/org.eclipse.jdt.ui/cleanup.remove_unused_private_types=true
-/instance/org.eclipse.jdt.ui/cleanup.sort_members=false
-/instance/org.eclipse.jdt.ui/cleanup.sort_members_all=false
-/instance/org.eclipse.jdt.ui/cleanup.use_blocks=true
-/instance/org.eclipse.jdt.ui/cleanup.use_blocks_only_for_return_and_throw=false
-/instance/org.eclipse.jdt.ui/cleanup.use_parentheses_in_expressions=false
-/instance/org.eclipse.jdt.ui/cleanup.use_this_for_non_static_field_access=true
-/instance/org.eclipse.jdt.ui/cleanup.use_this_for_non_static_field_access_only_if_necessary=false
-/instance/org.eclipse.jdt.ui/cleanup.use_this_for_non_static_method_access=true
-/instance/org.eclipse.jdt.ui/cleanup.use_this_for_non_static_method_access_only_if_necessary=true
-/instance/org.eclipse.jdt.ui/cleanup_profile=_fineractdevprofile
-/instance/org.eclipse.jdt.ui/cleanup_settings_version=2
-/instance/org.eclipse.jdt.ui/formatter_profile=_fineractdevprojectformatter
-/instance/org.eclipse.jdt.ui/formatter_settings_version=18
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.cleanupprofiles=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\r\n<profiles version\="2">\r\n<profile kind\="CleanUpProfile" name\="fineractdevprofile" version\="2">\r\n<setting id\="cleanup.remove_unused_private_fields" value\="true"/>\r\n<setting id\="cleanup.always_use_parentheses_in_expressions" value\="false"/>\r\n<setting id\="cleanup.never_use_blocks" value\="false"/>\r\n<setting id\="cleanup.remove_unused_private_methods" [...]
 /instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.exception.name=e
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.formatterprofiles=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\n<profiles version\="18">\n    <profile kind\="CodeFormatterProfile" name\="fineractdevprojectformatter" version\="18">\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value\="insert"/>\n        <setting id\="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value\="insert"/>\n        <setting id\="org.e [...]
 /instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.formatterprofiles.version=18
 /instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.gettersetter.use.is=true
 /instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.ignorelowercasenames=true
-/instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.importorder=;
 /instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.keywordthis=true
 /instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.ondemandthreshold=99
 /instance/org.eclipse.jdt.ui/org.eclipse.jdt.ui.overrideannotation=true
diff --git a/config/fineractdev-formatter.xml b/config/fineractdev-formatter.xml
new file mode 100644
index 0000000..2bbe4b7
--- /dev/null
+++ b/config/fineractdev-formatter.xml
@@ -0,0 +1,365 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<profiles version="18">
+    <profile kind="CodeFormatterProfile" name="fineractdevprojectformatter" version="18">
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment" value="common_lines"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_logical_operator" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation" value="common_lines"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement" value="common_lines"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration" value="common_lines"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.align_with_spaces" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
+        <setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
+        <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
+        <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement" value="common_lines"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_logical_operator" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line" value="one_line_if_empty"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
+        <setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_method_body_on_one_line" value="one_line_if_empty"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line" value="one_line_if_empty"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
+        <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method" value="1"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line" value="one_line_if_empty"/>
+        <setting id="org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line" value="one_line_if_empty"/>
+        <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause" value="common_lines"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_additive_operator" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_relational_operator" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line" value="one_line_if_empty"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.wrap_before_shift_operator" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
+        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
+        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_lambda_body" value="end_of_line"/>
+        <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_type_parameters" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_loops" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_relational_operator" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
+        <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation" value="common_lines"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_additive_operator" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.text_block_indentation" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_module_statements" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line" value="one_line_if_empty"/>
+        <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="1"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
+        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_additive_operator" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.wrap_before_conditional_operator" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_shift_operator" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines" value="2147483647"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="80"/>
+        <setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause" value="common_lines"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_code_block_on_one_line" value="one_line_if_empty"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.wrap_before_assignment_operator" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_not_operator" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration" value="common_lines"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line" value="one_line_if_empty"/>
+        <setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_type_arguments" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_logical_operator" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.wrap_before_relational_operator" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.indent_tag_description" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_string_concatenation" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
+        <setting id="org.eclipse.jdt.core.formatter.wrap_before_logical_operator" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_shift_operator" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration" value="common_lines"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_shift_operator" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line" value="one_line_if_empty"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
+        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.wrap_before_additive_operator" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line" value="false"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block" value="0"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_relational_operator" value="insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.wrap_before_string_concatenation" value="true"/>
+        <setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
+        <setting id="org.eclipse.jdt.core.formatter.lineSplit" value="140"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
+        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
+    </profile>
+</profiles>
diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle
index b84ada0..ef46d57 100644
--- a/fineract-provider/build.gradle
+++ b/fineract-provider/build.gradle
@@ -48,6 +48,7 @@ buildscript {
         classpath "gradle.plugin.com.github.andygoossens:gradle-modernizer-plugin:1.3.0"
         classpath "gradle.plugin.com.gorylenko.gradle-git-properties:gradle-git-properties:2.2.2"
         classpath "net.ltgt.gradle:gradle-errorprone-plugin:1.2.1"
+        classpath "com.diffplug.spotless:spotless-plugin-gradle:4.1.0"
     }
 }
 
@@ -69,6 +70,7 @@ apply plugin: 'com.github.andygoossens.gradle-modernizer-plugin'
 apply plugin: 'jacoco'
 apply plugin: "com.gorylenko.gradle-git-properties"
 apply plugin: "net.ltgt.errorprone"
+apply plugin: "com.diffplug.gradle.spotless"
 // apply plugin: 'pmd'
 
 dependencyManagement {
@@ -193,6 +195,26 @@ jacocoTestReport{
     }
 }
 
+spotless {
+  format 'misc', {
+   target '**/*.md', '**/*.properties', '**/*.gradle', '**/.gitignore', '**/*.yml', '**/*.xml', '**/**.json', '**/*.sql'
+   targetExclude '**/build/**', '**/bin/**'
+   indentWithSpaces(4)
+   endWithNewline()
+   trimTrailingWhitespace()
+  }
+
+  java {
+    importOrder() //sort imports alphabetically
+    removeUnusedImports() 
+    eclipse().configFile '../config/fineractdev-formatter.xml'
+    endWithNewline()
+    trimTrailingWhitespace()
+  }
+  
+  lineEndings 'UNIX'
+}
+
 rat {
     verbose = false
     reportDir = new File(buildDir,'reports/rat')
@@ -458,6 +480,7 @@ modernizer {
 
 compileJava{
     dependsOn rat
+    dependsOn spotlessCheck
 }
 /*
 pmd {


[fineract] 02/02: bulk auto reformat ca. 2900 files using ./gradlew :spotlessApply [FINERACT-1006]

Posted by vo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vorburger pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git

commit 9da59323072506ec18992aff497dc3a35bac4d9a
Author: Michael Vorburger <mi...@vorburger.ch>
AuthorDate: Sun Jun 14 17:55:15 2020 +0200

    bulk auto reformat ca. 2900 files using ./gradlew :spotlessApply [FINERACT-1006]
---
 fineract-provider/build.gradle                     |  104 +-
 fineract-provider/config/checkstyle/checkstyle.xml |   24 +-
 fineract-provider/dependencies.gradle              |   40 +-
 .../properties/oauth/application.properties        |    2 +-
 .../AccountNumberPreferencesTest.java              |  109 +-
 .../integrationtests/AccountTransferTest.java      |   28 +-
 .../AccountingScenarioIntegrationTest.java         |  111 +-
 .../integrationtests/ActuatorIntegrationTest.java  |    5 +-
 .../fineract/integrationtests/BatchApiTest.java    |   20 +-
 .../BatchRequestsIntegrationTest.java              |    5 +-
 .../integrationtests/CenterIntegrationTest.java    |   32 +-
 .../ClientLoanIntegrationTest.java                 | 1515 +++---
 .../ClientSavingsIntegrationTest.java              |  616 +--
 .../integrationtests/ClientStatusChecker.java      |   16 +-
 ...ientUndoRejectAndWithdrawalIntegrationTest.java |   39 +-
 .../ConcurrencyIntegrationTest.java                |   12 +-
 .../fineract/integrationtests/CurrenciesTest.java  |    3 +-
 .../integrationtests/CurrencyIntegrationTest.java  |    1 -
 .../DisbursalAndRepaymentScheduleTest.java         |  696 ++-
 .../ExternalServicesConfigurationTest.java         |    9 +-
 .../FinancialActivityAccountsTest.java             |   14 +-
 .../integrationtests/FixedDepositTest.java         |  460 +-
 ...xibleSavingsInterestPostingIntegrationTest.java |   17 +-
 .../integrationtests/FundsIntegrationTest.java     |  100 +-
 ...restChargedFromDateSameAsDisbursalDateTest.java |   28 +-
 .../integrationtests/GlobalConfigurationTest.java  |   58 +-
 .../integrationtests/GroupLoanIntegrationTest.java |   49 +-
 .../GroupSavingsIntegrationTest.java               |   49 +-
 .../fineract/integrationtests/GroupTest.java       |    5 +-
 .../integrationtests/HookIntegrationTest.java      |   13 +-
 .../LoanApplicationApprovalTest.java               |   26 +-
 .../LoanApplicationUndoLastTrancheTest.java        |   19 +-
 .../LoanDisbursalDateValidationTest.java           |   35 +-
 .../LoanDisbursementDetailsIntegrationTest.java    |   57 +-
 .../LoanRepaymentRescheduleAtDisbursementTest.java |   34 +-
 .../LoanRescheduleRequestTest.java                 |   55 +-
 .../LoanReschedulingWithinCenterTest.java          |   44 +-
 ...ithWaiveInterestAndWriteOffIntegrationTest.java |   19 +-
 ...mDaysBetweenDisbursalAndFirstRepaymentTest.java |    2 +-
 .../integrationtests/NotificationApiTest.java      |    3 +-
 .../integrationtests/OfficeIntegrationTest.java    |   11 +-
 .../PasswordPreferencesIntegrationTest.java        |    7 +-
 .../fineract/integrationtests/RatesTest.java       |   52 +-
 .../integrationtests/RecurringDepositTest.java     |  515 +-
 .../fineract/integrationtests/RolesTest.java       |    3 +-
 .../integrationtests/SchedulerJobsTest.java        |   11 +-
 .../integrationtests/SchedulerJobsTestResults.java | 1509 +++---
 .../SkipRepaymentOnMonthFirstTest.java             |   45 +-
 .../integrationtests/StaffImageApiTest.java        |    4 +-
 .../fineract/integrationtests/StaffTest.java       |    6 +-
 .../integrationtests/SurveyIntegrationTest.java    |    2 +-
 .../fineract/integrationtests/SystemCodeTest.java  |   15 +-
 .../integrationtests/TemplateIntegrationTest.java  |    6 +-
 .../integrationtests/UserAdministrationTest.java   |   29 +-
 .../integrationtests/XBRLIntegrationTest.java      |    1 +
 .../client/ClientEntityImportHandlerTest.java      |   98 +-
 .../importhandler/loan/LoanImportHandlerTest.java  |   88 +-
 .../office/OfficeImportHandlerTest.java            |   52 +-
 .../savings/SavingsImportHandlerTest.java          |   89 +-
 .../client/ClientEntityWorkbookPopulatorTest.java  |   37 +-
 .../populator/loan/LoanWorkbookPopulatorTest.java  |   74 +-
 .../office/OfficeWorkBookPopulatorTest.java        |   21 +-
 .../savings/SavingsWorkbookPopulateTest.java       |   57 +-
 .../integrationtests/common/BatchHelper.java       |   15 +-
 .../integrationtests/common/CalendarHelper.java    |   17 +-
 .../integrationtests/common/CenterDomain.java      |   20 +-
 .../integrationtests/common/CenterHelper.java      |   32 +-
 .../integrationtests/common/ClientChargesTest.java |    4 +-
 .../integrationtests/common/ClientHelper.java      |  223 +-
 .../integrationtests/common/CommonConstants.java   |    1 -
 .../integrationtests/common/CurrenciesHelper.java  |    7 +-
 .../integrationtests/common/CurrencyDomain.java    |    8 +-
 .../ExternalServicesConfigurationHelper.java       |   22 +-
 .../common/GlobalConfigurationHelper.java          |   74 +-
 .../integrationtests/common/GroupHelper.java       |   69 +-
 .../integrationtests/common/HolidayHelper.java     |   10 +-
 .../integrationtests/common/HookHelper.java        |   16 +-
 .../integrationtests/common/ImageHelper.java       |    4 +-
 .../common/LoanRescheduleRequestHelper.java        |    1 +
 .../common/NotificationHelper.java                 |    3 +-
 .../integrationtests/common/OfficeDomain.java      |   33 +-
 .../integrationtests/common/OfficeHelper.java      |   50 +-
 .../common/PasswordPreferencesHelper.java          |   26 +-
 .../integrationtests/common/PaymentTypeHelper.java |   42 +-
 .../common/ProvisioningIntegrationTest.java        |  135 +-
 .../common/SchedulerJobHelper.java                 |   55 +-
 .../common/StandingInstructionsHelper.java         |   16 +-
 .../integrationtests/common/SurveyHelper.java      |   17 +-
 .../common/TaxComponentHelper.java                 |    5 +-
 .../integrationtests/common/TaxGroupHelper.java    |    6 +-
 .../fineract/integrationtests/common/Utils.java    |   95 +-
 .../integrationtests/common/WorkingDaysHelper.java |    8 +-
 .../common/accounting/Account.java                 |    1 +
 .../common/accounting/AccountHelper.java           |   15 +-
 .../accounting/FinancialActivityAccountHelper.java |   11 +-
 .../common/accounting/JournalEntry.java            |    1 +
 .../common/charges/ChargesHelper.java              |   99 +-
 .../fixeddeposit/FixedDepositAccountHelper.java    |  117 +-
 .../FixedDepositAccountStatusChecker.java          |   26 +-
 .../fixeddeposit/FixedDepositProductHelper.java    |   16 +-
 .../integrationtests/common/funds/FundsHelper.java |   21 +-
 .../common/funds/FundsResourceHandler.java         |   21 +-
 .../common/loans/LoanApplicationTestBuilder.java   |   29 +-
 .../common/loans/LoanDisbursementTestBuilder.java  |   48 +-
 .../common/loans/LoanProductTestBuilder.java       |   26 +-
 .../common/loans/LoanTransactionHelper.java        |  238 +-
 .../common/organisation/CampaignsHelper.java       |   62 +-
 .../common/organisation/Currency.java              |   12 +-
 .../common/organisation/CurrencyHelper.java        |   17 +-
 .../organisation/EntityDatatableChecksHelper.java  |   13 +-
 .../EntityDatatableChecksIntegrationTest.java      |    1 +
 .../common/organisation/StaffHelper.java           |   39 +-
 .../common/provisioning/ProvisioningHelper.java    |   10 +-
 .../ProvisioningTransactionHelper.java             |   37 +-
 .../integrationtests/common/rates/RatesHelper.java |  106 +-
 .../RecurringDepositAccountHelper.java             |  177 +-
 .../RecurringDepositAccountStatusChecker.java      |   28 +-
 .../RecurringDepositProductHelper.java             |   10 +-
 .../integrationtests/common/report/ReportData.java |    4 +-
 .../common/savings/AccountTransferHelper.java      |   31 +-
 .../common/savings/SavingsAccountHelper.java       |  117 +-
 .../savings/SavingsApplicationTestBuilder.java     |   26 +-
 .../common/savings/SavingsProductHelper.java       |   11 +-
 .../common/savings/SavingsStatusChecker.java       |   56 +-
 .../common/shares/DividendsIntegrationTests.java   |  107 +-
 .../common/shares/ShareAccountHelper.java          |  103 +-
 .../shares/ShareAccountIntegrationTests.java       |  217 +-
 .../shares/ShareAccountTransactionHelper.java      |    4 +-
 .../shares/ShareDividendsTransactionHelper.java    |   25 +-
 .../common/shares/ShareProductHelper.java          |  140 +-
 .../shares/ShareProductTransactionHelper.java      |    8 +-
 .../system/AccountNumberPreferencesHelper.java     |  151 +-
 .../AccountNumberPreferencesTestBuilder.java       |    1 +
 .../integrationtests/common/system/CodeHelper.java |  148 +-
 .../common/system/DatatableHelper.java             |   11 +-
 .../interoperation/InteropHelper.java              |   12 +-
 .../interoperation/InteropTest.java                |   40 +-
 .../loanaccount/guarantor/GuarantorHelper.java     |    4 +-
 .../loanaccount/guarantor/GuarantorTest.java       |  122 +-
 .../guarantor/GuarantorTestBuilder.java            |    3 +-
 .../useradministration/roles/RolesHelper.java      |   11 +-
 .../useradministration/users/UserHelper.java       |   55 +-
 ...VariableInstallmentsDecliningBalanceHelper.java |   42 +-
 .../VariableInstallmentsFlatHelper.java            |   29 +-
 .../VariableInstallmentsIntegrationTest.java       |  555 ++-
 .../VariableIntallmentsTransactionHelper.java      |   17 +-
 .../org/apache/fineract/ServerApplication.java     |   13 +-
 .../accrual/api/AccrualAccountingApiResource.java  |   17 +-
 .../api/AccrualAccountingApiResourceSwagger.java   |    2 +
 .../ExecutePeriodicAccrualCommandHandler.java      |    2 +-
 .../AccrualAccountingDataValidator.java            |    5 +-
 .../AccrualAccountingWritePlatformServiceImpl.java |    3 +-
 .../closure/api/GLClosureJsonInputParams.java      |    3 +-
 .../closure/api/GLClosuresApiResource.java         |   45 +-
 .../closure/api/GLClosuresApiResourceSwagger.java  |   19 +-
 .../closure/command/GLClosureCommand.java          |   14 +-
 .../accounting/closure/data/GLClosureData.java     |    2 +-
 .../accounting/closure/domain/GLClosure.java       |    5 +-
 .../exception/GLClosureDuplicateException.java     |    7 +-
 .../exception/GLClosureInvalidDeleteException.java |    2 +-
 .../exception/GLClosureInvalidException.java       |    7 +-
 .../exception/GLClosureNotFoundException.java      |    2 +-
 .../handler/CreateGLClosureCommandHandler.java     |    2 +-
 .../handler/DeleteGLClosureCommandHandler.java     |    2 +-
 .../handler/UpdateGLClosureCommandHandler.java     |    2 +-
 .../GLClosureCommandFromApiJsonDeserializer.java   |    2 +-
 ...osureWritePlatformServiceJpaRepositoryImpl.java |   22 +-
 .../accounting/common/AccountingConstants.java     |  110 +-
 .../AccountingDropdownReadPlatformService.java     |    2 +-
 .../AccountingDropdownReadPlatformServiceImpl.java |    2 +-
 .../accounting/common/AccountingRuleType.java      |    2 +-
 .../api/FinancialActivityAccountsApiResource.java  |   40 +-
 ...inancialActivityAccountsApiResourceSwagger.java |   35 +-
 .../api/FinancialActivityAccountsConstants.java    |    6 +-
 .../FinancialActivityAccountsJsonInputParams.java  |    3 +-
 .../data/FinancialActivityAccountData.java         |    3 +-
 .../domain/FinancialActivityAccount.java           |    2 +-
 .../domain/FinancialActivityAccountRepository.java |    4 +-
 .../FinancialActivityAccountRepositoryWrapper.java |    3 +-
 ...cateFinancialActivityAccountFoundException.java |    2 +-
 .../FinancialActivityAccountInvalidException.java  |   14 +-
 .../FinancialActivityAccountNotFoundException.java |    7 +-
 .../CreateFinancialActivityAccountHandler.java     |    2 +-
 ...leteFinancialActivityAccountCommandHandler.java |    2 +-
 ...dateFinancialActivityAccountCommandHandler.java |    2 +-
 .../FinancialActivityAccountDataValidator.java     |    8 +-
 ...inancialActivityAccountReadPlatformService.java |    2 +-
 ...cialActivityAccountReadPlatformServiceImpl.java |    3 +-
 ...nancialActivityAccountWritePlatformService.java |    2 +-
 ...ialActivityAccountWritePlatformServiceImpl.java |   25 +-
 .../glaccount/api/GLAccountJsonInputParams.java    |    7 +-
 .../glaccount/api/GLAccountsApiResource.java       |  109 +-
 .../api/GLAccountsApiResourceSwagger.java          |   41 +-
 .../glaccount/command/GLAccountCommand.java        |   14 +-
 .../accounting/glaccount/data/GLAccountData.java   |   22 +-
 .../accounting/glaccount/domain/GLAccount.java     |    4 +-
 .../domain/GLAccountRepositoryWrapper.java         |    2 +-
 .../accounting/glaccount/domain/GLAccountType.java |   34 +-
 .../accounting/glaccount/domain/TrialBalance.java  |   25 +-
 .../glaccount/domain/TrialBalanceRepository.java   |    5 +-
 .../domain/TrialBalanceRepositoryWrapper.java      |   17 +-
 .../exception/GLAccountDisableException.java       |    6 +-
 .../exception/GLAccountDuplicateException.java     |    2 +-
 .../GLAccountInvalidClassificationException.java   |    2 +-
 .../exception/GLAccountInvalidDeleteException.java |   11 +-
 .../exception/GLAccountInvalidParentException.java |    6 +-
 .../exception/GLAccountInvalidUpdateException.java |   11 +-
 .../exception/GLAccountInvalidUsageException.java  |    2 +-
 .../exception/GLAccountNotFoundException.java      |    2 +-
 .../handler/CreateGLAccountCommandHandler.java     |    2 +-
 .../handler/DeleteGLAccountCommandHandler.java     |    2 +-
 .../handler/UpdateGLAccountCommandHandler.java     |    2 +-
 .../GLAccountCommandFromApiJsonDeserializer.java   |    6 +-
 .../service/GLAccountReadPlatformService.java      |    2 +-
 .../service/GLAccountReadPlatformServiceImpl.java  |   20 +-
 ...countWritePlatformServiceJpaRepositoryImpl.java |   52 +-
 .../api/JournalEntriesApiResource.java             |  115 +-
 .../api/JournalEntriesApiResourceSwagger.java      |   10 +-
 .../api/JournalEntryJsonInputParams.java           |   12 +-
 .../journalentry/command/JournalEntryCommand.java  |    8 +-
 .../command/SingleDebitOrCreditEntryCommand.java   |    2 +-
 .../accounting/journalentry/data/CreditDebit.java  |    1 +
 .../journalentry/data/JournalEntryData.java        |   58 +-
 .../data/JournalEntryDataValidator.java            |    6 +-
 .../journalentry/data/LoanTransactionDTO.java      |   12 +-
 .../journalentry/data/TransactionTypeEnumData.java |    2 +-
 .../journalentry/domain/JournalEntry.java          |    4 +-
 .../domain/JournalEntryRepository.java             |   24 +-
 .../exception/JournalEntriesNotFoundException.java |    7 +-
 .../exception/JournalEntryInvalidException.java    |   11 +-
 .../exception/JournalEntryNotFoundException.java   |    7 +-
 .../exception/JournalEntryRuntimeException.java    |    1 -
 .../handler/CreateJournalEntryCommandHandler.java  |    2 +-
 .../handler/ReverseJournalEntryCommandHandler.java |    2 +-
 ...JournalEntryCommandFromApiJsonDeserializer.java |   13 +-
 .../service/AccountingProcessorHelper.java         |  188 +-
 .../AccrualBasedAccountingProcessorForLoan.java    |   59 +-
 .../CashBasedAccountingProcessorForLoan.java       |   66 +-
 .../CashBasedAccountingProcessorForSavings.java    |   61 +-
 .../CashBasedAccountingProcessorForShares.java     |   10 +-
 .../service/JournalEntryReadPlatformService.java   |    2 +-
 .../JournalEntryReadPlatformServiceImpl.java       |   51 +-
 ...ournalEntryRunningBalanceUpdateServiceImpl.java |   54 +-
 .../service/JournalEntryWritePlatformService.java  |    4 +-
 ...EntryWritePlatformServiceJpaRepositoryImpl.java |  113 +-
 .../domain/PortfolioProductType.java               |    1 +
 .../domain/ProductToGLAccountMapping.java          |   15 +-
 .../ProductToGLAccountMappingRepository.java       |   21 +-
 .../ProductToGLAccountMappingInvalidException.java |    9 +-
 ...ProductToGLAccountMappingNotFoundException.java |    2 +-
 ...tToGLAccountMappingFromApiJsonDeserializer.java |  173 +-
 .../LoanProductToGLAccountMappingHelper.java       |  102 +-
 .../service/ProductToGLAccountMappingHelper.java   |   83 +-
 ...oductToGLAccountMappingReadPlatformService.java |    2 +-
 ...tToGLAccountMappingReadPlatformServiceImpl.java |   20 +-
 ...ductToGLAccountMappingWritePlatformService.java |    2 +-
 ...ToGLAccountMappingWritePlatformServiceImpl.java |   34 +-
 .../SavingsProductToGLAccountMappingHelper.java    |   51 +-
 .../ShareProductToGLAccountMappingHelper.java      |   33 +-
 .../api/ProvisioningEntriesApiResource.java        |   52 +-
 .../api/ProvisioningEntriesApiResourceSwagger.java |   15 +-
 .../constant/ProvisioningEntriesApiConstants.java  |    8 +-
 .../data/LoanProductProvisioningEntryData.java     |   64 +-
 .../provisioning/data/ProvisioningEntryData.java   |   48 +-
 .../domain/LoanProductProvisioningEntry.java       |   66 +-
 .../provisioning/domain/ProvisioningEntry.java     |   25 +-
 .../domain/ProvisioningEntryRepository.java        |    4 +-
 .../NoProvisioningCriteriaDefinitionFound.java     |    1 -
 .../ProvisioningEntryAlreadyCreatedException.java  |    4 +-
 .../ProvisioningEntryNotfoundException.java        |    1 -
 ...teProvisioningEntriesRequestCommandHandler.java |    5 +-
 ...sioningJournalEntriesRequestCommandHandler.java |    5 +-
 ...eateProvisioningEntryRequestCommandHandler.java |    7 +-
 ...visioningEntriesDefinitionJsonDeserializer.java |   17 +-
 .../ProvisioningEntriesReadPlatformService.java    |   15 +-
 ...ProvisioningEntriesReadPlatformServiceImpl.java |   22 +-
 .../ProvisioningEntriesWritePlatformService.java   |    5 +-
 ...triesWritePlatformServiceJpaRepositoryImpl.java |   45 +-
 .../rule/api/AccountingRuleApiResource.java        |   81 +-
 .../rule/api/AccountingRuleApiResourceSwagger.java |   18 +-
 .../rule/api/AccountingRuleJsonInputParams.java    |    6 +-
 .../accounting/rule/data/AccountingRuleData.java   |    2 +-
 .../accounting/rule/domain/AccountingRule.java     |   11 +-
 .../accounting/rule/domain/AccountingTagRule.java  |    3 +-
 .../exception/AccountingRuleDataException.java     |    4 +-
 .../AccountingRuleDuplicateException.java          |    2 +-
 .../AccountingRuleInvalidDeleteException.java      |    2 +-
 .../exception/AccountingRuleInvalidException.java  |    7 +-
 .../exception/AccountingRuleNotFoundException.java |    2 +-
 .../CreateAccountingRuleCommandHandler.java        |    2 +-
 .../DeleteAccountingRuleCommandHandler.java        |    2 +-
 .../UpdateAccountingRuleCommandHandler.java        |    2 +-
 ...countingRuleCommandFromApiJsonDeserializer.java |   36 +-
 .../AccountingRuleReadPlatformServiceImpl.java     |   19 +-
 ...gRuleWritePlatformServiceJpaRepositoryImpl.java |   13 +-
 .../exception/TrialBalanceNotFoundException.java   |    8 +-
 .../fineract/adhocquery/api/AdHocApiResource.java  |   26 +-
 .../adhocquery/api/AdHocJsonInputParams.java       |    9 +-
 .../apache/fineract/adhocquery/data/AdHocData.java |   46 +-
 .../apache/fineract/adhocquery/domain/AdHoc.java   |   41 +-
 .../adhocquery/domain/ReportRunFrequency.java      |   15 +-
 .../exception/AdHocNotFoundException.java          |    5 +-
 .../handler/CreateAdHocCommandHandler.java         |    2 +-
 .../handler/DeleteAdHocCommandHandler.java         |    2 +-
 .../handler/UpdateAdHocCommandHandler.java         |    2 +-
 .../adhocquery/service/AdHocDataValidator.java     |   23 +-
 .../service/AdHocReadPlatformService.java          |    3 +-
 .../service/AdHocReadPlatformServiceImpl.java      |   24 +-
 .../service/AdHocScheduledJobRunnerService.java    |    1 +
 .../AdHocScheduledJobRunnerServiceImpl.java        |   32 +-
 .../service/AdHocWritePlatformService.java         |    2 +-
 ...AdHocWritePlatformServiceJpaRepositoryImpl.java |    8 +-
 .../fineract/batch/api/BatchApiResource.java       |   29 +-
 .../batch/api/BatchApiResourceSwagger.java         |    7 +-
 .../fineract/batch/command/CommandContext.java     |   35 +-
 .../batch/command/CommandStrategyProvider.java     |   20 +-
 .../internal/ActivateClientCommandStrategy.java    |    9 +-
 .../command/internal/ApplyLoanCommandStrategy.java |    8 +-
 .../internal/ApplySavingsCommandStrategy.java      |   10 +-
 .../internal/ApproveLoanCommandStrategy.java       |   20 +-
 .../ApproveLoanRescheduleCommandStrategy.java      |    3 +-
 .../internal/CollectChargesCommandStrategy.java    |    8 +-
 .../internal/CreateChargeCommandStrategy.java      |   13 +-
 .../internal/CreateClientCommandStrategy.java      |    4 +-
 .../internal/DisburseLoanCommandStrategy.java      |   18 +-
 .../command/internal/RepayLoanCommandStrategy.java |   11 +-
 .../exception/ClientDetailsNotFoundException.java  |    2 +-
 .../fineract/batch/exception/ErrorHandler.java     |   15 +-
 .../serialization/BatchRequestJsonHelper.java      |    4 +-
 .../fineract/batch/service/BatchApiService.java    |   10 +-
 .../batch/service/BatchApiServiceImpl.java         |   61 +-
 .../fineract/batch/service/ResolutionHelper.java   |    4 +-
 .../fineract/commands/annotation/CommandType.java  |    3 +-
 .../fineract/commands/api/AuditsApiResource.java   |   65 +-
 .../commands/api/MakercheckersApiResource.java     |   53 +-
 .../api/MakercheckersApiResourceSwagger.java       |   14 +-
 .../apache/fineract/commands/data/AuditData.java   |    6 +-
 .../fineract/commands/data/AuditSearchData.java    |    2 +-
 .../commands/data/ProcessingResultLookup.java      |    2 +-
 .../domain/CommandProcessingResultType.java        |    2 +-
 .../fineract/commands/domain/CommandSource.java    |   13 +-
 .../commands/domain/CommandSourceRepository.java   |    2 +-
 .../fineract/commands/domain/CommandWrapper.java   |   30 +-
 .../CommandNotAwaitingApprovalException.java       |    2 +-
 .../exception/CommandNotFoundException.java        |    2 +-
 .../exception/UnsupportedCommandException.java     |    2 +-
 .../commands/handler/NewCommandSourceHandler.java  |    2 +-
 .../commands/provider/CommandHandlerProvider.java  |   30 +-
 .../commands/service/AuditReadPlatformService.java |    2 +-
 .../service/AuditReadPlatformServiceImpl.java      |   21 +-
 .../commands/service/CommandProcessingService.java |    4 +-
 .../commands/service/CommandWrapperBuilder.java    |   84 +-
 ...PortfolioCommandSourceWritePlatformService.java |    2 +-
 ...folioCommandSourceWritePlatformServiceImpl.java |   10 +-
 .../SynchronousCommandProcessingService.java       |    7 +-
 .../api/AccountNumberFormatsApiResource.java       |   68 +-
 .../AccountNumberFormatsApiResourceSwagger.java    |   20 +-
 .../data/AccountNumberFormatDataValidator.java     |   43 +-
 .../domain/AccountNumberFormat.java                |    5 +-
 .../domain/AccountNumberFormatEnumerations.java    |   33 +-
 .../domain/AccountNumberFormatRepository.java      |    4 +-
 .../AccountNumberFormatRepositoryWrapper.java      |    3 +-
 .../domain/EntityAccountType.java                  |    9 +-
 .../AccountNumberFormatNotFoundException.java      |    4 +-
 ...AccountNumberFormatReadPlatformServiceImpl.java |    4 +-
 ...ormatWritePlatformServiceJpaRepositoryImpl.java |    7 +-
 .../bulkimport/api/BulkImportApiResource.java      |   36 +-
 .../bulkimport/constants/CenterConstants.java      |   40 +-
 .../constants/ChartOfAcountsConstants.java         |   33 +-
 .../constants/ClientEntityConstants.java           |   76 +-
 .../constants/ClientPersonConstants.java           |   73 +-
 .../bulkimport/constants/GroupConstants.java       |   46 +-
 .../bulkimport/constants/GuarantorConstants.java   |   20 +-
 .../constants/JournalEntryConstants.java           |    2 +-
 .../bulkimport/constants/LoanConstants.java        |  100 +-
 .../constants/LoanRepaymentConstants.java          |   48 +-
 .../bulkimport/constants/OfficeConstants.java      |   10 +-
 .../constants/RecurringDepositConstants.java       |    1 -
 .../bulkimport/constants/SavingsConstants.java     |    2 +-
 .../constants/SharedAccountsConstants.java         |   44 +-
 .../bulkimport/constants/StaffConstants.java       |   18 +-
 .../constants/TemplatePopulateImportConstants.java |  238 +-
 .../bulkimport/constants/UserConstants.java        |   23 +-
 .../bulkimport/data/BulkImportEvent.java           |   10 +-
 .../infrastructure/bulkimport/data/Count.java      |   10 +-
 .../bulkimport/data/GlobalEntityType.java          |   57 +-
 .../infrastructure/bulkimport/data/ImportData.java |   28 +-
 .../bulkimport/data/ImportFormatType.java          |   19 +-
 .../bulkimport/domain/ImportDocument.java          |   23 +-
 .../domain/ImportDocumentRepository.java           |    3 +-
 .../exceptions/ImportTypeNotFoundException.java    |    2 +-
 .../bulkimport/importhandler/ImportHandler.java    |    2 +-
 .../importhandler/ImportHandlerUtils.java          |  270 +-
 .../importhandler/center/CenterImportHandler.java  |  130 +-
 .../ChartOfAccountsImportHandler.java              |   94 +-
 .../client/ClientEntityImportHandler.java          |  112 +-
 .../client/ClientPersonImportHandler.java          |  108 +-
 .../fixeddeposits/FixedDepositImportHandler.java   |  202 +-
 .../FixedDepositTransactionImportHandler.java      |   74 +-
 .../importhandler/group/GroupImportHandler.java    |  160 +-
 .../guarantor/GuarantorImportHandler.java          |   77 +-
 .../importhandler/helper/ClientIdSerializer.java   |    8 +-
 .../helper/CodeValueDataIdSerializer.java          |    1 +
 .../helper/CurrencyDateCodeSerializer.java         |    3 +-
 .../importhandler/helper/DateSerializer.java       |    2 +-
 .../helper/EnumOptionDataIdSerializer.java         |    1 +
 .../helper/EnumOptionDataValueSerializer.java      |    1 +
 .../importhandler/helper/GroupIdSerializer.java    |    7 +-
 .../journalentry/JournalEntriesImportHandler.java  |  182 +-
 .../importhandler/loan/LoanImportHandler.java      |  277 +-
 .../loanrepayment/LoanRepaymentImportHandler.java  |   69 +-
 .../importhandler/office/OfficeImportHandler.java  |   52 +-
 .../RecurringDepositImportHandler.java             |  160 +-
 .../RecurringDepositTransactionImportHandler.java  |   81 +-
 .../savings/SavingsImportHandler.java              |  194 +-
 .../savings/SavingsTransactionImportHandler.java   |   72 +-
 .../sharedaccount/SharedAccountImportHandler.java  |  112 +-
 .../importhandler/staff/StaffImportHandler.java    |   71 +-
 .../importhandler/users/UserImportHandler.java     |   68 +-
 .../populator/AbstractWorkbookPopulator.java       |  187 +-
 .../bulkimport/populator/CenterSheetPopulator.java |   23 +-
 .../bulkimport/populator/ClientSheetPopulator.java |   14 +-
 .../bulkimport/populator/ExtrasSheetPopulator.java |   12 +-
 .../FixedDepositProductSheetPopulator.java         |  117 +-
 .../populator/GlAccountSheetPopulator.java         |    5 +-
 .../bulkimport/populator/GroupSheetPopulator.java  |   45 +-
 .../populator/LoanProductSheetPopulator.java       |   16 +-
 .../bulkimport/populator/OfficeSheetPopulator.java |   79 +-
 .../populator/PersonnelSheetPopulator.java         |  161 +-
 .../RecurringDepositProductSheetPopulator.java     |  130 +-
 .../bulkimport/populator/RoleSheetPopulator.java   |   12 +-
 .../populator/SavingsAccountSheetPopulator.java    |   50 +-
 .../populator/SavingsProductSheetPopulator.java    |   19 +-
 .../populator/SharedProductsSheetPopulator.java    |  106 +-
 .../bulkimport/populator/WorkbookPopulator.java    |    4 +-
 .../centers/CentersWorkbookPopulator.java          |  158 +-
 .../chartofaccounts/ChartOfAccountsWorkbook.java   |  264 +-
 .../client/ClientEntityWorkbookPopulator.java      |  399 +-
 .../client/ClientPersonWorkbookPopulator.java      |  597 ++-
 .../comparator/LoanComparatorByStatusActive.java   |   18 +-
 .../FixedDepositTransactionWorkbookPopulator.java  |  124 +-
 .../FixedDepositWorkbookPopulator.java             |  311 +-
 .../populator/group/GroupsWorkbookPopulator.java   |  170 +-
 .../guarantor/GuarantorWorkbookPopulator.java      |  329 +-
 .../JournalEntriesWorkbookPopulator.java           |  137 +-
 .../populator/loan/LoanWorkbookPopulator.java      |  329 +-
 .../LoanRepaymentWorkbookPopulator.java            |  141 +-
 .../populator/office/OfficeWorkbookPopulator.java  |   81 +-
 ...curringDepositTransactionWorkbookPopulator.java |  137 +-
 .../RecurringDepositWorkbookPopulator.java         |  281 +-
 .../SavingsTransactionsWorkbookPopulator.java      |  124 +-
 .../savings/SavingsWorkbookPopulator.java          |  242 +-
 .../SharedAccountWorkBookPopulator.java            |  241 +-
 .../populator/staff/StaffWorkbookPopulator.java    |   83 +-
 .../populator/users/UserWorkbookPopulator.java     |   94 +-
 .../service/BulkImportEventListener.java           |  100 +-
 .../BulkImportWorkbookPopulatorService.java        |    4 +-
 .../BulkImportWorkbookPopulatorServiceImpl.java    |  543 ++-
 .../service/BulkImportWorkbookService.java         |    5 +-
 .../service/BulkImportWorkbookServiceImpl.java     |  140 +-
 .../cache/PlatformCacheConfiguration.java          |    4 +-
 .../infrastructure/cache/api/CacheApiResource.java |   19 +-
 .../cache/api/CacheApiResourceSwagger.java         |   12 +-
 .../cache/command/UpdateCacheCommandHandler.java   |    5 +-
 .../infrastructure/cache/data/CacheData.java       |    2 +-
 .../infrastructure/cache/domain/CacheType.java     |    2 +-
 .../infrastructure/cache/domain/PlatformCache.java |    2 +-
 .../cache/domain/PlatformCacheRepository.java      |    2 +-
 .../cache/service/CacheWritePlatformService.java   |    2 +-
 ...CacheWritePlatformServiceJpaRepositoryImpl.java |    2 +-
 .../service/RuntimeDelegatingCacheManager.java     |    2 +-
 .../campaigns/constants/CampaignType.java          |    4 +-
 .../campaigns/email/EmailApiConstants.java         |    6 +-
 .../campaigns/email/ScheduledEmailConstants.java   |   26 +-
 .../campaigns/email/api/EmailApiResource.java      |    2 +-
 .../email/api/EmailCampaignApiResource.java        |   61 +-
 .../email/api/EmailConfigurationApiResource.java   |   14 +-
 .../email/data/EmailBusinessRulesData.java         |   23 +-
 .../campaigns/email/data/EmailCampaignData.java    |   49 +-
 .../email/data/EmailCampaignTimeLine.java          |    5 +-
 .../email/data/EmailCampaignValidator.java         |   83 +-
 .../email/data/EmailConfigurationData.java         |    1 +
 .../email/data/EmailConfigurationValidator.java    |   27 +-
 .../campaigns/email/data/EmailData.java            |   40 +-
 .../campaigns/email/data/EmailDataValidator.java   |  146 +-
 .../email/data/EmailMessageWithAttachmentData.java |   18 +-
 .../email/data/ScheduledEmailEnumerations.java     |    5 +-
 .../campaigns/email/domain/EmailCampaign.java      |  148 +-
 .../email/domain/EmailCampaignRepository.java      |    3 +-
 .../email/domain/EmailCampaignStatus.java          |   15 +-
 .../domain/EmailCampaignStatusEnumerations.java    |   21 +-
 .../campaigns/email/domain/EmailCampaignType.java  |   12 +-
 .../campaigns/email/domain/EmailConfiguration.java |    1 +
 .../email/domain/EmailConfigurationRepository.java |    4 +-
 .../campaigns/email/domain/EmailMessage.java       |   50 +-
 .../email/domain/EmailMessageAssembler.java        |    9 +-
 .../email/domain/EmailMessageEnumerations.java     |    6 +-
 .../email/domain/EmailMessageRepository.java       |    3 +-
 .../email/domain/EmailMessageStatusType.java       |    6 +-
 .../domain/ScheduledEmailAttachmentFileFormat.java |   23 +-
 ...cheduledEmailStretchyReportParamDateOption.java |   24 +-
 .../email/exception/EmailBusinessRuleNotFound.java |    3 +-
 ...ilCampaignMustBeClosedToBeDeletedException.java |    5 +-
 .../EmailCampaignMustBeClosedToEditException.java  |    1 -
 .../email/exception/EmailCampaignNotFound.java     |    5 +-
 .../EmailConfigurationSMTPUsernameNotValid.java    |    7 +-
 .../email/exception/EmailNotFoundException.java    |    2 +-
 .../ActivateEmailCampaignCommandHandler.java       |    1 +
 .../handler/CloseEmailCampaignCommandHandler.java  |    5 +-
 .../email/handler/CreateEmailCommandHandler.java   |    2 +-
 .../handler/DeleteEmailCampaignCommandHandler.java |    3 +-
 .../email/handler/DeleteEmailCommandHandler.java   |    2 +-
 .../ReactivateEmailCampaignCommandHandler.java     |    3 +-
 .../handler/UpdateEmailCampaignCommandHandler.java |    4 +-
 .../EmailCampaignReadPlatformServiceImpl.java      |   91 +-
 ...ailCampaignWritePlatformCommandHandlerImpl.java |    9 +-
 .../EmailConfigurationReadPlatformServiceImpl.java |   14 +-
 .../EmailConfigurationWritePlatformService.java    |    1 -
 ...EmailConfigurationWritePlatformServiceImpl.java |   45 +-
 .../email/service/EmailMessageJobEmailService.java |    1 -
 .../service/EmailMessageJobEmailServiceImpl.java   |   35 +-
 .../service/EmailReadPlatformServiceImpl.java      |   28 +-
 .../email/service/EmailWritePlatformService.java   |    2 +-
 ...EmailWritePlatformServiceJpaRepositoryImpl.java |   11 +-
 .../campaigns/helper/SmsConfigUtils.java           |   20 +-
 .../campaigns/sms/api/SmsCampaignApiResource.java  |   22 +-
 .../sms/constants/SmsCampaignEnumerations.java     |   16 +-
 .../sms/constants/SmsCampaignTriggerType.java      |    1 +
 .../campaigns/sms/data/SmsBusinessRulesData.java   |   12 +-
 .../campaigns/sms/data/SmsCampaignData.java        |   25 +-
 .../campaigns/sms/data/SmsProviderData.java        |    4 +-
 .../campaigns/sms/domain/SmsCampaign.java          |   32 +-
 .../sms/domain/SmsCampaignRepository.java          |    5 +-
 .../sms/domain/SmsCampaignStatusEnumerations.java  |   22 +-
 .../sms/exception/ConnectionFailureException.java  |    4 +-
 ...msCampaignMustBeClosedToBeDeletedException.java |    5 +-
 .../sms/exception/SmsCampaignNotFound.java         |    5 +-
 .../handler/CloseSmsCampaignCommandHandler.java    |    5 +-
 .../handler/DeleteSmsCampaignCommandHandler.java   |    3 +-
 .../ReactivateSmsCampaignCommandHandler.java       |    3 +-
 .../sms/serialization/SmsCampaignValidator.java    |   25 +-
 .../sms/service/SmsCampaignDomainService.java      |    3 +-
 .../sms/service/SmsCampaignDomainServiceImpl.java  |  246 +-
 ...SmsCampaignDropdownReadPlatformServiceImpl.java |   35 +-
 .../SmsCampaignReadPlatformServiceImpl.java        |    9 +-
 .../service/SmsCampaignWritePlatformService.java   |    4 +-
 .../SmsCampaignWritePlatformServiceJpaImpl.java    |  142 +-
 .../infrastructure/codes/CodeConstants.java        |    5 +-
 .../codes/api/CodeValuesApiResource.java           |   55 +-
 .../codes/api/CodeValuesApiResourceSwagger.java    |   18 +-
 .../infrastructure/codes/api/CodesApiResource.java |   29 +-
 .../codes/api/CodesApiResourceSwagger.java         |   18 +-
 .../infrastructure/codes/data/CodeData.java        |    2 +-
 .../infrastructure/codes/data/CodeValueData.java   |   23 +-
 .../fineract/infrastructure/codes/domain/Code.java |    2 +-
 .../codes/domain/CodeRepository.java               |    2 +-
 .../infrastructure/codes/domain/CodeValue.java     |   10 +-
 .../codes/domain/CodeValueRepository.java          |    2 +-
 .../codes/exception/CodeNotFoundException.java     |    2 +-
 .../exception/CodeValueNotFoundException.java      |   10 +-
 .../codes/handler/CreateCodeCommandHandler.java    |    2 +-
 .../handler/CreateCodeValueCommandHandler.java     |    2 +-
 .../codes/handler/DeleteCodeCommandHandler.java    |    2 +-
 .../handler/DeleteCodeValueCommandHandler.java     |    2 +-
 .../codes/handler/UpdateCodeCommandHandler.java    |    2 +-
 .../handler/UpdateCodeValueCommandHandler.java     |    2 +-
 .../CodeCommandFromApiJsonDeserializer.java        |    8 +-
 .../CodeValueCommandFromApiJsonDeserializer.java   |   17 +-
 .../codes/service/CodeReadPlatformServiceImpl.java |    2 +-
 .../service/CodeValueReadPlatformService.java      |    2 +-
 .../service/CodeValueWritePlatformService.java     |    2 +-
 ...ValueWritePlatformServiceJpaRepositoryImpl.java |   15 +-
 .../codes/service/CodeWritePlatformService.java    |    2 +-
 .../CodeWritePlatformServiceJpaRepositoryImpl.java |   11 +-
 .../ExternalServiceConfigurationApiConstant.java   |    3 +-
 .../ExternalServicesConfigurationApiResource.java  |   25 +-
 ...nalServicesConfigurationApiResourceSwagger.java |    5 +-
 .../api/GlobalConfigurationApiResource.java        |   45 +-
 .../api/GlobalConfigurationApiResourceSwagger.java |   18 +-
 .../command/UpdateGlobalConfigurationCommand.java  |    2 +-
 .../data/GlobalConfigurationData.java              |    2 +-
 .../data/GlobalConfigurationDataValidator.java     |   22 +-
 .../data/GlobalConfigurationPropertyData.java      |    8 +-
 .../configuration/data/SMTPCredentialsData.java    |    7 +-
 .../domain/ConfigurationDomainService.java         |    2 +-
 .../domain/ConfigurationDomainServiceJpa.java      |   20 +-
 .../configuration/domain/ExternalService.java      |    3 +-
 .../domain/ExternalServicePropertiesPK.java        |   12 +-
 .../domain/ExternalServicesProperties.java         |    1 +
 .../ExternalServicesPropertiesRepository.java      |    5 +-
 ...xternalServicesPropertiesRepositoryWrapper.java |    7 +-
 .../domain/GlobalConfigurationProperty.java        |   15 +-
 .../domain/GlobalConfigurationRepository.java      |    6 +-
 .../GlobalConfigurationRepositoryWrapper.java      |    3 +-
 ...GlobalConfigurationPropertyCannotBeModfied.java |    5 +-
 ...obalConfigurationPropertyNotFoundException.java |    2 +-
 .../UpdateGlobalConfigurationCommandHandler.java   |    2 +-
 ...onfigurationCommandFromApiJsonDeserializer.java |    6 +-
 .../service/ConfigurationReadPlatformService.java  |    2 +-
 .../ConfigurationReadPlatformServiceImpl.java      |    8 +-
 .../service/ExternalServicesConstants.java         |    8 +-
 ...ernalServicesPropertiesReadPlatformService.java |    2 +-
 ...lServicesPropertiesReadPlatformServiceImpl.java |   13 +-
 .../GlobalConfigurationWritePlatformService.java   |    3 +-
 ...ationWritePlatformServiceJpaRepositoryImpl.java |   13 +-
 .../core/api/ApiParameterHelper.java               |    3 +-
 .../core/api/ApiRequestParameterHelper.java        |    2 +-
 .../infrastructure/core/api/DateAdapter.java       |    7 +-
 .../core/api/JodaLocalDateAdapter.java             |    6 +-
 .../core/api/JodaMonthDayAdapter.java              |    6 +-
 .../infrastructure/core/api/JsonCommand.java       |   42 +-
 .../core/api/ParameterListExclusionStrategy.java   |    2 +-
 .../core/api/ParameterListInclusionStrategy.java   |    2 +-
 .../boot/AbstractApplicationConfiguration.java     |   15 +-
 .../core/boot/ApplicationExitUtil.java             |    5 +-
 .../infrastructure/core/boot/JDBCDriverConfig.java |    7 +-
 .../core/boot/WebFrontEndConfiguration.java        |   15 +-
 .../core/boot/WebTwoFactorXmlConfiguration.java    |    4 +-
 .../core/boot/WebXmlConfiguration.java             |    4 +-
 .../core/boot/WebXmlOauthConfiguration.java        |   11 +-
 .../core/data/ApiErrorMessageArg.java              |    2 +-
 .../core/data/ApiGlobalErrorResponse.java          |    6 +-
 .../core/data/ApiParameterError.java               |    7 +-
 .../core/data/CommandProcessingResult.java         |   25 +-
 .../core/data/CommandProcessingResultBuilder.java  |    6 +-
 .../core/data/DataValidatorBuilder.java            |   94 +-
 .../infrastructure/core/data/EnumOptionData.java   |   14 +-
 .../core/data/PaginationParameters.java            |    2 +-
 .../data/PaginationParametersDataValidator.java    |   37 +-
 .../core/domain/AbstractAuditableCustom.java       |    7 +-
 .../core/domain/AbstractPersistableCustom.java     |   13 +-
 .../core/domain/Base64EncodedImage.java            |    2 +-
 .../infrastructure/core/domain/EmailDetail.java    |    2 +-
 .../core/domain/FineractPlatformTenant.java        |    6 +-
 .../domain/FineractPlatformTenantConnection.java   |   16 +-
 .../infrastructure/core/domain/JdbcSupport.java    |    2 +
 .../core/domain/LocalDateInterval.java             |    2 +-
 .../core/domain/MySQLDictionaryCustom.java         |   32 +-
 .../infrastructure/core/domain/Tenant.java         |    2 +-
 .../AbstractPlatformDomainRuleException.java       |    2 +-
 .../AbstractPlatformResourceNotFoundException.java |    2 +-
 ...bstractPlatformServiceUnavailableException.java |    2 +-
 .../GeneralPlatformDomainRuleException.java        |    2 +-
 .../core/exception/InvalidJsonException.java       |    2 +-
 .../core/exception/MultiException.java             |   20 +-
 .../PlatformApiDataValidationException.java        |    2 +-
 .../exception/PlatformDataIntegrityException.java  |    2 +-
 .../exception/PlatformInternalServerException.java |    2 +-
 .../exception/UnrecognizedQueryParamException.java |    2 +-
 .../exception/UnsupportedParameterException.java   |    2 +-
 .../AccessDeniedExceptionMapper.java               |    2 +-
 .../BadCredentialsExceptionMapper.java             |    2 +-
 .../InvalidJsonExceptionMapper.java                |    2 +-
 .../InvalidTenantIdentifierExceptionMapper.java    |    2 +-
 .../exceptionmapper/JsonSyntaxExceptionMapper.java |    2 +-
 .../MalformedJsonExceptionMapper.java              |    2 +-
 .../NoAuthorizationExceptionMapper.java            |    2 +-
 .../PlatformApiDataValidationExceptionMapper.java  |    6 +-
 .../PlatformDataIntegrityExceptionMapper.java      |    7 +-
 .../PlatformDomainRuleExceptionMapper.java         |    2 +-
 .../PlatformInternalServerExceptionMapper.java     |    2 +-
 .../PlatformResourceNotFoundExceptionMapper.java   |    2 +-
 .../UnAuthenticatedUserExceptionMapper.java        |    2 +-
 .../UnrecognizedQueryParamExceptionMapper.java     |    6 +-
 .../UnsupportedCommandExceptionMapper.java         |   10 +-
 .../UnsupportedParameterExceptionMapper.java       |   10 +-
 .../core/filters/ResponseCorsFilter.java           |    5 +-
 .../AbstractFromApiJsonDeserializer.java           |    2 +-
 .../AbstractFromCommandJsonDeserializer.java       |    2 +-
 .../ApiRequestJsonSerializationSettings.java       |    2 +-
 .../CommandProcessingResultJsonSerializer.java     |    2 +-
 .../core/serialization/CommandSerializer.java      |    2 +-
 .../CommandSerializerDefaultToJson.java            |    2 +-
 .../DatatableCommandFromApiJsonDeserializer.java   |   32 +-
 .../serialization/DefaultToApiJsonSerializer.java  |    8 +-
 ...hPrettyPrintingOffJsonSerializerGoogleGson.java |    2 +-
 ...thPrettyPrintingOnJsonSerializerGoogleGson.java |    2 +-
 .../serialization/FromApiJsonDeserializer.java     |    2 +-
 .../serialization/FromCommandJsonDeserializer.java |    2 +-
 .../core/serialization/FromJsonHelper.java         |    5 +-
 .../serialization/GoogleGsonSerializerHelper.java  |    7 +-
 .../core/serialization/JsonParserHelper.java       |   91 +-
 .../core/serialization/ToApiJsonSerializer.java    |    2 +-
 ...AbandonedConnectionCleanupShutdownListener.java |   19 +-
 .../infrastructure/core/service/DateUtils.java     |    4 +-
 .../service/GmailBackedPlatformEmailService.java   |   21 +-
 .../fineract/infrastructure/core/service/Page.java |    2 +-
 .../core/service/PlatformEmailService.java         |    3 +-
 .../core/service/RoutingDataSource.java            |    2 +-
 .../core/service/RoutingDataSourceService.java     |    2 +-
 .../core/service/SearchParameters.java             |   33 +-
 .../core/service/TenantDatabaseUpgradeService.java |   93 +-
 .../core/service/ThreadLocalContextUtil.java       |    2 +-
 .../TomcatJdbcDataSourcePerTenantService.java      |   21 +-
 .../api/CreditBureauConfigurationAPI.java          |   37 +-
 .../data/CreditBureauConfigurationData.java        |    9 +-
 .../creditbureau/data/CreditBureauData.java        |   11 +-
 .../data/CreditBureauLoanProductMappingData.java   |   17 +-
 .../creditbureau/data/CreditBureauProduct.java     |    3 +-
 .../data/OrganisationCreditBureauData.java         |   14 +-
 .../creditbureau/domain/CreditBureau.java          |    1 -
 .../domain/CreditBureauConfiguration.java          |    1 +
 .../domain/CreditBureauLoanProductMapping.java     |   49 +-
 .../domain/CreditBureauRepository.java             |    4 +-
 .../domain/OrganisationCreditBureau.java           |    2 -
 ...editBureauLoanProductMappingCommandHandler.java |    3 +-
 ...editBureauLoanProductMappingCommandHandler.java |    3 +-
 ...CreditBureauCommandFromApiJsonDeserializer.java |   33 +-
 ...uLoanProductCommandFromApiJsonDeserializer.java |   89 +-
 ...uLoanProductMappingReadPlatformServiceImpl.java |    5 +-
 ...LoanProductMappingWritePlatformServiceImpl.java |    6 +-
 .../CreditBureauReadConfigurationServiceImpl.java  |   10 +-
 .../CreditBureauReadPlatformServiceImpl.java       |    7 +-
 ...rganisationCreditBureauReadPlatformService.java |    1 +
 ...isationCreditBureauReadPlatformServiceImpl.java |   11 +-
 ...ationCreditBureauWritePlatflormServiceImpl.java |   12 +-
 .../dataqueries/api/DataTableApiConstant.java      |    4 +-
 .../dataqueries/api/DatatablesApiResource.java     |  138 +-
 .../api/DatatablesApiResourceSwagger.java          |   80 +-
 .../api/EntityDatatableChecksApiResource.java      |   48 +-
 .../EntityDatatableChecksApiResourceSwagger.java   |   20 +-
 .../dataqueries/api/ReportsApiResource.java        |   38 +-
 .../dataqueries/api/ReportsApiResourceSwagger.java |   25 +-
 .../dataqueries/api/RunreportsApiResource.java     |   43 +-
 .../api/RunreportsApiResourceSwagger.java          |    4 +
 .../dataqueries/data/DataTableValidator.java       |    3 +-
 .../dataqueries/data/DatatableData.java            |   13 +-
 .../data/EntityDataTableChecksData.java            |    2 +-
 .../data/EntityDataTableChecksTemplateData.java    |   29 +-
 .../dataqueries/data/EntityTables.java             |   46 +-
 .../dataqueries/data/GenericResultsetData.java     |    2 +-
 .../dataqueries/data/ReportData.java               |    2 +-
 .../dataqueries/data/ReportParameterData.java      |    2 +-
 .../dataqueries/data/ReportParameterJoinData.java  |    2 +-
 .../data/ResultsetColumnHeaderData.java            |   10 +-
 .../dataqueries/data/ResultsetColumnValueData.java |    2 +-
 .../dataqueries/data/StatusEnum.java               |    2 +-
 .../dataqueries/domain/EntityDatatableChecks.java  |    7 +-
 .../domain/EntityDatatableChecksRepository.java    |   14 +-
 .../infrastructure/dataqueries/domain/Report.java  |   17 +-
 .../dataqueries/domain/ReportParameter.java        |    2 +-
 .../domain/ReportParameterRepository.java          |    2 +-
 .../dataqueries/domain/ReportParameterUsage.java   |   41 +-
 .../domain/ReportParameterUsageRepository.java     |    6 +-
 .../dataqueries/domain/ReportRepository.java       |    2 +-
 .../domain/ReportRepositoryWrapper.java            |   15 +-
 .../exception/DatatableEntryRequiredException.java |    9 +-
 .../exception/DatatableNotFoundException.java      |    2 +-
 .../exception/DatatableSystemErrorException.java   |    2 +-
 ...EntityDatatableCheckAlreadyExistsException.java |   19 +-
 .../EntityDatatableCheckNotAllowException.java     |    8 +-
 .../EntityDatatableCheckNotSupportedException.java |    7 +-
 .../EntityDatatableChecksNotFoundException.java    |    5 +-
 .../exception/ReportNotFoundException.java         |    2 +-
 .../ReportParameterNotFoundException.java          |    2 +-
 .../handler/CreateDatatableCommandHandler.java     |    2 +-
 .../CreateDatatableEntryCommandHandler.java        |    2 +-
 .../CreateEntityDatatableChecksCommandHandler.java |    5 +-
 .../handler/CreateReportCommandHandler.java        |    2 +-
 .../handler/DeleteDatatableCommandHandler.java     |    2 +-
 .../DeleteEntityDatatableChecksCommandHandler.java |    5 +-
 ...eleteOneToManyDatatableEntryCommandHandler.java |    2 +-
 ...DeleteOneToOneDatatableEntryCommandHandler.java |    2 +-
 .../handler/DeleteReportCommandHandler.java        |    2 +-
 .../handler/RegisterDatatableCommandHandler.java   |    5 +-
 .../handler/UpdateDatatableCommandHandler.java     |    2 +-
 ...pdateOneToManyDatatableEntryCommandHandler.java |    6 +-
 ...UpdateOneToOneDatatableEntryCommandHandler.java |    6 +-
 .../handler/UpdateReportCommandHandler.java        |    2 +-
 .../ReportCommandFromApiJsonDeserializer.java      |    2 +-
 .../EntityDatatableChecksDataValidator.java        |   17 +-
 ...tityDatatableChecksReadPlatformServiceImpl.java |    2 +-
 .../service/EntityDatatableChecksReadService.java  |    2 +-
 .../EntityDatatableChecksWritePlatformService.java |   10 +-
 ...ityDatatableChecksWritePlatformServiceImpl.java |   17 +-
 .../dataqueries/service/GenericDataService.java    |    2 +-
 .../service/GenericDataServiceImpl.java            |   46 +-
 .../dataqueries/service/ReadReportingService.java  |   14 +-
 .../service/ReadReportingServiceImpl.java          |  178 +-
 .../service/ReadWriteNonCoreDataService.java       |    2 +-
 .../service/ReadWriteNonCoreDataServiceImpl.java   |  220 +-
 .../service/ReportWritePlatformService.java        |    2 +-
 .../service/ReportWritePlatformServiceImpl.java    |   14 +-
 .../api/DocumentManagementApiResource.java         |   85 +-
 .../api/DocumentManagementApiResourceSwagger.java  |   14 +-
 .../documentmanagement/api/ImagesApiResource.java  |   12 +-
 .../api/ImagesApiResourceSwagger.java              |    1 +
 .../command/DocumentCommand.java                   |    2 +-
 .../command/DocumentCommandValidator.java          |   12 +-
 .../contentrepository/ContentRepositoryUtils.java  |   19 +-
 .../FileSystemContentRepository.java               |    5 +-
 .../contentrepository/S3ContentRepository.java     |    5 +-
 .../documentmanagement/data/DocumentData.java      |    2 +-
 .../documentmanagement/data/ImageData.java         |    2 +-
 .../documentmanagement/domain/Document.java        |    2 +-
 .../domain/DocumentRepository.java                 |    2 +-
 .../documentmanagement/domain/Image.java           |    2 +-
 .../documentmanagement/domain/ImageRepository.java |    2 +-
 .../documentmanagement/domain/StorageType.java     |    1 +
 .../exception/ContentManagementException.java      |    8 +-
 .../exception/DocumentNotFoundException.java       |    4 +-
 ...idEntityTypeForDocumentManagementException.java |    2 +-
 .../service/DocumentReadPlatformService.java       |    2 +-
 .../service/DocumentReadPlatformServiceImpl.java   |    2 +-
 .../service/DocumentWritePlatformService.java      |    5 +-
 ...umentWritePlatformServiceJpaRepositoryImpl.java |   26 +-
 .../service/ImageReadPlatformService.java          |    2 +-
 .../service/ImageReadPlatformServiceImpl.java      |   11 +-
 ...ImageWritePlatformServiceJpaRepositoryImpl.java |   10 +-
 .../FineractEntityAccessConstants.java             |    9 +-
 .../api/FineractEntityApiResource.java             |    4 +-
 .../api/FineractEntityApiResourceConstants.java    |    4 +-
 .../data/FineractEntityAccessData.java             |    7 +-
 .../data/FineractEntityDataValidator.java          |   28 +-
 .../data/FineractEntityRelationData.java           |    2 +-
 .../data/FineractEntityToEntityMappingData.java    |    4 +-
 .../entityaccess/domain/FineractEntity.java        |    8 +-
 .../entityaccess/domain/FineractEntityAccess.java  |   36 +-
 .../domain/FineractEntityAccessRepository.java     |    3 +-
 .../FineractEntityAccessRepositoryWrapper.java     |    7 +-
 .../domain/FineractEntityAccessType.java           |   16 +-
 .../domain/FineractEntityRelation.java             |   33 +-
 .../domain/FineractEntityRelationRepository.java   |    2 +-
 .../FineractEntityRelationRepositoryWrapper.java   |   11 +-
 .../domain/FineractEntityToEntityMapping.java      |    7 +-
 .../FineractEntityToEntityMappingRepository.java   |    8 +-
 ...ractEntityToEntityMappingRepositoryWrapper.java |    6 +-
 .../entityaccess/domain/FineractEntityType.java    |   35 +-
 ...FineractEntityAccessConfigurationException.java |   11 +-
 .../FineractEntityAccessNotFoundException.java     |    6 +-
 ...ineractEntityMappingConfigurationException.java |    5 +-
 ...FineractEntityToEntityMappingDateException.java |    5 +-
 .../NotOfficeSpecificProductException.java         |    8 +-
 .../CreateEntityToEntityMappingCommandHandler.java |    2 +-
 .../UpdateEntityToEntityMappingCommandHandler.java |    2 +-
 .../service/FineractEntityAccessReadService.java   |    8 +-
 .../FineractEntityAccessReadServiceImpl.java       |   73 +-
 .../service/FineractEntityAccessUtil.java          |   76 +-
 .../service/FineractEntityAccessWriteService.java  |    4 +-
 .../FineractEntityAccessWriteServiceImpl.java      |   23 +-
 .../fineract/infrastructure/gcm/GcmConstants.java  |    4 +-
 .../gcm/api/DeviceRegistrationApiConstants.java    |    1 +
 .../gcm/api/DeviceRegistrationApiResource.java     |    2 +-
 .../gcm/domain/DeviceRegistration.java             |    3 +-
 .../gcm/domain/DeviceRegistrationData.java         |    9 +-
 .../gcm/domain/DeviceRegistrationRepository.java   |    8 +-
 .../DeviceRegistrationRepositoryWrapper.java       |    6 +-
 .../infrastructure/gcm/domain/Message.java         |   20 +-
 .../infrastructure/gcm/domain/MulticastResult.java |   12 +-
 .../gcm/domain/NotificationConfigurationData.java  |    8 +-
 .../fineract/infrastructure/gcm/domain/Result.java |    8 +-
 .../fineract/infrastructure/gcm/domain/Sender.java |  222 +-
 .../DeviceRegistrationNotFoundException.java       |   10 +-
 .../gcm/exception/InvalidRequestException.java     |    3 +-
 .../DeviceRegistrationReadPlatformServiceImpl.java |   35 +-
 ...DeviceRegistrationWritePlatformServiceImpl.java |   48 +-
 .../gcm/service/NotificationSenderService.java     |   36 +-
 .../infrastructure/hooks/api/HookApiConstants.java |   14 +-
 .../infrastructure/hooks/api/HookApiResource.java  |  104 +-
 .../hooks/api/HookApiResourceSwagger.java          |   30 +-
 .../fineract/infrastructure/hooks/data/Event.java  |    3 +-
 .../hooks/data/EventResultSetExtractor.java        |   20 +-
 .../fineract/infrastructure/hooks/data/Field.java  |   10 +-
 .../infrastructure/hooks/data/HookData.java        |   36 +-
 .../hooks/data/HookTemplateData.java               |    6 +-
 .../fineract/infrastructure/hooks/domain/Hook.java |    4 +-
 .../hooks/domain/HookConfiguration.java            |   10 +-
 .../hooks/domain/HookConfigurationRepository.java  |    7 +-
 .../hooks/domain/HookRepository.java               |    7 +-
 .../infrastructure/hooks/domain/HookResource.java  |    6 +-
 .../infrastructure/hooks/domain/HookTemplate.java  |    2 +-
 .../hooks/domain/HookTemplateRepository.java       |    4 +-
 .../infrastructure/hooks/event/HookEvent.java      |    3 +-
 .../hooks/exception/HookNotFoundException.java     |    9 +-
 .../exception/HookTemplateNotFoundException.java   |   10 +-
 .../hooks/handler/CreateHookCommandHandler.java    |    3 +-
 .../hooks/handler/DeleteHookCommandHandler.java    |    3 +-
 .../hooks/handler/UpdateHookCommandHandler.java    |    6 +-
 .../hooks/listener/FineractHookListener.java       |   17 +-
 .../hooks/processor/HookProcessor.java             |    4 +-
 .../hooks/processor/HookProcessorProvider.java     |    9 +-
 .../hooks/processor/ProcessorHelper.java           |   25 +-
 .../hooks/processor/TwilioHookProcessor.java       |   61 +-
 .../hooks/processor/WebHookProcessor.java          |   31 +-
 .../hooks/processor/WebHookService.java            |   22 +-
 .../HookCommandFromApiJsonDeserializer.java        |   74 +-
 .../hooks/service/HookReadPlatformService.java     |    2 +-
 .../hooks/service/HookReadPlatformServiceImpl.java |   69 +-
 .../HookWritePlatformServiceJpaRepositoryImpl.java |  153 +-
 .../jobs/annotation/CronMethodParser.java          |   14 +-
 .../jobs/api/SchedulerApiResource.java             |   16 +-
 .../jobs/api/SchedulerApiResourceSwagger.java      |    6 +-
 .../jobs/api/SchedulerJobApiConstants.java         |   17 +-
 .../jobs/api/SchedulerJobApiResource.java          |   45 +-
 .../jobs/api/SchedulerJobApiResourceSwagger.java   |   11 +-
 .../jobs/data/JobDetailDataValidator.java          |    6 +-
 .../jobs/data/JobDetailHistoryData.java            |    2 +-
 .../infrastructure/jobs/domain/JobParameter.java   |   15 +-
 .../jobs/domain/JobParameterRepository.java        |    2 +-
 .../jobs/domain/ScheduledJobDetailRepository.java  |    3 +-
 .../jobs/domain/ScheduledJobRunHistory.java        |    4 +-
 .../domain/ScheduledJobRunHistoryRepository.java   |    4 +-
 .../jobs/exception/JobNotFoundException.java       |    2 +-
 .../exception/OperationNotAllowedException.java    |    6 +-
 .../infrastructure/jobs/service/JobName.java       |   59 +-
 .../jobs/service/JobRegisterServiceImpl.java       |   26 +-
 ...dularWritePlatformServiceJpaRepositoryImpl.java |    4 +-
 .../jobs/service/SchedulerJobListener.java         |   14 +-
 .../service/SchedulerJobRunnerReadServiceImpl.java |   15 +-
 .../jobs/service/SchedulerServiceConstants.java    |    2 +-
 .../jobs/service/SchedulerTriggerListener.java     |    8 +-
 .../infrastructure/openjpa/OpenJpaDialect.java     |   38 +-
 .../openjpa/OpenJpaVendorAdapter.java              |   54 +-
 .../report/annotation/ReportService.java           |    2 +-
 .../provider/ReportingProcessServiceProvider.java  |    5 +-
 .../report/service/ReportingProcessService.java    |    2 +-
 .../ReportMailingJobConstants.java                 |   26 +-
 .../api/ReportMailingJobApiResource.java           |   98 +-
 .../api/ReportMailingJobApiResourceSwagger.java    |   41 +-
 .../api/ReportMailingJobRunHistoryApiResource.java |   28 +-
 ...portMailingJobRunHistoryApiResourceSwagger.java |    7 +-
 .../data/ReportMailingJobConfigurationData.java    |    1 +
 .../data/ReportMailingJobData.java                 |   34 +-
 .../ReportMailingJobEmailAttachmentFileFormat.java |   20 +-
 .../data/ReportMailingJobEmailData.java            |    1 +
 .../data/ReportMailingJobPreviousRunStatus.java    |    9 +-
 .../data/ReportMailingJobRunHistoryData.java       |    9 +-
 ...ortMailingJobStretchyReportParamDateOption.java |   32 +-
 .../data/ReportMailingJobTimelineData.java         |    4 +-
 .../reportmailingjob/domain/ReportMailingJob.java  |   97 +-
 .../domain/ReportMailingJobConfiguration.java      |    6 +-
 .../ReportMailingJobConfigurationRepository.java   |    4 +-
 .../ReportMailingJobEmailAttachmentFileFormat.java |   24 +-
 .../domain/ReportMailingJobRepository.java         |    4 +-
 .../domain/ReportMailingJobRepositoryWrapper.java  |   11 +-
 .../domain/ReportMailingJobRunHistory.java         |   11 +-
 .../ReportMailingJobRunHistoryRepository.java      |    3 +-
 ...rtMailingJobConfigurationNotFoundException.java |    7 +-
 .../ReportMailingJobNotFoundException.java         |    7 +-
 ...eportMailingJobRunHistoryNotFoundException.java |    8 +-
 .../CreateReportMailingJobCommandHandler.java      |    1 +
 .../DeleteReportMailingJobCommandHandler.java      |    1 +
 .../UpdateReportMailingJobCommandHandler.java      |    1 +
 .../reportmailingjob/helper/IPv4Helper.java        |   54 +-
 ...MailingJobConfigurationReadPlatformService.java |    1 +
 ...ingJobConfigurationReadPlatformServiceImpl.java |    5 +-
 .../service/ReportMailingJobEmailService.java      |    4 +-
 .../service/ReportMailingJobEmailServiceImpl.java  |   35 +-
 .../ReportMailingJobReadPlatformService.java       |    7 +-
 .../ReportMailingJobReadPlatformServiceImpl.java   |   29 +-
 ...ortMailingJobRunHistoryReadPlatformService.java |   10 +-
 ...ailingJobRunHistoryReadPlatformServiceImpl.java |   12 +-
 .../ReportMailingJobWritePlatformService.java      |    4 +
 .../ReportMailingJobWritePlatformServiceImpl.java  |  123 +-
 .../util/ReportMailingJobDateUtil.java             |   27 +-
 .../validation/ReportMailingJobValidator.java      |  151 +-
 .../security/api/AuthenticationApiResource.java    |   22 +-
 .../api/AuthenticationApiResourceSwagger.java      |    5 +-
 .../security/api/TwoFactorApiResource.java         |   24 +-
 .../api/TwoFactorConfigurationApiResource.java     |   16 +-
 .../security/api/UserDetailsApiResource.java       |   22 +-
 .../api/UserDetailsApiResourceSwagger.java         |    5 +-
 .../InvalidateTFAccessTokenCommandHandler.java     |   22 +-
 .../UpdateTwoFactorConfigCommandHandler.java       |    9 +-
 .../constants/TwoFactorConfigurationConstants.java |   20 +-
 .../security/data/AuthenticatedOauthUserData.java  |    2 +-
 .../security/data/AuthenticatedUserData.java       |    4 +-
 .../infrastructure/security/data/OTPMetadata.java  |    3 +-
 .../infrastructure/security/data/OTPRequest.java   |    7 +-
 .../security/data/PlatformRequestLog.java          |    2 +-
 .../data/TwoFactorConfigurationValidator.java      |   38 +-
 .../domain/BasicPasswordEncodablePlatformUser.java |    2 +-
 .../security/domain/OTPRequestRepository.java      |    1 -
 .../security/domain/PlatformUser.java              |    2 +-
 .../security/domain/PlatformUserRepository.java    |    2 +-
 .../security/domain/TFAccessToken.java             |   13 +-
 .../security/domain/TFAccessTokenRepository.java   |    2 +-
 .../security/domain/TwoFactorConfiguration.java    |   11 +-
 .../domain/TwoFactorConfigurationRepository.java   |    4 +-
 .../exception/ForcePasswordResetException.java     |    5 +-
 .../exception/InvalidTenantIdentiferException.java |    2 +-
 .../exception/NoAuthorizationException.java        |    2 +-
 .../OTPDeliveryMethodInvalidException.java         |    4 +-
 .../security/exception/ResetPasswordException.java |    5 +-
 .../InsecureTwoFactorAuthenticationFilter.java     |   13 +-
 .../TenantAwareBasicAuthenticationFilter.java      |   20 +-
 .../filter/TenantAwareTenantIdentifierFilter.java  |   23 +-
 .../filter/TwoFactorAuthenticationFilter.java      |   58 +-
 .../service/BasicAuthTenantDetailsService.java     |    2 +-
 .../service/BasicAuthTenantDetailsServiceJdbc.java |    6 +-
 .../security/service/JdbcTenantDetailsService.java |    2 +-
 .../security/service/PlatformPasswordEncoder.java  |    2 +-
 .../security/service/PlatformSecurityContext.java  |    2 +-
 .../service/PlatformUserDetailsService.java        |    2 +-
 .../security/service/RandomOTPGenerator.java       |    2 +-
 .../security/service/RandomPasswordGenerator.java  |    2 +-
 .../SpringSecurityPlatformSecurityContext.java     |   19 +-
 .../TenantAwareJpaPlatformUserDetailsService.java  |    2 +-
 .../security/service/TenantDetailsService.java     |    2 +-
 .../service/TwoFactorConfigurationService.java     |   11 +-
 .../service/TwoFactorConfigurationServiceImpl.java |   88 +-
 .../security/service/TwoFactorServiceImpl.java     |   85 +-
 .../security/service/TwoFactorUtils.java           |    8 +-
 .../security/utils/ColumnValidator.java            |   80 +-
 .../infrastructure/security/utils/SQLBuilder.java  |  102 +-
 .../security/utils/SQLInjectionValidator.java      |   66 +-
 .../security/vote/SelfServiceUserAccessVote.java   |   11 +-
 .../infrastructure/sms/SmsApiConstants.java        |    2 +-
 .../infrastructure/sms/api/SmsApiResource.java     |    6 +-
 .../fineract/infrastructure/sms/data/SmsData.java  |    2 +-
 .../infrastructure/sms/data/SmsDataValidator.java  |    9 +-
 .../sms/data/SmsMessageApiQueueResourceData.java   |    1 +
 .../sms/data/SmsMessageApiReportResourceData.java  |    5 +-
 .../sms/data/SmsMessageApiResponseData.java        |    1 +
 .../sms/data/SmsMessageDeliveryReportData.java     |    8 +-
 .../infrastructure/sms/domain/SmsMessage.java      |   22 +-
 .../sms/domain/SmsMessageAssembler.java            |    6 +-
 .../sms/domain/SmsMessageEnumerations.java         |   10 +-
 .../sms/domain/SmsMessageRepository.java           |    2 +-
 .../sms/domain/SmsMessageStatusType.java           |    5 +-
 .../sms/exception/SmsNotFoundException.java        |    2 +-
 .../sms/handler/CreateSmsCommandHandler.java       |    2 +-
 .../sms/handler/DeleteSmsCommandHandler.java       |    2 +-
 .../sms/handler/UpdateSmsCommandHandler.java       |    2 +-
 .../scheduler/SmsMessageScheduledJobService.java   |   13 +-
 .../SmsMessageScheduledJobServiceImpl.java         |   97 +-
 .../sms/service/SmsReadPlatformServiceImpl.java    |   16 +-
 .../sms/service/SmsWritePlatformService.java       |    2 +-
 .../SmsWritePlatformServiceJpaRepositoryImpl.java  |   11 +-
 .../survey/api/PovertyLineApiResource.java         |    3 +-
 .../survey/api/SurveyApiConstants.java             |    3 +-
 .../survey/api/SurveyApiResource.java              |   22 +-
 .../survey/api/SurveyApiResourceSwagger.java       |   15 +-
 .../survey/data/LikelihoodDataValidator.java       |    6 +-
 .../survey/data/LikelihoodStatus.java              |    4 +-
 .../survey/data/PovertyLineData.java               |    5 +-
 .../survey/data/PpiPovertyLineData.java            |    5 +-
 .../infrastructure/survey/data/SurveyData.java     |    3 +-
 .../survey/domain/LikelihoodRepository.java        |    6 +-
 .../handler/FullFilSurveyCommandHandler.java       |    3 +-
 .../handler/RegisterSurveyCommandHandler.java      |    1 -
 .../handler/UpdateLikelihoodCommandHandler.java    |    1 -
 .../survey/service/PovertyLineServiceImpl.java     |   18 +-
 .../survey/service/ReadLikelihoodService.java      |    1 +
 .../survey/service/ReadSurveyServiceImpl.java      |   22 +-
 .../survey/service/WriteLikelihoodServiceImpl.java |    4 +-
 .../interoperation/api/InteropApiResource.java     |  217 +-
 .../interoperation/api/InteropWrapperBuilder.java  |    4 +-
 .../interoperation/data/ExtensionData.java         |    8 +-
 .../fineract/interoperation/data/GeoCodeData.java  |    8 +-
 .../interoperation/data/InteropAccountData.java    |   62 +-
 .../data/InteropIdentifierAccountResponseData.java |    7 +-
 .../data/InteropIdentifierRequestData.java         |   15 +-
 .../data/InteropIdentifiersResponseData.java       |    3 +-
 .../data/InteropQuoteRequestData.java              |   38 +-
 .../data/InteropQuoteResponseData.java             |   24 +-
 .../interoperation/data/InteropRequestData.java    |   36 +-
 .../interoperation/data/InteropResponseData.java   |   15 +-
 .../data/InteropTransactionData.java               |   60 +-
 .../data/InteropTransactionRequestData.java        |   31 +-
 .../InteropTransactionRequestResponseData.java     |   20 +-
 .../data/InteropTransactionTypeData.java           |   23 +-
 .../data/InteropTransactionsData.java              |    5 +-
 .../data/InteropTransferRequestData.java           |   21 +-
 .../data/InteropTransferResponseData.java          |   19 +-
 .../fineract/interoperation/data/MoneyData.java    |   12 +-
 .../interoperation/domain/InteropActionState.java  |    3 +-
 .../interoperation/domain/InteropAmountType.java   |    3 +-
 .../interoperation/domain/InteropIdentifier.java   |   33 +-
 .../domain/InteropIdentifierRepository.java        |    3 +-
 .../domain/InteropIdentifierType.java              |    9 +-
 .../domain/InteropInitiatorType.java               |    5 +-
 .../domain/InteropTransactionRole.java             |    5 +-
 .../domain/InteropTransactionScenario.java         |    6 +-
 .../domain/InteropTransferActionType.java          |    4 +-
 .../handler/CommitInteropTransferHandler.java      |    2 +-
 .../handler/CreateInteropIdentifierHandler.java    |    2 +-
 .../handler/CreateInteropQuoteHandler.java         |    2 +-
 .../handler/CreateInteropRequestHandler.java       |    2 +-
 .../handler/DeleteInteropIdentifierHandler.java    |    2 +-
 .../handler/PrepareInteropTransferHandler.java     |    2 +-
 .../serialization/InteropDataValidator.java        |   13 +-
 .../interoperation/service/InteropService.java     |   12 +-
 .../interoperation/service/InteropServiceImpl.java |  126 +-
 .../fineract/interoperation/util/MathUtil.java     |  118 +-
 .../fineract/mix/api/MixReportApiResource.java     |    8 +-
 .../fineract/mix/api/MixTaxonomyApiResource.java   |   12 +-
 .../mix/api/MixTaxonomyMappingApiResource.java     |    6 +-
 .../apache/fineract/mix/data/MixTaxonomyData.java  |    2 +-
 .../fineract/mix/data/MixTaxonomyMappingData.java  |    2 +-
 .../apache/fineract/mix/data/NamespaceData.java    |    2 +-
 .../org/apache/fineract/mix/data/XBRLData.java     |    2 +-
 .../mix/domain/MixTaxonomyMappingRepository.java   |    5 +-
 .../MixTaxonomyMappingReadPlatformServiceImpl.java |    2 +-
 .../MixTaxonomyReadPlatformServiceImpl.java        |    2 +-
 .../service/NamespaceReadPlatformServiceImpl.java  |    2 +-
 .../apache/fineract/mix/service/XBRLBuilder.java   |    5 +-
 .../fineract/mix/service/XBRLResultService.java    |    2 +-
 .../mix/service/XBRLResultServiceImpl.java         |   73 +-
 .../notification/api/NotificationApiResource.java  |   30 +-
 .../cache/CacheNotificationResponseHeader.java     |    4 +-
 .../config/MessagingConfiguration.java             |   22 +-
 .../notification/data/NotificationData.java        |    3 +-
 .../fineract/notification/data/TopicData.java      |    6 +-
 .../fineract/notification/domain/Notification.java |    2 +-
 .../notification/domain/NotificationMapper.java    |    1 -
 .../domain/NotificationRepository.java             |    1 -
 .../apache/fineract/notification/domain/Topic.java |    3 +-
 .../notification/domain/TopicRepository.java       |    2 +
 .../notification/domain/TopicSubscriber.java       |    3 +-
 .../domain/TopicSubscriberRepository.java          |    1 +
 .../NotificationEventListener.java                 |   19 +-
 .../eventandlistener/NotificationEventService.java |    1 +
 .../eventandlistener/SpringEventListener.java      |   19 +-
 .../eventandlistener/SpringEventPublisher.java     |    1 +
 .../service/NotificationDomainServiceImpl.java     |  327 +-
 ...NotificationGeneratorReadRepositoryWrapper.java |    2 -
 ...ficationGeneratorReadRepositoryWrapperImpl.java |    2 +-
 .../NotificationGeneratorWritePlatformService.java |    2 +-
 .../NotificationMapperReadRepositoryWrapper.java   |    1 -
 .../NotificationMapperWritePlatformService.java    |    1 -
 .../NotificationReadPlatformServiceImpl.java       |   53 +-
 .../service/NotificationWritePlatformService.java  |    9 +-
 .../NotificationWritePlatformServiceImpl.java      |   49 +-
 .../notification/service/TopicDomainService.java   |   18 +-
 .../service/TopicDomainServiceImpl.java            |   36 +-
 .../TopicSubscriberReadPlatformServiceImpl.java    |    2 +-
 ...riberWritePlatformServiceJpaRepositoryImpl.java |    2 +-
 .../holiday/api/HolidaysApiResource.java           |   58 +-
 .../holiday/api/HolidaysApiResourceSwagger.java    |   30 +-
 .../holiday/data/HolidayDataValidator.java         |   26 +-
 .../organisation/holiday/domain/Holiday.java       |   17 +-
 .../holiday/domain/HolidayRepositoryWrapper.java   |    3 +-
 .../holiday/domain/HolidayStatusType.java          |    2 +-
 .../holiday/domain/RescheduleType.java             |   35 +-
 .../exception/HolidayNotFoundException.java        |    2 +-
 .../holiday/service/HolidayEnumerations.java       |    4 +-
 .../service/HolidayReadPlatformServiceImpl.java    |    5 +-
 .../organisation/holiday/service/HolidayUtil.java  |    5 +-
 ...lidayWritePlatformServiceJpaRepositoryImpl.java |   27 +-
 .../monetary/api/CurrenciesApiResource.java        |   17 +-
 .../monetary/api/CurrenciesApiResourceSwagger.java |   29 +-
 .../data/ApplicationCurrencyConfigurationData.java |    2 +-
 .../organisation/monetary/data/CurrencyData.java   |   22 +-
 .../organisation/monetary/data/MoneyData.java      |    2 +-
 .../monetary/domain/ApplicationCurrency.java       |    2 +-
 .../domain/ApplicationCurrencyRepository.java      |    6 +-
 .../ApplicationCurrencyRepositoryWrapper.java      |    2 +-
 .../monetary/domain/MonetaryCurrency.java          |    2 +-
 .../organisation/monetary/domain/Money.java        |    6 +-
 .../organisation/monetary/domain/MoneyHelper.java  |    6 +-
 .../monetary/exception/CurrencyInUseException.java |    3 +-
 .../exception/CurrencyNotFoundException.java       |    2 +-
 .../OrganizationalCurrencyNotFoundException.java   |    6 +-
 .../handler/UpdateCurrencyCommandHandler.java      |    2 +-
 .../CurrencyCommandFromApiJsonDeserializer.java    |    8 +-
 .../service/CurrencyReadPlatformService.java       |    2 +-
 .../service/CurrencyReadPlatformServiceImpl.java   |    2 +-
 .../service/CurrencyWritePlatformService.java      |    2 +-
 ...rencyWritePlatformServiceJpaRepositoryImpl.java |    5 +-
 .../OrganisationCurrencyReadPlatformService.java   |    2 +-
 ...rganisationCurrencyReadPlatformServiceImpl.java |    2 +-
 .../office/api/OfficeTransactionsApiResource.java  |    8 +-
 .../office/api/OfficesApiResource.java             |   52 +-
 .../office/api/OfficesApiResourceSwagger.java      |   26 +-
 .../organisation/office/data/OfficeData.java       |   15 +-
 .../office/data/OfficeTransactionData.java         |    2 +-
 .../organisation/office/domain/Office.java         |    2 +-
 .../office/domain/OfficeRepositoryWrapper.java     |   11 +-
 .../office/domain/OfficeTransaction.java           |    5 +-
 .../office/domain/OrganisationCurrency.java        |    2 +-
 .../domain/OrganisationCurrencyRepository.java     |    4 +-
 .../OrganisationCurrencyRepositoryWrapper.java     |    2 +-
 .../office/exception/OfficeNotFoundException.java  |    2 +-
 .../OfficeTransactionNotFoundException.java        |    2 +-
 .../office/handler/CreateOfficeCommandHandler.java |    2 +-
 .../CreateOfficeTransactionCommandHandler.java     |    2 +-
 .../DeleteOfficeTransactionCommandHandler.java     |    2 +-
 .../office/handler/UpdateOfficeCommandHandler.java |    2 +-
 .../OfficeCommandFromApiJsonDeserializer.java      |   12 +-
 ...eTransactionCommandFromApiJsonDeserializer.java |    8 +-
 .../office/service/OfficeReadPlatformService.java  |    2 +-
 .../service/OfficeReadPlatformServiceImpl.java     |   17 +-
 .../office/service/OfficeWritePlatformService.java |    2 +-
 ...fficeWritePlatformServiceJpaRepositoryImpl.java |   17 +-
 .../api/ProvisioningCategoryApiResource.java       |    6 +-
 .../api/ProvisioningCriteriaApiResource.java       |   65 +-
 .../ProvisioningCriteriaApiResourceSwagger.java    |   22 +-
 .../constants/ProvisioningCriteriaConstants.java   |    1 +
 .../data/ProvisioningCategoryData.java             |    4 +-
 .../data/ProvisioningCriteriaData.java             |   18 +-
 .../data/ProvisioningCriteriaDefinitionData.java   |    8 +-
 .../domain/LoanProductProvisionCriteria.java       |    9 +-
 .../domain/ProvisioningCategoryRepository.java     |    4 +-
 .../provisioning/domain/ProvisioningCriteria.java  |   50 +-
 .../domain/ProvisioningCriteriaDefinition.java     |   11 +-
 .../ProvisioningCriteriaDefinitionRepository.java  |    4 +-
 .../domain/ProvisioningCriteriaRepository.java     |    4 +-
 ...ovisioningCriteriaCannotBeDeletedException.java |    3 +-
 ...eProvisioningCriteriaRequestCommandHandler.java |    5 +-
 ...eProvisioningCategoryRequestCommandHandler.java |    3 +-
 ...eProvisioningCriteriaRequestCommandHandler.java |    3 +-
 ...isioningCriteriaDefinitionJsonDeserializer.java |  117 +-
 .../ProvisioningCategoryReadPlatformService.java   |    3 +-
 ...rovisioningCategoryReadPlatformServiceImpl.java |    6 +-
 .../ProvisioningCategoryWritePlatformService.java  |    5 +-
 ...egoryWritePlatformServiceJpaRepositoryImpl.java |   17 +-
 .../service/ProvisioningCriteriaAssembler.java     |   31 +-
 .../ProvisioningCriteriaReadPlatformService.java   |    9 +-
 ...rovisioningCriteriaReadPlatformServiceImpl.java |   29 +-
 .../ProvisioningCriteriaWritePlatformService.java  |    5 +-
 ...teriaWritePlatformServiceJpaRepositoryImpl.java |   89 +-
 .../organisation/staff/api/StaffApiResource.java   |   60 +-
 .../staff/api/StaffApiResourceSwagger.java         |   16 +-
 .../staff/data/BulkTransferLoanOfficerData.java    |    2 +-
 .../data/StaffAccountSummaryCollectionData.java    |    2 +-
 .../organisation/staff/data/StaffData.java         |   17 +-
 .../staff/domain/StaffEnumerations.java            |    2 +-
 .../staff/domain/StaffOrganisationalRoleType.java  |    2 +-
 .../organisation/staff/domain/StaffRepository.java |    2 +-
 .../staff/domain/StaffRepositoryWrapper.java       |    9 +-
 .../staff/exception/StaffNotFoundException.java    |    2 +-
 .../staff/exception/StaffRoleException.java        |    5 +-
 .../staff/handler/CreateStaffCommandHandler.java   |    2 +-
 .../staff/handler/UpdateStaffCommandHandler.java   |    2 +-
 .../StaffCommandFromApiJsonDeserializer.java       |   20 +-
 .../staff/service/StaffReadPlatformService.java    |    2 +-
 .../service/StaffReadPlatformServiceImpl.java      |   94 +-
 .../staff/service/StaffWritePlatformService.java   |    2 +-
 ...StaffWritePlatformServiceJpaRepositoryImpl.java |   19 +-
 .../teller/api/CashierApiResource.java             |    6 +-
 .../organisation/teller/api/TellerApiResource.java |  133 +-
 .../teller/api/TellerApiResourceSwagger.java       |   49 +-
 .../teller/api/TellerJournalApiResource.java       |    6 +-
 .../organisation/teller/data/CashierData.java      |   99 +-
 .../teller/data/CashierTransactionData.java        |   40 +-
 .../data/CashierTransactionDataValidator.java      |   81 +-
 .../data/CashierTransactionTypeTotalsData.java     |   14 +-
 .../data/CashierTransactionsWithSummaryData.java   |   49 +-
 .../organisation/teller/data/TellerData.java       |   55 +-
 .../teller/data/TellerJournalData.java             |   38 +-
 .../teller/data/TellerTransactionData.java         |   38 +-
 .../organisation/teller/domain/Cashier.java        |   36 +-
 .../teller/domain/CashierRepository.java           |    3 +-
 .../teller/domain/CashierRepositoryWrapper.java    |    4 +-
 .../teller/domain/CashierTransaction.java          |   33 +-
 .../domain/CashierTransactionRepository.java       |    3 +-
 .../organisation/teller/domain/CashierTxnType.java |   39 +-
 .../organisation/teller/domain/Teller.java         |   28 +-
 .../organisation/teller/domain/TellerJournal.java  |    3 +-
 .../teller/domain/TellerRepository.java            |    4 +-
 .../teller/domain/TellerRepositoryWrapper.java     |    9 +-
 .../organisation/teller/domain/TellerStatus.java   |    7 +-
 .../teller/domain/TellerTransactionRepository.java |    6 +-
 .../teller/exception/CashierAlreadyAlloacated.java |    6 +-
 ...hierDateRangeOutOfTellerDateRangeException.java |    6 +-
 .../exception/CashierExistForTellerException.java  |    3 +-
 .../CashierInsufficientAmountException.java        |    6 +-
 .../teller/exception/CashierNotFoundException.java |    3 +-
 .../exception/InvalidDateInputException.java       |    7 +-
 .../teller/exception/TellerNotFoundException.java  |    3 +-
 .../AllocateCashToCashierCommandHandler.java       |    4 +-
 .../AllocateCashierToTellerCommandHandler.java     |    7 +-
 .../teller/handler/CreateTellerCommandHandler.java |    5 +-
 .../DeleteCashierAllocationCommandHandler.java     |    7 +-
 .../teller/handler/DeleteTellerCommandHandler.java |    4 +-
 .../handler/ModifyCashierCommandHandler.java       |    5 +-
 .../SettleCashFromCashierCommandHandler.java       |    4 +-
 .../UpdateCashierAllocationCommandHandler.java     |    7 +-
 .../teller/handler/UpdateTellerCommandHandler.java |    4 +-
 .../TellerCommandFromApiJsonDeserializer.java      |    8 +-
 .../service/CashierWritePlatformService.java       |    3 +-
 .../TellerManagementReadPlatformService.java       |    4 +-
 .../TellerManagementReadPlatformServiceImpl.java   |  148 +-
 .../TellerTransactionWritePlatformService.java     |    3 +-
 .../teller/service/TellerWritePlatformService.java |   32 +-
 .../service/TellerWritePlatformServiceJpaImpl.java |   59 +-
 .../organisation/teller/util/DateRange.java        |    5 +-
 .../workingdays/api/WorkingDaysApiConstants.java   |    8 +-
 .../workingdays/api/WorkingDaysApiResource.java    |   25 +-
 .../api/WorkingDaysApiResourceSwagger.java         |    9 +
 .../workingdays/data/AdjustedDateDetailsDTO.java   |    3 +-
 .../workingdays/data/WorkingDayValidator.java      |   16 +-
 .../workingdays/data/WorkingDaysData.java          |    6 +-
 .../domain/RepaymentRescheduleType.java            |    6 +-
 .../workingdays/domain/WorkingDays.java            |   22 +-
 .../domain/WorkingDaysEnumerations.java            |   33 +-
 .../domain/WorkingDaysRepositoryWrapper.java       |    2 +-
 .../exception/WorkingDaysNotFoundException.java    |    2 +-
 .../handler/UpdateWorkingDaysCommandHandler.java   |    4 +-
 .../WorkingDaysReadPlatformServiceImpl.java        |   15 +-
 .../workingdays/service/WorkingDaysUtil.java       |    3 +-
 .../portfolio/account/AccountDetailConstants.java  |    3 +-
 .../portfolio/account/PortfolioAccountType.java    |    2 +-
 .../account/api/AccountTransfersApiConstants.java  |    2 +-
 .../account/api/AccountTransfersApiResource.java   |   92 +-
 .../api/AccountTransfersApiResourceSwagger.java    |  141 +-
 .../api/StandingInstructionApiConstants.java       |    9 +-
 .../api/StandingInstructionApiResource.java        |  135 +-
 .../api/StandingInstructionApiResourceSwagger.java |  144 +-
 .../api/StandingInstructionHistoryApiResource.java |   38 +-
 ...andingInstructionHistoryApiResourceSwagger.java |   24 +-
 .../portfolio/account/data/AccountTransferDTO.java |   10 +-
 .../account/data/AccountTransferData.java          |    6 +-
 .../data/AccountTransfersDataValidator.java        |   42 +-
 .../data/AccountTransfersDetailDataValidator.java  |    6 +-
 .../account/data/StandingInstructionDTO.java       |    4 +-
 .../account/data/StandingInstructionData.java      |    7 +-
 .../data/StandingInstructionDataValidator.java     |  189 +-
 .../account/domain/AccountAssociationType.java     |    2 +-
 .../domain/AccountAssociationsRepository.java      |    7 +-
 .../account/domain/AccountTransferAssembler.java   |    2 +-
 .../domain/AccountTransferDetailAssembler.java     |    8 +-
 .../domain/AccountTransferDetailRepository.java    |    4 +-
 .../account/domain/AccountTransferDetails.java     |   13 +-
 .../domain/AccountTransferRecurrenceType.java      |    2 +-
 .../account/domain/AccountTransferRepository.java  |    6 +-
 .../domain/AccountTransferStandingInstruction.java |   28 +-
 .../account/domain/AccountTransferTransaction.java |   13 +-
 .../account/domain/AccountTransferType.java        |    2 +-
 .../domain/StandingInstructionAssembler.java       |    2 +-
 .../domain/StandingInstructionPriority.java        |    2 +-
 .../domain/StandingInstructionRepository.java      |   11 +-
 .../account/domain/StandingInstructionStatus.java  |    2 +-
 .../account/domain/StandingInstructionType.java    |    2 +-
 .../AccountTransferNotFoundException.java          |    2 +-
 .../StandingInstructionNotFoundException.java      |    2 +-
 .../CreateAccountTransferCommandHandler.java       |    2 +-
 .../handler/RefundByTransferCommandHandler.java    |    2 +-
 ...AccountAssociationsReadPlatformServiceImpl.java |   15 +-
 .../service/AccountTransferEnumerations.java       |    2 +-
 .../AccountTransfersReadPlatformService.java       |    9 +-
 .../AccountTransfersReadPlatformServiceImpl.java   |  433 +-
 .../AccountTransfersWritePlatformService.java      |    2 +-
 .../AccountTransfersWritePlatformServiceImpl.java  |   72 +-
 .../PortfolioAccountReadPlatformService.java       |    2 +-
 .../PortfolioAccountReadPlatformServiceImpl.java   |   57 +-
 ...ndingInstructionHistoryReadPlatformService.java |    2 +-
 ...gInstructionHistoryReadPlatformServiceImpl.java |    3 +-
 .../StandingInstructionReadPlatformService.java    |    2 +-
 ...StandingInstructionReadPlatformServiceImpl.java |   27 +-
 .../StandingInstructionWritePlatformService.java   |    2 +-
 ...tandingInstructionWritePlatformServiceImpl.java |   31 +-
 .../data/AccountSummaryCollectionData.java         |   39 +-
 .../data/GuarantorAccountSummaryData.java          |   10 +-
 .../data/LoanAccountSummaryData.java               |   19 +-
 .../data/SavingsAccountSummaryData.java            |   10 +-
 .../accountdetails/data/SavingsSummaryCustom.java  |   19 +-
 .../data/ShareAccountSummaryData.java              |   23 +-
 .../accountdetails/domain/AccountType.java         |    7 +-
 .../service/AccountDetailsReadPlatformService.java |    2 +-
 ...etailsReadPlatformServiceJpaRepositoryImpl.java |  317 +-
 .../service/AccountEnumerations.java               |    3 +-
 .../accounts/api/AccountsApiResource.java          |  150 +-
 .../accounts/api/AccountsApiResourceSwagger.java   |  125 +-
 .../accounts/constants/AccountsApiConstants.java   |    5 +-
 .../constants/ShareAccountApiConstants.java        |   26 +-
 .../portfolio/accounts/data/AccountData.java       |    1 -
 .../exceptions/ShareAccountNotFoundException.java  |    5 +-
 .../accounts/service/AccountsCommandsService.java  |    3 +-
 .../api/EntityFieldConfigurationApiResources.java  |   23 +-
 ...ntityFieldConfigurationApiResourcesSwagger.java |    9 +-
 .../portfolio/address/data/AddressData.java        |   59 +-
 .../portfolio/address/data/ClientAddressData.java  |    4 +-
 .../address/data/FieldConfigurationData.java       |   13 +-
 .../fineract/portfolio/address/domain/Address.java |   21 +-
 .../exception/AddressNotFoundException.java        |    4 +-
 .../AddressCommandFromApiJsonDeserializer.java     |   24 +-
 .../service/AddressReadPlatformService.java        |    1 +
 .../service/AddressReadPlatformServiceImpl.java    |   36 +-
 .../service/AddressWritePlatformService.java       |    1 +
 .../service/AddressWritePlatformServiceImpl.java   |   40 +-
 .../FieldConfigurationReadPlatformService.java     |    1 +
 .../FieldConfigurationReadPlatformServiceImpl.java |   12 +-
 .../portfolio/calendar/CalendarConstants.java      |   15 +-
 .../calendar/api/CalendarsApiResource.java         |   16 +-
 .../portfolio/calendar/data/CalendarData.java      |  176 +-
 .../calendar/data/CalendarHistoryDataWrapper.java  |    8 +-
 .../portfolio/calendar/domain/Calendar.java        |   74 +-
 .../calendar/domain/CalendarFrequencyType.java     |   11 +-
 .../domain/CalendarInstanceRepository.java         |   14 +-
 .../domain/CalendarInstanceRepositoryWrapper.java  |    3 +-
 .../calendar/domain/CalendarRepositoryWrapper.java |    3 +-
 .../calendar/domain/CalendarWeekDaysType.java      |    8 +-
 .../calendar/exception/CalendarDateException.java  |    2 +-
 .../CalendarEntityTypeNotSupportedException.java   |    2 +-
 .../CalendarInstanceNotFoundException.java         |    5 +-
 .../exception/CalendarNotFoundException.java       |    2 +-
 ...lendarParameterUpdateNotSupportedException.java |    2 +-
 .../MeetingFrequencyMismatchException.java         |    5 +-
 .../exception/NotValidRecurringDateException.java  |    2 +-
 .../handler/DeleteCalendarCommandHandler.java      |    2 +-
 .../CalendarCommandFromApiJsonDeserializer.java    |  127 +-
 .../CalendarDropdownReadPlatformService.java       |    3 +-
 .../CalendarDropdownReadPlatformServiceImpl.java   |    1 +
 .../calendar/service/CalendarEnumerations.java     |   14 +-
 .../service/CalendarReadPlatformService.java       |    2 -
 .../service/CalendarReadPlatformServiceImpl.java   |   53 +-
 .../portfolio/calendar/service/CalendarUtils.java  |  122 +-
 ...endarWritePlatformServiceJpaRepositoryImpl.java |   90 +-
 .../portfolio/charge/api/ChargesApiResource.java   |   40 +-
 .../charge/api/ChargesApiResourceSwagger.java      |   61 +-
 .../fineract/portfolio/charge/data/ChargeData.java |   32 +-
 .../fineract/portfolio/charge/domain/Charge.java   |   83 +-
 .../portfolio/charge/domain/ChargeAppliesTo.java   |   15 +-
 .../charge/domain/ChargeCalculationType.java       |   17 +-
 .../portfolio/charge/domain/ChargePaymentMode.java |    2 +-
 .../portfolio/charge/domain/ChargeTimeType.java    |   17 +-
 ...eDueAtDisbursementCannotBePenaltyException.java |    2 +-
 .../exception/ChargeIsNotActiveException.java      |    2 +-
 .../exception/ChargeMustBePenaltyException.java    |    2 +-
 ...ChargeParameterUpdateNotSupportedException.java |    2 +-
 .../LoanChargeCannotBeAddedException.java          |    2 +-
 .../LoanChargeCannotBeDeletedException.java        |    9 +-
 .../LoanChargeCannotBePayedException.java          |    9 +-
 .../LoanChargeCannotBeUpdatedException.java        |    9 +-
 .../LoanChargeCannotBeWaivedException.java         |    5 +-
 .../exception/LoanChargeNotFoundException.java     |    2 +-
 .../LoanChargeWithoutMandatoryFieldException.java  |    2 +-
 ...avingsAccountChargeCannotBeWaivedException.java |    9 +-
 .../SavingsAccountChargeNotFoundException.java     |    7 +-
 ...ccountChargeWithoutMandatoryFieldException.java |    2 +-
 ...ccountChargeWithoutMandatoryFieldException.java |    2 +-
 .../CreateChargeDefinitionCommandHandler.java      |    2 +-
 .../DeleteChargeDefinitionCommandHandler.java      |    2 +-
 .../UpdateChargeDefinitionCommandHandler.java      |    2 +-
 ...geDefinitionCommandFromApiJsonDeserializer.java |   22 +-
 .../service/ChargeDropdownReadPlatformService.java |    6 +-
 .../ChargeDropdownReadPlatformServiceImpl.java     |    6 +-
 .../charge/service/ChargeEnumerations.java         |   23 +-
 .../charge/service/ChargeReadPlatformService.java  |    2 +-
 .../service/ChargeReadPlatformServiceImpl.java     |    4 +-
 ...hargeWritePlatformServiceJpaRepositoryImpl.java |   35 +-
 .../client/api/ClientAddressApiResources.java      |   65 +-
 .../api/ClientAddressApiResourcesSwagger.java      |   24 +-
 .../portfolio/client/api/ClientApiConstants.java   |   34 +-
 .../client/api/ClientChargesApiResource.java       |   74 +-
 .../api/ClientChargesApiResourceSwagger.java       |   44 +-
 .../api/ClientFamilyMembersApiResources.java       |   53 +-
 .../client/api/ClientIdentifiersApiResource.java   |   64 +-
 .../api/ClientIdentifiersApiResourceSwagger.java   |   40 +-
 .../client/api/ClientTransactionsApiResource.java  |   31 +-
 .../api/ClientTransactionsApiResourceSwagger.java  |   29 +-
 .../portfolio/client/api/ClientsApiResource.java   |  179 +-
 .../client/api/ClientsApiResourceSwagger.java      |  112 +-
 .../client/command/ClientIdentifierCommand.java    |   17 +-
 .../client/command/ClientNoteCommand.java          |    8 +-
 .../client/data/ClientApiCollectionConstants.java  |   33 +-
 .../fineract/portfolio/client/data/ClientData.java |  223 +-
 .../portfolio/client/data/ClientDataValidator.java |  148 +-
 .../client/data/ClientFamilyMembersData.java       |   50 +-
 .../client/data/ClientIdentifierData.java          |    5 +-
 .../portfolio/client/data/ClientNonPersonData.java |   19 +-
 .../portfolio/client/data/ClientTimelineData.java  |    2 +-
 .../client/domain/AccountNumberGenerator.java      |   10 +-
 .../fineract/portfolio/client/domain/Client.java   |   80 +-
 .../portfolio/client/domain/ClientAddress.java     |    6 +-
 .../client/domain/ClientAddressRepository.java     |    7 +-
 .../domain/ClientAddressRepositoryWrapper.java     |    8 +-
 .../domain/ClientChargeRepositoryWrapper.java      |    3 +-
 .../client/domain/ClientEnumerations.java          |    5 +-
 .../client/domain/ClientFamilyMembers.java         |  308 +-
 .../domain/ClientFamilyMembersRepository.java      |    3 +-
 .../portfolio/client/domain/ClientIdentifier.java  |   11 +-
 .../client/domain/ClientIdentifierRepository.java  |    2 +-
 .../client/domain/ClientIdentifierStatus.java      |   11 +-
 .../portfolio/client/domain/ClientNonPerson.java   |   22 +-
 .../client/domain/ClientNonPersonRepository.java   |    2 +-
 .../domain/ClientNonPersonRepositoryWrapper.java   |    8 +-
 .../portfolio/client/domain/ClientRepository.java  |    2 +-
 .../client/domain/ClientRepositoryWrapper.java     |   18 +-
 .../portfolio/client/domain/ClientStatus.java      |   14 +-
 .../portfolio/client/domain/ClientTransaction.java |    4 +-
 .../client/domain/ClientTransferDetails.java       |   17 +-
 .../domain/ClientTransferDetailsRepository.java    |    2 +-
 .../ClientTransferDetailsRepositoryWrapper.java    |    2 +-
 .../exception/ClientActiveForUpdateException.java  |    4 +-
 .../ClientIdentifierNotFoundException.java         |    2 +-
 .../ClientMustBePendingToBeDeletedException.java   |    6 +-
 ...ClientNonPersonNotFoundByClientIdException.java |    3 +-
 .../ClientNonPersonNotFoundException.java          |    3 +-
 .../client/exception/ClientNotFoundException.java  |    4 +-
 .../ClientTransactionCannotBeUndoneException.java  |    2 +-
 .../DuplicateClientIdentifierException.java        |   11 +-
 .../client/exception/ImageNotFoundException.java   |    2 +-
 .../handler/ActivateClientCommandHandler.java      |    2 +-
 .../handler/AddClientAddressCommandHandler.java    |    1 +
 .../AddClientFamilyMemberCommandHandler.java       |    9 +-
 .../client/handler/CloseClientCommandHandler.java  |    2 +-
 .../CreateClientIdentifierCommandHandler.java      |    2 +-
 .../client/handler/DeleteClientCommandHandler.java |    2 +-
 .../DeleteClientFamilyMemberCommandHandler.java    |    7 +-
 .../DeleteClientIdentifierCommandHandler.java      |    2 +-
 .../client/handler/RejectClientCommandHandler.java |    6 +-
 .../handler/UndoRejectClientCommandHandler.java    |   11 +-
 .../handler/UndoWithdrawalCommandHandler.java      |   13 +-
 .../client/handler/UpdateClientCommandHandler.java |    2 +-
 .../UpdateClientFamilyMemberCommandHandler.java    |    6 +-
 .../UpdateClientIdentifierCommandHandler.java      |    2 +-
 .../UpdateClientSavingsAccountCommandHandler.java  |    2 +-
 .../handler/WithdrawClientCommandHandler.java      |   21 +-
 ...FamilyMemberCommandFromApiJsonDeserializer.java |  202 +-
 ...ntIdentifierCommandFromApiJsonDeserializer.java |    4 +-
 .../ClientAddressReadPlatformServiceImpl.java      |    7 +-
 ...hargeWritePlatformServiceJpaRepositoryImpl.java |   11 +-
 .../ClientFamilyMembersReadPlatformService.java    |    3 +-
 ...ClientFamilyMembersReadPlatformServiceImpl.java |   55 +-
 .../ClientFamilyMembersWritePlatformService.java   |    7 +-
 ...lientFamilyMembersWritePlatformServiceImpl.java |  305 +-
 .../ClientIdentifierReadPlatformService.java       |    2 +-
 .../ClientIdentifierReadPlatformServiceImpl.java   |    6 +-
 .../ClientIdentifierWritePlatformService.java      |    2 +-
 ...ifierWritePlatformServiceJpaRepositoryImpl.java |   21 +-
 .../client/service/ClientReadPlatformService.java  |    2 +-
 .../service/ClientReadPlatformServiceImpl.java     |   99 +-
 .../client/service/ClientWritePlatformService.java |    3 +-
 ...lientWritePlatformServiceJpaRepositoryImpl.java |  183 +-
 .../portfolio/client/service/LoanStatusMapper.java |    2 +-
 .../collateral/api/CollateralApiConstants.java     |    4 +-
 .../collateral/api/CollateralsApiResource.java     |   60 +-
 .../api/CollateralsApiResourceSwagger.java         |   44 +-
 .../collateral/command/CollateralCommand.java      |   24 +-
 .../portfolio/collateral/data/CollateralData.java  |    2 +-
 .../collateral/domain/LoanCollateral.java          |   38 +-
 .../CollateralCannotBeCreatedException.java        |    9 +-
 .../CollateralCannotBeDeletedException.java        |    9 +-
 .../CollateralCannotBeUpdatedException.java        |    9 +-
 .../exception/CollateralNotFoundException.java     |    2 +-
 .../handler/CreateCollateralCommandHandler.java    |    2 +-
 .../handler/DeleteCollateralCommandHandler.java    |    2 +-
 .../handler/UpdateCollateralCommandHandler.java    |    2 +-
 .../CollateralCommandFromApiJsonDeserializer.java  |    5 +-
 .../service/CollateralReadPlatformServiceImpl.java |   12 +-
 .../service/CollateralWritePlatformService.java    |    2 +-
 ...teralWritePlatformServiceJpaRepositoryImpl.java |   29 +-
 .../collectionsheet/CollectionSheetConstants.java  |    2 +-
 .../api/CollectionSheetApiResourceSwagger.java     |   20 +-
 .../api/CollectionSheetApiResourse.java            |   15 +-
 .../CollectionSheetBulkDisbursalCommand.java       |    2 +-
 .../CollectionSheetBulkRepaymentCommand.java       |    2 +-
 .../command/SingleDisbursalCommand.java            |    2 +-
 .../command/SingleRepaymentCommand.java            |    2 +-
 .../CollectionSheetTransactionDataValidator.java   |  127 +-
 .../collectionsheet/data/IndividualClientData.java |    4 +-
 .../data/IndividualCollectionSheetData.java        |    2 +-
 .../IndividualCollectionSheetLoanFlatData.java     |    2 +-
 .../collectionsheet/data/JLGClientData.java        |   22 +-
 .../data/JLGCollectionSheetData.java               |    2 +-
 .../data/JLGCollectionSheetFlatData.java           |    8 +-
 .../collectionsheet/data/JLGGroupData.java         |   10 +-
 .../collectionsheet/data/LoanDueData.java          |    2 +-
 .../collectionsheet/data/SavingsDueData.java       |    5 +-
 ...ulkDisbursalCommandFromApiJsonDeserializer.java |    6 +-
 ...ulkRepaymentCommandFromApiJsonDeserializer.java |   11 +-
 ...heetGenerateCommandFromApiJsonDeserializer.java |   16 +-
 .../CollectionSheetReadPlatformServiceImpl.java    |  160 +-
 ...SheetWritePlatformServiceJpaRepositoryImpl.java |    6 +-
 .../common/BusinessEventNotificationConstants.java |   61 +-
 .../portfolio/common/domain/DayOfWeekType.java     |   12 +-
 .../portfolio/common/domain/DaysInMonthType.java   |    3 +-
 .../portfolio/common/domain/DaysInYearType.java    |    2 +-
 .../portfolio/common/domain/NthDayType.java        |   12 +-
 .../common/domain/PeriodFrequencyType.java         |    7 +-
 .../service/BusinessEventNotifierServiceImpl.java  |    6 +-
 .../common/service/CommonEnumerations.java         |   28 +-
 .../service/DropdownReadPlatformServiceImpl.java   |    2 +-
 .../api/FloatingRatesApiResource.java              |   81 +-
 .../api/FloatingRatesApiResourceSwagger.java       |   40 +-
 .../floatingrates/data/FloatingRateData.java       |   30 +-
 .../floatingrates/data/FloatingRatePeriodData.java |   25 +-
 .../floatingrates/data/InterestRatePeriodData.java |    9 +-
 .../floatingrates/domain/FloatingRate.java         |   97 +-
 .../floatingrates/domain/FloatingRatePeriod.java   |   22 +-
 .../domain/FloatingRateRepository.java             |   12 +-
 .../domain/FloatingRateRepositoryWrapper.java      |    6 +-
 .../exception/FloatingRateNotFoundException.java   |    6 +-
 .../handler/CreateFloatingRateCommandHandler.java  |    6 +-
 .../handler/UpdateFloatingRateCommandHandler.java  |    6 +-
 .../serialization/FloatingRateDataValidator.java   |  226 +-
 .../FloatingRateWritePlatformServiceImpl.java      |   57 +-
 .../FloatingRatesReadPlatformServiceImpl.java      |  169 +-
 .../portfolio/fund/api/FundsApiResource.java       |   26 +-
 .../fund/api/FundsApiResourceSwagger.java          |   24 +-
 .../fineract/portfolio/fund/data/FundData.java     |    2 +-
 .../fineract/portfolio/fund/domain/Fund.java       |    2 +-
 .../portfolio/fund/domain/FundRepository.java      |    2 +-
 .../fund/exception/FundNotFoundException.java      |    2 +-
 .../fund/handler/CreateFundCommandHandler.java     |    2 +-
 .../fund/handler/UpdateFundCommandHandler.java     |    2 +-
 .../FundCommandFromApiJsonDeserializer.java        |    8 +-
 .../fund/service/FundReadPlatformService.java      |    2 +-
 .../fund/service/FundReadPlatformServiceImpl.java  |    2 +-
 .../fund/service/FundWritePlatformService.java     |    2 +-
 .../FundWritePlatformServiceJpaRepositoryImpl.java |   21 +-
 .../portfolio/group/api/CentersApiResource.java    |  127 +-
 .../group/api/CentersApiResourceSwagger.java       |   97 +-
 .../group/api/GroupingTypesApiConstants.java       |   28 +-
 .../portfolio/group/api/GroupsApiResource.java     |  277 +-
 .../group/api/GroupsApiResourceSwagger.java        |  147 +-
 .../group/api/GroupsLevelApiResource.java          |    6 +-
 .../fineract/portfolio/group/data/CenterData.java  |   92 +-
 .../portfolio/group/data/GroupGeneralData.java     |  179 +-
 .../portfolio/group/data/GroupLevelData.java       |    2 +-
 .../portfolio/group/data/GroupRoleData.java        |   14 +-
 .../portfolio/group/data/GroupSummary.java         |    2 +-
 .../portfolio/group/data/GroupTimelineData.java    |   34 +-
 .../fineract/portfolio/group/domain/Group.java     |   27 +-
 .../portfolio/group/domain/GroupLevel.java         |    2 +-
 .../group/domain/GroupRepositoryWrapper.java       |    7 +-
 .../group/domain/GroupRoleRepositoryWrapper.java   |    3 +-
 .../group/domain/GroupingTypeEnumerations.java     |    2 +-
 .../portfolio/group/domain/GroupingTypeStatus.java |    2 +-
 .../exception/ClientExistInGroupException.java     |    4 +-
 .../exception/GroupExistsInCenterException.java    |    6 +-
 ...pMemberCountNotInPermissibleRangeException.java |    5 +-
 .../GroupMemberNotFoundInGSIMException.java        |   11 +-
 .../GroupMustBePendingToBeDeletedException.java    |    2 +-
 .../exception/GroupNotExistsInCenterException.java |    2 +-
 .../handler/ActivateCenterCommandHandler.java      |    2 +-
 .../group/handler/ActivateGroupCommandHandler.java |    2 +-
 .../AssociateClientsToGroupCommandHandler.java     |    2 +-
 .../group/handler/CreateCenterCommandHandler.java  |    2 +-
 .../group/handler/CreateGroupCommandHandler.java   |    2 +-
 .../group/handler/DeleteCenterCommandHandler.java  |    2 +-
 .../group/handler/DeleteGroupCommandHandler.java   |    2 +-
 ...DisassociateClientsFromGroupCommandHandler.java |    2 +-
 .../SaveCenterCollectionSheetCommandHandler.java   |    2 +-
 .../SaveGroupCollectionSheetCommandHandler.java    |    2 +-
 .../handler/UnassignGroupStaffCommandHandler.java  |    2 +-
 .../UnassignStaffFromCenterCommandHandler.java     |    2 +-
 .../group/handler/UpdateCenterCommandHandler.java  |    2 +-
 .../group/handler/UpdateGroupCommandHandler.java   |    2 +-
 .../serialization/GroupRolesDataValidator.java     |    6 +-
 .../serialization/GroupingTypesDataValidator.java  |  105 +-
 .../group/service/AllGroupTypesDataMapper.java     |    4 +-
 .../service/CenterReadPlatformServiceImpl.java     |   73 +-
 .../group/service/GroupReadPlatformService.java    |    2 +-
 .../service/GroupReadPlatformServiceImpl.java      |   98 +-
 ...TypesWritePlatformServiceJpaRepositoryImpl.java |   76 +-
 .../InterestIncentiveApiConstants.java             |    6 +-
 .../InterestRateChartApiConstants.java             |   24 +-
 .../InterestRateChartSlabApiConstants.java         |    2 +-
 .../api/InterestRateChartSlabsApiResource.java     |   60 +-
 .../InterestRateChartSlabsApiResourceSwagger.java  |   52 +-
 .../api/InterestRateChartsApiResource.java         |   59 +-
 .../api/InterestRateChartsApiResourceSwagger.java  |   45 +-
 .../data/InterestIncentiveDataValidator.java       |   10 +-
 .../data/InterestRateChartData.java                |   31 +-
 .../data/InterestRateChartDataValidator.java       |   23 +-
 .../data/InterestRateChartRepository.java          |    2 +-
 .../data/InterestRateChartRepositoryWrapper.java   |    3 +-
 .../data/InterestRateChartSlabData.java            |    2 +-
 .../data/InterestRateChartSlabDataValidator.java   |   18 +-
 .../data/InterestRateChartSlabRepository.java      |    5 +-
 .../InterestRateChartSlabRepositoryWrapper.java    |   10 +-
 .../domain/InterestIncentivesFields.java           |    6 +-
 .../domain/InterestRateChart.java                  |   57 +-
 .../domain/InterestRateChartFields.java            |    5 +-
 .../domain/InterestRateChartSlab.java              |    6 +-
 .../domain/InterestRateChartSlabFields.java        |    8 +-
 .../InterestRateChartNotFoundException.java        |    2 +-
 .../InterestRateChartSlabNotFoundException.java    |    6 +-
 .../CreateInterestRateChartCommandHandler.java     |    2 +-
 .../CreateInterestRateChartSlabCommandHandler.java |    2 +-
 .../DeleteInterestRateChartCommandHandler.java     |    2 +-
 .../DeleteInterestRateChartSlabCommandHandler.java |    4 +-
 .../UpdateInterestRateChartCommandHandler.java     |    2 +-
 .../UpdateInterestRateChartSlabCommandHandler.java |    4 +-
 .../incentive/InterestIncentiveAttributeName.java  |    2 +-
 .../incentive/InterestIncentiveEntityType.java     |    2 +-
 .../incentive/InterestIncentiveType.java           |    2 +-
 ...terestIncentiveDropdownReadPlatformService.java |    2 +-
 .../service/InterestIncentivesEnumerations.java    |    2 +-
 .../service/InterestRateChartAssembler.java        |    5 +-
 ...terestRateChartDropdownReadPlatformService.java |    2 +-
 ...stRateChartDropdownReadPlatformServiceImpl.java |    2 +-
 .../service/InterestRateChartEnumerations.java     |   16 +-
 .../InterestRateChartReadPlatformService.java      |    6 +-
 .../InterestRateChartReadPlatformServiceImpl.java  |   25 +-
 .../service/InterestRateChartSlabAssembler.java    |    9 +-
 .../InterestRateChartSlabReadPlatformService.java  |    2 +-
 ...terestRateChartSlabReadPlatformServiceImpl.java |   19 +-
 .../InterestRateChartSlabWritePlatformService.java |    2 +-
 ...tSlabWritePlatformServiceJpaRepositoryImpl.java |   10 +-
 .../InterestRateChartWritePlatformService.java     |    2 +-
 ...ChartWritePlatformServiceJpaRepositoryImpl.java |    2 +-
 .../loanaccount/api/BulkLoansApiResource.java      |    6 +-
 .../loanaccount/api/LoanApiConstants.java          |    8 +-
 .../loanaccount/api/LoanChargesApiResource.java    |  101 +-
 .../api/LoanChargesApiResourceSwagger.java         |   64 +-
 .../api/LoanDisbursementDetailApiResource.java     |   12 +-
 .../loanaccount/api/LoanScheduleApiResource.java   |   20 +-
 .../api/LoanScheduleApiResourceSwagger.java        |   16 +-
 .../api/LoanTransactionsApiResource.java           |   63 +-
 .../api/LoanTransactionsApiResourceSwagger.java    |   44 +-
 .../loanaccount/api/LoansApiResource.java          |  405 +-
 .../loanaccount/api/LoansApiResourceSwagger.java   |  136 +-
 .../loanaccount/command/LoanChargeCommand.java     |    2 +-
 .../loanaccount/command/LoanUpdateCommand.java     |    8 +-
 .../command/UndoStateTransitionCommand.java        |    2 +-
 .../command/UpdateLoanOfficerCommand.java          |   14 +-
 .../loanaccount/data/DisbursementData.java         |   39 +-
 .../portfolio/loanaccount/data/GLIMContainer.java  |   68 +-
 .../loanaccount/data/GlimRepaymentTemplate.java    |  118 +-
 .../GroupLoanIndividualMonitoringAccountData.java  |   40 +-
 .../loanaccount/data/LoanAccountData.java          |  453 +-
 .../data/LoanApplicationTimelineData.java          |   28 +-
 .../loanaccount/data/LoanApprovalData.java         |   22 +-
 .../portfolio/loanaccount/data/LoanChargeData.java |    3 +-
 .../loanaccount/data/LoanChargePaidByData.java     |    6 +-
 .../loanaccount/data/LoanChargePaidDetail.java     |    6 +-
 .../loanaccount/data/LoanConvenienceData.java      |    2 +-
 .../data/LoanInterestRecalculationData.java        |    3 +-
 .../loanaccount/data/LoanScheduleAccrualData.java  |   10 +-
 .../loanaccount/data/LoanStatusEnumData.java       |    2 +-
 .../loanaccount/data/LoanSummaryData.java          |    6 +-
 .../loanaccount/data/LoanTermVariationsData.java   |    4 +-
 .../data/LoanTermVariationsDataWrapper.java        |    6 +-
 .../loanaccount/data/LoanTransactionData.java      |  196 +-
 .../loanaccount/data/LoanTransactionEnumData.java  |    2 +-
 .../loanaccount/data/PaidInAdvanceData.java        |   15 +-
 .../data/RepaymentScheduleRelatedLoanData.java     |    9 +-
 .../loanaccount/data/ScheduleGeneratorDTO.java     |   13 +-
 .../domain/DefaultLoanLifecycleStateMachine.java   |    2 +-
 .../domain/GLIMAccountInfoRepository.java          |    9 +-
 .../GroupLoanIndividualMonitoringAccount.java      |  169 +-
 .../portfolio/loanaccount/domain/Loan.java         |  572 +--
 .../domain/LoanAccountDomainService.java           |    6 +-
 .../domain/LoanAccountDomainServiceJpa.java        |  105 +-
 .../portfolio/loanaccount/domain/LoanCharge.java   |   73 +-
 .../loanaccount/domain/LoanChargePaidBy.java       |    3 +-
 .../domain/LoanDisbursementDetails.java            |   11 +-
 .../loanaccount/domain/LoanInstallmentCharge.java  |    7 +-
 .../domain/LoanInterestRecalculationDetails.java   |   11 +-
 .../domain/LoanRepaymentDataComparator.java        |    2 +-
 .../domain/LoanRepaymentScheduleInstallment.java   |   54 +-
 ...LoanRepaymentScheduleInstallmentRepository.java |    4 +-
 .../LoanRepaymentScheduleProcessingWrapper.java    |   17 +-
 ...paymentScheduleTransactionProcessorFactory.java |    2 +-
 .../loanaccount/domain/LoanRepository.java         |    2 +-
 .../loanaccount/domain/LoanRepositoryWrapper.java  |  138 +-
 ...oanRescheduleRequestToTermVariationMapping.java |    5 +-
 .../portfolio/loanaccount/domain/LoanStatus.java   |    2 +-
 .../loanaccount/domain/LoanSubStatus.java          |    5 +-
 .../portfolio/loanaccount/domain/LoanSummary.java  |   17 +-
 .../loanaccount/domain/LoanSummaryWrapper.java     |   11 +-
 .../loanaccount/domain/LoanTermVariationType.java  |    8 +-
 .../loanaccount/domain/LoanTermVariations.java     |    6 +-
 .../loanaccount/domain/LoanTopupDetails.java       |   54 +-
 .../loanaccount/domain/LoanTrancheCharge.java      |   12 +-
 .../domain/LoanTrancheDisbursementCharge.java      |   10 +-
 .../loanaccount/domain/LoanTransaction.java        |  101 +-
 ...oanTransactionProcessingStrategyRepository.java |    6 +-
 .../domain/LoanTransactionRepository.java          |    2 +-
 .../LoanTransactionToRepaymentScheduleMapping.java |    6 +-
 .../loanaccount/domain/LoanTransactionType.java    |    9 +-
 ...tLoanRepaymentScheduleTransactionProcessor.java |   40 +-
 .../LoanRepaymentScheduleTransactionProcessor.java |    2 +-
 ...eLoanRepaymentScheduleTransactionProcessor.java |    9 +-
 ...tLoanRepaymentScheduleTransactionProcessor.java |    6 +-
 ...eLoanRepaymentScheduleTransactionProcessor.java |    9 +-
 ...yLoanRepaymentScheduleTransactionProcessor.java |    4 +-
 ...rLoanRepaymentScheduleTransactionProcessor.java |   13 +-
 ...rLoanRepaymentScheduleTransactionProcessor.java |   13 +-
 ...ILoanRepaymentScheduleTransactionProcessor.java |   22 +-
 .../exception/DateMismatchException.java           |   17 +-
 .../InvalidLoanStateTransitionException.java       |    2 +-
 .../InvalidLoanTransactionTypeException.java       |    2 +-
 .../exception/InvalidLoanTypeException.java        |    2 +-
 .../InvalidPaidInAdvanceAmountException.java       |    7 +-
 .../exception/InvalidRefundDateException.java      |    9 +-
 ...ttedAndPendingApprovalStateCannotBeDeleted.java |    6 +-
 ...tedAndPendingApprovalStateCannotBeModified.java |    6 +-
 .../exception/LoanDisbursalException.java          |    5 +-
 .../exception/LoanNotFoundException.java           |    2 +-
 .../LoanOfficerAssignmentDateException.java        |    3 +-
 .../exception/LoanOfficerAssignmentException.java  |    8 +-
 .../LoanTemplateTypeRequiredException.java         |    2 +-
 .../LoanTransactionNotFoundException.java          |    6 +-
 ...sactionProcessingStrategyNotFoundException.java |    6 +-
 ...sbursalAndFirstRepaymentViolationException.java |    6 +-
 .../NotSupportedLoanTemplateTypeException.java     |    2 +-
 .../UndoLastTrancheDisbursementException.java      |    6 +-
 .../loanaccount/guarantor/GuarantorConstants.java  |    8 +-
 .../guarantor/api/GuarantorsApiResource.java       |   31 +-
 .../guarantor/command/GuarantorCommand.java        |   32 +-
 .../loanaccount/guarantor/data/GuarantorData.java  |   39 +-
 .../guarantor/data/GuarantorFundingData.java       |    8 +-
 .../loanaccount/guarantor/data/ObligeeData.java    |   15 +-
 .../loanaccount/guarantor/domain/Guarantor.java    |   13 +-
 .../guarantor/domain/GuarantorFundStatusType.java  |    2 +-
 .../guarantor/domain/GuarantorFundingDetails.java  |    2 +-
 .../domain/GuarantorFundingRepository.java         |    4 +-
 .../GuarantorFundingTransactionRepository.java     |    6 +-
 .../guarantor/domain/GuarantorRepository.java      |    2 +-
 .../guarantor/domain/GuarantorType.java            |    1 +
 .../exception/GuarantorNotFoundException.java      |    6 +-
 .../exception/InvalidGuarantorException.java       |   12 +-
 .../handler/CreateGuarantorCommandHandler.java     |    2 +-
 .../handler/DeleteGuarantorCommandHandler.java     |    2 +-
 .../handler/UpdateGuarantorCommandHandler.java     |    2 +-
 .../GuarantorCommandFromApiJsonDeserializer.java   |   19 +-
 .../service/GuarantorDomainServiceImpl.java        |    7 +-
 .../service/GuarantorReadPlatformService.java      |    3 +-
 .../service/GuarantorReadPlatformServiceImpl.java  |   47 +-
 .../service/GuarantorWritePlatformService.java     |    2 +-
 ...ntorWritePlatformServiceJpaRepositoryIImpl.java |   37 +-
 ...AndDeleteLoanDisburseDetailsCommandHandler.java |    2 +-
 .../handler/AddLoanChargeCommandHandler.java       |    2 +-
 .../BulkUpdateLoanOfficerCommandHandler.java       |    2 +-
 .../CloseLoanAsRescheduledCommandHandler.java      |    2 +-
 .../handler/CloseLoanCommandHandler.java           |    2 +-
 .../handler/DeleteLoanChargeCommandHandler.java    |    2 +-
 .../handler/DisburseLoanCommandHandler.java        |    2 +-
 .../DisburseLoanToSavingsCommandHandler.java       |    2 +-
 .../GLIMApplicationRejectionCommandHandler.java    |   25 +-
 .../handler/GLIMBulkRepaymentCommandHandler.java   |    2 +-
 .../GLIMLoanApplicationApprovalCommandHandler.java |   20 +-
 .../GlimLoanApplicationDisburseCommandHandler.java |    5 +-
 .../LoanApplicationApprovalCommandHandler.java     |    2 +-
 .../LoanApplicationApprovalUndoCommandHandler.java |    2 +-
 .../LoanApplicationDeletionCommandHandler.java     |    2 +-
 .../LoanApplicationModificationCommandHandler.java |    2 +-
 .../LoanApplicationRejectedCommandHandler.java     |    2 +-
 .../LoanApplicationSubmittalCommandHandler.java    |    2 +-
 ...licationWithdrawnByApplicantCommandHandler.java |    2 +-
 .../handler/LoanRefundByCashCommandHandler.java    |    2 +-
 .../LoanRepaymentAdjustmentCommandHandler.java     |    2 +-
 .../handler/LoanRepaymentCommandHandler.java       |    2 +-
 .../handler/PayLoanChargeCommandHandler.java       |    2 +-
 .../handler/RemoveLoanOfficerCommandHandler.java   |    2 +-
 .../handler/UndoDisbursalLoanCommandHandler.java   |    2 +-
 .../handler/UndoGLIMLoanApplicationApproval.java   |   25 +-
 .../UndoGLIMLoanDisbursalCommandHandler.java       |    7 +-
 .../UndoLastDisbursalLoanCommandHandler.java       |    2 +-
 .../handler/UndoWriteOffLoanCommandHandler.java    |    2 +-
 .../handler/UpdateLoanChargeCommandHandler.java    |    2 +-
 .../UpdateLoanDisbuseDateCommandHandler.java       |    2 +-
 .../handler/UpdateLoanOfficerCommandHandler.java   |    2 +-
 .../WaiveInterestPortionOnLoanCommandHandler.java  |    2 +-
 .../handler/WaiveLoanChargeCommandHandler.java     |    2 +-
 .../handler/WriteOffLoanCommandHandler.java        |    2 +-
 .../loanschedule/data/LoanScheduleDTO.java         |    3 +-
 .../loanschedule/data/LoanScheduleData.java        |    2 +-
 .../loanschedule/data/LoanScheduleParams.java      |    2 +-
 .../loanschedule/data/LoanSchedulePeriodData.java  |   22 +-
 .../loanschedule/data/OverdueLoanScheduleData.java |    1 -
 .../domain/AbstractLoanScheduleGenerator.java      |  323 +-
 .../loanschedule/domain/AprCalculator.java         |   42 +-
 ...liningBalanceInterestLoanScheduleGenerator.java |   10 +-
 .../DefaultLoanScheduleGeneratorFactory.java       |    2 +-
 .../DefaultPaymentPeriodsInOneYearCalculator.java  |    4 +-
 .../domain/DefaultScheduledDateGenerator.java      |   17 +-
 .../loanschedule/domain/FinanicalFunctions.java    |    2 +-
 .../domain/FlatInterestLoanScheduleGenerator.java  |   17 +-
 .../loanschedule/domain/LoanApplicationTerms.java  |  248 +-
 .../domain/LoanRepaymentScheduleHistory.java       |   10 +-
 .../LoanRepaymentScheduleHistoryRepository.java    |    3 +-
 .../loanschedule/domain/LoanScheduleGenerator.java |    2 +-
 .../loanschedule/domain/LoanScheduleModel.java     |    4 +-
 .../LoanScheduleModelDisbursementPeriod.java       |    3 +-
 .../domain/LoanScheduleModelPeriod.java            |    1 +
 .../domain/LoanScheduleModelRepaymentPeriod.java   |    3 +-
 .../domain/PaymentPeriodsInOneYearCalculator.java  |    2 +-
 .../domain/ScheduledDateGenerator.java             |    2 +-
 .../service/LoanScheduleAssembler.java             |  159 +-
 ...LoanScheduleCalculationPlatformServiceImpl.java |   27 +-
 ...LoanScheduleHistoryReadPlatformServiceImpl.java |   24 +-
 .../LoanScheduleHistoryWritePlatformService.java   |    5 +-
 ...oanScheduleHistoryWritePlatformServiceImpl.java |    4 +-
 .../RescheduleLoansApiConstants.java               |   10 +-
 .../api/RescheduleLoansApiResource.java            |   47 +-
 .../data/LoanRescheduleRequestData.java            |   10 +-
 .../data/LoanRescheduleRequestDataValidator.java   |   93 +-
 .../data/LoanRescheduleRequestEnumerations.java    |   23 +-
 .../data/LoanRescheduleRequestTimelineData.java    |   11 +-
 .../rescheduleloan/domain/LoanRescheduleModel.java |   15 +-
 .../domain/LoanRescheduleRequest.java              |   43 +-
 .../domain/LoanRescheduleRequestRepository.java    |    3 +-
 .../LoanRescheduleRequestNotFoundException.java    |   10 +-
 ...ApproveLoanRescheduleRequestCommandHandler.java |    4 +-
 .../CreateLoanRescheduleRequestCommandHandler.java |    3 +-
 .../RejectLoanRescheduleRequestCommandHandler.java |    4 +-
 .../LoanReschedulePreviewPlatformServiceImpl.java  |   16 +-
 .../LoanRescheduleRequestReadPlatformService.java  |    8 +-
 ...anRescheduleRequestReadPlatformServiceImpl.java |    6 +-
 ...nRescheduleRequestWritePlatformServiceImpl.java |   91 +-
 ...alculateLoanScheduleQueryFromApiJsonHelper.java |   61 +-
 .../LoanApplicationCommandFromApiJsonHelper.java   |  352 +-
 .../LoanApplicationTransitionApiJsonValidator.java |   31 +-
 .../serialization/LoanEventApiJsonValidator.java   |   82 +-
 .../LoanUpdateCommandFromApiJsonDeserializer.java  |    2 +-
 .../VariableLoanScheduleFromApiJsonValidator.java  |   10 +-
 .../service/BulkLoansReadPlatformServiceImpl.java  |    2 +-
 .../GLIMAccountInfoReadPlatformService.java        |   22 +-
 .../GLIMAccountInfoReadPlatformServiceImpl.java    |  160 +-
 .../GLIMAccountInfoWritePlatformService.java       |    2 +-
 .../GLIMAccountInfoWritePlatformServiceImpl.java   |   47 +-
 .../service/LoanAccrualPlatformService.java        |    1 +
 .../service/LoanAccrualPlatformServiceImpl.java    |    5 +-
 .../service/LoanAccrualWritePlatformService.java   |    3 +-
 .../LoanAccrualWritePlatformServiceImpl.java       |   13 +-
 .../LoanApplicationWritePlatformService.java       |    2 +-
 ...ationWritePlatformServiceJpaRepositoryImpl.java |  641 ++-
 .../service/LoanArrearsAgingServiceImpl.java       |   61 +-
 .../loanaccount/service/LoanAssembler.java         |   43 +-
 .../loanaccount/service/LoanChargeAssembler.java   |    9 +-
 .../LoanChargePaidByReadPlatformServiceImpl.java   |   71 +-
 .../service/LoanChargeReadPlatformService.java     |    3 +-
 .../service/LoanChargeReadPlatformServiceImpl.java |    7 +-
 .../service/LoanReadPlatformService.java           |    7 +-
 .../service/LoanReadPlatformServiceImpl.java       |  367 +-
 .../loanaccount/service/LoanSchedularService.java  |    3 +-
 .../service/LoanSchedularServiceImpl.java          |   96 +-
 .../loanaccount/service/LoanUtilService.java       |   71 +-
 .../service/LoanWritePlatformService.java          |    2 +-
 .../LoanWritePlatformServiceJpaRepositoryImpl.java |  475 +-
 .../service/RecalculateInterestPoster.java         |   22 +-
 .../loanproduct/LoanProductConstants.java          |   11 +-
 .../loanproduct/api/LoanProductsApiResource.java   |  106 +-
 .../api/LoanProductsApiResourceSwagger.java        |  277 +-
 .../portfolio/loanproduct/data/LoanOverdueDTO.java |    1 -
 .../loanproduct/data/LoanProductData.java          |  194 +-
 .../data/LoanProductInterestRecalculationData.java |   12 +-
 .../data/TransactionProcessingStrategyData.java    |    2 +-
 .../loanproduct/domain/AmortizationMethod.java     |    3 +-
 .../domain/InterestCalculationPeriodMethod.java    |    3 +-
 .../loanproduct/domain/InterestMethod.java         |    4 +-
 .../domain/InterestRecalculationPeriodMethod.java  |    1 +
 .../portfolio/loanproduct/domain/LoanProduct.java  |  224 +-
 .../domain/LoanProductBorrowerCycleVariations.java |   18 +-
 .../domain/LoanProductConfigurableAttributes.java  |   36 +-
 .../domain/LoanProductFloatingRates.java           |    9 +-
 .../LoanProductInterestRecalculationDetails.java   |   17 +-
 .../domain/LoanProductMinMaxConstraints.java       |   19 +-
 .../loanproduct/domain/LoanProductParamType.java   |    2 +-
 .../domain/LoanProductRelatedDetail.java           |   66 +-
 .../loanproduct/domain/LoanProductRepository.java  |    2 +-
 .../domain/LoanProductTrancheDetails.java          |    3 +-
 .../domain/LoanProductValueConditionType.java      |    2 +-
 .../domain/LoanRescheduleStrategyMethod.java       |    4 +-
 .../domain/LoanTransactionProcessingStrategy.java  |    6 +-
 .../domain/RecalculationFrequencyType.java         |    1 +
 .../exception/InvalidCurrencyException.java        |    2 +-
 .../exception/InvalidLendingStrategy.java          |    2 +-
 ...nnotBeModifiedDueToNonClosedLoansException.java |    3 +-
 .../exception/LoanProductNotFoundException.java    |    2 +-
 .../exception/NotInMinMaxRangeException.java       |    2 +-
 .../handler/CreateLoanProductCommandHandler.java   |    2 +-
 .../handler/UpdateLoanProductCommandHandler.java   |    2 +-
 .../productmix/api/ProductMixApiResource.java      |    7 +-
 .../productmix/data/ProductMixData.java            |    3 +-
 .../serialization/ProductMixDataValidator.java     |    6 +-
 ...ctMixWritePlatformServiceJpaRepositoryImpl.java |    3 +-
 .../serialization/LoanProductDataValidator.java    |  775 ++--
 .../service/LoanDropdownReadPlatformService.java   |    4 +-
 .../LoanDropdownReadPlatformServiceImpl.java       |    5 +-
 .../loanproduct/service/LoanEnumerations.java      |   68 +-
 .../service/LoanProductReadPlatformService.java    |    2 +-
 .../LoanProductReadPlatformServiceImpl.java        |   65 +-
 .../service/LoanProductWritePlatformService.java   |    2 +-
 ...oductWritePlatformServiceJpaRepositoryImpl.java |   62 +-
 .../portfolio/meeting/MeetingApiConstants.java     |    2 +-
 .../portfolio/meeting/api/MeetingsApiResource.java |   11 +-
 .../meeting/attendance/AttendanceType.java         |    2 +-
 .../attendance/domain/ClientAttendance.java        |    3 +-
 .../AttendanceDropdownReadPlatformService.java     |    2 +-
 .../attendance/service/AttendanceEnumerations.java |    2 +-
 .../ClientAttendanceReadPlatformServiceImpl.java   |    2 +-
 .../meeting/data/MeetingDataValidator.java         |    9 +-
 .../fineract/portfolio/meeting/domain/Meeting.java |   24 +-
 .../meeting/domain/MeetingRepositoryWrapper.java   |    3 +-
 .../meeting/exception/MeetingDateException.java    |    2 +-
 .../exception/MeetingNotFoundException.java        |    2 +-
 .../MeetingNotSupportedResourceException.java      |    2 +-
 .../handler/DeleteMeetingCommandHandler.java       |    2 +-
 .../service/MeetingReadPlatformServiceImpl.java    |    2 +-
 ...etingWritePlatformServiceJpaRepositoryImpl.java |   65 +-
 .../portfolio/note/api/NotesApiResource.java       |   65 +-
 .../note/api/NotesApiResourceSwagger.java          |   40 +-
 .../portfolio/note/command/NoteCommand.java        |    2 +-
 .../fineract/portfolio/note/data/NoteData.java     |    2 +-
 .../fineract/portfolio/note/domain/Note.java       |    3 +-
 .../portfolio/note/domain/NoteRepository.java      |    2 +-
 .../fineract/portfolio/note/domain/NoteType.java   |    5 +-
 .../note/exception/NoteNotFoundException.java      |    6 +-
 .../NoteResourceNotSupportedException.java         |    2 +-
 .../note/handler/DeleteNoteCommandHandler.java     |    2 +-
 .../NoteCommandFromApiJsonDeserializer.java        |    8 +-
 .../note/service/NoteReadPlatformService.java      |    2 +-
 .../note/service/NoteReadPlatformServiceImpl.java  |   10 +-
 .../NoteWritePlatformServiceJpaRepositoryImpl.java |   13 +-
 .../paymentdetail/PaymentDetailConstants.java      |    2 +-
 .../paymentdetail/data/PaymentDetailData.java      |   21 +-
 .../paymentdetail/domain/PaymentDetail.java        |    2 +-
 .../domain/PaymentDetailRepository.java            |    2 +-
 .../service/PaymentDetailWritePlatformService.java |    2 +-
 ...etailWritePlatformServiceJpaRepositoryImpl.java |    2 +-
 .../paymenttype/api/PaymentTypeApiResource.java    |   35 +-
 .../api/PaymentTypeApiResourceConstants.java       |    3 +-
 .../api/PaymentTypeApiResourceSwagger.java         |   32 +-
 .../paymenttype/data/PaymentTypeData.java          |   15 +-
 .../paymenttype/data/PaymentTypeDataValidator.java |   23 +-
 .../exception/PaymentTypeNotFoundException.java    |    4 -
 .../handler/UpdatePaymentTypeCommandHandler.java   |    2 +-
 .../service/PaymentTypeReadPlatformService.java    |    1 +
 .../service/PaymentTypeWriteServiceImpl.java       |    6 +-
 .../products/api/ProductsApiResource.java          |   54 +-
 .../products/api/ProductsApiResourceSwagger.java   |  152 +-
 .../products/constants/ProductsApiConstants.java   |    5 +-
 .../portfolio/products/data/ProductData.java       |    1 -
 .../exception/ProductNotFoundException.java        |    4 +-
 .../exception/ResourceNotFoundException.java       |    5 +-
 .../products/service/ProductCommandsService.java   |    4 +-
 .../service/ProductReadPlatformService.java        |    2 +-
 .../portfolio/rate/api/RateApiConstants.java       |   10 +-
 .../portfolio/rate/api/RateApiResource.java        |  150 +-
 .../fineract/portfolio/rate/data/RateData.java     |   34 +-
 .../fineract/portfolio/rate/domain/Rate.java       |  251 +-
 .../portfolio/rate/domain/RateAppliesTo.java       |   67 +-
 .../portfolio/rate/domain/RateRepository.java      |    8 +-
 .../rate/domain/RateRepositoryWrapper.java         |   53 +-
 .../rate/exception/RateAlreadyExistException.java  |    5 +-
 .../rate/exception/RateNotFoundException.java      |   13 +-
 .../rate/handler/CreateRateCommandHandler.java     |   21 +-
 .../rate/handler/UpdateRateCommandHandler.java     |   23 +-
 ...teDefinitionCommandFromApiJsonDeserializer.java |  112 +-
 .../portfolio/rate/service/RateAssembler.java      |   59 +-
 .../portfolio/rate/service/RateEnumerations.java   |   32 +-
 .../portfolio/rate/service/RateReadService.java    |   15 +-
 .../rate/service/RateReadServiceImpl.java          |  183 +-
 .../portfolio/rate/service/RateWriteService.java   |    3 +-
 .../rate/service/RateWriteServiceImpl.java         |   15 +-
 .../savings/DepositAccountOnClosureType.java       |   10 +-
 .../DepositAccountOnHoldTransactionType.java       |    2 +-
 .../portfolio/savings/DepositAccountType.java      |    2 +-
 .../portfolio/savings/DepositsApiConstants.java    |   94 +-
 .../savings/PreClosurePenalInterestOnType.java     |    1 +
 .../portfolio/savings/RecurringDepositType.java    |    1 +
 .../savings/SavingsAccountTransactionType.java     |   11 +-
 .../portfolio/savings/SavingsApiConstants.java     |   18 +-
 .../SavingsCompoundingInterestPeriodType.java      |    2 +-
 .../SavingsInterestCalculationDaysInYearType.java  |    2 +-
 .../savings/SavingsInterestCalculationType.java    |    2 +-
 .../savings/SavingsPeriodFrequencyType.java        |    1 +
 .../savings/SavingsPostingInterestPeriodType.java  |    2 +-
 .../savings/SavingsWithdrawalFeesType.java         |    2 +-
 ...itAccountOnHoldFundTransactionsApiResource.java |   11 +-
 ...FixedDepositAccountTransactionsApiResource.java |   22 +-
 .../api/FixedDepositAccountsApiResource.java       |  172 +-
 .../FixedDepositAccountsApiResourceSwagger.java    |  124 +-
 .../api/FixedDepositProductsApiResource.java       |   50 +-
 .../FixedDepositProductsApiResourceSwagger.java    |  156 +-
 ...rringDepositAccountTransactionsApiResource.java |   78 +-
 ...positAccountTransactionsApiResourceSwagger.java |   52 +-
 .../api/RecurringDepositAccountsApiResource.java   |  164 +-
 ...RecurringDepositAccountsApiResourceSwagger.java |  120 +-
 .../api/RecurringDepositProductsApiResource.java   |   51 +-
 ...RecurringDepositProductsApiResourceSwagger.java |  161 +-
 .../api/SavingsAccountChargesApiResource.java      |  108 +-
 .../SavingsAccountChargesApiResourceSwagger.java   |   69 +-
 .../api/SavingsAccountTransactionsApiResource.java |   19 +-
 .../savings/api/SavingsAccountsApiResource.java    |  215 +-
 .../api/SavingsAccountsApiResourceSwagger.java     |   96 +-
 .../savings/api/SavingsApiSetConstants.java        |   60 +-
 .../savings/api/SavingsProductsApiResource.java    |   58 +-
 .../api/SavingsProductsApiResourceSwagger.java     |  212 +-
 .../savings/data/ClosingOfSavingsAccounts.java     |   17 +-
 .../portfolio/savings/data/DepositAccountData.java |   56 +-
 .../savings/data/DepositAccountDataValidator.java  |  114 +-
 .../data/DepositAccountInterestRateChartData.java  |   10 +-
 .../DepositAccountInterestRateChartSlabData.java   |    8 +-
 .../data/DepositAccountOnHoldTransactionData.java  |    7 +-
 .../DepositAccountTransactionDataValidator.java    |   54 +-
 .../portfolio/savings/data/DepositProductData.java |   22 +-
 .../savings/data/DepositProductDataValidator.java  |  174 +-
 .../savings/data/FixedDepositAccountData.java      |  131 +-
 .../savings/data/FixedDepositProductData.java      |  111 +-
 .../portfolio/savings/data/GSIMContainer.java      |    5 +-
 ...roupSavingsIndividualMonitoringAccountData.java |  148 +-
 .../savings/data/RecurringDepositAccountData.java  |  110 +-
 .../savings/data/RecurringDepositProductData.java  |   98 +-
 .../savings/data/SavingsAccountAnnualFeeData.java  |    2 +-
 .../SavingsAccountApplicationTimelineData.java     |    2 +-
 .../savings/data/SavingsAccountChargeData.java     |    7 +-
 .../data/SavingsAccountChargeDataValidator.java    |    8 +-
 .../savings/data/SavingsAccountConstant.java       |   37 +-
 .../portfolio/savings/data/SavingsAccountData.java |  231 +-
 .../savings/data/SavingsAccountDataDTO.java        |    4 +-
 .../savings/data/SavingsAccountDataValidator.java  |   91 +-
 .../savings/data/SavingsAccountStatusEnumData.java |    2 +-
 .../data/SavingsAccountSubStatusEnumData.java      |    6 +-
 .../savings/data/SavingsAccountSummaryData.java    |    4 +-
 .../savings/data/SavingsAccountTransactionDTO.java |    4 +-
 .../data/SavingsAccountTransactionData.java        |   73 +-
 .../SavingsAccountTransactionDataValidator.java    |   23 +-
 .../data/SavingsAccountTransactionEnumData.java    |    2 +-
 .../portfolio/savings/data/SavingsActivation.java  |    7 +-
 .../portfolio/savings/data/SavingsApproval.java    |    7 +-
 .../portfolio/savings/data/SavingsProductData.java |   92 +-
 .../savings/data/SavingsProductDataValidator.java  |  321 +-
 .../savings/data/TransactionDateData.java          |    2 +-
 .../savings/domain/DepositAccountAssembler.java    |   33 +-
 .../domain/DepositAccountDomainService.java        |   11 +-
 .../domain/DepositAccountDomainServiceJpa.java     |   64 +-
 .../domain/DepositAccountInterestRateChart.java    |    4 +-
 .../DepositAccountInterestRateChartSlabs.java      |    7 +-
 .../domain/DepositAccountOnHoldTransaction.java    |    2 +-
 .../DepositAccountOnHoldTransactionRepository.java |    6 +-
 .../domain/DepositAccountRecurringDetail.java      |    9 +-
 .../domain/DepositAccountTermAndPreClosure.java    |   20 +-
 .../savings/domain/DepositPreClosureDetail.java    |    2 +-
 .../domain/DepositProductAmountDetails.java        |    5 +-
 .../savings/domain/DepositProductAssembler.java    |   26 +-
 .../domain/DepositProductRecurringDetail.java      |    2 +-
 .../domain/DepositProductTermAndPreClosure.java    |    2 +-
 .../savings/domain/DepositRecurringDetail.java     |    2 +-
 .../savings/domain/DepositTermDetail.java          |   20 +-
 .../savings/domain/FixedDepositAccount.java        |   47 +-
 .../domain/FixedDepositAccountRepository.java      |    6 +-
 .../savings/domain/FixedDepositProduct.java        |   20 +-
 .../domain/FixedDepositProductRepository.java      |    6 +-
 .../portfolio/savings/domain/GSIMRepositoy.java    |    8 +-
 .../domain/GroupSavingsIndividualMonitoring.java   |  160 +-
 .../savings/domain/RecurringDepositAccount.java    |   84 +-
 .../domain/RecurringDepositAccountRepository.java  |    6 +-
 .../savings/domain/RecurringDepositProduct.java    |    2 +-
 .../domain/RecurringDepositProductRepository.java  |    6 +-
 .../RecurringDepositScheduleInstallment.java       |   16 +-
 .../portfolio/savings/domain/SavingsAccount.java   |  275 +-
 .../savings/domain/SavingsAccountAssembler.java    |   16 +-
 .../savings/domain/SavingsAccountCharge.java       |   50 +-
 .../domain/SavingsAccountChargeAssembler.java      |    8 +-
 .../domain/SavingsAccountChargeRepository.java     |    4 +-
 .../SavingsAccountChargeRepositoryWrapper.java     |    3 +-
 .../domain/SavingsAccountDomainService.java        |    2 +-
 .../domain/SavingsAccountDomainServiceJpa.java     |   11 +-
 .../savings/domain/SavingsAccountRepository.java   |    4 +-
 .../domain/SavingsAccountRepositoryWrapper.java    |   37 +-
 .../savings/domain/SavingsAccountStatusType.java   |    2 +-
 .../domain/SavingsAccountSubStatusEnum.java        |   12 +-
 .../savings/domain/SavingsAccountSummary.java      |    3 +-
 .../savings/domain/SavingsAccountTransaction.java  |   69 +-
 .../SavingsAccountTransactionComparator.java       |    2 +-
 .../SavingsAccountTransactionRepository.java       |    4 +-
 .../SavingsAccountTransactionSummaryWrapper.java   |    6 +-
 .../portfolio/savings/domain/SavingsHelper.java    |   20 +-
 .../portfolio/savings/domain/SavingsProduct.java   |   39 +-
 .../savings/domain/SavingsProductAssembler.java    |    6 +-
 .../domain/SavingsProductChargeAssembler.java      |    8 +-
 .../savings/domain/SavingsProductRepository.java   |    2 +-
 .../domain/interest/AnnualCompoundingPeriod.java   |   15 +-
 .../domain/interest/BiAnnualCompoundingPeriod.java |   15 +-
 .../domain/interest/CompoundInterestHelper.java    |    5 +-
 .../savings/domain/interest/CompoundingPeriod.java |    3 +-
 .../domain/interest/DailyCompoundingPeriod.java    |   14 +-
 .../savings/domain/interest/EndOfDayBalance.java   |   18 +-
 .../domain/interest/MonthlyCompoundingPeriod.java  |   15 +-
 .../savings/domain/interest/PostingPeriod.java     |   94 +-
 .../interest/QuarterlyCompoundingPeriod.java       |   15 +-
 ...tAccountInterestRateChartNotFoundException.java |    6 +-
 .../exception/DepositAccountNotFoundException.java |    6 +-
 ...positAccountTransactionNotAllowedException.java |    8 +-
 .../FixedDepositProductNotFoundException.java      |    2 +-
 .../InsufficientAccountBalanceException.java       |    2 +-
 .../exception/PostInterestAsOnDateException.java   |   23 +-
 .../RecurringDepositProductNotFoundException.java  |    2 +-
 .../exception/SavingsAccountNotFoundException.java |    5 +-
 ...SavingsAccountTransactionNotFoundException.java |    5 +-
 ...ingsActivityPriorToClientTransferException.java |    2 +-
 .../SavingsOfficerAssignmentDateException.java     |    5 +-
 .../SavingsOfficerUnassignmentDateException.java   |    1 -
 .../SavingsOfficerUnassignmentException.java       |    3 +-
 .../exception/SavingsProductNotFoundException.java |    2 +-
 ...ransferTransactionsCannotBeUndoneException.java |    2 +-
 .../TransactionUpdateNotAllowedException.java      |    5 +-
 .../ActivateFixedDepositAccountCommandHandler.java |    2 +-
 ...ivateRecurringDepositAccountCommandHandler.java |    2 +-
 .../ActivateSavingsAccountCommandHandler.java      |    2 +-
 .../AddSavingsAccountChargeCommandHandler.java     |    2 +-
 ...ApplyAnnualFeeSavingsAccountCommandHandler.java |    2 +-
 ...eInterestFixedDepositAccountCommandHandler.java |    2 +-
 ...erestRecurringDepositAccountCommandHandler.java |    2 +-
 ...culateInterestSavingsAccountCommandHandler.java |    2 +-
 .../CloseFixedDepositAccountCommandHandler.java    |    2 +-
 .../savings/handler/CloseGSIMCommandHandler.java   |    6 +-
 ...CloseRecurringDepositAccountCommandHandler.java |    2 +-
 .../CreateFixedDepositProductCommandHandler.java   |    2 +-
 ...reateRecurringDepositProductCommandHandler.java |    2 +-
 .../CreateSavingsProductCommandHandler.java        |    2 +-
 .../DeleteFixedDepositProductCommandHandler.java   |    2 +-
 ...eleteRecurringDepositProductCommandHandler.java |    2 +-
 .../DeleteSavingsAccountChargeCommandHandler.java  |    2 +-
 .../DeleteSavingsProductCommandHandler.java        |    2 +-
 .../DepositSavingsAccountCommandHandler.java       |    2 +-
 ...itAccountApplicationApprovalCommandHandler.java |    2 +-
 ...countApplicationApprovalUndoCommandHandler.java |    2 +-
 ...itAccountApplicationDeletionCommandHandler.java |    2 +-
 ...countApplicationModificationCommandHandler.java |    2 +-
 ...itAccountApplicationRejectedCommandHandler.java |    2 +-
 ...tAccountApplicationSubmittalCommandHandler.java |    2 +-
 ...licationWithdrawnByApplicantCommandHandler.java |    2 +-
 .../FixedDepositAccountDepositCommandHandler.java  |    2 +-
 ...DepositTransactionAdjustmentCommandHandler.java |    2 +-
 .../GSIMAccountActivationCommandHandler.java       |    6 +-
 .../GSIMApplicationApprovalCommandHandler.java     |   10 +-
 .../GSIMApplicationModificationCommandHandler.java |   27 +-
 .../handler/GSIMApplicationRejectionHandler.java   |    9 +-
 .../GSIMApplicationSubmittalCommandHandler.java    |    9 +-
 .../savings/handler/GSIMDepositCommandHandler.java |    2 -
 .../handler/GSIMUndoApprovalCommandHandler.java    |    6 +-
 .../PaySavingsAccountChargeCommandHandler.java     |    2 +-
 ...tInterestFixedDepositAccountCommandHandler.java |    2 +-
 ...erestRecurringDepositAccountCommandHandler.java |    2 +-
 .../PostInterestSavingsAccountCommandHandler.java  |    2 +-
 ...tureCloseFixedDepositAccountCommandHandler.java |    2 +-
 ...CloseRecurringDepositAccountCommandHandler.java |    5 +-
 ...itAccountApplicationApprovalCommandHandler.java |    6 +-
 ...countApplicationApprovalUndoCommandHandler.java |    2 +-
 ...itAccountApplicationDeletionCommandHandler.java |    2 +-
 ...countApplicationModificationCommandHandler.java |    2 +-
 ...itAccountApplicationRejectedCommandHandler.java |    2 +-
 ...tAccountApplicationSubmittalCommandHandler.java |    2 +-
 ...licationWithdrawnByApplicantCommandHandler.java |    2 +-
 ...curringDepositAccountDepositCommandHandler.java |    2 +-
 ...itAccountUpdateDepositAmountCommandHandler.java |    2 +-
 ...DepositTransactionAdjustmentCommandHandler.java |    5 +-
 ...gsAccountApplicationApprovalCommandHandler.java |    2 +-
 ...countApplicationApprovalUndoCommandHandler.java |    2 +-
 ...countApplicationModificationCommandHandler.java |    2 +-
 ...gsAccountApplicationRejectedCommandHandler.java |    2 +-
 ...sAccountApplicationSubmittalCommandHandler.java |    2 +-
 ...licationWithdrawnByApplicantCommandHandler.java |    2 +-
 ...ansactionFixedDepositAccountCommandHandler.java |    2 +-
 ...ctionRecurringDepositAccountCommandHandler.java |    5 +-
 ...ndoTransactionSavingsAccountCommandHandler.java |    2 +-
 .../UpdateFixedDepositProductCommandHandler.java   |    2 +-
 ...pdateRecurringDepositProductCommandHandler.java |    2 +-
 .../UpdateSavingsAccountChargeCommandHandler.java  |    2 +-
 .../UpdateSavingsProductCommandHandler.java        |    2 +-
 ...ateWithHoldTaxSavingsAccountCommandHandler.java |    2 +-
 .../WaiveSavingsAccountChargeCommandHandler.java   |    2 +-
 .../WithdrawSavingsAccountCommandHandler.java      |    2 +-
 ...ithdrawalFixedDepositAccountCommandHandler.java |    2 +-
 ...rawalRecurringDepositAccountCommandHandler.java |    2 +-
 ...ntInterestRateChartReadPlatformServiceImpl.java |   19 +-
 ...ntOnHoldTransactionReadPlatformServiceImpl.java |    3 +-
 ...untPreMatureCalculationPlatformServiceImpl.java |   18 +-
 .../service/DepositAccountReadPlatformService.java |    3 +-
 .../DepositAccountReadPlatformServiceImpl.java     |  235 +-
 .../DepositAccountWritePlatformService.java        |    2 +-
 ...countWritePlatformServiceJpaRepositoryImpl.java |  108 +-
 ...ositApplicationProcessWritePlatformService.java |    2 +-
 ...ocessWritePlatformServiceJpaRepositoryImpl.java |   61 +-
 .../DepositProductReadPlatformServiceImpl.java     |   54 +-
 .../DepositsDropdownReadPlatformService.java       |    2 +-
 .../DepositsDropdownReadPlatformServiceImpl.java   |   12 +-
 .../FixedDepositProductWritePlatformService.java   |    2 +-
 ...oductWritePlatformServiceJpaRepositoryImpl.java |   20 +-
 .../savings/service/GSIMReadPlatformService.java   |    4 +-
 .../service/GSIMReadPlatformServiceImpl.java       |  573 ++-
 ...gsIndividualMonitoringWritePlatformService.java |    7 +-
 ...dividualMonitoringWritePlatformServiceImpl.java |   80 +-
 ...ecurringDepositProductWritePlatformService.java |    2 +-
 ...oductWritePlatformServiceJpaRepositoryImpl.java |   16 +-
 ...countApplicationTransitionApiJsonValidator.java |    2 +-
 ...avingsAccountChargeReadPlatformServiceImpl.java |   27 +-
 .../service/SavingsAccountReadPlatformService.java |    9 +-
 .../SavingsAccountReadPlatformServiceImpl.java     |  188 +-
 .../SavingsAccountWritePlatformService.java        |    3 +-
 ...countWritePlatformServiceJpaRepositoryImpl.java |  177 +-
 ...ingsApplicationProcessWritePlatformService.java |    2 +-
 ...ocessWritePlatformServiceJpaRepositoryImpl.java |  339 +-
 .../SavingsDropdownReadPlatformService.java        |    2 +-
 .../SavingsDropdownReadPlatformServiceImpl.java    |   14 +-
 .../savings/service/SavingsEnumerations.java       |  185 +-
 .../SavingsProductReadPlatformServiceImpl.java     |   26 +-
 .../SavingsProductWritePlatformService.java        |    2 +-
 ...oductWritePlatformServiceJpaRepositoryImpl.java |   20 +-
 .../savings/service/SavingsSchedularService.java   |    1 -
 .../service/SavingsSchedularServiceImpl.java       |   15 +-
 .../fineract/portfolio/search/SearchConstants.java |   11 +-
 .../portfolio/search/api/SearchApiResource.java    |   41 +-
 .../search/api/SearchApiResourceSwagger.java       |    8 +-
 .../search/data/AdHocQueryDataValidator.java       |  142 +-
 .../search/data/AdHocQuerySearchConstants.java     |   12 +-
 .../portfolio/search/data/SearchConditions.java    |   35 +-
 .../fineract/portfolio/search/data/SearchData.java |    5 +-
 .../service/SearchReadPlatformServiceImpl.java     |   12 +-
 .../api/SelfAccountTransferApiResource.java        |  201 +-
 .../api/SelfAccountTransferApiResourceSwagger.java |   29 +-
 .../api/SelfBeneficiariesTPTApiResource.java       |  103 +-
 .../SelfBeneficiariesTPTApiResourceSwagger.java    |   39 +-
 .../self/account/data/SelfAccountTemplateData.java |   29 +-
 .../self/account/data/SelfAccountTransferData.java |    3 +-
 .../data/SelfAccountTransferDataValidator.java     |  132 +-
 .../account/data/SelfBeneficiariesTPTData.java     |   10 +-
 .../data/SelfBeneficiariesTPTDataValidator.java    |  104 +-
 .../self/account/domain/SelfBeneficiariesTPT.java  |    9 +-
 .../domain/SelfBeneficiariesTPTRepository.java     |    5 +-
 .../BeneficiaryTransferLimitExceededException.java |    3 +-
 ...TPTTransactionAmountLimitExceededException.java |    7 +-
 .../InvalidAccountInformationException.java        |   13 +-
 .../exception/InvalidBeneficiaryException.java     |    7 +-
 .../AddSelfBeneficiariesTPTCommandHandler.java     |    7 +-
 .../DeleteSelfBeneficiariesTPTCommandHandler.java  |    7 +-
 .../UpdateSelfBeneficiariesTPTCommandHandler.java  |    7 +-
 .../service/SelfAccountTransferReadService.java    |    3 +-
 .../SelfAccountTransferReadServiceImpl.java        |   59 +-
 .../SelfBeneficiariesTPTReadPlatformService.java   |    3 +-
 ...elfBeneficiariesTPTReadPlatformServiceImpl.java |   84 +-
 ...lfBeneficiariesTPTWritePlatformServiceImpl.java |   67 +-
 .../self/client/api/SelfClientsApiResource.java    |  144 +-
 .../client/api/SelfClientsApiResourceSwagger.java  |   88 +-
 .../self/client/data/SelfClientDataValidator.java  |   21 +-
 .../AppuserClientMapperReadServiceImpl.java        |   16 +-
 .../self/loanaccount/api/SelfLoansApiResource.java |  143 +-
 .../api/SelfLoansApiResourceSwagger.java           |  172 +-
 .../loanaccount/data/SelfLoansDataValidator.java   |   98 +-
 .../service/AppuserLoansMapperReadServiceImpl.java |   14 +-
 .../self/pockets/api/PocketApiResource.java        |   98 +-
 .../self/pockets/api/PocketApiResourceSwagger.java |   36 +-
 .../pockets/data/PocketAccountMappingData.java     |    6 +-
 .../self/pockets/data/PocketDataValidator.java     |   43 +-
 .../portfolio/self/pockets/domain/Pocket.java      |    6 +-
 .../self/pockets/domain/PocketAccountMapping.java  |    6 +-
 .../PocketAccountMappingRepositoryWrapper.java     |    7 +-
 .../self/pockets/domain/PocketRepository.java      |    2 +-
 .../pockets/domain/PocketRepositoryWrapper.java    |    5 +-
 .../MappingIdNotLinkedToPocketException.java       |    5 +-
 .../DelinkAccountsFromPocketCommandHandler.java    |    1 +
 .../service/AccountEntityServiceFactory.java       |   19 +-
 .../service/AccountEntityServiceForLoanImpl.java   |    6 +-
 .../AccountEntityServiceForSavingsImpl.java        |    3 +-
 .../AccountEntityServiceForShareAccountsImpl.java  |    1 -
 ...ocketAccountMappingReadPlatformServiceImpl.java |   10 +-
 .../service/PocketWritePlatformService.java        |    1 -
 .../service/PocketWritePlatformServiceImpl.java    |   14 +-
 .../products/api/SelfLoanProductsApiResource.java  |  217 +-
 .../api/SelfSavingsProductsApiResource.java        |    3 +-
 .../products/api/SelfShareProductsApiResource.java |    9 +-
 .../self/registration/SelfServiceApiConstants.java |   14 +-
 .../api/SelfServiceRegistrationApiResource.java    |    9 +-
 .../domain/SelfServiceRegistrationRepository.java  |    4 +-
 .../SelfServiceRegistrationNotFoundException.java  |    4 +-
 ...erviceRegistrationWritePlatformServiceImpl.java |   20 +-
 .../self/runreport/SelfRunReportApiResource.java   |   32 +-
 .../runreport/SelfRunReportApiResourceSwagger.java |   30 +-
 .../self/savings/api/SelfSavingsApiResource.java   |   89 +-
 .../savings/api/SelfSavingsApiResourceSwagger.java |   76 +-
 .../savings/data/SelfSavingsDataValidator.java     |  110 +-
 .../AppuserSavingsMapperReadServiceImpl.java       |   17 +-
 .../api/SelfAuthenticationApiResource.java         |   12 +-
 .../api/SelfAuthenticationApiResourceSwagger.java  |   16 +-
 .../self/security/api/SelfUserApiResource.java     |   54 +-
 .../security/api/SelfUserApiResourceSwagger.java   |   16 +-
 .../security/api/SelfUserDetailsApiResource.java   |   21 +-
 .../api/SelfUserDetailsApiResourceSwagger.java     |   16 +-
 .../api/SelfShareAccountsApiResource.java          |  231 +-
 .../api/SelfShareAccountsApiResourceSwagger.java   |  168 +-
 .../data/SelfShareAccountsDataValidator.java       |   14 +-
 ...ShareAccountsMapperReadPlatformServiceImpl.java |   18 +-
 .../self/spm/api/SelfScorecardApiResource.java     |   13 +-
 .../portfolio/self/spm/api/SelfSpmApiResource.java |    6 +-
 .../data/ShareAccountApplicationTimelineData.java  |    8 +-
 .../shareaccounts/data/ShareAccountChargeData.java |   12 +-
 .../shareaccounts/data/ShareAccountData.java       |   87 +-
 .../data/ShareAccountDividendData.java             |   12 +-
 .../data/ShareAccountStatusEnumData.java           |    2 +-
 .../data/ShareAccountTransactionData.java          |   16 +-
 .../data/ShareAccountTransactionEnumData.java      |    1 -
 .../domain/PurchasedSharesStatusType.java          |    6 +-
 .../shareaccounts/domain/ShareAccount.java         |   91 +-
 .../shareaccounts/domain/ShareAccountCharge.java   |   18 +-
 .../domain/ShareAccountChargePaidBy.java           |   29 +-
 .../domain/ShareAccountDividendRepository.java     |    4 +-
 .../domain/ShareAccountRepository.java             |    1 -
 .../domain/ShareAccountRepositoryWrapper.java      |   12 +-
 .../domain/ShareAccountStatusType.java             |    2 +-
 .../domain/ShareAccountTransaction.java            |  134 +-
 .../IssueableSharesExceededException.java          |    2 +-
 .../ActivateShareAccountCommandHandler.java        |    8 +-
 .../ApplyAddtionalSharesCommandHandler.java        |    8 +-
 .../ApproveAddtionalSharesCommandHandler.java      |    8 +-
 .../handler/ApproveShareAccountCommandHandler.java |    8 +-
 .../handler/CloseShareAccountCommandHandler.java   |    8 +-
 .../handler/CreateShareAccountCommandHandler.java  |    8 +-
 .../handler/RedeemSharesCommandHandler.java        |    8 +-
 .../RejectAddtionalSharesCommandHandler.java       |    8 +-
 .../handler/RejectShareAccountCommandHandler.java  |    8 +-
 .../UndoApproveShareAccountCommandHandler.java     |    8 +-
 .../handler/UpdateShareAccountCommandHandler.java  |    4 +-
 .../serialization/ShareAccountDataSerializer.java  |  363 +-
 .../PurchasedSharesReadPlatformService.java        |    2 +-
 .../PurchasedSharesReadPlatformServiceImpl.java    |   57 +-
 .../ShareAccountChargeReadPlatformService.java     |    2 +-
 .../ShareAccountChargeReadPlatformServiceImpl.java |   75 +-
 .../service/ShareAccountCommandsServiceImpl.java   |   35 +-
 ...hareAccountDividendReadPlatformServiceImpl.java |    3 +-
 .../service/ShareAccountReadPlatformService.java   |    3 +-
 .../ShareAccountReadPlatformServiceImpl.java       |   49 +-
 .../service/ShareAccountSchedularService.java      |    2 -
 .../service/ShareAccountWritePlatformService.java  |   18 +-
 ...countWritePlatformServiceJpaRepositoryImpl.java |   85 +-
 .../shareaccounts/service/SharesEnumerations.java  |   36 +-
 .../shareproducts/SharePeriodFrequencyType.java    |    1 +
 .../api/ShareDividendApiResource.java              |    6 +-
 .../shareproducts/data/ShareProductData.java       |   24 +-
 .../data/ShareProductMarketPriceData.java          |   10 +-
 .../shareproducts/domain/ShareProduct.java         |   35 +-
 .../domain/ShareProductDividendPayOutDetails.java  |    2 +-
 .../domain/ShareProductDividendStatusType.java     |    1 -
 ...hareProductDividentPayOutDetailsRepository.java |    4 +-
 ...ductDividentPayOutDetailsRepositoryWrapper.java |    4 +-
 .../domain/ShareProductMarketPrice.java            |   16 +-
 .../domain/ShareProductRepository.java             |    1 -
 .../domain/ShareProductRepositoryWrapper.java      |   11 +-
 .../exception/DividendNotFoundException.java       |    2 +-
 .../exception/ShareAccountsNotFoundException.java  |    3 +-
 .../handler/CreateShareProductCommandHandler.java  |    4 +-
 .../handler/UpdateShareProductCommandHandler.java  |    4 +-
 .../serialization/ShareProductDataSerializer.java  |  112 +-
 .../service/ShareProductCommandsServiceImpl.java   |   10 +-
 .../service/ShareProductDividendAssembler.java     |   20 +-
 ...hareProductDividendReadPlatformServiceImpl.java |    3 +-
 .../ShareProductDropdownReadPlatformService.java   |    2 +-
 ...hareProductDropdownReadPlatformServiceImpl.java |    4 +-
 .../ShareProductReadPlatformServiceImpl.java       |    8 +-
 ...oductWritePlatformServiceJpaRepositoryImpl.java |   54 +-
 .../portfolio/tax/api/TaxComponentApiResource.java |   34 +-
 .../tax/api/TaxComponentApiResourceSwagger.java    |   40 +-
 .../portfolio/tax/api/TaxGroupApiResource.java     |   33 +-
 .../tax/api/TaxGroupApiResourceSwagger.java        |   48 +-
 .../portfolio/tax/domain/TaxComponent.java         |    8 +-
 .../portfolio/tax/domain/TaxComponentHistory.java  |   13 +-
 .../tax/domain/TaxComponentRepositoryWrapper.java  |    3 +-
 .../fineract/portfolio/tax/domain/TaxGroup.java    |    2 +-
 .../tax/domain/TaxGroupRepositoryWrapper.java      |    3 +-
 .../tax/exception/TaxMappingNotFoundException.java |    2 +-
 .../portfolio/tax/serialization/TaxValidator.java  |   50 +-
 .../portfolio/tax/service/TaxAssembler.java        |    4 +-
 .../tax/service/TaxReadPlatformServiceImpl.java    |    4 +-
 .../transfer/api/TransferApiConstants.java         |    2 +-
 .../transfer/data/TransfersDataValidator.java      |   38 +-
 ...ClientNotAwaitingTransferApprovalException.java |    4 +-
 ...tAwaitingTransferApprovalOrOnHoldException.java |    4 +-
 .../exception/TransferNotSupportedException.java   |   11 +-
 .../AcceptClientTransferCommandHandler.java        |    2 +-
 ...oposeAndAcceptClientTransferCommandHandler.java |    2 +-
 .../ProposeClientTransferCommandHandler.java       |    2 +-
 .../RejectClientTransferCommandHandler.java        |    2 +-
 ...TransferClientsBetweenGroupsCommandHandler.java |    2 +-
 .../WithdrawClientTransferCommandHandler.java      |    2 +-
 .../transfer/service/TransferEventType.java        |    5 +-
 .../service/TransferWritePlatformService.java      |    2 +-
 ...nsferWritePlatformServiceJpaRepositoryImpl.java |   66 +-
 .../service/ScheduledJobRunnerService.java         |    2 +-
 .../service/ScheduledJobRunnerServiceImpl.java     |  134 +-
 .../fineract/spm/api/LookupTableApiResource.java   |   35 +-
 .../fineract/spm/api/ScorecardApiResource.java     |   18 +-
 .../apache/fineract/spm/api/SpmApiResource.java    |   27 +-
 .../apache/fineract/spm/data/ComponentData.java    |    3 +-
 .../apache/fineract/spm/data/LookupTableData.java  |    3 +-
 .../org/apache/fineract/spm/data/QuestionData.java |    2 +-
 .../org/apache/fineract/spm/data/ResponseData.java |    3 +-
 .../apache/fineract/spm/data/ScorecardValue.java   |    3 -
 .../org/apache/fineract/spm/data/SurveyData.java   |    5 +-
 .../org/apache/fineract/spm/domain/Survey.java     |    8 +-
 .../fineract/spm/domain/SurveyValidator.java       |    4 +-
 .../SurveyResponseNotAvailableException.java       |    3 +-
 .../spm/repository/LookupTableRepository.java      |    1 +
 .../spm/repository/ScorecardRepository.java        |    1 +
 .../fineract/spm/service/LookupTableService.java   |    3 +-
 .../spm/service/ScorecardReadPlatformService.java  |    3 +-
 .../service/ScorecardReadPlatformServiceImpl.java  |    3 +-
 .../fineract/spm/service/ScorecardService.java     |    3 +-
 .../apache/fineract/spm/service/SpmService.java    |   28 +-
 .../fineract/spm/util/LookupTableMapper.java       |    4 +-
 .../apache/fineract/spm/util/ScorecardMapper.java  |   30 +-
 .../fineract/spm/util/SurveyApiConstants.java      |    3 +-
 .../org/apache/fineract/spm/util/SurveyMapper.java |   25 +-
 .../template/api/TemplatesApiResource.java         |   48 +-
 .../template/api/TemplatesApiResourcesSwagger.java |   17 +
 .../apache/fineract/template/domain/Template.java  |   38 +-
 .../template/domain/TemplateEntitySerializer.java  |    4 +-
 .../template/domain/TemplateFunctions.java         |    2 +-
 .../template/domain/TemplateTypeSerializer.java    |    4 +-
 .../exception/TemplateNotFoundException.java       |    2 +-
 .../template/service/JpaTemplateDomainService.java |   40 +-
 .../template/service/TemplateMergeService.java     |   16 +-
 .../fineract/template/service/TrustModifier.java   |    9 +-
 .../api/PasswordPreferencesApiConstants.java       |    3 +-
 .../api/PasswordPreferencesApiResource.java        |   23 +-
 .../api/PasswordPreferencesApiResourceSwagger.java |    5 +
 .../api/PermissionsApiResource.java                |   33 +-
 .../api/PermissionsApiResourceSwagger.java         |    8 +-
 .../useradministration/api/RolesApiResource.java   |   59 +-
 .../api/RolesApiResourceSwagger.java               |   32 +-
 .../useradministration/api/UsersApiResource.java   |   60 +-
 .../api/UsersApiResourceSwagger.java               |   22 +
 .../command/PermissionsCommand.java                |    2 +-
 .../useradministration/data/AppUserData.java       |   44 +-
 .../data/PasswordValidationPolicyData.java         |    2 +-
 .../useradministration/data/PermissionData.java    |    2 +-
 .../fineract/useradministration/data/RoleData.java |    4 +-
 .../data/RolePermissionsData.java                  |    2 +-
 .../useradministration/domain/AppUser.java         |   42 +-
 .../domain/AppUserClientMapping.java               |   16 +-
 .../domain/AppUserPreviousPassword.java            |    2 +-
 .../domain/AppUserPreviousPasswordRepository.java  |    4 +-
 .../domain/AppUserRepositoryWrapper.java           |   12 +-
 .../domain/JpaUserDomainService.java               |    6 +-
 .../domain/PasswordValidationPolicy.java           |    2 +-
 .../domain/PasswordValidationPolicyRepository.java |    6 +-
 .../useradministration/domain/RoleRepository.java  |    2 +-
 .../exception/PasswordPreviouslyUsedException.java |    3 +-
 .../PasswordValidationPolicyNotFoundException.java |    5 +-
 .../PermissionCantBeMakerCheckerableException.java |    2 +-
 .../exception/PermissionNotFoundException.java     |    2 +-
 .../exception/RoleAssociatedException.java         |    3 +-
 .../exception/RoleNotFoundException.java           |    2 +-
 .../exception/UserNotFoundException.java           |    2 +-
 .../exception/UsernameAlreadyExistsException.java  |    2 +-
 .../handler/CreateRoleCommandHandler.java          |    2 +-
 .../handler/CreateUserCommandHandler.java          |    2 +-
 .../handler/DeleteUserCommandHandler.java          |    2 +-
 ...pdateMakerCheckerPermissionsCommandHandler.java |    2 +-
 .../UpdatePasswordPreferencesCommandHandler.java   |    2 +-
 .../handler/UpdateRoleCommandHandler.java          |    2 +-
 .../UpdateRolePermissionsCommandHandler.java       |    2 +-
 .../handler/UpdateUserCommandHandler.java          |    2 +-
 .../PermissionsCommandFromApiJsonDeserializer.java |    2 +-
 .../service/AppUserReadPlatformService.java        |    2 +-
 .../service/AppUserReadPlatformServiceImpl.java    |   18 +-
 .../service/AppUserWritePlatformService.java       |    2 +-
 ...pUserWritePlatformServiceJpaRepositoryImpl.java |   43 +-
 .../PasswordPreferencesWritePlatformService.java   |    2 +-
 ...asswordValidationPolicyReadPlatformService.java |    2 +-
 ...ordValidationPolicyReadPlatformServiceImpl.java |    2 +-
 .../service/PermissionReadPlatformService.java     |    2 +-
 .../service/PermissionReadPlatformServiceImpl.java |    5 +-
 .../service/PermissionWritePlatformService.java    |    2 +-
 ...ssionWritePlatformServiceJpaRepositoryImpl.java |    6 +-
 .../service/RoleDataValidator.java                 |    2 +-
 .../service/RoleReadPlatformService.java           |    2 +-
 .../service/RoleReadPlatformServiceImpl.java       |    5 +-
 .../service/RoleWritePlatformService.java          |    2 +-
 .../RoleWritePlatformServiceJpaRepositoryImpl.java |   17 +-
 .../service/UserDataValidator.java                 |   38 +-
 .../src/main/resources/META-INF/orm.xml            |   24 +-
 .../src/main/resources/META-INF/persistence.xml    |   16 +-
 .../main/resources/META-INF/spring/appContext.xml  |  170 +-
 .../src/main/resources/META-INF/spring/cache.xml   |   24 +-
 .../src/main/resources/META-INF/spring/ehcache.xml |   64 +-
 .../resources/META-INF/spring/hikariDataSource.xml |   14 +-
 .../resources/META-INF/spring/infrastructure.xml   |   48 +-
 .../main/resources/META-INF/spring/jdbc.properties |    2 +-
 .../resources/META-INF/spring/securityContext.xml  |  376 +-
 .../main/resources/META-INF/spring/spmContext.xml  |    6 +-
 .../src/main/resources/META-INF/spring/swagger.xml |    2 +-
 .../core_db/V100__Group_saving_summary_report.sql  |    2 +-
 ..._add_mulitplesof_to_account_transfers_table.sql |    2 +-
 .../core_db/V102__client_attendance_tables.sql     |   30 +-
 .../V103__cluster_support_for_batch_jobs.sql       |   12 +-
 .../core_db/V104__permissions_for_transfers.sql    |    2 +-
 ...V105__track_loan_transaction_against_office.sql |    2 +-
 .../V106__more_permissions_for_transfers.sql       |    2 +-
 .../core_db/V107__datatable_code_mappings.sql      |   10 +-
 .../core_db/V108__client_has_transfer_office.sql   |    6 +-
 ...count_transfer_withdrawal_fee_configuration.sql |    4 +-
 .../V10__interest-posting-fields-for-savings.sql   |    2 +-
 ...suspense_account_for_existing_loan_products.sql |    2 +-
 ...nstraint_approach_for_datatables_by_default.sql |    2 +-
 .../core_db/V112__mixreport_sql_support.sql        |  112 +-
 ...3__track_savings_transaction_against_office.sql |    2 +-
 ...ccount_for_existing_savings_products - Copy.sql |    2 +-
 .../core_db/V115__permissions_for_cache_api.sql    |    2 +-
 .../V116__track_currency_for_journal_entries.sql   |    6 +-
 .../core_db/V117__loan_charge_from_savings.sql     |   26 +-
 .../V118_1__savings_charge_patch_update.sql        |    4 +-
 ...e_duplicate_fund_source_to_account_mappings.sql |    2 +-
 ...pense_account_for_existing_savings_products.sql |    2 +-
 ...r_income_from_penalties_for savings_product.sql |    2 +-
 ...18_7__move_withdrawal_annual_fee_to_charges.sql |  294 +-
 ...verpayments_seperately_in_loan_transactions.sql |    4 +-
 .../migrations/core_db/V118__savings_charge.sql    |   72 +-
 .../core_db/V119__add_template_table.sql           |    6 +-
 .../core_db/V11__add-payment-details.sql           |   20 +-
 .../core_db/V120__accounting_running_balance.sql   |    4 +-
 ...accounting_running_balance_for_organization.sql |    2 +-
 .../V122__recurring_fee_support_for_savings.sql    |    8 +-
 .../V123__remove_payment_mode_for_savings.sql      |    2 +-
 ..._column_for_actual_fee_amount_or_percentage.sql |    2 +-
 ...initial_database_structure_for_sms_outbound.sql |    2 +-
 .../migrations/core_db/V127__mobile_no_fields.sql  |    2 +-
 .../V128__added_loan_installment_charge.sql        |   30 +-
 .../core_db/V129__client_and_group_timeline.sql    |    2 +-
 .../V12__add_external_id_to_couple_of_tables.sql   |   14 +-
 .../core_db/V130__calendar-history-table.sql       |   36 +-
 ...V131__holiday-status-column-and-permissions.sql |    6 +-
 .../core_db/V132__borrower_cycle_changes.sql       |   24 +-
 ...3__adding_payment_detail_with_journal_entry.sql |    8 +-
 .../V136_1__update_script_strechy_parameter.sql    |    2 +-
 .../V137__added_is_active_column_in_m_staff.sql    |    2 +-
 ...me_for_m_product_loan_and_m_savings_product.sql |   16 +-
 ...ue_for_is_active_updated_to_true_in_m_staff.sql |    4 +-
 ...ed_payment_detail_id_in_ac_gl_journal_entry.sql |    4 +-
 .../core_db/V140__added_loan_charge_status.sql     |    2 +-
 .../core_db/V144__spelling_mistake_corrections.sql |    2 +-
 ...add_force_password_reset_in_c_configuration.sql |    2 +-
 .../sql/migrations/core_db/V146__tranche_loans.sql |   42 +-
 .../V147__tranche_loans_column_name_changes.sql    |    6 +-
 .../migrations/core_db/V148__overdraft_changes.sql |   14 +-
 .../V149__add_created_date_savings_transaction.sql |    4 +-
 .../core_db/V14__rename_status_id_to_enum.sql      |    2 +-
 .../core_db/V150__basic_savings_report.sql         |    2 +-
 ...V151__add_default_savings_account_to_client.sql |    4 +-
 .../core_db/V152__added_grace_for_over_due.sql     |    4 +-
 .../core_db/V153__Insert_missed_permissions.sql    |    2 +-
 .../sql/migrations/core_db/V154__aging_details.sql |    2 +-
 .../core_db/V155__stretchy_into_pentaho.sql        |    2 -
 .../V156__added_loan_saving_txns_pentaho.sql       |    2 +-
 .../core_db/V157__overdue_charge_improvements.sql  |   18 +-
 ...action_id_column_m_portfolio_command_source.sql |    2 +-
 .../migrations/core_db/V15__center_permissions.sql |    2 +-
 ...Allow_nullValue_For_principal_on_lonProduct.sql |    2 +-
 .../core_db/V160__standing_instruction_changes.sql |  184 +-
 .../core_db/V161__added_accrual_batch_job.sql      |    6 +-
 .../core_db/V162__overdue_charge_batch_job.sql     |    2 +-
 .../core_db/V163__added_npa_for_loans.sql          |    6 +-
 .../core_db/V164__fd_and_rd_deposit_tables.sql     |    4 +-
 ...d_permission_for_disburse_to_saving_account.sql |    2 +-
 ...posit_amount_to_product_term_and_preclosure.sql |    8 +-
 ...er_fixed_deposit_interest_to_linked_account.sql |    6 +-
 ...reports_to_core_reports_use_report_to_false.sql |    2 +-
 .../V16__drop_min_max_column_on_loan_table.sql     |   12 +-
 ...pdate_deposit_accounts_maturity_details_job.sql |    2 +-
 ...171__added_mandatory_savings_and_rd_changes.sql |   98 +-
 .../V172__accounting_changes_for_transfers.sql     |   18 +-
 .../resources/sql/migrations/core_db/V173__ppi.sql |   80 +-
 .../V175__added_incentive_interest_rates.sql       |   66 +-
 ...176__updates_to_financial_activity_accounts.sql |    8 +-
 .../V177__cleanup_for_client_incentives.sql        |    2 +-
 ..._updates_to_financial_activity_accounts_pt2.sql |    2 +-
 ..._action_names_for_maker_checker_permissions.sql |    2 +-
 .../core_db/V17__update_stretchy_reporting_ddl.sql |    2 +-
 ..._vs_awaitingdisbursal_and_groupnamesbystaff.sql |    2 +-
 .../core_db/V181__standing_instruction_logging.sql |   18 +-
 ...ded_min_required_balance_to_savings_product.sql |    8 +-
 ..._added_min_balance_for_interest_calculation.sql |    4 +-
 ...te_min_required_balance_for_savings_product.sql |    4 +-
 ..._add_accrual_till_date_for_periodic_accrual.sql |    2 +-
 .../core_db/V186__added_periodic_accrual_job.sql   |    2 +-
 .../V187__added_permission_to_periodic_accrual.sql |    2 +-
 ...8__add_savingscharge_inactivate_permissions.sql |    2 +-
 .../V189__m_loan_interest_recalculation_tables.sql |   36 +-
 ...ssociategroup_disassociategroup_permissions.sql |    2 +-
 ...update_gl_account_increase_size_of_name_col.sql |    2 +-
 .../core_db/V192__interest_recalculate_job.sql     |    2 +-
 .../V193__added_column_joiningDate_for_staff.sql   |    2 +-
 ...nterestComponent_for_interest_recalculation.sql |    2 +-
 ...V195__moved_rest_frequency_to_product_level.sql |   12 +-
 ..._added_loan_running_balance_to_transactions.sql |    2 +-
 ...pdated_loan_running_balance_of_transactions.sql |    8 +-
 ...removed_extra_columns_from_schedule_history.sql |   38 +-
 .../core_db/V1__mifosplatform-core-ddl-latest.sql  |   40 +-
 .../sql/migrations/core_db/V201__webhooks.sql      |    2 -
 .../V202__savings_officer_history_table.sql        |    1 -
 ...ert_script_for_charges_paid_by_for_accruals.sql |    2 +-
 ...or_charge_and_interest_waiver_with_accruals.sql |    6 +-
 .../V206__interest_posting_configuration.sql       |    2 +-
 .../core_db/V207__min_max_clients_per_group.sql    |    4 +-
 .../V208__min_max_clients_in_group_redux.sql       |    6 +-
 .../V210__track_manually_adjusted_transactions.sql |    2 +-
 ..._days_between_disbursal_and_first_repayment.sql |    2 +-
 ...V212__add_NthDay_and_DayOfWeek_columns_loan.sql |    2 +-
 ...ay_and_DayOfWeek_columns_should_be_nullable.sql |    4 +-
 .../V215__guarantee_on_hold_fund_changes.sql       |   24 +-
 .../V216__adding_loan_proposed_amount_to_loan.sql  |    4 +-
 ..._client_substatus_and_codevalue_description.sql |   11 +-
 ..._and_datetime_for_loan_savings_transactions.sql |   10 +-
 ..._guarantor_on_hold_fund_changes_for_account.sql |   69 +-
 .../V21__activation-permissions-for-clients.sql    |    2 +-
 .../core_db/V220__account_number_preferences.sql   |   12 +-
 .../V221__add_version_for_m_savings_account.sql    |    2 +-
 ...antor_on_hold_fund_changes_for_transactions.sql |   15 +-
 .../V223__add_version_for_m_loan_account.sql       |    2 +-
 .../V224__client_lifecycle_adding_statuses.sql     |   26 +-
 ...ation_for_enforcing_calendars_for_jlg_loans.sql |    2 +-
 .../core_db/V227__loan-refund-permissions.sql      |   15 +-
 .../core_db/V228__entity_to_entity_access.sql      |   42 +-
 .../core_db/V229__teller_cash_management.sql       |  204 +-
 ...alter-group-for-consistency-add-permissions.sql |    2 +-
 ...0__role_status_and_correspoding_permissions.sql |    2 +-
 ...__m_cashier_transaction_added_currency_code.sql |    2 +-
 .../core_db/V232__insert_center_closure_reason.sql |    2 +-
 .../core_db/V233__Savings_Transaction_Receipt.sql  |    6 +-
 .../core_db/V234__opening_balaces_setup.sql        |   46 +-
 .../core_db/V235__add_ugd_template_id_m_hook.sql   |    2 +-
 ...36__individual_collection_sheet_permissions.sql |    2 +-
 ...7__add_threshold_config_for_last_instalment.sql |    8 +-
 .../V238__update_staff_display_name_length.sql     |    4 +-
 ...sable-configuration-for-client-group-status.sql |    2 +-
 ...ars_aging_config_for_interest_recalculation.sql |    6 +-
 .../migrations/core_db/V241__fixed_emi_changes.sql |    4 +-
 .../V242__entitytoentitymappingrelation.sql        |   32 +-
 .../V243__alter_loan_disbursement_details.sql      |    2 +-
 .../V244__staff_assignment_history_table.sql       |    2 +-
 .../migrations/core_db/V245__open_rd_changes.sql   |    1 -
 ...__drop_group_client_foreign_key_from_m_loan.sql |    2 +-
 ...pelling_principalThresholdForLastInstalment.sql |    2 +-
 .../V248__added_password_never_expired_to_User.sql |    2 +-
 .../core_db/V249__workingdays_permissions.sql      |    3 -
 ...client-foreign-key-constraint-in-loan-table.sql |    2 +-
 .../core_db/V250__password_validation_policy.sql   |    5 -
 .../migrations/core_db/V251__paymentType_table.sql |   46 +-
 .../V252__bug_fix_teller_cash_management.sql       |   10 +-
 .../V253__product_loan_configurable_attributes.sql |    4 +-
 .../core_db/V254__General_Ledger_Report.sql        |   21 +-
 .../V255__pre_close_interest_period_config.sql     |    2 +-
 ...56__Update script for General_Ledger_report.sql |    6 +-
 .../core_db/V257__staff_image_association.sql      |    6 +-
 .../core_db/V258__interest_compounding_changes.sql |   16 +-
 .../core_db/V259__alter_working_days.sql           |    2 +-
 ...ipt for Client_Loan_Account_Schedule_Report.sql |    4 +-
 .../core_db/V262__accountNumber_for_groups.sql     |    2 +-
 .../sql/migrations/core_db/V263__mifos_reports.sql |    3 -
 .../V265__modify_external_service_schema.sql       |   17 +-
 .../sql/migrations/core_db/V266__client_fees.sql   |   97 +-
 .../V267__client_transaction_permissions.sql       |    2 +-
 .../core_db/V268__update_gmail_password.sql        |    2 +-
 .../V269__increased_calendar_title_length .sql     |    6 +-
 ..._add-support-for-withdrawal-fees-on-savings.sql |    2 +-
 .../V270__add_rounding_mode_configuration.sql      |    4 +-
 .../V271__accounting_for_client_charges.sql        |    8 +-
 .../V272__loan_tranche_disbursement_charge.sql     |   28 +-
 .../sql/migrations/core_db/V273__oauth_changes.sql |    1 -
 .../core_db/V274__Loan_Reschedule_Code_Value.sql   |    4 -
 ...n_transaction_to_repayment_schedule_mapping.sql |   28 +-
 .../core_db/V276__loan_recalulated_till_date.sql   |    2 +-
 .../core_db/V277__Loan_Product_Provisioning.sql    |  129 +-
 .../V278__LoanTransactionProcessingStrategy.sql    |    9 +-
 .../migrations/core_db/V279__floating_rates.sql    |   76 +-
 .../V27__add-loan-type-column-to-loan-table.sql    |    2 +-
 .../core_db/V280__spm_framework_initial_tables.sql |   18 +-
 ..._add_configuration_param_backdate-penalties.sql |    1 -
 .../core_db/V282__CustomerSelfService.sql          |   16 +-
 .../core_db/V283__Variable_Installments.sql        |   30 +-
 .../migrations/core_db/V284__update_codevalue.sql  |    2 +-
 .../core_db/V285__undo_last_tranche_script.sql     |    1 -
 .../V286__partial_period_interest_calcualtion.sql  |   13 +-
 .../migrations/core_db/V289__client_non_person.sql |   35 +-
 ...28__accounting-abstractions-and-autoposting.sql |   74 +-
 .../V290__shares_dividends_permissions_script.sql  |    2 +-
 .../V291__organisation_start_date_config.sql       |    2 +-
 ...93__interest_rate_chart_support_for_amounts.sql |   18 +-
 .../V296__skip_repayment_on first-day_of_month.sql |    2 +-
 .../core_db/V297__Adding_Meeting_Time_column.sql   |    2 +-
 .../core_db/V298__savings_interest_tax.sql         |  177 +-
 .../migrations/core_db/V299__share_products.sql    |   98 +-
 ...V29__add-support-for-annual-fees-on-savings.sql |    2 +-
 .../V2__mifosx-base-reference-data-utf8.sql        |   30 +-
 ...figuration_for_allow_changing_of_emi_amount.sql |    4 +-
 ...301__recurring_moratorium_principal_periods.sql |    6 +-
 .../V302__add_status_to_client_identifier.sql      |    1 -
 ...customer_self_service_third_party_transfers.sql |   22 +-
 ...y_freq_and_insertion_script_for_accrual_job.sql |   20 +-
 ...__add_domancy_tracking_job_to_savings_group.sql |    6 +-
 .../migrations/core_db/V307__add_share_notes.sql   |    2 +-
 ...d_interest_recalculation_in_savings_account.sql |    5 +-
 .../V309__add_loan_write_off_reason_code.sql       |    2 +-
 ...add-referenceNumber-to-acc_gl_journal_entry.sql |    2 +-
 ...titytoentityaccess_to_entitytoentitymapping.sql |    4 +-
 .../core_db/V311__foreclosure_details.sql          |    6 +-
 .../V312__add_is_mandatory_to_code_value.sql       |    2 +-
 .../core_db/V313__multi_rescheduling_script.sql    |   64 +-
 ...ed_with_disbursement_date_in_m_product_loan.sql |    2 +-
 .../V316__address_module_tables_metadat.sql        |  118 +-
 .../core_db/V317__report_mailing_job_module.sql    |    6 +-
 .../sql/migrations/core_db/V318__topuploan.sql     |   23 +-
 .../migrations/core_db/V319__client_undoreject.sql |    6 +-
 .../V321__boolean_field_As_Interest_PostedOn.sql   |    2 +-
 .../core_db/V322_1__scheduled_email_campaign.sql   |   53 +-
 .../core_db/V322_2__email_business_rules.sql       |    2 +-
 .../sql/migrations/core_db/V322__sms_campaign.sql  |  114 +-
 .../migrations/core_db/V324__datatable_checks.sql  |   24 +-
 .../core_db/V325__add_is_staff_client_data.sql     |    2 +-
 ...26__data_migration_for_client_tr_gl_entries.sql |    2 +-
 .../core_db/V327__creditbureau_configuration.sql   |    8 +-
 .../V329__sms_messages_without_campaign.sql        |    2 +-
 ...disassociate-clients-from-group-permissions.sql |    2 +-
 ...V330__savings_account_transaction_releaseId.sql |   13 +-
 .../core_db/V331__holiday_schema_changes.sql       |    2 +-
 .../V332__self_service_registration_schema.sql     |   28 +-
 .../sql/migrations/core_db/V333__adhocquery.sql    |   28 +-
 .../core_db/V334__notification_module_tables.sql   |    2 -
 .../core_db/V335__self_service_user_role.sql       |    2 +-
 .../core_db/V336__sms_campaign_notification.sql    |   29 +-
 .../core_db/V337__equal_amortization.sql           |    2 +-
 .../core_db/V338__two_factor_authentication.sql    |    2 +-
 .../core_db/V339__report-run-frequency.sql         |    2 +-
 .../core_db/V340__nullable-adhoc-email.sql         |    2 +-
 .../migrations/core_db/V341__m_import_document.sql |    2 +-
 ...d_paging_recalculate_interest_for_loans_job.sql |    2 +-
 .../V345__reports_for_self_service_user.sql        |    3 +-
 .../V346__nullable_saving_product_description.sql  |    2 +-
 .../core_db/V348__m_trial_balance_table.sql        |   14 +-
 .../core_db/V349__client_transfer_details.sql      |   40 +-
 .../migrations/core_db/V351__pocket_mapping.sql    |   26 +-
 .../sql/migrations/core_db/V352__interop_init.sql  |   34 +-
 .../V354__self_service_user_unique_for_client.sql  |    2 +-
 .../core_db/V356__GSIM_migration_script.sql        |   38 +-
 .../core_db/V357__GLIM_migration_script.sql        |   40 +-
 .../V358__fixed_deposit_rollover_transfer.sql      |    2 +-
 ...35__add_hierarchy_column_for_acc_gl_account.sql |    2 +-
 .../V36__add_tag_id_column_for_acc_gl_account.sql  |    2 +-
 .../core_db/V39__payment-channels-updates.sql      |   10 +-
 .../V40__add_permissions_for_accounting_rule.sql   |    2 +-
 ...efault_value_for_id_for_acc_accounting_rule.sql |    2 +-
 .../core_db/V43__accounting-for-savings.sql        |    2 +-
 .../V44__document-increase-size-of-column-type.sql |    2 +-
 .../core_db/V45__create_acc_rule_tags_table.sql    |   20 +-
 .../migrations/core_db/V48__adding-S3-Support.sql  |   44 +-
 ...V49__track-loan-charge-payment-transactions.sql |   18 +-
 .../V50__add-grace-settings-to-loan-product.sql    |    2 +-
 ...-details-related-to-installment-performance.sql |    2 +-
 ...boolean_support_cols_to_acc_accounting_rule.sql |    2 +-
 ...ck-advance-and-late-payments-on-installment.sql |    2 +-
 .../V54__charge-to-income-account-mappings.sql     |    4 +-
 ...dditional-transaction-processing-strategies.sql |    2 +-
 .../V56__track-overpaid-amount-on-loans.sql        |    2 +-
 ...bit_and_credit_accounts_acc_accounting_rule.sql |    4 +-
 .../core_db/V58__create-holiday-tables_changed.sql |   16 +-
 ...V59__add_group_roles_schema_and_permissions.sql |   26 +-
 ...__update-savings-product-and-account-tables.sql |    2 +-
 .../core_db/V60__quipo_dashboard_reports.sql       |   96 +-
 .../core_db/V61__txn_running_balance_example.sql   |   64 +-
 .../V62__add_staff_id_to_m_client_changed.sql      |    2 +-
 ...nc_disbursement_with_meeting_column_to_loan.sql |    2 +-
 .../V64__add_permission_for_assign_staff.sql       |    2 +-
 .../core_db/V65__fix_rupee_symbol_issues.sql       |    2 +-
 .../V68__quipo_dashboard_reports_updated.sql       |   96 +-
 .../core_db/V69__loans_in_advance_initialise.sql   |    2 +-
 .../V6__add_min_max_principal_column_to_loan.sql   |    8 +-
 .../V70__quipo_program_detail_query_fix.sql        |    4 +-
 ...nsert_reschedule_repayment_to_configuration.sql |    2 +-
 .../core_db/V72__add_m_loan_counter_changes.sql    |   26 +-
 ...cheduled_to_and_processed_column_to_holiday.sql |    4 +-
 .../V74__alter_m_loan_counter_table_add_group.sql  |    4 +-
 ...ule-repayments-on-holidays_to_configuration.sql |    2 +-
 .../core_db/V77__alter_m_product_loan_changes.sql  |    2 +-
 .../core_db/V79__schedule_jobs_tables.sql          |   50 +-
 .../V7__remove_read_makerchecker_permission.sql    |    1 -
 .../core_db/V80__schedule_jobs_tables_updates.sql  |   18 +-
 .../core_db/V81__savings_related_changes.sql       |    2 +-
 ...dule_jobs_tables_updates_for_running_status.sql |    4 +-
 .../core_db/V83__non-working-days-table.sql        |   10 +-
 .../V84__undo_savings_transaction_permission.sql   |    2 +-
 .../core_db/V85__product_mix_related_changes.sql   |   20 +-
 .../core_db/V86__update-working-days.sql           |    2 +-
 .../core_db/V87__add_permission_for_scheduler.sql  |    2 +-
 ...__added_update_constrain_for_scheduler_jobs.sql |    2 +-
 .../core_db/V89__added_scheduler_group.sql         |    2 +-
 ...posit-transaction-permissions-if-they-exist.sql |    1 -
 ...ion_settings_for_holiday_and_non_workingday.sql |    2 +-
 .../core_db/V91__apply_annual_fees_permission.sql  |    2 +-
 .../core_db/V93__loan_transaction_external_id.sql  |    2 +-
 .../core_db/V94__added_savings_accont type.sql     |    2 +-
 .../V96__savings_accounts_transfers_table.sql      |    2 +-
 ...d_permission_for_adjust_savings_transaction.sql |    2 +-
 .../V98__added_currency_roundof_for_multipleof.sql |   12 +-
 ...n_max_constraint_column_to_loan_loanproduct.sql |   56 +-
 .../V2__externalize-connection-properties.sql      |    2 +-
 .../list_db/V3__deadlock-retry-properties.sql      |    2 +-
 ...columns_and_tenants_server_connection_table.sql |   77 +-
 .../sql/migrations/sample_data/barebones_db.sql    | 4424 +++++++++---------
 .../migrations/sample_data/interop_sample_data.sql |    2 +-
 .../migrations/sample_data/load_sample_data.sql    | 4902 ++++++++++----------
 .../src/main/resources/swagger-ui/response.json    |    2 +-
 fineract-provider/src/main/webapp/WEB-INF/web.xml  |   14 +-
 .../accounting/common/AccountingConstantsTest.java |    9 +-
 .../provider/CommandHandlerProviderTest.java       |    5 +-
 .../java/org/apache/fineract/common/Utils.java     |    5 +-
 .../ClasspathHellDuplicatesCheckExtension.java     |   20 +-
 .../ClasspathHellDuplicatesCheckRuleTest.java      |    9 +-
 .../classdupes/ClasspathHellDuplicatesChecker.java |  137 +-
 ...TestsWithoutDatabaseAndNoJobsConfiguration.java |    6 +-
 .../core/exception/MultiExceptionTest.java         |    4 +-
 .../security/utils/SQLBuilderTest.java             |   11 +-
 .../mix/report/service/XBRLBuilderTest.java        |    7 +-
 .../org/apache/fineract/notification/Listener.java |    4 +-
 .../apache/fineract/notification/StorageTest.java  |   49 +-
 ...nRepaymentScheduleTransactionProcessorTest.java |    3 +-
 ...nRepaymentScheduleTransactionProcessorTest.java |    3 +-
 .../LoanProductRelatedDetailTestHelper.java        |   10 +-
 .../LoanRepaymentScheduleInstallmentBuilder.java   |    2 +-
 .../loanaccount/LoanScheduleTestDataHelper.java    |    4 +-
 .../portfolio/loanaccount/MoneyBuilder.java        |    2 +-
 .../template/TemplateMergeServiceTest.java         |    4 +-
 2899 files changed, 44580 insertions(+), 46109 deletions(-)

diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle
index ef46d57..f6d1554 100644
--- a/fineract-provider/build.gradle
+++ b/fineract-provider/build.gradle
@@ -119,7 +119,7 @@ dependencyManagement {
             // FINERACT-940 && FINERACT-966 https://github.com/spotbugs/spotbugs/issues/1128
             exclude 'xpp3:xpp3'
             exclude 'pull-parser:pull-parser'
-	    }
+        }
 
         dependencySet(group: 'com.sun.jersey', version: jerseyVersion) {
             entry 'jersey-core'
@@ -156,8 +156,8 @@ project.ext.mysqlPassword='mysql'
 group = 'org.apache.fineract'
 buildDir = new File(rootProject.projectDir, "../build")
 repositories {
-	jcenter()
-	// mavenLocal() // useful for local dev using MariaDB4j SNAPSHOTs (not needed for real-world non-SNAPHOT builds)
+    jcenter()
+    // mavenLocal() // useful for local dev using MariaDB4j SNAPSHOTs (not needed for real-world non-SNAPHOT builds)
 }
 
 // If we are running Gradle within Eclipse to enhance classes with OpenJPA,
@@ -167,7 +167,7 @@ if (project.hasProperty('env') && project.getProperty('env') == 'eclipse')
     sourceSets.main.java.outputDir = new File(rootProject.projectDir, "bin/main")
 }
 
-eclipse 
+eclipse
 {
     project {
         buildCommand([ LaunchConfigHandle: "<project>/.externalToolBuilders/OpenJPA Enhance Builder.launch" ],  'org.eclipse.ui.externaltools.ExternalToolBuilder')
@@ -206,12 +206,12 @@ spotless {
 
   java {
     importOrder() //sort imports alphabetically
-    removeUnusedImports() 
+    removeUnusedImports()
     eclipse().configFile '../config/fineractdev-formatter.xml'
     endWithNewline()
     trimTrailingWhitespace()
   }
-  
+
   lineEndings 'UNIX'
 }
 
@@ -299,25 +299,25 @@ rat {
 }
 
 configurations {
-	providedRuntime // needed for Spring Boot executable WAR
+    providedRuntime // needed for Spring Boot executable WAR
     providedCompile
-	compile() {
-		exclude module: 'hibernate-entitymanager'
-		exclude module: 'hibernate-validator'
-		exclude module: 'activation'
-		exclude module: 'bcmail-jdk14'
-		exclude module: 'bcprov-jdk14'
-		exclude module: 'bctsp-jdk14'
-		exclude module: 'c3p0'
-		exclude module: 'stax-api'
-		exclude module: 'jaxb-api'
-		exclude module: 'jaxb-impl'
-		exclude module: 'jboss-logging'
-		exclude module: 'itext-rtf'
-		exclude module: 'classworlds'
-	}
-	runtime
-	all*.exclude module: 'jul-to-slf4j' // see FINERACT-700 re. ClassCircularityError: java/util/logging/LogRecord
+    compile() {
+        exclude module: 'hibernate-entitymanager'
+        exclude module: 'hibernate-validator'
+        exclude module: 'activation'
+        exclude module: 'bcmail-jdk14'
+        exclude module: 'bcprov-jdk14'
+        exclude module: 'bctsp-jdk14'
+        exclude module: 'c3p0'
+        exclude module: 'stax-api'
+        exclude module: 'jaxb-api'
+        exclude module: 'jaxb-impl'
+        exclude module: 'jboss-logging'
+        exclude module: 'itext-rtf'
+        exclude module: 'classworlds'
+    }
+    runtime
+    all*.exclude module: 'jul-to-slf4j' // see FINERACT-700 re. ClassCircularityError: java/util/logging/LogRecord
 }
 
 tasks.withType(JavaCompile) {
@@ -489,21 +489,21 @@ pmd {
 */
 
 war {
-	from('../licenses/binary/') { // notice the parens
-		into "WEB-INF/licenses/binary/" // no leading slash
-	}
-	from('../LICENSE_RELEASE') { // notice the parens
-		into "WEB-INF/" // no leading slash
-	}
-	from('../NOTICE_RELEASE') { // notice the parens
-		into "WEB-INF/" // no leading slash
-	}
-	rename ('LICENSE_RELEASE', 'LICENSE')
-	rename ('NOTICE_RELEASE', 'NOTICE')
-
-	from('../DISCLAIMER') { // notice the parens
-		into "WEB-INF/" // no leading slash
-	}
+    from('../licenses/binary/') { // notice the parens
+        into "WEB-INF/licenses/binary/" // no leading slash
+    }
+    from('../LICENSE_RELEASE') { // notice the parens
+        into "WEB-INF/" // no leading slash
+    }
+    from('../NOTICE_RELEASE') { // notice the parens
+        into "WEB-INF/" // no leading slash
+    }
+    rename ('LICENSE_RELEASE', 'LICENSE')
+    rename ('NOTICE_RELEASE', 'NOTICE')
+
+    from('../DISCLAIMER') { // notice the parens
+        into "WEB-INF/" // no leading slash
+    }
     war.finalizedBy(bootWar)
 }
 
@@ -588,7 +588,7 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
 
 sourceSets {
  integrationTest {
-    	compileClasspath += main.output + test.output
+        compileClasspath += main.output + test.output
         runtimeClasspath += main.output + test.output
     }
 }
@@ -608,20 +608,20 @@ task integrationTest(type:Test) {
 }
 
 integrationTest {
-	useJUnitPlatform()
-	testLogging { // FINERACT-927
-		events "skipped", "failed"
-		showStandardStreams = false
-		exceptionFormat "full"
-	}
+    useJUnitPlatform()
+    testLogging { // FINERACT-927
+        events "skipped", "failed"
+        showStandardStreams = false
+        exceptionFormat "full"
+    }
 }
 test {
-	useJUnitPlatform()
-	testLogging { // FINERACT-927
-		events "skipped", "failed"
-		showStandardStreams = false
-		exceptionFormat "full"
-	}
+    useJUnitPlatform()
+    testLogging { // FINERACT-927
+        events "skipped", "failed"
+        showStandardStreams = false
+        exceptionFormat "full"
+    }
 }
 
 
diff --git a/fineract-provider/config/checkstyle/checkstyle.xml b/fineract-provider/config/checkstyle/checkstyle.xml
index 11098de..d9022f0 100644
--- a/fineract-provider/config/checkstyle/checkstyle.xml
+++ b/fineract-provider/config/checkstyle/checkstyle.xml
@@ -47,7 +47,7 @@
         <property name="fileExtensions" value="java"/>
     </module>
   -->
-   
+
     <module name="TreeWalker">
     <module name="SuppressWarningsHolder" />
     <module name="RegexpSinglelineJava">
@@ -114,7 +114,7 @@
         </module>
           <module name="UpperEll"/>
           <module name="NeedBraces"/>
-          <module name="ArrayTypeStyle"/>     
+          <module name="ArrayTypeStyle"/>
           <module name="NoLineWrap"/>
          <module name="IllegalTokenText">
             <property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
@@ -144,14 +144,14 @@
         <module name="MutableException"/>
         <module name="com.github.sevntu.checkstyle.checks.coding.AvoidHidingCauseExceptionCheck" />
 
-      
-     
-      
+
+
+
 
         <module name="OuterTypeFilename"/>
-        
-       
-      
+
+
+
         <module name="LeftCurly" />
         <module name="RightCurly">
             <property name="option" value="alone"/>
@@ -168,12 +168,12 @@
              value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
         </module>
         <module name="ParenPad" />
-     
+
         <module name="MultipleVariableDeclarations"/>
-  
+
         <module name="MissingSwitchDefault"/>
 
-      
+
         <module name="ModifierOrder"/>
         <module name="RedundantModifier"/>
         <module name="EmptyLineSeparator">
@@ -211,7 +211,7 @@
             <message key="name.invalidPattern"
              value="Class type name ''{0}'' must match pattern ''{1}''."/>
         </module>
-    
+
         <module name="ConstantName" />
         <module name="NoFinalizer"/>
         <module name="GenericWhitespace">
diff --git a/fineract-provider/dependencies.gradle b/fineract-provider/dependencies.gradle
index e059d85..cba17e4 100644
--- a/fineract-provider/dependencies.gradle
+++ b/fineract-provider/dependencies.gradle
@@ -22,12 +22,12 @@ dependencies {
     spotbugsPlugins "jp.skypencil.findbugs.slf4j:bug-pattern:1.5.0@jar"
     spotbugs 'com.github.spotbugs:spotbugs:4.0.4'
 
-	// Never use "compile" scope, but make all dependencies either 'implementation', 'runtimeOnly' or 'testCompile'.
-	// Note that we never use 'api', because Fineract at least currently is a simple monolithic application ("WAR"), not a library.
-	// We also (normally should have) no need to ever use 'compileOnly'.
+    // Never use "compile" scope, but make all dependencies either 'implementation', 'runtimeOnly' or 'testCompile'.
+    // Note that we never use 'api', because Fineract at least currently is a simple monolithic application ("WAR"), not a library.
+    // We also (normally should have) no need to ever use 'compileOnly'.
 
-	// implementation dependencies are directly used (compiled against) in src/main (and src/test)
-	//
+    // implementation dependencies are directly used (compiled against) in src/main (and src/test)
+    //
     implementation(
             //'ch.vorburger.mariaDB4j:mariaDB4j:2.4.0',
 
@@ -79,50 +79,50 @@ dependencies {
              'com.github.spotbugs:spotbugs-annotations',
     )
     implementation ('io.swagger:swagger-jersey-jaxrs') {
-		exclude group: 'javax.validation'
+        exclude group: 'javax.validation'
     }
     implementation ('org.apache.activemq:activemq-broker') {
         exclude group: 'org.apache.geronimo.specs'
     }
     implementation ('org.springframework.boot:spring-boot-starter-data-jpa') {
-		exclude group: 'org.hibernate'
+        exclude group: 'org.hibernate'
+    }
+    implementation ('org.apache.openjpa:openjpa') {
+        exclude group: 'org.eclipse.persistence'
+        exclude group: 'org.apache.geronimo.specs'
     }
-	implementation ('org.apache.openjpa:openjpa') {
-		exclude group: 'org.eclipse.persistence'
-		exclude group: 'org.apache.geronimo.specs'
-	}
     implementation ('org.quartz-scheduler:quartz') {
         exclude group: 'com.zaxxer', module: 'HikariCP-java7'
     }
     implementation ('com.amazonaws:aws-java-sdk-s3') {
-		exclude group: 'commons-logging'
+        exclude group: 'commons-logging'
     }
     implementation ('org.mnode.ical4j:ical4j') {
-		exclude group: 'commons-logging'
+        exclude group: 'commons-logging'
     }
     implementation ('org.ehcache:ehcache') {
         exclude group: 'org.glassfish.jaxb', module: 'jaxb-runtime'
     }
 
-	// runtimeOnly dependencies are things that Fineract code has no direct compile time dependency on, but which must be present at run-time
-	runtimeOnly(
+    // runtimeOnly dependencies are things that Fineract code has no direct compile time dependency on, but which must be present at run-time
+    runtimeOnly(
             'org.apache.bval:org.apache.bval.bundle',
             'org.springframework.boot:spring-boot-starter-actuator',
 
             // Although fineract (at the time of writing) doesn't have any compile time dep. on httpclient,
             // it's useful to have this for the Spring Boot TestRestTemplate http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-rest-templates-test-utility
             'org.apache.httpcomponents:httpclient',
-	)
+    )
 
-	// testCompile dependencies are ONLY used in src/test and/or src/integrationTest, not src/main.
-	// Do NOT repeat dependencies which are ALREADY in implementation or runtimeOnly!
-	//
+    // testCompile dependencies are ONLY used in src/test and/or src/integrationTest, not src/main.
+    // Do NOT repeat dependencies which are ALREADY in implementation or runtimeOnly!
+    //
     testImplementation( 'org.mockito:mockito-core',
             'org.mockito:mockito-junit-jupiter',
             'org.junit.platform:junit-platform-runner', // required to be able to run tests directly under Eclipse, see FINERACT-943 & FINERACT-1021
             'io.github.classgraph:classgraph',
             'org.awaitility:awaitility'
-	)
+    )
     testImplementation ('io.rest-assured:rest-assured') {
         exclude group: 'commons-logging'
         exclude group: 'org.apache.sling'
diff --git a/fineract-provider/properties/oauth/application.properties b/fineract-provider/properties/oauth/application.properties
index 881ad0e..fbe9c9f 100644
--- a/fineract-provider/properties/oauth/application.properties
+++ b/fineract-provider/properties/oauth/application.properties
@@ -26,4 +26,4 @@ management.info.git.mode=FULL
 
 # FINERACT-914
 server.forward-headers-strategy=framework
-spring.cache.jcache.config=classpath:/META-INF/spring/ehcache.xml
\ No newline at end of file
+spring.cache.jcache.config=classpath:/META-INF/spring/ehcache.xml
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountNumberPreferencesTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountNumberPreferencesTest.java
index 299f451..d10110d 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountNumberPreferencesTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountNumberPreferencesTest.java
@@ -152,10 +152,11 @@ public class AccountNumberPreferencesTest {
             Integer id = (Integer) preferenceId.get("id");
             HashMap<String, Object> delResponse = this.accountNumberPreferencesHelper.deleteAccountNumberPreference(id, this.responseSpec,
                     "");
-            LOG.info("Successfully deleted account number preference (ID: {} )",delResponse.get("resourceId"));
+            LOG.info("Successfully deleted account number preference (ID: {} )", delResponse.get("resourceId"));
         }
         /* Deletion of invalid account preference ID should fail */
-        LOG.info("---------------------------------DELETING ACCOUNT NUMBER PREFERENCE WITH INVALID ID------------------------------------------");
+        LOG.info(
+                "---------------------------------DELETING ACCOUNT NUMBER PREFERENCE WITH INVALID ID------------------------------------------");
 
         HashMap<String, Object> deletionError = this.accountNumberPreferencesHelper.deleteAccountNumberPreference(10,
                 this.responseNotFoundError, "");
@@ -180,25 +181,25 @@ public class AccountNumberPreferencesTest {
     }
 
     private void createAccountNumberPreference() {
-        this.clientAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createClientAccountNumberPreference(
-                this.responseSpec, "resourceId");
-        LOG.info("Successfully created account number preferences for Client (ID: {})",this.clientAccountNumberPreferenceId);
+        this.clientAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper
+                .createClientAccountNumberPreference(this.responseSpec, "resourceId");
+        LOG.info("Successfully created account number preferences for Client (ID: {})", this.clientAccountNumberPreferenceId);
 
-        this.loanAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createLoanAccountNumberPreference(
-                this.responseSpec, "resourceId");
+        this.loanAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper
+                .createLoanAccountNumberPreference(this.responseSpec, "resourceId");
         LOG.info("Successfully created account number preferences for Loan (ID: {} )", this.loanAccountNumberPreferenceId);
 
-        this.savingsAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createSavingsAccountNumberPreference(
-                this.responseSpec, "resourceId");
-        LOG.info("Successfully created account number preferences for Savings (ID: {})" , this.savingsAccountNumberPreferenceId);
+        this.savingsAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper
+                .createSavingsAccountNumberPreference(this.responseSpec, "resourceId");
+        LOG.info("Successfully created account number preferences for Savings (ID: {})", this.savingsAccountNumberPreferenceId);
 
-        this.groupsAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createGroupsAccountNumberPreference(
-                this.responseSpec, "resourceId");
-        LOG.info("Successfully created account number preferences for Groups (ID: {})" , this.groupsAccountNumberPreferenceId);
+        this.groupsAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper
+                .createGroupsAccountNumberPreference(this.responseSpec, "resourceId");
+        LOG.info("Successfully created account number preferences for Groups (ID: {})", this.groupsAccountNumberPreferenceId);
 
-        this.centerAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper.createCenterAccountNumberPreference(
-                this.responseSpec, "resourceId");
-        LOG.info("Successfully created account number preferences for Center (ID: {})" ,this.centerAccountNumberPreferenceId);
+        this.centerAccountNumberPreferenceId = (Integer) this.accountNumberPreferencesHelper
+                .createCenterAccountNumberPreference(this.responseSpec, "resourceId");
+        LOG.info("Successfully created account number preferences for Center (ID: {})", this.centerAccountNumberPreferenceId);
 
         this.accountNumberPreferencesHelper.verifyCreationOfAccountNumberPreferences(this.clientAccountNumberPreferenceId,
                 this.loanAccountNumberPreferenceId, this.savingsAccountNumberPreferenceId, this.groupsAccountNumberPreferenceId,
@@ -211,10 +212,11 @@ public class AccountNumberPreferencesTest {
 
     private void createAccountNumberPreferenceDuplicateData(final String accountType, final String prefixType) {
         /* Creating account Preference with duplicate data should fail */
-        LOG.info("---------------------------------CREATING ACCOUNT NUMBER PREFERENCE WITH DUPLICATE DATA------------------------------------------");
+        LOG.info(
+                "---------------------------------CREATING ACCOUNT NUMBER PREFERENCE WITH DUPLICATE DATA------------------------------------------");
 
-        HashMap<String, Object> creationError = this.accountNumberPreferencesHelper.createAccountNumberPreferenceWithInvalidData(
-                this.responseForbiddenError, accountType, prefixType, "");
+        HashMap<String, Object> creationError = this.accountNumberPreferencesHelper
+                .createAccountNumberPreferenceWithInvalidData(this.responseForbiddenError, accountType, prefixType, "");
 
         Assertions.assertEquals("error.msg.account.number.format.duplicate.account.type",
                 creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
@@ -224,34 +226,36 @@ public class AccountNumberPreferencesTest {
     private void createAccountNumberPreferenceInvalidData(final String accountType, final String prefixType) {
 
         /* Creating account Preference with invalid data should fail */
-        LOG.info("---------------------------------CREATING ACCOUNT NUMBER PREFERENCE WITH INVALID DATA------------------------------------------");
+        LOG.info(
+                "---------------------------------CREATING ACCOUNT NUMBER PREFERENCE WITH INVALID DATA------------------------------------------");
 
-        HashMap<String, Object> creationError = this.accountNumberPreferencesHelper.createAccountNumberPreferenceWithInvalidData(
-                this.responseValidationError, accountType, prefixType, "");
+        HashMap<String, Object> creationError = this.accountNumberPreferencesHelper
+                .createAccountNumberPreferenceWithInvalidData(this.responseValidationError, accountType, prefixType, "");
 
-        if (creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE).equals(
-                "validation.msg.accountNumberFormat.accountType.is.not.within.expected.range")) {
+        if (creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE)
+                .equals("validation.msg.accountNumberFormat.accountType.is.not.within.expected.range")) {
             Assertions.assertEquals("validation.msg.accountNumberFormat.accountType.is.not.within.expected.range",
                     creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
-        } else if (creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE).equals(
-                "validation.msg.accountNumberFormat.prefixType.is.not.one.of.expected.enumerations")) {
+        } else if (creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE)
+                .equals("validation.msg.accountNumberFormat.prefixType.is.not.one.of.expected.enumerations")) {
             Assertions.assertEquals("validation.msg.accountNumberFormat.prefixType.is.not.one.of.expected.enumerations",
                     creationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
         }
     }
 
     private void updateAccountNumberPreference() {
-        HashMap<String, Object> accountNumberPreferences = this.accountNumberPreferencesHelper.updateAccountNumberPreference(
-                this.clientAccountNumberPreferenceId, "101", this.responseSpec, "");
+        HashMap<String, Object> accountNumberPreferences = this.accountNumberPreferencesHelper
+                .updateAccountNumberPreference(this.clientAccountNumberPreferenceId, "101", this.responseSpec, "");
 
-        LOG.info("--------------------------UPDATION SUCCESSFUL FOR ACCOUNT NUMBER PREFERENCE ID {}"
-                , accountNumberPreferences.get("resourceId"));
+        LOG.info("--------------------------UPDATION SUCCESSFUL FOR ACCOUNT NUMBER PREFERENCE ID {}",
+                accountNumberPreferences.get("resourceId"));
 
         this.accountNumberPreferencesHelper.verifyUpdationOfAccountNumberPreferences((Integer) accountNumberPreferences.get("resourceId"),
                 this.responseSpec, this.requestSpec);
 
         /* Update invalid account preference id should fail */
-        LOG.info("---------------------------------UPDATING ACCOUNT NUMBER PREFERENCE WITH INVALID DATA------------------------------------------");
+        LOG.info(
+                "---------------------------------UPDATING ACCOUNT NUMBER PREFERENCE WITH INVALID DATA------------------------------------------");
 
         /* Invalid Account Type */
         HashMap<String, Object> updationError = this.accountNumberPreferencesHelper.updateAccountNumberPreference(9999, "101",
@@ -260,8 +264,8 @@ public class AccountNumberPreferencesTest {
             Assertions.assertEquals("error.msg.resource.not.found", updationError.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
         }
         /* Invalid Prefix Type */
-        HashMap<String, Object> updationError1 = this.accountNumberPreferencesHelper.updateAccountNumberPreference(
-                this.clientAccountNumberPreferenceId, "103", this.responseValidationError, "");
+        HashMap<String, Object> updationError1 = this.accountNumberPreferencesHelper
+                .updateAccountNumberPreference(this.clientAccountNumberPreferenceId, "103", this.responseValidationError, "");
 
         Assertions.assertEquals("validation.msg.validation.errors.exist", updationError1.get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
 
@@ -288,8 +292,8 @@ public class AccountNumberPreferencesTest {
         this.groupAccountNo = Utils.performServerGet(requestSpec, responseSpec, GROUP_URL, "accountNo");
 
         if (isAccountPreferenceSetUp) {
-            String groupsPrefixName = (String) this.accountNumberPreferencesHelper.getAccountNumberPreference(
-                    this.groupsAccountNumberPreferenceId, "prefixType.value");
+            String groupsPrefixName = (String) this.accountNumberPreferencesHelper
+                    .getAccountNumberPreference(this.groupsAccountNumberPreferenceId, "prefixType.value");
 
             if (groupsPrefixName.equals(this.officeName)) {
 
@@ -313,8 +317,8 @@ public class AccountNumberPreferencesTest {
         Assertions.assertTrue(center.getName().equals(name));
 
         if (isAccountPreferenceSetUp) {
-            String centerPrefixName = (String) this.accountNumberPreferencesHelper.getAccountNumberPreference(
-                    this.centerAccountNumberPreferenceId, "prefixType.value");
+            String centerPrefixName = (String) this.accountNumberPreferencesHelper
+                    .getAccountNumberPreference(this.centerAccountNumberPreferenceId, "prefixType.value");
             final String CENTER_URL = "/fineract-provider/api/v1/centers/" + this.centerId + "?" + Utils.TENANT_IDENTIFIER;
 
             if (centerPrefixName.equals(this.officeName)) {
@@ -326,7 +330,6 @@ public class AccountNumberPreferencesTest {
         }
     }
 
-
     private void createAndValidateClientWithoutAccountPreference() {
         this.clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
         Assertions.assertNotNull(this.clientId);
@@ -337,8 +340,8 @@ public class AccountNumberPreferencesTest {
     private void createAndValidateClientBasedOnAccountPreference() {
         final String codeName = "ClientType";
         String clientAccountNo = null;
-        String clientPrefixName = (String) this.accountNumberPreferencesHelper.getAccountNumberPreference(
-                this.clientAccountNumberPreferenceId, "prefixType.value");
+        String clientPrefixName = (String) this.accountNumberPreferencesHelper
+                .getAccountNumberPreference(this.clientAccountNumberPreferenceId, "prefixType.value");
         if (clientPrefixName.equals(this.clientTypeName)) {
 
             /* Retrieve Code id for the Code "ClientType" */
@@ -390,7 +393,7 @@ public class AccountNumberPreferencesTest {
                 .withInterestRateFrequencyTypeAsYear().build(null);
 
         this.loanProductId = this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-        LOG.info("Successfully created loan product  (ID: {} )" , this.loanProductId);
+        LOG.info("Successfully created loan product  (ID: {} )", this.loanProductId);
     }
 
     private void createAndValidateLoanEntity(Boolean isAccountPreferenceSetUp) {
@@ -405,15 +408,15 @@ public class AccountNumberPreferencesTest {
                 .withSubmittedOnDate(dateString).withExpectedDisbursementDate(dateString).withPrincipalGrace("2").withInterestGrace("2")
                 .build(this.clientId.toString(), this.loanProductId.toString(), null);
 
-        LOG.info("Loan Application :{}" , loanApplicationJSON);
+        LOG.info("Loan Application :{}", loanApplicationJSON);
 
         this.loanId = this.loanTransactionHelper.getLoanId(loanApplicationJSON);
         String loanAccountNo = (String) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec, this.loanId,
                 "accountNo");
 
         if (isAccountPreferenceSetUp) {
-            String loanPrefixName = (String) this.accountNumberPreferencesHelper.getAccountNumberPreference(
-                    this.loanAccountNumberPreferenceId, "prefixType.value");
+            String loanPrefixName = (String) this.accountNumberPreferencesHelper
+                    .getAccountNumberPreference(this.loanAccountNumberPreferenceId, "prefixType.value");
             if (loanPrefixName.equals(this.officeName)) {
                 String loanOfficeName = (String) ClientHelper.getClient(requestSpec, responseSpec, this.clientId.toString(), "officeName");
                 this.validateAccountNumberLengthAndStartsWithPrefix(loanAccountNo, loanOfficeName);
@@ -422,10 +425,10 @@ public class AccountNumberPreferencesTest {
                         this.loanProductId, "shortName");
                 this.validateAccountNumberLengthAndStartsWithPrefix(loanAccountNo, loanShortName);
             }
-            LOG.info("SUCCESSFULLY CREATED LOAN APPLICATION BASED ON ACCOUNT PREFERENCES (ID: {} )",this.loanId );
+            LOG.info("SUCCESSFULLY CREATED LOAN APPLICATION BASED ON ACCOUNT PREFERENCES (ID: {} )", this.loanId);
         } else {
             this.validateAccountNumberLengthAndStartsWithPrefix(loanAccountNo, null);
-            LOG.info("SUCCESSFULLY CREATED LOAN APPLICATION (ID: {} )",loanId);
+            LOG.info("SUCCESSFULLY CREATED LOAN APPLICATION (ID: {} )", loanId);
         }
     }
 
@@ -449,7 +452,7 @@ public class AccountNumberPreferencesTest {
                 .withMinRequiredBalance(minRequiredBalance).withEnforceMinRequiredBalance(enforceMinRequiredBalance)
                 .withMinimumOpenningBalance(this.MINIMUM_OPENING_BALANCE).build();
         this.savingsProductId = SavingsProductHelper.createSavingsProduct(savingsProductJSON, this.requestSpec, this.responseSpec);
-        LOG.info("Sucessfully created savings product (ID: {} )",this.savingsProductId);
+        LOG.info("Sucessfully created savings product (ID: {} )", this.savingsProductId);
 
     }
 
@@ -458,14 +461,14 @@ public class AccountNumberPreferencesTest {
 
         this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
 
-        this.savingsId = this.savingsAccountHelper
-                .applyForSavingsApplication(this.clientId, this.savingsProductId, ACCOUNT_TYPE_INDIVIDUAL);
+        this.savingsId = this.savingsAccountHelper.applyForSavingsApplication(this.clientId, this.savingsProductId,
+                ACCOUNT_TYPE_INDIVIDUAL);
 
         String savingsAccountNo = (String) this.savingsAccountHelper.getSavingsAccountDetail(this.savingsId, "accountNo");
 
         if (isAccountPreferenceSetUp) {
-            String savingsPrefixName = (String) this.accountNumberPreferencesHelper.getAccountNumberPreference(
-                    this.savingsAccountNumberPreferenceId, "prefixType.value");
+            String savingsPrefixName = (String) this.accountNumberPreferencesHelper
+                    .getAccountNumberPreference(this.savingsAccountNumberPreferenceId, "prefixType.value");
 
             if (savingsPrefixName.equals(this.officeName)) {
                 String savingsOfficeName = (String) ClientHelper.getClient(requestSpec, responseSpec, this.clientId.toString(),
@@ -475,10 +478,10 @@ public class AccountNumberPreferencesTest {
                 String loanShortName = (String) this.savingsAccountHelper.getSavingsAccountDetail(this.savingsId, "shortName");
                 this.validateAccountNumberLengthAndStartsWithPrefix(savingsAccountNo, loanShortName);
             }
-            LOG.info("SUCCESSFULLY CREATED SAVINGS APPLICATION BASED ON ACCOUNT PREFERENCES (ID:  {} )",this.loanId);
+            LOG.info("SUCCESSFULLY CREATED SAVINGS APPLICATION BASED ON ACCOUNT PREFERENCES (ID:  {} )", this.loanId);
         } else {
             this.validateAccountNumberLengthAndStartsWithPrefix(savingsAccountNo, null);
-            LOG.info("SUCCESSFULLY CREATED SAVINGS APPLICATION (ID:{} )",this.savingsId);
+            LOG.info("SUCCESSFULLY CREATED SAVINGS APPLICATION (ID:{} )", this.savingsId);
         }
     }
 }
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountTransferTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountTransferTest.java
index e8a38d4..8989def 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountTransferTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountTransferTest.java
@@ -127,8 +127,8 @@ public class AccountTransferTest {
      */
     @AfterEach
     public void tearDown() {
-        Integer deletedFinancialActivityAccountId = financialActivityAccountHelper.deleteFinancialActivityAccount(
-                financialActivityAccountId, responseSpec, CommonConstants.RESPONSE_RESOURCE_ID);
+        Integer deletedFinancialActivityAccountId = financialActivityAccountHelper
+                .deleteFinancialActivityAccount(financialActivityAccountId, responseSpec, CommonConstants.RESPONSE_RESOURCE_ID);
         Assertions.assertNotNull(deletedFinancialActivityAccountId);
         Assertions.assertEquals(financialActivityAccountId, deletedFinancialActivityAccountId);
     }
@@ -214,10 +214,10 @@ public class AccountTransferTest {
         HashMap toSavingsSummaryAfter = this.savingsAccountHelper.getSavingsSummary(toSavingsID);
         assertEquals(toSavingsBalance, toSavingsSummaryAfter.get("accountBalance"),
                 "Verifying To Savings Account Balance after Account Transfer");
-        final JournalEntry[] office1LiabilityEntries = { new JournalEntry(Float.valueOf(ACCOUNT_TRANSFER_AMOUNT),
-                JournalEntry.TransactionType.CREDIT) };
-        final JournalEntry[] office2LiabilityEntries = { new JournalEntry(Float.valueOf(ACCOUNT_TRANSFER_AMOUNT),
-                JournalEntry.TransactionType.DEBIT) };
+        final JournalEntry[] office1LiabilityEntries = {
+                new JournalEntry(Float.valueOf(ACCOUNT_TRANSFER_AMOUNT), JournalEntry.TransactionType.CREDIT) };
+        final JournalEntry[] office2LiabilityEntries = {
+                new JournalEntry(Float.valueOf(ACCOUNT_TRANSFER_AMOUNT), JournalEntry.TransactionType.DEBIT) };
 
         this.journalEntryHelper.checkJournalEntryForLiabilityAccount(fromOfficeId, liabilityTransferAccount,
                 AccountTransferHelper.ACCOUNT_TRANSFER_DATE, office1LiabilityEntries);
@@ -311,10 +311,10 @@ public class AccountTransferTest {
         assertEquals(TRANSFER_AMOUNT_ADJUST, toLoanSummaryAfter.get("totalRepayment"),
                 "Verifying To Loan Repayment Amount after Account Transfer");
 
-        final JournalEntry[] office1LiabilityEntries = { new JournalEntry(Float.valueOf(ACCOUNT_TRANSFER_AMOUNT_ADJUST),
-                JournalEntry.TransactionType.CREDIT) };
-        final JournalEntry[] office2LiabilityEntries = { new JournalEntry(Float.valueOf(ACCOUNT_TRANSFER_AMOUNT_ADJUST),
-                JournalEntry.TransactionType.DEBIT) };
+        final JournalEntry[] office1LiabilityEntries = {
+                new JournalEntry(Float.valueOf(ACCOUNT_TRANSFER_AMOUNT_ADJUST), JournalEntry.TransactionType.CREDIT) };
+        final JournalEntry[] office2LiabilityEntries = {
+                new JournalEntry(Float.valueOf(ACCOUNT_TRANSFER_AMOUNT_ADJUST), JournalEntry.TransactionType.DEBIT) };
 
         this.journalEntryHelper.checkJournalEntryForLiabilityAccount(fromOfficeId, liabilityTransferAccount,
                 AccountTransferHelper.ACCOUNT_TRANSFER_DATE, office1LiabilityEntries);
@@ -432,10 +432,10 @@ public class AccountTransferTest {
         assertEquals(toSavingsBalance, toSavingsSummaryAfter.get("accountBalance"),
                 "Verifying From Savings Account Balance after Account Transfer");
 
-        final JournalEntry[] office1LiabilityEntries = { new JournalEntry(Float.valueOf(ACCOUNT_TRANSFER_AMOUNT_ADJUST),
-                JournalEntry.TransactionType.CREDIT) };
-        final JournalEntry[] office2LiabilityEntries = { new JournalEntry(Float.valueOf(ACCOUNT_TRANSFER_AMOUNT_ADJUST),
-                JournalEntry.TransactionType.DEBIT) };
+        final JournalEntry[] office1LiabilityEntries = {
+                new JournalEntry(Float.valueOf(ACCOUNT_TRANSFER_AMOUNT_ADJUST), JournalEntry.TransactionType.CREDIT) };
+        final JournalEntry[] office2LiabilityEntries = {
+                new JournalEntry(Float.valueOf(ACCOUNT_TRANSFER_AMOUNT_ADJUST), JournalEntry.TransactionType.DEBIT) };
 
         this.journalEntryHelper.checkJournalEntryForLiabilityAccount(fromOfficeId, liabilityTransferAccount,
                 AccountTransferHelper.ACCOUNT_TRANSFER_DATE, office1LiabilityEntries);
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountingScenarioIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountingScenarioIntegrationTest.java
index bef78f2..3540342 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountingScenarioIntegrationTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/AccountingScenarioIntegrationTest.java
@@ -68,6 +68,7 @@ import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({ "unused", "rawtypes", "unchecked", "static-access" })
 public class AccountingScenarioIntegrationTest {
+
     private final static Logger LOG = LoggerFactory.getLogger(AccountingScenarioIntegrationTest.class);
     private static RequestSpecification requestSpec;
     private static ResponseSpecification responseSpec;
@@ -94,7 +95,8 @@ public class AccountingScenarioIntegrationTest {
     Float SP_WITHDRAWAL_AMOUNT = Float.valueOf(WITHDRAWAL_AMOUNT);
     Float SP_WITHDRAWAL_AMOUNT_ADJUSTED = Float.valueOf(WITHDRAWAL_AMOUNT_ADJUSTED);
 
-    private final String[] REPAYMENT_DATE = { "", "04 May 2011", "04 July 2011", "04 September 2011", "04 November 2011", "04 January 2012" };
+    private final String[] REPAYMENT_DATE = { "", "04 May 2011", "04 July 2011", "04 September 2011", "04 November 2011",
+            "04 January 2012" };
     private final Float[] REPAYMENT_AMOUNT = { .0f, 2200.0f, 3000.0f, 900.0f, 2000.0f, 2500.0f };
 
     private final Float AMOUNT_TO_BE_WAIVE = 400.0f;
@@ -274,8 +276,8 @@ public class AccountingScenarioIntegrationTest {
         final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(this.SP_BALANCE, JournalEntry.TransactionType.DEBIT) };
         final JournalEntry[] liablilityAccountInitialEntry = { new JournalEntry(this.SP_BALANCE, JournalEntry.TransactionType.CREDIT) };
         this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.TRANSACTION_DATE, assetAccountInitialEntry);
-        this.journalEntryHelper
-                .checkJournalEntryForLiabilityAccount(liabilityAccount, this.TRANSACTION_DATE, liablilityAccountInitialEntry);
+        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, this.TRANSACTION_DATE,
+                liablilityAccountInitialEntry);
 
         // First Transaction-Deposit
         this.savingsAccountHelper.depositToSavingsAccount(savingsID, DEPOSIT_AMOUNT, SavingsAccountHelper.TRANSACTION_DATE,
@@ -285,10 +287,10 @@ public class AccountingScenarioIntegrationTest {
         assertEquals(balance, summary.get("accountBalance"), "Verifying Balance after Deposit");
 
         LOG.info("----------------------Verifying Journal Entry after the Transaction Deposit----------------------------");
-        final JournalEntry[] assetAccountFirstTransactionEntry = { new JournalEntry(this.SP_DEPOSIT_AMOUNT,
-                JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] liabililityAccountFirstTransactionEntry = { new JournalEntry(this.SP_DEPOSIT_AMOUNT,
-                JournalEntry.TransactionType.CREDIT) };
+        final JournalEntry[] assetAccountFirstTransactionEntry = {
+                new JournalEntry(this.SP_DEPOSIT_AMOUNT, JournalEntry.TransactionType.DEBIT) };
+        final JournalEntry[] liabililityAccountFirstTransactionEntry = {
+                new JournalEntry(this.SP_DEPOSIT_AMOUNT, JournalEntry.TransactionType.CREDIT) };
         this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.TRANSACTION_DATE, assetAccountFirstTransactionEntry);
         this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, this.TRANSACTION_DATE,
                 liabililityAccountFirstTransactionEntry);
@@ -301,10 +303,10 @@ public class AccountingScenarioIntegrationTest {
         assertEquals(balance, summary.get("accountBalance"), "Verifying Balance after Withdrawal");
 
         LOG.info("-------------------Verifying Journal Entry after the Transaction Withdrawal----------------------");
-        final JournalEntry[] assetAccountSecondTransactionEntry = { new JournalEntry(this.SP_WITHDRAWAL_AMOUNT,
-                JournalEntry.TransactionType.CREDIT) };
-        final JournalEntry[] liabililityAccountSecondTransactionEntry = { new JournalEntry(this.SP_WITHDRAWAL_AMOUNT,
-                JournalEntry.TransactionType.DEBIT) };
+        final JournalEntry[] assetAccountSecondTransactionEntry = {
+                new JournalEntry(this.SP_WITHDRAWAL_AMOUNT, JournalEntry.TransactionType.CREDIT) };
+        final JournalEntry[] liabililityAccountSecondTransactionEntry = {
+                new JournalEntry(this.SP_WITHDRAWAL_AMOUNT, JournalEntry.TransactionType.DEBIT) };
         this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.TRANSACTION_DATE, assetAccountSecondTransactionEntry);
         this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, this.TRANSACTION_DATE,
                 liabililityAccountSecondTransactionEntry);
@@ -322,16 +324,15 @@ public class AccountingScenarioIntegrationTest {
         Float chargeAmount = (Float) paidCharge.get("amount");
 
         // Withdrawal after adding Charge of type Withdrawal Fee
-        this.savingsAccountHelper.withdrawalFromSavingsAccount(savingsID, WITHDRAWAL_AMOUNT_ADJUSTED,
-                SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
+        this.savingsAccountHelper.withdrawalFromSavingsAccount(savingsID, WITHDRAWAL_AMOUNT_ADJUSTED, SavingsAccountHelper.TRANSACTION_DATE,
+                CommonConstants.RESPONSE_RESOURCE_ID);
         summary = this.savingsAccountHelper.getSavingsSummary(savingsID);
         balance = balance - SP_WITHDRAWAL_AMOUNT_ADJUSTED - chargeAmount;
 
-        final JournalEntry[] liabililityAccountThirdTransactionEntry = {
-                new JournalEntry(chargeAmount, JournalEntry.TransactionType.DEBIT),
+        final JournalEntry[] liabililityAccountThirdTransactionEntry = { new JournalEntry(chargeAmount, JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(this.SP_WITHDRAWAL_AMOUNT_ADJUSTED, JournalEntry.TransactionType.DEBIT) };
-        final JournalEntry[] assetAccountThirdTransactionEntry = { new JournalEntry(this.SP_WITHDRAWAL_AMOUNT_ADJUSTED,
-                JournalEntry.TransactionType.CREDIT) };
+        final JournalEntry[] assetAccountThirdTransactionEntry = {
+                new JournalEntry(this.SP_WITHDRAWAL_AMOUNT_ADJUSTED, JournalEntry.TransactionType.CREDIT) };
         final JournalEntry[] incomeAccountThirdTransactionEntry = { new JournalEntry(chargeAmount, JournalEntry.TransactionType.CREDIT) };
         this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.TRANSACTION_DATE, assetAccountThirdTransactionEntry);
         this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, this.TRANSACTION_DATE,
@@ -464,8 +465,8 @@ public class AccountingScenarioIntegrationTest {
                 VALID_FROM, VALID_TO, SUBMITTED_ON_DATE, RecurringDepositTest.WHOLE_TERM, EXPECTED_FIRST_DEPOSIT_ON_DATE);
         Assertions.assertNotNull(recurringDepositAccountId);
 
-        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker.getStatusOfRecurringDepositAccount(
-                this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
+        HashMap recurringDepositAccountStatusHashMap = RecurringDepositAccountStatusChecker
+                .getStatusOfRecurringDepositAccount(this.requestSpec, this.responseSpec, recurringDepositAccountId.toString());
         RecurringDepositAccountStatusChecker.verifyRecurringDepositIsPending(recurringDepositAccountStatusHashMap);
 
         recurringDepositAccountStatusHashMap = this.recurringDepositAccountHelper.approveRecurringDeposit(recurringDepositAccountId,
@@ -529,13 +530,14 @@ public class AccountingScenarioIntegrationTest {
         LOG.info("--------------------------------APPLYING FOR FIXED DEPOSIT ACCOUNT --------------------------------");
         final String fixedDepositApplicationJSON = new FixedDepositAccountHelper(this.requestSpec, this.responseSpec) //
                 .withSubmittedOnDate(submittedOnDate).build(clientID, productID, penalInterestType);
-        return this.fixedDepositAccountHelper
-                .applyFixedDepositApplication(fixedDepositApplicationJSON, this.requestSpec, this.responseSpec);
+        return this.fixedDepositAccountHelper.applyFixedDepositApplication(fixedDepositApplicationJSON, this.requestSpec,
+                this.responseSpec);
     }
 
     private Integer createRecurringDepositProduct(final String validFrom, final String validTo, Account... accounts) {
         LOG.info("------------------------------CREATING NEW RECURRING DEPOSIT PRODUCT ---------------------------------------");
-        RecurringDepositProductHelper recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec, this.responseSpec);
+        RecurringDepositProductHelper recurringDepositProductHelper = new RecurringDepositProductHelper(this.requestSpec,
+                this.responseSpec);
         final String recurringDepositProductJSON = recurringDepositProductHelper //
                 .withPeriodRangeChart()//
                 .withAccountingRuleAsCashBased(accounts).build(validFrom, validTo);
@@ -554,7 +556,7 @@ public class AccountingScenarioIntegrationTest {
     }
 
     @Test
-    public void checkPeriodicAccrualAccountingFlow() throws InterruptedException,ParseException {
+    public void checkPeriodicAccrualAccountingFlow() throws InterruptedException, ParseException {
         final Account assetAccount = this.accountHelper.createAssetAccount();
         final Account incomeAccount = this.accountHelper.createIncomeAccount();
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
@@ -667,7 +669,7 @@ public class AccountingScenarioIntegrationTest {
     }
 
     @Test
-    public void checkPeriodicAccrualAccountingFlow_OVER_PAYMENT() throws InterruptedException,ParseException {
+    public void checkPeriodicAccrualAccountingFlow_OVER_PAYMENT() throws InterruptedException, ParseException {
         final Account assetAccount = this.accountHelper.createAssetAccount();
         final Account incomeAccount = this.accountHelper.createIncomeAccount();
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
@@ -715,14 +717,14 @@ public class AccountingScenarioIntegrationTest {
         final JournalEntry[] assetAccountEntry = { new JournalEntry(15000f, JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(11000f, JournalEntry.TransactionType.CREDIT) };
         this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[1], assetAccountEntry);
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(overpaymentAccount, this.REPAYMENT_DATE[1], new JournalEntry(4000f,
-                JournalEntry.TransactionType.CREDIT));
+        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(overpaymentAccount, this.REPAYMENT_DATE[1],
+                new JournalEntry(4000f, JournalEntry.TransactionType.CREDIT));
         LOG.info("Repayment  Done......");
 
     }
 
     @Test
-    public void checkPeriodicAccrualAccountingTillCurrentDateFlow() throws InterruptedException,ParseException {
+    public void checkPeriodicAccrualAccountingTillCurrentDateFlow() throws InterruptedException, ParseException {
         final Account assetAccount = this.accountHelper.createAssetAccount();
         final Account incomeAccount = this.accountHelper.createIncomeAccount();
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
@@ -738,8 +740,8 @@ public class AccountingScenarioIntegrationTest {
         final float PENALTY_PORTION = 100.0f;
         Integer flat = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(FEE_PORTION), false));
-        Integer flatSpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper.getLoanSpecifiedDueDateJSON(
-                ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(PENALTY_PORTION), true));
+        Integer flatSpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
+                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(PENALTY_PORTION), true));
 
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
@@ -766,10 +768,8 @@ public class AccountingScenarioIntegrationTest {
         loanStatusHashMap = this.loanTransactionHelper.disburseLoan(LOAN_DISBURSEMENT_DATE, loanID);
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        this.loanTransactionHelper.addChargesForLoan(
-                loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatSpecifiedDueDate),
-                        dateFormat.format(todayDate.getTime()), String.valueOf(PENALTY_PORTION)));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
+                String.valueOf(flatSpecifiedDueDate), dateFormat.format(todayDate.getTime()), String.valueOf(PENALTY_PORTION)));
         todayDate.add(Calendar.DATE, 1);
         this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
                 String.valueOf(flat), dateFormat.format(todayDate.getTime()), String.valueOf(FEE_PORTION)));
@@ -814,7 +814,7 @@ public class AccountingScenarioIntegrationTest {
     }
 
     @Test
-    public void checkPeriodicAccrualAccountingAPIFlow() throws ParseException{
+    public void checkPeriodicAccrualAccountingAPIFlow() throws ParseException {
         final Account assetAccount = this.accountHelper.createAssetAccount();
         final Account incomeAccount = this.accountHelper.createIncomeAccount();
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
@@ -833,11 +833,11 @@ public class AccountingScenarioIntegrationTest {
 
         Integer flat = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(FEE_PORTION), false));
-        Integer flatSpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper.getLoanSpecifiedDueDateJSON(
-                ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(PENALTY_PORTION), true));
+        Integer flatSpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
+                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(PENALTY_PORTION), true));
 
-        Integer flatNext = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper.getLoanSpecifiedDueDateJSON(
-                ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(NEXT_FEE_PORTION), false));
+        Integer flatNext = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
+                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(NEXT_FEE_PORTION), false));
         Integer flatSpecifiedDueDateNext = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
                 .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(NEXT_PENALTY_PORTION), true));
 
@@ -866,29 +866,20 @@ public class AccountingScenarioIntegrationTest {
         loanStatusHashMap = this.loanTransactionHelper.disburseLoan(LOAN_DISBURSEMENT_DATE, loanID);
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        this.loanTransactionHelper.addChargesForLoan(
-                loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatSpecifiedDueDate),
-                        dateFormat.format(todayDate.getTime()), String.valueOf(PENALTY_PORTION)));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
+                String.valueOf(flatSpecifiedDueDate), dateFormat.format(todayDate.getTime()), String.valueOf(PENALTY_PORTION)));
         todayDate.add(Calendar.DATE, 1);
         String runOndate = dateFormat.format(todayDate.getTime());
 
-        this.loanTransactionHelper
-                .addChargesForLoan(
-                        loanID,
-                        LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flat), runOndate,
-                                String.valueOf(FEE_PORTION)));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flat), runOndate, String.valueOf(FEE_PORTION)));
 
         todayDate.add(Calendar.DATE, 1);
-        this.loanTransactionHelper.addChargesForLoan(
-                loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatSpecifiedDueDateNext),
-                        dateFormat.format(todayDate.getTime()), String.valueOf(NEXT_PENALTY_PORTION)));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
+                String.valueOf(flatSpecifiedDueDateNext), dateFormat.format(todayDate.getTime()), String.valueOf(NEXT_PENALTY_PORTION)));
 
-        this.loanTransactionHelper.addChargesForLoan(
-                loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatNext),
-                        dateFormat.format(todayDate.getTime()), String.valueOf(NEXT_FEE_PORTION)));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
+                String.valueOf(flatNext), dateFormat.format(todayDate.getTime()), String.valueOf(NEXT_FEE_PORTION)));
 
         // CHECK ACCOUNT ENTRIES
         LOG.info("Entries ......");
@@ -986,8 +977,8 @@ public class AccountingScenarioIntegrationTest {
                 new JournalEntry(FIRST_PRINCIPAL, JournalEntry.TransactionType.CREDIT) };
         this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[1], assetAccountFirstEntry);
         LOG.info("CHECKING INCOME: ******************************************");
-        this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, this.REPAYMENT_DATE[1], new JournalEntry(FIRST_INTEREST,
-                JournalEntry.TransactionType.CREDIT));
+        this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, this.REPAYMENT_DATE[1],
+                new JournalEntry(FIRST_INTEREST, JournalEntry.TransactionType.CREDIT));
         LOG.info("Repayment 1 Done......");
 
         // REPAYMENT 2
@@ -1001,8 +992,8 @@ public class AccountingScenarioIntegrationTest {
                 new JournalEntry(SECOND_PRINCIPAL, JournalEntry.TransactionType.CREDIT), };
         this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, this.REPAYMENT_DATE[2], assetAccountSecondEntry);
         LOG.info("CHECKING INCOME: ******************************************");
-        this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, this.REPAYMENT_DATE[2], new JournalEntry(
-                SECOND_AND_THIRD_INTEREST, JournalEntry.TransactionType.CREDIT));
+        this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, this.REPAYMENT_DATE[2],
+                new JournalEntry(SECOND_AND_THIRD_INTEREST, JournalEntry.TransactionType.CREDIT));
         LOG.info("Repayment 2 Done ......");
 
         // WAIVE INTEREST
@@ -1053,7 +1044,7 @@ public class AccountingScenarioIntegrationTest {
         return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
     }
 
-    private LocalDate getDateAsLocalDate(String dateAsString) throws ParseException{
+    private LocalDate getDateAsLocalDate(String dateAsString) throws ParseException {
         DateFormat df = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
         LocalDate date = new LocalDate(df.parse(dateAsString));
 
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ActuatorIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ActuatorIntegrationTest.java
index d23ecae..af920e1 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ActuatorIntegrationTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ActuatorIntegrationTest.java
@@ -33,9 +33,8 @@ public class ActuatorIntegrationTest {
 
     @Test
     public void testActuatorGitBuildInfo() {
-        Response response = RestAssured.given()
-            .headers("Content-Type", ContentType.JSON, "Accept", ContentType.JSON).when()
-            .get(INFO_URL).then().contentType(ContentType.JSON).extract().response();
+        Response response = RestAssured.given().headers("Content-Type", ContentType.JSON, "Accept", ContentType.JSON).when().get(INFO_URL)
+                .then().contentType(ContentType.JSON).extract().response();
 
         Map<String, String> gitBuildInfo = response.jsonPath().getMap("git");
 
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java
index 1b2d62b..fbbeca9 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchApiTest.java
@@ -58,7 +58,8 @@ public class BatchApiTest {
 
     /**
      * Sets up the essential settings for the TEST like contentType,
-     * expectedStatusCode. It uses the '@BeforeEach' annotation provided by jUnit.
+     * expectedStatusCode. It uses the '@BeforeEach' annotation provided by
+     * jUnit.
      */
     @BeforeEach
     public void setup() {
@@ -333,10 +334,10 @@ public class BatchApiTest {
     }
 
     /**
-     * Tests that batch repayment for loans is happening properly.
-     * Collected properly 200(OK) status was returned for successful responses.
-     * It first creates a new loan and then makes two repayments for it
-     * and then verifies that 200(OK) is returned for the repayment requests.
+     * Tests that batch repayment for loans is happening properly. Collected
+     * properly 200(OK) status was returned for successful responses. It first
+     * creates a new loan and then makes two repayments for it and then verifies
+     * that 200(OK) is returned for the repayment requests.
      *
      * @see org.apache.fineract.batch.command.internal.RepayLoanCommandStrategy
      */
@@ -482,14 +483,15 @@ public class BatchApiTest {
     }
 
     /**
-     * Test for the successful create client, apply loan,approval and disbursal of a loan using
-     * Batch API with enclosingTransaction. A '200' status code is expected on successful activation.
+     * Test for the successful create client, apply loan,approval and disbursal
+     * of a loan using Batch API with enclosingTransaction. A '200' status code
+     * is expected on successful activation.
      *
      * @see org.apache.fineract.batch.command.internal.ApproveLoanCommandStrategy
      * @see org.apache.fineract.batch.command.internal.DisburseLoanCommandStrategy
      */
     @Test
-    public void shouldReturnOkStatusOnSuccessfulLoanApprovalAndDisburseWithTransaction(){
+    public void shouldReturnOkStatusOnSuccessfulLoanApprovalAndDisburseWithTransaction() {
         final String loanProductJSON = new LoanProductTestBuilder() //
                 .withPrincipal("10000000.00") //
                 .withNumberOfRepayments("24") //
@@ -515,7 +517,7 @@ public class BatchApiTest {
         // Create a disburseLoan Request
         final BatchRequest br4 = BatchHelper.disburseLoanRequest(4744L, 4743L);
 
-        final List<BatchRequest> batchRequests = Arrays.asList(br1,br2,br3,br4);
+        final List<BatchRequest> batchRequests = Arrays.asList(br1, br2, br3, br4);
 
         final String jsonifiedRequest = BatchHelper.toJsonString(batchRequests);
 
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java
index f3709ef..4bd25bd 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/BatchRequestsIntegrationTest.java
@@ -58,7 +58,8 @@ public class BatchRequestsIntegrationTest {
 
     /**
      * Sets up the essential settings for the TEST like contentType,
-     * expectedStatusCode. It uses the '@BeforeEach' annotation provided by jUnit.
+     * expectedStatusCode. It uses the '@BeforeEach' annotation provided by
+     * jUnit.
      */
     @BeforeEach
     public void setup() {
@@ -91,7 +92,7 @@ public class BatchRequestsIntegrationTest {
         for (Integer i = 0; i < clientsCount; i++) {
             clientIDs[i] = ClientHelper.createClient(this.requestSpec, this.responseSpec);
             groupID = GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupID.toString(), clientIDs[i].toString());
-            LOG.info("client {} has been added to the group {}",clientIDs[i] , groupID);
+            LOG.info("client {} has been added to the group {}", clientIDs[i], groupID);
         }
 
         // Generate a random count of number of new loan products to be created
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CenterIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CenterIntegrationTest.java
index d38e328..258487a 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CenterIntegrationTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CenterIntegrationTest.java
@@ -42,6 +42,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class CenterIntegrationTest {
+
     private final static Logger LOG = LoggerFactory.getLogger(CenterIntegrationTest.class);
     private RequestSpecification requestSpec;
     private ResponseSpecification responseSpec;
@@ -106,8 +107,8 @@ public class CenterIntegrationTest {
 
         Assertions.assertNotNull(paginatedList);
         Assertions.assertNotNull(list);
-        Assertions.assertTrue(Arrays.equals(paginatedList.toArray(new CenterDomain[paginatedList.size()]),
-                list.toArray(new CenterDomain[list.size()])));
+        Assertions.assertTrue(
+                Arrays.equals(paginatedList.toArray(new CenterDomain[paginatedList.size()]), list.toArray(new CenterDomain[list.size()])));
     }
 
     @Test
@@ -162,7 +163,7 @@ public class CenterIntegrationTest {
         Assertions.assertNotNull(center);
         Assertions.assertEquals(newName, center.getName());
         Assertions.assertEquals(newExternalId, center.getExternalId());
-        Assertions.assertEquals((Integer)newStaffId, center.getStaffId());
+        Assertions.assertEquals((Integer) newStaffId, center.getStaffId());
         Assertions.assertArrayEquals(newGroupMembers, center.getGroupMembers());
     }
 
@@ -190,8 +191,8 @@ public class CenterIntegrationTest {
             map.put("active", "true");
             map.put("activationDate", "04 March 2011");
 
-            groupMembers[i] = Utils.performServerPost(requestSpec, responseSpec, "/fineract-provider/api/v1/groups?"
-                    + Utils.TENANT_IDENTIFIER, new Gson().toJson(map), "groupId");
+            groupMembers[i] = Utils.performServerPost(requestSpec, responseSpec,
+                    "/fineract-provider/api/v1/groups?" + Utils.TENANT_IDENTIFIER, new Gson().toJson(map), "groupId");
         }
         return groupMembers;
     }
@@ -200,7 +201,7 @@ public class CenterIntegrationTest {
     public void testStaffAssignmentDuringCenterCreation() {
 
         final Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        LOG.info("--------------creating first staff with id------------- {}" , staffId);
+        LOG.info("--------------creating first staff with id------------- {}", staffId);
         Assertions.assertNotNull(staffId);
 
         final int centerWithStaffId = CenterHelper.createCenterWithStaffId(this.requestSpec, this.responseSpec, staffId);
@@ -214,15 +215,14 @@ public class CenterIntegrationTest {
     @Test
     public void testAssignStaffToCenter() {
         final Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        LOG.info("--------------creating first staff with id------------- {}" , staffId);
+        LOG.info("--------------creating first staff with id------------- {}", staffId);
         Assertions.assertNotNull(staffId);
 
         final Integer groupID = CenterHelper.createCenter(this.requestSpec, this.responseSpec);
         CenterHelper.verifyCenterCreatedOnServer(this.requestSpec, this.responseSpec, groupID);
 
-        final HashMap assignStaffToCenterResponseMap = (HashMap) CenterHelper.assignStaff(this.requestSpec,
-                this.responseSpec, groupID.toString(),
-                staffId.longValue());
+        final HashMap assignStaffToCenterResponseMap = (HashMap) CenterHelper.assignStaff(this.requestSpec, this.responseSpec,
+                groupID.toString(), staffId.longValue());
         assertEquals(assignStaffToCenterResponseMap.get("staffId"), staffId, "Verify assigned staff id is the same as id sent");
 
         final CenterDomain center = CenterHelper.retrieveByID(groupID, requestSpec, responseSpec);
@@ -235,24 +235,22 @@ public class CenterIntegrationTest {
     @Test
     public void testUnassignStaffToCenter() {
         final Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        LOG.info("--------------creating first staff with id------------- {}" , staffId);
+        LOG.info("--------------creating first staff with id------------- {}", staffId);
         Assertions.assertNotNull(staffId);
 
         final Integer groupID = CenterHelper.createCenter(this.requestSpec, this.responseSpec);
         CenterHelper.verifyCenterCreatedOnServer(this.requestSpec, this.responseSpec, groupID);
 
-        final HashMap assignStaffToCenterResponseMap = (HashMap) CenterHelper.assignStaff(this.requestSpec,
-                this.responseSpec, groupID.toString(),
-                staffId.longValue());
+        final HashMap assignStaffToCenterResponseMap = (HashMap) CenterHelper.assignStaff(this.requestSpec, this.responseSpec,
+                groupID.toString(), staffId.longValue());
         assertEquals(assignStaffToCenterResponseMap.get("staffId"), staffId, "Verify assigned staff id is the same as id sent");
         final CenterDomain centerWithStaffAssigned = CenterHelper.retrieveByID(groupID, requestSpec, responseSpec);
         Assertions.assertNotNull(centerWithStaffAssigned);
         Assertions.assertTrue(centerWithStaffAssigned.getId().intValue() == groupID);
         Assertions.assertTrue(centerWithStaffAssigned.getStaffId().intValue() == staffId);
 
-        final HashMap unassignStaffToCenterResponseMap = (HashMap) CenterHelper.unassignStaff(this.requestSpec,
-                this.responseSpec, groupID.toString(),
-                staffId.longValue());
+        final HashMap unassignStaffToCenterResponseMap = (HashMap) CenterHelper.unassignStaff(this.requestSpec, this.responseSpec,
+                groupID.toString(), staffId.longValue());
         assertEquals(unassignStaffToCenterResponseMap.get("staffId"), null, "Verify staffId is null after unassigning ");
         final CenterDomain centerWithStaffUnssigned = CenterHelper.retrieveByID(groupID, requestSpec, responseSpec);
         Assertions.assertNotNull(centerWithStaffUnssigned);
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientLoanIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientLoanIntegrationTest.java
index 8933dd4..669ed0d 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientLoanIntegrationTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientLoanIntegrationTest.java
@@ -92,8 +92,7 @@ public class ClientLoanIntegrationTest {
     public void setup() {
         Utils.initializeRESTAssured();
         this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization",
-                "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
+        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
         this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
         this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
         this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
@@ -108,8 +107,8 @@ public class ClientLoanIntegrationTest {
         ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
         final Integer loanProductID = createLoanProduct(false, NONE);
         final Integer loanID = applyForLoanApplication(clientID, loanProductID, null, null, "12,000.00");
-        final ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        final ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec,
+                loanID);
         verifyLoanRepaymentSchedule(loanSchedule);
     }
 
@@ -122,14 +121,13 @@ public class ClientLoanIntegrationTest {
         final Integer loanProductID = createLoanProduct(false, NONE);
 
         List<HashMap> charges = new ArrayList<>();
-        Integer flatDisbursement = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanDisbursementJSON());
+        Integer flatDisbursement = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper.getLoanDisbursementJSON());
 
         Integer amountPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1"));
         addCharges(charges, amountPercentage, "1", null);
-        Integer amountPlusInterestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1"));
+        Integer amountPlusInterestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1"));
         addCharges(charges, amountPlusInterestPercentage, "1", null);
         Integer interestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_INTEREST, "1"));
@@ -141,8 +139,7 @@ public class ClientLoanIntegrationTest {
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap disbursementDetail = loanSchedule.get(0);
 
         List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -162,17 +159,14 @@ public class ClientLoanIntegrationTest {
         validateCharge(flatDisbursement, loanCharges, "100.0", "100.0", "0.0", "0.0");
         validateNumberForEqual("352.12", String.valueOf(disbursementDetail.get("feeChargesDue")));
 
-        this.loanTransactionHelper.updateChargesForLoan(loanID,
-                (Integer) getloanCharge(amountPercentage, loanCharges).get("id"),
+        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(amountPercentage, loanCharges).get("id"),
                 LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
-        this.loanTransactionHelper.updateChargesForLoan(loanID,
-                (Integer) getloanCharge(interestPercentage, loanCharges).get("id"),
+        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(interestPercentage, loanCharges).get("id"),
                 LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
         this.loanTransactionHelper.updateChargesForLoan(loanID,
                 (Integer) getloanCharge(amountPlusInterestPercentage, loanCharges).get("id"),
                 LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
-        this.loanTransactionHelper.updateChargesForLoan(loanID,
-                (Integer) getloanCharge(flatDisbursement, loanCharges).get("id"),
+        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(flatDisbursement, loanCharges).get("id"),
                 LoanTransactionHelper.getUpdateChargesForLoanAsJSON("150"));
 
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -196,8 +190,8 @@ public class ClientLoanIntegrationTest {
         validateCharge(flatDisbursement, loanCharges, "150.0", "150.0", "0.0", "0.0");
         validateNumberForEqual("570.2", String.valueOf(disbursementDetail.get("feeChargesDue")));
 
-        this.loanTransactionHelper.updateLoan(loanID, updateLoanJson(clientID, loanProductID,
-                copyChargesForUpdate(loanCharges, flatDisbursement, "1"), null));
+        this.loanTransactionHelper.updateLoan(loanID,
+                updateLoanJson(clientID, loanProductID, copyChargesForUpdate(loanCharges, flatDisbursement, "1"), null));
 
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
@@ -217,8 +211,7 @@ public class ClientLoanIntegrationTest {
         validateCharge(flatDisbursement, loanCharges, "100.0", "100.0", "0.0", "0.0");
         validateNumberForEqual("100.0", String.valueOf(disbursementDetail.get("feeChargesDue")));
 
-        this.loanTransactionHelper.deleteChargesForLoan(loanID,
-                (Integer) getloanCharge(flatDisbursement, loanCharges).get("id"));
+        this.loanTransactionHelper.deleteChargesForLoan(loanID, (Integer) getloanCharge(flatDisbursement, loanCharges).get("id"));
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         disbursementDetail = loanSchedule.get(0);
@@ -239,8 +232,8 @@ public class ClientLoanIntegrationTest {
         Integer amountPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1"));
         addCharges(charges, amountPercentage, "1", null);
-        Integer amountPlusInterestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1"));
+        Integer amountPlusInterestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1"));
         addCharges(charges, amountPlusInterestPercentage, "1", null);
         Integer interestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_INTEREST, "1"));
@@ -252,8 +245,7 @@ public class ClientLoanIntegrationTest {
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap disbursementDetail = loanSchedule.get(0);
 
         List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -296,18 +288,16 @@ public class ClientLoanIntegrationTest {
         Integer flat = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "100", false));
         Integer flatAccTransfer = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanSpecifiedDueDateWithAccountTransferJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT,
-                        "100", false));
+                ChargesHelper.getLoanSpecifiedDueDateWithAccountTransferJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "100", false));
 
-        Integer amountPercentage = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
+        Integer amountPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
         addCharges(charges, amountPercentage, "1", "29 September 2011");
-        Integer amountPlusInterestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanSpecifiedDueDateJSON(
-                        ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
+        Integer amountPlusInterestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
+                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
         addCharges(charges, amountPlusInterestPercentage, "1", "29 September 2011");
-        Integer interestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_INTEREST, "1", false));
+        Integer interestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_INTEREST, "1", false));
         addCharges(charges, interestPercentage, "1", "29 September 2011");
 
         final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
@@ -316,8 +306,7 @@ public class ClientLoanIntegrationTest {
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap firstInstallment = loanSchedule.get(1);
 
         List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -328,8 +317,8 @@ public class ClientLoanIntegrationTest {
 
         validateNumberForEqual("252.12", String.valueOf(firstInstallment.get("feeChargesDue")));
 
-        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
-                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flat), "29 September 2011", "100"));
+        this.loanTransactionHelper.addChargesForLoan(loanID,
+                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flat), "29 September 2011", "100"));
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         firstInstallment = loanSchedule.get(1);
@@ -337,11 +326,9 @@ public class ClientLoanIntegrationTest {
         validateCharge(flat, loanCharges, "100.0", "100.0", "0.0", "0.0");
         validateNumberForEqual("352.12", String.valueOf(firstInstallment.get("feeChargesDue")));
 
-        this.loanTransactionHelper.updateChargesForLoan(loanID,
-                (Integer) getloanCharge(amountPercentage, loanCharges).get("id"),
+        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(amountPercentage, loanCharges).get("id"),
                 LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
-        this.loanTransactionHelper.updateChargesForLoan(loanID,
-                (Integer) getloanCharge(interestPercentage, loanCharges).get("id"),
+        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(interestPercentage, loanCharges).get("id"),
                 LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
         this.loanTransactionHelper.updateChargesForLoan(loanID,
                 (Integer) getloanCharge(amountPlusInterestPercentage, loanCharges).get("id"),
@@ -360,8 +347,8 @@ public class ClientLoanIntegrationTest {
 
         final Integer savingsId = SavingsAccountHelper.openSavingsAccount(this.requestSpec, this.responseSpec, clientID,
                 MINIMUM_OPENING_BALANCE);
-        this.loanTransactionHelper.updateLoan(loanID, updateLoanJson(clientID, loanProductID,
-                copyChargesForUpdate(loanCharges, null, null), String.valueOf(savingsId)));
+        this.loanTransactionHelper.updateLoan(loanID,
+                updateLoanJson(clientID, loanProductID, copyChargesForUpdate(loanCharges, null, null), String.valueOf(savingsId)));
 
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
@@ -405,8 +392,8 @@ public class ClientLoanIntegrationTest {
         LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
         LoanStatusChecker.verifyLoanIsWaitingForDisbursal(loanStatusHashMap);
 
-        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
-                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatAccTransfer), "29 September 2011", "100"));
+        this.loanTransactionHelper.addChargesForLoan(loanID,
+                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatAccTransfer), "29 September 2011", "100"));
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         firstInstallment = loanSchedule.get(1);
@@ -418,8 +405,8 @@ public class ClientLoanIntegrationTest {
         LOG.info("DISBURSE {}", loanStatusHashMap.toString());
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
-                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(amountPercentage), "29 September 2011", "1"));
+        this.loanTransactionHelper.addChargesForLoan(loanID,
+                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(amountPercentage), "29 September 2011", "1"));
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         firstInstallment = loanSchedule.get(1);
@@ -427,8 +414,7 @@ public class ClientLoanIntegrationTest {
         validateCharge(flatAccTransfer, loanCharges, "100.0", "100.0", "0.0", "0.0");
         validateNumberForEqual("200.0", String.valueOf(firstInstallment.get("feeChargesDue")));
 
-        this.loanTransactionHelper.waiveChargesForLoan(loanID,
-                (Integer) getloanCharge(amountPercentage, loanCharges).get("id"), "");
+        this.loanTransactionHelper.waiveChargesForLoan(loanID, (Integer) getloanCharge(amountPercentage, loanCharges).get("id"), "");
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         firstInstallment = loanSchedule.get(1);
@@ -438,8 +424,7 @@ public class ClientLoanIntegrationTest {
         validateNumberForEqual("100.0", String.valueOf(firstInstallment.get("feeChargesOutstanding")));
         validateNumberForEqual("100.0", String.valueOf(firstInstallment.get("feeChargesWaived")));
 
-        this.loanTransactionHelper.payChargesForLoan(loanID,
-                (Integer) getloanCharge(flatAccTransfer, loanCharges).get("id"),
+        this.loanTransactionHelper.payChargesForLoan(loanID, (Integer) getloanCharge(flatAccTransfer, loanCharges).get("id"),
                 LoanTransactionHelper.getPayChargeJSON(SavingsAccountHelper.TRANSACTION_DATE, null));
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
@@ -462,18 +447,17 @@ public class ClientLoanIntegrationTest {
         List<HashMap> charges = new ArrayList<>();
         Integer flat = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "50", false));
-        Integer flatAccTransfer = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanInstallmentWithAccountTransferJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "50", false));
+        Integer flatAccTransfer = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanInstallmentWithAccountTransferJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "50", false));
 
-        Integer amountPercentage = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
+        Integer amountPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
         addCharges(charges, amountPercentage, "1", "29 September 2011");
         Integer amountPlusInterestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanInstallmentJSON(
-                        ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
+                ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
         addCharges(charges, amountPlusInterestPercentage, "1", "29 September 2011");
-        Integer interestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_INTEREST, "1", false));
+        Integer interestPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_INTEREST, "1", false));
         addCharges(charges, interestPercentage, "1", "29 September 2011");
 
         final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
@@ -482,8 +466,7 @@ public class ClientLoanIntegrationTest {
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         loanSchedule.remove(0);
         List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
 
@@ -496,19 +479,16 @@ public class ClientLoanIntegrationTest {
             Float principalFee = principalDue / 100;
             Float interestFee = interestDue / 100;
             Float totalInstallmentFee = (principalFee * 2) + (interestFee * 2);
-            validateNumberForEqualExcludePrecission(String.valueOf(totalInstallmentFee),
-                    String.valueOf(installment.get("feeChargesDue")));
+            validateNumberForEqualExcludePrecission(String.valueOf(totalInstallmentFee), String.valueOf(installment.get("feeChargesDue")));
             totalPerOfAmout = totalPerOfAmout + principalFee;
             totalPerOfAmoutPlusInt = totalPerOfAmoutPlusInt + principalFee + interestFee;
             totalPerOfint = totalPerOfint + interestFee;
         }
 
-        validateChargeExcludePrecission(amountPercentage, loanCharges, "1.0", String.valueOf(totalPerOfAmout), "0.0",
-                "0.0");
-        validateChargeExcludePrecission(interestPercentage, loanCharges, "1.0", String.valueOf(totalPerOfint), "0.0",
+        validateChargeExcludePrecission(amountPercentage, loanCharges, "1.0", String.valueOf(totalPerOfAmout), "0.0", "0.0");
+        validateChargeExcludePrecission(interestPercentage, loanCharges, "1.0", String.valueOf(totalPerOfint), "0.0", "0.0");
+        validateChargeExcludePrecission(amountPlusInterestPercentage, loanCharges, "1.0", String.valueOf(totalPerOfAmoutPlusInt), "0.0",
                 "0.0");
-        validateChargeExcludePrecission(amountPlusInterestPercentage, loanCharges, "1.0",
-                String.valueOf(totalPerOfAmoutPlusInt), "0.0", "0.0");
 
         this.loanTransactionHelper.addChargesForLoan(loanID,
                 LoanTransactionHelper.getInstallmentChargesForLoanAsJSON(String.valueOf(flat), "50"));
@@ -524,26 +504,21 @@ public class ClientLoanIntegrationTest {
             Float principalFee = principalDue / 100;
             Float interestFee = interestDue / 100;
             Float totalInstallmentFee = (principalFee * 2) + (interestFee * 2) + 50;
-            validateNumberForEqualExcludePrecission(String.valueOf(totalInstallmentFee),
-                    String.valueOf(installment.get("feeChargesDue")));
+            validateNumberForEqualExcludePrecission(String.valueOf(totalInstallmentFee), String.valueOf(installment.get("feeChargesDue")));
             totalPerOfAmout = totalPerOfAmout + principalFee;
             totalPerOfAmoutPlusInt = totalPerOfAmoutPlusInt + principalFee + interestFee;
             totalPerOfint = totalPerOfint + interestFee;
         }
 
-        validateChargeExcludePrecission(amountPercentage, loanCharges, "1.0", String.valueOf(totalPerOfAmout), "0.0",
+        validateChargeExcludePrecission(amountPercentage, loanCharges, "1.0", String.valueOf(totalPerOfAmout), "0.0", "0.0");
+        validateChargeExcludePrecission(interestPercentage, loanCharges, "1.0", String.valueOf(totalPerOfint), "0.0", "0.0");
+        validateChargeExcludePrecission(amountPlusInterestPercentage, loanCharges, "1.0", String.valueOf(totalPerOfAmoutPlusInt), "0.0",
                 "0.0");
-        validateChargeExcludePrecission(interestPercentage, loanCharges, "1.0", String.valueOf(totalPerOfint), "0.0",
-                "0.0");
-        validateChargeExcludePrecission(amountPlusInterestPercentage, loanCharges, "1.0",
-                String.valueOf(totalPerOfAmoutPlusInt), "0.0", "0.0");
         validateChargeExcludePrecission(flat, loanCharges, "50.0", "200", "0.0", "0.0");
 
-        this.loanTransactionHelper.updateChargesForLoan(loanID,
-                (Integer) getloanCharge(amountPercentage, loanCharges).get("id"),
+        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(amountPercentage, loanCharges).get("id"),
                 LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
-        this.loanTransactionHelper.updateChargesForLoan(loanID,
-                (Integer) getloanCharge(interestPercentage, loanCharges).get("id"),
+        this.loanTransactionHelper.updateChargesForLoan(loanID, (Integer) getloanCharge(interestPercentage, loanCharges).get("id"),
                 LoanTransactionHelper.getUpdateChargesForLoanAsJSON("2"));
         this.loanTransactionHelper.updateChargesForLoan(loanID,
                 (Integer) getloanCharge(amountPlusInterestPercentage, loanCharges).get("id"),
@@ -563,25 +538,22 @@ public class ClientLoanIntegrationTest {
             Float principalFee = principalDue * 2 / 100;
             Float interestFee = interestDue * 2 / 100;
             Float totalInstallmentFee = (principalFee * 2) + (interestFee * 2) + 100;
-            validateNumberForEqualExcludePrecission(String.valueOf(totalInstallmentFee),
-                    String.valueOf(installment.get("feeChargesDue")));
+            validateNumberForEqualExcludePrecission(String.valueOf(totalInstallmentFee), String.valueOf(installment.get("feeChargesDue")));
             totalPerOfAmout = totalPerOfAmout + principalFee;
             totalPerOfAmoutPlusInt = totalPerOfAmoutPlusInt + principalFee + interestFee;
             totalPerOfint = totalPerOfint + interestFee;
         }
 
-        validateChargeExcludePrecission(amountPercentage, loanCharges, "2.0", String.valueOf(totalPerOfAmout), "0.0",
+        validateChargeExcludePrecission(amountPercentage, loanCharges, "2.0", String.valueOf(totalPerOfAmout), "0.0", "0.0");
+        validateChargeExcludePrecission(interestPercentage, loanCharges, "2.0", String.valueOf(totalPerOfint), "0.0", "0.0");
+        validateChargeExcludePrecission(amountPlusInterestPercentage, loanCharges, "2.0", String.valueOf(totalPerOfAmoutPlusInt), "0.0",
                 "0.0");
-        validateChargeExcludePrecission(interestPercentage, loanCharges, "2.0", String.valueOf(totalPerOfint), "0.0",
-                "0.0");
-        validateChargeExcludePrecission(amountPlusInterestPercentage, loanCharges, "2.0",
-                String.valueOf(totalPerOfAmoutPlusInt), "0.0", "0.0");
         validateChargeExcludePrecission(flat, loanCharges, "100.0", "400", "0.0", "0.0");
 
         final Integer savingsId = SavingsAccountHelper.openSavingsAccount(this.requestSpec, this.responseSpec, clientID,
                 MINIMUM_OPENING_BALANCE);
-        this.loanTransactionHelper.updateLoan(loanID, updateLoanJson(clientID, loanProductID,
-                copyChargesForUpdate(loanCharges, null, null), String.valueOf(savingsId)));
+        this.loanTransactionHelper.updateLoan(loanID,
+                updateLoanJson(clientID, loanProductID, copyChargesForUpdate(loanCharges, null, null), String.valueOf(savingsId)));
 
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
@@ -595,19 +567,16 @@ public class ClientLoanIntegrationTest {
             Float principalFee = principalDue * 2 / 100;
             Float interestFee = interestDue * 2 / 100;
             Float totalInstallmentFee = (principalFee * 2) + (interestFee * 2) + 100;
-            validateNumberForEqualExcludePrecission(String.valueOf(totalInstallmentFee),
-                    String.valueOf(installment.get("feeChargesDue")));
+            validateNumberForEqualExcludePrecission(String.valueOf(totalInstallmentFee), String.valueOf(installment.get("feeChargesDue")));
             totalPerOfAmout = totalPerOfAmout + principalFee;
             totalPerOfAmoutPlusInt = totalPerOfAmoutPlusInt + principalFee + interestFee;
             totalPerOfint = totalPerOfint + interestFee;
         }
 
-        validateChargeExcludePrecission(amountPercentage, loanCharges, "2.0", String.valueOf(totalPerOfAmout), "0.0",
+        validateChargeExcludePrecission(amountPercentage, loanCharges, "2.0", String.valueOf(totalPerOfAmout), "0.0", "0.0");
+        validateChargeExcludePrecission(interestPercentage, loanCharges, "2.0", String.valueOf(totalPerOfint), "0.0", "0.0");
+        validateChargeExcludePrecission(amountPlusInterestPercentage, loanCharges, "2.0", String.valueOf(totalPerOfAmoutPlusInt), "0.0",
                 "0.0");
-        validateChargeExcludePrecission(interestPercentage, loanCharges, "2.0", String.valueOf(totalPerOfint), "0.0",
-                "0.0");
-        validateChargeExcludePrecission(amountPlusInterestPercentage, loanCharges, "2.0",
-                String.valueOf(totalPerOfAmoutPlusInt), "0.0", "0.0");
         validateChargeExcludePrecission(flat, loanCharges, "100.0", "400", "0.0", "0.0");
 
         this.loanTransactionHelper.updateLoan(loanID,
@@ -625,19 +594,16 @@ public class ClientLoanIntegrationTest {
             Float principalFee = principalDue / 100;
             Float interestFee = interestDue / 100;
             Float totalInstallmentFee = (principalFee * 2) + (interestFee * 2);
-            validateNumberForEqualExcludePrecission(String.valueOf(totalInstallmentFee),
-                    String.valueOf(installment.get("feeChargesDue")));
+            validateNumberForEqualExcludePrecission(String.valueOf(totalInstallmentFee), String.valueOf(installment.get("feeChargesDue")));
             totalPerOfAmout = totalPerOfAmout + principalFee;
             totalPerOfAmoutPlusInt = totalPerOfAmoutPlusInt + principalFee + interestFee;
             totalPerOfint = totalPerOfint + interestFee;
         }
 
-        validateChargeExcludePrecission(amountPercentage, loanCharges, "1.0", String.valueOf(totalPerOfAmout), "0.0",
-                "0.0");
-        validateChargeExcludePrecission(interestPercentage, loanCharges, "1.0", String.valueOf(totalPerOfint), "0.0",
+        validateChargeExcludePrecission(amountPercentage, loanCharges, "1.0", String.valueOf(totalPerOfAmout), "0.0", "0.0");
+        validateChargeExcludePrecission(interestPercentage, loanCharges, "1.0", String.valueOf(totalPerOfint), "0.0", "0.0");
+        validateChargeExcludePrecission(amountPlusInterestPercentage, loanCharges, "1.0", String.valueOf(totalPerOfAmoutPlusInt), "0.0",
                 "0.0");
-        validateChargeExcludePrecission(amountPlusInterestPercentage, loanCharges, "1.0",
-                String.valueOf(totalPerOfAmoutPlusInt), "0.0", "0.0");
 
         charges.clear();
         addCharges(charges, flat, "50", "29 September 2011");
@@ -700,12 +666,10 @@ public class ClientLoanIntegrationTest {
         for (HashMap installment : loanSchedule) {
             validateNumberForEqualExcludePrecission("150", String.valueOf(installment.get("feeChargesDue")));
             if (waivePeriodnum.equals(installment.get("period"))) {
-                validateNumberForEqualExcludePrecission("100.0",
-                        String.valueOf(installment.get("feeChargesOutstanding")));
+                validateNumberForEqualExcludePrecission("100.0", String.valueOf(installment.get("feeChargesOutstanding")));
                 validateNumberForEqualExcludePrecission("50.0", String.valueOf(installment.get("feeChargesWaived")));
             } else {
-                validateNumberForEqualExcludePrecission("150.0",
-                        String.valueOf(installment.get("feeChargesOutstanding")));
+                validateNumberForEqualExcludePrecission("150.0", String.valueOf(installment.get("feeChargesOutstanding")));
                 validateNumberForEqualExcludePrecission("0.0", String.valueOf(installment.get("feeChargesWaived")));
 
             }
@@ -714,25 +678,21 @@ public class ClientLoanIntegrationTest {
         validateChargeExcludePrecission(flat, loanCharges, "50.0", "150", "0.0", "50.0");
 
         Integer payPeriodnum = 2;
-        this.loanTransactionHelper.payChargesForLoan(loanID,
-                (Integer) getloanCharge(flatAccTransfer, loanCharges).get("id"), LoanTransactionHelper
-                .getPayChargeJSON(SavingsAccountHelper.TRANSACTION_DATE, String.valueOf(payPeriodnum)));
+        this.loanTransactionHelper.payChargesForLoan(loanID, (Integer) getloanCharge(flatAccTransfer, loanCharges).get("id"),
+                LoanTransactionHelper.getPayChargeJSON(SavingsAccountHelper.TRANSACTION_DATE, String.valueOf(payPeriodnum)));
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         loanSchedule.remove(0);
         for (HashMap installment : loanSchedule) {
             validateNumberForEqualExcludePrecission("150", String.valueOf(installment.get("feeChargesDue")));
             if (payPeriodnum.equals(installment.get("period"))) {
-                validateNumberForEqualExcludePrecission("50.0",
-                        String.valueOf(installment.get("feeChargesOutstanding")));
+                validateNumberForEqualExcludePrecission("50.0", String.valueOf(installment.get("feeChargesOutstanding")));
                 validateNumberForEqualExcludePrecission("100.0", String.valueOf(installment.get("feeChargesPaid")));
             } else if (waivePeriodnum.equals(installment.get("period"))) {
-                validateNumberForEqualExcludePrecission("100.0",
-                        String.valueOf(installment.get("feeChargesOutstanding")));
+                validateNumberForEqualExcludePrecission("100.0", String.valueOf(installment.get("feeChargesOutstanding")));
                 validateNumberForEqualExcludePrecission("50.0", String.valueOf(installment.get("feeChargesWaived")));
             } else {
-                validateNumberForEqualExcludePrecission("150.0",
-                        String.valueOf(installment.get("feeChargesOutstanding")));
+                validateNumberForEqualExcludePrecission("150.0", String.valueOf(installment.get("feeChargesOutstanding")));
                 validateNumberForEqualExcludePrecission("0.0", String.valueOf(installment.get("feeChargesPaid")));
 
             }
@@ -754,8 +714,7 @@ public class ClientLoanIntegrationTest {
         final Integer savingsId = SavingsAccountHelper.openSavingsAccount(this.requestSpec, this.responseSpec, clientID,
                 MINIMUM_OPENING_BALANCE);
 
-        final Integer loanID = applyForLoanApplication(clientID, loanProductID, null, savingsId.toString(),
-                "12,000.00");
+        final Integer loanID = applyForLoanApplication(clientID, loanProductID, null, savingsId.toString(), "12,000.00");
         Assertions.assertNotNull(loanID);
 
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
@@ -771,8 +730,7 @@ public class ClientLoanIntegrationTest {
         assertEquals(balance, summary.get("accountBalance"), "Verifying opening Balance");
 
         // DISBURSE
-        loanStatusHashMap = this.loanTransactionHelper.disburseLoanToSavings(SavingsAccountHelper.TRANSACTION_DATE,
-                loanID);
+        loanStatusHashMap = this.loanTransactionHelper.disburseLoanToSavings(SavingsAccountHelper.TRANSACTION_DATE, loanID);
         LOG.info("DISBURSE {}", loanStatusHashMap.toString());
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
@@ -801,8 +759,7 @@ public class ClientLoanIntegrationTest {
         tranches.add(createTrancheDetail("1 March 2014", "25000"));
         tranches.add(createTrancheDetail("23 April 2014", "20000"));
 
-        final Integer loanID = applyForLoanApplicationWithTranches(clientID, loanProductID, null, null, "45,000.00",
-                tranches);
+        final Integer loanID = applyForLoanApplicationWithTranches(clientID, loanProductID, null, null, "45,000.00", tranches);
         Assertions.assertNotNull(loanID);
 
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
@@ -845,8 +802,8 @@ public class ClientLoanIntegrationTest {
         tranches.add(createTrancheDetail("1 March 2014", "25000"));
         tranches.add(createTrancheDetail("23 April 2014", "20000"));
 
-        final Integer loanID = applyForLoanApplicationWithTranches(clientID, loanProductID, null, savingsId.toString(),
-                "45,000.00", tranches);
+        final Integer loanID = applyForLoanApplicationWithTranches(clientID, loanProductID, null, savingsId.toString(), "45,000.00",
+                tranches);
         Assertions.assertNotNull(loanID);
 
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
@@ -889,31 +846,28 @@ public class ClientLoanIntegrationTest {
 
     }
 
-    private void validateCharge(Integer amountPercentage, final List<HashMap> loanCharges, final String amount,
-            final String outstanding, String amountPaid, String amountWaived) {
+    private void validateCharge(Integer amountPercentage, final List<HashMap> loanCharges, final String amount, final String outstanding,
+            String amountPaid, String amountWaived) {
         HashMap chargeDetail = getloanCharge(amountPercentage, loanCharges);
-        Assertions.assertTrue(Float.valueOf(amount)
-                .compareTo(Float.valueOf(String.valueOf(chargeDetail.get("amountOrPercentage")))) == 0);
-        Assertions.assertTrue(Float.valueOf(outstanding)
-                .compareTo(Float.valueOf(String.valueOf(chargeDetail.get("amountOutstanding")))) == 0);
-        Assertions.assertTrue(Float.valueOf(amountPaid)
-                .compareTo(Float.valueOf(String.valueOf(chargeDetail.get("amountPaid")))) == 0);
-        Assertions.assertTrue(Float.valueOf(amountWaived)
-                .compareTo(Float.valueOf(String.valueOf(chargeDetail.get("amountWaived")))) == 0);
+        Assertions.assertTrue(Float.valueOf(amount).compareTo(Float.valueOf(String.valueOf(chargeDetail.get("amountOrPercentage")))) == 0);
+        Assertions.assertTrue(
+                Float.valueOf(outstanding).compareTo(Float.valueOf(String.valueOf(chargeDetail.get("amountOutstanding")))) == 0);
+        Assertions.assertTrue(Float.valueOf(amountPaid).compareTo(Float.valueOf(String.valueOf(chargeDetail.get("amountPaid")))) == 0);
+        Assertions.assertTrue(Float.valueOf(amountWaived).compareTo(Float.valueOf(String.valueOf(chargeDetail.get("amountWaived")))) == 0);
     }
 
-    private void validateChargeExcludePrecission(Integer amountPercentage, final List<HashMap> loanCharges,
-            final String amount, final String outstanding, String amountPaid, String amountWaived) {
+    private void validateChargeExcludePrecission(Integer amountPercentage, final List<HashMap> loanCharges, final String amount,
+            final String outstanding, String amountPaid, String amountWaived) {
         DecimalFormat twoDForm = new DecimalFormat("#");
         HashMap chargeDetail = getloanCharge(amountPercentage, loanCharges);
-        Assertions.assertTrue(Float.valueOf(twoDForm.format(Float.valueOf(amount))).compareTo(Float
-                .valueOf(twoDForm.format(Float.valueOf(String.valueOf(chargeDetail.get("amountOrPercentage")))))) == 0);
-        Assertions.assertTrue(Float.valueOf(twoDForm.format(Float.valueOf(outstanding))).compareTo(Float
-                .valueOf(twoDForm.format(Float.valueOf(String.valueOf(chargeDetail.get("amountOutstanding")))))) == 0);
-        Assertions.assertTrue(Float.valueOf(twoDForm.format(Float.valueOf(amountPaid))).compareTo(
-                Float.valueOf(twoDForm.format(Float.valueOf(String.valueOf(chargeDetail.get("amountPaid")))))) == 0);
-        Assertions.assertTrue(Float.valueOf(twoDForm.format(Float.valueOf(amountWaived))).compareTo(
-                Float.valueOf(twoDForm.format(Float.valueOf(String.valueOf(chargeDetail.get("amountWaived")))))) == 0);
+        Assertions.assertTrue(Float.valueOf(twoDForm.format(Float.valueOf(amount)))
+                .compareTo(Float.valueOf(twoDForm.format(Float.valueOf(String.valueOf(chargeDetail.get("amountOrPercentage")))))) == 0);
+        Assertions.assertTrue(Float.valueOf(twoDForm.format(Float.valueOf(outstanding)))
+                .compareTo(Float.valueOf(twoDForm.format(Float.valueOf(String.valueOf(chargeDetail.get("amountOutstanding")))))) == 0);
+        Assertions.assertTrue(Float.valueOf(twoDForm.format(Float.valueOf(amountPaid)))
+                .compareTo(Float.valueOf(twoDForm.format(Float.valueOf(String.valueOf(chargeDetail.get("amountPaid")))))) == 0);
+        Assertions.assertTrue(Float.valueOf(twoDForm.format(Float.valueOf(amountWaived)))
+                .compareTo(Float.valueOf(twoDForm.format(Float.valueOf(String.valueOf(chargeDetail.get("amountWaived")))))) == 0);
     }
 
     private void validateNumberForEqual(String val, String val2) {
@@ -921,18 +875,16 @@ public class ClientLoanIntegrationTest {
     }
 
     private void validateNumberForEqualWithMsg(String msg, String val, String val2) {
-        Assertions.assertTrue(Float.valueOf(val).compareTo(Float.valueOf(val2)) == 0,
-                msg + "expected " + val + " but was " + val2);
+        Assertions.assertTrue(Float.valueOf(val).compareTo(Float.valueOf(val2)) == 0, msg + "expected " + val + " but was " + val2);
     }
 
     private void validateNumberForEqualExcludePrecission(String val, String val2) {
         DecimalFormat twoDForm = new DecimalFormat("#");
-        Assertions.assertTrue(Float.valueOf(twoDForm.format(Float.valueOf(val)))
-                .compareTo(Float.valueOf(twoDForm.format(Float.valueOf(val2)))) == 0);
+        Assertions.assertTrue(
+                Float.valueOf(twoDForm.format(Float.valueOf(val))).compareTo(Float.valueOf(twoDForm.format(Float.valueOf(val2)))) == 0);
     }
 
-    private Integer createLoanProduct(final boolean multiDisburseLoan, final String accountingRule,
-            final Account... accounts) {
+    private Integer createLoanProduct(final boolean multiDisburseLoan, final String accountingRule, final Account... accounts) {
         LOG.info("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
         LoanProductTestBuilder builder = new LoanProductTestBuilder() //
                 .withPrincipal("12,000.00") //
@@ -952,8 +904,7 @@ public class ClientLoanIntegrationTest {
         return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
     }
 
-    private Integer createLoanProduct(final String inMultiplesOf, final String digitsAfterDecimal,
-            final String repaymentStrategy) {
+    private Integer createLoanProduct(final String inMultiplesOf, final String digitsAfterDecimal, final String repaymentStrategy) {
         LOG.info("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
         final String loanProductJSON = new LoanProductTestBuilder() //
                 .withPrincipal("10000000.00") //
@@ -969,8 +920,8 @@ public class ClientLoanIntegrationTest {
         return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
     }
 
-    private Integer createLoanProduct(final String inMultiplesOf, final String digitsAfterDecimal,
-            final String repaymentStrategy, final String accountingRule, final Account... accounts) {
+    private Integer createLoanProduct(final String inMultiplesOf, final String digitsAfterDecimal, final String repaymentStrategy,
+            final String accountingRule, final Account... accounts) {
         LOG.info("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
         final String loanProductJSON = new LoanProductTestBuilder() //
                 .withPrincipal("10000000.00") //
@@ -982,13 +933,11 @@ public class ClientLoanIntegrationTest {
                 .withRepaymentStrategy(repaymentStrategy) //
                 .withAmortizationTypeAsEqualPrincipalPayment() //
                 .withInterestTypeAsDecliningBalance() //
-                .currencyDetails(digitsAfterDecimal, inMultiplesOf).withAccounting(accountingRule, accounts)
-                .build(null);
+                .currencyDetails(digitsAfterDecimal, inMultiplesOf).withAccounting(accountingRule, accounts).build(null);
         return this.loanTransactionHelper.getLoanProductId(loanProductJSON);
     }
 
-    private Integer applyForLoanApplication(final Integer clientID, final Integer loanProductID,
-            String graceOnPrincipalPayment) {
+    private Integer applyForLoanApplication(final Integer clientID, final Integer loanProductID, String graceOnPrincipalPayment) {
         LOG.info("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
         final String loanApplicationJSON = new LoanApplicationTestBuilder() //
                 .withPrincipal("10000000.00") //
@@ -1027,8 +976,8 @@ public class ClientLoanIntegrationTest {
         return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
     }
 
-    private Integer applyForLoanApplicationWithTranches(final Integer clientID, final Integer loanProductID,
-            List<HashMap> charges, final String savingsId, String principal, List<HashMap> tranches) {
+    private Integer applyForLoanApplicationWithTranches(final Integer clientID, final Integer loanProductID, List<HashMap> charges,
+            final String savingsId, String principal, List<HashMap> tranches) {
         LOG.info("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
         final String loanApplicationJSON = new LoanApplicationTestBuilder() //
                 .withPrincipal(principal) //
@@ -1049,8 +998,7 @@ public class ClientLoanIntegrationTest {
         return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
     }
 
-    private String updateLoanJson(final Integer clientID, final Integer loanProductID, List<HashMap> charges,
-            String savingsId) {
+    private String updateLoanJson(final Integer clientID, final Integer loanProductID, List<HashMap> charges, String savingsId) {
         LOG.info("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
         final String loanApplicationJSON = new LoanApplicationTestBuilder() //
                 .withPrincipal("10,000.00") //
@@ -1069,8 +1017,8 @@ public class ClientLoanIntegrationTest {
         return loanApplicationJSON;
     }
 
-    private Integer applyForLoanApplicationWithPaymentStrategy(final Integer clientID, final Integer loanProductID,
-            List<HashMap> charges, final String savingsId, String principal, final String repaymentStrategy) {
+    private Integer applyForLoanApplicationWithPaymentStrategy(final Integer clientID, final Integer loanProductID, List<HashMap> charges,
+            final String savingsId, String principal, final String repaymentStrategy) {
         LOG.info("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
         final String loanApplicationJSON = new LoanApplicationTestBuilder() //
                 .withPrincipal(principal) //
@@ -1090,9 +1038,8 @@ public class ClientLoanIntegrationTest {
         return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
     }
 
-    private Integer applyForLoanApplicationWithPaymentStrategyAndPastMonth(final Integer clientID,
-            final Integer loanProductID, List<HashMap> charges, final String savingsId, String principal,
-            final String repaymentStrategy, final int month) {
+    private Integer applyForLoanApplicationWithPaymentStrategyAndPastMonth(final Integer clientID, final Integer loanProductID,
+            List<HashMap> charges, final String savingsId, String principal, final String repaymentStrategy, final int month) {
         LOG.info("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
 
         Calendar fourMonthsfromNowCalendar = Calendar.getInstance(Utils.getTimeZoneOfTenant());
@@ -1119,239 +1066,129 @@ public class ClientLoanIntegrationTest {
     }
 
     private void verifyLoanRepaymentSchedule(final ArrayList<HashMap> loanSchedule) {
-        LOG.info(
-                "--------------------VERIFYING THE PRINCIPAL DUES,INTEREST DUE AND DUE DATE--------------------------");
+        LOG.info("--------------------VERIFYING THE PRINCIPAL DUES,INTEREST DUE AND DUE DATE--------------------------");
 
-        assertEquals(new ArrayList<>(Arrays.asList(2011, 10, 20)),
-                loanSchedule.get(1).get("dueDate"),
+        assertEquals(new ArrayList<>(Arrays.asList(2011, 10, 20)), loanSchedule.get(1).get("dueDate"),
                 "Checking for Due Date for 1st Month");
-        assertEquals(Float.valueOf("2911.49"),
-                loanSchedule.get(1).get("principalOriginalDue"),
-                "Checking for Principal Due for 1st Month");
-        assertEquals(Float.valueOf("240.00"),
-                loanSchedule.get(1).get("interestOriginalDue"),
-                "Checking for Interest Due for 1st Month");
-
-        assertEquals(new ArrayList<>(Arrays.asList(2011, 11, 20)),
-                loanSchedule.get(2).get("dueDate"),
+        assertEquals(Float.valueOf("2911.49"), loanSchedule.get(1).get("principalOriginalDue"), "Checking for Principal Due for 1st Month");
+        assertEquals(Float.valueOf("240.00"), loanSchedule.get(1).get("interestOriginalDue"), "Checking for Interest Due for 1st Month");
+
+        assertEquals(new ArrayList<>(Arrays.asList(2011, 11, 20)), loanSchedule.get(2).get("dueDate"),
                 "Checking for Due Date for 2nd Month");
-        assertEquals(Float.valueOf("2969.72"),
-                loanSchedule.get(2).get("principalDue"),
-                "Checking for Principal Due for 2nd Month");
-        assertEquals(Float.valueOf("181.77"),
-                loanSchedule.get(2).get("interestOriginalDue"),
-                "Checking for Interest Due for 2nd Month");
-
-        assertEquals(new ArrayList<>(Arrays.asList(2011, 12, 20)),
-                loanSchedule.get(3).get("dueDate"),
+        assertEquals(Float.valueOf("2969.72"), loanSchedule.get(2).get("principalDue"), "Checking for Principal Due for 2nd Month");
+        assertEquals(Float.valueOf("181.77"), loanSchedule.get(2).get("interestOriginalDue"), "Checking for Interest Due for 2nd Month");
+
+        assertEquals(new ArrayList<>(Arrays.asList(2011, 12, 20)), loanSchedule.get(3).get("dueDate"),
                 "Checking for Due Date for 3rd Month");
-        assertEquals(Float.valueOf("3029.11"),
-                loanSchedule.get(3).get("principalDue"),
-                "Checking for Principal Due for 3rd Month");
-        assertEquals(Float.valueOf("122.38"),
-                loanSchedule.get(3).get("interestOriginalDue"),
-                "Checking for Interest Due for 3rd Month");
-
-        assertEquals(new ArrayList<>(Arrays.asList(2012, 1, 20)),
-                loanSchedule.get(4).get("dueDate"),
+        assertEquals(Float.valueOf("3029.11"), loanSchedule.get(3).get("principalDue"), "Checking for Principal Due for 3rd Month");
+        assertEquals(Float.valueOf("122.38"), loanSchedule.get(3).get("interestOriginalDue"), "Checking for Interest Due for 3rd Month");
+
+        assertEquals(new ArrayList<>(Arrays.asList(2012, 1, 20)), loanSchedule.get(4).get("dueDate"),
                 "Checking for Due Date for 4th Month");
-        assertEquals(Float.valueOf("3089.68"),
-                loanSchedule.get(4).get("principalDue"),
-                "Checking for Principal Due for 4th Month");
-        assertEquals(Float.valueOf("61.79"),
-                loanSchedule.get(4).get("interestOriginalDue"),
-                "Checking for Interest Due for 4th Month");
+        assertEquals(Float.valueOf("3089.68"), loanSchedule.get(4).get("principalDue"), "Checking for Principal Due for 4th Month");
+        assertEquals(Float.valueOf("61.79"), loanSchedule.get(4).get("interestOriginalDue"), "Checking for Interest Due for 4th Month");
     }
 
     private void verifyLoanRepaymentScheduleForEqualPrincipal(final ArrayList<HashMap> loanSchedule) {
-        LOG.info(
-                "--------------------VERIFYING THE PRINCIPAL DUES,INTEREST DUE AND DUE DATE--------------------------");
+        LOG.info("--------------------VERIFYING THE PRINCIPAL DUES,INTEREST DUE AND DUE DATE--------------------------");
 
-        assertEquals(new ArrayList<>(Arrays.asList(2014, 7, 2)),
-                loanSchedule.get(1).get("dueDate"),
-                "Checking for Due Date for 1st Month");
-        assertEquals(Float.valueOf("416700"),
-                loanSchedule.get(1).get("principalOriginalDue"),
-                "Checking for Principal Due for 1st Month");
-        assertEquals(Float.valueOf("200000"),
-                loanSchedule.get(1).get("interestOriginalDue"),
-                "Checking for Interest Due for 1st Month");
-
-        assertEquals(new ArrayList<>(Arrays.asList(2014, 8, 2)),
-                loanSchedule.get(2).get("dueDate"),
-                "Checking for Due Date for 2nd Month");
-        assertEquals(Float.valueOf("416700"),
-                loanSchedule.get(2).get("principalDue"),
-                "Checking for Principal Due for 2nd Month");
-        assertEquals(Float.valueOf("191700"),
-                loanSchedule.get(2).get("interestOriginalDue"),
-                "Checking for Interest Due for 2nd Month");
-
-        assertEquals(new ArrayList<>(Arrays.asList(2014, 9, 2)),
-                loanSchedule.get(3).get("dueDate"),
-                "Checking for Due Date for 3rd Month");
-        assertEquals(Float.valueOf("416700"),
-                loanSchedule.get(3).get("principalDue"),
-                "Checking for Principal Due for 3rd Month");
-        assertEquals(Float.valueOf("183300"),
-                loanSchedule.get(3).get("interestOriginalDue"),
-                "Checking for Interest Due for 3rd Month");
-
-        assertEquals(new ArrayList<>(Arrays.asList(2014, 10, 2)),
-                loanSchedule.get(4).get("dueDate"),
+        assertEquals(new ArrayList<>(Arrays.asList(2014, 7, 2)), loanSchedule.get(1).get("dueDate"), "Checking for Due Date for 1st Month");
+        assertEquals(Float.valueOf("416700"), loanSchedule.get(1).get("principalOriginalDue"), "Checking for Principal Due for 1st Month");
+        assertEquals(Float.valueOf("200000"), loanSchedule.get(1).get("interestOriginalDue"), "Checking for Interest Due for 1st Month");
+
+        assertEquals(new ArrayList<>(Arrays.asList(2014, 8, 2)), loanSchedule.get(2).get("dueDate"), "Checking for Due Date for 2nd Month");
+        assertEquals(Float.valueOf("416700"), loanSchedule.get(2).get("principalDue"), "Checking for Principal Due for 2nd Month");
+        assertEquals(Float.valueOf("191700"), loanSchedule.get(2).get("interestOriginalDue"), "Checking for Interest Due for 2nd Month");
+
+        assertEquals(new ArrayList<>(Arrays.asList(2014, 9, 2)), loanSchedule.get(3).get("dueDate"), "Checking for Due Date for 3rd Month");
+        assertEquals(Float.valueOf("416700"), loanSchedule.get(3).get("principalDue"), "Checking for Principal Due for 3rd Month");
+        assertEquals(Float.valueOf("183300"), loanSchedule.get(3).get("interestOriginalDue"), "Checking for Interest Due for 3rd Month");
+
+        assertEquals(new ArrayList<>(Arrays.asList(2014, 10, 2)), loanSchedule.get(4).get("dueDate"),
                 "Checking for Due Date for 4th Month");
-        assertEquals(Float.valueOf("416700"),
-                loanSchedule.get(4).get("principalDue"),
-                "Checking for Principal Due for 4th Month");
-        assertEquals(Float.valueOf("175000"),
-                loanSchedule.get(4).get("interestOriginalDue"),
-                "Checking for Interest Due for 4th Month");
-
-        assertEquals(new ArrayList<>(Arrays.asList(2014, 11, 2)),
-                loanSchedule.get(5).get("dueDate"),
+        assertEquals(Float.valueOf("416700"), loanSchedule.get(4).get("principalDue"), "Checking for Principal Due for 4th Month");
+        assertEquals(Float.valueOf("175000"), loanSchedule.get(4).get("interestOriginalDue"), "Checking for Interest Due for 4th Month");
+
+        assertEquals(new ArrayList<>(Arrays.asList(2014, 11, 2)), loanSchedule.get(5).get("dueDate"),
                 "Checking for Due Date for 5th Month");
-        assertEquals(Float.valueOf("416700"),
-                loanSchedule.get(5).get("principalDue"),
-                "Checking for Principal Due for 5th Month");
-        assertEquals(Float.valueOf("166700"),
-                loanSchedule.get(5).get("interestOriginalDue"),
-                "Checking for Interest Due for 5th Month");
-
-        assertEquals(new ArrayList<>(Arrays.asList(2014, 12, 2)),
-                loanSchedule.get(6).get("dueDate"),
+        assertEquals(Float.valueOf("416700"), loanSchedule.get(5).get("principalDue"), "Checking for Principal Due for 5th Month");
+        assertEquals(Float.valueOf("166700"), loanSchedule.get(5).get("interestOriginalDue"), "Checking for Interest Due for 5th Month");
+
+        assertEquals(new ArrayList<>(Arrays.asList(2014, 12, 2)), loanSchedule.get(6).get("dueDate"),
                 "Checking for Due Date for 6th Month");
-        assertEquals(Float.valueOf("416700"),
-                loanSchedule.get(6).get("principalDue"),
-                "Checking for Principal Due for 6th Month");
-        assertEquals(Float.valueOf("158300"),
-                loanSchedule.get(6).get("interestOriginalDue"),
-                "Checking for Interest Due for 6th Month");
-
-        assertEquals(new ArrayList<>(Arrays.asList(2015, 4, 2)),
-                loanSchedule.get(10).get("dueDate"),
+        assertEquals(Float.valueOf("416700"), loanSchedule.get(6).get("principalDue"), "Checking for Principal Due for 6th Month");
+        assertEquals(Float.valueOf("158300"), loanSchedule.get(6).get("interestOriginalDue"), "Checking for Interest Due for 6th Month");
+
+        assertEquals(new ArrayList<>(Arrays.asList(2015, 4, 2)), loanSchedule.get(10).get("dueDate"),
                 "Checking for Due Date for 10th Month");
-        assertEquals(Float.valueOf("416700"),
-                loanSchedule.get(10).get("principalDue"),
-                "Checking for Principal Due for 10th Month");
-        assertEquals(Float.valueOf("125000"),
-                loanSchedule.get(10).get("interestOriginalDue"),
-                "Checking for Interest Due for 10th Month");
-
-        assertEquals(new ArrayList<>(Arrays.asList(2016, 2, 2)),
-                loanSchedule.get(20).get("dueDate"),
+        assertEquals(Float.valueOf("416700"), loanSchedule.get(10).get("principalDue"), "Checking for Principal Due for 10th Month");
+        assertEquals(Float.valueOf("125000"), loanSchedule.get(10).get("interestOriginalDue"), "Checking for Interest Due for 10th Month");
+
+        assertEquals(new ArrayList<>(Arrays.asList(2016, 2, 2)), loanSchedule.get(20).get("dueDate"),
                 "Checking for Due Date for 20th Month");
-        assertEquals(Float.valueOf("416700"),
-                loanSchedule.get(20).get("principalDue"),
-                "Checking for Principal Due for 20th Month");
-        assertEquals(Float.valueOf("41700"),
-                loanSchedule.get(20).get("interestOriginalDue"),
-                "Checking for Interest Due for 20th Month");
-
-        assertEquals(new ArrayList<>(Arrays.asList(2016, 6, 2)),
-                loanSchedule.get(24).get("dueDate"),
+        assertEquals(Float.valueOf("416700"), loanSchedule.get(20).get("principalDue"), "Checking for Principal Due for 20th Month");
+        assertEquals(Float.valueOf("41700"), loanSchedule.get(20).get("interestOriginalDue"), "Checking for Interest Due for 20th Month");
+
+        assertEquals(new ArrayList<>(Arrays.asList(2016, 6, 2)), loanSchedule.get(24).get("dueDate"),
                 "Checking for Due Date for 24th Month");
-        assertEquals(Float.valueOf("415900"),
-                loanSchedule.get(24).get("principalDue"),
-                "Checking for Principal Due for 24th Month");
-        assertEquals(Float.valueOf("8300"),
-                loanSchedule.get(24).get("interestOriginalDue"),
-                "Checking for Interest Due for 24th Month");
+        assertEquals(Float.valueOf("415900"), loanSchedule.get(24).get("principalDue"), "Checking for Principal Due for 24th Month");
+        assertEquals(Float.valueOf("8300"), loanSchedule.get(24).get("interestOriginalDue"), "Checking for Interest Due for 24th Month");
 
     }
 
     private void verifyLoanRepaymentScheduleForEqualPrincipalWithGrace(final ArrayList<HashMap> loanSchedule) {
-        LOG.info(
-                "--------------------VERIFYING THE PRINCIPAL DUES,INTEREST DUE AND DUE DATE--------------------------");
+        LOG.info("--------------------VERIFYING THE PRINCIPAL DUES,INTEREST DUE AND DUE DATE--------------------------");
 
-        assertEquals(new ArrayList<>(Arrays.asList(2014, 7, 2)),
-                loanSchedule.get(1).get("dueDate"),
-                "Checking for Due Date for 1st Month");
-        validateNumberForEqualWithMsg("Checking for Principal Due for 1st Month", String.valueOf(loanSchedule.get(1).get("principalOriginalDue")), "0.0");
-        assertEquals(Float.valueOf("200000"),
-                loanSchedule.get(1).get("interestOriginalDue"),
-                "Checking for Interest Due for 1st Month");
+        assertEquals(new ArrayList<>(Arrays.asList(2014, 7, 2)), loanSchedule.get(1).get("dueDate"), "Checking for Due Date for 1st Month");
+        validateNumberForEqualWithMsg("Checking for Principal Due for 1st Month",
+                String.valueOf(loanSchedule.get(1).get("principalOriginalDue")), "0.0");
+        assertEquals(Float.valueOf("200000"), loanSchedule.get(1).get("interestOriginalDue"), "Checking for Interest Due for 1st Month");
 
-        assertEquals(new ArrayList<>(Arrays.asList(2014, 8, 2)),
-                loanSchedule.get(2).get("dueDate"),
-                "Checking for Due Date for 2nd Month");
-        validateNumberForEqualWithMsg("Checking for Principal Due for 2nd Month", "0.0", String.valueOf(loanSchedule.get(2).get("principalOriginalDue")));
-        assertEquals(Float.valueOf("200000"),
-                loanSchedule.get(2).get("interestOriginalDue"),
-                "Checking for Interest Due for 2nd Month");
+        assertEquals(new ArrayList<>(Arrays.asList(2014, 8, 2)), loanSchedule.get(2).get("dueDate"), "Checking for Due Date for 2nd Month");
+        validateNumberForEqualWithMsg("Checking for Principal Due for 2nd Month", "0.0",
+                String.valueOf(loanSchedule.get(2).get("principalOriginalDue")));
+        assertEquals(Float.valueOf("200000"), loanSchedule.get(2).get("interestOriginalDue"), "Checking for Interest Due for 2nd Month");
 
-        assertEquals(new ArrayList<>(Arrays.asList(2014, 9, 2)),
-                loanSchedule.get(3).get("dueDate"),
-                "Checking for Due Date for 3rd Month");
-        validateNumberForEqualWithMsg("Checking for Principal Due for 3rd Month", "0.0", String.valueOf(loanSchedule.get(3).get("principalDue")));
-        assertEquals(Float.valueOf("200000"), loanSchedule.get(3).get("interestOriginalDue"),
-                "Checking for Interest Due for 3rd Month");
+        assertEquals(new ArrayList<>(Arrays.asList(2014, 9, 2)), loanSchedule.get(3).get("dueDate"), "Checking for Due Date for 3rd Month");
+        validateNumberForEqualWithMsg("Checking for Principal Due for 3rd Month", "0.0",
+                String.valueOf(loanSchedule.get(3).get("principalDue")));
+        assertEquals(Float.valueOf("200000"), loanSchedule.get(3).get("interestOriginalDue"), "Checking for Interest Due for 3rd Month");
 
-        assertEquals(new ArrayList<>(Arrays.asList(2014, 10, 2)),
-                loanSchedule.get(4).get("dueDate"),
+        assertEquals(new ArrayList<>(Arrays.asList(2014, 10, 2)), loanSchedule.get(4).get("dueDate"),
                 "Checking for Due Date for 4th Month");
-        validateNumberForEqualWithMsg("Checking for Principal Due for 4th Month", "0", String.valueOf(loanSchedule.get(4).get("principalDue")));
-        assertEquals(Float.valueOf("200000"),
-                loanSchedule.get(4).get("interestOriginalDue"),
-                "Checking for Interest Due for 4th Month");
+        validateNumberForEqualWithMsg("Checking for Principal Due for 4th Month", "0",
+                String.valueOf(loanSchedule.get(4).get("principalDue")));
+        assertEquals(Float.valueOf("200000"), loanSchedule.get(4).get("interestOriginalDue"), "Checking for Interest Due for 4th Month");
 
-        assertEquals(new ArrayList<>(Arrays.asList(2014, 11, 2)),
-                loanSchedule.get(5).get("dueDate"),
+        assertEquals(new ArrayList<>(Arrays.asList(2014, 11, 2)), loanSchedule.get(5).get("dueDate"),
                 "Checking for Due Date for 5th Month");
         validateNumberForEqualWithMsg("Checking for Principal Due for 5th Month", "0",
                 String.valueOf(loanSchedule.get(5).get("principalDue")));
-        assertEquals(Float.valueOf("200000"),
-                loanSchedule.get(5).get("interestOriginalDue"),
-                "Checking for Interest Due for 5th Month");
+        assertEquals(Float.valueOf("200000"), loanSchedule.get(5).get("interestOriginalDue"), "Checking for Interest Due for 5th Month");
 
-        assertEquals(new ArrayList<>(Arrays.asList(2014, 12, 2)),
-                loanSchedule.get(6).get("dueDate"),
+        assertEquals(new ArrayList<>(Arrays.asList(2014, 12, 2)), loanSchedule.get(6).get("dueDate"),
                 "Checking for Due Date for 6th Month");
-        assertEquals(Float.valueOf("526300"),
-                loanSchedule.get(6).get("principalDue"),
-                "Checking for Principal Due for 6th Month");
-        assertEquals(Float.valueOf("200000"),
-                loanSchedule.get(6).get("interestOriginalDue"),
-                "Checking for Interest Due for 6th Month");
-
-        assertEquals(new ArrayList<>(Arrays.asList(2015, 1, 2)),
-                loanSchedule.get(7).get("dueDate"),
-                "Checking for Due Date for 7th Month");
-        assertEquals(Float.valueOf("526300"),
-                loanSchedule.get(7).get("principalDue"),
-                "Checking for Principal Due for 7th Month");
-        assertEquals(Float.valueOf("189500"),
-                loanSchedule.get(7).get("interestOriginalDue"),
-                "Checking for Interest Due for 7th Month");
-
-        assertEquals(new ArrayList<>(Arrays.asList(2015, 4, 2)),
-                loanSchedule.get(10).get("dueDate"),
+        assertEquals(Float.valueOf("526300"), loanSchedule.get(6).get("principalDue"), "Checking for Principal Due for 6th Month");
+        assertEquals(Float.valueOf("200000"), loanSchedule.get(6).get("interestOriginalDue"), "Checking for Interest Due for 6th Month");
+
+        assertEquals(new ArrayList<>(Arrays.asList(2015, 1, 2)), loanSchedule.get(7).get("dueDate"), "Checking for Due Date for 7th Month");
+        assertEquals(Float.valueOf("526300"), loanSchedule.get(7).get("principalDue"), "Checking for Principal Due for 7th Month");
+        assertEquals(Float.valueOf("189500"), loanSchedule.get(7).get("interestOriginalDue"), "Checking for Interest Due for 7th Month");
+
+        assertEquals(new ArrayList<>(Arrays.asList(2015, 4, 2)), loanSchedule.get(10).get("dueDate"),
                 "Checking for Due Date for 10th Month");
-        assertEquals(Float.valueOf("526300"),
-                loanSchedule.get(10).get("principalDue"),
-                "Checking for Principal Due for 10th Month");
-        assertEquals(Float.valueOf("157900"),
-                loanSchedule.get(10).get("interestOriginalDue"),
-                "Checking for Interest Due for 10th Month");
-
-        assertEquals(new ArrayList<>(Arrays.asList(2016, 2, 2)),
-                loanSchedule.get(20).get("dueDate"),
+        assertEquals(Float.valueOf("526300"), loanSchedule.get(10).get("principalDue"), "Checking for Principal Due for 10th Month");
+        assertEquals(Float.valueOf("157900"), loanSchedule.get(10).get("interestOriginalDue"), "Checking for Interest Due for 10th Month");
+
+        assertEquals(new ArrayList<>(Arrays.asList(2016, 2, 2)), loanSchedule.get(20).get("dueDate"),
                 "Checking for Due Date for 20th Month");
-        assertEquals(Float.valueOf("526300"),
-                loanSchedule.get(20).get("principalDue"),
-                "Checking for Principal Due for 20th Month");
-        assertEquals(Float.valueOf("52600"),
-                loanSchedule.get(20).get("interestOriginalDue"),
-                "Checking for Interest Due for 20th Month");
-
-        assertEquals(new ArrayList<>(Arrays.asList(2016, 6, 2)),
-                loanSchedule.get(24).get("dueDate"),
+        assertEquals(Float.valueOf("526300"), loanSchedule.get(20).get("principalDue"), "Checking for Principal Due for 20th Month");
+        assertEquals(Float.valueOf("52600"), loanSchedule.get(20).get("interestOriginalDue"), "Checking for Interest Due for 20th Month");
+
+        assertEquals(new ArrayList<>(Arrays.asList(2016, 6, 2)), loanSchedule.get(24).get("dueDate"),
                 "Checking for Due Date for 24th Month");
-        assertEquals(Float.valueOf("526600"),
-                loanSchedule.get(24).get("principalDue"),
-                "Checking for Principal Due for 24th Month");
-        assertEquals(Float.valueOf("10500"),
-                loanSchedule.get(24).get("interestOriginalDue"),
-                "Checking for Interest Due for 24th Month");
+        assertEquals(Float.valueOf("526600"), loanSchedule.get(24).get("principalDue"), "Checking for Principal Due for 24th Month");
+        assertEquals(Float.valueOf("10500"), loanSchedule.get(24).get("interestOriginalDue"), "Checking for Interest Due for 24th Month");
     }
 
     private void addCharges(List<HashMap> charges, Integer chargeId, String amount, String duedate) {
@@ -1412,8 +1249,8 @@ public class ClientLoanIntegrationTest {
     }
 
     /***
-     * Test case for checking CashBasedAccounting functionality adding charges with
-     * calculation type flat
+     * Test case for checking CashBasedAccounting functionality adding charges
+     * with calculation type flat
      */
     @Test
     public void loanWithFlatCahargesAndCashBasedAccountingEnabled() {
@@ -1424,8 +1261,7 @@ public class ClientLoanIntegrationTest {
 
         // Add charges with payment mode regular
         List<HashMap> charges = new ArrayList<>();
-        Integer flatDisbursement = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanDisbursementJSON());
+        Integer flatDisbursement = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper.getLoanDisbursementJSON());
         addCharges(charges, flatDisbursement, "100", null);
         Integer flatSpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "100", false));
@@ -1439,15 +1275,13 @@ public class ClientLoanIntegrationTest {
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
         final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
 
-        final Integer loanProductID = createLoanProduct(false, CASH_BASED, assetAccount, incomeAccount, expenseAccount,
-                overpaymentAccount);
+        final Integer loanProductID = createLoanProduct(false, CASH_BASED, assetAccount, incomeAccount, expenseAccount, overpaymentAccount);
         final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         verifyLoanRepaymentSchedule(loanSchedule);
 
         List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -1476,12 +1310,10 @@ public class ClientLoanIntegrationTest {
         loanStatusHashMap = this.loanTransactionHelper.disburseLoan("20 September 2011", loanID);
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        final JournalEntry[] assetAccountInitialEntry = {
-                new JournalEntry(Float.valueOf("100.00"), JournalEntry.TransactionType.DEBIT),
+        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(Float.valueOf("100.00"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.DEBIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011",
-                assetAccountInitialEntry);
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011", assetAccountInitialEntry);
         this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 September 2011",
                 new JournalEntry(Float.valueOf("100.00"), JournalEntry.TransactionType.CREDIT));
         loanCharges.clear();
@@ -1502,16 +1334,14 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 October 2011",
                 new JournalEntry(Float.valueOf("150.00"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("240.00"), JournalEntry.TransactionType.CREDIT));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatSpecifiedDueDate),
-                        "29 October 2011", "100"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatSpecifiedDueDate), "29 October 2011", "100"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
 
         secondInstallment = loanSchedule.get(2);
         validateNumberForEqual("150.00", String.valueOf(secondInstallment.get("feeChargesDue")));
-        this.loanTransactionHelper.waiveChargesForLoan(loanID,
-                (Integer) getloanCharge(flatInstallmentFee, loanCharges).get("id"),
+        this.loanTransactionHelper.waiveChargesForLoan(loanID, (Integer) getloanCharge(flatInstallmentFee, loanCharges).get("id"),
                 LoanTransactionHelper.getWaiveChargeJSON(String.valueOf(2)));
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -1539,9 +1369,8 @@ public class ClientLoanIntegrationTest {
 
         Integer flatPenaltySpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "100", true));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(flatPenaltySpecifiedDueDate), "29 September 2011", "100"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatPenaltySpecifiedDueDate), "29 September 2011", "100"));
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         validateCharge(flatPenaltySpecifiedDueDate, loanCharges, "100", "0.00", "100.0", "0.0");
@@ -1567,9 +1396,8 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 November 2011",
                 new JournalEntry(Float.valueOf("50.00"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("122.38"), JournalEntry.TransactionType.CREDIT));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(flatPenaltySpecifiedDueDate), "10 January 2012", "100"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatPenaltySpecifiedDueDate), "10 January 2012", "100"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap fourthInstallment = loanSchedule.get(4);
@@ -1598,8 +1426,8 @@ public class ClientLoanIntegrationTest {
     }
 
     /***
-     * Test case for checking CashBasedAccounting functionality adding charges with
-     * calculation type percentage of amount
+     * Test case for checking CashBasedAccounting functionality adding charges
+     * with calculation type percentage of amount
      */
     @Test
     public void loanWithCahargesOfTypeAmountPercentageAndCashBasedAccountingEnabled() {
@@ -1614,12 +1442,12 @@ public class ClientLoanIntegrationTest {
                 ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1"));
         addCharges(charges, percentageDisbursementCharge, "1", null);
 
-        Integer percentageSpecifiedDueDateCharge = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
+        Integer percentageSpecifiedDueDateCharge = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
         addCharges(charges, percentageSpecifiedDueDateCharge, "1", "29 September 2011");
 
-        Integer percentageInstallmentFee = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
+        Integer percentageInstallmentFee = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
         addCharges(charges, percentageInstallmentFee, "1", "29 September 2011");
 
         final Account assetAccount = this.accountHelper.createAssetAccount();
@@ -1627,15 +1455,13 @@ public class ClientLoanIntegrationTest {
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
         final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
 
-        final Integer loanProductID = createLoanProduct(false, CASH_BASED, assetAccount, incomeAccount, expenseAccount,
-                overpaymentAccount);
+        final Integer loanProductID = createLoanProduct(false, CASH_BASED, assetAccount, incomeAccount, expenseAccount, overpaymentAccount);
         final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         verifyLoanRepaymentSchedule(loanSchedule);
 
         List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -1664,12 +1490,10 @@ public class ClientLoanIntegrationTest {
         loanStatusHashMap = this.loanTransactionHelper.disburseLoan("20 September 2011", loanID);
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        final JournalEntry[] assetAccountInitialEntry = {
-                new JournalEntry(Float.valueOf("120.00"), JournalEntry.TransactionType.DEBIT),
+        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(Float.valueOf("120.00"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.DEBIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011",
-                assetAccountInitialEntry);
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011", assetAccountInitialEntry);
         this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 September 2011",
                 new JournalEntry(Float.valueOf("120.00"), JournalEntry.TransactionType.CREDIT));
         loanCharges.clear();
@@ -1690,16 +1514,14 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 October 2011",
                 new JournalEntry(Float.valueOf("149.11"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("240.00"), JournalEntry.TransactionType.CREDIT));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(percentageSpecifiedDueDateCharge), "29 October 2011", "1"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(percentageSpecifiedDueDateCharge), "29 October 2011", "1"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
 
         secondInstallment = loanSchedule.get(2);
         validateNumberForEqual("149.70", String.valueOf(secondInstallment.get("feeChargesDue")));
-        this.loanTransactionHelper.waiveChargesForLoan(loanID,
-                (Integer) getloanCharge(percentageInstallmentFee, loanCharges).get("id"),
+        this.loanTransactionHelper.waiveChargesForLoan(loanID, (Integer) getloanCharge(percentageInstallmentFee, loanCharges).get("id"),
                 LoanTransactionHelper.getWaiveChargeJSON(String.valueOf(2)));
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -1725,11 +1547,10 @@ public class ClientLoanIntegrationTest {
         HashMap thirdInstallment = loanSchedule.get(3);
         validateNumberForEqual("60.59", String.valueOf(thirdInstallment.get("interestOutstanding")));
 
-        Integer percentagePenaltySpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", true));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(percentagePenaltySpecifiedDueDate), "29 September 2011", "1"));
+        Integer percentagePenaltySpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", true));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(percentagePenaltySpecifiedDueDate), "29 September 2011", "1"));
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         validateCharge(percentagePenaltySpecifiedDueDate, loanCharges, "1", "0.00", "120.0", "0.0");
@@ -1755,9 +1576,8 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 November 2011",
                 new JournalEntry(Float.valueOf("30.29"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("122.38"), JournalEntry.TransactionType.CREDIT));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(percentagePenaltySpecifiedDueDate), "10 January 2012", "1"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(percentagePenaltySpecifiedDueDate), "10 January 2012", "1"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap fourthInstallment = loanSchedule.get(4);
@@ -1786,8 +1606,8 @@ public class ClientLoanIntegrationTest {
     }
 
     /***
-     * Test case for checking CashBasedAccounting functionality adding charges with
-     * calculation type percentage of amount plus interest
+     * Test case for checking CashBasedAccounting functionality adding charges
+     * with calculation type percentage of amount plus interest
      */
     @Test
     public void loanWithCahargesOfTypeAmountPlusInterestPercentageAndCashBasedAccountingEnabled() {
@@ -1799,18 +1619,15 @@ public class ClientLoanIntegrationTest {
         // Add charges with payment mode regular
         List<HashMap> charges = new ArrayList<>();
         Integer amountPlusInterestPercentageDisbursementCharge = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanDisbursementJSON(
-                        ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1"));
+                ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1"));
         addCharges(charges, amountPlusInterestPercentageDisbursementCharge, "1", null);
 
-        Integer amountPlusInterestPercentageSpecifiedDueDateCharge = ChargesHelper.createCharges(requestSpec,
-                responseSpec, ChargesHelper.getLoanSpecifiedDueDateJSON(
-                        ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
+        Integer amountPlusInterestPercentageSpecifiedDueDateCharge = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
+                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
         addCharges(charges, amountPlusInterestPercentageSpecifiedDueDateCharge, "1", "29 September 2011");
 
         Integer amountPlusInterestPercentageInstallmentFee = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanInstallmentJSON(
-                        ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
+                ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
         addCharges(charges, amountPlusInterestPercentageInstallmentFee, "1", "29 September 2011");
 
         final Account assetAccount = this.accountHelper.createAssetAccount();
@@ -1818,15 +1635,13 @@ public class ClientLoanIntegrationTest {
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
         final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
 
-        final Integer loanProductID = createLoanProduct(false, CASH_BASED, assetAccount, incomeAccount, expenseAccount,
-                overpaymentAccount);
+        final Integer loanProductID = createLoanProduct(false, CASH_BASED, assetAccount, incomeAccount, expenseAccount, overpaymentAccount);
         final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         verifyLoanRepaymentSchedule(loanSchedule);
 
         List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -1855,12 +1670,10 @@ public class ClientLoanIntegrationTest {
         loanStatusHashMap = this.loanTransactionHelper.disburseLoan("20 September 2011", loanID);
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        final JournalEntry[] assetAccountInitialEntry = {
-                new JournalEntry(Float.valueOf("126.06"), JournalEntry.TransactionType.DEBIT),
+        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(Float.valueOf("126.06"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.DEBIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011",
-                assetAccountInitialEntry);
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011", assetAccountInitialEntry);
         this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 September 2011",
                 new JournalEntry(Float.valueOf("126.06"), JournalEntry.TransactionType.CREDIT));
         loanCharges.clear();
@@ -1881,9 +1694,8 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 October 2011",
                 new JournalEntry(Float.valueOf("157.57"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("240.00"), JournalEntry.TransactionType.CREDIT));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(amountPlusInterestPercentageSpecifiedDueDateCharge), "29 October 2011", "1"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
+                String.valueOf(amountPlusInterestPercentageSpecifiedDueDateCharge), "29 October 2011", "1"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
 
@@ -1916,12 +1728,10 @@ public class ClientLoanIntegrationTest {
         HashMap thirdInstallment = loanSchedule.get(3);
         validateNumberForEqual("60.59", String.valueOf(thirdInstallment.get("interestOutstanding")));
 
-        Integer amountPlusInterestPercentagePenaltySpecifiedDueDate = ChargesHelper.createCharges(requestSpec,
-                responseSpec, ChargesHelper.getLoanSpecifiedDueDateJSON(
-                        ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", true));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(amountPlusInterestPercentagePenaltySpecifiedDueDate), "29 September 2011", "1"));
+        Integer amountPlusInterestPercentagePenaltySpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", true));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
+                String.valueOf(amountPlusInterestPercentagePenaltySpecifiedDueDate), "29 September 2011", "1"));
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         validateCharge(amountPlusInterestPercentagePenaltySpecifiedDueDate, loanCharges, "1", "0.0", "120.0", "0.0");
@@ -1947,9 +1757,8 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 November 2011",
                 new JournalEntry(Float.valueOf("31.51"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("122.38"), JournalEntry.TransactionType.CREDIT));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(amountPlusInterestPercentagePenaltySpecifiedDueDate), "10 January 2012", "1"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
+                String.valueOf(amountPlusInterestPercentagePenaltySpecifiedDueDate), "10 January 2012", "1"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap fourthInstallment = loanSchedule.get(4);
@@ -1978,8 +1787,8 @@ public class ClientLoanIntegrationTest {
     }
 
     /***
-     * Test case for checking AccuralUpfrontAccounting functionality adding charges
-     * with calculation type flat
+     * Test case for checking AccuralUpfrontAccounting functionality adding
+     * charges with calculation type flat
      */
     @Test
     public void loanWithFlatCahargesAndUpfrontAccrualAccountingEnabled() {
@@ -1990,8 +1799,7 @@ public class ClientLoanIntegrationTest {
 
         // Add charges with payment mode regular
         List<HashMap> charges = new ArrayList<>();
-        Integer flatDisbursement = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanDisbursementJSON());
+        Integer flatDisbursement = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper.getLoanDisbursementJSON());
         addCharges(charges, flatDisbursement, "100", null);
         Integer flatSpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "100", false));
@@ -2005,15 +1813,14 @@ public class ClientLoanIntegrationTest {
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
         final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
 
-        final Integer loanProductID = createLoanProduct(false, ACCRUAL_UPFRONT, assetAccount, incomeAccount,
-                expenseAccount, overpaymentAccount);
+        final Integer loanProductID = createLoanProduct(false, ACCRUAL_UPFRONT, assetAccount, incomeAccount, expenseAccount,
+                overpaymentAccount);
         final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         verifyLoanRepaymentSchedule(loanSchedule);
 
         List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -2041,22 +1848,19 @@ public class ClientLoanIntegrationTest {
         loanStatusHashMap = this.loanTransactionHelper.disburseLoan("20 September 2011", loanID);
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        final JournalEntry[] assetAccountInitialEntry = {
-                new JournalEntry(Float.valueOf("605.94"), JournalEntry.TransactionType.DEBIT),
+        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(Float.valueOf("605.94"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("100.00"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("200.00"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.DEBIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011",
-                assetAccountInitialEntry);
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011", assetAccountInitialEntry);
         this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 September 2011",
                 new JournalEntry(Float.valueOf("605.94"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("100.00"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("200.00"), JournalEntry.TransactionType.CREDIT));
 
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatSpecifiedDueDate),
-                        "29 September 2011", "100"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatSpecifiedDueDate), "29 September 2011", "100"));
 
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -2080,17 +1884,15 @@ public class ClientLoanIntegrationTest {
                 new JournalEntry(Float.valueOf("3301.49"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("3301.49"), JournalEntry.TransactionType.CREDIT));
 
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatSpecifiedDueDate),
-                        "29 October 2011", "100"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatSpecifiedDueDate), "29 October 2011", "100"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
 
         secondInstallment = loanSchedule.get(2);
         validateNumberForEqual("150.00", String.valueOf(secondInstallment.get("feeChargesDue")));
         LOG.info("----------- Waive installment charge for 2nd installment ---------");
-        this.loanTransactionHelper.waiveChargesForLoan(loanID,
-                (Integer) getloanCharge(flatInstallmentFee, loanCharges).get("id"),
+        this.loanTransactionHelper.waiveChargesForLoan(loanID, (Integer) getloanCharge(flatInstallmentFee, loanCharges).get("id"),
                 LoanTransactionHelper.getWaiveChargeJSON(String.valueOf(2)));
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -2127,9 +1929,8 @@ public class ClientLoanIntegrationTest {
 
         Integer flatPenaltySpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "100", true));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(flatPenaltySpecifiedDueDate), "29 September 2011", "100"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatPenaltySpecifiedDueDate), "29 September 2011", "100"));
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         validateCharge(flatPenaltySpecifiedDueDate, loanCharges, "100", "0.00", "100.0", "0.0");
@@ -2149,9 +1950,8 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 November 2011",
                 new JournalEntry(Float.valueOf("3301.49"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("3301.49"), JournalEntry.TransactionType.CREDIT));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(flatPenaltySpecifiedDueDate), "10 January 2012", "100"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatPenaltySpecifiedDueDate), "10 January 2012", "100"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap fourthInstallment = loanSchedule.get(4);
@@ -2176,14 +1976,13 @@ public class ClientLoanIntegrationTest {
                 new JournalEntry(Float.valueOf("3139.68"), JournalEntry.TransactionType.CREDIT));
         this.journalEntryHelper.checkJournalEntryForLiabilityAccount(overpaymentAccount, "20 January 2012",
                 new JournalEntry(Float.valueOf("80.92"), JournalEntry.TransactionType.CREDIT));
-        loanStatusHashMap = (HashMap) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec,
-                loanID, "status");
+        loanStatusHashMap = (HashMap) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec, loanID, "status");
         LoanStatusChecker.verifyLoanAccountIsOverPaid(loanStatusHashMap);
     }
 
     /***
-     * Test case for checking AccuralUpfrontAccounting functionality adding charges
-     * with calculation type percentage of amount
+     * Test case for checking AccuralUpfrontAccounting functionality adding
+     * charges with calculation type percentage of amount
      */
     @Test
     public void loanWithCahargesAndUpfrontAccrualAccountingEnabled() {
@@ -2198,12 +1997,12 @@ public class ClientLoanIntegrationTest {
                 ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1"));
         addCharges(charges, percentageDisbursementCharge, "1", null);
 
-        Integer percentageSpecifiedDueDateCharge = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
+        Integer percentageSpecifiedDueDateCharge = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
         addCharges(charges, percentageSpecifiedDueDateCharge, "1", "29 September 2011");
 
-        Integer percentageInstallmentFee = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
+        Integer percentageInstallmentFee = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
         addCharges(charges, percentageInstallmentFee, "1", "29 September 2011");
 
         final Account assetAccount = this.accountHelper.createAssetAccount();
@@ -2211,15 +2010,14 @@ public class ClientLoanIntegrationTest {
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
         final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
 
-        final Integer loanProductID = createLoanProduct(false, ACCRUAL_UPFRONT, assetAccount, incomeAccount,
-                expenseAccount, overpaymentAccount);
+        final Integer loanProductID = createLoanProduct(false, ACCRUAL_UPFRONT, assetAccount, incomeAccount, expenseAccount,
+                overpaymentAccount);
         final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         verifyLoanRepaymentSchedule(loanSchedule);
 
         List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -2248,15 +2046,13 @@ public class ClientLoanIntegrationTest {
         loanStatusHashMap = this.loanTransactionHelper.disburseLoan("20 September 2011", loanID);
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        final JournalEntry[] assetAccountInitialEntry = {
-                new JournalEntry(Float.valueOf("605.94"), JournalEntry.TransactionType.DEBIT),
+        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(Float.valueOf("605.94"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("120.00"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("120.00"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("120.00"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.DEBIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011",
-                assetAccountInitialEntry);
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011", assetAccountInitialEntry);
         this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 September 2011",
                 new JournalEntry(Float.valueOf("605.94"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("120.00"), JournalEntry.TransactionType.CREDIT),
@@ -2278,17 +2074,15 @@ public class ClientLoanIntegrationTest {
                 new JournalEntry(Float.valueOf("3300.60"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("3300.60"), JournalEntry.TransactionType.CREDIT));
 
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(percentageSpecifiedDueDateCharge), "29 October 2011", "1"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(percentageSpecifiedDueDateCharge), "29 October 2011", "1"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
 
         secondInstallment = loanSchedule.get(2);
         validateNumberForEqual("149.70", String.valueOf(secondInstallment.get("feeChargesDue")));
         LOG.info("----------- Waive installment charge for 2nd installment ---------");
-        this.loanTransactionHelper.waiveChargesForLoan(loanID,
-                (Integer) getloanCharge(percentageInstallmentFee, loanCharges).get("id"),
+        this.loanTransactionHelper.waiveChargesForLoan(loanID, (Integer) getloanCharge(percentageInstallmentFee, loanCharges).get("id"),
                 LoanTransactionHelper.getWaiveChargeJSON(String.valueOf(2)));
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -2323,11 +2117,10 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForExpenseAccount(expenseAccount, "20 December 2011",
                 new JournalEntry(Float.valueOf("61.79"), JournalEntry.TransactionType.DEBIT));
 
-        Integer percentagePenaltySpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", true));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(percentagePenaltySpecifiedDueDate), "29 September 2011", "1"));
+        Integer percentagePenaltySpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", true));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(percentagePenaltySpecifiedDueDate), "29 September 2011", "1"));
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         validateCharge(percentagePenaltySpecifiedDueDate, loanCharges, "1", "0.00", "120.0", "0.0");
@@ -2347,9 +2140,8 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 November 2011",
                 new JournalEntry(Float.valueOf("3301.78"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("3301.78"), JournalEntry.TransactionType.CREDIT));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(percentagePenaltySpecifiedDueDate), "10 January 2012", "1"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(percentagePenaltySpecifiedDueDate), "10 January 2012", "1"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap fourthInstallment = loanSchedule.get(4);
@@ -2374,14 +2166,13 @@ public class ClientLoanIntegrationTest {
                 new JournalEntry(Float.valueOf("3120.58"), JournalEntry.TransactionType.CREDIT));
         this.journalEntryHelper.checkJournalEntryForLiabilityAccount(overpaymentAccount, "20 January 2012",
                 new JournalEntry(Float.valueOf("100.00"), JournalEntry.TransactionType.CREDIT));
-        loanStatusHashMap = (HashMap) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec,
-                loanID, "status");
+        loanStatusHashMap = (HashMap) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec, loanID, "status");
         LoanStatusChecker.verifyLoanAccountIsOverPaid(loanStatusHashMap);
     }
 
     /***
-     * Test case for checking AccuralUpfrontAccounting functionality adding charges
-     * with calculation type percentage of amount plus interest
+     * Test case for checking AccuralUpfrontAccounting functionality adding
+     * charges with calculation type percentage of amount plus interest
      */
     @Test
     public void loanWithCahargesOfTypeAmountPlusInterestPercentageAndUpfrontAccrualAccountingEnabled() {
@@ -2393,17 +2184,14 @@ public class ClientLoanIntegrationTest {
         // Add charges with payment mode regular
         List<HashMap> charges = new ArrayList<>();
         Integer amountPlusInterestPercentageDisbursementCharge = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanDisbursementJSON(
-                        ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1"));
+                ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1"));
         addCharges(charges, amountPlusInterestPercentageDisbursementCharge, "1", null);
 
-        Integer amountPlusInterestPercentageSpecifiedDueDateCharge = ChargesHelper.createCharges(requestSpec,
-                responseSpec, ChargesHelper.getLoanSpecifiedDueDateJSON(
-                        ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
+        Integer amountPlusInterestPercentageSpecifiedDueDateCharge = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
+                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
 
         Integer amountPlusInterestPercentageInstallmentFee = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanInstallmentJSON(
-                        ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
+                ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
         addCharges(charges, amountPlusInterestPercentageInstallmentFee, "1", "29 September 2011");
 
         final Account assetAccount = this.accountHelper.createAssetAccount();
@@ -2411,15 +2199,14 @@ public class ClientLoanIntegrationTest {
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
         final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
 
-        final Integer loanProductID = createLoanProduct(false, ACCRUAL_UPFRONT, assetAccount, incomeAccount,
-                expenseAccount, overpaymentAccount);
+        final Integer loanProductID = createLoanProduct(false, ACCRUAL_UPFRONT, assetAccount, incomeAccount, expenseAccount,
+                overpaymentAccount);
         final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         verifyLoanRepaymentSchedule(loanSchedule);
 
         List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -2447,22 +2234,19 @@ public class ClientLoanIntegrationTest {
         loanStatusHashMap = this.loanTransactionHelper.disburseLoan("20 September 2011", loanID);
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        final JournalEntry[] assetAccountInitialEntry = {
-                new JournalEntry(Float.valueOf("605.94"), JournalEntry.TransactionType.DEBIT),
+        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(Float.valueOf("605.94"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("126.06"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("126.04"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.DEBIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011",
-                assetAccountInitialEntry);
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011", assetAccountInitialEntry);
         this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 September 2011",
                 new JournalEntry(Float.valueOf("605.94"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("126.06"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("126.04"), JournalEntry.TransactionType.CREDIT));
 
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(amountPlusInterestPercentageSpecifiedDueDateCharge), "29 September 2011", "1"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
+                String.valueOf(amountPlusInterestPercentageSpecifiedDueDateCharge), "29 September 2011", "1"));
 
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -2486,9 +2270,8 @@ public class ClientLoanIntegrationTest {
                 new JournalEntry(Float.valueOf("3309.06"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("3309.06"), JournalEntry.TransactionType.CREDIT));
 
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(amountPlusInterestPercentageSpecifiedDueDateCharge), "29 October 2011", "1"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
+                String.valueOf(amountPlusInterestPercentageSpecifiedDueDateCharge), "29 October 2011", "1"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
 
@@ -2531,12 +2314,10 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForExpenseAccount(expenseAccount, "20 December 2011",
                 new JournalEntry(Float.valueOf("61.79"), JournalEntry.TransactionType.DEBIT));
 
-        Integer amountPlusInterestPercentagePenaltySpecifiedDueDate = ChargesHelper.createCharges(requestSpec,
-                responseSpec, ChargesHelper.getLoanSpecifiedDueDateJSON(
-                        ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", true));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(amountPlusInterestPercentagePenaltySpecifiedDueDate), "29 September 2011", "1"));
+        Integer amountPlusInterestPercentagePenaltySpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", true));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
+                String.valueOf(amountPlusInterestPercentagePenaltySpecifiedDueDate), "29 September 2011", "1"));
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         validateCharge(amountPlusInterestPercentagePenaltySpecifiedDueDate, loanCharges, "1", "0.0", "120.0", "0.0");
@@ -2556,9 +2337,8 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 November 2011",
                 new JournalEntry(Float.valueOf("3303"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("3303"), JournalEntry.TransactionType.CREDIT));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(amountPlusInterestPercentagePenaltySpecifiedDueDate), "10 January 2012", "1"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
+                String.valueOf(amountPlusInterestPercentagePenaltySpecifiedDueDate), "10 January 2012", "1"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap fourthInstallment = loanSchedule.get(4);
@@ -2583,14 +2363,13 @@ public class ClientLoanIntegrationTest {
                 new JournalEntry(Float.valueOf("3121.19"), JournalEntry.TransactionType.CREDIT));
         this.journalEntryHelper.checkJournalEntryForLiabilityAccount(overpaymentAccount, "20 January 2012",
                 new JournalEntry(Float.valueOf("100.42"), JournalEntry.TransactionType.CREDIT));
-        loanStatusHashMap = (HashMap) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec,
-                loanID, "status");
+        loanStatusHashMap = (HashMap) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec, loanID, "status");
         LoanStatusChecker.verifyLoanAccountIsOverPaid(loanStatusHashMap);
     }
 
     /***
-     * Test case for checking AccuralPeriodicAccounting functionality adding charges
-     * with calculation type flat
+     * Test case for checking AccuralPeriodicAccounting functionality adding
+     * charges with calculation type flat
      */
     @Test
     public void loanWithFlatChargesAndPeriodicAccrualAccountingEnabled() throws InterruptedException {
@@ -2601,8 +2380,7 @@ public class ClientLoanIntegrationTest {
 
         // Add charges with payment mode regular
         List<HashMap> charges = new ArrayList<>();
-        Integer flatDisbursement = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanDisbursementJSON());
+        Integer flatDisbursement = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper.getLoanDisbursementJSON());
         addCharges(charges, flatDisbursement, "100", null);
         Integer flatSpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "100", false));
@@ -2616,15 +2394,14 @@ public class ClientLoanIntegrationTest {
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
         final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
 
-        final Integer loanProductID = createLoanProduct(false, ACCRUAL_PERIODIC, assetAccount, incomeAccount,
-                expenseAccount, overpaymentAccount);
+        final Integer loanProductID = createLoanProduct(false, ACCRUAL_PERIODIC, assetAccount, incomeAccount, expenseAccount,
+                overpaymentAccount);
         final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         verifyLoanRepaymentSchedule(loanSchedule);
 
         List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -2653,12 +2430,10 @@ public class ClientLoanIntegrationTest {
         loanStatusHashMap = this.loanTransactionHelper.disburseLoan("20 September 2011", loanID);
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        final JournalEntry[] assetAccountInitialEntry = {
-                new JournalEntry(Float.valueOf("100.00"), JournalEntry.TransactionType.DEBIT),
+        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(Float.valueOf("100.00"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.DEBIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011",
-                assetAccountInitialEntry);
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011", assetAccountInitialEntry);
         this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 September 2011",
                 new JournalEntry(Float.valueOf("100.00"), JournalEntry.TransactionType.CREDIT));
         loanCharges.clear();
@@ -2677,28 +2452,28 @@ public class ClientLoanIntegrationTest {
                 new JournalEntry(Float.valueOf("3301.49"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("3301.49"), JournalEntry.TransactionType.CREDIT));
 
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatSpecifiedDueDate),
-                        "29 October 2011", "100"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatSpecifiedDueDate), "29 October 2011", "100"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
 
         secondInstallment = loanSchedule.get(2);
         validateNumberForEqual("150.00", String.valueOf(secondInstallment.get("feeChargesDue")));
         LOG.info("----------- Waive installment charge for 2nd installment ---------");
-        this.loanTransactionHelper.waiveChargesForLoan(loanID,
-                (Integer) getloanCharge(flatInstallmentFee, loanCharges).get("id"),
+        this.loanTransactionHelper.waiveChargesForLoan(loanID, (Integer) getloanCharge(flatInstallmentFee, loanCharges).get("id"),
                 LoanTransactionHelper.getWaiveChargeJSON(String.valueOf(2)));
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         validateCharge(flatInstallmentFee, loanCharges, "50", "100.00", "50.0", "50.0");
 
         /*
-         * this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount,
-         * "20 September 2011", new JournalEntry(Float.valueOf("50.0"),
+         * this.journalEntryHelper.checkJournalEntryForAssetAccount(
+         * assetAccount, "20 September 2011", new
+         * JournalEntry(Float.valueOf("50.0"),
          * JournalEntry.TransactionType.CREDIT));
-         * this.journalEntryHelper.checkJournalEntryForExpenseAccount (expenseAccount,
-         * "20 September 2011", new JournalEntry(Float.valueOf("50.0"),
+         * this.journalEntryHelper.checkJournalEntryForExpenseAccount
+         * (expenseAccount, "20 September 2011", new
+         * JournalEntry(Float.valueOf("50.0"),
          * JournalEntry.TransactionType.DEBIT));
          */
         final String jobName = "Add Accrual Transactions";
@@ -2735,9 +2510,8 @@ public class ClientLoanIntegrationTest {
 
         Integer flatPenaltySpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "100", true));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(flatPenaltySpecifiedDueDate), "29 September 2011", "100"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatPenaltySpecifiedDueDate), "29 September 2011", "100"));
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         validateCharge(flatPenaltySpecifiedDueDate, loanCharges, "100", "0.00", "100.0", "0.0");
@@ -2758,9 +2532,8 @@ public class ClientLoanIntegrationTest {
                 new JournalEntry(Float.valueOf("3301.49"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("3301.49"), JournalEntry.TransactionType.CREDIT));
 
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(flatPenaltySpecifiedDueDate), "10 January 2012", "100"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(flatPenaltySpecifiedDueDate), "10 January 2012", "100"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap fourthInstallment = loanSchedule.get(4);
@@ -2783,14 +2556,13 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 January 2012",
                 new JournalEntry(Float.valueOf("3139.68"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("3139.68"), JournalEntry.TransactionType.CREDIT));
-        loanStatusHashMap = (HashMap) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec,
-                loanID, "status");
+        loanStatusHashMap = (HashMap) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec, loanID, "status");
         LoanStatusChecker.verifyLoanAccountIsClosed(loanStatusHashMap);
     }
 
     /**
-     * Test case for checking AccuralPeriodicAccounting functionality adding charges
-     * with calculation type percentage of amount
+     * Test case for checking AccuralPeriodicAccounting functionality adding
+     * charges with calculation type percentage of amount
      */
     @Test
     public void loanWithChargesOfTypeAmountPercentageAndPeriodicAccrualAccountingEnabled() throws InterruptedException {
@@ -2805,12 +2577,12 @@ public class ClientLoanIntegrationTest {
                 ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1"));
         addCharges(charges, percentageDisbursementCharge, "1", null);
 
-        Integer percentageSpecifiedDueDateCharge = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
+        Integer percentageSpecifiedDueDateCharge = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
         addCharges(charges, percentageSpecifiedDueDateCharge, "1", "29 September 2011");
 
-        Integer percentageInstallmentFee = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
+        Integer percentageInstallmentFee = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", false));
         addCharges(charges, percentageInstallmentFee, "1", "29 September 2011");
 
         final Account assetAccount = this.accountHelper.createAssetAccount();
@@ -2818,15 +2590,14 @@ public class ClientLoanIntegrationTest {
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
         final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
 
-        final Integer loanProductID = createLoanProduct(false, ACCRUAL_PERIODIC, assetAccount, incomeAccount,
-                expenseAccount, overpaymentAccount);
+        final Integer loanProductID = createLoanProduct(false, ACCRUAL_PERIODIC, assetAccount, incomeAccount, expenseAccount,
+                overpaymentAccount);
         final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         verifyLoanRepaymentSchedule(loanSchedule);
 
         List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -2855,12 +2626,10 @@ public class ClientLoanIntegrationTest {
         loanStatusHashMap = this.loanTransactionHelper.disburseLoan("20 September 2011", loanID);
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        final JournalEntry[] assetAccountInitialEntry = {
-                new JournalEntry(Float.valueOf("120.00"), JournalEntry.TransactionType.DEBIT),
+        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(Float.valueOf("120.00"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.DEBIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011",
-                assetAccountInitialEntry);
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011", assetAccountInitialEntry);
         this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 September 2011",
                 new JournalEntry(Float.valueOf("120.00"), JournalEntry.TransactionType.CREDIT));
         loanCharges.clear();
@@ -2879,28 +2648,28 @@ public class ClientLoanIntegrationTest {
                 new JournalEntry(Float.valueOf("3300.60"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("3300.60"), JournalEntry.TransactionType.CREDIT));
 
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(percentageSpecifiedDueDateCharge), "29 October 2011", "1"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(percentageSpecifiedDueDateCharge), "29 October 2011", "1"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
 
         secondInstallment = loanSchedule.get(2);
         validateNumberForEqual("149.70", String.valueOf(secondInstallment.get("feeChargesDue")));
         LOG.info("----------- Waive installment charge for 2nd installment ---------");
-        this.loanTransactionHelper.waiveChargesForLoan(loanID,
-                (Integer) getloanCharge(percentageInstallmentFee, loanCharges).get("id"),
+        this.loanTransactionHelper.waiveChargesForLoan(loanID, (Integer) getloanCharge(percentageInstallmentFee, loanCharges).get("id"),
                 LoanTransactionHelper.getWaiveChargeJSON(String.valueOf(2)));
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         validateCharge(percentageInstallmentFee, loanCharges, "1", "61.19", "29.11", "29.70");
 
         /*
-         * this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount,
-         * "20 September 2011", new JournalEntry(Float.valueOf("29.7"),
+         * this.journalEntryHelper.checkJournalEntryForAssetAccount(
+         * assetAccount, "20 September 2011", new
+         * JournalEntry(Float.valueOf("29.7"),
          * JournalEntry.TransactionType.CREDIT));
-         * this.journalEntryHelper.checkJournalEntryForExpenseAccount (expenseAccount,
-         * "20 September 2011", new JournalEntry(Float.valueOf("29.7"),
+         * this.journalEntryHelper.checkJournalEntryForExpenseAccount
+         * (expenseAccount, "20 September 2011", new
+         * JournalEntry(Float.valueOf("29.7"),
          * JournalEntry.TransactionType.DEBIT));
          */
 
@@ -2936,11 +2705,10 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForExpenseAccount(expenseAccount, "20 December 2011",
                 new JournalEntry(Float.valueOf("61.79"), JournalEntry.TransactionType.DEBIT));
 
-        Integer percentagePenaltySpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", true));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(percentagePenaltySpecifiedDueDate), "29 September 2011", "1"));
+        Integer percentagePenaltySpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", true));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(percentagePenaltySpecifiedDueDate), "29 September 2011", "1"));
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         validateCharge(percentagePenaltySpecifiedDueDate, loanCharges, "1", "0.00", "120.0", "0.0");
@@ -2961,9 +2729,8 @@ public class ClientLoanIntegrationTest {
                 new JournalEntry(Float.valueOf("3301.78"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("3301.78"), JournalEntry.TransactionType.CREDIT));
 
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(percentagePenaltySpecifiedDueDate), "10 January 2012", "1"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper
+                .getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(percentagePenaltySpecifiedDueDate), "10 January 2012", "1"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap fourthInstallment = loanSchedule.get(4);
@@ -2986,18 +2753,16 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 January 2012",
                 new JournalEntry(Float.valueOf("3120.58"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("3120.58"), JournalEntry.TransactionType.CREDIT));
-        loanStatusHashMap = (HashMap) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec,
-                loanID, "status");
+        loanStatusHashMap = (HashMap) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec, loanID, "status");
         LoanStatusChecker.verifyLoanAccountIsClosed(loanStatusHashMap);
     }
 
     /***
-     * Test case for checking AccuralPeriodicAccounting functionality adding charges
-     * with calculation type percentage of amount and interest
+     * Test case for checking AccuralPeriodicAccounting functionality adding
+     * charges with calculation type percentage of amount and interest
      */
     @Test
-    public void loanWithChargesOfTypeAmountPlusInterestPercentageAndPeriodicAccrualAccountingEnabled()
-            throws InterruptedException {
+    public void loanWithChargesOfTypeAmountPlusInterestPercentageAndPeriodicAccrualAccountingEnabled() throws InterruptedException {
         this.journalEntryHelper = new JournalEntryHelper(this.requestSpec, this.responseSpec);
 
         final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
@@ -3006,18 +2771,15 @@ public class ClientLoanIntegrationTest {
         // Add charges with payment mode regular
         List<HashMap> charges = new ArrayList<>();
         Integer amountPlusInterestPercentageDisbursementCharge = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanDisbursementJSON(
-                        ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1"));
+                ChargesHelper.getLoanDisbursementJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1"));
         addCharges(charges, amountPlusInterestPercentageDisbursementCharge, "1", null);
 
-        Integer amountPlusInterestPercentageSpecifiedDueDateCharge = ChargesHelper.createCharges(requestSpec,
-                responseSpec, ChargesHelper.getLoanSpecifiedDueDateJSON(
-                        ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
+        Integer amountPlusInterestPercentageSpecifiedDueDateCharge = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
+                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
         addCharges(charges, amountPlusInterestPercentageSpecifiedDueDateCharge, "1", "29 September 2011");
 
         Integer amountPlusInterestPercentageInstallmentFee = ChargesHelper.createCharges(requestSpec, responseSpec,
-                ChargesHelper.getLoanInstallmentJSON(
-                        ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
+                ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT_AND_INTEREST, "1", false));
         addCharges(charges, amountPlusInterestPercentageInstallmentFee, "1", "29 September 2011");
 
         final Account assetAccount = this.accountHelper.createAssetAccount();
@@ -3025,15 +2787,14 @@ public class ClientLoanIntegrationTest {
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
         final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
 
-        final Integer loanProductID = createLoanProduct(false, ACCRUAL_PERIODIC, assetAccount, incomeAccount,
-                expenseAccount, overpaymentAccount);
+        final Integer loanProductID = createLoanProduct(false, ACCRUAL_PERIODIC, assetAccount, incomeAccount, expenseAccount,
+                overpaymentAccount);
         final Integer loanID = applyForLoanApplication(clientID, loanProductID, charges, null, "12,000.00");
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         verifyLoanRepaymentSchedule(loanSchedule);
 
         List<HashMap> loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
@@ -3062,12 +2823,10 @@ public class ClientLoanIntegrationTest {
         loanStatusHashMap = this.loanTransactionHelper.disburseLoan("20 September 2011", loanID);
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        final JournalEntry[] assetAccountInitialEntry = {
-                new JournalEntry(Float.valueOf("126.06"), JournalEntry.TransactionType.DEBIT),
+        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(Float.valueOf("126.06"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.DEBIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011",
-                assetAccountInitialEntry);
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 September 2011", assetAccountInitialEntry);
         this.journalEntryHelper.checkJournalEntryForIncomeAccount(incomeAccount, "20 September 2011",
                 new JournalEntry(Float.valueOf("126.06"), JournalEntry.TransactionType.CREDIT));
         loanCharges.clear();
@@ -3086,9 +2845,8 @@ public class ClientLoanIntegrationTest {
                 new JournalEntry(Float.valueOf("3309.06"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("3309.06"), JournalEntry.TransactionType.CREDIT));
 
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(amountPlusInterestPercentageSpecifiedDueDateCharge), "29 October 2011", "1"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
+                String.valueOf(amountPlusInterestPercentageSpecifiedDueDateCharge), "29 October 2011", "1"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
 
@@ -3103,11 +2861,12 @@ public class ClientLoanIntegrationTest {
         validateCharge(amountPlusInterestPercentageInstallmentFee, loanCharges, "1", "63.02", "31.51", "31.51");
 
         /*
-         * this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount,
-         * "20 September 2011", new JournalEntry( Float.valueOf("31.51"),
-         * JournalEntry.TransactionType.CREDIT));
-         * this.journalEntryHelper.checkJournalEntryForExpenseAccount (expenseAccount,
-         * "20 September 2011", new JournalEntry(Float.valueOf("31.51"),
+         * this.journalEntryHelper.checkJournalEntryForAssetAccount(
+         * assetAccount, "20 September 2011", new JournalEntry(
+         * Float.valueOf("31.51"), JournalEntry.TransactionType.CREDIT));
+         * this.journalEntryHelper.checkJournalEntryForExpenseAccount
+         * (expenseAccount, "20 September 2011", new
+         * JournalEntry(Float.valueOf("31.51"),
          * JournalEntry.TransactionType.DEBIT));
          */
 
@@ -3143,12 +2902,10 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForExpenseAccount(expenseAccount, "20 December 2011",
                 new JournalEntry(Float.valueOf("61.79"), JournalEntry.TransactionType.DEBIT));
 
-        Integer amountPlusInterestPercentagePenaltySpecifiedDueDate = ChargesHelper.createCharges(requestSpec,
-                responseSpec, ChargesHelper.getLoanSpecifiedDueDateJSON(
-                        ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", true));
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(amountPlusInterestPercentagePenaltySpecifiedDueDate), "29 September 2011", "1"));
+        Integer amountPlusInterestPercentagePenaltySpecifiedDueDate = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "1", true));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
+                String.valueOf(amountPlusInterestPercentagePenaltySpecifiedDueDate), "29 September 2011", "1"));
         loanCharges.clear();
         loanCharges = this.loanTransactionHelper.getLoanCharges(loanID);
         validateCharge(amountPlusInterestPercentagePenaltySpecifiedDueDate, loanCharges, "1", "0.0", "120.0", "0.0");
@@ -3169,9 +2926,8 @@ public class ClientLoanIntegrationTest {
                 new JournalEntry(Float.valueOf("3303"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("3303"), JournalEntry.TransactionType.CREDIT));
 
-        this.loanTransactionHelper.addChargesForLoan(loanID,
-                LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
-                        String.valueOf(amountPlusInterestPercentagePenaltySpecifiedDueDate), "10 January 2012", "1"));
+        this.loanTransactionHelper.addChargesForLoan(loanID, LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(
+                String.valueOf(amountPlusInterestPercentagePenaltySpecifiedDueDate), "10 January 2012", "1"));
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap fourthInstallment = loanSchedule.get(4);
@@ -3194,8 +2950,7 @@ public class ClientLoanIntegrationTest {
         this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, "20 January 2012",
                 new JournalEntry(Float.valueOf("3121.19"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("3121.19"), JournalEntry.TransactionType.CREDIT));
-        loanStatusHashMap = (HashMap) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec,
-                loanID, "status");
+        loanStatusHashMap = (HashMap) this.loanTransactionHelper.getLoanDetail(this.requestSpec, this.responseSpec, loanID, "status");
         LoanStatusChecker.verifyLoanAccountIsClosed(loanStatusHashMap);
     }
 
@@ -3207,8 +2962,8 @@ public class ClientLoanIntegrationTest {
         ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
         final Integer loanProductID = createLoanProduct("100", "0", LoanProductTestBuilder.DEFAULT_STRATEGY);
         final Integer loanID = applyForLoanApplication(clientID, loanProductID, null);
-        final ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        final ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec,
+                loanID);
         verifyLoanRepaymentScheduleForEqualPrincipal(loanSchedule);
 
     }
@@ -3221,8 +2976,8 @@ public class ClientLoanIntegrationTest {
         ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
         final Integer loanProductID = createLoanProduct("100", "0", LoanProductTestBuilder.DEFAULT_STRATEGY);
         final Integer loanID = applyForLoanApplication(clientID, loanProductID, "5");
-        final ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        final ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec,
+                loanID);
         verifyLoanRepaymentScheduleForEqualPrincipalWithGrace(loanSchedule);
 
     }
@@ -3248,8 +3003,8 @@ public class ClientLoanIntegrationTest {
          */
         final String savingsId = null;
         final String principal = "12,000.00";
-        final Integer loanID = applyForLoanApplicationWithPaymentStrategy(clientID, loanProductID, null, savingsId,
-                principal, LoanApplicationTestBuilder.RBI_INDIA_STRATEGY);
+        final Integer loanID = applyForLoanApplicationWithPaymentStrategy(clientID, loanProductID, null, savingsId, principal,
+                LoanApplicationTestBuilder.RBI_INDIA_STRATEGY);
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
@@ -3263,8 +3018,7 @@ public class ClientLoanIntegrationTest {
         loanStatusHashMap = this.loanTransactionHelper.disburseLoan("20 September 2011", loanID);
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap firstInstallment = loanSchedule.get(1);
         validateNumberForEqual("3200", String.valueOf(firstInstallment.get("totalOutstandingForPeriod")));
 
@@ -3297,17 +3051,18 @@ public class ClientLoanIntegrationTest {
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         /***
-         * Verify 2nd and 3rd repayments after making excess payment for installment no
-         * 2
+         * Verify 2nd and 3rd repayments after making excess payment for
+         * installment no 2
          */
         secondInstallment = loanSchedule.get(2);
         validateNumberForEqual("0.00", String.valueOf(secondInstallment.get("totalOutstandingForPeriod")));
 
         /***
-         * According to RBI Excess payment should go to principal portion of next
-         * installment, but as interest recalculation is not implemented, it wont make
-         * any difference to schedule even though if we made excess payment, so excess
-         * payments will behave the same as regular payment with the excess amount
+         * According to RBI Excess payment should go to principal portion of
+         * next installment, but as interest recalculation is not implemented,
+         * it wont make any difference to schedule even though if we made excess
+         * payment, so excess payments will behave the same as regular payment
+         * with the excess amount
          */
         thirdInstallment = loanSchedule.get(3);
         validateNumberForEqual("3200", String.valueOf(thirdInstallment.get("totalOutstandingForPeriod")));
@@ -3317,15 +3072,16 @@ public class ClientLoanIntegrationTest {
         validateNumberForEqual("100.00", String.valueOf(thirdInstallment.get("interestOutstanding")));
 
         /***
-         * Make payment with due amount of 3rd installment on 4th installment date
+         * Make payment with due amount of 3rd installment on 4th installment
+         * date
          */
         this.loanTransactionHelper.makeRepayment("20 January 2012", Float.valueOf("3200"), loanID);
         loanSchedule.clear();
         loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
 
         /***
-         * Verify overdue interests are deducted first and then remaining amount for
-         * interest portion of due installment
+         * Verify overdue interests are deducted first and then remaining amount
+         * for interest portion of due installment
          */
         thirdInstallment = loanSchedule.get(3);
         HashMap fourthInstallment = loanSchedule.get(4);
@@ -3354,27 +3110,22 @@ public class ClientLoanIntegrationTest {
             final HashMap repayment = loanSchedule.get(i);
 
             final ArrayList<Integer> dueDateAsArray = (ArrayList<Integer>) repayment.get("dueDate");
-            final LocalDate transactionDate = new LocalDate(dueDateAsArray.get(0), dueDateAsArray.get(1),
-                    dueDateAsArray.get(2));
+            final LocalDate transactionDate = new LocalDate(dueDateAsArray.get(0), dueDateAsArray.get(1), dueDateAsArray.get(2));
 
             final Float interestPortion = BigDecimal.valueOf(Double.valueOf(repayment.get("interestDue").toString()))
                     .subtract(BigDecimal.valueOf(Double.valueOf(repayment.get("interestWaived").toString())))
-                    .subtract(BigDecimal.valueOf(Double.valueOf(repayment.get("interestWrittenOff").toString())))
-                    .floatValue();
+                    .subtract(BigDecimal.valueOf(Double.valueOf(repayment.get("interestWrittenOff").toString()))).floatValue();
 
             final Float feePortion = BigDecimal.valueOf(Double.valueOf(repayment.get("feeChargesDue").toString()))
                     .subtract(BigDecimal.valueOf(Double.valueOf(repayment.get("feeChargesWaived").toString())))
-                    .subtract(BigDecimal.valueOf(Double.valueOf(repayment.get("feeChargesWrittenOff").toString())))
-                    .floatValue();
+                    .subtract(BigDecimal.valueOf(Double.valueOf(repayment.get("feeChargesWrittenOff").toString()))).floatValue();
 
-            final Float penaltyPortion = BigDecimal
-                    .valueOf(Double.valueOf(repayment.get("penaltyChargesDue").toString()))
+            final Float penaltyPortion = BigDecimal.valueOf(Double.valueOf(repayment.get("penaltyChargesDue").toString()))
                     .subtract(BigDecimal.valueOf(Double.valueOf(repayment.get("penaltyChargesWaived").toString())))
-                    .subtract(BigDecimal.valueOf(Double.valueOf(repayment.get("penaltyChargesWrittenOff").toString())))
-                    .floatValue();
+                    .subtract(BigDecimal.valueOf(Double.valueOf(repayment.get("penaltyChargesWrittenOff").toString()))).floatValue();
 
-            this.loanTransactionHelper.checkAccrualTransactionForRepayment(transactionDate, interestPortion, feePortion,
-                    penaltyPortion, loanID);
+            this.loanTransactionHelper.checkAccrualTransactionForRepayment(transactionDate, interestPortion, feePortion, penaltyPortion,
+                    loanID);
         }
     }
 
@@ -3391,21 +3142,20 @@ public class ClientLoanIntegrationTest {
 
         final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
         ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-        final Integer loanProductID = createLoanProductWithInterestRecalculation(
-                LoanProductTestBuilder.DEFAULT_STRATEGY, LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_NONE,
+        final Integer loanProductID = createLoanProductWithInterestRecalculation(LoanProductTestBuilder.DEFAULT_STRATEGY,
+                LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_NONE,
                 LoanProductTestBuilder.RECALCULATION_STRATEGY_REDUCE_EMI_AMOUN,
                 LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_SAME_AS_REPAYMENT_PERIOD, "0", null,
                 LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null, null, null);
 
-        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID,
-                LOAN_DISBURSEMENT_DATE, null, LoanApplicationTestBuilder.DEFAULT_STRATEGY, new ArrayList<HashMap>(0));
+        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, LOAN_DISBURSEMENT_DATE, null,
+                LoanApplicationTestBuilder.DEFAULT_STRATEGY, new ArrayList<HashMap>(0));
 
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         List<Map<String, Object>> expectedvalues = new ArrayList<>();
         todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
         addRepaymentValues(expectedvalues, todaysDate, -1, false, "2482.76", "46.15", "0.0", "0.0");
@@ -3500,21 +3250,20 @@ public class ClientLoanIntegrationTest {
 
         final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
         ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-        final Integer loanProductID = createLoanProductWithInterestRecalculation(
-                LoanProductTestBuilder.DEFAULT_STRATEGY, LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_NONE,
+        final Integer loanProductID = createLoanProductWithInterestRecalculation(LoanProductTestBuilder.DEFAULT_STRATEGY,
+                LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_NONE,
                 LoanProductTestBuilder.RECALCULATION_STRATEGY_REDUCE_EMI_AMOUN,
-                LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_SAME_AS_REPAYMENT_PERIOD, "0", null,
-                preCloseInterestStrategy, null, null, null);
+                LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_SAME_AS_REPAYMENT_PERIOD, "0", null, preCloseInterestStrategy, null,
+                null, null);
 
-        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID,
-                LOAN_DISBURSEMENT_DATE, null, LoanApplicationTestBuilder.DEFAULT_STRATEGY, new ArrayList<HashMap>(0));
+        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, LOAN_DISBURSEMENT_DATE, null,
+                LoanApplicationTestBuilder.DEFAULT_STRATEGY, new ArrayList<HashMap>(0));
 
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         List<Map<String, Object>> expectedvalues = new ArrayList<>();
         todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
         addRepaymentValues(expectedvalues, todaysDate, -9, true, "2482.76", "46.15", "0.0", "0.0");
@@ -3580,25 +3329,24 @@ public class ClientLoanIntegrationTest {
 
         final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
         ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-        final Integer loanProductID = createLoanProductWithInterestRecalculation(
-                LoanProductTestBuilder.DEFAULT_STRATEGY, LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_NONE,
+        final Integer loanProductID = createLoanProductWithInterestRecalculation(LoanProductTestBuilder.DEFAULT_STRATEGY,
+                LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_NONE,
                 LoanProductTestBuilder.RECALCULATION_STRATEGY_REDUCE_EMI_AMOUN,
                 LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_SAME_AS_REPAYMENT_PERIOD, "0", null,
                 LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null, null, null);
 
         List<HashMap> charges = new ArrayList<>();
-        Integer installmentCharge = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_INTEREST, "10", false));
+        Integer installmentCharge = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_INTEREST, "10", false));
         addCharges(charges, installmentCharge, "10", null);
-        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID,
-                LOAN_DISBURSEMENT_DATE, null, LoanApplicationTestBuilder.DEFAULT_STRATEGY, charges);
+        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, LOAN_DISBURSEMENT_DATE, null,
+                LoanApplicationTestBuilder.DEFAULT_STRATEGY, charges);
 
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         List<Map<String, Object>> expectedvalues = new ArrayList<>();
         todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
         addRepaymentValues(expectedvalues, todaysDate, -1, false, "2482.76", "46.15", "4.62", "0.0");
@@ -3679,23 +3427,20 @@ public class ClientLoanIntegrationTest {
         final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
         ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
         final Integer loanProductID = createLoanProductWithInterestRecalculationAndCompoundingDetails(
-                LoanProductTestBuilder.RBI_INDIA_STRATEGY,
-                LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_INTEREST,
+                LoanProductTestBuilder.RBI_INDIA_STRATEGY, LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_INTEREST,
                 LoanProductTestBuilder.RECALCULATION_STRATEGY_REDUCE_NUMBER_OF_INSTALLMENTS,
                 LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_DAILY, "1", LOAN_DISBURSEMENT_DATE,
                 LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_WEEKLY, "1", LOAN_DISBURSEMENT_DATE,
-                LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null, null, dayOfWeek, null,
-                dayOfWeek);
+                LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null, null, dayOfWeek, null, dayOfWeek);
 
-        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID,
-                LOAN_DISBURSEMENT_DATE, LoanApplicationTestBuilder.RBI_INDIA_STRATEGY, new ArrayList<HashMap>(0));
+        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, LOAN_DISBURSEMENT_DATE,
+                LoanApplicationTestBuilder.RBI_INDIA_STRATEGY, new ArrayList<HashMap>(0));
 
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         List<Map<String, Object>> expectedvalues = new ArrayList<>();
         todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
         addRepaymentValues(expectedvalues, todaysDate, -1, false, "2482.76", "46.15", "0.0", "0.0");
@@ -3724,8 +3469,7 @@ public class ClientLoanIntegrationTest {
 
         verifyLoanRepaymentSchedule(loanSchedule, expectedvalues);
 
-        loanSchedule = this.loanTransactionHelper.getLoanFutureRepaymentSchedule(this.requestSpec, this.responseSpec,
-                loanID);
+        loanSchedule = this.loanTransactionHelper.getLoanFutureRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         expectedvalues = new ArrayList<>();
         todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
         addRepaymentValues(expectedvalues, todaysDate, 0, false, "4965.3", "92.52", "0.0", "0.0");
@@ -3806,8 +3550,8 @@ public class ClientLoanIntegrationTest {
         List<HashMap> charges = new ArrayList<>(2);
         Integer flat = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "100", false));
-        Integer principalPercentage = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "2", false));
+        Integer principalPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "2", false));
 
         addCharges(charges, flat, "100", LOAN_FLAT_CHARGE_DATE);
         addCharges(charges, principalPercentage, "2", LOAN_INTEREST_CHARGE_DATE);
@@ -3815,23 +3559,21 @@ public class ClientLoanIntegrationTest {
         final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
         ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
         final Integer loanProductID = createLoanProductWithInterestRecalculationAndCompoundingDetails(
-                LoanProductTestBuilder.DEFAULT_STRATEGY,
-                LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_INTEREST_AND_FEE,
+                LoanProductTestBuilder.DEFAULT_STRATEGY, LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_INTEREST_AND_FEE,
                 LoanProductTestBuilder.RECALCULATION_STRATEGY_RESCHEDULE_NEXT_REPAYMENTS,
                 LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_WEEKLY, "1", REST_START_DATE,
                 LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_WEEKLY, "1", LOAN_DISBURSEMENT_DATE,
-                LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null, compoundingDayOfMonth,
-                compoundingDayOfWeek, restDayOfMonth, restDayOfWeek);
+                LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null, compoundingDayOfMonth, compoundingDayOfWeek,
+                restDayOfMonth, restDayOfWeek);
 
-        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID,
-                LOAN_DISBURSEMENT_DATE, LOAN_DISBURSEMENT_DATE, LoanApplicationTestBuilder.DEFAULT_STRATEGY, charges);
+        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, LOAN_DISBURSEMENT_DATE,
+                LOAN_DISBURSEMENT_DATE, LoanApplicationTestBuilder.DEFAULT_STRATEGY, charges);
 
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         List<Map<String, Object>> expectedvalues = new ArrayList<>();
         todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
         addRepaymentValues(expectedvalues, todaysDate, -1, false, "2482.76", "46.15", "100.0", "0.0");
@@ -3941,8 +3683,8 @@ public class ClientLoanIntegrationTest {
         List<HashMap> charges = new ArrayList<>(2);
         Integer flat = ChargesHelper.createCharges(requestSpec, responseSpec,
                 ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "100", false));
-        Integer principalPercentage = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
-                .getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "2", false));
+        Integer principalPercentage = ChargesHelper.createCharges(requestSpec, responseSpec,
+                ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_PERCENTAGE_AMOUNT, "2", false));
 
         addCharges(charges, flat, "100", LOAN_FLAT_CHARGE_DATE);
         addCharges(charges, principalPercentage, "2", LOAN_INTEREST_CHARGE_DATE);
@@ -3950,22 +3692,20 @@ public class ClientLoanIntegrationTest {
         final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
         ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
         final Integer loanProductID = createLoanProductWithInterestRecalculationAndCompoundingDetails(
-                LoanProductTestBuilder.DEFAULT_STRATEGY,
-                LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_INTEREST_AND_FEE,
+                LoanProductTestBuilder.DEFAULT_STRATEGY, LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_INTEREST_AND_FEE,
                 LoanProductTestBuilder.RECALCULATION_STRATEGY_RESCHEDULE_NEXT_REPAYMENTS,
                 LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_WEEKLY, "1", REST_START_DATE,
-                LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_SAME_AS_REPAYMENT_PERIOD, null, null,
-                preCloseInterestStrategy, null, null, null, restDateOfMonth, restDateOfWeek);
+                LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_SAME_AS_REPAYMENT_PERIOD, null, null, preCloseInterestStrategy, null,
+                null, null, restDateOfMonth, restDateOfWeek);
 
-        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID,
-                LOAN_DISBURSEMENT_DATE, REST_START_DATE, LoanApplicationTestBuilder.DEFAULT_STRATEGY, charges);
+        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, LOAN_DISBURSEMENT_DATE,
+                REST_START_DATE, LoanApplicationTestBuilder.DEFAULT_STRATEGY, charges);
 
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         List<Map<String, Object>> expectedvalues = new ArrayList<>();
         todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
         addRepaymentValues(expectedvalues, todaysDate, -9, true, "2482.76", "46.15", "100.0", "0.0");
@@ -4042,25 +3782,22 @@ public class ClientLoanIntegrationTest {
         ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
         final String recalculationCompoundingFrequencyInterval = null;
         final String recalculationCompoundingFrequencyDate = null;
-        final Integer loanProductID = createLoanProductWithInterestRecalculation(
-                LoanProductTestBuilder.DEFAULT_STRATEGY,
+        final Integer loanProductID = createLoanProductWithInterestRecalculation(LoanProductTestBuilder.DEFAULT_STRATEGY,
                 LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_INTEREST_AND_FEE,
                 LoanProductTestBuilder.RECALCULATION_STRATEGY_RESCHEDULE_NEXT_REPAYMENTS,
                 LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_DAILY, "1", REST_START_DATE,
-                LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_SAME_AS_REPAYMENT_PERIOD,
-                recalculationCompoundingFrequencyInterval, recalculationCompoundingFrequencyDate,
-                LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null,
+                LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_SAME_AS_REPAYMENT_PERIOD, recalculationCompoundingFrequencyInterval,
+                recalculationCompoundingFrequencyDate, LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null,
                 overdueFeeChargeId.toString(), false, null, null, null, null);
 
-        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID,
-                LOAN_DISBURSEMENT_DATE, REST_START_DATE, LoanApplicationTestBuilder.DEFAULT_STRATEGY, null);
+        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, LOAN_DISBURSEMENT_DATE,
+                REST_START_DATE, LoanApplicationTestBuilder.DEFAULT_STRATEGY, null);
 
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         List<Map<String, Object>> expectedvalues = new ArrayList<>();
         todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
         addRepaymentValues(expectedvalues, todaysDate, -2, false, "2482.76", "46.15", "0.0", "0.0");
@@ -4149,31 +3886,30 @@ public class ClientLoanIntegrationTest {
         final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
 
         Calendar todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
-        LOG.info("Disbursal Date Calendar {}" , todaysDate.getTime());
+        LOG.info("Disbursal Date Calendar {}", todaysDate.getTime());
         todaysDate.add(Calendar.DAY_OF_MONTH, -14);
         final String LOAN_DISBURSEMENT_DATE = dateFormat.format(todaysDate.getTime());
 
         final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
         ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
         Account[] accounts = { assetAccount, incomeAccount, expenseAccount, overpaymentAccount };
-        final Integer loanProductID = createLoanProductWithInterestRecalculation(
-                LoanProductTestBuilder.DEFAULT_STRATEGY, LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_NONE,
+        final Integer loanProductID = createLoanProductWithInterestRecalculation(LoanProductTestBuilder.DEFAULT_STRATEGY,
+                LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_NONE,
                 LoanProductTestBuilder.RECALCULATION_STRATEGY_REDUCE_EMI_AMOUN,
                 LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_SAME_AS_REPAYMENT_PERIOD, "0", null,
                 LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, accounts, null, null);
 
-        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID,
-                LOAN_DISBURSEMENT_DATE, null, LoanApplicationTestBuilder.DEFAULT_STRATEGY, new ArrayList<HashMap>(0));
+        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, LOAN_DISBURSEMENT_DATE, null,
+                LoanApplicationTestBuilder.DEFAULT_STRATEGY, new ArrayList<HashMap>(0));
 
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         List<Map<String, Object>> expectedvalues = new ArrayList<>();
         todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
-        LOG.info("Date during repayment schedule {}" , todaysDate.getTime());
+        LOG.info("Date during repayment schedule {}", todaysDate.getTime());
         addRepaymentValues(expectedvalues, todaysDate, -1, false, "2482.76", "46.15", "0.0", "0.0");
         addRepaymentValues(expectedvalues, todaysDate, 1, false, "2494.22", "34.69", "0.0", "0.0");
         addRepaymentValues(expectedvalues, todaysDate, 1, false, "2505.73", "23.18", "0.0", "0.0");
@@ -4199,19 +3935,15 @@ public class ClientLoanIntegrationTest {
 
         verifyLoanRepaymentSchedule(loanSchedule, expectedvalues);
 
-        final JournalEntry[] assetAccountInitialEntry = {
-                new JournalEntry(10000.0f, JournalEntry.TransactionType.CREDIT),
+        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(10000.0f, JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(10000.0f, JournalEntry.TransactionType.DEBIT), };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, LOAN_DISBURSEMENT_DATE,
-                assetAccountInitialEntry);
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, LOAN_DISBURSEMENT_DATE, assetAccountInitialEntry);
         todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
         String runOndate = dateFormat.format(todaysDate.getTime());
-        LOG.info("runOndate : {}" , runOndate);
+        LOG.info("runOndate : {}", runOndate);
         this.periodicAccrualAccountingHelper.runPeriodicAccrualAccounting(runOndate);
-        this.loanTransactionHelper.checkAccrualTransactionForRepayment(Utils.getLocalDateOfTenant().minusDays(7),
-                46.15f, 0f, 0f, loanID);
-        this.loanTransactionHelper.checkAccrualTransactionForRepayment(Utils.getLocalDateOfTenant(), 46.15f, 0f, 0f,
-                loanID);
+        this.loanTransactionHelper.checkAccrualTransactionForRepayment(Utils.getLocalDateOfTenant().minusDays(7), 46.15f, 0f, 0f, loanID);
+        this.loanTransactionHelper.checkAccrualTransactionForRepayment(Utils.getLocalDateOfTenant(), 46.15f, 0f, 0f, loanID);
 
         todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
         todaysDate.add(Calendar.DAY_OF_MONTH, -7);
@@ -4229,10 +3961,8 @@ public class ClientLoanIntegrationTest {
         verifyLoanRepaymentSchedule(loanSchedule, expectedvalues);
 
         this.periodicAccrualAccountingHelper.runPeriodicAccrualAccounting(runOndate);
-        this.loanTransactionHelper.checkAccrualTransactionForRepayment(Utils.getLocalDateOfTenant().minusDays(7),
-                46.15f, 0f, 0f, loanID);
-        this.loanTransactionHelper.checkAccrualTransactionForRepayment(Utils.getLocalDateOfTenant(), 34.69f, 0f, 0f,
-                loanID);
+        this.loanTransactionHelper.checkAccrualTransactionForRepayment(Utils.getLocalDateOfTenant().minusDays(7), 46.15f, 0f, 0f, loanID);
+        this.loanTransactionHelper.checkAccrualTransactionForRepayment(Utils.getLocalDateOfTenant(), 34.69f, 0f, 0f, loanID);
 
         HashMap prepayDetail = this.loanTransactionHelper.getPrepayAmount(this.requestSpec, this.responseSpec, loanID);
         String prepayAmount = String.valueOf(prepayDetail.get("amount"));
@@ -4242,10 +3972,8 @@ public class ClientLoanIntegrationTest {
         loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanAccountIsClosed(loanStatusHashMap);
 
-        this.loanTransactionHelper.checkAccrualTransactionForRepayment(Utils.getLocalDateOfTenant().minusDays(7),
-                46.15f, 0f, 0f, loanID);
-        this.loanTransactionHelper.checkAccrualTransactionForRepayment(Utils.getLocalDateOfTenant(), 34.69f, 0f, 0f,
-                loanID);
+        this.loanTransactionHelper.checkAccrualTransactionForRepayment(Utils.getLocalDateOfTenant().minusDays(7), 46.15f, 0f, 0f, loanID);
+        this.loanTransactionHelper.checkAccrualTransactionForRepayment(Utils.getLocalDateOfTenant(), 34.69f, 0f, 0f, loanID);
 
     }
 
@@ -4263,25 +3991,21 @@ public class ClientLoanIntegrationTest {
         final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
         ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
         final Integer loanProductID = createLoanProductWithInterestRecalculationAndCompoundingDetails(
-                LoanProductTestBuilder.RBI_INDIA_STRATEGY,
-                LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_INTEREST,
+                LoanProductTestBuilder.RBI_INDIA_STRATEGY, LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_INTEREST,
                 LoanProductTestBuilder.RECALCULATION_STRATEGY_RESCHEDULE_NEXT_REPAYMENTS,
                 LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_DAILY, "1", LOAN_DISBURSEMENT_DATE,
-                LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_SAME_AS_REPAYMENT_PERIOD, "1",
-                LOAN_DISBURSEMENT_DATE, LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null,
-                getDayOfMonth(todaysDate), getDayOfWeek(todaysDate), getDayOfMonth(todaysDate),
-                getDayOfWeek(todaysDate));
+                LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_SAME_AS_REPAYMENT_PERIOD, "1", LOAN_DISBURSEMENT_DATE,
+                LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null, getDayOfMonth(todaysDate),
+                getDayOfWeek(todaysDate), getDayOfMonth(todaysDate), getDayOfWeek(todaysDate));
 
-        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID,
-                LOAN_DISBURSEMENT_DATE, LOAN_DISBURSEMENT_DATE, LoanApplicationTestBuilder.RBI_INDIA_STRATEGY,
-                new ArrayList<HashMap>(0));
+        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, LOAN_DISBURSEMENT_DATE,
+                LOAN_DISBURSEMENT_DATE, LoanApplicationTestBuilder.RBI_INDIA_STRATEGY, new ArrayList<HashMap>(0));
 
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         List<Map<String, Object>> expectedvalues = new ArrayList<>();
         todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
         addRepaymentValues(expectedvalues, todaysDate, -1, false, "2482.76", "46.15", "0.0", "0.0");
@@ -4341,7 +4065,7 @@ public class ClientLoanIntegrationTest {
         dateFormat.setTimeZone(Utils.getTimeZoneOfTenant());
 
         Calendar todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
-        LOG.info("----timeeeeeeeeeeeeee------> {}" , dateFormat.format(todaysDate.getTime()));
+        LOG.info("----timeeeeeeeeeeeeee------> {}", dateFormat.format(todaysDate.getTime()));
         todaysDate.add(Calendar.DAY_OF_MONTH, -14);
         final String LOAN_DISBURSEMENT_DATE = dateFormat.format(todaysDate.getTime());
 
@@ -4349,26 +4073,22 @@ public class ClientLoanIntegrationTest {
         ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
         final String recalculationCompoundingFrequencyInterval = null;
         final String recalculationCompoundingFrequencyDate = null;
-        final Integer loanProductID = createLoanProductWithInterestRecalculation(
-                LoanProductTestBuilder.RBI_INDIA_STRATEGY,
+        final Integer loanProductID = createLoanProductWithInterestRecalculation(LoanProductTestBuilder.RBI_INDIA_STRATEGY,
                 LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_INTEREST,
                 LoanProductTestBuilder.RECALCULATION_STRATEGY_RESCHEDULE_NEXT_REPAYMENTS,
                 LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_DAILY, "1", LOAN_DISBURSEMENT_DATE,
-                LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_SAME_AS_REPAYMENT_PERIOD,
-                recalculationCompoundingFrequencyInterval, recalculationCompoundingFrequencyDate,
-                LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null, null, true, null, null,
-                getDayOfMonth(todaysDate), getDayOfWeek(todaysDate));
+                LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_SAME_AS_REPAYMENT_PERIOD, recalculationCompoundingFrequencyInterval,
+                recalculationCompoundingFrequencyDate, LoanProductTestBuilder.INTEREST_APPLICABLE_STRATEGY_ON_PRE_CLOSE_DATE, null, null,
+                true, null, null, getDayOfMonth(todaysDate), getDayOfWeek(todaysDate));
 
-        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID,
-                LOAN_DISBURSEMENT_DATE, LOAN_DISBURSEMENT_DATE, LoanApplicationTestBuilder.RBI_INDIA_STRATEGY,
-                new ArrayList<HashMap>(0));
+        final Integer loanID = applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, LOAN_DISBURSEMENT_DATE,
+                LOAN_DISBURSEMENT_DATE, LoanApplicationTestBuilder.RBI_INDIA_STRATEGY, new ArrayList<HashMap>(0));
 
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         List<Map<String, Object>> expectedvalues = new ArrayList<>();
         todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
         addRepaymentValues(expectedvalues, todaysDate, -1, false, "2482.76", "46.15", "0.0", "0.0");
@@ -4443,22 +4163,20 @@ public class ClientLoanIntegrationTest {
 
         final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
         ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
-        final Integer loanProductID = createLoanProductWithInterestRecalculation(
-                LoanProductTestBuilder.DEFAULT_STRATEGY, LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_NONE,
+        final Integer loanProductID = createLoanProductWithInterestRecalculation(LoanProductTestBuilder.DEFAULT_STRATEGY,
+                LoanProductTestBuilder.RECALCULATION_COMPOUNDING_METHOD_NONE,
                 LoanProductTestBuilder.RECALCULATION_STRATEGY_REDUCE_EMI_AMOUN,
-                LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_SAME_AS_REPAYMENT_PERIOD, "0", null,
-                preCloseStrategy, null, null, null);
+                LoanProductTestBuilder.RECALCULATION_FREQUENCY_TYPE_SAME_AS_REPAYMENT_PERIOD, "0", null, preCloseStrategy, null, null,
+                null);
 
         final Integer loanID = applyForLoanApplicationForInterestRecalculationWithMoratorium(clientID, loanProductID,
-                LOAN_DISBURSEMENT_DATE, LoanApplicationTestBuilder.DEFAULT_STRATEGY, new ArrayList<HashMap>(0), "1",
-                null);
+                LOAN_DISBURSEMENT_DATE, LoanApplicationTestBuilder.DEFAULT_STRATEGY, new ArrayList<HashMap>(0), "1", null);
 
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         List<Map<String, Object>> expectedvalues = new ArrayList<>();
         todaysDate = Calendar.getInstance(Utils.getTimeZoneOfTenant());
         todaysDate.add(Calendar.DAY_OF_MONTH, -1);
@@ -4498,16 +4216,15 @@ public class ClientLoanIntegrationTest {
         LoanStatusChecker.verifyLoanAccountIsClosed(loanStatusHashMap);
     }
 
-    private void addRepaymentValues(List<Map<String, Object>> expectedvalues, Calendar todaysDate, int addPeriod,
-            boolean isAddDays, String principalDue, String interestDue, String feeChargesDue,
-            String penaltyChargesDue) {
+    private void addRepaymentValues(List<Map<String, Object>> expectedvalues, Calendar todaysDate, int addPeriod, boolean isAddDays,
+            String principalDue, String interestDue, String feeChargesDue, String penaltyChargesDue) {
         Map<String, Object> values = new HashMap<>(3);
         if (isAddDays) {
             values.put("dueDate", getDateAsArray(todaysDate, addPeriod));
         } else {
             values.put("dueDate", getDateAsArray(todaysDate, addPeriod * 7));
         }
-        LOG.info("Updated date {}" , values.get("dueDate"));
+        LOG.info("Updated date {}", values.get("dueDate"));
         values.put("principalDue", principalDue);
         values.put("interestDue", interestDue);
         values.put("feeChargesDue", feeChargesDue);
@@ -4521,16 +4238,15 @@ public class ClientLoanIntegrationTest {
 
     private List getDateAsArray(Calendar todaysDate, int addvalue, int type) {
         todaysDate.add(type, addvalue);
-        return new ArrayList<>(Arrays.asList(todaysDate.get(Calendar.YEAR), todaysDate.get(Calendar.MONTH) + 1,
-                todaysDate.get(Calendar.DAY_OF_MONTH)));
+        return new ArrayList<>(
+                Arrays.asList(todaysDate.get(Calendar.YEAR), todaysDate.get(Calendar.MONTH) + 1, todaysDate.get(Calendar.DAY_OF_MONTH)));
     }
 
     private Integer createLoanProductWithInterestRecalculation(final String repaymentStrategy,
             final String interestRecalculationCompoundingMethod, final String rescheduleStrategyMethod,
             final String recalculationRestFrequencyType, final String recalculationRestFrequencyInterval,
-            final String recalculationRestFrequencyDate, final String preCloseInterestCalculationStrategy,
-            final Account[] accounts, final Integer recalculationRestFrequencyOnDayType,
-            final Integer recalculationRestFrequencyDayOfWeekType) {
+            final String recalculationRestFrequencyDate, final String preCloseInterestCalculationStrategy, final Account[] accounts,
+            final Integer recalculationRestFrequencyOnDayType, final Integer recalculationRestFrequencyDayOfWeekType) {
         final String recalculationCompoundingFrequencyType = null;
         final String recalculationCompoundingFrequencyInterval = null;
         final String recalculationCompoundingFrequencyDate = null;
@@ -4538,11 +4254,10 @@ public class ClientLoanIntegrationTest {
         final Integer recalculationCompoundingFrequencyDayOfWeekType = null;
         return createLoanProductWithInterestRecalculation(repaymentStrategy, interestRecalculationCompoundingMethod,
                 rescheduleStrategyMethod, recalculationRestFrequencyType, recalculationRestFrequencyInterval,
-                recalculationRestFrequencyDate, recalculationCompoundingFrequencyType,
-                recalculationCompoundingFrequencyInterval, recalculationCompoundingFrequencyDate,
-                preCloseInterestCalculationStrategy, accounts, null, false, recalculationCompoundingFrequencyOnDayType,
-                recalculationCompoundingFrequencyDayOfWeekType, recalculationRestFrequencyOnDayType,
-                recalculationRestFrequencyDayOfWeekType);
+                recalculationRestFrequencyDate, recalculationCompoundingFrequencyType, recalculationCompoundingFrequencyInterval,
+                recalculationCompoundingFrequencyDate, preCloseInterestCalculationStrategy, accounts, null, false,
+                recalculationCompoundingFrequencyOnDayType, recalculationCompoundingFrequencyDayOfWeekType,
+                recalculationRestFrequencyOnDayType, recalculationRestFrequencyDayOfWeekType);
     }
 
     private Integer createLoanProductWithInterestRecalculationAndCompoundingDetails(final String repaymentStrategy,
@@ -4551,16 +4266,14 @@ public class ClientLoanIntegrationTest {
             final String recalculationRestFrequencyDate, final String recalculationCompoundingFrequencyType,
             final String recalculationCompoundingFrequencyInterval, final String recalculationCompoundingFrequencyDate,
             final String preCloseInterestCalculationStrategy, final Account[] accounts,
-            final Integer recalculationCompoundingFrequencyOnDayType,
-            final Integer recalculationCompoundingFrequencyDayOfWeekType,
+            final Integer recalculationCompoundingFrequencyOnDayType, final Integer recalculationCompoundingFrequencyDayOfWeekType,
             final Integer recalculationRestFrequencyOnDayType, final Integer recalculationRestFrequencyDayOfWeekType) {
         return createLoanProductWithInterestRecalculation(repaymentStrategy, interestRecalculationCompoundingMethod,
                 rescheduleStrategyMethod, recalculationRestFrequencyType, recalculationRestFrequencyInterval,
-                recalculationRestFrequencyDate, recalculationCompoundingFrequencyType,
-                recalculationCompoundingFrequencyInterval, recalculationCompoundingFrequencyDate,
-                preCloseInterestCalculationStrategy, accounts, null, false, recalculationCompoundingFrequencyOnDayType,
-                recalculationCompoundingFrequencyDayOfWeekType, recalculationRestFrequencyOnDayType,
-                recalculationRestFrequencyDayOfWeekType);
+                recalculationRestFrequencyDate, recalculationCompoundingFrequencyType, recalculationCompoundingFrequencyInterval,
+                recalculationCompoundingFrequencyDate, preCloseInterestCalculationStrategy, accounts, null, false,
+                recalculationCompoundingFrequencyOnDayType, recalculationCompoundingFrequencyDayOfWeekType,
+                recalculationRestFrequencyOnDayType, recalculationRestFrequencyDayOfWeekType);
     }
 
     private Integer createLoanProductWithInterestRecalculation(final String repaymentStrategy,
@@ -4570,19 +4283,18 @@ public class ClientLoanIntegrationTest {
             final String recalculationCompoundingFrequencyInterval, final String recalculationCompoundingFrequencyDate,
             final String preCloseInterestCalculationStrategy, final Account[] accounts, final String chargeId,
             boolean isArrearsBasedOnOriginalSchedule, final Integer recalculationCompoundingFrequencyOnDayType,
-            final Integer recalculationCompoundingFrequencyDayOfWeekType,
-            final Integer recalculationRestFrequencyOnDayType, final Integer recalculationRestFrequencyDayOfWeekType) {
+            final Integer recalculationCompoundingFrequencyDayOfWeekType, final Integer recalculationRestFrequencyOnDayType,
+            final Integer recalculationRestFrequencyDayOfWeekType) {
         LOG.info("------------------------------CREATING NEW LOAN PRODUCT ---------------------------------------");
-        LoanProductTestBuilder builder = new LoanProductTestBuilder().withPrincipal("10000000.00")
-                .withNumberOfRepayments("24").withRepaymentAfterEvery("1").withRepaymentTypeAsWeek()
-                .withinterestRatePerPeriod("2").withInterestRateFrequencyTypeAsMonths()
-                .withRepaymentStrategy(repaymentStrategy).withAmortizationTypeAsEqualPrincipalPayment()
-                .withInterestCalculationPeriodTypeAsRepaymentPeriod(true).withInterestTypeAsDecliningBalance()
+        LoanProductTestBuilder builder = new LoanProductTestBuilder().withPrincipal("10000000.00").withNumberOfRepayments("24")
+                .withRepaymentAfterEvery("1").withRepaymentTypeAsWeek().withinterestRatePerPeriod("2")
+                .withInterestRateFrequencyTypeAsMonths().withRepaymentStrategy(repaymentStrategy)
+                .withAmortizationTypeAsEqualPrincipalPayment().withInterestCalculationPeriodTypeAsRepaymentPeriod(true)
+                .withInterestTypeAsDecliningBalance()
                 .withInterestRecalculationDetails(interestRecalculationCompoundingMethod, rescheduleStrategyMethod,
                         preCloseInterestCalculationStrategy)
-                .withInterestRecalculationRestFrequencyDetails(recalculationRestFrequencyType,
-                        recalculationRestFrequencyInterval, recalculationRestFrequencyOnDayType,
-                        recalculationRestFrequencyDayOfWeekType)
+                .withInterestRecalculationRestFrequencyDetails(recalculationRestFrequencyType, recalculationRestFrequencyInterval,
+                        recalculationRestFrequencyOnDayType, recalculationRestFrequencyDayOfWeekType)
                 .withInterestRecalculationCompoundingFrequencyDetails(recalculationCompoundingFrequencyType,
                         recalculationCompoundingFrequencyInterval, recalculationCompoundingFrequencyOnDayType,
                         recalculationCompoundingFrequencyDayOfWeekType);
@@ -4600,27 +4312,26 @@ public class ClientLoanIntegrationTest {
 
     private Integer applyForLoanApplicationForInterestRecalculation(final Integer clientID, final Integer loanProductID,
             final String disbursementDate, final String repaymentStrategy, final List<HashMap> charges) {
-        return applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, disbursementDate,
-                repaymentStrategy, charges, null, null);
+        return applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, disbursementDate, repaymentStrategy, charges, null,
+                null);
     }
 
-    private Integer applyForLoanApplicationForInterestRecalculationWithMoratorium(final Integer clientID,
-            final Integer loanProductID, final String disbursementDate, final String repaymentStrategy,
-            final List<HashMap> charges, final String graceOnInterestPayment, final String graceOnPrincipalPayment) {
-        return applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, disbursementDate,
-                repaymentStrategy, charges, graceOnInterestPayment, graceOnPrincipalPayment);
+    private Integer applyForLoanApplicationForInterestRecalculationWithMoratorium(final Integer clientID, final Integer loanProductID,
+            final String disbursementDate, final String repaymentStrategy, final List<HashMap> charges, final String graceOnInterestPayment,
+            final String graceOnPrincipalPayment) {
+        return applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, disbursementDate, repaymentStrategy, charges,
+                graceOnInterestPayment, graceOnPrincipalPayment);
     }
 
     private Integer applyForLoanApplicationForInterestRecalculation(final Integer clientID, final Integer loanProductID,
-            final String disbursementDate, final String compoundingStartDate, final String repaymentStrategy,
-            final List<HashMap> charges) {
-        return applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, disbursementDate,
-                repaymentStrategy, charges, null, null);
+            final String disbursementDate, final String compoundingStartDate, final String repaymentStrategy, final List<HashMap> charges) {
+        return applyForLoanApplicationForInterestRecalculation(clientID, loanProductID, disbursementDate, repaymentStrategy, charges, null,
+                null);
     }
 
     private Integer applyForLoanApplicationForInterestRecalculation(final Integer clientID, final Integer loanProductID,
-            final String disbursementDate, final String repaymentStrategy, final List<HashMap> charges,
-            final String graceOnInterestPayment, final String graceOnPrincipalPayment) {
+            final String disbursementDate, final String repaymentStrategy, final List<HashMap> charges, final String graceOnInterestPayment,
+            final String graceOnPrincipalPayment) {
         LOG.info("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
         final String loanApplicationJSON = new LoanApplicationTestBuilder() //
                 .withPrincipal("10000.00") //
@@ -4643,32 +4354,24 @@ public class ClientLoanIntegrationTest {
         return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
     }
 
-    private void verifyLoanRepaymentSchedule(final ArrayList<HashMap> loanSchedule,
-            List<Map<String, Object>> expectedvalues) {
+    private void verifyLoanRepaymentSchedule(final ArrayList<HashMap> loanSchedule, List<Map<String, Object>> expectedvalues) {
         int index = 1;
         verifyLoanRepaymentSchedule(loanSchedule, expectedvalues, index);
 
     }
 
-    private void verifyLoanRepaymentSchedule(final ArrayList<HashMap> loanSchedule,
-            List<Map<String, Object>> expectedvalues, int index) {
-        LOG.info(
-                "--------------------VERIFYING THE PRINCIPAL DUES,INTEREST DUE AND DUE DATE--------------------------");
+    private void verifyLoanRepaymentSchedule(final ArrayList<HashMap> loanSchedule, List<Map<String, Object>> expectedvalues, int index) {
+        LOG.info("--------------------VERIFYING THE PRINCIPAL DUES,INTEREST DUE AND DUE DATE--------------------------");
         for (Map<String, Object> values : expectedvalues) {
-            assertEquals(values.get("dueDate"), loanSchedule.get(index).get("dueDate"),
-                    "Checking for Due Date for  installment " + index);
-            validateNumberForEqualWithMsg("Checking for Principal Due for installment " + index,
-                    String.valueOf(values.get("principalDue")),
+            assertEquals(values.get("dueDate"), loanSchedule.get(index).get("dueDate"), "Checking for Due Date for  installment " + index);
+            validateNumberForEqualWithMsg("Checking for Principal Due for installment " + index, String.valueOf(values.get("principalDue")),
                     String.valueOf(loanSchedule.get(index).get("principalDue")));
-            validateNumberForEqualWithMsg("Checking for Interest Due for installment " + index,
-                    String.valueOf(values.get("interestDue")),
+            validateNumberForEqualWithMsg("Checking for Interest Due for installment " + index, String.valueOf(values.get("interestDue")),
                     String.valueOf(loanSchedule.get(index).get("interestDue")));
             validateNumberForEqualWithMsg("Checking for Fee charge Due for installment " + index,
-                    String.valueOf(values.get("feeChargesDue")),
-                    String.valueOf(loanSchedule.get(index).get("feeChargesDue")));
+                    String.valueOf(values.get("feeChargesDue")), String.valueOf(loanSchedule.get(index).get("feeChargesDue")));
             validateNumberForEqualWithMsg("Checking for Penalty charge Due for installment " + index,
-                    String.valueOf(values.get("penaltyChargesDue")),
-                    String.valueOf(loanSchedule.get(index).get("penaltyChargesDue")));
+                    String.valueOf(values.get("penaltyChargesDue")), String.valueOf(loanSchedule.get(index).get("penaltyChargesDue")));
             index++;
         }
     }
@@ -4699,8 +4402,8 @@ public class ClientLoanIntegrationTest {
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
         final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
 
-        final Integer loanProductID = createLoanProduct("0", "0", LoanProductTestBuilder.DEFAULT_STRATEGY, CASH_BASED,
-                assetAccount, incomeAccount, expenseAccount, overpaymentAccount);
+        final Integer loanProductID = createLoanProduct("0", "0", LoanProductTestBuilder.DEFAULT_STRATEGY, CASH_BASED, assetAccount,
+                incomeAccount, expenseAccount, overpaymentAccount);
         Assertions.assertNotNull(loanProductID);
 
         /***
@@ -4716,8 +4419,8 @@ public class ClientLoanIntegrationTest {
                 ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "50", false));
         addCharges(charges, flatInstallmentFee, "50", null);
 
-        final Integer loanID = applyForLoanApplicationWithPaymentStrategyAndPastMonth(clientID, loanProductID, charges,
-                savingsId, principal, LoanApplicationTestBuilder.DEFAULT_STRATEGY, -4);
+        final Integer loanID = applyForLoanApplicationWithPaymentStrategyAndPastMonth(clientID, loanProductID, charges, savingsId,
+                principal, LoanApplicationTestBuilder.DEFAULT_STRATEGY, -4);
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
@@ -4731,14 +4434,11 @@ public class ClientLoanIntegrationTest {
         loanStatusHashMap = this.loanTransactionHelper.disburseLoan(fourMonthsfromNow, loanID);
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        final JournalEntry[] assetAccountInitialEntry = {
-                new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.CREDIT),
+        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.DEBIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, fourMonthsfromNow,
-                assetAccountInitialEntry);
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, fourMonthsfromNow, assetAccountInitialEntry);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap firstInstallment = loanSchedule.get(1);
         validateNumberForEqual("2290", String.valueOf(firstInstallment.get("totalOutstandingForPeriod")));
 
@@ -4863,8 +4563,8 @@ public class ClientLoanIntegrationTest {
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
         final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
 
-        final Integer loanProductID = createLoanProduct("0", "0", LoanProductTestBuilder.DEFAULT_STRATEGY,
-                ACCRUAL_UPFRONT, assetAccount, incomeAccount, expenseAccount, overpaymentAccount);// ,
+        final Integer loanProductID = createLoanProduct("0", "0", LoanProductTestBuilder.DEFAULT_STRATEGY, ACCRUAL_UPFRONT, assetAccount,
+                incomeAccount, expenseAccount, overpaymentAccount);// ,
         // LoanProductTestBuilder.EQUAL_INSTALLMENTS,
         // LoanProductTestBuilder.FLAT_BALANCE);
         Assertions.assertNotNull(loanProductID);
@@ -4882,8 +4582,8 @@ public class ClientLoanIntegrationTest {
                 ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "50", false));
         addCharges(charges, flatInstallmentFee, "50", null);
 
-        final Integer loanID = applyForLoanApplicationWithPaymentStrategyAndPastMonth(clientID, loanProductID, charges,
-                savingsId, principal, LoanApplicationTestBuilder.DEFAULT_STRATEGY, -4);
+        final Integer loanID = applyForLoanApplicationWithPaymentStrategyAndPastMonth(clientID, loanProductID, charges, savingsId,
+                principal, LoanApplicationTestBuilder.DEFAULT_STRATEGY, -4);
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
@@ -4897,16 +4597,13 @@ public class ClientLoanIntegrationTest {
         loanStatusHashMap = this.loanTransactionHelper.disburseLoan(fourMonthsfromNow, loanID);
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        final JournalEntry[] assetAccountInitialEntry = {
-                new JournalEntry(Float.valueOf("1440"), JournalEntry.TransactionType.DEBIT),
+        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(Float.valueOf("1440"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("300.00"), JournalEntry.TransactionType.DEBIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.DEBIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, fourMonthsfromNow,
-                assetAccountInitialEntry);
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, fourMonthsfromNow, assetAccountInitialEntry);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap firstInstallment = loanSchedule.get(1);
         validateNumberForEqual("2290", String.valueOf(firstInstallment.get("totalOutstandingForPeriod")));
 
@@ -5015,20 +4712,17 @@ public class ClientLoanIntegrationTest {
         final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
         ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, clientID);
 
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec,
-                MINIMUM_OPENING_BALANCE);
+        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE);
         Assertions.assertNotNull(savingsProductID);
 
-        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID,
-                ACCOUNT_TYPE_INDIVIDUAL);
+        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
         Assertions.assertNotNull(savingsProductID);
 
         HashMap modifications = this.savingsAccountHelper.updateSavingsAccount(clientID, savingsProductID, savingsId,
                 ACCOUNT_TYPE_INDIVIDUAL);
         Assertions.assertTrue(modifications.containsKey("submittedOnDate"));
 
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec,
-                savingsId);
+        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
         SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
 
         savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
@@ -5046,8 +4740,8 @@ public class ClientLoanIntegrationTest {
         final Account expenseAccount = this.accountHelper.createExpenseAccount();
         final Account overpaymentAccount = this.accountHelper.createLiabilityAccount();
 
-        final Integer loanProductID = createLoanProduct("0", "0", LoanProductTestBuilder.DEFAULT_STRATEGY, CASH_BASED,
-                assetAccount, incomeAccount, expenseAccount, overpaymentAccount);
+        final Integer loanProductID = createLoanProduct("0", "0", LoanProductTestBuilder.DEFAULT_STRATEGY, CASH_BASED, assetAccount,
+                incomeAccount, expenseAccount, overpaymentAccount);
         Assertions.assertNotNull(loanProductID);
 
         /***
@@ -5063,8 +4757,8 @@ public class ClientLoanIntegrationTest {
                 ChargesHelper.getLoanInstallmentJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "50", false));
         addCharges(charges, flatInstallmentFee, "50", null);
 
-        final Integer loanID = applyForLoanApplicationWithPaymentStrategyAndPastMonth(clientID, loanProductID, charges,
-                null, principal, LoanApplicationTestBuilder.DEFAULT_STRATEGY, -4);
+        final Integer loanID = applyForLoanApplicationWithPaymentStrategyAndPastMonth(clientID, loanProductID, charges, null, principal,
+                LoanApplicationTestBuilder.DEFAULT_STRATEGY, -4);
         Assertions.assertNotNull(loanID);
         HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, loanID);
         LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
@@ -5078,14 +4772,11 @@ public class ClientLoanIntegrationTest {
         loanStatusHashMap = this.loanTransactionHelper.disburseLoan(fourMonthsfromNow, loanID);
         LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
 
-        final JournalEntry[] assetAccountInitialEntry = {
-                new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.CREDIT),
+        final JournalEntry[] assetAccountInitialEntry = { new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.CREDIT),
                 new JournalEntry(Float.valueOf("12000.00"), JournalEntry.TransactionType.DEBIT) };
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, fourMonthsfromNow,
-                assetAccountInitialEntry);
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, fourMonthsfromNow, assetAccountInitialEntry);
 
-        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec,
-                this.responseSpec, loanID);
+        ArrayList<HashMap> loanSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(this.requestSpec, this.responseSpec, loanID);
         HashMap firstInstallment = loanSchedule.get(1);
         validateNumberForEqual("2290", String.valueOf(firstInstallment.get("totalOutstandingForPeriod")));
 
@@ -5153,8 +4844,8 @@ public class ClientLoanIntegrationTest {
         final String FROM_LOAN_ACCOUNT_TYPE = "1";
         final String TO_SAVINGS_ACCOUNT_TYPE = "2";
 
-        this.accountTransferHelper.refundLoanByTransfer(now, clientID, loanID, clientID, savingsId,
-                FROM_LOAN_ACCOUNT_TYPE, TO_SAVINGS_ACCOUNT_TYPE, TRANSFER_AMOUNT.toString());
+        this.accountTransferHelper.refundLoanByTransfer(now, clientID, loanID, clientID, savingsId, FROM_LOAN_ACCOUNT_TYPE,
+                TO_SAVINGS_ACCOUNT_TYPE, TRANSFER_AMOUNT.toString());
 
         Float toSavingsBalance = Float.valueOf(MINIMUM_OPENING_BALANCE);
 
@@ -5186,8 +4877,8 @@ public class ClientLoanIntegrationTest {
 
         TRANSFER_AMOUNT = 2000f;
 
-        this.accountTransferHelper.refundLoanByTransfer(now, clientID, loanID, clientID, savingsId,
-                FROM_LOAN_ACCOUNT_TYPE, TO_SAVINGS_ACCOUNT_TYPE, TRANSFER_AMOUNT.toString());
+        this.accountTransferHelper.refundLoanByTransfer(now, clientID, loanID, clientID, savingsId, FROM_LOAN_ACCOUNT_TYPE,
+                TO_SAVINGS_ACCOUNT_TYPE, TRANSFER_AMOUNT.toString());
 
         toSavingsSummaryAfter = this.savingsAccountHelper.getSavingsSummary(savingsId);
 
@@ -5214,8 +4905,8 @@ public class ClientLoanIntegrationTest {
 
     }
 
-    private Integer createSavingsProduct(final RequestSpecification requestSpec,
-            final ResponseSpecification responseSpec, final String minOpenningBalance) {
+    private Integer createSavingsProduct(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
+            final String minOpenningBalance) {
         LOG.info("------------------------------CREATING NEW SAVINGS PRODUCT ---------------------------------------");
         SavingsProductHelper savingsProductHelper = new SavingsProductHelper();
 
@@ -5235,38 +4926,33 @@ public class ClientLoanIntegrationTest {
     public void testLoanProductConfiguration() {
         final String proposedAmount = "5000";
         JsonObject loanProductConfigurationAsTrue = new JsonObject();
-        loanProductConfigurationAsTrue = this.createLoanProductConfigurationDetail(loanProductConfigurationAsTrue,
-                true);
+        loanProductConfigurationAsTrue = this.createLoanProductConfigurationDetail(loanProductConfigurationAsTrue, true);
 
         JsonObject loanProductConfigurationAsFalse = new JsonObject();
-        loanProductConfigurationAsFalse = this.createLoanProductConfigurationDetail(loanProductConfigurationAsFalse,
-                false);
+        loanProductConfigurationAsFalse = this.createLoanProductConfigurationDetail(loanProductConfigurationAsFalse, false);
 
         final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec, "01 January 2012");
-        Integer loanProductID = this.loanTransactionHelper.getLoanProductId(new LoanProductTestBuilder()
-                .withAmortizationTypeAsEqualInstallments().withRepaymentTypeAsMonth().withRepaymentAfterEvery("1")
-                .withRepaymentStrategy(LoanProductTestBuilder.DEFAULT_STRATEGY).withInterestTypeAsDecliningBalance()
-                .withInterestCalculationPeriodTypeAsDays().withInArrearsTolerance("10").withMoratorium("2", "3")
-                .withLoanProductConfiguration(loanProductConfigurationAsTrue).build(null));
-        LOG.info(
-                "-----------------------LOAN PRODUCT CREATED WITH ATTRIBUTE CONFIGURATION AS TRUE-------------------------- {}"
-                , loanProductID);
+        Integer loanProductID = this.loanTransactionHelper
+                .getLoanProductId(new LoanProductTestBuilder().withAmortizationTypeAsEqualInstallments().withRepaymentTypeAsMonth()
+                        .withRepaymentAfterEvery("1").withRepaymentStrategy(LoanProductTestBuilder.DEFAULT_STRATEGY)
+                        .withInterestTypeAsDecliningBalance().withInterestCalculationPeriodTypeAsDays().withInArrearsTolerance("10")
+                        .withMoratorium("2", "3").withLoanProductConfiguration(loanProductConfigurationAsTrue).build(null));
+        LOG.info("-----------------------LOAN PRODUCT CREATED WITH ATTRIBUTE CONFIGURATION AS TRUE-------------------------- {}",
+                loanProductID);
         Integer loanID = applyForLoanApplicationWithProductConfigurationAsTrue(clientID, loanProductID, proposedAmount);
-        LOG.info("------------------------LOAN CREATED WITH ID------------------------------{}" , loanID);
-
-        loanProductID = this.loanTransactionHelper.getLoanProductId(new LoanProductTestBuilder()
-                .withAmortizationTypeAsEqualInstallments().withRepaymentTypeAsMonth().withRepaymentAfterEvery("1")
-                .withRepaymentStrategy(LoanProductTestBuilder.DEFAULT_STRATEGY).withInterestTypeAsDecliningBalance()
-                .withInterestCalculationPeriodTypeAsDays().withInArrearsTolerance("10").withMoratorium("2", "3")
-                .withLoanProductConfiguration(loanProductConfigurationAsFalse).build(null));
-        LOG.info("-------------------LOAN PRODUCT CREATED WITH ATTRIBUTE CONFIGURATION AS FALSE---------------------- {}"
-                , loanProductID);
+        LOG.info("------------------------LOAN CREATED WITH ID------------------------------{}", loanID);
+
+        loanProductID = this.loanTransactionHelper.getLoanProductId(new LoanProductTestBuilder().withAmortizationTypeAsEqualInstallments()
+                .withRepaymentTypeAsMonth().withRepaymentAfterEvery("1").withRepaymentStrategy(LoanProductTestBuilder.DEFAULT_STRATEGY)
+                .withInterestTypeAsDecliningBalance().withInterestCalculationPeriodTypeAsDays().withInArrearsTolerance("10")
+                .withMoratorium("2", "3").withLoanProductConfiguration(loanProductConfigurationAsFalse).build(null));
+        LOG.info("-------------------LOAN PRODUCT CREATED WITH ATTRIBUTE CONFIGURATION AS FALSE---------------------- {}", loanProductID);
         /*
          * Try to override attribute values in loan account when attribute
          * configurations are set to false at product level
          */
         loanID = applyForLoanApplicationWithProductConfigurationAsFalse(clientID, loanProductID, proposedAmount);
-        LOG.info("--------------------------LOAN CREATED WITH ID------------------------- {}" , loanID);
+        LOG.info("--------------------------LOAN CREATED WITH ID------------------------- {}", loanID);
         this.validateIfValuesAreNotOverridden(loanID, loanProductID);
     }
 
@@ -5324,12 +5010,11 @@ public class ClientLoanIntegrationTest {
     }
 
     private void validateIfValuesAreNotOverridden(Integer loanID, Integer loanProductID) {
-        String loanProductDetails = this.loanTransactionHelper.getLoanProductDetails(this.requestSpec,
-                this.responseSpec, loanProductID);
+        String loanProductDetails = this.loanTransactionHelper.getLoanProductDetails(this.requestSpec, this.responseSpec, loanProductID);
         String loanDetails = this.loanTransactionHelper.getLoanDetails(this.requestSpec, this.responseSpec, loanID);
-        List<String> comparisonAttributes = Arrays.asList("amortizationType", "interestType",
-                "transactionProcessingStrategyId", "interestCalculationPeriodType", "repaymentFrequencyType",
-                "graceOnPrincipalPayment", "graceOnInterestPayment", "inArrearsTolerance", "graceOnArrearsAgeing");
+        List<String> comparisonAttributes = Arrays.asList("amortizationType", "interestType", "transactionProcessingStrategyId",
+                "interestCalculationPeriodType", "repaymentFrequencyType", "graceOnPrincipalPayment", "graceOnInterestPayment",
+                "inArrearsTolerance", "graceOnArrearsAgeing");
 
         for (String comparisonAttribute : comparisonAttributes) {
             Object val1 = JsonPath.from(loanProductDetails).get(comparisonAttribute);
@@ -5350,8 +5035,8 @@ public class ClientLoanIntegrationTest {
         return loanProductConfiguration;
     }
 
-    private Integer applyForLoanApplicationWithProductConfigurationAsTrue(final Integer clientID,
-            final Integer loanProductID, String principal) {
+    private Integer applyForLoanApplicationWithProductConfigurationAsTrue(final Integer clientID, final Integer loanProductID,
+            String principal) {
         LOG.info("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
         final String loanApplicationJSON = new LoanApplicationTestBuilder() //
                 .withPrincipal(principal) //
@@ -5368,8 +5053,8 @@ public class ClientLoanIntegrationTest {
         return this.loanTransactionHelper.getLoanId(loanApplicationJSON);
     }
 
-    private Integer applyForLoanApplicationWithProductConfigurationAsFalse(final Integer clientID,
-            final Integer loanProductID, String principal) {
+    private Integer applyForLoanApplicationWithProductConfigurationAsFalse(final Integer clientID, final Integer loanProductID,
+            String principal) {
         LOG.info("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
         final String loanApplicationJSON = new LoanApplicationTestBuilder()
                 //
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientSavingsIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientSavingsIntegrationTest.java
old mode 100755
new mode 100644
index 1ba3f74..8f0aff5
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientSavingsIntegrationTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientSavingsIntegrationTest.java
@@ -61,8 +61,9 @@ import org.slf4j.LoggerFactory;
 /**
  * Client Savings Integration Test for checking Savings Application.
  */
-@SuppressWarnings({ "rawtypes"})
+@SuppressWarnings({ "rawtypes" })
 public class ClientSavingsIntegrationTest {
+
     private final static Logger LOG = LoggerFactory.getLogger(ClientSavingsIntegrationTest.class);
     public static final String DEPOSIT_AMOUNT = "2000";
     public static final String WITHDRAW_AMOUNT = "1000";
@@ -203,8 +204,8 @@ public class ClientSavingsIntegrationTest {
         Calendar todaysDate = Calendar.getInstance();
         final String CLOSEDON_DATE = dateFormat.format(todaysDate.getTime());
         String withdrawBalance = "false";
-        ArrayList<HashMap> savingsAccountErrorData = (ArrayList<HashMap>) validationErrorHelper.closeSavingsAccountAndGetBackRequiredField(
-                savingsId, withdrawBalance, CommonConstants.RESPONSE_ERROR, CLOSEDON_DATE);
+        ArrayList<HashMap> savingsAccountErrorData = (ArrayList<HashMap>) validationErrorHelper
+                .closeSavingsAccountAndGetBackRequiredField(savingsId, withdrawBalance, CommonConstants.RESPONSE_ERROR, CLOSEDON_DATE);
         assertEquals("validation.msg.savingsaccount.close.results.in.balance.not.zero",
                 savingsAccountErrorData.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
 
@@ -559,8 +560,8 @@ public class ClientSavingsIntegrationTest {
 
         ArrayList<HashMap> savingsAccountErrorData = (ArrayList<HashMap>) validationErrorHelper.inactivateCharge(annualSavingsChargeId,
                 savingsId, CommonConstants.RESPONSE_ERROR);
-        assertEquals("validation.msg.savingsaccountcharge.inactivation.of.charge.not.allowed.when.charge.is.due", savingsAccountErrorData
-                .get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
+        assertEquals("validation.msg.savingsaccountcharge.inactivation.of.charge.not.allowed.when.charge.is.due",
+                savingsAccountErrorData.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
 
         SimpleDateFormat sdf = new SimpleDateFormat(CommonConstants.DATE_FORMAT, Locale.US);
         Calendar cal = Calendar.getInstance();
@@ -604,8 +605,8 @@ public class ClientSavingsIntegrationTest {
 
         savingsAccountErrorData = (ArrayList<HashMap>) validationErrorHelper.inactivateCharge(monthlySavingsCharge, savingsId,
                 CommonConstants.RESPONSE_ERROR);
-        assertEquals("validation.msg.savingsaccountcharge.inactivation.of.charge.not.allowed.when.charge.is.due", savingsAccountErrorData
-                .get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
+        assertEquals("validation.msg.savingsaccountcharge.inactivation.of.charge.not.allowed.when.charge.is.due",
+                savingsAccountErrorData.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
 
         this.savingsAccountHelper.waiveCharge((Integer) savingsChargeForWaive.get("id"), savingsId);
         HashMap waiveCharge = this.savingsAccountHelper.getSavingsCharge(savingsId, (Integer) savingsChargeForWaive.get("id"));
@@ -630,8 +631,8 @@ public class ClientSavingsIntegrationTest {
 
         savingsAccountErrorData = (ArrayList<HashMap>) validationErrorHelper.inactivateCharge(weeklySavingsFeeId, savingsId,
                 CommonConstants.RESPONSE_ERROR);
-        assertEquals("validation.msg.savingsaccountcharge.inactivation.of.charge.not.allowed.when.charge.is.due", savingsAccountErrorData
-                .get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
+        assertEquals("validation.msg.savingsaccountcharge.inactivation.of.charge.not.allowed.when.charge.is.due",
+                savingsAccountErrorData.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
 
         cal = Calendar.getInstance();
         dates = (List) savingsChargeForPay.get("dueDate");
@@ -793,8 +794,8 @@ public class ClientSavingsIntegrationTest {
         todaysDate = Calendar.getInstance();
         final String CLOSEDON_DATE = dateFormat.format(todaysDate.getTime());
         String withdrawBalance = "false";
-        ArrayList<HashMap> savingsAccountErrorData = (ArrayList<HashMap>) validationErrorHelper.closeSavingsAccountAndGetBackRequiredField(
-                savingsId, withdrawBalance, CommonConstants.RESPONSE_ERROR, CLOSEDON_DATE);
+        ArrayList<HashMap> savingsAccountErrorData = (ArrayList<HashMap>) validationErrorHelper
+                .closeSavingsAccountAndGetBackRequiredField(savingsId, withdrawBalance, CommonConstants.RESPONSE_ERROR, CLOSEDON_DATE);
         assertEquals("validation.msg.savingsaccount.close.results.in.balance.not.zero",
                 savingsAccountErrorData.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
     }
@@ -802,14 +803,12 @@ public class ClientSavingsIntegrationTest {
     @SuppressWarnings("unchecked")
     @Test
     public void testSavingsAccountPostInterestOnLastDayWithOverdraft() {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec,
-                this.responseSpec);
+        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
 
         /***
          * Create a client to apply for savings account (overdraft account).
          */
-        final Integer clientID = ClientHelper.createClient(this.requestSpec,
-                this.responseSpec);
+        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
         Assertions.assertNotNull(clientID);
         final String minBalanceForInterestCalculation = null;
 
@@ -821,33 +820,27 @@ public class ClientSavingsIntegrationTest {
         final String minRequiredBalance = null;
         final String enforceMinRequiredBalance = "false";
         final boolean allowOverdraft = true;
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec,
-                this.responseSpec, zeroOpeningBalance,
-                minBalanceForInterestCalculation, minRequiredBalance,
-                enforceMinRequiredBalance, allowOverdraft);
+        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, zeroOpeningBalance,
+                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft);
         Assertions.assertNotNull(savingsProductID);
 
         /***
          * Apply for Savings account
          */
-        final Integer savingsId = this.savingsAccountHelper
-                .applyForSavingsApplication(clientID, savingsProductID,
-                        ACCOUNT_TYPE_INDIVIDUAL);
+        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
         Assertions.assertNotNull(savingsProductID);
 
-        HashMap modifications = this.savingsAccountHelper.updateSavingsAccount(
-                clientID, savingsProductID, savingsId, ACCOUNT_TYPE_INDIVIDUAL);
+        HashMap modifications = this.savingsAccountHelper.updateSavingsAccount(clientID, savingsProductID, savingsId,
+                ACCOUNT_TYPE_INDIVIDUAL);
         Assertions.assertTrue(modifications.containsKey("submittedOnDate"));
 
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(
-                this.requestSpec, this.responseSpec, savingsId);
+        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
         SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
 
         /***
          * Approve the savings account
          */
-        savingsStatusHashMap = this.savingsAccountHelper
-                .approveSavings(savingsId);
+        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
         SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
 
         DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
@@ -862,26 +855,23 @@ public class ClientSavingsIntegrationTest {
          * @param activationDate
          *            this value is every time first day of previous month
          */
-        savingsStatusHashMap = activateSavingsAccount(savingsId,
-                ACTIVATION_DATE);
+        savingsStatusHashMap = activateSavingsAccount(savingsId, ACTIVATION_DATE);
         SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
         /***
          * Verify the account summary
          */
-        final HashMap summaryBefore = this.savingsAccountHelper
-                .getSavingsSummary(savingsId);
+        final HashMap summaryBefore = this.savingsAccountHelper.getSavingsSummary(savingsId);
         this.savingsAccountHelper.calculateInterestForSavings(savingsId);
-        HashMap summary = this.savingsAccountHelper
-                .getSavingsSummary(savingsId);
+        HashMap summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
         assertEquals(summaryBefore, summary);
 
-        final Integer lastDayOfMonth = todaysDate
-                .getActualMaximum(Calendar.DAY_OF_MONTH);
+        final Integer lastDayOfMonth = todaysDate.getActualMaximum(Calendar.DAY_OF_MONTH);
         todaysDate.set(Calendar.DAY_OF_MONTH, lastDayOfMonth);
         final String WITHDRAWAL_DATE = dateFormat.format(todaysDate.getTime());
         Float balance = Float.valueOf(zeroOpeningBalance);
 
-        //DateFormat transactionDateFormat = new SimpleDateFormat("dd MMMM yyyy",Locale.US);
+        // DateFormat transactionDateFormat = new SimpleDateFormat("dd MMMM
+        // yyyy",Locale.US);
         Calendar transactionDate = Calendar.getInstance();
         transactionDate.set(Calendar.DAY_OF_MONTH, 2);
         String TRANSACTION_DATE = dateFormat.format(transactionDate.getTime());
@@ -893,16 +883,12 @@ public class ClientSavingsIntegrationTest {
          * @param transactionDate
          *            this value is every time last day of previous month
          */
-        Integer depositTransactionId = (Integer) this.savingsAccountHelper
-                .depositToSavingsAccount(savingsId, DEPOSIT_AMOUNT,
-                        WITHDRAWAL_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
-        HashMap depositTransaction = this.savingsAccountHelper
-                .getSavingsTransaction(savingsId, depositTransactionId);
+        Integer depositTransactionId = (Integer) this.savingsAccountHelper.depositToSavingsAccount(savingsId, DEPOSIT_AMOUNT,
+                WITHDRAWAL_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
+        HashMap depositTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, depositTransactionId);
         balance += Float.valueOf(DEPOSIT_AMOUNT);
-        assertEquals(Float.valueOf(DEPOSIT_AMOUNT), depositTransaction.get("amount"),
-                "Verifying Deposit Amount");
-        assertEquals(balance, depositTransaction.get("runningBalance"),
-                "Verifying Balance after Deposit");
+        assertEquals(Float.valueOf(DEPOSIT_AMOUNT), depositTransaction.get("amount"), "Verifying Deposit Amount");
+        assertEquals(balance, depositTransaction.get("runningBalance"), "Verifying Balance after Deposit");
 
         /***
          * Calculate expected interest to be posted, interest should be posted
@@ -910,18 +896,13 @@ public class ClientSavingsIntegrationTest {
          * month before this account balance is negative.
          */
         this.savingsAccountHelper.postInterestForSavings(savingsId);
-        HashMap accountDetails = this.savingsAccountHelper
-                .getSavingsDetails(savingsId);
+        HashMap accountDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
         summary = (HashMap) accountDetails.get("summary");
-        Float accountDetailsPostInterestPosted = Float.valueOf(summary.get(
-                "totalInterestPosted").toString());
-
-        Float nominalAnnualInterest = Float.valueOf(accountDetails.get(
-                "nominalAnnualInterestRate").toString());
-        HashMap interestCalculationDaysInYearType = (HashMap) accountDetails
-                .get("interestCalculationDaysInYearType");
-        Integer daysInYear = Integer.valueOf(interestCalculationDaysInYearType
-                .get("id").toString());
+        Float accountDetailsPostInterestPosted = Float.valueOf(summary.get("totalInterestPosted").toString());
+
+        Float nominalAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString());
+        HashMap interestCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType");
+        Integer daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString());
         double interestRateInFraction = nominalAnnualInterest / 100;
         double perDay = (double) 1 / daysInYear;
         double interestPerDay = interestRateInFraction * perDay;
@@ -931,29 +912,20 @@ public class ClientSavingsIntegrationTest {
          * Apply rounding on interestPosted, actualInterestPosted and verify
          * both are same
          */
-        DecimalFormat decimalFormat = new DecimalFormat("",
-                new DecimalFormatSymbols(Locale.US));
+        DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
         decimalFormat.applyPattern("#.###");
         interestPosted = Float.valueOf(decimalFormat.format(interestPosted));
-        accountDetailsPostInterestPosted = Float.valueOf(
-                decimalFormat.format(accountDetailsPostInterestPosted));
-        assertEquals(interestPosted, accountDetailsPostInterestPosted,
-                "Verifying interest posted");
-
-        this.savingsAccountHelper.postInterestAsOnSavings(savingsId,
-                TRANSACTION_DATE);
-        HashMap accountTransactionDetails = this.savingsAccountHelper
-                .getSavingsDetails(savingsId);
+        accountDetailsPostInterestPosted = Float.valueOf(decimalFormat.format(accountDetailsPostInterestPosted));
+        assertEquals(interestPosted, accountDetailsPostInterestPosted, "Verifying interest posted");
+
+        this.savingsAccountHelper.postInterestAsOnSavings(savingsId, TRANSACTION_DATE);
+        HashMap accountTransactionDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
         summary = (HashMap) accountDetails.get("summary");
-        Float accountDetailsPostInterest = Float.valueOf(summary.get(
-                "totalInterestPosted").toString());
-
-        nominalAnnualInterest = Float.valueOf(accountDetails.get(
-                "nominalAnnualInterestRate").toString());
-        interestCalculationDaysInYearType = (HashMap) accountDetails
-                .get("interestCalculationDaysInYearType");
-        daysInYear = Integer.valueOf(interestCalculationDaysInYearType
-                .get("id").toString());
+        Float accountDetailsPostInterest = Float.valueOf(summary.get("totalInterestPosted").toString());
+
+        nominalAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString());
+        interestCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType");
+        daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString());
         interestRateInFraction = nominalAnnualInterest / 100;
         perDay = (double) 1 / daysInYear;
         interestPerDay = interestRateInFraction * perDay;
@@ -963,33 +935,24 @@ public class ClientSavingsIntegrationTest {
          * Apply rounding on interestPosted, actualInterestPosted and verify
          * both are same
          */
-        decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(
-                Locale.US));
+        decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
         decimalFormat.applyPattern("#.###");
         interestPosted = Float.valueOf(decimalFormat.format(interestPosted));
-        accountDetailsPostInterestPosted = Float.valueOf(
-                decimalFormat.format(accountDetailsPostInterestPosted));
-        assertEquals(interestPosted, accountDetailsPostInterestPosted,
-                "Verifying interest posted");
+        accountDetailsPostInterestPosted = Float.valueOf(decimalFormat.format(accountDetailsPostInterestPosted));
+        assertEquals(interestPosted, accountDetailsPostInterestPosted, "Verifying interest posted");
         LOG.info("-----Post Interest As on Successfully Worked----------");
 
         transactionDate.set(Calendar.DAY_OF_MONTH, 3);
         TRANSACTION_DATE = dateFormat.format(transactionDate.getTime());
 
-        this.savingsAccountHelper.postInterestAsOnSavings(savingsId,
-                TRANSACTION_DATE);
-        accountTransactionDetails = this.savingsAccountHelper
-                .getSavingsDetails(savingsId);
+        this.savingsAccountHelper.postInterestAsOnSavings(savingsId, TRANSACTION_DATE);
+        accountTransactionDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
         summary = (HashMap) accountDetails.get("summary");
-        accountDetailsPostInterest = Float.valueOf(summary.get(
-                "totalInterestPosted").toString());
-
-        nominalAnnualInterest = Float.valueOf(accountDetails.get(
-                "nominalAnnualInterestRate").toString());
-        interestCalculationDaysInYearType = (HashMap) accountDetails
-                .get("interestCalculationDaysInYearType");
-        daysInYear = Integer.valueOf(interestCalculationDaysInYearType
-                .get("id").toString());
+        accountDetailsPostInterest = Float.valueOf(summary.get("totalInterestPosted").toString());
+
+        nominalAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString());
+        interestCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType");
+        daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString());
         interestRateInFraction = nominalAnnualInterest / 100;
         perDay = (double) 1 / daysInYear;
         interestPerDay = interestRateInFraction * perDay;
@@ -999,36 +962,28 @@ public class ClientSavingsIntegrationTest {
          * Apply rounding on interestPosted, actualInterestPosted and verify
          * both are same
          */
-        decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(
-                Locale.US));
+        decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
         decimalFormat.applyPattern("#.###");
         interestPosted = Float.valueOf(decimalFormat.format(interestPosted));
-        accountDetailsPostInterestPosted = Float.valueOf(
-                decimalFormat.format(accountDetailsPostInterestPosted));
-        assertEquals(interestPosted, accountDetailsPostInterestPosted,
-                "Verifying interest posted");
+        accountDetailsPostInterestPosted = Float.valueOf(decimalFormat.format(accountDetailsPostInterestPosted));
+        assertEquals(interestPosted, accountDetailsPostInterestPosted, "Verifying interest posted");
         LOG.info("-----Post Interest As on Successfully Worked-------");
 
-        //DateFormat transactionFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
+        // DateFormat transactionFormat = new SimpleDateFormat("dd MMMM yyyy",
+        // Locale.US);
         Calendar transactionCalendarDateFormat = Calendar.getInstance();
         transactionCalendarDateFormat.add(Calendar.DAY_OF_MONTH, 0);
         transactionDate.set(Calendar.DAY_OF_MONTH, 22);
         TRANSACTION_DATE = dateFormat.format(transactionDate.getTime());
         if (Calendar.DAY_OF_MONTH >= 22) {
-            this.savingsAccountHelper.postInterestAsOnSavings(savingsId,
-                    TRANSACTION_DATE);
-            accountTransactionDetails = this.savingsAccountHelper
-                    .getSavingsDetails(savingsId);
+            this.savingsAccountHelper.postInterestAsOnSavings(savingsId, TRANSACTION_DATE);
+            accountTransactionDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
             summary = (HashMap) accountTransactionDetails.get("summary");
-            accountDetailsPostInterest = Float.valueOf(summary.get(
-                    "totalInterestPosted").toString());
-
-            nominalAnnualInterest = Float.valueOf(accountDetails.get(
-                    "nominalAnnualInterestRate").toString());
-            interestCalculationDaysInYearType = (HashMap) accountDetails
-                    .get("interestCalculationDaysInYearType");
-            daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get(
-                    "id").toString());
+            accountDetailsPostInterest = Float.valueOf(summary.get("totalInterestPosted").toString());
+
+            nominalAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString());
+            interestCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType");
+            daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString());
             interestRateInFraction = nominalAnnualInterest / 100;
             perDay = (double) 1 / daysInYear;
             interestPerDay = interestRateInFraction * perDay;
@@ -1038,40 +993,28 @@ public class ClientSavingsIntegrationTest {
              * Apply rounding on interestPosted, actualInterestPosted and verify
              * both are same
              */
-            decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(
-                    Locale.US));
+            decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
             decimalFormat.applyPattern("#.###");
             interestPosted = Float.valueOf(decimalFormat.format(interestPosted));
-            accountDetailsPostInterestPosted = Float.valueOf(
-                    decimalFormat.format(accountDetailsPostInterestPosted));
-            assertEquals(interestPosted, accountDetailsPostInterestPosted,
-                        "Verifying interest posted");
+            accountDetailsPostInterestPosted = Float.valueOf(decimalFormat.format(accountDetailsPostInterestPosted));
+            assertEquals(interestPosted, accountDetailsPostInterestPosted, "Verifying interest posted");
             LOG.info("-----Post Interest As on Successfully Worked----------");
         }
-        DateFormat lastTransactionDateFormat = new SimpleDateFormat(
-                "dd MMMM yyyy", Locale.US);
+        DateFormat lastTransactionDateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
         Calendar postedLastDate = Calendar.getInstance();
-        int numberOfDateOfMonth = postedLastDate
-                .getActualMaximum(Calendar.DAY_OF_MONTH);
-        TRANSACTION_DATE = lastTransactionDateFormat.format(transactionDate
-                .getTime());
+        int numberOfDateOfMonth = postedLastDate.getActualMaximum(Calendar.DAY_OF_MONTH);
+        TRANSACTION_DATE = lastTransactionDateFormat.format(transactionDate.getTime());
 
         if (Calendar.DAY_OF_MONTH == numberOfDateOfMonth) {
 
-            this.savingsAccountHelper.postInterestAsOnSavings(savingsId,
-                    TRANSACTION_DATE);
-            accountTransactionDetails = this.savingsAccountHelper
-                    .getSavingsDetails(savingsId);
+            this.savingsAccountHelper.postInterestAsOnSavings(savingsId, TRANSACTION_DATE);
+            accountTransactionDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
             summary = (HashMap) accountTransactionDetails.get("summary");
-            accountDetailsPostInterest = Float.valueOf(summary.get(
-                    "totalInterestPosted").toString());
-
-            nominalAnnualInterest = Float.valueOf(accountDetails.get(
-                    "nominalAnnualInterestRate").toString());
-            interestCalculationDaysInYearType = (HashMap) accountDetails
-                    .get("interestCalculationDaysInYearType");
-            daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get(
-                    "id").toString());
+            accountDetailsPostInterest = Float.valueOf(summary.get("totalInterestPosted").toString());
+
+            nominalAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString());
+            interestCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType");
+            daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString());
             interestRateInFraction = nominalAnnualInterest / 100;
             perDay = (double) 1 / daysInYear;
             interestPerDay = interestRateInFraction * perDay;
@@ -1081,33 +1024,24 @@ public class ClientSavingsIntegrationTest {
              * Apply rounding on interestPosted, actualInterestPosted and verify
              * both are same
              */
-            decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(
-                    Locale.US));
+            decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
             decimalFormat.applyPattern("#.###");
             interestPosted = Float.valueOf(decimalFormat.format(interestPosted));
-            accountDetailsPostInterestPosted = Float.valueOf(
-                    decimalFormat.format(accountDetailsPostInterestPosted));
-            assertEquals(interestPosted, accountDetailsPostInterestPosted,
-                        "Verifying interest posted");
+            accountDetailsPostInterestPosted = Float.valueOf(decimalFormat.format(accountDetailsPostInterestPosted));
+            assertEquals(interestPosted, accountDetailsPostInterestPosted, "Verifying interest posted");
             LOG.info("-----Post Interest As on Successfully Worked----------");
 
         }
         transactionDate.set(Calendar.DAY_OF_MONTH, 1);
         TRANSACTION_DATE = dateFormat.format(transactionDate.getTime());
-        this.savingsAccountHelper.postInterestAsOnSavings(savingsId,
-                TRANSACTION_DATE);
-        accountTransactionDetails = this.savingsAccountHelper
-                .getSavingsDetails(savingsId);
+        this.savingsAccountHelper.postInterestAsOnSavings(savingsId, TRANSACTION_DATE);
+        accountTransactionDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
         summary = (HashMap) accountTransactionDetails.get("summary");
-        accountDetailsPostInterest = Float.valueOf(summary.get(
-                "totalInterestPosted").toString());
-
-        nominalAnnualInterest = Float.valueOf(accountDetails.get(
-                "nominalAnnualInterestRate").toString());
-        interestCalculationDaysInYearType = (HashMap) accountDetails
-                .get("interestCalculationDaysInYearType");
-        daysInYear = Integer.valueOf(interestCalculationDaysInYearType
-                .get("id").toString());
+        accountDetailsPostInterest = Float.valueOf(summary.get("totalInterestPosted").toString());
+
+        nominalAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString());
+        interestCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType");
+        daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString());
         interestRateInFraction = nominalAnnualInterest / 100;
         perDay = (double) 1 / daysInYear;
         interestPerDay = interestRateInFraction * perDay;
@@ -1117,14 +1051,11 @@ public class ClientSavingsIntegrationTest {
          * Apply rounding on interestPosted, actualInterestPosted and verify
          * both are same
          */
-        decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(
-                Locale.US));
+        decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
         decimalFormat.applyPattern("#.###");
         interestPosted = Float.valueOf(decimalFormat.format(interestPosted));
-        accountDetailsPostInterestPosted = Float.valueOf(
-                decimalFormat.format(accountDetailsPostInterestPosted));
-        assertEquals(interestPosted, accountDetailsPostInterestPosted,
-                "Verifying interest posted");
+        accountDetailsPostInterestPosted = Float.valueOf(decimalFormat.format(accountDetailsPostInterestPosted));
+        assertEquals(interestPosted, accountDetailsPostInterestPosted, "Verifying interest posted");
         LOG.info("-----Post Interest As on Successfully Worked----------");
 
     }
@@ -1132,14 +1063,12 @@ public class ClientSavingsIntegrationTest {
     @SuppressWarnings("unchecked")
     @Test
     public void testSavingsAccountPostInterestOnLastDayWithdrawalWithOverdraft() {
-        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec,
-                this.responseSpec);
+        this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
 
         /***
          * Create a client to apply for savings account (overdraft account).
          */
-        final Integer clientID = ClientHelper.createClient(this.requestSpec,
-                this.responseSpec);
+        final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
         Assertions.assertNotNull(clientID);
         final String minBalanceForInterestCalculation = null;
 
@@ -1151,33 +1080,27 @@ public class ClientSavingsIntegrationTest {
         final String minRequiredBalance = null;
         final String enforceMinRequiredBalance = "false";
         final boolean allowOverdraft = true;
-        final Integer savingsProductID = createSavingsProduct(this.requestSpec,
-                this.responseSpec, zeroOpeningBalance,
-                minBalanceForInterestCalculation, minRequiredBalance,
-                enforceMinRequiredBalance, allowOverdraft);
+        final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, zeroOpeningBalance,
+                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft);
         Assertions.assertNotNull(savingsProductID);
 
         /***
          * Apply for Savings account
          */
-        final Integer savingsId = this.savingsAccountHelper
-                .applyForSavingsApplication(clientID, savingsProductID,
-                        ACCOUNT_TYPE_INDIVIDUAL);
+        final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
         Assertions.assertNotNull(savingsProductID);
 
-        HashMap modifications = this.savingsAccountHelper.updateSavingsAccount(
-                clientID, savingsProductID, savingsId, ACCOUNT_TYPE_INDIVIDUAL);
+        HashMap modifications = this.savingsAccountHelper.updateSavingsAccount(clientID, savingsProductID, savingsId,
+                ACCOUNT_TYPE_INDIVIDUAL);
         Assertions.assertTrue(modifications.containsKey("submittedOnDate"));
 
-        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(
-                this.requestSpec, this.responseSpec, savingsId);
+        HashMap savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsId);
         SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
 
         /***
          * Approve the savings account
          */
-        savingsStatusHashMap = this.savingsAccountHelper
-                .approveSavings(savingsId);
+        savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
         SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
 
         DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
@@ -1192,31 +1115,28 @@ public class ClientSavingsIntegrationTest {
          * @param activationDate
          *            this value is every time first day of previous month
          */
-        savingsStatusHashMap = activateSavingsAccount(savingsId,
-                ACTIVATION_DATE);
+        savingsStatusHashMap = activateSavingsAccount(savingsId, ACTIVATION_DATE);
         SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
         /***
          * Verify the account summary
          */
-        final HashMap summaryBefore = this.savingsAccountHelper
-                .getSavingsSummary(savingsId);
+        final HashMap summaryBefore = this.savingsAccountHelper.getSavingsSummary(savingsId);
         this.savingsAccountHelper.calculateInterestForSavings(savingsId);
-        HashMap summary = this.savingsAccountHelper
-                .getSavingsSummary(savingsId);
+        HashMap summary = this.savingsAccountHelper.getSavingsSummary(savingsId);
         assertEquals(summaryBefore, summary);
 
-        final Integer lastDayOfMonth = todaysDate
-                .getActualMaximum(Calendar.DAY_OF_MONTH);
+        final Integer lastDayOfMonth = todaysDate.getActualMaximum(Calendar.DAY_OF_MONTH);
         todaysDate.set(Calendar.DAY_OF_MONTH, lastDayOfMonth);
         final String WITHDRAWAL_DATE = dateFormat.format(todaysDate.getTime());
         Float balance = Float.valueOf(zeroOpeningBalance);
 
-        //DateFormat transactionDateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
+        // DateFormat transactionDateFormat = new SimpleDateFormat("dd MMMM
+        // yyyy", Locale.US);
         Calendar transactionDate = Calendar.getInstance();
         transactionDate.set(Calendar.DAY_OF_MONTH, 2);
         String TRANSACTION_DATE = dateFormat.format(transactionDate.getTime());
 
-         /***
+        /***
          * Perform withdraw transaction, verify account balance(account balance
          * will go to negative as no deposits are there prior to this
          * transaction)
@@ -1248,18 +1168,13 @@ public class ClientSavingsIntegrationTest {
          * month before this account balance is negative.
          */
         this.savingsAccountHelper.postInterestForSavings(savingsId);
-        HashMap accountDetails = this.savingsAccountHelper
-                .getSavingsDetails(savingsId);
+        HashMap accountDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
         summary = (HashMap) accountDetails.get("summary");
-        Float accountDetailsPostInterestPosted = Float.valueOf(summary.get(
-                "totalInterestPosted").toString());
-
-        Float nominalAnnualInterest = Float.valueOf(accountDetails.get(
-                "nominalAnnualInterestRate").toString());
-        HashMap interestCalculationDaysInYearType = (HashMap) accountDetails
-                .get("interestCalculationDaysInYearType");
-        Integer daysInYear = Integer.valueOf(interestCalculationDaysInYearType
-                .get("id").toString());
+        Float accountDetailsPostInterestPosted = Float.valueOf(summary.get("totalInterestPosted").toString());
+
+        Float nominalAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString());
+        HashMap interestCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType");
+        Integer daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString());
         double interestRateInFraction = nominalAnnualInterest / 100;
         double perDay = (double) 1 / daysInYear;
         double interestPerDay = interestRateInFraction * perDay;
@@ -1269,29 +1184,20 @@ public class ClientSavingsIntegrationTest {
          * Apply rounding on interestPosted, actualInterestPosted and verify
          * both are same
          */
-        DecimalFormat decimalFormat = new DecimalFormat("",
-                new DecimalFormatSymbols(Locale.US));
+        DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
         decimalFormat.applyPattern("#.###");
         interestPosted = Float.valueOf(decimalFormat.format(interestPosted));
-        accountDetailsPostInterestPosted = Float.valueOf(
-                decimalFormat.format(accountDetailsPostInterestPosted));
-        assertEquals(interestPosted, accountDetailsPostInterestPosted,
-                "Verifying interest posted");
-
-        this.savingsAccountHelper.postInterestAsOnSavings(savingsId,
-                TRANSACTION_DATE);
-        HashMap accountTransactionDetails = this.savingsAccountHelper
-                .getSavingsDetails(savingsId);
+        accountDetailsPostInterestPosted = Float.valueOf(decimalFormat.format(accountDetailsPostInterestPosted));
+        assertEquals(interestPosted, accountDetailsPostInterestPosted, "Verifying interest posted");
+
+        this.savingsAccountHelper.postInterestAsOnSavings(savingsId, TRANSACTION_DATE);
+        HashMap accountTransactionDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
         summary = (HashMap) accountDetails.get("summary");
-        Float accountDetailsPostInterest = Float.valueOf(summary.get(
-                "totalInterestPosted").toString());
-
-        nominalAnnualInterest = Float.valueOf(accountDetails.get(
-                "nominalAnnualInterestRate").toString());
-        interestCalculationDaysInYearType = (HashMap) accountDetails
-                .get("interestCalculationDaysInYearType");
-        daysInYear = Integer.valueOf(interestCalculationDaysInYearType
-                .get("id").toString());
+        Float accountDetailsPostInterest = Float.valueOf(summary.get("totalInterestPosted").toString());
+
+        nominalAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString());
+        interestCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType");
+        daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString());
         interestRateInFraction = nominalAnnualInterest / 100;
         perDay = (double) 1 / daysInYear;
         interestPerDay = interestRateInFraction * perDay;
@@ -1301,33 +1207,24 @@ public class ClientSavingsIntegrationTest {
          * Apply rounding on interestPosted, actualInterestPosted and verify
          * both are same
          */
-        decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(
-                Locale.US));
+        decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
         decimalFormat.applyPattern("#.###");
         interestPosted = Float.valueOf(decimalFormat.format(interestPosted));
-        accountDetailsPostInterestPosted = Float.valueOf(
-                decimalFormat.format(accountDetailsPostInterestPosted));
-        assertEquals(interestPosted, accountDetailsPostInterestPosted,
-                "Verifying interest posted");
+        accountDetailsPostInterestPosted = Float.valueOf(decimalFormat.format(accountDetailsPostInterestPosted));
+        assertEquals(interestPosted, accountDetailsPostInterestPosted, "Verifying interest posted");
         LOG.info("-----Post Interest As on Successfully Worked----------");
 
         transactionDate.set(Calendar.DAY_OF_MONTH, 3);
         TRANSACTION_DATE = dateFormat.format(transactionDate.getTime());
 
-        this.savingsAccountHelper.postInterestAsOnSavings(savingsId,
-                TRANSACTION_DATE);
-        accountTransactionDetails = this.savingsAccountHelper
-                .getSavingsDetails(savingsId);
+        this.savingsAccountHelper.postInterestAsOnSavings(savingsId, TRANSACTION_DATE);
+        accountTransactionDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
         summary = (HashMap) accountDetails.get("summary");
-        accountDetailsPostInterest = Float.valueOf(summary.get(
-                "totalInterestPosted").toString());
-
-        nominalAnnualInterest = Float.valueOf(accountDetails.get(
-                "nominalAnnualInterestRate").toString());
-        interestCalculationDaysInYearType = (HashMap) accountDetails
-                .get("interestCalculationDaysInYearType");
-        daysInYear = Integer.valueOf(interestCalculationDaysInYearType
-                .get("id").toString());
+        accountDetailsPostInterest = Float.valueOf(summary.get("totalInterestPosted").toString());
+
+        nominalAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString());
+        interestCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType");
+        daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString());
         interestRateInFraction = nominalAnnualInterest / 100;
         perDay = (double) 1 / daysInYear;
         interestPerDay = interestRateInFraction * perDay;
@@ -1337,36 +1234,28 @@ public class ClientSavingsIntegrationTest {
          * Apply rounding on interestPosted, actualInterestPosted and verify
          * both are same
          */
-        decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(
-                Locale.US));
+        decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
         decimalFormat.applyPattern("#.###");
         interestPosted = Float.valueOf(decimalFormat.format(interestPosted));
-        accountDetailsPostInterestPosted = Float.valueOf(
-                decimalFormat.format(accountDetailsPostInterestPosted));
-        assertEquals(interestPosted, accountDetailsPostInterestPosted,
-                "Verifying interest posted");
+        accountDetailsPostInterestPosted = Float.valueOf(decimalFormat.format(accountDetailsPostInterestPosted));
+        assertEquals(interestPosted, accountDetailsPostInterestPosted, "Verifying interest posted");
         LOG.info("-----Post Interest As on Successfully Worked-------");
 
-        //DateFormat transactionFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
+        // DateFormat transactionFormat = new SimpleDateFormat("dd MMMM yyyy",
+        // Locale.US);
         Calendar transactionCalendarDateFormat = Calendar.getInstance();
         transactionCalendarDateFormat.add(Calendar.DAY_OF_MONTH, 0);
         transactionDate.set(Calendar.DAY_OF_MONTH, 22);
         TRANSACTION_DATE = dateFormat.format(transactionDate.getTime());
         if (Calendar.DAY_OF_MONTH >= 22) {
-            this.savingsAccountHelper.postInterestAsOnSavings(savingsId,
-                    TRANSACTION_DATE);
-            accountTransactionDetails = this.savingsAccountHelper
-                    .getSavingsDetails(savingsId);
+            this.savingsAccountHelper.postInterestAsOnSavings(savingsId, TRANSACTION_DATE);
+            accountTransactionDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
             summary = (HashMap) accountTransactionDetails.get("summary");
-            accountDetailsPostInterest = Float.valueOf(summary.get(
-                    "totalInterestPosted").toString());
-
-            nominalAnnualInterest = Float.valueOf(accountDetails.get(
-                    "nominalAnnualInterestRate").toString());
-            interestCalculationDaysInYearType = (HashMap) accountDetails
-                    .get("interestCalculationDaysInYearType");
-            daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get(
-                    "id").toString());
+            accountDetailsPostInterest = Float.valueOf(summary.get("totalInterestPosted").toString());
+
+            nominalAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString());
+            interestCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType");
+            daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString());
             interestRateInFraction = nominalAnnualInterest / 100;
             perDay = (double) 1 / daysInYear;
             interestPerDay = interestRateInFraction * perDay;
@@ -1376,40 +1265,28 @@ public class ClientSavingsIntegrationTest {
              * Apply rounding on interestPosted, actualInterestPosted and verify
              * both are same
              */
-            decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(
-                    Locale.US));
+            decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
             decimalFormat.applyPattern("#.###");
             interestPosted = Float.valueOf(decimalFormat.format(interestPosted));
-            accountDetailsPostInterestPosted = Float.valueOf(
-                    decimalFormat.format(accountDetailsPostInterestPosted));
-            assertEquals(interestPosted, accountDetailsPostInterestPosted,
-                "Verifying interest posted");
+            accountDetailsPostInterestPosted = Float.valueOf(decimalFormat.format(accountDetailsPostInterestPosted));
+            assertEquals(interestPosted, accountDetailsPostInterestPosted, "Verifying interest posted");
             LOG.info("-----Post Interest As on Successfully Worked----------");
         }
-        DateFormat lastTransactionDateFormat = new SimpleDateFormat(
-                "dd MMMM yyyy", Locale.US);
+        DateFormat lastTransactionDateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
         Calendar postedLastDate = Calendar.getInstance();
-        int numberOfDateOfMonth = postedLastDate
-                .getActualMaximum(Calendar.DAY_OF_MONTH);
-        TRANSACTION_DATE = lastTransactionDateFormat.format(transactionDate
-                .getTime());
+        int numberOfDateOfMonth = postedLastDate.getActualMaximum(Calendar.DAY_OF_MONTH);
+        TRANSACTION_DATE = lastTransactionDateFormat.format(transactionDate.getTime());
 
         if (Calendar.DAY_OF_MONTH == numberOfDateOfMonth) {
 
-            this.savingsAccountHelper.postInterestAsOnSavings(savingsId,
-                    TRANSACTION_DATE);
-            accountTransactionDetails = this.savingsAccountHelper
-                    .getSavingsDetails(savingsId);
+            this.savingsAccountHelper.postInterestAsOnSavings(savingsId, TRANSACTION_DATE);
+            accountTransactionDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
             summary = (HashMap) accountTransactionDetails.get("summary");
-            accountDetailsPostInterest = Float.valueOf(summary.get(
-                    "totalInterestPosted").toString());
-
-            nominalAnnualInterest = Float.valueOf(accountDetails.get(
-                    "nominalAnnualInterestRate").toString());
-            interestCalculationDaysInYearType = (HashMap) accountDetails
-                    .get("interestCalculationDaysInYearType");
-            daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get(
-                    "id").toString());
+            accountDetailsPostInterest = Float.valueOf(summary.get("totalInterestPosted").toString());
+
+            nominalAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString());
+            interestCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType");
+            daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString());
             interestRateInFraction = nominalAnnualInterest / 100;
             perDay = (double) 1 / daysInYear;
             interestPerDay = interestRateInFraction * perDay;
@@ -1419,33 +1296,24 @@ public class ClientSavingsIntegrationTest {
              * Apply rounding on interestPosted, actualInterestPosted and verify
              * both are same
              */
-            decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(
-                    Locale.US));
+            decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
             decimalFormat.applyPattern("#.###");
             interestPosted = Float.valueOf(decimalFormat.format(interestPosted));
-            accountDetailsPostInterestPosted = Float.valueOf(
-                    decimalFormat.format(accountDetailsPostInterestPosted));
-            assertEquals(interestPosted, accountDetailsPostInterestPosted,
-                    "Verifying interest posted");
+            accountDetailsPostInterestPosted = Float.valueOf(decimalFormat.format(accountDetailsPostInterestPosted));
+            assertEquals(interestPosted, accountDetailsPostInterestPosted, "Verifying interest posted");
             LOG.info("-----Post Interest As on Successfully Worked----------");
 
         }
         transactionDate.set(Calendar.DAY_OF_MONTH, 1);
         TRANSACTION_DATE = dateFormat.format(transactionDate.getTime());
-        this.savingsAccountHelper.postInterestAsOnSavings(savingsId,
-                TRANSACTION_DATE);
-        accountTransactionDetails = this.savingsAccountHelper
-                .getSavingsDetails(savingsId);
+        this.savingsAccountHelper.postInterestAsOnSavings(savingsId, TRANSACTION_DATE);
+        accountTransactionDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
         summary = (HashMap) accountTransactionDetails.get("summary");
-        accountDetailsPostInterest = Float.valueOf(summary.get(
-                "totalInterestPosted").toString());
-
-        nominalAnnualInterest = Float.valueOf(accountDetails.get(
-                "nominalAnnualInterestRate").toString());
-        interestCalculationDaysInYearType = (HashMap) accountDetails
-                .get("interestCalculationDaysInYearType");
-        daysInYear = Integer.valueOf(interestCalculationDaysInYearType
-                .get("id").toString());
+        accountDetailsPostInterest = Float.valueOf(summary.get("totalInterestPosted").toString());
+
+        nominalAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString());
+        interestCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType");
+        daysInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString());
         interestRateInFraction = nominalAnnualInterest / 100;
         perDay = (double) 1 / daysInYear;
         interestPerDay = interestRateInFraction * perDay;
@@ -1455,14 +1323,11 @@ public class ClientSavingsIntegrationTest {
          * Apply rounding on interestPosted, actualInterestPosted and verify
          * both are same
          */
-        decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(
-                Locale.US));
+        decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
         decimalFormat.applyPattern("#.###");
         interestPosted = Float.valueOf(decimalFormat.format(interestPosted));
-        accountDetailsPostInterestPosted = Float.valueOf(
-                decimalFormat.format(accountDetailsPostInterestPosted));
-        assertEquals(interestPosted,accountDetailsPostInterestPosted,
-                "Verifying interest posted");
+        accountDetailsPostInterestPosted = Float.valueOf(decimalFormat.format(accountDetailsPostInterestPosted));
+        assertEquals(interestPosted, accountDetailsPostInterestPosted, "Verifying interest posted");
         LOG.info("-----Post Interest As on Successfully Worked----------");
     }
 
@@ -1553,7 +1418,7 @@ public class ClientSavingsIntegrationTest {
         HashMap withdrawTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, withdrawTransactionId);
         balance -= Float.valueOf(WITHDRAW_AMOUNT);
         assertEquals(Float.valueOf(WITHDRAW_AMOUNT), withdrawTransaction.get("amount"), "Verifying Withdrawal Amount");
-        assertEquals( balance, withdrawTransaction.get("runningBalance"), "Verifying Balance after Withdrawal");
+        assertEquals(balance, withdrawTransaction.get("runningBalance"), "Verifying Balance after Withdrawal");
 
         /***
          * Perform Deposit transaction on last day of month and verify account
@@ -1608,7 +1473,8 @@ public class ClientSavingsIntegrationTest {
         DecimalFormat decimalFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
         decimalFormat.applyPattern("#.###");
         interestPosted = Float.valueOf(decimalFormat.format(interestPosted));
-        //actualInterestPosted = Float.valueOf(decimalFormat.format(accountDetailsPostInterestPosted));
+        // actualInterestPosted =
+        // Float.valueOf(decimalFormat.format(accountDetailsPostInterestPosted));
         assertEquals(interestPosted, accountDetailsPostInterestPosted, "Verifying interest posted");
         LOG.info("------Post Interest As On After doing a post interest Successfully worked--------");
 
@@ -1623,7 +1489,6 @@ public class ClientSavingsIntegrationTest {
         final String TODYS_POSTING_DATE = dateFormat.format(todysDate.getTime());
         String withdrawBalance = "true";
 
-
         if (TODYS_POSTING_DATE.equalsIgnoreCase(INTEREST_POSTING_DATE)) {
             final SavingsAccountHelper validationErrorHelper = new SavingsAccountHelper(this.requestSpec, responseSpec);
             validationErrorHelper.closeSavingsAccountPostInterestAndGetBackRequiredField(savingsId, withdrawBalance,
@@ -1641,8 +1506,10 @@ public class ClientSavingsIntegrationTest {
     @Test
     public void testPostInterestAsOnSavingsAccountWithOverdraft() {
         this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        //final ResponseSpecification errorResponse = new ResponseSpecBuilder().expectStatusCode(400).build();
-        //final SavingsAccountHelper validationErrorHelper = new SavingsAccountHelper(this.requestSpec, errorResponse);
+        // final ResponseSpecification errorResponse = new
+        // ResponseSpecBuilder().expectStatusCode(400).build();
+        // final SavingsAccountHelper validationErrorHelper = new
+        // SavingsAccountHelper(this.requestSpec, errorResponse);
 
         /***
          * Create a client to apply for savings account (overdraft account).
@@ -1696,9 +1563,9 @@ public class ClientSavingsIntegrationTest {
 
         final String POSTED_TRANSACTION_DATE = dateFormat.format(postedDate.getTime());
         Calendar postedLastDate = Calendar.getInstance();
-        int countOfDate=postedDate.getActualMaximum(Calendar.DAY_OF_MONTH);
-        LOG.info("count Of Date---> {}",countOfDate);
-        postedLastDate.set(Calendar.DAY_OF_MONTH,countOfDate);
+        int countOfDate = postedDate.getActualMaximum(Calendar.DAY_OF_MONTH);
+        LOG.info("count Of Date---> {}", countOfDate);
+        postedLastDate.set(Calendar.DAY_OF_MONTH, countOfDate);
         final String POSTED_LAST_TRANSACTION_DATE = dateFormat.format(postedLastDate.getTime());
 
         /***
@@ -1754,7 +1621,6 @@ public class ClientSavingsIntegrationTest {
         summary = (HashMap) accountDetails.get("summary");
         Float actualInterestPosted = Float.valueOf(summary.get("totalInterestPosted").toString());
 
-
         /***
          * Calculate expected interest to be posted, interest should be posted
          * for one day only because deposit transaction happened on last day of
@@ -1776,33 +1642,31 @@ public class ClientSavingsIntegrationTest {
         decimalFormat.applyPattern("#.###");
         interestPosted = Float.valueOf(decimalFormat.format(interestPosted));
         actualInterestPosted = Float.valueOf(decimalFormat.format(actualInterestPosted));
-       assertEquals(interestPosted, actualInterestPosted, "Verifying interest posted");
-       LOG.info("------Post Interest As On Successful Worked--------");
-
-       this.savingsAccountHelper.postInterestAsOnSavings(savingsId, POSTED_LAST_TRANSACTION_DATE);
-       HashMap accountLastDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
-       summary = (HashMap) accountLastDetails.get("summary");
-       Float actualLastInterestPosted = Float.valueOf(summary.get("totalInterestPosted").toString());
-
-       final Float nominalLastAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString());
-       final HashMap interestLastCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType");
-       final Integer daysLastInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString());
-       double interestLastRateInFraction = nominalAnnualInterest / 100;
-       double perLastDay = (double) 1 / daysInYear;
-       double interestLastPerDay = interestLastRateInFraction * perLastDay;
-       Float interestLastPosted = (float) (interestLastPerDay * balance * 1);
-
-       DecimalFormat decimalLastFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
-       decimalLastFormat.applyPattern("#.###");
-       interestLastPosted = Float.valueOf(decimalLastFormat.format(interestLastPosted));
-       actualInterestPosted = Float.valueOf(decimalFormat.format(actualInterestPosted));
-      assertEquals(interestLastPosted, actualInterestPosted, "Verifying interest posted");
-      LOG.info("------Post Interest As On Successful Worked--------");
+        assertEquals(interestPosted, actualInterestPosted, "Verifying interest posted");
+        LOG.info("------Post Interest As On Successful Worked--------");
+
+        this.savingsAccountHelper.postInterestAsOnSavings(savingsId, POSTED_LAST_TRANSACTION_DATE);
+        HashMap accountLastDetails = this.savingsAccountHelper.getSavingsDetails(savingsId);
+        summary = (HashMap) accountLastDetails.get("summary");
+        Float actualLastInterestPosted = Float.valueOf(summary.get("totalInterestPosted").toString());
+
+        final Float nominalLastAnnualInterest = Float.valueOf(accountDetails.get("nominalAnnualInterestRate").toString());
+        final HashMap interestLastCalculationDaysInYearType = (HashMap) accountDetails.get("interestCalculationDaysInYearType");
+        final Integer daysLastInYear = Integer.valueOf(interestCalculationDaysInYearType.get("id").toString());
+        double interestLastRateInFraction = nominalAnnualInterest / 100;
+        double perLastDay = (double) 1 / daysInYear;
+        double interestLastPerDay = interestLastRateInFraction * perLastDay;
+        Float interestLastPosted = (float) (interestLastPerDay * balance * 1);
+
+        DecimalFormat decimalLastFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US));
+        decimalLastFormat.applyPattern("#.###");
+        interestLastPosted = Float.valueOf(decimalLastFormat.format(interestLastPosted));
+        actualInterestPosted = Float.valueOf(decimalFormat.format(actualInterestPosted));
+        assertEquals(interestLastPosted, actualInterestPosted, "Verifying interest posted");
+        LOG.info("------Post Interest As On Successful Worked--------");
 
     }
 
-
-
     @Test
     public void testSavingsAccount_WITH_WITHHOLD_TAX() {
         this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
@@ -1816,7 +1680,8 @@ public class ClientSavingsIntegrationTest {
         final String percentage = "10";
         final Integer taxGroupId = createTaxGroup(percentage);
         final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft, String.valueOf(taxGroupId), false);
+                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft, String.valueOf(taxGroupId),
+                false);
         Assertions.assertNotNull(savingsProductID);
 
         final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
@@ -1864,7 +1729,8 @@ public class ClientSavingsIntegrationTest {
         final String percentage = "10";
         final Integer taxGroupId = createTaxGroup(percentage);
         final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft, String.valueOf(taxGroupId), false);
+                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft, String.valueOf(taxGroupId),
+                false);
         Assertions.assertNotNull(savingsProductID);
 
         final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
@@ -1914,7 +1780,8 @@ public class ClientSavingsIntegrationTest {
         final String percentage = "10";
         final Integer taxGroupId = createTaxGroup(percentage);
         final Integer savingsProductID = createSavingsProduct(this.requestSpec, this.responseSpec, MINIMUM_OPENING_BALANCE,
-                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft, String.valueOf(taxGroupId), true);
+                minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft, String.valueOf(taxGroupId),
+                true);
         Assertions.assertNotNull(savingsProductID);
 
         final Integer savingsChargeId = ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
@@ -1923,8 +1790,9 @@ public class ClientSavingsIntegrationTest {
 
         ArrayList<Integer> savingsList = new ArrayList<>();
 
-        for(int i=0; i< 5; i++){
-            final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
+        for (int i = 0; i < 5; i++) {
+            final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID,
+                    ACCOUNT_TYPE_INDIVIDUAL);
             Assertions.assertNotNull(savingsProductID);
 
             HashMap modifications = this.savingsAccountHelper.updateSavingsAccount(clientID, savingsProductID, savingsId,
@@ -1958,7 +1826,7 @@ public class ClientSavingsIntegrationTest {
 
         final DateTimeFormatter formatter = DateTimeFormat.forPattern("dd MMMM yyyy");
         LocalDate transactionDate = new LocalDate();
-        for(int i=0; i< 4; i++){
+        for (int i = 0; i < 4; i++) {
             String TRANSACTION_DATE = formatter.print(transactionDate);
             Integer depositTransactionId = (Integer) this.savingsAccountHelper.depositToSavingsAccount(savingsList.get(i), DEPOSIT_AMOUNT,
                     TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
@@ -1968,7 +1836,7 @@ public class ClientSavingsIntegrationTest {
         SchedulerJobHelper jobHelper = new SchedulerJobHelper(this.requestSpec);
         jobHelper.executeAndAwaitJob("Update Savings Dormant Accounts");
 
-        //VERIFY WITHIN PROVIDED RANGE DOESN'T INACTIVATE
+        // VERIFY WITHIN PROVIDED RANGE DOESN'T INACTIVATE
         savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(0));
         SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
         savingsStatusHashMap = SavingsStatusChecker.getSubStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(0));
@@ -1979,8 +1847,7 @@ public class ClientSavingsIntegrationTest {
         balance -= chargeAmt;
         assertEquals(balance, summary.get("accountBalance"), "Verifying account Balance");
 
-
-        //VERIFY INACTIVE
+        // VERIFY INACTIVE
         savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(1));
         SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
         savingsStatusHashMap = SavingsStatusChecker.getSubStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(1));
@@ -1999,7 +1866,7 @@ public class ClientSavingsIntegrationTest {
         savingsStatusHashMap = SavingsStatusChecker.getSubStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(1));
         SavingsStatusChecker.verifySavingsSubStatusNone(savingsStatusHashMap);
 
-        //VERIFY DORMANT
+        // VERIFY DORMANT
         savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(2));
         SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
         savingsStatusHashMap = SavingsStatusChecker.getSubStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(2));
@@ -2018,7 +1885,7 @@ public class ClientSavingsIntegrationTest {
         savingsStatusHashMap = SavingsStatusChecker.getSubStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(2));
         SavingsStatusChecker.verifySavingsSubStatusNone(savingsStatusHashMap);
 
-        //VERIFY ESCHEAT DUE TO OLD TRANSACTION
+        // VERIFY ESCHEAT DUE TO OLD TRANSACTION
         savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(3));
         SavingsStatusChecker.verifySavingsAccountIsClosed(savingsStatusHashMap);
         savingsStatusHashMap = SavingsStatusChecker.getSubStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(3));
@@ -2026,7 +1893,7 @@ public class ClientSavingsIntegrationTest {
         summary = this.savingsAccountHelper.getSavingsSummary(savingsList.get(3));
         assertEquals(2900f, summary.get("accountBalance"), "Verifying account Balance");
 
-        //VERIFY ESCHEAT DUE NO TRANSACTION FROM ACTIVATION
+        // VERIFY ESCHEAT DUE NO TRANSACTION FROM ACTIVATION
         savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(4));
         SavingsStatusChecker.verifySavingsAccountIsClosed(savingsStatusHashMap);
         savingsStatusHashMap = SavingsStatusChecker.getSubStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(4));
@@ -2034,16 +1901,14 @@ public class ClientSavingsIntegrationTest {
         summary = this.savingsAccountHelper.getSavingsSummary(savingsList.get(4));
         assertEquals(900f, summary.get("accountBalance"), "Verifying account Balance");
 
-        //VERIFY NON ACTIVE ACCOUNTS ARE NOT AFFECTED
+        // VERIFY NON ACTIVE ACCOUNTS ARE NOT AFFECTED
         savingsStatusHashMap = SavingsStatusChecker.getStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(5));
         SavingsStatusChecker.verifySavingsIsPending(savingsStatusHashMap);
         savingsStatusHashMap = SavingsStatusChecker.getSubStatusOfSavings(this.requestSpec, this.responseSpec, savingsList.get(5));
         SavingsStatusChecker.verifySavingsSubStatusNone(savingsStatusHashMap);
 
-
     }
 
-
     private HashMap activateSavingsAccount(final Integer savingsId, final String activationDate) {
         final HashMap status = this.savingsAccountHelper.activateSavingsAccount(savingsId, activationDate);
         return status;
@@ -2066,7 +1931,7 @@ public class ClientSavingsIntegrationTest {
             final String overDraftLimit = "2000.0";
             savingsProductHelper = savingsProductHelper.withOverDraft(overDraftLimit);
         }
-        if(withDormancy){
+        if (withDormancy) {
             savingsProductHelper = savingsProductHelper.withDormancy();
         }
 
@@ -2085,13 +1950,13 @@ public class ClientSavingsIntegrationTest {
         return SavingsProductHelper.createSavingsProduct(savingsProductJSON, requestSpec, responseSpec);
     }
 
-    private Integer createTaxGroup(final String percentage){
+    private Integer createTaxGroup(final String percentage) {
         final Integer liabilityAccountId = null;
-        final Integer taxComponentId = TaxComponentHelper.createTaxComponent(this.requestSpec, this.responseSpec, percentage, liabilityAccountId);
+        final Integer taxComponentId = TaxComponentHelper.createTaxComponent(this.requestSpec, this.responseSpec, percentage,
+                liabilityAccountId);
         return TaxGroupHelper.createTaxGroup(this.requestSpec, this.responseSpec, Arrays.asList(taxComponentId));
     }
 
-
     /*
      * private void verifySavingsInterest(final Object savingsInterest) {
      * LOG.info(
@@ -2218,14 +2083,16 @@ public class ClientSavingsIntegrationTest {
     }
 
     /**
-     * incorrect savings account balance when charge transaction is
-     * reversed during an overdraft recalculate Daily Balances
+     * incorrect savings account balance when charge transaction is reversed
+     * during an overdraft recalculate Daily Balances
      */
 
     @Test
     public void testAccountBalanceAfterTransactionReversal() {
         this.savingsAccountHelper = new SavingsAccountHelper(this.requestSpec, this.responseSpec);
-        //SavingsAccountHelper savingsAccountHelperValidationError = new SavingsAccountHelper(this.requestSpec,new ResponseSpecBuilder().build());
+        // SavingsAccountHelper savingsAccountHelperValidationError = new
+        // SavingsAccountHelper(this.requestSpec,new
+        // ResponseSpecBuilder().build());
 
         final Integer clientID = ClientHelper.createClient(this.requestSpec, this.responseSpec);
         Assertions.assertNotNull(clientID);
@@ -2239,22 +2106,18 @@ public class ClientSavingsIntegrationTest {
                 minBalanceForInterestCalculation, minRequiredBalance, enforceMinRequiredBalance, allowOverdraft);
         Assertions.assertNotNull(savingsProductID);
 
-
         final Integer savingsId = this.savingsAccountHelper.applyForSavingsApplication(clientID, savingsProductID, ACCOUNT_TYPE_INDIVIDUAL);
         Assertions.assertNotNull(savingsId);
 
-
         HashMap savingsStatusHashMap = this.savingsAccountHelper.approveSavings(savingsId);
         SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
 
         savingsStatusHashMap = this.savingsAccountHelper.activateSavings(savingsId);
         SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
 
-
         Integer depositTransactionId = (Integer) this.savingsAccountHelper.depositToSavingsAccount(savingsId, "500",
                 SavingsAccountHelper.TRANSACTION_DATE, CommonConstants.RESPONSE_RESOURCE_ID);
 
-
         String chargeAmount = "300";
         String chargeCurrency = "USD";
 
@@ -2265,14 +2128,13 @@ public class ClientSavingsIntegrationTest {
 
         Integer amount = 300;
 
-
-        final Integer chargeId = this.savingsAccountHelper.addChargesForSavingsWithDueDate(savingsId, savingsChargeId, SavingsAccountHelper.TRANSACTION_DATE,
-                amount);
+        final Integer chargeId = this.savingsAccountHelper.addChargesForSavingsWithDueDate(savingsId, savingsChargeId,
+                SavingsAccountHelper.TRANSACTION_DATE, amount);
 
         Assertions.assertNotNull(chargeId);
 
-        final Integer payChargeId = this.savingsAccountHelper.payCharge(chargeId, savingsId, chargeAmount, SavingsAccountHelper.TRANSACTION_DATE);
-
+        final Integer payChargeId = this.savingsAccountHelper.payCharge(chargeId, savingsId, chargeAmount,
+                SavingsAccountHelper.TRANSACTION_DATE);
 
         final Integer undoSavingsTransaction = this.savingsAccountHelper.undoSavingsAccountTransaction(savingsId, depositTransactionId);
         HashMap reversedDepositTransaction = this.savingsAccountHelper.getSavingsTransaction(savingsId, depositTransactionId);
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientStatusChecker.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientStatusChecker.java
index 1ba5d4f..495a268 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientStatusChecker.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientStatusChecker.java
@@ -25,6 +25,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class ClientStatusChecker {
+
     private final static Logger LOG = LoggerFactory.getLogger(ClientStatusChecker.class);
 
     public static void verifyClientIsActive(final HashMap<String, Object> clientStatusHashMap) {
@@ -32,36 +33,31 @@ public class ClientStatusChecker {
     }
 
     public static void verifyClientClosed(final HashMap<String, Object> clientStatusHashMap) {
-        LOG.info(
-                "\n-------------------------------------- VERIFYING CLIENT IS CLOSED ------------------------------------");
+        LOG.info("\n-------------------------------------- VERIFYING CLIENT IS CLOSED ------------------------------------");
         assertEquals(600, (int) clientStatusHashMap.get("id"));
         LOG.info("Client Status: {} \n", clientStatusHashMap);
     }
 
     public static void verifyClientPending(final HashMap<String, Object> clientStatusHashMap) {
-        LOG.info(
-                "\n-------------------------------------- VERIFYING CLIENT IS PENDING ------------------------------------");
+        LOG.info("\n-------------------------------------- VERIFYING CLIENT IS PENDING ------------------------------------");
         assertEquals(100, (int) clientStatusHashMap.get("id"));
         LOG.info("Client Status: {} \n", clientStatusHashMap);
     }
 
     public static void verifyClientRejected(final HashMap<String, Object> clientStatusHashMap) {
-        LOG.info(
-                "\n-------------------------------------- VERIFYING CLIENT IS REJECTED ------------------------------------");
+        LOG.info("\n-------------------------------------- VERIFYING CLIENT IS REJECTED ------------------------------------");
         assertEquals(700, (int) clientStatusHashMap.get("id"));
         LOG.info("Client Status: {} \n", clientStatusHashMap);
     }
 
     public static void verifyClientActiavted(final HashMap<String, Object> clientStatusHashMap) {
-        LOG.info(
-                "\n-------------------------------------- VERIFYING CLIENT IS ACTIVATED ------------------------------------");
+        LOG.info("\n-------------------------------------- VERIFYING CLIENT IS ACTIVATED ------------------------------------");
         assertEquals(300, (int) clientStatusHashMap.get("id"));
         LOG.info("Client Status: {} \n", clientStatusHashMap);
     }
 
     public static void verifyClientWithdrawn(final HashMap<String, Object> clientStatusHashMap) {
-        LOG.info(
-                "\n-------------------------------------- VERIFYING CLIENT IS WITHDRAWN ------------------------------------");
+        LOG.info("\n-------------------------------------- VERIFYING CLIENT IS WITHDRAWN ------------------------------------");
         assertEquals(800, (int) clientStatusHashMap.get("id"));
         LOG.info("Client Status: {} \n", clientStatusHashMap);
     }
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientUndoRejectAndWithdrawalIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientUndoRejectAndWithdrawalIntegrationTest.java
index 1cbcc05..cd61a82 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientUndoRejectAndWithdrawalIntegrationTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ClientUndoRejectAndWithdrawalIntegrationTest.java
@@ -53,8 +53,7 @@ public class ClientUndoRejectAndWithdrawalIntegrationTest {
     public void setup() {
         Utils.initializeRESTAssured();
         this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization",
-                "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
+        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
         this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
 
         this.clientHelper = new ClientHelper(this.requestSpec, this.responseSpec);
@@ -69,8 +68,7 @@ public class ClientUndoRejectAndWithdrawalIntegrationTest {
         Assertions.assertNotNull(clientId);
 
         // GET CLIENT STATUS
-        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec,
-                String.valueOf(clientId));
+        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId));
 
         ClientStatusChecker.verifyClientPending(status);
 
@@ -93,8 +91,7 @@ public class ClientUndoRejectAndWithdrawalIntegrationTest {
         Assertions.assertNotNull(clientId);
 
         // GET CLIENT STATUS
-        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec,
-                String.valueOf(clientId));
+        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId));
 
         ClientStatusChecker.verifyClientPending(status);
 
@@ -122,8 +119,7 @@ public class ClientUndoRejectAndWithdrawalIntegrationTest {
         Assertions.assertNotNull(clientId);
 
         // GET CLIENT STATUS
-        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec,
-                String.valueOf(clientId));
+        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId));
         ClientStatusChecker.verifyClientPending(status);
 
         DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
@@ -152,8 +148,7 @@ public class ClientUndoRejectAndWithdrawalIntegrationTest {
         Assertions.assertNotNull(clientId);
 
         // GET CLIENT STATUS
-        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec,
-                String.valueOf(clientId));
+        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId));
 
         ClientStatusChecker.verifyClientPending(status);
 
@@ -182,8 +177,7 @@ public class ClientUndoRejectAndWithdrawalIntegrationTest {
         Assertions.assertNotNull(clientId);
 
         // GET CLIENT STATUS
-        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec,
-                String.valueOf(clientId));
+        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId));
 
         ClientStatusChecker.verifyClientPending(status);
 
@@ -207,8 +201,7 @@ public class ClientUndoRejectAndWithdrawalIntegrationTest {
         Assertions.assertNotNull(clientId);
 
         // GET CLIENT STATUS
-        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec,
-                String.valueOf(clientId));
+        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId));
 
         ClientStatusChecker.verifyClientPending(status);
 
@@ -236,8 +229,7 @@ public class ClientUndoRejectAndWithdrawalIntegrationTest {
         Assertions.assertNotNull(clientId);
 
         // GET CLIENT STATUS
-        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec,
-                String.valueOf(clientId));
+        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId));
 
         DateFormat dateFormat = new SimpleDateFormat("dd MMMM yyyy", Locale.US);
         Calendar todaysDate = Calendar.getInstance();
@@ -265,8 +257,7 @@ public class ClientUndoRejectAndWithdrawalIntegrationTest {
         Assertions.assertNotNull(clientId);
 
         // GET CLIENT STATUS
-        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec,
-                String.valueOf(clientId));
+        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId));
 
         ClientStatusChecker.verifyClientPending(status);
 
@@ -297,16 +288,14 @@ public class ClientUndoRejectAndWithdrawalIntegrationTest {
         final Integer clientId = ClientHelper.createClientPending(this.requestSpec, this.responseSpec);
         Assertions.assertNotNull(clientId);
         // GET CLIENT STATUS
-        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec,
-                String.valueOf(clientId));
+        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId));
         ClientStatusChecker.verifyClientPending(status);
 
         status = this.clientHelper.withdrawClient(clientId);
         ClientStatusChecker.verifyClientWithdrawn(status);
         status = this.clientHelper.undoWithdrawn(clientId);
         ClientStatusChecker.verifyClientPending(status);
-        ArrayList<HashMap<String, Object>> clientErrorData = validationErrorHelper.activateClient(clientId,
-                CommonConstants.RESPONSE_ERROR);
+        ArrayList<HashMap<String, Object>> clientErrorData = validationErrorHelper.activateClient(clientId, CommonConstants.RESPONSE_ERROR);
         assertEquals("error.msg.clients.submittedOnDate.after.reopened.date",
                 clientErrorData.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
 
@@ -315,15 +304,15 @@ public class ClientUndoRejectAndWithdrawalIntegrationTest {
     @Test
     public void testReopenedDate() {
         final ResponseSpecification errorResponse = new ResponseSpecBuilder().expectStatusCode(400).build();
-        //final ClientHelper validationErrorHelper = new ClientHelper(this.requestSpec, errorResponse);
+        // final ClientHelper validationErrorHelper = new
+        // ClientHelper(this.requestSpec, errorResponse);
 
         // CREATE CLIENT
         this.clientHelper = new ClientHelper(this.requestSpec, this.responseSpec);
         final Integer clientId = ClientHelper.createClientPending(this.requestSpec, this.responseSpec);
         Assertions.assertNotNull(clientId);
         // GET CLIENT STATUS
-        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec,
-                String.valueOf(clientId));
+        HashMap<String, Object> status = ClientHelper.getClientStatus(requestSpec, responseSpec, String.valueOf(clientId));
         ClientStatusChecker.verifyClientPending(status);
 
         status = this.clientHelper.withdrawClient(clientId);
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ConcurrencyIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ConcurrencyIntegrationTest.java
old mode 100755
new mode 100644
index 3fef893..e8a0083
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ConcurrencyIntegrationTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ConcurrencyIntegrationTest.java
@@ -41,6 +41,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class ConcurrencyIntegrationTest {
+
     private final static Logger LOG = LoggerFactory.getLogger(ConcurrencyIntegrationTest.class);
     private ResponseSpecification responseSpec;
     private RequestSpecification requestSpec;
@@ -75,7 +76,7 @@ public class ConcurrencyIntegrationTest {
         date.set(2011, 9, 20);
         Float repaymentAmount = 100.0f;
         for (int i = 0; i < 10; i++) {
-            LOG.info("Starting concurrent transaction number {}" , i);
+            LOG.info("Starting concurrent transaction number {}", i);
             date.add(Calendar.DAY_OF_MONTH, 1);
             repaymentAmount = repaymentAmount + 100;
             Runnable worker = new LoanRepaymentExecutor(loanTransactionHelper, loanID, repaymentAmount, date);
@@ -152,12 +153,13 @@ public class ConcurrencyIntegrationTest {
             try {
                 this.loanTransactionHelper.makeRepayment(repaymentDate, repaymentAmount, loanId);
             } catch (Exception e) {
-                LOG.info("Found an exception {}" , e.getMessage());
-                LOG.info("Details of failed concurrent transaction (date, amount, loanId) are {},{},{}" , repaymentDate, repaymentAmount , loanId);
+                LOG.info("Found an exception {}", e.getMessage());
+                LOG.info("Details of failed concurrent transaction (date, amount, loanId) are {},{},{}", repaymentDate, repaymentAmount,
+                        loanId);
                 throw (e);
             }
-            LOG.info("Details of passed concurrent transaction, details (date, amount, loanId) are {},{},{}" , repaymentDate
-                    , repaymentAmount ,  loanId);
+            LOG.info("Details of passed concurrent transaction, details (date, amount, loanId) are {},{},{}", repaymentDate,
+                    repaymentAmount, loanId);
         }
     }
 
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrenciesTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrenciesTest.java
index dd99365..583de97 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrenciesTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrenciesTest.java
@@ -73,7 +73,6 @@ public class CurrenciesTest {
         currenciestoUpdate.add("USD");
         currenciestoUpdate.add("INR");
 
-
         ArrayList<String> currenciesOutput = CurrenciesHelper.updateSelectedCurrencies(this.requestSpec, this.responseSpec,
                 currenciestoUpdate);
         Assertions.assertNotNull(currenciesOutput);
@@ -92,4 +91,4 @@ public class CurrenciesTest {
 
         Assertions.assertEquals(currenciesBeforeUpdate, currenciesAfterUpdate, "Verifying Do Selected Currencies Match after Updation");
     }
-}
\ No newline at end of file
+}
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrencyIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrencyIntegrationTest.java
index 5c5ffef..b07c50b 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrencyIntegrationTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/CurrencyIntegrationTest.java
@@ -33,7 +33,6 @@ public class CurrencyIntegrationTest {
     private RequestSpecification requestSpec;
     private SavingsAccountHelper savingsAccountHelper;
 
-
     @BeforeEach
     public void setup() {
         Utils.initializeRESTAssured();
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/DisbursalAndRepaymentScheduleTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/DisbursalAndRepaymentScheduleTest.java
index ee46677..a9bac38 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/DisbursalAndRepaymentScheduleTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/DisbursalAndRepaymentScheduleTest.java
@@ -53,362 +53,352 @@ import org.junit.jupiter.api.Test;
 @Disabled
 public class DisbursalAndRepaymentScheduleTest {
 
-        private ResponseSpecification responseSpec;
-        private ResponseSpecification responseSpecForStatusCode403;
-        private ResponseSpecification generalResponseSpec;
-        private RequestSpecification requestSpec;
-        private LoanTransactionHelper loanTransactionHelper;
-        private LoanRescheduleRequestHelper loanRescheduleRequestHelper;
-        private Integer loanRescheduleRequestId;
-        private Integer clientId;
-        private Integer groupId;
-        private Integer groupCalendarId;
-        private Integer loanProductId;
-        private Integer loanId;
-        private final String loanPrincipalAmount = "100000.00";
-        private final String numberOfRepayments = "12";
-        private final String interestRatePerPeriod = "18";
-
-        private final SimpleDateFormat dateFormatterStandard = new SimpleDateFormat("dd MMMM yyyy");
-
-        @BeforeEach
-        public void setup() {
-                Utils.initializeRESTAssured();
+    private ResponseSpecification responseSpec;
+    private ResponseSpecification responseSpecForStatusCode403;
+    private ResponseSpecification generalResponseSpec;
+    private RequestSpecification requestSpec;
+    private LoanTransactionHelper loanTransactionHelper;
+    private LoanRescheduleRequestHelper loanRescheduleRequestHelper;
+    private Integer loanRescheduleRequestId;
+    private Integer clientId;
+    private Integer groupId;
+    private Integer groupCalendarId;
+    private Integer loanProductId;
+    private Integer loanId;
+    private final String loanPrincipalAmount = "100000.00";
+    private final String numberOfRepayments = "12";
+    private final String interestRatePerPeriod = "18";
+
+    private final SimpleDateFormat dateFormatterStandard = new SimpleDateFormat("dd MMMM yyyy");
+
+    @BeforeEach
+    public void setup() {
+        Utils.initializeRESTAssured();
+    }
+
+    @Test
+    public void testRescheduleJLGLoanSynk() {
+        // system.out.println("---------------------------------STARTING
+        // RESCHEDULE JLG
+        // LOAN TEST ------------------------------------------");
+
+        Calendar meetingCalendar = Calendar.getInstance();
+        meetingCalendar.setFirstDayOfWeek(Calendar.MONDAY);
+        meetingCalendar.setTime(new java.util.Date());
+
+        int today = meetingCalendar.get(Calendar.DAY_OF_WEEK);
+        // making sure that the meeting calendar is set for the coming monday.
+        if (today >= Calendar.MONDAY) {
+            meetingCalendar.add(Calendar.DAY_OF_YEAR, +(Calendar.MONDAY - today + 7));
+        } else {
+            meetingCalendar.add(Calendar.DAY_OF_YEAR, +(Calendar.MONDAY - today));
         }
 
-        @Test
-        public void testRescheduleJLGLoanSynk() {
-                // system.out.println("---------------------------------STARTING RESCHEDULE JLG
-                // LOAN TEST ------------------------------------------");
-
-                Calendar meetingCalendar = Calendar.getInstance();
-                meetingCalendar.setFirstDayOfWeek(Calendar.MONDAY);
-                meetingCalendar.setTime(new java.util.Date());
-
-                int today = meetingCalendar.get(Calendar.DAY_OF_WEEK);
-                // making sure that the meeting calendar is set for the coming monday.
-                if (today >= Calendar.MONDAY) {
-                        meetingCalendar.add(Calendar.DAY_OF_YEAR, +(Calendar.MONDAY - today + 7));
-                } else {
-                        meetingCalendar.add(Calendar.DAY_OF_YEAR, +(Calendar.MONDAY - today));
-                }
-
-                Calendar groupMeetingChangeCalendar = (Calendar) meetingCalendar.clone();
-
-                meetingCalendar.add(Calendar.WEEK_OF_YEAR, -3);
-
-                final String groupMeetingDate = this.dateFormatterStandard.format(meetingCalendar.getTime());
-
-                final String disbursalDate = groupMeetingDate; // first meeting date
-                // after group creation
-
-                final String rescheduleSubmittedDate = this.dateFormatterStandard.format(new java.util.Date());
-
-                final String loanType = "jlg";
-                final String rescheduleInterestRate = "28.0";
-                groupMeetingChangeCalendar.add(Calendar.DAY_OF_YEAR, 1);
-                final String groupMeetingNewStartDate = this.dateFormatterStandard
-                                .format(groupMeetingChangeCalendar.getTime());
-                // The date
-                // from
-                // which we
-                // start the
-                // new group
-                // meeting
-                // occasion,
-                // this is a
-                // tuesday.
-                groupMeetingChangeCalendar.add(Calendar.WEEK_OF_YEAR, 2);
-                final String rescheduleDate = this.dateFormatterStandard.format(groupMeetingChangeCalendar.getTime());
-
-                this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-                this.requestSpec.header("Authorization",
-                                "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-                this.requestSpec.header("Fineract-Platform-TenantId", "default");
-                this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-                this.generalResponseSpec = new ResponseSpecBuilder().build();
-                this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-                this.loanRescheduleRequestHelper = new LoanRescheduleRequestHelper(this.requestSpec, this.responseSpec);
-                // system.out.println("---------------------------------CREATING ENTITIES AND
-                // JLG LOAN ------------------------------------------");
-                // create all required entities
-                this.createRequiredEntitiesForJLGLoanSync(groupMeetingDate);
-
-                final String loanApplicationJSON = new LoanApplicationTestBuilder().withPrincipal(loanPrincipalAmount)
-                                .withLoanTermFrequency("24").withLoanTermFrequencyAsWeeks().withNumberOfRepayments("12")
-                                .withRepaymentEveryAfter("2").withRepaymentFrequencyTypeAsMonths()
-                                .withAmortizationTypeAsEqualInstallments().withInterestCalculationPeriodTypeAsDays()
-                                .withInterestRatePerPeriod(interestRatePerPeriod).withRepaymentFrequencyTypeAsWeeks()
-                                .withSubmittedOnDate(disbursalDate).withExpectedDisbursementDate(disbursalDate)
-                                .withLoanType(loanType).withSyncDisbursementWithMeetin()
-                                .withCalendarID(this.groupCalendarId.toString()).build(this.clientId.toString(),
-                                                this.groupId.toString(), this.loanProductId.toString(), null);
-
-                this.loanId = this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-
-                // Test for loan account is created
-                Assertions.assertNotNull(this.loanId);
-                HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec,
-                                this.loanId);
-
-                LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-                // Test for loan account is created, can be approved
-                this.loanTransactionHelper.approveLoan(disbursalDate, this.loanId);
-                loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
-                LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-
-                // Test for loan account approved can be disbursed
-                this.loanTransactionHelper.disburseLoan(disbursalDate, this.loanId);
-                loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
-                LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-                // system.out.println("---------------------------------CHANGING GROUP MEETING
-                // DATE ------------------------------------------");
-                CalendarHelper.updateMeetingCalendarForGroup(this.requestSpec, this.responseSpec, this.groupId,
-                                this.groupCalendarId.toString(), groupMeetingNewStartDate, "2", "2", "2"); // New
-                                                                                                           // meeting
-                                                                                                           // dates
-                                                                                                           // will be
-                                                                                                           // the
-                                                                                                           // tuesday
-                                                                                                           // after the
-                // coming
-                // monday
-
-                ArrayList loanRepaymnetSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(requestSpec,
-                                generalResponseSpec, this.loanId);
-
-                ArrayList dueDateLoanSchedule = (ArrayList) ((HashMap) loanRepaymnetSchedule.get(2)).get("dueDate");
-                Calendar dueDateCalendar = Calendar.getInstance();
-                dueDateCalendar.setFirstDayOfWeek(Calendar.MONDAY);
-                dueDateCalendar.set((Integer) dueDateLoanSchedule.get(0), (Integer) dueDateLoanSchedule.get(1) - 1,
-                                (Integer) dueDateLoanSchedule.get(2));
-                assertEquals(3, dueDateCalendar.get(Calendar.DAY_OF_WEEK),
-                        "AFTER MEETING CHANGE DATE THE NEXT REPAYMENT SHOULD BE ON TUESDAY");
-
-                // system.out.println("---------------------------------CREATING LOAN RESCHEDULE
-                // REQUEST------------------------------------------");
-
-                String requestJSON = new LoanRescheduleRequestTestBuilder().updateGraceOnInterest("2")
-                                .updateGraceOnPrincipal("2").updateNewInterestRate(rescheduleInterestRate)
-                                .updateRescheduleFromDate(rescheduleDate).updateSubmittedOnDate(rescheduleSubmittedDate)
-                                .build(this.loanId.toString());
-
-                this.loanRescheduleRequestId = this.loanRescheduleRequestHelper
-                                .createLoanRescheduleRequest(requestJSON);
-                this.loanRescheduleRequestHelper.verifyCreationOfLoanRescheduleRequest(this.loanRescheduleRequestId);
-
-                loanRepaymnetSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(requestSpec,
-                                generalResponseSpec, this.loanId);
-                dueDateLoanSchedule = (ArrayList) ((HashMap) loanRepaymnetSchedule.get(2)).get("dueDate");
-                dueDateCalendar.set((Integer) dueDateLoanSchedule.get(0), (Integer) dueDateLoanSchedule.get(1) - 1,
-                                (Integer) dueDateLoanSchedule.get(2));
-                assertEquals(3, dueDateCalendar.get(Calendar.DAY_OF_WEEK),
+        Calendar groupMeetingChangeCalendar = (Calendar) meetingCalendar.clone();
+
+        meetingCalendar.add(Calendar.WEEK_OF_YEAR, -3);
+
+        final String groupMeetingDate = this.dateFormatterStandard.format(meetingCalendar.getTime());
+
+        final String disbursalDate = groupMeetingDate; // first meeting date
+        // after group creation
+
+        final String rescheduleSubmittedDate = this.dateFormatterStandard.format(new java.util.Date());
+
+        final String loanType = "jlg";
+        final String rescheduleInterestRate = "28.0";
+        groupMeetingChangeCalendar.add(Calendar.DAY_OF_YEAR, 1);
+        final String groupMeetingNewStartDate = this.dateFormatterStandard.format(groupMeetingChangeCalendar.getTime());
+        // The date
+        // from
+        // which we
+        // start the
+        // new group
+        // meeting
+        // occasion,
+        // this is a
+        // tuesday.
+        groupMeetingChangeCalendar.add(Calendar.WEEK_OF_YEAR, 2);
+        final String rescheduleDate = this.dateFormatterStandard.format(groupMeetingChangeCalendar.getTime());
+
+        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
+        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
+        this.requestSpec.header("Fineract-Platform-TenantId", "default");
+        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
+        this.generalResponseSpec = new ResponseSpecBuilder().build();
+        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
+
+        this.loanRescheduleRequestHelper = new LoanRescheduleRequestHelper(this.requestSpec, this.responseSpec);
+        // system.out.println("---------------------------------CREATING
+        // ENTITIES AND
+        // JLG LOAN ------------------------------------------");
+        // create all required entities
+        this.createRequiredEntitiesForJLGLoanSync(groupMeetingDate);
+
+        final String loanApplicationJSON = new LoanApplicationTestBuilder().withPrincipal(loanPrincipalAmount).withLoanTermFrequency("24")
+                .withLoanTermFrequencyAsWeeks().withNumberOfRepayments("12").withRepaymentEveryAfter("2")
+                .withRepaymentFrequencyTypeAsMonths().withAmortizationTypeAsEqualInstallments().withInterestCalculationPeriodTypeAsDays()
+                .withInterestRatePerPeriod(interestRatePerPeriod).withRepaymentFrequencyTypeAsWeeks().withSubmittedOnDate(disbursalDate)
+                .withExpectedDisbursementDate(disbursalDate).withLoanType(loanType).withSyncDisbursementWithMeetin()
+                .withCalendarID(this.groupCalendarId.toString())
+                .build(this.clientId.toString(), this.groupId.toString(), this.loanProductId.toString(), null);
+
+        this.loanId = this.loanTransactionHelper.getLoanId(loanApplicationJSON);
+
+        // Test for loan account is created
+        Assertions.assertNotNull(this.loanId);
+        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
+
+        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
+
+        // Test for loan account is created, can be approved
+        this.loanTransactionHelper.approveLoan(disbursalDate, this.loanId);
+        loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
+        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
+
+        // Test for loan account approved can be disbursed
+        this.loanTransactionHelper.disburseLoan(disbursalDate, this.loanId);
+        loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
+        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
+
+        // system.out.println("---------------------------------CHANGING GROUP
+        // MEETING
+        // DATE ------------------------------------------");
+        CalendarHelper.updateMeetingCalendarForGroup(this.requestSpec, this.responseSpec, this.groupId, this.groupCalendarId.toString(),
+                groupMeetingNewStartDate, "2", "2", "2"); // New
+                                                          // meeting
+                                                          // dates
+                                                          // will be
+                                                          // the
+                                                          // tuesday
+                                                          // after the
+        // coming
+        // monday
+
+        ArrayList loanRepaymnetSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(requestSpec, generalResponseSpec,
+                this.loanId);
+
+        ArrayList dueDateLoanSchedule = (ArrayList) ((HashMap) loanRepaymnetSchedule.get(2)).get("dueDate");
+        Calendar dueDateCalendar = Calendar.getInstance();
+        dueDateCalendar.setFirstDayOfWeek(Calendar.MONDAY);
+        dueDateCalendar.set((Integer) dueDateLoanSchedule.get(0), (Integer) dueDateLoanSchedule.get(1) - 1,
+                (Integer) dueDateLoanSchedule.get(2));
+        assertEquals(3, dueDateCalendar.get(Calendar.DAY_OF_WEEK), "AFTER MEETING CHANGE DATE THE NEXT REPAYMENT SHOULD BE ON TUESDAY");
+
+        // system.out.println("---------------------------------CREATING LOAN
+        // RESCHEDULE
+        // REQUEST------------------------------------------");
+
+        String requestJSON = new LoanRescheduleRequestTestBuilder().updateGraceOnInterest("2").updateGraceOnPrincipal("2")
+                .updateNewInterestRate(rescheduleInterestRate).updateRescheduleFromDate(rescheduleDate)
+                .updateSubmittedOnDate(rescheduleSubmittedDate).build(this.loanId.toString());
+
+        this.loanRescheduleRequestId = this.loanRescheduleRequestHelper.createLoanRescheduleRequest(requestJSON);
+        this.loanRescheduleRequestHelper.verifyCreationOfLoanRescheduleRequest(this.loanRescheduleRequestId);
+
+        loanRepaymnetSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(requestSpec, generalResponseSpec, this.loanId);
+        dueDateLoanSchedule = (ArrayList) ((HashMap) loanRepaymnetSchedule.get(2)).get("dueDate");
+        dueDateCalendar.set((Integer) dueDateLoanSchedule.get(0), (Integer) dueDateLoanSchedule.get(1) - 1,
+                (Integer) dueDateLoanSchedule.get(2));
+        assertEquals(3, dueDateCalendar.get(Calendar.DAY_OF_WEEK),
                 "AFTER MEETING CHANGE DATE THE NEXT REPAYMENT SHOULD BE ON TUESDAY, EVEN AFTER LOAN RESCHEDULE REQUEST WAS SENT");
 
-                // system.out.println("Successfully created loan reschedule request (ID: " +
-                // this.loanRescheduleRequestId + ")");
-
-                // system.out.println("-----------------------------APPROVING LOAN RESCHEDULE
-                // REQUEST--------------------------");
-
-                requestJSON = new LoanRescheduleRequestTestBuilder().updateSubmittedOnDate(rescheduleSubmittedDate)
-                                .getApproveLoanRescheduleRequestJSON();
-                this.loanRescheduleRequestHelper.approveLoanRescheduleRequest(this.loanRescheduleRequestId,
-                                requestJSON);
-
-                final HashMap response = (HashMap) this.loanRescheduleRequestHelper
-                                .getLoanRescheduleRequest(loanRescheduleRequestId, "statusEnum");
-                assertTrue((Boolean) response.get("approved"));
-
-                loanRepaymnetSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(requestSpec,
-                                generalResponseSpec, this.loanId);
-
-                dueDateLoanSchedule = (ArrayList) ((HashMap) loanRepaymnetSchedule.get(2)).get("dueDate");
-                dueDateCalendar.set((Integer) dueDateLoanSchedule.get(0), (Integer) dueDateLoanSchedule.get(1) - 1,
-                                (Integer) dueDateLoanSchedule.get(2));
-                assertEquals(3, dueDateCalendar.get(Calendar.DAY_OF_WEEK),
-                        "AFTER MEETING CHANGE DATE THE NEXT REPAYMENT SHOULD BE ON TUESDAY, EVEN AFTER RESCHEDULE");
-                // system.out.println("Successfully changed group meeting date (CAELNDAR ID: " +
-                // this.groupCalendarId
-                // + ") and rescheduled loan (RESCHEDULE ID: " + this.loanRescheduleRequestId +
-                // ")");
-
-                this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec,
-                                this.responseSpecForStatusCode403);
+        // system.out.println("Successfully created loan reschedule request (ID:
+        // " +
+        // this.loanRescheduleRequestId + ")");
+
+        // system.out.println("-----------------------------APPROVING LOAN
+        // RESCHEDULE
+        // REQUEST--------------------------");
+
+        requestJSON = new LoanRescheduleRequestTestBuilder().updateSubmittedOnDate(rescheduleSubmittedDate)
+                .getApproveLoanRescheduleRequestJSON();
+        this.loanRescheduleRequestHelper.approveLoanRescheduleRequest(this.loanRescheduleRequestId, requestJSON);
+
+        final HashMap response = (HashMap) this.loanRescheduleRequestHelper.getLoanRescheduleRequest(loanRescheduleRequestId, "statusEnum");
+        assertTrue((Boolean) response.get("approved"));
+
+        loanRepaymnetSchedule = this.loanTransactionHelper.getLoanRepaymentSchedule(requestSpec, generalResponseSpec, this.loanId);
+
+        dueDateLoanSchedule = (ArrayList) ((HashMap) loanRepaymnetSchedule.get(2)).get("dueDate");
+        dueDateCalendar.set((Integer) dueDateLoanSchedule.get(0), (Integer) dueDateLoanSchedule.get(1) - 1,
+                (Integer) dueDateLoanSchedule.get(2));
+        assertEquals(3, dueDateCalendar.get(Calendar.DAY_OF_WEEK),
+                "AFTER MEETING CHANGE DATE THE NEXT REPAYMENT SHOULD BE ON TUESDAY, EVEN AFTER RESCHEDULE");
+        // system.out.println("Successfully changed group meeting date (CAELNDAR
+        // ID: " +
+        // this.groupCalendarId
+        // + ") and rescheduled loan (RESCHEDULE ID: " +
+        // this.loanRescheduleRequestId +
+        // ")");
+
+        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpecForStatusCode403);
+    }
+
+    @Test
+    public void testChangeGroupMeetingMaturedOnDate() {
+        // system.out
+        // .println("---------------------------------STARTING GROUP LOAN
+        // MEETING CHANGE
+        // DATE EXPECTED MATURED
+        // CHANGE------------------------------------------");
+
+        Calendar meetingCalendar = Calendar.getInstance();
+        meetingCalendar.setFirstDayOfWeek(Calendar.MONDAY);
+        meetingCalendar.setTime(new java.util.Date());
+
+        int today = meetingCalendar.get(Calendar.DAY_OF_WEEK);
+        // making sure that the meeting calendar is set for the coming monday.
+        if (today >= Calendar.MONDAY) {
+            meetingCalendar.add(Calendar.DAY_OF_YEAR, +(Calendar.MONDAY - today + 7));
+        } else {
+            meetingCalendar.add(Calendar.DAY_OF_YEAR, +(Calendar.MONDAY - today));
         }
 
-        @Test
-        public void testChangeGroupMeetingMaturedOnDate() {
-                // system.out
-                // .println("---------------------------------STARTING GROUP LOAN MEETING CHANGE
-                // DATE EXPECTED MATURED CHANGE------------------------------------------");
-
-                Calendar meetingCalendar = Calendar.getInstance();
-                meetingCalendar.setFirstDayOfWeek(Calendar.MONDAY);
-                meetingCalendar.setTime(new java.util.Date());
-
-                int today = meetingCalendar.get(Calendar.DAY_OF_WEEK);
-                // making sure that the meeting calendar is set for the coming monday.
-                if (today >= Calendar.MONDAY) {
-                        meetingCalendar.add(Calendar.DAY_OF_YEAR, +(Calendar.MONDAY - today + 7));
-                } else {
-                        meetingCalendar.add(Calendar.DAY_OF_YEAR, +(Calendar.MONDAY - today));
-                }
-
-                Calendar groupMeetingChangeCalendar = (Calendar) meetingCalendar.clone();
-
-                meetingCalendar.add(Calendar.WEEK_OF_YEAR, -3);
-
-                final String groupMeetingDate = this.dateFormatterStandard.format(meetingCalendar.getTime());
-
-                final String disbursalDate = groupMeetingDate; // first meeting date
-                                                               // after group creation
-
-                final String loanType = "jlg";
-                groupMeetingChangeCalendar.add(Calendar.DAY_OF_YEAR, 1);
-                final String groupMeetingNewStartDate = this.dateFormatterStandard
-                                .format(groupMeetingChangeCalendar.getTime());
-                // The date
-                // from
-                // which we
-                // start the
-                // new group
-                // meeting
-                // occasion,
-                // this is a
-                // tuesday.
-
-                this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-                this.requestSpec.header("Authorization",
-                                "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-                this.requestSpec.header("Fineract-Platform-TenantId", "default");
-                this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-                this.generalResponseSpec = new ResponseSpecBuilder().build();
-                this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
-
-                this.loanRescheduleRequestHelper = new LoanRescheduleRequestHelper(this.requestSpec, this.responseSpec);
-                // system.out.println("---------------------------------CREATING ENTITIES AND
-                // JLG LOAN ------------------------------------------");
-                // create all required entities
-                this.createRequiredEntitiesForJLGLoanSync(groupMeetingDate);
-
-                final String loanApplicationJSON = new LoanApplicationTestBuilder().withPrincipal(loanPrincipalAmount)
-                                .withLoanTermFrequency("24").withLoanTermFrequencyAsWeeks().withNumberOfRepayments("12")
-                                .withRepaymentEveryAfter("2").withRepaymentFrequencyTypeAsMonths()
-                                .withAmortizationTypeAsEqualInstallments().withInterestCalculationPeriodTypeAsDays()
-                                .withInterestRatePerPeriod(interestRatePerPeriod).withRepaymentFrequencyTypeAsWeeks()
-                                .withSubmittedOnDate(disbursalDate).withExpectedDisbursementDate(disbursalDate)
-                                .withLoanType(loanType).withSyncDisbursementWithMeetin()
-                                .withCalendarID(this.groupCalendarId.toString()).build(this.clientId.toString(),
-                                                this.groupId.toString(), this.loanProductId.toString(), null);
-
-                this.loanId = this.loanTransactionHelper.getLoanId(loanApplicationJSON);
-
-                // Test for loan account is created
-                Assertions.assertNotNull(this.loanId);
-                HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec,
-                                this.loanId);
-
-                LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
-
-                // Test for loan account is created, can be approved
-                this.loanTransactionHelper.approveLoan(disbursalDate, this.loanId);
-                loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
-                LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
-
-                // Test for loan account approved can be disbursed
-                this.loanTransactionHelper.disburseLoan(disbursalDate, this.loanId);
-                loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
-                LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
-
-                // system.out.println("---------------------------------CHANGING GROUP MEETING
-                // DATE ------------------------------------------");
-                CalendarHelper.updateMeetingCalendarForGroup(this.requestSpec, this.responseSpec, this.groupId,
-                                this.groupCalendarId.toString(), groupMeetingNewStartDate, "2", "2", "2"); // New
-                                                                                                           // meeting
-                                                                                                           // dates
-                                                                                                           // will be
-                                                                                                           // the
-                                                                                                           // tuesday
-                                                                                                           // after the
-                                                                                                           // coming
-                                                                                                           // monday
-
-                Calendar expectedMaturityCalendar = Calendar.getInstance();
-                expectedMaturityCalendar.setFirstDayOfWeek(Calendar.MONDAY);
-                ArrayList expectedMaturityDate = ((ArrayList) ((HashMap) this.loanTransactionHelper
-                                .getLoanDetail(requestSpec, generalResponseSpec, this.loanId, "timeline"))
-                                                .get("expectedMaturityDate"));
-
-                expectedMaturityCalendar.set((Integer) expectedMaturityDate.get(0),
-                                (Integer) expectedMaturityDate.get(1) - 1, (Integer) expectedMaturityDate.get(2));
-
-                assertEquals(3, expectedMaturityCalendar.get(Calendar.DAY_OF_WEEK),
-                        "AFTER MEETING CHANGE DATE THE EXPECTED MATURITY SHOULD BE ON TUESDAY");
-
-                this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec,
-                                this.responseSpecForStatusCode403);
-        }
-
-        /**
-         * entities for jlg loan
-         **/
-        private void createRequiredEntitiesForJLGLoanSync(final String groupActivationDate) {
-                this.createGroupEntityWithCalendar("2", "2", "1", groupActivationDate);// frequency=2:Weekly
-                // , interval=2:
-                // Every two weeks ,
-                // repeatsOnDay=1:Monday
-                // groupActivationDate is decided by the current date
-                this.createClientEntity();
-                this.associateClientToGroup(this.groupId, this.clientId);
-                this.createLoanProductEntity();
-
-        }
-
-        /*
-         * Associate client to the group
-         */
-
-        private void associateClientToGroup(final Integer groupId, final Integer clientId) {
-                GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupId.toString(),
-                                clientId.toString());
-                GroupHelper.verifyGroupMembers(this.requestSpec, this.responseSpec, groupId, clientId);
-        }
-
-        private void createGroupEntityWithCalendar(final String frequency, final String interval,
-                        final String repeatsOnDay, final String groupActivationDate) {
-                this.groupId = GroupHelper.createGroup(this.requestSpec, this.responseSpec, groupActivationDate);
-                GroupHelper.verifyGroupCreatedOnServer(this.requestSpec, this.responseSpec, this.groupId);
-
-                final String startDate = groupActivationDate;
-
-                this.setGroupCalendarId(CalendarHelper.createMeetingCalendarForGroup(this.requestSpec,
-                                this.responseSpec, this.groupId, startDate, frequency, interval, repeatsOnDay));
-        }
-
-        /**
-         * create a new client
-         **/
-        private void createClientEntity() {
-                this.clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
-                ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, this.clientId);
-        }
-
-        /**
-         * create a new loan product
-         **/
-        private void createLoanProductEntity() {
-                final String loanProductJSON = new LoanProductTestBuilder().withPrincipal(loanPrincipalAmount)
-                                .withNumberOfRepayments(numberOfRepayments)
-                                .withinterestRatePerPeriod(interestRatePerPeriod).withInterestRateFrequencyTypeAsYear()
-                                .build(null);
-                this.loanProductId = this.loanTransactionHelper.getLoanProductId(loanProductJSON);
-        }
-
-        public void setGroupCalendarId(Integer groupCalendarId) {
-                this.groupCalendarId = groupCalendarId;
-        }
-}
\ No newline at end of file
+        Calendar groupMeetingChangeCalendar = (Calendar) meetingCalendar.clone();
+
+        meetingCalendar.add(Calendar.WEEK_OF_YEAR, -3);
+
+        final String groupMeetingDate = this.dateFormatterStandard.format(meetingCalendar.getTime());
+
+        final String disbursalDate = groupMeetingDate; // first meeting date
+                                                       // after group creation
+
+        final String loanType = "jlg";
+        groupMeetingChangeCalendar.add(Calendar.DAY_OF_YEAR, 1);
+        final String groupMeetingNewStartDate = this.dateFormatterStandard.format(groupMeetingChangeCalendar.getTime());
+        // The date
+        // from
+        // which we
+        // start the
+        // new group
+        // meeting
+        // occasion,
+        // this is a
+        // tuesday.
+
+        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
+        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
+        this.requestSpec.header("Fineract-Platform-TenantId", "default");
+        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
+        this.generalResponseSpec = new ResponseSpecBuilder().build();
+        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
+
+        this.loanRescheduleRequestHelper = new LoanRescheduleRequestHelper(this.requestSpec, this.responseSpec);
+        // system.out.println("---------------------------------CREATING
+        // ENTITIES AND
+        // JLG LOAN ------------------------------------------");
+        // create all required entities
+        this.createRequiredEntitiesForJLGLoanSync(groupMeetingDate);
+
+        final String loanApplicationJSON = new LoanApplicationTestBuilder().withPrincipal(loanPrincipalAmount).withLoanTermFrequency("24")
+                .withLoanTermFrequencyAsWeeks().withNumberOfRepayments("12").withRepaymentEveryAfter("2")
+                .withRepaymentFrequencyTypeAsMonths().withAmortizationTypeAsEqualInstallments().withInterestCalculationPeriodTypeAsDays()
+                .withInterestRatePerPeriod(interestRatePerPeriod).withRepaymentFrequencyTypeAsWeeks().withSubmittedOnDate(disbursalDate)
+                .withExpectedDisbursementDate(disbursalDate).withLoanType(loanType).withSyncDisbursementWithMeetin()
+                .withCalendarID(this.groupCalendarId.toString())
+                .build(this.clientId.toString(), this.groupId.toString(), this.loanProductId.toString(), null);
+
+        this.loanId = this.loanTransactionHelper.getLoanId(loanApplicationJSON);
+
+        // Test for loan account is created
+        Assertions.assertNotNull(this.loanId);
+        HashMap loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
+
+        LoanStatusChecker.verifyLoanIsPending(loanStatusHashMap);
+
+        // Test for loan account is created, can be approved
+        this.loanTransactionHelper.approveLoan(disbursalDate, this.loanId);
+        loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
+        LoanStatusChecker.verifyLoanIsApproved(loanStatusHashMap);
+
+        // Test for loan account approved can be disbursed
+        this.loanTransactionHelper.disburseLoan(disbursalDate, this.loanId);
+        loanStatusHashMap = LoanStatusChecker.getStatusOfLoan(this.requestSpec, this.responseSpec, this.loanId);
+        LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
+
+        // system.out.println("---------------------------------CHANGING GROUP
+        // MEETING
+        // DATE ------------------------------------------");
+        CalendarHelper.updateMeetingCalendarForGroup(this.requestSpec, this.responseSpec, this.groupId, this.groupCalendarId.toString(),
+                groupMeetingNewStartDate, "2", "2", "2"); // New
+                                                          // meeting
+                                                          // dates
+                                                          // will be
+                                                          // the
+                                                          // tuesday
+                                                          // after the
+                                                          // coming
+                                                          // monday
+
+        Calendar expectedMaturityCalendar = Calendar.getInstance();
+        expectedMaturityCalendar.setFirstDayOfWeek(Calendar.MONDAY);
+        ArrayList expectedMaturityDate = ((ArrayList) ((HashMap) this.loanTransactionHelper.getLoanDetail(requestSpec, generalResponseSpec,
+                this.loanId, "timeline")).get("expectedMaturityDate"));
+
+        expectedMaturityCalendar.set((Integer) expectedMaturityDate.get(0), (Integer) expectedMaturityDate.get(1) - 1,
+                (Integer) expectedMaturityDate.get(2));
+
+        assertEquals(3, expectedMaturityCalendar.get(Calendar.DAY_OF_WEEK),
+                "AFTER MEETING CHANGE DATE THE EXPECTED MATURITY SHOULD BE ON TUESDAY");
+
+        this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpecForStatusCode403);
+    }
+
+    /**
+     * entities for jlg loan
+     **/
+    private void createRequiredEntitiesForJLGLoanSync(final String groupActivationDate) {
+        this.createGroupEntityWithCalendar("2", "2", "1", groupActivationDate);// frequency=2:Weekly
+        // , interval=2:
+        // Every two weeks ,
+        // repeatsOnDay=1:Monday
+        // groupActivationDate is decided by the current date
+        this.createClientEntity();
+        this.associateClientToGroup(this.groupId, this.clientId);
+        this.createLoanProductEntity();
+
+    }
+
+    /*
+     * Associate client to the group
+     */
+
+    private void associateClientToGroup(final Integer groupId, final Integer clientId) {
+        GroupHelper.associateClient(this.requestSpec, this.responseSpec, groupId.toString(), clientId.toString());
+        GroupHelper.verifyGroupMembers(this.requestSpec, this.responseSpec, groupId, clientId);
+    }
+
+    private void createGroupEntityWithCalendar(final String frequency, final String interval, final String repeatsOnDay,
+            final String groupActivationDate) {
+        this.groupId = GroupHelper.createGroup(this.requestSpec, this.responseSpec, groupActivationDate);
+        GroupHelper.verifyGroupCreatedOnServer(this.requestSpec, this.responseSpec, this.groupId);
+
+        final String startDate = groupActivationDate;
+
+        this.setGroupCalendarId(CalendarHelper.createMeetingCalendarForGroup(this.requestSpec, this.responseSpec, this.groupId, startDate,
+                frequency, interval, repeatsOnDay));
+    }
+
+    /**
+     * create a new client
+     **/
+    private void createClientEntity() {
+        this.clientId = ClientHelper.createClient(this.requestSpec, this.responseSpec);
+        ClientHelper.verifyClientCreatedOnServer(this.requestSpec, this.responseSpec, this.clientId);
+    }
+
+    /**
+     * create a new loan product
+     **/
+    private void createLoanProductEntity() {
+        final String loanProductJSON = new LoanProductTestBuilder().withPrincipal(loanPrincipalAmount)
+                .withNumberOfRepayments(numberOfRepayments).withinterestRatePerPeriod(interestRatePerPeriod)
+                .withInterestRateFrequencyTypeAsYear().build(null);
+        this.loanProductId = this.loanTransactionHelper.getLoanProductId(loanProductJSON);
+    }
+
+    public void setGroupCalendarId(Integer groupCalendarId) {
+        this.groupCalendarId = groupCalendarId;
+    }
+}
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ExternalServicesConfigurationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ExternalServicesConfigurationTest.java
index 7322400..14c58c5 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ExternalServicesConfigurationTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ExternalServicesConfigurationTest.java
@@ -35,6 +35,7 @@ import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({ "rawtypes", "unchecked", "static-access" })
 public class ExternalServicesConfigurationTest {
+
     private final static Logger LOG = LoggerFactory.getLogger(ExternalServicesConfigurationTest.class);
     private ResponseSpecification responseSpec;
     private RequestSpecification requestSpec;
@@ -65,11 +66,11 @@ public class ExternalServicesConfigurationTest {
             String value = null;
             if (name.equals(configName)) {
                 value = (String) externalServicesConfig.get(configIndex).get("value");
-                if(value == null){
+                if (value == null) {
                     value = "testnull";
                 }
                 String newValue = "test";
-                LOG.info( "{} : {}",name, value);
+                LOG.info("{} : {}", name, value);
                 HashMap arrayListValue = this.externalServicesConfigurationHelper.updateValueForExternaServicesConfiguration(requestSpec,
                         responseSpec, "S3", name, newValue);
                 Assertions.assertNotNull(arrayListValue.get("value"));
@@ -93,11 +94,11 @@ public class ExternalServicesConfigurationTest {
             String value = null;
             if (name.equals(configName)) {
                 value = (String) externalServicesConfig.get(configIndex).get("value");
-                if(value == null){
+                if (value == null) {
                     value = "testnull";
                 }
                 String newValue = "test";
-                LOG.info("{} : {}",name,value);
+                LOG.info("{} : {}", name, value);
                 HashMap arrayListValue = this.externalServicesConfigurationHelper.updateValueForExternaServicesConfiguration(requestSpec,
                         responseSpec, "SMTP", name, newValue);
                 Assertions.assertNotNull(arrayListValue.get("value"));
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FinancialActivityAccountsTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FinancialActivityAccountsTest.java
old mode 100755
new mode 100644
index bd71de5..453601f
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FinancialActivityAccountsTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FinancialActivityAccountsTest.java
@@ -86,7 +86,8 @@ public class FinancialActivityAccountsTest {
          * Fetch Created Financial Activity to Account Mapping and validate
          * created values
          **/
-        assertFinancialActivityAccountCreation(financialActivityAccountId, LIABILITY_TRANSFER_FINANCIAL_ACTIVITY_ID, liabilityTransferAccount);
+        assertFinancialActivityAccountCreation(financialActivityAccountId, LIABILITY_TRANSFER_FINANCIAL_ACTIVITY_ID,
+                liabilityTransferAccount);
 
         /**
          * Update Existing Financial Activity to Account Mapping and assert
@@ -129,8 +130,8 @@ public class FinancialActivityAccountsTest {
                 invalidFinancialActivityAccountError.get(0).get(CommonConstants.RESPONSE_ERROR_MESSAGE_CODE));
 
         /** Should be able to delete a Financial Activity to Account Mapping **/
-        Integer deletedFinancialActivityAccountId = financialActivityAccountHelper.deleteFinancialActivityAccount(
-                financialActivityAccountId, responseSpec, CommonConstants.RESPONSE_RESOURCE_ID);
+        Integer deletedFinancialActivityAccountId = financialActivityAccountHelper
+                .deleteFinancialActivityAccount(financialActivityAccountId, responseSpec, CommonConstants.RESPONSE_RESOURCE_ID);
         Assertions.assertNotNull(deletedFinancialActivityAccountId);
         Assertions.assertEquals(financialActivityAccountId, deletedFinancialActivityAccountId);
 
@@ -138,7 +139,8 @@ public class FinancialActivityAccountsTest {
         financialActivityAccountHelper.getFinancialActivityAccount(deletedFinancialActivityAccountId, responseSpecForResourceNotFoundError);
     }
 
-    private void assertFinancialActivityAccountCreation(Integer financialActivityAccountId, Integer financialActivityId, Account glAccount) {
+    private void assertFinancialActivityAccountCreation(Integer financialActivityAccountId, Integer financialActivityId,
+            Account glAccount) {
         HashMap mappingDetails = financialActivityAccountHelper.getFinancialActivityAccount(financialActivityAccountId, responseSpec);
         Assertions.assertEquals(financialActivityId, ((HashMap) mappingDetails.get("financialActivityData")).get("id"));
         Assertions.assertEquals(glAccount.getAccountID(), ((HashMap) mappingDetails.get("glAccountData")).get("id"));
@@ -152,8 +154,8 @@ public class FinancialActivityAccountsTest {
         List<HashMap> financialActivities = this.financialActivityAccountHelper.getAllFinancialActivityAccounts(this.responseSpec);
         for (HashMap financialActivity : financialActivities) {
             Integer financialActivityAccountId = (Integer) financialActivity.get("id");
-            Integer deletedFinancialActivityAccountId = this.financialActivityAccountHelper.deleteFinancialActivityAccount(
-                    financialActivityAccountId, this.responseSpec, CommonConstants.RESPONSE_RESOURCE_ID);
+            Integer deletedFinancialActivityAccountId = this.financialActivityAccountHelper
+                    .deleteFinancialActivityAccount(financialActivityAccountId, this.responseSpec, CommonConstants.RESPONSE_RESOURCE_ID);
             Assertions.assertNotNull(deletedFinancialActivityAccountId);
             Assertions.assertEquals(financialActivityAccountId, deletedFinancialActivityAccountId);
         }
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FixedDepositTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FixedDepositTest.java
index 3cf612a..f6b640b 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FixedDepositTest.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/FixedDepositTest.java
@@ -65,6 +65,7 @@ import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({ "unused", "unchecked", "rawtypes", "static-access" })
 public class FixedDepositTest {
+
     private final static Logger LOG = LoggerFactory.getLogger(FixedDepositTest.class);
     private ResponseSpecification responseSpec;
     private RequestSpecification requestSpec;
@@ -100,9 +101,12 @@ public class FixedDepositTest {
     public static final Integer BIANNULLY_INTERVAL = 6;
     public static final Integer ANNUL_INTERVAL = 12;
 
-    // TODO Given the difference in calculation methods in test vs application, the exact values
-    // returned may differ enough to cause differences in rounding. Given this, we only compare the full
-    // digits. A proper solution would be to implement the exact interest calculation in this test,
+    // TODO Given the difference in calculation methods in test vs application,
+    // the exact values
+    // returned may differ enough to cause differences in rounding. Given this,
+    // we only compare the full
+    // digits. A proper solution would be to implement the exact interest
+    // calculation in this test,
     // and then to compare the exact results
 
     @BeforeEach
@@ -173,8 +177,8 @@ public class FixedDepositTest {
         /***
          * Apply for FD account with created product and verify status
          */
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                WHOLE_TERM);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, WHOLE_TERM);
         Assertions.assertNotNull(fixedDepositAccountId);
 
         HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
@@ -229,8 +233,7 @@ public class FixedDepositTest {
         this.journalEntryHelper.checkJournalEntryForAssetAccount(expenseAccount, INTEREST_POSTED_DATE, expenseAccountEntry);
         this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, INTEREST_POSTED_DATE, liablilityAccountEntry);
 
-        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId,
-                CLOSED_ON_DATE);
+        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId, CLOSED_ON_DATE);
 
         Integer prematureClosureTransactionId = (Integer) this.fixedDepositAccountHelper.prematureCloseForFixedDeposit(
                 fixedDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_WITHDRAW_DEPOSIT, null, CommonConstants.RESPONSE_RESOURCE_ID);
@@ -240,21 +243,19 @@ public class FixedDepositTest {
                 this.responseSpec, fixedDepositAccountId.toString());
         FixedDepositAccountStatusChecker.verifyFixedDepositAccountIsPrematureClosed(fixedDepositAccountStatusHashMap);
 
-
         /***
          * Verify journal entry transactions for preclosure transaction
          */
         HashMap accountDetails = this.fixedDepositAccountHelper.getFixedDepositAccountById(this.requestSpec, this.responseSpec,
                 fixedDepositAccountId);
         Float maturityAmount = Float.valueOf(accountDetails.get("maturityAmount").toString());
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, CLOSED_ON_DATE, new JournalEntry(maturityAmount,
-                JournalEntry.TransactionType.CREDIT));
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, CLOSED_ON_DATE, new JournalEntry(maturityAmount,
-                JournalEntry.TransactionType.DEBIT));
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, CLOSED_ON_DATE,
+                new JournalEntry(maturityAmount, JournalEntry.TransactionType.CREDIT));
+        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, CLOSED_ON_DATE,
+                new JournalEntry(maturityAmount, JournalEntry.TransactionType.DEBIT));
 
     }
 
-
     @Test
     public void testFixedDepositAccountWithPrematureClosureTypeWithdrawal_WITH_HOLD_TAX() {
         this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
@@ -367,8 +368,7 @@ public class FixedDepositTest {
         this.journalEntryHelper.checkJournalEntryForAssetAccount(expenseAccount, INTEREST_POSTED_DATE, expenseAccountEntry);
         this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, INTEREST_POSTED_DATE, liablilityAccountEntry);
 
-        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId,
-                CLOSED_ON_DATE);
+        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId, CLOSED_ON_DATE);
 
         Integer prematureClosureTransactionId = (Integer) this.fixedDepositAccountHelper.prematureCloseForFixedDeposit(
                 fixedDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_WITHDRAW_DEPOSIT, null, CommonConstants.RESPONSE_RESOURCE_ID);
@@ -389,16 +389,15 @@ public class FixedDepositTest {
         Assertions.assertNotNull(summary.get("totalWithholdTax"));
         Float withHoldTax = (Float) summary.get("totalWithholdTax");
 
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, CLOSED_ON_DATE, new JournalEntry(maturityAmount,
-                JournalEntry.TransactionType.CREDIT));
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, CLOSED_ON_DATE, new JournalEntry(maturityAmount,
-                JournalEntry.TransactionType.DEBIT));
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccountForTax, CLOSED_ON_DATE, new JournalEntry(withHoldTax,
-                JournalEntry.TransactionType.CREDIT));
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(assetAccount, CLOSED_ON_DATE,
+                new JournalEntry(maturityAmount, JournalEntry.TransactionType.CREDIT));
+        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, CLOSED_ON_DATE,
+                new JournalEntry(maturityAmount, JournalEntry.TransactionType.DEBIT));
+        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccountForTax, CLOSED_ON_DATE,
+                new JournalEntry(withHoldTax, JournalEntry.TransactionType.CREDIT));
 
     }
 
-
     @Test
     public void testFixedDepositAccountClosureTypeWithdrawal_WITH_HOLD_TAX() throws InterruptedException {
         this.fixedDepositProductHelper = new FixedDepositProductHelper(this.requestSpec, this.responseSpec);
@@ -508,7 +507,7 @@ public class FixedDepositTest {
          * FD account verify whether account is matured
          */
 
-        SchedulerJobHelper schedulerJobHelper =  new SchedulerJobHelper(requestSpec);
+        SchedulerJobHelper schedulerJobHelper = new SchedulerJobHelper(requestSpec);
         String JobName = "Update Deposit Accounts Maturity details";
         schedulerJobHelper.executeAndAwaitJob(JobName);
 
@@ -518,9 +517,8 @@ public class FixedDepositTest {
         HashMap summary = (HashMap) accountDetails.get("summary");
         Assertions.assertNotNull(summary.get("totalWithholdTax"));
         Float withHoldTax = (Float) summary.get("totalWithholdTax");
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccountForTax, CLOSED_ON_DATE, new JournalEntry(withHoldTax,
-                JournalEntry.TransactionType.CREDIT));
-
+        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccountForTax, CLOSED_ON_DATE,
+                new JournalEntry(withHoldTax, JournalEntry.TransactionType.CREDIT));
 
         fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
                 this.responseSpec, fixedDepositAccountId.toString());
@@ -528,13 +526,12 @@ public class FixedDepositTest {
 
     }
 
-
     @Test
     public void testFixedDepositAccountWithPeriodInterestRateChart() {
         final String chartToUse = "period";
         final String depositAmount = "10000";
         final String depositPeriod = "12";
-        final Float interestRate = (float)6.0;
+        final Float interestRate = (float) 6.0;
         testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate);
     }
 
@@ -543,7 +540,7 @@ public class FixedDepositTest {
         final String chartToUse = "period";
         final String depositAmount = "2000";
         final String depositPeriod = "12";
-        final Float interestRate = (float)6.0;
+        final Float interestRate = (float) 6.0;
         testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate);
     }
 
@@ -552,7 +549,7 @@ public class FixedDepositTest {
         final String chartToUse = "period";
         final String depositAmount = "10000";
         final String depositPeriod = "18";
-        final Float interestRate = (float)7.0;
+        final Float interestRate = (float) 7.0;
         testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate);
     }
 
@@ -561,7 +558,7 @@ public class FixedDepositTest {
         final String chartToUse = "amount";
         final String depositAmount = "10000";
         final String depositPeriod = "12";
-        final Float interestRate = (float)7.0;
+        final Float interestRate = (float) 7.0;
         testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate);
     }
 
@@ -570,7 +567,7 @@ public class FixedDepositTest {
         final String chartToUse = "amount";
         final String depositAmount = "5000";
         final String depositPeriod = "12";
-        final Float interestRate = (float)5.0;
+        final Float interestRate = (float) 5.0;
         testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate);
     }
 
@@ -579,7 +576,7 @@ public class FixedDepositTest {
         final String chartToUse = "amount";
         final String depositAmount = "10000";
         final String depositPeriod = "26";
-        final Float interestRate = (float)7.0;
+        final Float interestRate = (float) 7.0;
         testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate);
     }
 
@@ -588,7 +585,7 @@ public class FixedDepositTest {
         final String chartToUse = "period_amount";
         final String depositAmount = "10000";
         final String depositPeriod = "12";
-        final Float interestRate = (float)7.0;
+        final Float interestRate = (float) 7.0;
         testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate);
     }
 
@@ -597,7 +594,7 @@ public class FixedDepositTest {
         final String chartToUse = "period_amount";
         final String depositAmount = "5000";
         final String depositPeriod = "12";
-        final Float interestRate = (float)6.0;
+        final Float interestRate = (float) 6.0;
         testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate);
     }
 
@@ -606,7 +603,7 @@ public class FixedDepositTest {
         final String chartToUse = "period_amount";
         final String depositAmount = "10000";
         final String depositPeriod = "20";
-        final Float interestRate = (float)9.0;
+        final Float interestRate = (float) 9.0;
         testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate);
     }
 
@@ -615,7 +612,7 @@ public class FixedDepositTest {
         final String chartToUse = "amount_period";
         final String depositAmount = "10000";
         final String depositPeriod = "12";
-        final Float interestRate = (float)8.0;
+        final Float interestRate = (float) 8.0;
         testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate);
     }
 
@@ -624,7 +621,7 @@ public class FixedDepositTest {
         final String chartToUse = "amount_period";
         final String depositAmount = "5000";
         final String depositPeriod = "12";
-        final Float interestRate = (float)6.0;
+        final Float interestRate = (float) 6.0;
         testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate);
     }
 
@@ -633,7 +630,7 @@ public class FixedDepositTest {
         final String chartToUse = "amount_period";
         final String depositAmount = "10000";
         final String depositPeriod = "6";
-        final Float interestRate = (float)7.0;
+        final Float interestRate = (float) 7.0;
         testFixedDepositAccountForInterestRate(chartToUse, depositAmount, depositPeriod, interestRate);
     }
 
@@ -663,8 +660,8 @@ public class FixedDepositTest {
         /***
          * Apply for FD account with created product and verify status
          */
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                WHOLE_TERM, depositAmount, depositPeriod);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, WHOLE_TERM, depositAmount, depositPeriod);
         Assertions.assertNotNull(fixedDepositAccountId);
 
         HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
@@ -761,8 +758,8 @@ public class FixedDepositTest {
                 incomeAccount, expenseAccount);
         Assertions.assertNotNull(fixedDepositProductId);
 
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                WHOLE_TERM);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, WHOLE_TERM);
         Assertions.assertNotNull(fixedDepositAccountId);
 
         HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
@@ -819,8 +816,7 @@ public class FixedDepositTest {
          */
         Account financialAccount = getMappedLiabilityFinancialAccount();
 
-        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId,
-                CLOSED_ON_DATE);
+        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId, CLOSED_ON_DATE);
 
         /***
          * Preclose the account and verify journal entries
@@ -842,11 +838,13 @@ public class FixedDepositTest {
          * transaction is an account transfer you should get financial account
          * mapping details and verify amounts
          */
-        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, CLOSED_ON_DATE, new JournalEntry(prematurityAmount,
-                JournalEntry.TransactionType.CREDIT), new JournalEntry(prematurityAmount, JournalEntry.TransactionType.DEBIT));
+        this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, CLOSED_ON_DATE,
+                new JournalEntry(prematurityAmount, JournalEntry.TransactionType.CREDIT),
+                new JournalEntry(prematurityAmount, JournalEntry.TransactionType.DEBIT));
 
-        this.journalEntryHelper.checkJournalEntryForAssetAccount(financialAccount, CLOSED_ON_DATE, new JournalEntry(prematurityAmount,
-                JournalEntry.TransactionType.DEBIT), new JournalEntry(prematurityAmount, JournalEntry.TransactionType.CREDIT));
+        this.journalEntryHelper.checkJournalEntryForAssetAccount(financialAccount, CLOSED_ON_DATE,
+                new JournalEntry(prematurityAmount, JournalEntry.TransactionType.DEBIT),
+                new JournalEntry(prematurityAmount, JournalEntry.TransactionType.CREDIT));
 
         HashMap savingsSummaryAfter = this.savingsAccountHelper.getSavingsSummary(savingsId);
         Float balanceAfter = (Float) savingsSummaryAfter.get("accountBalance");
@@ -913,8 +911,8 @@ public class FixedDepositTest {
                 incomeAccount, expenseAccount);
         Assertions.assertNotNull(fixedDepositProductId);
 
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                WHOLE_TERM);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, WHOLE_TERM);
         Assertions.assertNotNull(fixedDepositAccountId);
 
         HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
@@ -957,8 +955,7 @@ public class FixedDepositTest {
         this.journalEntryHelper.checkJournalEntryForAssetAccount(expenseAccount, INTEREST_POSTED_DATE, expenseAccountEntry);
         this.journalEntryHelper.checkJournalEntryForLiabilityAccount(liabilityAccount, INTEREST_POSTED_DATE, liablilityAccountEntry);
 
-        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId,
-                CLOSED_ON_DATE);
+        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId, CLOSED_ON_DATE);
 
         ArrayList<HashMap> errorResponse = (ArrayList<HashMap>) fixedDepositAccountHelperValidationError.prematureCloseForFixedDeposit(
                 fixedDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_REINVEST, null, CommonConstants.RESPONSE_ERROR);
@@ -994,13 +991,12 @@ public class FixedDepositTest {
         Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
         Assertions.assertNotNull(fixedDepositProductId);
 
-        this.fixedDepositProductHelper.retrieveAllFixedDepositProducts(this.requestSpec,
-                this.responseSpec);
-        this.fixedDepositProductHelper.retrieveFixedDepositProductById(this.requestSpec,
-                this.responseSpec, fixedDepositProductId.toString());
+        this.fixedDepositProductHelper.retrieveAllFixedDepositProducts(this.requestSpec, this.responseSpec);
+        this.fixedDepositProductHelper.retrieveFixedDepositProductById(this.requestSpec, this.responseSpec,
+                fixedDepositProductId.toString());
 
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                WHOLE_TERM);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, WHOLE_TERM);
         Assertions.assertNotNull(fixedDepositAccountId);
 
         todaysDate.add(Calendar.DATE, -1);
@@ -1038,8 +1034,8 @@ public class FixedDepositTest {
         Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
         Assertions.assertNotNull(fixedDepositProductId);
 
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                WHOLE_TERM);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, WHOLE_TERM);
         Assertions.assertNotNull(fixedDepositAccountId);
 
         HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
@@ -1081,8 +1077,8 @@ public class FixedDepositTest {
         Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
         Assertions.assertNotNull(fixedDepositProductId);
 
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                WHOLE_TERM);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, WHOLE_TERM);
         Assertions.assertNotNull(fixedDepositAccountId);
 
         HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
@@ -1122,8 +1118,8 @@ public class FixedDepositTest {
         Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
         Assertions.assertNotNull(fixedDepositProductId);
 
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                WHOLE_TERM);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, WHOLE_TERM);
         Assertions.assertNotNull(fixedDepositAccountId);
 
         HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
@@ -1161,8 +1157,8 @@ public class FixedDepositTest {
         Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
         Assertions.assertNotNull(fixedDepositProductId);
 
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                WHOLE_TERM);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, WHOLE_TERM);
         Assertions.assertNotNull(fixedDepositAccountId);
 
         HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
@@ -1204,8 +1200,8 @@ public class FixedDepositTest {
         Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
         Assertions.assertNotNull(fixedDepositProductId);
 
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                WHOLE_TERM);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, WHOLE_TERM);
         Assertions.assertNotNull(fixedDepositAccountId);
 
         HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
@@ -1222,12 +1218,12 @@ public class FixedDepositTest {
         Integer depositPeriod = (Integer) fixedDepositAccountData.get("depositPeriod");
         HashMap daysInYearMap = (HashMap) fixedDepositAccountData.get("interestCalculationDaysInYearType");
         Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, fixedDepositProductId);
+        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper
+                .getInterestRateChartSlabsByProductId(this.requestSpec, this.responseSpec, fixedDepositProductId);
         Float interestRate = this.fixedDepositAccountHelper.getInterestRate(interestRateChartData, depositPeriod);
         double interestRateInFraction = interestRate / 100;
         double perDay = (double) 1 / daysInYear;
-        LOG.info("per day = {}" , perDay);
+        LOG.info("per day = {}", perDay);
         double interestPerDay = interestRateInFraction * perDay;
 
         todaysDate.getActualMaximum(Calendar.DATE);
@@ -1237,7 +1233,7 @@ public class FixedDepositTest {
 
         principal = (float) Math.floor(principal);
         maturityAmount = (float) Math.floor(maturityAmount);
-        LOG.info("{}",principal.toString());
+        LOG.info("{}", principal.toString());
         Assertions.assertEquals(principal, maturityAmount, "Verifying Maturity amount for Fixed Deposit Account");
     }
 
@@ -1272,13 +1268,13 @@ public class FixedDepositTest {
         Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
         Assertions.assertNotNull(fixedDepositProductId);
 
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                WHOLE_TERM);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, WHOLE_TERM);
         Assertions.assertNotNull(fixedDepositAccountId);
 
-        this.fixedDepositAccountHelper.updateInterestCalculationConfigForFixedDeposit(clientId.toString(),
-                fixedDepositProductId.toString(), fixedDepositAccountId.toString(), SUBMITTED_ON_DATE, VALID_FROM, VALID_TO, DAYS_360,
-                WHOLE_TERM, INTEREST_CALCULATION_USING_DAILY_BALANCE, MONTHLY, MONTHLY);
+        this.fixedDepositAccountHelper.updateInterestCalculationConfigForFixedDeposit(clientId.toString(), fixedDepositProductId.toString(),
+                fixedDepositAccountId.toString(), SUBMITTED_ON_DATE, VALID_FROM, VALID_TO, DAYS_360, WHOLE_TERM,
+                INTEREST_CALCULATION_USING_DAILY_BALANCE, MONTHLY, MONTHLY);
 
         HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
                 this.responseSpec, fixedDepositAccountId.toString());
@@ -1294,12 +1290,12 @@ public class FixedDepositTest {
         Integer depositPeriod = (Integer) fixedDepositAccountData.get("depositPeriod");
         HashMap daysInYearMap = (HashMap) fixedDepositAccountData.get("interestCalculationDaysInYearType");
         Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, fixedDepositProductId);
+        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper
+                .getInterestRateChartSlabsByProductId(this.requestSpec, this.responseSpec, fixedDepositProductId);
         Float interestRate = this.fixedDepositAccountHelper.getInterestRate(interestRateChartData, depositPeriod);
         double interestRateInFraction = interestRate / 100;
         double perDay = (double) 1 / daysInYear;
-        LOG.info("per day = {}" , perDay);
+        LOG.info("per day = {}", perDay);
         double interestPerDay = interestRateInFraction * perDay;
 
         todaysDate.getActualMaximum(Calendar.DATE);
@@ -1309,7 +1305,7 @@ public class FixedDepositTest {
 
         principal = (float) Math.floor(principal);
         maturityAmount = (float) Math.floor(maturityAmount);
-        LOG.info("{}",principal.toString());
+        LOG.info("{}", principal.toString());
         Assertions.assertEquals(principal, maturityAmount, "Verifying Maturity amount for Fixed Deposit Account");
     }
 
@@ -1348,8 +1344,8 @@ public class FixedDepositTest {
         Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
         Assertions.assertNotNull(fixedDepositProductId);
 
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                WHOLE_TERM);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, WHOLE_TERM);
         Assertions.assertNotNull(fixedDepositAccountId);
 
         HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
@@ -1369,14 +1365,14 @@ public class FixedDepositTest {
         HashMap daysInYearMap = (HashMap) fixedDepositAccountData.get("interestCalculationDaysInYearType");
         Float preClosurePenalInterestRate = (Float) fixedDepositAccountData.get("preClosurePenalInterest");
         Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, fixedDepositProductId);
+        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper
+                .getInterestRateChartSlabsByProductId(this.requestSpec, this.responseSpec, fixedDepositProductId);
 
         Float interestRate = this.fixedDepositAccountHelper.getInterestRate(interestRateChartData, depositPeriod);
         interestRate -= preClosurePenalInterestRate;
         double interestRateInFraction = interestRate / 100;
         double perDay = (double) 1 / daysInYear;
-        LOG.info("per day = {}" , perDay);
+        LOG.info("per day = {}", perDay);
         double interestPerDay = interestRateInFraction * perDay;
 
         todaysDate.add(Calendar.MONTH, -1);
@@ -1387,15 +1383,14 @@ public class FixedDepositTest {
         Float interestPerMonth = (float) (interestPerDay * principal * daysInMonth);
         principal += interestPerMonth;
         todaysDate.add(Calendar.DATE, daysInMonth);
-        LOG.info("{}",monthDayFormat.format(todaysDate.getTime()));
+        LOG.info("{}", monthDayFormat.format(todaysDate.getTime()));
 
         interestPerMonth = (float) (interestPerDay * principal * currentDate);
-        LOG.info("IPM = {}" , interestPerMonth);
+        LOG.info("IPM = {}", interestPerMonth);
         principal += interestPerMonth;
-        LOG.info("principal = {}" , principal);
+        LOG.info("principal = {}", principal);
 
-        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId,
-                CLOSED_ON_DATE);
+        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId, CLOSED_ON_DATE);
 
         Integer prematureClosureTransactionId = (Integer) this.fixedDepositAccountHelper.prematureCloseForFixedDeposit(
                 fixedDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_WITHDRAW_DEPOSIT, null, CommonConstants.RESPONSE_RESOURCE_ID);
@@ -1450,13 +1445,13 @@ public class FixedDepositTest {
         Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
         Assertions.assertNotNull(fixedDepositProductId);
 
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                WHOLE_TERM);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, WHOLE_TERM);
         Assertions.assertNotNull(fixedDepositAccountId);
 
-        this.fixedDepositAccountHelper.updateInterestCalculationConfigForFixedDeposit(clientId.toString(),
-                fixedDepositProductId.toString(), fixedDepositAccountId.toString(), SUBMITTED_ON_DATE, VALID_FROM, VALID_TO, DAYS_360,
-                WHOLE_TERM, INTEREST_CALCULATION_USING_DAILY_BALANCE, MONTHLY, MONTHLY);
+        this.fixedDepositAccountHelper.updateInterestCalculationConfigForFixedDeposit(clientId.toString(), fixedDepositProductId.toString(),
+                fixedDepositAccountId.toString(), SUBMITTED_ON_DATE, VALID_FROM, VALID_TO, DAYS_360, WHOLE_TERM,
+                INTEREST_CALCULATION_USING_DAILY_BALANCE, MONTHLY, MONTHLY);
 
         HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
                 this.responseSpec, fixedDepositAccountId.toString());
@@ -1475,8 +1470,8 @@ public class FixedDepositTest {
         HashMap daysInYearMap = (HashMap) fixedDepositAccountData.get("interestCalculationDaysInYearType");
         Float preClosurePenalInterestRate = (Float) fixedDepositAccountData.get("preClosurePenalInterest");
         Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, fixedDepositProductId);
+        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper
+                .getInterestRateChartSlabsByProductId(this.requestSpec, this.responseSpec, fixedDepositProductId);
 
         Float interestRate = this.fixedDepositAccountHelper.getInterestRate(interestRateChartData, depositPeriod);
         interestRate -= preClosurePenalInterestRate;
@@ -1493,15 +1488,14 @@ public class FixedDepositTest {
         Float interestPerMonth = (float) (interestPerDay * principal * daysInMonth);
         principal += interestPerMonth;
         todaysDate.add(Calendar.DATE, daysInMonth);
-        LOG.info("{}",monthDayFormat.format(todaysDate.getTime()));
+        LOG.info("{}", monthDayFormat.format(todaysDate.getTime()));
 
         interestPerMonth = (float) (interestPerDay * principal * currentDate);
-        LOG.info("IPM = {}" , interestPerMonth);
+        LOG.info("IPM = {}", interestPerMonth);
         principal += interestPerMonth;
-        LOG.info("principal = {}" , principal);
+        LOG.info("principal = {}", principal);
 
-        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId,
-                CLOSED_ON_DATE);
+        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId, CLOSED_ON_DATE);
 
         Integer prematureClosureTransactionId = (Integer) this.fixedDepositAccountHelper.prematureCloseForFixedDeposit(
                 fixedDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_WITHDRAW_DEPOSIT, null, CommonConstants.RESPONSE_RESOURCE_ID);
@@ -1556,8 +1550,8 @@ public class FixedDepositTest {
         Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
         Assertions.assertNotNull(fixedDepositProductId);
 
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                TILL_PREMATURE_WITHDRAWAL);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, TILL_PREMATURE_WITHDRAWAL);
         Assertions.assertNotNull(fixedDepositAccountId);
 
         HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
@@ -1576,8 +1570,8 @@ public class FixedDepositTest {
         HashMap daysInYearMap = (HashMap) fixedDepositAccountData.get("interestCalculationDaysInYearType");
         Float preClosurePenalInterestRate = (Float) fixedDepositAccountData.get("preClosurePenalInterest");
         Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, fixedDepositProductId);
+        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper
+                .getInterestRateChartSlabsByProductId(this.requestSpec, this.responseSpec, fixedDepositProductId);
 
         Calendar activationDate = Calendar.getInstance();
         activationDate.add(Calendar.MONTH, -1);
@@ -1593,7 +1587,7 @@ public class FixedDepositTest {
         interestRate -= preClosurePenalInterestRate;
         double interestRateInFraction = interestRate / 100;
         double perDay = (double) 1 / daysInYear;
-        LOG.info("per day = {}" , perDay);
+        LOG.info("per day = {}", perDay);
         double interestPerDay = interestRateInFraction * perDay;
 
         todaysDate.add(Calendar.MONTH, -1);
@@ -1604,15 +1598,14 @@ public class FixedDepositTest {
         Float interestPerMonth = (float) (interestPerDay * principal * daysInMonth);
         principal += interestPerMonth;
         todaysDate.add(Calendar.DATE, daysInMonth);
-        LOG.info("{}",monthDayFormat.format(todaysDate.getTime()));
+        LOG.info("{}", monthDayFormat.format(todaysDate.getTime()));
 
         interestPerMonth = (float) (interestPerDay * principal * currentDate);
-        LOG.info("IPM = {}" , interestPerMonth);
+        LOG.info("IPM = {}", interestPerMonth);
         principal += interestPerMonth;
-        LOG.info("principal = {}" , principal);
+        LOG.info("principal = {}", principal);
 
-        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId,
-                CLOSED_ON_DATE);
+        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId, CLOSED_ON_DATE);
 
         Integer prematureClosureTransactionId = (Integer) this.fixedDepositAccountHelper.prematureCloseForFixedDeposit(
                 fixedDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_WITHDRAW_DEPOSIT, null, CommonConstants.RESPONSE_RESOURCE_ID);
@@ -1667,13 +1660,13 @@ public class FixedDepositTest {
         Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
         Assertions.assertNotNull(fixedDepositProductId);
 
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                TILL_PREMATURE_WITHDRAWAL);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, TILL_PREMATURE_WITHDRAWAL);
         Assertions.assertNotNull(fixedDepositAccountId);
 
-        this.fixedDepositAccountHelper.updateInterestCalculationConfigForFixedDeposit(clientId.toString(),
-                fixedDepositProductId.toString(), fixedDepositAccountId.toString(), SUBMITTED_ON_DATE, VALID_FROM, VALID_TO, DAYS_360,
-                TILL_PREMATURE_WITHDRAWAL, INTEREST_CALCULATION_USING_DAILY_BALANCE, MONTHLY, MONTHLY);
+        this.fixedDepositAccountHelper.updateInterestCalculationConfigForFixedDeposit(clientId.toString(), fixedDepositProductId.toString(),
+                fixedDepositAccountId.toString(), SUBMITTED_ON_DATE, VALID_FROM, VALID_TO, DAYS_360, TILL_PREMATURE_WITHDRAWAL,
+                INTEREST_CALCULATION_USING_DAILY_BALANCE, MONTHLY, MONTHLY);
 
         HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
                 this.responseSpec, fixedDepositAccountId.toString());
@@ -1691,8 +1684,8 @@ public class FixedDepositTest {
         HashMap daysInYearMap = (HashMap) fixedDepositAccountData.get("interestCalculationDaysInYearType");
         Float preClosurePenalInterestRate = (Float) fixedDepositAccountData.get("preClosurePenalInterest");
         Integer daysInYear = (Integer) daysInYearMap.get("id");
-        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper.getInterestRateChartSlabsByProductId(
-                this.requestSpec, this.responseSpec, fixedDepositProductId);
+        ArrayList<ArrayList<HashMap>> interestRateChartData = this.fixedDepositProductHelper
+                .getInterestRateChartSlabsByProductId(this.requestSpec, this.responseSpec, fixedDepositProductId);
 
         Calendar activationDate = Calendar.getInstance();
         activationDate.add(Calendar.MONTH, -1);
@@ -1708,7 +1701,7 @@ public class FixedDepositTest {
         interestRate -= preClosurePenalInterestRate;
         double interestRateInFraction = interestRate / 100;
         double perDay = (double) 1 / daysInYear;
-        LOG.info("per day = {}" , perDay);
+        LOG.info("per day = {}", perDay);
         double interestPerDay = interestRateInFraction * perDay;
 
         todaysDate.add(Calendar.MONTH, -1);
@@ -1719,15 +1712,14 @@ public class FixedDepositTest {
         Float interestPerMonth = (float) (interestPerDay * principal * daysInMonth);
         principal += interestPerMonth;
         todaysDate.add(Calendar.DATE, daysInMonth);
-        LOG.info("{}",monthDayFormat.format(todaysDate.getTime()));
+        LOG.info("{}", monthDayFormat.format(todaysDate.getTime()));
 
         interestPerMonth = (float) (interestPerDay * principal * currentDate);
-        LOG.info("IPM = {}" , interestPerMonth);
+        LOG.info("IPM = {}", interestPerMonth);
         principal += interestPerMonth;
-        LOG.info("principal = {}" , principal);
+        LOG.info("principal = {}", principal);
 
-        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId,
-                CLOSED_ON_DATE);
+        this.fixedDepositAccountHelper.calculatePrematureAmountForFixedDeposit(fixedDepositAccountId, CLOSED_ON_DATE);
 
         Integer prematureClosureTransactionId = (Integer) this.fixedDepositAccountHelper.prematureCloseForFixedDeposit(
                 fixedDepositAccountId, CLOSED_ON_DATE, CLOSURE_TYPE_WITHDRAW_DEPOSIT, null, CommonConstants.RESPONSE_RESOURCE_ID);
@@ -1778,13 +1770,13 @@ public class FixedDepositTest {
         Integer fixedDepositProductId = createFixedDepositProduct(VALID_FROM, VALID_TO, accountingRule);
         Assertions.assertNotNull(fixedDepositProductId);
 
-        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(), SUBMITTED_ON_DATE,
-                WHOLE_TERM);
+        Integer fixedDepositAccountId = applyForFixedDepositApplication(clientId.toString(), fixedDepositProductId.toString(),
+                SUBMITTED_ON_DATE, WHOLE_TERM);
         Assertions.assertNotNull(fixedDepositAccountId);
 
-        this.fixedDepositAccountHelper.updateInterestCalculationConfigForFixedDeposit(clientId.toString(),
-                fixedDepositProductId.toString(), fixedDepositAccountId.toString(), SUBMITTED_ON_DATE, VALID_FROM, VALID_TO, DAYS_365,
-                WHOLE_TERM, INTEREST_CALCULATION_USING_DAILY_BALANCE, DAILY, MONTHLY);
+        this.fixedDepositAccountHelper.updateInterestCalculationConfigForFixedDeposit(clientId.toString(), fixedDepositProductId.toString(),
+                fixedDepositAccountId.toString(), SUBMITTED_ON_DATE, VALID_FROM, VALID_TO, DAYS_365, WHOLE_TERM,
+                INTEREST_CALCULATION_USING_DAILY_BALANCE, DAILY, MONTHLY);
 
         HashMap fixedDepositAccountStatusHashMap = FixedDepositAccountStatusChecker.getStatusOfFixedDepositAccount(this.requestSpec,
                 this.responseSpec, fixedDepositAccountId.toString());
@@ -1800,13 +1792,13 @@ public class FixedDepositTest {
         Integer depositPeriod = (Integer) fixedDepositAccountData.get("depositPeriod");
... 177242 lines suppressed ...