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/18 07:31:25 UTC

[fineract] branch develop updated: FINERACT-821 Added and Enforced FinalClass checkstyle

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


The following commit(s) were added to refs/heads/develop by this push:
     new 74b04cd  FINERACT-821 Added and Enforced FinalClass checkstyle
74b04cd is described below

commit 74b04cd4d350e4426cf30cdcc4e47941f7a5136c
Author: thesmallstar <ma...@gmail.com>
AuthorDate: Thu Jun 18 02:38:34 2020 +0530

    FINERACT-821 Added and Enforced FinalClass checkstyle
---
 fineract-provider/config/checkstyle/checkstyle.xml                    | 3 ++-
 .../java/org/apache/fineract/integrationtests/common/BatchHelper.java | 2 +-
 .../org/apache/fineract/integrationtests/common/CenterDomain.java     | 2 +-
 .../org/apache/fineract/integrationtests/common/CurrencyDomain.java   | 2 +-
 .../org/apache/fineract/integrationtests/common/OfficeDomain.java     | 2 +-
 .../apache/fineract/integrationtests/common/PaymentTypeDomain.java    | 2 +-
 .../apache/fineract/integrationtests/common/funds/FundsHelper.java    | 2 +-
 .../accounting/journalentry/data/OfficeOpeningBalancesData.java       | 2 +-
 .../src/main/java/org/apache/fineract/adhocquery/domain/AdHoc.java    | 2 +-
 .../main/java/org/apache/fineract/batch/command/CommandContext.java   | 4 ++--
 .../fineract/infrastructure/bulkimport/data/BulkImportEvent.java      | 2 +-
 .../org/apache/fineract/infrastructure/bulkimport/data/Count.java     | 2 +-
 .../apache/fineract/infrastructure/bulkimport/data/ImportData.java    | 2 +-
 .../java/org/apache/fineract/infrastructure/cache/data/CacheData.java | 2 +-
 .../infrastructure/campaigns/email/data/EmailCampaignData.java        | 2 +-
 .../infrastructure/campaigns/email/data/EmailConfigurationData.java   | 2 +-
 .../campaigns/email/data/EmailConfigurationValidator.java             | 2 +-
 .../fineract/infrastructure/campaigns/email/data/EmailData.java       | 2 +-
 .../campaigns/email/data/EmailMessageWithAttachmentData.java          | 2 +-
 .../campaigns/email/service/EmailMessageJobEmailServiceImpl.java      | 2 +-
 .../fineract/infrastructure/campaigns/sms/data/SmsCampaignData.java   | 2 +-
 .../java/org/apache/fineract/infrastructure/codes/data/CodeData.java  | 2 +-
 .../fineract/infrastructure/core/data/PaginationParameters.java       | 2 +-
 .../creditbureau/data/CreditBureauConfigurationData.java              | 2 +-
 .../fineract/infrastructure/creditbureau/data/CreditBureauData.java   | 2 +-
 .../creditbureau/data/CreditBureauLoanProductMappingData.java         | 2 +-
 .../infrastructure/creditbureau/data/CreditBureauMasterData.java      | 2 +-
 .../infrastructure/creditbureau/data/CreditBureauProduct.java         | 2 +-
 .../creditbureau/data/OrganisationCreditBureauData.java               | 2 +-
 .../fineract/infrastructure/dataqueries/data/DatatableData.java       | 2 +-
 .../apache/fineract/infrastructure/dataqueries/data/ReportData.java   | 2 +-
 .../fineract/infrastructure/dataqueries/data/ReportParameterData.java | 2 +-
 .../infrastructure/dataqueries/data/ReportParameterJoinData.java      | 2 +-
 .../fineract/infrastructure/dataqueries/data/ResultsetRowData.java    | 2 +-
 .../entityaccess/data/FineractEntityToEntityMappingData.java          | 2 +-
 .../infrastructure/entityaccess/domain/FineractEntityAccessType.java  | 2 +-
 .../entityaccess/domain/FineractEntityRelationRepositoryWrapper.java  | 2 +-
 .../infrastructure/entityaccess/domain/FineractEntityType.java        | 2 +-
 .../apache/fineract/infrastructure/gcm/domain/DeviceRegistration.java | 2 +-
 .../fineract/infrastructure/gcm/domain/DeviceRegistrationData.java    | 2 +-
 .../java/org/apache/fineract/infrastructure/hooks/data/Event.java     | 2 +-
 .../java/org/apache/fineract/infrastructure/hooks/data/Field.java     | 2 +-
 .../java/org/apache/fineract/infrastructure/hooks/data/HookData.java  | 2 +-
 .../apache/fineract/infrastructure/hooks/data/HookTemplateData.java   | 2 +-
 .../reportmailingjob/data/ReportMailingJobConfigurationData.java      | 2 +-
 .../infrastructure/reportmailingjob/data/ReportMailingJobData.java    | 2 +-
 .../reportmailingjob/data/ReportMailingJobRunHistoryData.java         | 2 +-
 .../fineract/infrastructure/security/data/PlatformRequestLog.java     | 2 +-
 .../java/org/apache/fineract/infrastructure/sms/data/SmsData.java     | 2 +-
 .../fineract/infrastructure/survey/data/SurveyDataTableData.java      | 2 +-
 .../apache/fineract/interoperation/data/InteropQuoteResponseData.java | 2 +-
 .../interoperation/data/InteropTransactionRequestResponseData.java    | 2 +-
 .../fineract/interoperation/data/InteropTransferResponseData.java     | 2 +-
 .../fineract/organisation/office/data/OfficeTransactionData.java      | 2 +-
 .../organisation/provisioning/data/ProvisioningCriteriaData.java      | 2 +-
 .../fineract/organisation/staff/data/BulkTransferLoanOfficerData.java | 2 +-
 .../java/org/apache/fineract/organisation/staff/data/StaffData.java   | 2 +-
 .../apache/fineract/organisation/teller/domain/CashierTxnType.java    | 2 +-
 .../apache/fineract/portfolio/account/data/AccountTransferData.java   | 2 +-
 .../fineract/portfolio/account/data/StandingInstructionData.java      | 2 +-
 .../org/apache/fineract/portfolio/address/data/ClientAddressData.java | 2 +-
 .../fineract/portfolio/address/data/FieldConfigurationData.java       | 2 +-
 .../org/apache/fineract/portfolio/calendar/data/CalendarData.java     | 2 +-
 .../java/org/apache/fineract/portfolio/charge/data/ChargeData.java    | 2 +-
 .../org/apache/fineract/portfolio/client/data/ClientChargeData.java   | 2 +-
 .../java/org/apache/fineract/portfolio/client/data/ClientData.java    | 2 +-
 .../fineract/portfolio/client/data/ClientFamilyMembersData.java       | 2 +-
 .../apache/fineract/portfolio/client/data/ClientTransactionData.java  | 2 +-
 .../ClientFamilyMemberCommandFromApiJsonDeserializer.java             | 2 +-
 .../org/apache/fineract/portfolio/collateral/data/CollateralData.java | 2 +-
 .../fineract/portfolio/collectionsheet/data/IndividualClientData.java | 2 +-
 .../portfolio/collectionsheet/data/IndividualCollectionSheetData.java | 2 +-
 .../apache/fineract/portfolio/collectionsheet/data/JLGClientData.java | 2 +-
 .../portfolio/collectionsheet/data/JLGCollectionSheetData.java        | 2 +-
 .../apache/fineract/portfolio/collectionsheet/data/JLGGroupData.java  | 2 +-
 .../fineract/portfolio/collectionsheet/data/SavingsDueData.java       | 2 +-
 .../main/java/org/apache/fineract/portfolio/fund/data/FundData.java   | 2 +-
 .../java/org/apache/fineract/portfolio/group/data/CenterData.java     | 2 +-
 .../org/apache/fineract/portfolio/group/data/StaffCenterData.java     | 2 +-
 .../portfolio/interestratechart/data/InterestIncentiveData.java       | 2 +-
 .../portfolio/interestratechart/data/InterestRateChartData.java       | 2 +-
 .../portfolio/interestratechart/data/InterestRateChartSlabData.java   | 2 +-
 .../fineract/portfolio/loanaccount/data/GlimRepaymentTemplate.java    | 2 +-
 .../loanaccount/data/GroupLoanIndividualMonitoringAccountData.java    | 2 +-
 .../apache/fineract/portfolio/loanaccount/data/LoanAccountData.java   | 2 +-
 .../loanaccount/domain/GroupLoanIndividualMonitoringAccount.java      | 2 +-
 .../portfolio/loanaccount/guarantor/data/GuarantorFundingData.java    | 2 +-
 .../loanaccount/guarantor/data/GuarantorTransactionData.java          | 2 +-
 .../fineract/portfolio/loanaccount/guarantor/data/ObligeeData.java    | 2 +-
 .../portfolio/loanaccount/loanschedule/data/LoanScheduleDTO.java      | 2 +-
 .../portfolio/loanaccount/loanschedule/data/LoanScheduleParams.java   | 2 +-
 .../loanaccount/loanschedule/data/LoanSchedulePeriodData.java         | 2 +-
 .../loanaccount/rescheduleloan/data/LoanRescheduleRequestData.java    | 2 +-
 .../fineract/portfolio/loanproduct/data/LoanProductGuaranteeData.java | 2 +-
 .../portfolio/meeting/attendance/data/ClientAttendanceData.java       | 2 +-
 .../java/org/apache/fineract/portfolio/meeting/data/MeetingData.java  | 2 +-
 .../main/java/org/apache/fineract/portfolio/rate/data/RateData.java   | 2 +-
 .../fineract/portfolio/savings/data/ClosingOfSavingsAccounts.java     | 2 +-
 .../portfolio/savings/data/DepositAccountInterestIncentiveData.java   | 2 +-
 .../portfolio/savings/data/DepositAccountInterestRateChartData.java   | 2 +-
 .../savings/data/DepositAccountInterestRateChartSlabData.java         | 2 +-
 .../portfolio/savings/data/DepositAccountOnHoldTransactionData.java   | 2 +-
 .../fineract/portfolio/savings/data/FixedDepositAccountData.java      | 2 +-
 .../fineract/portfolio/savings/data/FixedDepositProductData.java      | 2 +-
 .../savings/data/GroupSavingsIndividualMonitoringAccountData.java     | 2 +-
 .../fineract/portfolio/savings/data/RecurringDepositAccountData.java  | 2 +-
 .../fineract/portfolio/savings/data/RecurringDepositProductData.java  | 2 +-
 .../fineract/portfolio/savings/data/SavingsAccountAnnualFeeData.java  | 2 +-
 .../apache/fineract/portfolio/savings/data/SavingsAccountData.java    | 2 +-
 .../portfolio/savings/data/SavingsAccountTransactionData.java         | 2 +-
 .../org/apache/fineract/portfolio/savings/data/SavingsActivation.java | 2 +-
 .../org/apache/fineract/portfolio/savings/data/SavingsApproval.java   | 2 +-
 .../apache/fineract/portfolio/savings/data/SavingsProductData.java    | 2 +-
 .../portfolio/savings/domain/GroupSavingsIndividualMonitoring.java    | 2 +-
 .../portfolio/savings/domain/interest/AnnualCompoundingPeriod.java    | 2 +-
 .../portfolio/savings/domain/interest/BiAnnualCompoundingPeriod.java  | 2 +-
 .../portfolio/savings/domain/interest/DailyCompoundingPeriod.java     | 2 +-
 .../portfolio/savings/domain/interest/MonthlyCompoundingPeriod.java   | 2 +-
 .../fineract/portfolio/savings/domain/interest/PostingPeriod.java     | 2 +-
 .../portfolio/savings/domain/interest/QuarterlyCompoundingPeriod.java | 2 +-
 .../apache/fineract/portfolio/search/data/AdHocSearchQueryData.java   | 2 +-
 .../portfolio/self/pockets/data/PocketAccountMappingData.java         | 2 +-
 .../fineract/portfolio/shareproducts/data/ShareProductData.java       | 2 +-
 .../java/org/apache/fineract/portfolio/tax/data/TaxComponentData.java | 2 +-
 .../java/org/apache/fineract/portfolio/tax/data/TaxGroupData.java     | 2 +-
 .../src/main/java/org/apache/fineract/spm/util/LookupTableMapper.java | 2 +-
 .../src/main/java/org/apache/fineract/spm/util/ScorecardMapper.java   | 2 +-
 .../src/main/java/org/apache/fineract/spm/util/SurveyMapper.java      | 2 +-
 .../src/main/java/org/apache/fineract/template/data/TemplateData.java | 2 +-
 .../java/org/apache/fineract/useradministration/data/AppUserData.java | 2 +-
 .../org/apache/fineract/useradministration/data/PermissionData.java   | 2 +-
 131 files changed, 133 insertions(+), 132 deletions(-)

diff --git a/fineract-provider/config/checkstyle/checkstyle.xml b/fineract-provider/config/checkstyle/checkstyle.xml
index 9788ab4..3519ad4 100644
--- a/fineract-provider/config/checkstyle/checkstyle.xml
+++ b/fineract-provider/config/checkstyle/checkstyle.xml
@@ -57,6 +57,7 @@
             <property name="ignoreComments" value="false" />
         </module>
         <module name="EqualsHashCode"/>
+        <module name="FinalClass"/>
         <module name="SeparatorWrap">
             <property name="tokens" value="COMMA"/>
             <property name="option" value="EOL"/>
@@ -177,7 +178,7 @@
             <property name="ignoreSetter" value="true" />
             <property name="setterCanReturnItsClass" value="true" />
         </module>
-        <module name="FinalClass"/>
+
         <module name="HideUtilityClassConstructor"/>
 
         < ! - - TODO Checks for Exception Handling Anti-Patterns - - >
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java
index 310157a..8bb347a 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/BatchHelper.java
@@ -40,7 +40,7 @@ import org.slf4j.LoggerFactory;
  *
  * @see org.apache.fineract.integrationtests.BatchApiTest
  */
-public class BatchHelper {
+public final class BatchHelper {
 
     private final static Logger LOG = LoggerFactory.getLogger(BatchHelper.class);
     private static final String BATCH_API_URL = "/fineract-provider/api/v1/batches?" + Utils.TENANT_IDENTIFIER;
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterDomain.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterDomain.java
index 22fc139..87ea6fc 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterDomain.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CenterDomain.java
@@ -28,7 +28,7 @@ public class CenterDomain implements Comparable<CenterDomain> {
 
     private final static Logger LOG = LoggerFactory.getLogger(CenterDomain.class);
 
-    public static class Builder {
+    public final static class Builder {
 
         private final Integer id;
         private final String accountNo;
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrencyDomain.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrencyDomain.java
index a96e12b..a62994e 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrencyDomain.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/CurrencyDomain.java
@@ -22,7 +22,7 @@ import com.google.gson.Gson;
 
 public class CurrencyDomain implements Comparable<CurrencyDomain> {
 
-    public static class Builder {
+    public final static class Builder {
 
         private String code;
         private String name;
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java
index d936d99..a522b46 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java
@@ -23,7 +23,7 @@ import java.util.Arrays;
 
 public class OfficeDomain {
 
-    public static class Builder {
+    public final static class Builder {
 
         private int id;
         private String name;
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeDomain.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeDomain.java
index 7437ec8..df780c2 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeDomain.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/PaymentTypeDomain.java
@@ -18,7 +18,7 @@
  */
 package org.apache.fineract.integrationtests.common;
 
-public class PaymentTypeDomain {
+public final class PaymentTypeDomain {
 
     private Integer id;
     private String name;
diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/funds/FundsHelper.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/funds/FundsHelper.java
index 9ad0aa0..604b088 100644
--- a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/funds/FundsHelper.java
+++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/funds/FundsHelper.java
@@ -22,7 +22,7 @@ import com.google.gson.Gson;
 
 public class FundsHelper {
 
-    public static class Builder {
+    final public static class Builder {
 
         private String name;
         private String externalId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/OfficeOpeningBalancesData.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/OfficeOpeningBalancesData.java
index 9333fce..627dc8f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/OfficeOpeningBalancesData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/OfficeOpeningBalancesData.java
@@ -22,7 +22,7 @@ import java.util.List;
 import org.apache.fineract.accounting.glaccount.data.GLAccountData;
 import org.joda.time.LocalDate;
 
-public class OfficeOpeningBalancesData {
+public final class OfficeOpeningBalancesData {
 
     @SuppressWarnings("unused")
     private final Long officeId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/domain/AdHoc.java b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/domain/AdHoc.java
index 84838f5..2f7782a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/adhocquery/domain/AdHoc.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/adhocquery/domain/AdHoc.java
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.security.utils.SQLInjectionValidator;
 
 @Entity
 @Table(name = "m_adhoc")
-public class AdHoc extends AbstractAuditableCustom {
+public final class AdHoc extends AbstractAuditableCustom {
 
     @Column(name = "name", length = 100)
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandContext.java b/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandContext.java
index 4f2275a..d8a8bb4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandContext.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/batch/command/CommandContext.java
@@ -28,14 +28,14 @@ package org.apache.fineract.batch.command;
  *
  * @see org.apache.fineract.batch.service.BatchApiService
  */
-public class CommandContext {
+public final class CommandContext {
 
     /**
      * Static Builder class to provide a Build method for CommandContext.
      *
      * @author Rishabh Shukla
      */
-    public static class Builder {
+    public final static class Builder {
 
         private String resource;
         private String method;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/data/BulkImportEvent.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/data/BulkImportEvent.java
index 66dd11b..4996ddd 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/data/BulkImportEvent.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/data/BulkImportEvent.java
@@ -21,7 +21,7 @@ package org.apache.fineract.infrastructure.bulkimport.data;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.context.ApplicationEvent;
 
-public class BulkImportEvent extends ApplicationEvent {
+public final class BulkImportEvent extends ApplicationEvent {
 
     private final String tenantIdentifier;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/data/Count.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/data/Count.java
index be73123..696b6fe 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/data/Count.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/data/Count.java
@@ -18,7 +18,7 @@
  */
 package org.apache.fineract.infrastructure.bulkimport.data;
 
-public class Count {
+public final class Count {
 
     private Integer successCount;
     private Integer errorCount;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/data/ImportData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/data/ImportData.java
index 8349930..5f6dae4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/data/ImportData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/data/ImportData.java
@@ -20,7 +20,7 @@ package org.apache.fineract.infrastructure.bulkimport.data;
 
 import org.joda.time.LocalDate;
 
-public class ImportData {
+public final class ImportData {
 
     @SuppressWarnings("unused")
     private Long importId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/cache/data/CacheData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/cache/data/CacheData.java
index 1a4d543..7f0240d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/cache/data/CacheData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/cache/data/CacheData.java
@@ -20,7 +20,7 @@ package org.apache.fineract.infrastructure.cache.data;
 
 import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 
-public class CacheData {
+public final class CacheData {
 
     @SuppressWarnings("unused")
     private final EnumOptionData cacheType;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailCampaignData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailCampaignData.java
index 76984ce..a648805 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailCampaignData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailCampaignData.java
@@ -22,7 +22,7 @@ import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 import org.joda.time.DateTime;
 import org.joda.time.LocalDate;
 
-public class EmailCampaignData {
+public final class EmailCampaignData {
 
     @SuppressWarnings("unused")
     private Long id;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationData.java
index 2cbc66c..c77522a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationData.java
@@ -21,7 +21,7 @@ package org.apache.fineract.infrastructure.campaigns.email.data;
 /**
  * Immutable data object representing an Email configuration.
  */
-public class EmailConfigurationData {
+public final class EmailConfigurationData {
 
     @SuppressWarnings("unused")
     private final Long id;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationValidator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationValidator.java
index 1ce8554..75e7355 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationValidator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailConfigurationValidator.java
@@ -40,7 +40,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class EmailConfigurationValidator {
+public final class EmailConfigurationValidator {
 
     private final FromJsonHelper fromApiJsonHelper;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailData.java
index 54c1d63..2a7b7c5 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailData.java
@@ -26,7 +26,7 @@ import org.joda.time.LocalDate;
 /**
  * Immutable data object representing a SMS message.
  */
-public class EmailData {
+public final class EmailData {
 
     private final Long id;
     private final Long groupId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailMessageWithAttachmentData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailMessageWithAttachmentData.java
index 066cb11..a67ebf2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailMessageWithAttachmentData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/data/EmailMessageWithAttachmentData.java
@@ -21,7 +21,7 @@ package org.apache.fineract.infrastructure.campaigns.email.data;
 import java.io.File;
 import java.util.List;
 
-public class EmailMessageWithAttachmentData {
+public final class EmailMessageWithAttachmentData {
 
     private final String to;
     private final String text;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailMessageJobEmailServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailMessageJobEmailServiceImpl.java
index 9dd8b8d..3b28b45 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailMessageJobEmailServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/service/EmailMessageJobEmailServiceImpl.java
@@ -35,7 +35,7 @@ import org.springframework.mail.javamail.MimeMessageHelper;
 import org.springframework.stereotype.Service;
 
 @Service
-public class EmailMessageJobEmailServiceImpl implements EmailMessageJobEmailService {
+public final class EmailMessageJobEmailServiceImpl implements EmailMessageJobEmailService {
 
     private final static Logger LOG = LoggerFactory.getLogger(EmailMessageJobEmailServiceImpl.class);
     private EmailConfigurationRepository emailConfigurationRepository;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/SmsCampaignData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/SmsCampaignData.java
index d22b14c..6d6e31b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/SmsCampaignData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/data/SmsCampaignData.java
@@ -24,7 +24,7 @@ import org.joda.time.DateTime;
 import org.joda.time.LocalDate;
 
 @SuppressWarnings("unused")
-public class SmsCampaignData {
+public final class SmsCampaignData {
 
     private Long id;
     private final String campaignName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/data/CodeData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/data/CodeData.java
index f1088e8..7ebb89c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/data/CodeData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/data/CodeData.java
@@ -23,7 +23,7 @@ import java.io.Serializable;
 /**
  * Immutable data object representing a code.
  */
-public class CodeData implements Serializable {
+public final class CodeData implements Serializable {
 
     private final Long id;
     @SuppressWarnings("unused")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/PaginationParameters.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/PaginationParameters.java
index f80eaf5..de5915d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/PaginationParameters.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/data/PaginationParameters.java
@@ -25,7 +25,7 @@ import org.apache.commons.lang3.StringUtils;
  * Immutable data object representing pagination parameter values.
  * </p>
  */
-public class PaginationParameters {
+public final class PaginationParameters {
 
     private final boolean paged;
     private final Integer offset;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauConfigurationData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauConfigurationData.java
index a54ea9b..64ef95c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauConfigurationData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauConfigurationData.java
@@ -18,7 +18,7 @@
  */
 package org.apache.fineract.infrastructure.creditbureau.data;
 
-public class CreditBureauConfigurationData {
+public final class CreditBureauConfigurationData {
 
     private final long creditBureauConfigurationId;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauData.java
index 31382af..8d24787 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauData.java
@@ -18,7 +18,7 @@
  */
 package org.apache.fineract.infrastructure.creditbureau.data;
 
-public class CreditBureauData {
+public final class CreditBureauData {
 
     private final long creditBureauId;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauLoanProductMappingData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauLoanProductMappingData.java
index 9eb08ac..41394d7 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauLoanProductMappingData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauLoanProductMappingData.java
@@ -18,7 +18,7 @@
  */
 package org.apache.fineract.infrastructure.creditbureau.data;
 
-public class CreditBureauLoanProductMappingData {
+public final class CreditBureauLoanProductMappingData {
 
     private final long creditbureauLoanProductMappingId;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauMasterData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauMasterData.java
index bef1e61..06dcb37 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauMasterData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauMasterData.java
@@ -18,7 +18,7 @@
  */
 package org.apache.fineract.infrastructure.creditbureau.data;
 
-public class CreditBureauMasterData {
+public final class CreditBureauMasterData {
 
     private final long creditBureauId;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauProduct.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauProduct.java
index c2c42dd..1ebdaf5 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauProduct.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/CreditBureauProduct.java
@@ -18,7 +18,7 @@
  */
 package org.apache.fineract.infrastructure.creditbureau.data;
 
-public class CreditBureauProduct {
+public final class CreditBureauProduct {
 
     private final long creditBureauProductId;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/OrganisationCreditBureauData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/OrganisationCreditBureauData.java
index 409bc0e..beb7b07 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/OrganisationCreditBureauData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/data/OrganisationCreditBureauData.java
@@ -18,7 +18,7 @@
  */
 package org.apache.fineract.infrastructure.creditbureau.data;
 
-public class OrganisationCreditBureauData {
+public final class OrganisationCreditBureauData {
 
     private final long organisationCreditBureauId;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableData.java
index a716f43..fb149ce 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableData.java
@@ -24,7 +24,7 @@ import java.util.List;
 /**
  * Immutable data object representing datatable data.
  */
-public class DatatableData implements Serializable {
+public final class DatatableData implements Serializable {
 
     @SuppressWarnings("unused")
     private final String applicationTableName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportData.java
index d89d26e..eafb5fa 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportData.java
@@ -22,7 +22,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-final public class ReportData {
+public final class ReportData {
 
     @SuppressWarnings("unused")
     private final Long id;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterData.java
index 03fb12e..f07f3b4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterData.java
@@ -19,7 +19,7 @@
 package org.apache.fineract.infrastructure.dataqueries.data;
 
 /* used to show list of parameters used by a report and also for getting a list of parameters available (the reportParameterName is left null */
-final public class ReportParameterData {
+public final class ReportParameterData {
 
     @SuppressWarnings("unused")
     private final Long id;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterJoinData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterJoinData.java
index 08caaa8..144da4e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterJoinData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterJoinData.java
@@ -18,7 +18,7 @@
  */
 package org.apache.fineract.infrastructure.dataqueries.data;
 
-final public class ReportParameterJoinData {
+public final class ReportParameterJoinData {
 
     private final Long reportId;
     private final String reportName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetRowData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetRowData.java
index 452934f..d60252a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetRowData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetRowData.java
@@ -20,7 +20,7 @@ package org.apache.fineract.infrastructure.dataqueries.data;
 
 import java.util.List;
 
-public class ResultsetRowData {
+public final class ResultsetRowData {
 
     private final List<String> row;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityToEntityMappingData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityToEntityMappingData.java
index 85d2712..56d7f1c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityToEntityMappingData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/data/FineractEntityToEntityMappingData.java
@@ -21,7 +21,7 @@ package org.apache.fineract.infrastructure.entityaccess.data;
 import java.io.Serializable;
 import java.util.Date;
 
-public class FineractEntityToEntityMappingData implements Serializable {
+public final class FineractEntityToEntityMappingData implements Serializable {
 
     @SuppressWarnings("unused")
     private Long mapId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccessType.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccessType.java
index 90c531d..55274f0 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccessType.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccessType.java
@@ -18,7 +18,7 @@
  */
 package org.apache.fineract.infrastructure.entityaccess.domain;
 
-public class FineractEntityAccessType {
+public final class FineractEntityAccessType {
 
     private String str;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepositoryWrapper.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepositoryWrapper.java
index b224ec5..5712310 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepositoryWrapper.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelationRepositoryWrapper.java
@@ -23,7 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
-public class FineractEntityRelationRepositoryWrapper {
+public final class FineractEntityRelationRepositoryWrapper {
 
     private final FineractEntityRelationRepository fineractEntityRelationRepository;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityType.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityType.java
index 5797ee0..0193a5e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityType.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityType.java
@@ -18,7 +18,7 @@
  */
 package org.apache.fineract.infrastructure.entityaccess.domain;
 
-public class FineractEntityType {
+public final class FineractEntityType {
 
     private String type;
     private String description;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/DeviceRegistration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/DeviceRegistration.java
index 1b65659..1eb9e51 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/DeviceRegistration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/DeviceRegistration.java
@@ -32,7 +32,7 @@ import org.apache.fineract.portfolio.client.domain.Client;
 
 @Entity
 @Table(name = "client_device_registration")
-public class DeviceRegistration extends AbstractPersistableCustom {
+public final class DeviceRegistration extends AbstractPersistableCustom {
 
     @OneToOne
     @JoinColumn(name = "client_id", nullable = false, unique = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/DeviceRegistrationData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/DeviceRegistrationData.java
index a2334fe..9de71ba 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/DeviceRegistrationData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/gcm/domain/DeviceRegistrationData.java
@@ -21,7 +21,7 @@ package org.apache.fineract.infrastructure.gcm.domain;
 import java.util.Date;
 import org.apache.fineract.portfolio.client.data.ClientData;
 
-public class DeviceRegistrationData {
+public final class DeviceRegistrationData {
 
     public Long id;
     public ClientData clientData;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/Event.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/Event.java
index 5e28c98..bc0a09f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/Event.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/Event.java
@@ -20,7 +20,7 @@ package org.apache.fineract.infrastructure.hooks.data;
 
 import java.io.Serializable;
 
-public class Event implements Serializable {
+public final class Event implements Serializable {
 
     private final String actionName;
     private final String entityName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/Field.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/Field.java
index 40ceb36..ac4603f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/Field.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/Field.java
@@ -21,7 +21,7 @@ package org.apache.fineract.infrastructure.hooks.data;
 import java.io.Serializable;
 
 @SuppressWarnings("unused")
-public class Field implements Serializable {
+public final class Field implements Serializable {
 
     private final String fieldName;
     private final String fieldValue;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/HookData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/HookData.java
index ff0efff..e06e14e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/HookData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/HookData.java
@@ -22,7 +22,7 @@ import java.io.Serializable;
 import java.util.List;
 import org.joda.time.LocalDate;
 
-public class HookData implements Serializable {
+public final class HookData implements Serializable {
 
     private final Long id;
     private final String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/HookTemplateData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/HookTemplateData.java
index ff44ceb..d8ac8e4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/HookTemplateData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/data/HookTemplateData.java
@@ -22,7 +22,7 @@ import java.io.Serializable;
 import java.util.List;
 
 @SuppressWarnings("unused")
-public class HookTemplateData implements Serializable {
+public final class HookTemplateData implements Serializable {
 
     private final Long id;
     private final String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobConfigurationData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobConfigurationData.java
index ecb3d26..16e0144 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobConfigurationData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobConfigurationData.java
@@ -21,7 +21,7 @@ package org.apache.fineract.infrastructure.reportmailingjob.data;
 /**
  * Immutable data object representing report mailing job configuration data.
  **/
-public class ReportMailingJobConfigurationData {
+public final class ReportMailingJobConfigurationData {
 
     private final int id;
     private final String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobData.java
index 2b0a7df..40b58b9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobData.java
@@ -26,7 +26,7 @@ import org.joda.time.DateTime;
 /**
  * Immutable data object representing report mailing job data.
  **/
-public class ReportMailingJobData {
+public final class ReportMailingJobData {
 
     private final Long id;
     private final String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobRunHistoryData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobRunHistoryData.java
index b78e107..d861599 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobRunHistoryData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/data/ReportMailingJobRunHistoryData.java
@@ -23,7 +23,7 @@ import org.joda.time.DateTime;
 /**
  * Immutable data object representing report mailing job run history data.
  **/
-public class ReportMailingJobRunHistoryData {
+public final class ReportMailingJobRunHistoryData {
 
     private final Long id;
     private final Long reportMailingJobId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/PlatformRequestLog.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/PlatformRequestLog.java
index b2ccc06..923f034 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/PlatformRequestLog.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/data/PlatformRequestLog.java
@@ -28,7 +28,7 @@ import org.apache.commons.lang3.time.StopWatch;
  * Immutable data object representing platform API request used for
  * logging/debugging.
  */
-public class PlatformRequestLog {
+public final class PlatformRequestLog {
 
     @SuppressWarnings("unused")
     private final long startTime;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsData.java
index ddc0ad4..dd3b0f6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/data/SmsData.java
@@ -23,7 +23,7 @@ import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 /**
  * Immutable data object representing a SMS message.
  */
-public class SmsData {
+public final class SmsData {
 
     private final Long id;
     private final Long groupId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/data/SurveyDataTableData.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/data/SurveyDataTableData.java
index ce83b48..d20504f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/data/SurveyDataTableData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/data/SurveyDataTableData.java
@@ -20,7 +20,7 @@ package org.apache.fineract.infrastructure.survey.data;
 
 import org.apache.fineract.infrastructure.dataqueries.data.DatatableData;
 
-public class SurveyDataTableData {
+public final class SurveyDataTableData {
 
     @SuppressWarnings("unused")
     private final DatatableData datatableData;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropQuoteResponseData.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropQuoteResponseData.java
index 398ef5e..14148e0 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropQuoteResponseData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropQuoteResponseData.java
@@ -24,7 +24,7 @@ import javax.validation.constraints.NotNull;
 import org.apache.fineract.interoperation.domain.InteropActionState;
 import org.joda.time.LocalDateTime;
 
-public class InteropQuoteResponseData extends InteropResponseData {
+public final class InteropQuoteResponseData extends InteropResponseData {
 
     @NotNull
     private final String quoteCode;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransactionRequestResponseData.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransactionRequestResponseData.java
index df61695..7802f5f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransactionRequestResponseData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransactionRequestResponseData.java
@@ -24,7 +24,7 @@ import javax.validation.constraints.NotNull;
 import org.apache.fineract.interoperation.domain.InteropActionState;
 import org.joda.time.LocalDateTime;
 
-public class InteropTransactionRequestResponseData extends InteropResponseData {
+public final class InteropTransactionRequestResponseData extends InteropResponseData {
 
     @NotNull
     private final String requestCode;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransferResponseData.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransferResponseData.java
index 42f579f..536b308 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransferResponseData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransferResponseData.java
@@ -26,7 +26,7 @@ import javax.validation.constraints.NotNull;
 import org.apache.fineract.interoperation.domain.InteropActionState;
 import org.joda.time.LocalDateTime;
 
-public class InteropTransferResponseData extends InteropResponseData {
+public final class InteropTransferResponseData extends InteropResponseData {
 
     @NotNull
     private final String transferCode;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/data/OfficeTransactionData.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/data/OfficeTransactionData.java
index 9e603e0..3625a6f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/data/OfficeTransactionData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/data/OfficeTransactionData.java
@@ -26,7 +26,7 @@ import org.joda.time.LocalDate;
 /**
  * Immutable data object for office transactions.
  */
-public class OfficeTransactionData {
+public final class OfficeTransactionData {
 
     @SuppressWarnings("unused")
     private final Long id;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaData.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaData.java
index ccf86ed..650983d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCriteriaData.java
@@ -25,7 +25,7 @@ import org.apache.fineract.accounting.glaccount.data.GLAccountData;
 import org.apache.fineract.portfolio.loanproduct.data.LoanProductData;
 
 @SuppressWarnings("unused")
-public class ProvisioningCriteriaData implements Comparable<ProvisioningCriteriaData>, Serializable {
+public final class ProvisioningCriteriaData implements Comparable<ProvisioningCriteriaData>, Serializable {
 
     private final Long criteriaId;
     private final String criteriaName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/data/BulkTransferLoanOfficerData.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/data/BulkTransferLoanOfficerData.java
index b468275..3f065ff 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/data/BulkTransferLoanOfficerData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/data/BulkTransferLoanOfficerData.java
@@ -25,7 +25,7 @@ import org.joda.time.LocalDate;
 /**
  * Immutable data object returned for loan-officer bulk transfer screens.
  */
-public class BulkTransferLoanOfficerData {
+public final class BulkTransferLoanOfficerData {
 
     @SuppressWarnings("unused")
     private final Long officeId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/data/StaffData.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/data/StaffData.java
index 017efda..defdb61 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/data/StaffData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/data/StaffData.java
@@ -26,7 +26,7 @@ import org.joda.time.LocalDate;
 /**
  * Immutable data object representing staff data.
  */
-public class StaffData implements Serializable {
+public final class StaffData implements Serializable {
 
     private final Long id;
     private final String externalId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTxnType.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTxnType.java
index dfaaac3..e177b52 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTxnType.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTxnType.java
@@ -20,7 +20,7 @@ package org.apache.fineract.organisation.teller.domain;
 
 import java.io.Serializable;
 
-public class CashierTxnType implements Serializable {
+public final class CashierTxnType implements Serializable {
 
     private Integer id;
     private String value;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransferData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransferData.java
index 06955e3..ec8b6e3 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransferData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/AccountTransferData.java
@@ -31,7 +31,7 @@ import org.joda.time.LocalDate;
  * Immutable data object representing a savings account.
  */
 @SuppressWarnings("unused")
-public class AccountTransferData implements Serializable {
+public final class AccountTransferData implements Serializable {
 
     private final Long id;
     private final Boolean reversed;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionData.java
index 778432c..d48d687 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/data/StandingInstructionData.java
@@ -38,7 +38,7 @@ import org.joda.time.MonthDay;
  * Immutable data object representing a savings account.
  */
 @SuppressWarnings("unused")
-public class StandingInstructionData {
+public final class StandingInstructionData {
 
     private final Long id;
     private final Long accountDetailId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/ClientAddressData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/ClientAddressData.java
index 2e32169..30eb5b4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/ClientAddressData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/ClientAddressData.java
@@ -18,7 +18,7 @@
  */
 package org.apache.fineract.portfolio.address.data;
 
-public class ClientAddressData {
+public final class ClientAddressData {
 
     private final long clientAddressId;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/FieldConfigurationData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/FieldConfigurationData.java
index 9f60a4b..8964818 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/FieldConfigurationData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/data/FieldConfigurationData.java
@@ -18,7 +18,7 @@
  */
 package org.apache.fineract.portfolio.address.data;
 
-public class FieldConfigurationData {
+public final class FieldConfigurationData {
 
     private final long fieldConfigurationId;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java
index 33bc74c..dc70ba6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/data/CalendarData.java
@@ -36,7 +36,7 @@ import org.joda.time.LocalTime;
 /**
  * Immutable data object representing a Calendar.
  */
-public class CalendarData implements Serializable {
+public final class CalendarData implements Serializable {
 
     private final Long id;
     private final Long calendarInstanceId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/data/ChargeData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/data/ChargeData.java
index 2b23364..1025c72 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/data/ChargeData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/data/ChargeData.java
@@ -37,7 +37,7 @@ import org.joda.time.MonthDay;
 /**
  * Immutable data object for charge data.
  */
-public class ChargeData implements Comparable<ChargeData>, Serializable {
+public final class ChargeData implements Comparable<ChargeData>, Serializable {
 
     private final Long id;
     private final String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientChargeData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientChargeData.java
index 71a879d..472ec8a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientChargeData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientChargeData.java
@@ -26,7 +26,7 @@ import org.apache.fineract.portfolio.charge.data.ChargeData;
 import org.joda.time.LocalDate;
 
 @SuppressWarnings("unused")
-public class ClientChargeData {
+public final class ClientChargeData {
 
     private final Long id;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientData.java
index 16dab3f..55ce6b9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientData.java
@@ -40,7 +40,7 @@ import org.joda.time.LocalDate;
  * Immutable data object representing client data.
  */
 @SuppressWarnings("unused")
-final public class ClientData implements Comparable<ClientData>, Serializable {
+public final class ClientData implements Comparable<ClientData>, Serializable {
 
     private final Long id;
     private final String accountNo;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java
index 6e1f750..eab20ae 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientFamilyMembersData.java
@@ -24,7 +24,7 @@ import java.util.Collection;
 import org.apache.fineract.infrastructure.codes.data.CodeValueData;
 import org.joda.time.LocalDate;
 
-public class ClientFamilyMembersData implements Serializable {
+public final class ClientFamilyMembersData implements Serializable {
 
     private final Long id;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientTransactionData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientTransactionData.java
index be7788d..5aea56a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientTransactionData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientTransactionData.java
@@ -27,7 +27,7 @@ import org.apache.fineract.portfolio.paymenttype.data.PaymentTypeData;
 import org.joda.time.LocalDate;
 
 @SuppressWarnings("unused")
-public class ClientTransactionData {
+public final class ClientTransactionData {
 
     private final Long id;
     private final Long officeId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientFamilyMemberCommandFromApiJsonDeserializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientFamilyMemberCommandFromApiJsonDeserializer.java
index 2e624cc..16004b5 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientFamilyMemberCommandFromApiJsonDeserializer.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/serialization/ClientFamilyMemberCommandFromApiJsonDeserializer.java
@@ -41,7 +41,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
-public class ClientFamilyMemberCommandFromApiJsonDeserializer {
+public final class ClientFamilyMemberCommandFromApiJsonDeserializer {
 
     private final FromJsonHelper fromApiJsonHelper;
     private final Set<String> supportedParameters = new HashSet<>(Arrays.asList("id", "clientId", "firstName", "middleName", "lastName",
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/data/CollateralData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/data/CollateralData.java
index 28cc06b..3a4d85a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/data/CollateralData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/data/CollateralData.java
@@ -26,7 +26,7 @@ import org.apache.fineract.organisation.monetary.data.CurrencyData;
 /**
  * Immutable data object for Collateral data.
  */
-public class CollateralData {
+public final class CollateralData {
 
     private final Long id;
     private final CodeValueData type;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/IndividualClientData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/IndividualClientData.java
index 5eabd1c..59803c8 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/IndividualClientData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/IndividualClientData.java
@@ -24,7 +24,7 @@ import java.util.Collection;
  * Immutable data object for clients with loans due for disbursement or
  * collection.
  */
-public class IndividualClientData {
+public final class IndividualClientData {
 
     private final Long clientId;
     private final String clientName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/IndividualCollectionSheetData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/IndividualCollectionSheetData.java
index fca2417..63f1bc5 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/IndividualCollectionSheetData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/IndividualCollectionSheetData.java
@@ -25,7 +25,7 @@ import org.joda.time.LocalDate;
 /**
  * Immutable data object for collection sheet.
  */
-public class IndividualCollectionSheetData {
+public final class IndividualCollectionSheetData {
 
     @SuppressWarnings("unused")
     private final LocalDate dueDate;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGClientData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGClientData.java
index 733c2ac..ad40290 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGClientData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGClientData.java
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.data.EnumOptionData;
  * Immutable data object for clients with loans due for disbursement or
  * collection.
  */
-public class JLGClientData {
+public final class JLGClientData {
 
     private final Long clientId;
     private final String clientName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGCollectionSheetData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGCollectionSheetData.java
index 89bbfc8..7698c45 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGCollectionSheetData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGCollectionSheetData.java
@@ -29,7 +29,7 @@ import org.joda.time.LocalDate;
 /**
  * Immutable data object for join liability group's collection sheet.
  */
-public class JLGCollectionSheetData {
+public final class JLGCollectionSheetData {
 
     private final LocalDate dueDate;
     private final Collection<LoanProductData> loanProducts;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGGroupData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGGroupData.java
index 669641e..05d4a3e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGGroupData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/JLGGroupData.java
@@ -24,7 +24,7 @@ import java.util.Collection;
  * Immutable data object for groups with clients due for disbursement or
  * collection.
  */
-public class JLGGroupData {
+public final class JLGGroupData {
 
     private final Long groupId;
     private final String groupName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/SavingsDueData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/SavingsDueData.java
index 88cd981..b15684a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/SavingsDueData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/data/SavingsDueData.java
@@ -25,7 +25,7 @@ import org.apache.fineract.organisation.monetary.data.CurrencyData;
  * Immutable data object for representing loan with dues (example: loan is due
  * for disbursement, repayments).
  */
-public class SavingsDueData {
+public final class SavingsDueData {
 
     @SuppressWarnings("unused")
     private final Long savingsId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/data/FundData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/data/FundData.java
index 2ff5ed4..989a03d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/data/FundData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/data/FundData.java
@@ -23,7 +23,7 @@ import java.io.Serializable;
 /**
  * Immutable data object to represent fund data.
  */
-public class FundData implements Serializable {
+public final class FundData implements Serializable {
 
     @SuppressWarnings("unused")
     private final Long id;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/CenterData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/CenterData.java
index 8353b7c..6666d5a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/CenterData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/CenterData.java
@@ -34,7 +34,7 @@ import org.joda.time.LocalDate;
 /**
  * Immutable data object representing groups.
  */
-public class CenterData implements Serializable {
+public final class CenterData implements Serializable {
 
     private final Long id;
     private String accountNo;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/StaffCenterData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/StaffCenterData.java
index 8a84371..f2bcca9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/StaffCenterData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/data/StaffCenterData.java
@@ -20,7 +20,7 @@ package org.apache.fineract.portfolio.group.data;
 
 import java.util.Collection;
 
-public class StaffCenterData {
+public final class StaffCenterData {
 
     private final Long staffId;
     @SuppressWarnings("unused")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveData.java
index 68cae9a..412a39f 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveData.java
@@ -21,7 +21,7 @@ package org.apache.fineract.portfolio.interestratechart.data;
 import java.math.BigDecimal;
 import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 
-public class InterestIncentiveData {
+public final class InterestIncentiveData {
 
     @SuppressWarnings("unused")
     private final Long id;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java
index b0a2910..0363166 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java
@@ -27,7 +27,7 @@ import org.joda.time.LocalDate;
 /**
  * Immutable data object representing a InterestRateChart.
  */
-public class InterestRateChartData {
+public final class InterestRateChartData {
 
     private final Long id;
     private final String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabData.java
index 950a64d..cf07e50 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabData.java
@@ -29,7 +29,7 @@ import org.apache.fineract.organisation.monetary.data.CurrencyData;
 /**
  * Immutable data object representing a InterestRateChartSlab.
  */
-public class InterestRateChartSlabData {
+public final class InterestRateChartSlabData {
 
     private final Long id;
     private final String description;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GlimRepaymentTemplate.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GlimRepaymentTemplate.java
index abec34c..7ff7cec 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GlimRepaymentTemplate.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GlimRepaymentTemplate.java
@@ -21,7 +21,7 @@ package org.apache.fineract.portfolio.loanaccount.data;
 
 import java.math.BigDecimal;
 
-public class GlimRepaymentTemplate {
+public final class GlimRepaymentTemplate {
 
     private final BigDecimal glimId;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GroupLoanIndividualMonitoringAccountData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GroupLoanIndividualMonitoringAccountData.java
index 5eabd0a..0231009 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GroupLoanIndividualMonitoringAccountData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/GroupLoanIndividualMonitoringAccountData.java
@@ -21,7 +21,7 @@ package org.apache.fineract.portfolio.loanaccount.data;
 
 import java.math.BigDecimal;
 
-public class GroupLoanIndividualMonitoringAccountData {
+public final class GroupLoanIndividualMonitoringAccountData {
 
     private final BigDecimal glimId;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanAccountData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanAccountData.java
index ab4e4d7..c871450 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanAccountData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanAccountData.java
@@ -58,7 +58,7 @@ import org.springframework.util.CollectionUtils;
  * Immutable data object representing loan account data.
  */
 @SuppressWarnings("unused")
-public class LoanAccountData {
+public final class LoanAccountData {
 
     // basic loan details
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java
index 22d50e0..d33e729 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/GroupLoanIndividualMonitoringAccount.java
@@ -33,7 +33,7 @@ import org.apache.fineract.portfolio.group.domain.Group;
 
 @Entity
 @Table(name = "glim_accounts", uniqueConstraints = { @UniqueConstraint(columnNames = { "account_number" }, name = "FK_glim_id") })
-public class GroupLoanIndividualMonitoringAccount extends AbstractPersistableCustom {
+public final class GroupLoanIndividualMonitoringAccount extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "group_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorFundingData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorFundingData.java
index 061f60f..6784007 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorFundingData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorFundingData.java
@@ -23,7 +23,7 @@ import java.util.Collection;
 import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 import org.apache.fineract.portfolio.account.data.PortfolioAccountData;
 
-public class GuarantorFundingData {
+public final class GuarantorFundingData {
 
     @SuppressWarnings("unused")
     private final Long id;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorTransactionData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorTransactionData.java
index 6187096..f8cd576 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorTransactionData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorTransactionData.java
@@ -21,7 +21,7 @@ package org.apache.fineract.portfolio.loanaccount.guarantor.data;
 import org.apache.fineract.portfolio.loanaccount.data.LoanTransactionData;
 import org.apache.fineract.portfolio.savings.data.DepositAccountOnHoldTransactionData;
 
-public class GuarantorTransactionData {
+public final class GuarantorTransactionData {
 
     @SuppressWarnings("unused")
     private final Long id;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/ObligeeData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/ObligeeData.java
index 992b6a9..f2e2f2b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/ObligeeData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/ObligeeData.java
@@ -22,7 +22,7 @@ package org.apache.fineract.portfolio.loanaccount.guarantor.data;
 import java.math.BigDecimal;
 
 @SuppressWarnings("unused")
-public class ObligeeData {
+public final class ObligeeData {
 
     private final String firstName;
     private final String lastName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleDTO.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleDTO.java
index a335471..c3fd4ef 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleDTO.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleDTO.java
@@ -25,7 +25,7 @@ import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanSchedul
 /**
  * Transfer object to return the schedule after generation of schedule
  */
-public class LoanScheduleDTO {
+public final class LoanScheduleDTO {
 
     private final List<LoanRepaymentScheduleInstallment> installments;
     private final LoanScheduleModel loanScheduleModel;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleParams.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleParams.java
index 6954392..92c3755 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleParams.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanScheduleParams.java
@@ -31,7 +31,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.transactionprocessor.Loa
 import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.RecalculationDetail;
 import org.joda.time.LocalDate;
 
-public class LoanScheduleParams {
+public final class LoanScheduleParams {
 
     // Actual period Number as per the schedule
     private int periodNumber;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanSchedulePeriodData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanSchedulePeriodData.java
index 8b13322..5463f8d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanSchedulePeriodData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/data/LoanSchedulePeriodData.java
@@ -26,7 +26,7 @@ import org.joda.time.LocalDate;
  * Immutable data object that represents a period of a loan schedule.
  *
  */
-public class LoanSchedulePeriodData {
+public final class LoanSchedulePeriodData {
 
     private final Integer period;
     private final LocalDate fromDate;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestData.java
index 7cd0d99..18f8680 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestData.java
@@ -26,7 +26,7 @@ import org.joda.time.LocalDate;
 /**
  * Immutable data object representing loan reschedule request data.
  **/
-public class LoanRescheduleRequestData {
+public final class LoanRescheduleRequestData {
 
     private final Long id;
     private final Long loanId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductGuaranteeData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductGuaranteeData.java
index cbb7eeb..1c3f608 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductGuaranteeData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/data/LoanProductGuaranteeData.java
@@ -21,7 +21,7 @@ package org.apache.fineract.portfolio.loanproduct.data;
 import java.io.Serializable;
 import java.math.BigDecimal;
 
-public class LoanProductGuaranteeData implements Serializable {
+public final class LoanProductGuaranteeData implements Serializable {
 
     @SuppressWarnings("unused")
     private final Long id;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/attendance/data/ClientAttendanceData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/attendance/data/ClientAttendanceData.java
index db2a6e8..4304b8b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/attendance/data/ClientAttendanceData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/attendance/data/ClientAttendanceData.java
@@ -23,7 +23,7 @@ import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 /**
  * Immutable data object representing a ClientAttendance.
  */
-public class ClientAttendanceData {
+public final class ClientAttendanceData {
 
     @SuppressWarnings("unused")
     private final Long id;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/data/MeetingData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/data/MeetingData.java
index 333cd8e..7606f4d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/data/MeetingData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/data/MeetingData.java
@@ -29,7 +29,7 @@ import org.joda.time.LocalDate;
 /**
  * Immutable data object representing a Meeting.
  */
-public class MeetingData {
+public final class MeetingData {
 
     private final Long id;
     private final LocalDate meetingDate;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/data/RateData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/data/RateData.java
index 589a0df..8e421c4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/data/RateData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/data/RateData.java
@@ -26,7 +26,7 @@ import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 /**
  * Bowpi GT Created by Jose on 19/07/2017.
  */
-public class RateData implements Serializable {
+public final class RateData implements Serializable {
 
     private Long id;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/ClosingOfSavingsAccounts.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/ClosingOfSavingsAccounts.java
index 40e7cbf..8a60f69 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/ClosingOfSavingsAccounts.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/ClosingOfSavingsAccounts.java
@@ -20,7 +20,7 @@ package org.apache.fineract.portfolio.savings.data;
 
 import org.joda.time.LocalDate;
 
-public class ClosingOfSavingsAccounts {
+public final class ClosingOfSavingsAccounts {
 
     private final transient Integer rowIndex;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestIncentiveData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestIncentiveData.java
index 2d1557a..03c6e0d 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestIncentiveData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestIncentiveData.java
@@ -22,7 +22,7 @@ import java.math.BigDecimal;
 import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 import org.apache.fineract.portfolio.interestratechart.data.InterestIncentiveData;
 
-public class DepositAccountInterestIncentiveData {
+public final class DepositAccountInterestIncentiveData {
 
     @SuppressWarnings("unused")
     private final Long id;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartData.java
index 09b2ebb..468af49 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartData.java
@@ -29,7 +29,7 @@ import org.joda.time.LocalDate;
 /**
  * Immutable data object representing a deposit account interest rate chart.
  */
-public class DepositAccountInterestRateChartData {
+public final class DepositAccountInterestRateChartData {
 
     private final Long id;
     private final String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartSlabData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartSlabData.java
index f2fea6b..42ab9cb 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartSlabData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartSlabData.java
@@ -31,7 +31,7 @@ import org.apache.fineract.portfolio.interestratechart.data.InterestRateChartSla
 /**
  * Immutable data object representing deposit accounts Interest rate Slabs.
  */
-public class DepositAccountInterestRateChartSlabData {
+public final class DepositAccountInterestRateChartSlabData {
 
     private final Long id;
     private final String description;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountOnHoldTransactionData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountOnHoldTransactionData.java
index 0520814..d401bb9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountOnHoldTransactionData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountOnHoldTransactionData.java
@@ -22,7 +22,7 @@ import java.math.BigDecimal;
 import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 import org.joda.time.LocalDate;
 
-public class DepositAccountOnHoldTransactionData {
+public final class DepositAccountOnHoldTransactionData {
 
     @SuppressWarnings("unused")
     private final Long id;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositAccountData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositAccountData.java
index 38a737c..9591517 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositAccountData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositAccountData.java
@@ -36,7 +36,7 @@ import org.joda.time.LocalDate;
 /**
  * Immutable data object representing a Fixed Deposit account.
  */
-public class FixedDepositAccountData extends DepositAccountData {
+public final class FixedDepositAccountData extends DepositAccountData {
 
     private boolean preClosurePenalApplicable;
     private BigDecimal preClosurePenalInterest;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java
index 6d34a84..b59532b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java
@@ -35,7 +35,7 @@ import org.apache.fineract.portfolio.tax.data.TaxGroupData;
 /**
  * Immutable data object representing a Fixed Deposit product.
  */
-public class FixedDepositProductData extends DepositProductData {
+public final class FixedDepositProductData extends DepositProductData {
 
     // additional fields
     private boolean preClosurePenalApplicable;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java
index 4d704f0..c7d861c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java
@@ -21,7 +21,7 @@ package org.apache.fineract.portfolio.savings.data;
 
 import java.math.BigDecimal;
 
-public class GroupSavingsIndividualMonitoringAccountData {
+public final class GroupSavingsIndividualMonitoringAccountData {
 
     private final BigDecimal gsimId;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositAccountData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositAccountData.java
index bc73f63..c53ef24 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositAccountData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositAccountData.java
@@ -35,7 +35,7 @@ import org.joda.time.LocalDate;
 /**
  * Immutable data object representing a Recurring Deposit account.
  */
-public class RecurringDepositAccountData extends DepositAccountData {
+public final class RecurringDepositAccountData extends DepositAccountData {
 
     // additional fields
     private final boolean preClosurePenalApplicable;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java
index b550c3f..1be8d15 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java
@@ -35,7 +35,7 @@ import org.apache.fineract.portfolio.tax.data.TaxGroupData;
 /**
  * Immutable data object represent a Recurring Deposit product.
  */
-public class RecurringDepositProductData extends DepositProductData {
+public final class RecurringDepositProductData extends DepositProductData {
 
     private boolean preClosurePenalApplicable;
     private BigDecimal preClosurePenalInterest;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountAnnualFeeData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountAnnualFeeData.java
index a83c757..33b8836 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountAnnualFeeData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountAnnualFeeData.java
@@ -20,7 +20,7 @@ package org.apache.fineract.portfolio.savings.data;
 
 import org.joda.time.LocalDate;
 
-public class SavingsAccountAnnualFeeData {
+public final class SavingsAccountAnnualFeeData {
 
     private final Long id;
     private final Long accountId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java
index 77c6222..b2c2806 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java
@@ -38,7 +38,7 @@ import org.joda.time.LocalDate;
 /**
  * Immutable data object representing a savings account.
  */
-public class SavingsAccountData implements Serializable {
+public final class SavingsAccountData implements Serializable {
 
     private final Long id;
     private final String accountNo;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionData.java
index a8681ce..da1ffd8 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionData.java
@@ -35,7 +35,7 @@ import org.joda.time.LocalDate;
  * Immutable data object representing a savings account transaction.
  */
 @SuppressWarnings("unused")
-public class SavingsAccountTransactionData implements Serializable {
+public final class SavingsAccountTransactionData implements Serializable {
 
     private final Long id;
     private final SavingsAccountTransactionEnumData transactionType;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsActivation.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsActivation.java
index 48dda82..fdfe567 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsActivation.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsActivation.java
@@ -20,7 +20,7 @@ package org.apache.fineract.portfolio.savings.data;
 
 import org.joda.time.LocalDate;
 
-public class SavingsActivation {
+public final class SavingsActivation {
 
     private final transient Integer rowIndex;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsApproval.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsApproval.java
index 932170e..e949526 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsApproval.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsApproval.java
@@ -20,7 +20,7 @@ package org.apache.fineract.portfolio.savings.data;
 
 import org.joda.time.LocalDate;
 
-public class SavingsApproval {
+public final class SavingsApproval {
 
     private final transient Integer rowIndex;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java
index 8adc4c9..5937f33 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.tax.data.TaxGroupData;
 /**
  * Immutable data object represent a savings product.
  */
-public class SavingsProductData implements Serializable {
+public final class SavingsProductData implements Serializable {
 
     private final Long id;
     private final String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java
index 8001edd..202a63f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java
@@ -33,7 +33,7 @@ import org.apache.fineract.portfolio.group.domain.Group;
 
 @Entity
 @Table(name = "gsim_accounts", uniqueConstraints = { @UniqueConstraint(columnNames = { "account_number" }, name = "gsim_id") })
-public class GroupSavingsIndividualMonitoring extends AbstractPersistableCustom {
+public final class GroupSavingsIndividualMonitoring extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "group_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/AnnualCompoundingPeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/AnnualCompoundingPeriod.java
index 3fd24db..a3426b8 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/AnnualCompoundingPeriod.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/AnnualCompoundingPeriod.java
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.savings.SavingsCompoundingInterestPeriodTyp
 import org.apache.fineract.portfolio.savings.SavingsInterestCalculationType;
 import org.joda.time.LocalDate;
 
-public class AnnualCompoundingPeriod implements CompoundingPeriod {
+public final class AnnualCompoundingPeriod implements CompoundingPeriod {
 
     @SuppressWarnings("unused")
     private final LocalDateInterval periodInterval;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/BiAnnualCompoundingPeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/BiAnnualCompoundingPeriod.java
index 49e15df..09f2129 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/BiAnnualCompoundingPeriod.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/BiAnnualCompoundingPeriod.java
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.savings.SavingsCompoundingInterestPeriodTyp
 import org.apache.fineract.portfolio.savings.SavingsInterestCalculationType;
 import org.joda.time.LocalDate;
 
-public class BiAnnualCompoundingPeriod implements CompoundingPeriod {
+public final class BiAnnualCompoundingPeriod implements CompoundingPeriod {
 
     @SuppressWarnings("unused")
     private final LocalDateInterval periodInterval;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/DailyCompoundingPeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/DailyCompoundingPeriod.java
index 515ae11..507d126 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/DailyCompoundingPeriod.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/DailyCompoundingPeriod.java
@@ -27,7 +27,7 @@ import org.apache.fineract.portfolio.savings.SavingsCompoundingInterestPeriodTyp
 import org.apache.fineract.portfolio.savings.SavingsInterestCalculationType;
 import org.joda.time.LocalDate;
 
-public class DailyCompoundingPeriod implements CompoundingPeriod {
+public final class DailyCompoundingPeriod implements CompoundingPeriod {
 
     private final LocalDateInterval periodInterval;
     private final List<EndOfDayBalance> endOfDayBalances;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/MonthlyCompoundingPeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/MonthlyCompoundingPeriod.java
index 4307165..6475ca1 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/MonthlyCompoundingPeriod.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/MonthlyCompoundingPeriod.java
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.savings.SavingsCompoundingInterestPeriodTyp
 import org.apache.fineract.portfolio.savings.SavingsInterestCalculationType;
 import org.joda.time.LocalDate;
 
-public class MonthlyCompoundingPeriod implements CompoundingPeriod {
+public final class MonthlyCompoundingPeriod implements CompoundingPeriod {
 
     @SuppressWarnings("unused")
     private final LocalDateInterval periodInterval;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/PostingPeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/PostingPeriod.java
index 320d977..f0f057e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/PostingPeriod.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/PostingPeriod.java
@@ -33,7 +33,7 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction;
 import org.joda.time.DateTime;
 import org.joda.time.LocalDate;
 
-public class PostingPeriod {
+public final class PostingPeriod {
 
     private final LocalDateInterval periodInterval;
     private final MonetaryCurrency currency;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/QuarterlyCompoundingPeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/QuarterlyCompoundingPeriod.java
index bf54af2..1c316e0 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/QuarterlyCompoundingPeriod.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/interest/QuarterlyCompoundingPeriod.java
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.savings.SavingsCompoundingInterestPeriodTyp
 import org.apache.fineract.portfolio.savings.SavingsInterestCalculationType;
 import org.joda.time.LocalDate;
 
-public class QuarterlyCompoundingPeriod implements CompoundingPeriod {
+public final class QuarterlyCompoundingPeriod implements CompoundingPeriod {
 
     private final LocalDateInterval periodInterval;
     private final List<EndOfDayBalance> endOfDayBalances;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdHocSearchQueryData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdHocSearchQueryData.java
index bae99cb..5c3c1fa 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdHocSearchQueryData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdHocSearchQueryData.java
@@ -23,7 +23,7 @@ import java.util.Collection;
 import org.apache.fineract.organisation.office.data.OfficeData;
 import org.apache.fineract.portfolio.loanproduct.data.LoanProductData;
 
-public class AdHocSearchQueryData {
+public final class AdHocSearchQueryData {
 
     @SuppressWarnings("unused")
     private final String officeName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/data/PocketAccountMappingData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/data/PocketAccountMappingData.java
index 84aac98..99f040c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/data/PocketAccountMappingData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/data/PocketAccountMappingData.java
@@ -23,7 +23,7 @@ import java.util.Collection;
 import org.apache.fineract.portfolio.self.pockets.domain.PocketAccountMapping;
 
 @SuppressWarnings("unused")
-public class PocketAccountMappingData {
+public final class PocketAccountMappingData {
 
     private final Collection<PocketAccountMapping> loanAccounts;
     private final Collection<PocketAccountMapping> savingsAccounts;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/data/ShareProductData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/data/ShareProductData.java
index 1db5007..0a4038c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/data/ShareProductData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/data/ShareProductData.java
@@ -31,7 +31,7 @@ import org.apache.fineract.organisation.monetary.data.CurrencyData;
 import org.apache.fineract.portfolio.charge.data.ChargeData;
 import org.apache.fineract.portfolio.products.data.ProductData;
 
-public class ShareProductData implements ProductData {
+public final class ShareProductData implements ProductData {
 
     private final Long id;
     private final String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxComponentData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxComponentData.java
index 9ef50e9..0fa29be 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxComponentData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxComponentData.java
@@ -27,7 +27,7 @@ import org.apache.fineract.accounting.glaccount.data.GLAccountData;
 import org.apache.fineract.infrastructure.core.data.EnumOptionData;
 import org.joda.time.LocalDate;
 
-public class TaxComponentData implements Serializable {
+public final class TaxComponentData implements Serializable {
 
     @SuppressWarnings("unused")
     private final Long id;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxGroupData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxGroupData.java
index 1d618a4..d42f713 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxGroupData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/data/TaxGroupData.java
@@ -21,7 +21,7 @@ package org.apache.fineract.portfolio.tax.data;
 import java.io.Serializable;
 import java.util.Collection;
 
-public class TaxGroupData implements Serializable {
+public final class TaxGroupData implements Serializable {
 
     private final Long id;
     private final String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/util/LookupTableMapper.java b/fineract-provider/src/main/java/org/apache/fineract/spm/util/LookupTableMapper.java
index af33132..5461da0 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/spm/util/LookupTableMapper.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/spm/util/LookupTableMapper.java
@@ -27,7 +27,7 @@ import org.apache.fineract.spm.data.LookupTableEntry;
 import org.apache.fineract.spm.domain.LookupTable;
 import org.apache.fineract.spm.domain.Survey;
 
-public class LookupTableMapper {
+public final class LookupTableMapper {
 
     private LookupTableMapper() {
         super();
diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/util/ScorecardMapper.java b/fineract-provider/src/main/java/org/apache/fineract/spm/util/ScorecardMapper.java
index dbf1a4b..60f13d2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/spm/util/ScorecardMapper.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/spm/util/ScorecardMapper.java
@@ -31,7 +31,7 @@ import org.apache.fineract.spm.domain.Survey;
 import org.apache.fineract.spm.exception.SurveyResponseNotAvailableException;
 import org.apache.fineract.useradministration.domain.AppUser;
 
-public class ScorecardMapper {
+public final class ScorecardMapper {
 
     private ScorecardMapper() {
         super();
diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/util/SurveyMapper.java b/fineract-provider/src/main/java/org/apache/fineract/spm/util/SurveyMapper.java
index c7dd8ce..d12055f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/spm/util/SurveyMapper.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/spm/util/SurveyMapper.java
@@ -29,7 +29,7 @@ import org.apache.fineract.spm.domain.Question;
 import org.apache.fineract.spm.domain.Response;
 import org.apache.fineract.spm.domain.Survey;
 
-public class SurveyMapper {
+public final class SurveyMapper {
 
     private SurveyMapper() {
         super();
diff --git a/fineract-provider/src/main/java/org/apache/fineract/template/data/TemplateData.java b/fineract-provider/src/main/java/org/apache/fineract/template/data/TemplateData.java
index 4ce312e..b083069 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/template/data/TemplateData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/template/data/TemplateData.java
@@ -26,7 +26,7 @@ import org.apache.fineract.template.domain.Template;
 import org.apache.fineract.template.domain.TemplateEntity;
 import org.apache.fineract.template.domain.TemplateType;
 
-public class TemplateData {
+public final class TemplateData {
 
     @SuppressWarnings("unused")
     private final List<Map<String, Object>> entities;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/AppUserData.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/AppUserData.java
index 6fae85d..6538af4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/AppUserData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/AppUserData.java
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.client.data.ClientData;
 /**
  * Immutable data object for application user data.
  */
-public class AppUserData {
+public final class AppUserData {
 
     private final Long id;
     private final String username;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/PermissionData.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/PermissionData.java
index 8a0d38b..d1cbc34 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/PermissionData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/data/PermissionData.java
@@ -21,7 +21,7 @@ package org.apache.fineract.useradministration.data;
 /**
  * Immutable representation of permissions
  */
-public class PermissionData {
+public final class PermissionData {
 
     @SuppressWarnings("unused")
     private final String grouping;