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/04/07 21:46:31 UTC

[fineract] 03/04: Remove AbstractPersistableCustom's PK parameterization

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

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

commit 09d0cfaa521eaeca82e1be27ee15e7219796fb24
Author: Michael Vorburger <mi...@vorburger.ch>
AuthorDate: Mon Mar 23 01:42:08 2020 +0100

    Remove AbstractPersistableCustom's PK parameterization
    
    Because both are pointless, as the PK @Id is hard-coded to Long anyway,
    and the U is (rightfully) fixed to always be an AppUser here.
---
 .../java/org/apache/fineract/accounting/closure/domain/GLClosure.java  | 2 +-
 .../financialactivityaccount/domain/FinancialActivityAccount.java      | 2 +-
 .../org/apache/fineract/accounting/glaccount/domain/GLAccount.java     | 2 +-
 .../org/apache/fineract/accounting/glaccount/domain/TrialBalance.java  | 2 +-
 .../apache/fineract/accounting/journalentry/domain/JournalEntry.java   | 2 +-
 .../producttoaccountmapping/domain/ProductToGLAccountMapping.java      | 2 +-
 .../accounting/provisioning/domain/LoanProductProvisioningEntry.java   | 2 +-
 .../fineract/accounting/provisioning/domain/ProvisioningEntry.java     | 2 +-
 .../org/apache/fineract/accounting/rule/domain/AccountingRule.java     | 2 +-
 .../org/apache/fineract/accounting/rule/domain/AccountingTagRule.java  | 2 +-
 .../src/main/java/org/apache/fineract/adhocquery/domain/AdHoc.java     | 2 +-
 .../main/java/org/apache/fineract/commands/domain/CommandSource.java   | 2 +-
 .../infrastructure/accountnumberformat/domain/AccountNumberFormat.java | 2 +-
 .../fineract/infrastructure/bulkimport/domain/ImportDocument.java      | 2 +-
 .../org/apache/fineract/infrastructure/cache/domain/PlatformCache.java | 2 +-
 .../fineract/infrastructure/campaigns/email/domain/EmailCampaign.java  | 2 +-
 .../infrastructure/campaigns/email/domain/EmailConfiguration.java      | 2 +-
 .../fineract/infrastructure/campaigns/email/domain/EmailMessage.java   | 2 +-
 .../fineract/infrastructure/campaigns/sms/domain/SmsCampaign.java      | 2 +-
 .../java/org/apache/fineract/infrastructure/codes/domain/Code.java     | 2 +-
 .../org/apache/fineract/infrastructure/codes/domain/CodeValue.java     | 2 +-
 .../fineract/infrastructure/configuration/domain/ExternalService.java  | 2 +-
 .../configuration/domain/GlobalConfigurationProperty.java              | 2 +-
 .../fineract/infrastructure/core/domain/AbstractAuditableCustom.java   | 3 +--
 .../fineract/infrastructure/core/domain/AbstractPersistableCustom.java | 2 +-
 .../fineract/infrastructure/creditbureau/domain/CreditBureau.java      | 2 +-
 .../infrastructure/creditbureau/domain/CreditBureauConfiguration.java  | 2 +-
 .../creditbureau/domain/CreditBureauLoanProductMapping.java            | 2 +-
 .../infrastructure/creditbureau/domain/OrganisationCreditBureau.java   | 2 +-
 .../infrastructure/dataqueries/domain/EntityDatatableChecks.java       | 2 +-
 .../org/apache/fineract/infrastructure/dataqueries/domain/Report.java  | 2 +-
 .../fineract/infrastructure/dataqueries/domain/ReportParameter.java    | 2 +-
 .../infrastructure/dataqueries/domain/ReportParameterUsage.java        | 2 +-
 .../fineract/infrastructure/documentmanagement/domain/Document.java    | 2 +-
 .../fineract/infrastructure/documentmanagement/domain/Image.java       | 2 +-
 .../infrastructure/entityaccess/domain/FineractEntityAccess.java       | 2 +-
 .../infrastructure/entityaccess/domain/FineractEntityRelation.java     | 2 +-
 .../entityaccess/domain/FineractEntityToEntityMapping.java             | 2 +-
 .../apache/fineract/infrastructure/gcm/domain/DeviceRegistration.java  | 2 +-
 .../java/org/apache/fineract/infrastructure/hooks/domain/Hook.java     | 2 +-
 .../apache/fineract/infrastructure/hooks/domain/HookConfiguration.java | 2 +-
 .../org/apache/fineract/infrastructure/hooks/domain/HookResource.java  | 2 +-
 .../org/apache/fineract/infrastructure/hooks/domain/HookTemplate.java  | 2 +-
 .../java/org/apache/fineract/infrastructure/hooks/domain/Schema.java   | 2 +-
 .../org/apache/fineract/infrastructure/jobs/domain/JobParameter.java   | 2 +-
 .../apache/fineract/infrastructure/jobs/domain/ScheduledJobDetail.java | 2 +-
 .../fineract/infrastructure/jobs/domain/ScheduledJobRunHistory.java    | 2 +-
 .../apache/fineract/infrastructure/jobs/domain/SchedulerDetail.java    | 2 +-
 .../infrastructure/reportmailingjob/domain/ReportMailingJob.java       | 2 +-
 .../reportmailingjob/domain/ReportMailingJobConfiguration.java         | 2 +-
 .../reportmailingjob/domain/ReportMailingJobRunHistory.java            | 2 +-
 .../apache/fineract/infrastructure/security/domain/TFAccessToken.java  | 2 +-
 .../infrastructure/security/domain/TwoFactorConfiguration.java         | 2 +-
 .../java/org/apache/fineract/infrastructure/sms/domain/SmsMessage.java | 2 +-
 .../org/apache/fineract/infrastructure/survey/domain/Likelihood.java   | 2 +-
 .../org/apache/fineract/interoperation/domain/InteropIdentifier.java   | 2 +-
 .../main/java/org/apache/fineract/mix/domain/MixTaxonomyMapping.java   | 2 +-
 .../java/org/apache/fineract/notification/domain/Notification.java     | 2 +-
 .../org/apache/fineract/notification/domain/NotificationMapper.java    | 2 +-
 .../src/main/java/org/apache/fineract/notification/domain/Topic.java   | 2 +-
 .../java/org/apache/fineract/notification/domain/TopicSubscriber.java  | 2 +-
 .../java/org/apache/fineract/organisation/holiday/domain/Holiday.java  | 2 +-
 .../fineract/organisation/monetary/domain/ApplicationCurrency.java     | 2 +-
 .../java/org/apache/fineract/organisation/office/domain/Office.java    | 2 +-
 .../apache/fineract/organisation/office/domain/OfficeTransaction.java  | 2 +-
 .../fineract/organisation/office/domain/OrganisationCurrency.java      | 2 +-
 .../organisation/provisioning/domain/LoanProductProvisionCriteria.java | 2 +-
 .../organisation/provisioning/domain/ProvisioningCategory.java         | 2 +-
 .../organisation/provisioning/domain/ProvisioningCriteria.java         | 2 +-
 .../provisioning/domain/ProvisioningCriteriaDefinition.java            | 2 +-
 .../main/java/org/apache/fineract/organisation/staff/domain/Staff.java | 2 +-
 .../java/org/apache/fineract/organisation/teller/domain/Cashier.java   | 2 +-
 .../apache/fineract/organisation/teller/domain/CashierTransaction.java | 2 +-
 .../java/org/apache/fineract/organisation/teller/domain/Teller.java    | 2 +-
 .../apache/fineract/organisation/teller/domain/TellerTransaction.java  | 2 +-
 .../apache/fineract/organisation/workingdays/domain/WorkingDays.java   | 2 +-
 .../apache/fineract/portfolio/account/domain/AccountAssociations.java  | 2 +-
 .../fineract/portfolio/account/domain/AccountTransferDetails.java      | 2 +-
 .../portfolio/account/domain/AccountTransferStandingInstruction.java   | 2 +-
 .../fineract/portfolio/account/domain/AccountTransferTransaction.java  | 2 +-
 .../java/org/apache/fineract/portfolio/address/domain/Address.java     | 2 +-
 .../apache/fineract/portfolio/address/domain/FieldConfiguration.java   | 2 +-
 .../java/org/apache/fineract/portfolio/calendar/domain/Calendar.java   | 2 +-
 .../org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java | 2 +-
 .../apache/fineract/portfolio/calendar/domain/CalendarInstance.java    | 2 +-
 .../main/java/org/apache/fineract/portfolio/charge/domain/Charge.java  | 2 +-
 .../main/java/org/apache/fineract/portfolio/client/domain/Client.java  | 2 +-
 .../org/apache/fineract/portfolio/client/domain/ClientAddress.java     | 2 +-
 .../java/org/apache/fineract/portfolio/client/domain/ClientCharge.java | 2 +-
 .../apache/fineract/portfolio/client/domain/ClientChargePaidBy.java    | 2 +-
 .../apache/fineract/portfolio/client/domain/ClientFamilyMembers.java   | 2 +-
 .../org/apache/fineract/portfolio/client/domain/ClientIdentifier.java  | 2 +-
 .../org/apache/fineract/portfolio/client/domain/ClientNonPerson.java   | 2 +-
 .../org/apache/fineract/portfolio/client/domain/ClientTransaction.java | 2 +-
 .../apache/fineract/portfolio/client/domain/ClientTransferDetails.java | 2 +-
 .../apache/fineract/portfolio/collateral/domain/LoanCollateral.java    | 2 +-
 .../apache/fineract/portfolio/floatingrates/domain/FloatingRate.java   | 2 +-
 .../fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java    | 2 +-
 .../src/main/java/org/apache/fineract/portfolio/fund/domain/Fund.java  | 2 +-
 .../main/java/org/apache/fineract/portfolio/group/domain/Group.java    | 2 +-
 .../java/org/apache/fineract/portfolio/group/domain/GroupLevel.java    | 2 +-
 .../java/org/apache/fineract/portfolio/group/domain/GroupRole.java     | 2 +-
 .../apache/fineract/portfolio/group/domain/StaffAssignmentHistory.java | 2 +-
 .../portfolio/interestratechart/domain/InterestIncentives.java         | 2 +-
 .../fineract/portfolio/interestratechart/domain/InterestRateChart.java | 2 +-
 .../portfolio/interestratechart/domain/InterestRateChartSlab.java      | 2 +-
 .../java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java    | 2 +-
 .../org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java   | 2 +-
 .../apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java | 2 +-
 .../fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java | 2 +-
 .../fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java   | 2 +-
 .../loanaccount/domain/LoanInterestRecalcualtionAdditionalDetails.java | 2 +-
 .../portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java | 2 +-
 .../portfolio/loanaccount/domain/LoanOfficerAssignmentHistory.java     | 2 +-
 .../portfolio/loanaccount/domain/LoanOverdueInstallmentCharge.java     | 2 +-
 .../portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java | 2 +-
 .../domain/LoanRescheduleRequestToTermVariationMapping.java            | 2 +-
 .../fineract/portfolio/loanaccount/domain/LoanTermVariations.java      | 2 +-
 .../apache/fineract/portfolio/loanaccount/domain/LoanTopupDetails.java | 2 +-
 .../fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java       | 2 +-
 .../portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java    | 2 +-
 .../apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java  | 2 +-
 .../loanaccount/domain/LoanTransactionToRepaymentScheduleMapping.java  | 2 +-
 .../fineract/portfolio/loanaccount/guarantor/domain/Guarantor.java     | 2 +-
 .../loanaccount/guarantor/domain/GuarantorFundingDetails.java          | 2 +-
 .../loanaccount/guarantor/domain/GuarantorFundingTransaction.java      | 2 +-
 .../loanaccount/loanschedule/domain/LoanRepaymentScheduleHistory.java  | 2 +-
 .../loanaccount/rescheduleloan/domain/LoanRescheduleRequest.java       | 2 +-
 .../org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java  | 2 +-
 .../loanproduct/domain/LoanProductBorrowerCycleVariations.java         | 2 +-
 .../loanproduct/domain/LoanProductConfigurableAttributes.java          | 2 +-
 .../portfolio/loanproduct/domain/LoanProductFloatingRates.java         | 2 +-
 .../portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java      | 2 +-
 .../loanproduct/domain/LoanProductInterestRecalculationDetails.java    | 2 +-
 .../loanproduct/domain/LoanProductVariableInstallmentConfig.java       | 2 +-
 .../loanproduct/domain/LoanTransactionProcessingStrategy.java          | 2 +-
 .../fineract/portfolio/loanproduct/productmix/domain/ProductMix.java   | 2 +-
 .../fineract/portfolio/meeting/attendance/domain/ClientAttendance.java | 2 +-
 .../java/org/apache/fineract/portfolio/meeting/domain/Meeting.java     | 2 +-
 .../src/main/java/org/apache/fineract/portfolio/note/domain/Note.java  | 2 +-
 .../apache/fineract/portfolio/paymentdetail/domain/PaymentDetail.java  | 2 +-
 .../org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java  | 2 +-
 .../src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java  | 2 +-
 .../portfolio/savings/domain/DepositAccountInterestIncentive.java      | 2 +-
 .../portfolio/savings/domain/DepositAccountInterestIncentives.java     | 2 +-
 .../portfolio/savings/domain/DepositAccountInterestRateChart.java      | 2 +-
 .../portfolio/savings/domain/DepositAccountInterestRateChartSlabs.java | 2 +-
 .../portfolio/savings/domain/DepositAccountOnHoldTransaction.java      | 2 +-
 .../portfolio/savings/domain/DepositAccountRecurringDetail.java        | 2 +-
 .../portfolio/savings/domain/DepositAccountTermAndPreClosure.java      | 2 +-
 .../portfolio/savings/domain/DepositProductRecurringDetail.java        | 2 +-
 .../portfolio/savings/domain/DepositProductTermAndPreClosure.java      | 2 +-
 .../portfolio/savings/domain/RecurringDepositScheduleInstallment.java  | 2 +-
 .../org/apache/fineract/portfolio/savings/domain/SavingsAccount.java   | 2 +-
 .../apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java | 2 +-
 .../fineract/portfolio/savings/domain/SavingsAccountChargePaidBy.java  | 2 +-
 .../fineract/portfolio/savings/domain/SavingsAccountTransaction.java   | 2 +-
 .../portfolio/savings/domain/SavingsAccountTransactionTaxDetails.java  | 2 +-
 .../portfolio/savings/domain/SavingsOfficerAssignmentHistory.java      | 2 +-
 .../org/apache/fineract/portfolio/savings/domain/SavingsProduct.java   | 2 +-
 .../fineract/portfolio/self/account/domain/SelfBeneficiariesTPT.java   | 2 +-
 .../java/org/apache/fineract/portfolio/self/pockets/domain/Pocket.java | 2 +-
 .../fineract/portfolio/self/pockets/domain/PocketAccountMapping.java   | 2 +-
 .../portfolio/self/registration/domain/SelfServiceRegistration.java    | 2 +-
 .../apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java   | 2 +-
 .../fineract/portfolio/shareaccounts/domain/ShareAccountCharge.java    | 2 +-
 .../portfolio/shareaccounts/domain/ShareAccountChargePaidBy.java       | 2 +-
 .../portfolio/shareaccounts/domain/ShareAccountDividendDetails.java    | 2 +-
 .../portfolio/shareaccounts/domain/ShareAccountTransaction.java        | 2 +-
 .../apache/fineract/portfolio/shareproducts/domain/ShareProduct.java   | 2 +-
 .../shareproducts/domain/ShareProductDividendPayOutDetails.java        | 2 +-
 .../portfolio/shareproducts/domain/ShareProductMarketPrice.java        | 2 +-
 .../java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java    | 2 +-
 .../org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java  | 2 +-
 .../main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java   | 2 +-
 .../org/apache/fineract/portfolio/tax/domain/TaxGroupMappings.java     | 2 +-
 .../src/main/java/org/apache/fineract/spm/domain/Component.java        | 2 +-
 .../src/main/java/org/apache/fineract/spm/domain/LookupTable.java      | 2 +-
 .../src/main/java/org/apache/fineract/spm/domain/Question.java         | 2 +-
 .../src/main/java/org/apache/fineract/spm/domain/Response.java         | 2 +-
 .../src/main/java/org/apache/fineract/spm/domain/Scorecard.java        | 2 +-
 .../src/main/java/org/apache/fineract/spm/domain/Survey.java           | 2 +-
 .../src/main/java/org/apache/fineract/template/domain/Template.java    | 2 +-
 .../main/java/org/apache/fineract/template/domain/TemplateMapper.java  | 2 +-
 .../java/org/apache/fineract/useradministration/domain/AppUser.java    | 2 +-
 .../fineract/useradministration/domain/AppUserClientMapping.java       | 2 +-
 .../fineract/useradministration/domain/AppUserPreviousPassword.java    | 2 +-
 .../fineract/useradministration/domain/PasswordValidationPolicy.java   | 2 +-
 .../java/org/apache/fineract/useradministration/domain/Permission.java | 2 +-
 .../main/java/org/apache/fineract/useradministration/domain/Role.java  | 2 +-
 190 files changed, 190 insertions(+), 191 deletions(-)

diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/domain/GLClosure.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/domain/GLClosure.java
index 7e029b8..9d7840d 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/domain/GLClosure.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/closure/domain/GLClosure.java
@@ -38,7 +38,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
 
 @Entity
 @Table(name = "acc_gl_closure", uniqueConstraints = { @UniqueConstraint(columnNames = { "office_id", "closing_date" }, name = "office_id_closing_date") })
-public class GLClosure extends AbstractAuditableCustom<AppUser, Long> {
+public class GLClosure extends AbstractAuditableCustom {
 
     @ManyToOne
     @JoinColumn(name = "office_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccount.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccount.java
index 6527993..ff17724 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccount.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccount.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "acc_gl_financial_activity_account")
-public class FinancialActivityAccount extends AbstractPersistableCustom<Long> {
+public class FinancialActivityAccount extends AbstractPersistableCustom {
 
     @ManyToOne(fetch = FetchType.EAGER)
     @JoinColumn(name = "gl_account_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccount.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccount.java
index ceaa681..f864842 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccount.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/GLAccount.java
@@ -39,7 +39,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "acc_gl_account", uniqueConstraints = { @UniqueConstraint(columnNames = { "gl_code" }, name = "acc_gl_code") })
-public class GLAccount extends AbstractPersistableCustom<Long> {
+public class GLAccount extends AbstractPersistableCustom {
 
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "parent_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java
index 8e9543a..9951ad6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_trial_balance")
-public class TrialBalance extends AbstractPersistableCustom<Long> {
+public class TrialBalance extends AbstractPersistableCustom {
 
     @Column(name = "office_id", nullable = false)
     private Long officeId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java
index 666c47a..7a19501 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java
@@ -40,7 +40,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
 
 @Entity
 @Table(name = "acc_gl_journal_entry")
-public class JournalEntry extends AbstractAuditableCustom<AppUser, Long> {
+public class JournalEntry extends AbstractAuditableCustom {
 
     @ManyToOne
     @JoinColumn(name = "office_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMapping.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMapping.java
index d67cdf3..14a9762 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMapping.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMapping.java
@@ -32,7 +32,7 @@ import org.apache.fineract.portfolio.paymenttype.domain.PaymentType;
 @Entity
 @Table(name = "acc_product_mapping", uniqueConstraints = { @UniqueConstraint(columnNames = { "product_id", "product_type",
         "financial_account_type", "payment_type" }, name = "financial_action") })
-public class ProductToGLAccountMapping extends AbstractPersistableCustom<Long> {
+public class ProductToGLAccountMapping extends AbstractPersistableCustom {
 
     @ManyToOne(optional=true)
     @JoinColumn(name = "gl_account_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java
index f31474a..7ca5588 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/LoanProductProvisioningEntry.java
@@ -33,7 +33,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct;
 
 @Entity
 @Table(name = "m_loanproduct_provisioning_entry")
-public class LoanProductProvisioningEntry extends AbstractPersistableCustom<Long> {
+public class LoanProductProvisioningEntry extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "history_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntry.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntry.java
index ca83c1c..6ca0658 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntry.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/domain/ProvisioningEntry.java
@@ -37,7 +37,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
 
 @Entity
 @Table(name = "m_provisioning_history")
-public class ProvisioningEntry extends AbstractPersistableCustom<Long> {
+public class ProvisioningEntry extends AbstractPersistableCustom {
 
     @Column(name = "journal_entry_created")
     private Boolean isJournalEntryCreated;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRule.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRule.java
index 143b24b..c10b7cb 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRule.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRule.java
@@ -43,7 +43,7 @@ import org.apache.fineract.organisation.office.domain.Office;
 
 @Entity
 @Table(name = "acc_accounting_rule", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "accounting_rule_name_unique") })
-public class AccountingRule extends AbstractPersistableCustom<Long> {
+public class AccountingRule extends AbstractPersistableCustom {
 
     @Column(name = "name", nullable = false, length = 500)
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingTagRule.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingTagRule.java
index 54d343a..6af091e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingTagRule.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingTagRule.java
@@ -30,7 +30,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "acc_rule_tags", uniqueConstraints = { @UniqueConstraint(columnNames = { "acc_rule_id", "tag_id", "acc_type_enum" }, name = "UNIQUE_ACCOUNT_RULE_TAGS") })
-public class AccountingTagRule extends AbstractPersistableCustom<Long> {
+public class AccountingTagRule extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "acc_rule_id", nullable = false)
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 bb098a3..b92807a 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
@@ -34,7 +34,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
 
 @Entity
 @Table(name = "m_adhoc")
-public class AdHoc extends AbstractAuditableCustom<AppUser, Long> {
+public class AdHoc extends AbstractAuditableCustom {
 
       @Column(name = "name", length = 100)
     private  String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandSource.java b/fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandSource.java
index 216d6b2..c6f843e 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandSource.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/commands/domain/CommandSource.java
@@ -34,7 +34,7 @@ import org.joda.time.DateTime;
 
 @Entity
 @Table(name = "m_portfolio_command_source")
-public class CommandSource extends AbstractPersistableCustom<Long> {
+public class CommandSource extends AbstractPersistableCustom {
 
     @Column(name = "action_name", nullable = true, length = 100)
     private String actionName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/AccountNumberFormat.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/AccountNumberFormat.java
index 150d8a1..58d6a87 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/AccountNumberFormat.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/accountnumberformat/domain/AccountNumberFormat.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = AccountNumberFormatConstants.ACCOUNT_NUMBER_FORMAT_TABLE_NAME, uniqueConstraints = { @UniqueConstraint(columnNames = { AccountNumberFormatConstants.ACCOUNT_TYPE_ENUM_COLUMN_NAME }, name = AccountNumberFormatConstants.ACCOUNT_TYPE_UNIQUE_CONSTRAINT_NAME) })
-public class AccountNumberFormat extends AbstractPersistableCustom<Long> {
+public class AccountNumberFormat extends AbstractPersistableCustom {
 
     @Column(name = AccountNumberFormatConstants.ACCOUNT_TYPE_ENUM_COLUMN_NAME, nullable = false)
     private Integer accountTypeEnum;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/domain/ImportDocument.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/domain/ImportDocument.java
index 4d17b33..a8d8a7e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/domain/ImportDocument.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/domain/ImportDocument.java
@@ -34,7 +34,7 @@ import org.joda.time.LocalDateTime;
 
 @Entity
 @Table(name = "m_import_document")
-public class ImportDocument extends AbstractPersistableCustom<Long>{
+public class ImportDocument extends AbstractPersistableCustom{
 
     @OneToOne
     @JoinColumn(name = "document_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/cache/domain/PlatformCache.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/cache/domain/PlatformCache.java
index e695797..abc02ee 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/cache/domain/PlatformCache.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/cache/domain/PlatformCache.java
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "c_cache")
-public class PlatformCache extends AbstractPersistableCustom<Long> {
+public class PlatformCache extends AbstractPersistableCustom {
 
     @Column(name = "cache_type_enum")
     private Integer cacheType;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailCampaign.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailCampaign.java
index 6529397..0230e67 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailCampaign.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailCampaign.java
@@ -50,7 +50,7 @@ import org.joda.time.format.DateTimeFormatter;
 
 @Entity
 @Table(name = "scheduled_email_campaign")
-public class EmailCampaign extends AbstractPersistableCustom<Long> {
+public class EmailCampaign extends AbstractPersistableCustom {
 
     @Column(name = "campaign_name", nullable = false)
     private String campaignName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailConfiguration.java
index 069c986..5f06f48 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailConfiguration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailConfiguration.java
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "scheduled_email_configuration")
-public class EmailConfiguration extends AbstractPersistableCustom<Long> {
+public class EmailConfiguration extends AbstractPersistableCustom {
     @Column(name = "name", nullable = false)
     private String name;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessage.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessage.java
index bee7d23..ddea717 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessage.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/email/domain/EmailMessage.java
@@ -39,7 +39,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "scheduled_email_messages_outbound")
-public class EmailMessage extends AbstractPersistableCustom<Long> {
+public class EmailMessage extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "group_id", nullable = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaign.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaign.java
index c72deaf..089fcc5 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaign.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/campaigns/sms/domain/SmsCampaign.java
@@ -54,7 +54,7 @@ import org.joda.time.format.DateTimeFormatter;
 
 @Entity
 @Table(name = "sms_campaign", uniqueConstraints = {@UniqueConstraint(columnNames = { "campaign_name" }, name = "campaign_name_UNIQUE")})
-public class SmsCampaign extends AbstractPersistableCustom<Long> {
+public class SmsCampaign extends AbstractPersistableCustom {
 
     @Column(name = "campaign_name", nullable = false)
     private String campaignName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java
index d5728c5..18e1c3b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/Code.java
@@ -35,7 +35,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_code", uniqueConstraints = { @UniqueConstraint(columnNames = { "code_name" }, name = "code_name") })
-public class Code extends AbstractPersistableCustom<Long> {
+public class Code extends AbstractPersistableCustom {
 
     @Column(name = "code_name", length = 100)
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java
index 3857ff1..87fd6cc 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/codes/domain/CodeValue.java
@@ -34,7 +34,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_code_value", uniqueConstraints = { @UniqueConstraint(columnNames = { "code_id", "code_value" }, name = "code_value_duplicate") })
-public class CodeValue extends AbstractPersistableCustom<Long> {
+public class CodeValue extends AbstractPersistableCustom {
 
     @Column(name = "code_value", length = 100)
     private String label;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalService.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalService.java
index 22fc6cd..31b4ac6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/ExternalService.java
@@ -26,7 +26,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "c_external_service", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "name_UNIQUE") })
-public class ExternalService extends AbstractPersistableCustom<Long> {
+public class ExternalService extends AbstractPersistableCustom {
 
     @Column(name = "name", length = 50)
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationProperty.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationProperty.java
index c7089ae..6dc15ef 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationProperty.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationProperty.java
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.security.exception.ForcePasswordResetE
 
 @Entity
 @Table(name = "c_configuration")
-public class GlobalConfigurationProperty extends AbstractPersistableCustom<Long> {
+public class GlobalConfigurationProperty extends AbstractPersistableCustom {
 
     @Column(name = "name", nullable = false)
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
index 41a615f..db0cf98 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractAuditableCustom.java
@@ -18,7 +18,6 @@
  */
 package org.apache.fineract.infrastructure.core.domain;
 
-import java.io.Serializable;
 import java.time.Instant;
 import java.util.Date;
 import java.util.Optional;
@@ -46,7 +45,7 @@ import org.springframework.data.jpa.domain.AbstractAuditable;
  *            the type of the auditing type's identifier
  */
 @MappedSuperclass
-public abstract class AbstractAuditableCustom<U, PK extends Serializable> extends AbstractPersistableCustom<PK> implements Auditable<AppUser, Long, Instant> {
+public abstract class AbstractAuditableCustom extends AbstractPersistableCustom implements Auditable<AppUser, Long, Instant> {
 
     private static final long serialVersionUID = 141481953116476081L;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
index 1670922..c7e3663 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/domain/AbstractPersistableCustom.java
@@ -38,7 +38,7 @@ import org.springframework.data.domain.Persistable;
  * "we end up with issues on OpenJPA" (TODO clarify this).
  */
 @MappedSuperclass
-public abstract class AbstractPersistableCustom<PK extends Serializable> implements Persistable<Long>, Serializable {
+public abstract class AbstractPersistableCustom implements Persistable<Long>, Serializable {
 
     private static final long serialVersionUID = 9181640245194392646L;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureau.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureau.java
index b9a4823..b46d46a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureau.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureau.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_creditbureau")
-public class CreditBureau extends AbstractPersistableCustom<Long> {
+public class CreditBureau extends AbstractPersistableCustom {
 
 
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauConfiguration.java
index 54e8a4d..d6f8191 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauConfiguration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauConfiguration.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_creditbureau_configuration")
-public class CreditBureauConfiguration extends AbstractPersistableCustom<Long> {
+public class CreditBureauConfiguration extends AbstractPersistableCustom {
     @Column(name = "configkey")
     private String configurationKey;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauLoanProductMapping.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauLoanProductMapping.java
index 91162ec..7e3e572 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauLoanProductMapping.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/CreditBureauLoanProductMapping.java
@@ -30,7 +30,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct;
 
 @Entity
 @Table(name = "m_creditbureau_loanproduct_mapping")
-public class CreditBureauLoanProductMapping extends AbstractPersistableCustom<Long> {
+public class CreditBureauLoanProductMapping extends AbstractPersistableCustom {
 
     @Column(name = "is_CreditCheck_Mandatory")
     private boolean isCreditCheckMandatory;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/OrganisationCreditBureau.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/OrganisationCreditBureau.java
index cbd0115..b60fc24 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/OrganisationCreditBureau.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/creditbureau/domain/OrganisationCreditBureau.java
@@ -30,7 +30,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_organisation_creditbureau")
-public class OrganisationCreditBureau extends AbstractPersistableCustom<Long> {
+public class OrganisationCreditBureau extends AbstractPersistableCustom {
 
     private String alias;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/EntityDatatableChecks.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/EntityDatatableChecks.java
index 07e8173..d3a55e1 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/EntityDatatableChecks.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/EntityDatatableChecks.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 @Entity
 @Table(name = "m_entity_datatable_check")
 
-public class EntityDatatableChecks extends AbstractPersistableCustom<Long> {
+public class EntityDatatableChecks extends AbstractPersistableCustom {
 
     @Column(name = "application_table_name", nullable = false)
     private String entity;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java
index b1500d8..0b5894a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/Report.java
@@ -43,7 +43,7 @@ import org.apache.fineract.infrastructure.core.exception.PlatformDataIntegrityEx
 
 @Entity
 @Table(name = "stretchy_report", uniqueConstraints = { @UniqueConstraint(columnNames = { "report_name" }, name = "unq_report_name") })
-public final class Report extends AbstractPersistableCustom<Long> {
+public final class Report extends AbstractPersistableCustom {
 
     @Column(name = "report_name", nullable = false, unique = true)
     private String reportName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameter.java
index 6a43ac3..80d212b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameter.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameter.java
@@ -24,7 +24,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "stretchy_parameter")
-public class ReportParameter extends AbstractPersistableCustom<Long> {
+public class ReportParameter extends AbstractPersistableCustom {
 
     protected ReportParameter() {
         //
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsage.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsage.java
index ba5ba22..2924b94 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsage.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/domain/ReportParameterUsage.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "stretchy_report_parameter")
-public final class ReportParameterUsage extends AbstractPersistableCustom<Long> {
+public final class ReportParameterUsage extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "report_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Document.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Document.java
index 022da29..c20db2a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Document.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Document.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.documentmanagement.command.DocumentCom
 
 @Entity
 @Table(name = "m_document")
-public class Document extends AbstractPersistableCustom<Long> {
+public class Document extends AbstractPersistableCustom {
 
     @Column(name = "parent_entity_type", length = 50)
     private String parentEntityType;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Image.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Image.java
index 76c255b..a7231e0 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Image.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/documentmanagement/domain/Image.java
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_image")
-public final class Image extends AbstractPersistableCustom<Long> {
+public final class Image extends AbstractPersistableCustom {
 
     @Column(name = "location", length = 500)
     private String location;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccess.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccess.java
index 4293cc3..77c431c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccess.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityAccess.java
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.entityaccess.FineractEntityAccessConst
 
 @Entity
 @Table(name = "m_entity_to_entity_access")
-public class FineractEntityAccess extends AbstractPersistableCustom<Long> {
+public class FineractEntityAccess extends AbstractPersistableCustom {
 
     @Column(name = "entity_type", length = 50)
     private String entityType;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelation.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelation.java
index 23786d4..5a53ff8 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelation.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityRelation.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_entity_relation")
-public class FineractEntityRelation extends AbstractPersistableCustom<Long> {
+public class FineractEntityRelation extends AbstractPersistableCustom {
 
     @OneToMany(cascade = CascadeType.ALL, mappedBy = "relationId", orphanRemoval = true)
     private Set<FineractEntityToEntityMapping> fineractEntityToEntityMapping = new HashSet<>();
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMapping.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMapping.java
index e922ac8..e9ef0f3 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMapping.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/entityaccess/domain/FineractEntityToEntityMapping.java
@@ -36,7 +36,7 @@ import org.apache.fineract.infrastructure.entityaccess.exception.FineractEntityT
 
 @Entity
 @Table(name = "m_entity_to_entity_mapping", uniqueConstraints = { @UniqueConstraint(columnNames = { "rel_id", "from_id", "to_id" }) })
-public class FineractEntityToEntityMapping extends AbstractPersistableCustom<Long> {
+public class FineractEntityToEntityMapping extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "rel_id")
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 d1bbd66..d82b3ec 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<Long> {
+public 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/hooks/domain/Hook.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/Hook.java
index ddedb56..e65f8ef 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/Hook.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/Hook.java
@@ -47,7 +47,7 @@ import org.springframework.util.CollectionUtils;
 
 @Entity
 @Table(name = "m_hook")
-public class Hook extends AbstractAuditableCustom<AppUser, Long> {
+public class Hook extends AbstractAuditableCustom {
 
     @Column(name = "name", nullable = false, length = 100)
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookConfiguration.java
index 456a01d..88bd25d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookConfiguration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookConfiguration.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_hook_configuration")
-public class HookConfiguration extends AbstractPersistableCustom<Long> {
+public class HookConfiguration extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "hook_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookResource.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookResource.java
index f52901c..46f496f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookResource.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookResource.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_hook_registered_events")
-public class HookResource extends AbstractPersistableCustom<Long> {
+public class HookResource extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "hook_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookTemplate.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookTemplate.java
index b208bf9..e92b9b2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookTemplate.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/HookTemplate.java
@@ -34,7 +34,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_hook_templates")
-public class HookTemplate extends AbstractPersistableCustom<Long> {
+public class HookTemplate extends AbstractPersistableCustom {
 
     @Column(name = "name", nullable = false, length = 100)
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/Schema.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/Schema.java
index fd49263..3a387de 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/Schema.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/hooks/domain/Schema.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_hook_schema")
-public class Schema extends AbstractPersistableCustom<Long> {
+public class Schema extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "hook_template_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/JobParameter.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/JobParameter.java
index 7871625..515b648 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/JobParameter.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/JobParameter.java
@@ -26,7 +26,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "job_parameters")
-public class JobParameter extends AbstractPersistableCustom<Long> {
+public class JobParameter extends AbstractPersistableCustom {
 
     @Column(name = "job_id", nullable = false)
     private Long jobId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobDetail.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobDetail.java
index cf01c86..9a2c92c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobDetail.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobDetail.java
@@ -33,7 +33,7 @@ import org.apache.fineract.infrastructure.jobs.api.SchedulerJobApiConstants;
 
 @Entity
 @Table(name = "job")
-public class ScheduledJobDetail extends AbstractPersistableCustom<Long> {
+public class ScheduledJobDetail extends AbstractPersistableCustom {
 
     @Column(name = "name")
     private String jobName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobRunHistory.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobRunHistory.java
index 6df115c..202e24d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobRunHistory.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/ScheduledJobRunHistory.java
@@ -30,7 +30,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "job_run_history")
-public class ScheduledJobRunHistory extends AbstractPersistableCustom<Long> {
+public class ScheduledJobRunHistory extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "job_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/SchedulerDetail.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/SchedulerDetail.java
index 43cd9ec..8f65980 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/SchedulerDetail.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/jobs/domain/SchedulerDetail.java
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "scheduler_detail")
-public class SchedulerDetail extends AbstractPersistableCustom<Long> {
+public class SchedulerDetail extends AbstractPersistableCustom {
 
     @Column(name = "execute_misfired_jobs")
     private boolean executeInstructionForMisfiredJobs;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJob.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJob.java
index 373dc18..ce30f35 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJob.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJob.java
@@ -44,7 +44,7 @@ import org.joda.time.format.DateTimeFormatter;
 
 @Entity
 @Table(name = "m_report_mailing_job", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "unique_name") })
-public class ReportMailingJob extends AbstractAuditableCustom<AppUser, Long> {
+public class ReportMailingJob extends AbstractAuditableCustom {
     private static final long serialVersionUID = -2197602941230009227L;
 
     @Column(name = "name", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java
index 43d7cfe..3170de2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobConfiguration.java
@@ -26,7 +26,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_report_mailing_job_configuration", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "unique_name") })
-public class ReportMailingJobConfiguration extends AbstractPersistableCustom<Integer> {
+public class ReportMailingJobConfiguration extends AbstractPersistableCustom {
     private static final long serialVersionUID = 3099279770861263184L;
 
     @Column(name = "name", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java
index 5b27b4d..d801b67 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/reportmailingjob/domain/ReportMailingJobRunHistory.java
@@ -31,7 +31,7 @@ import org.joda.time.DateTime;
 
 @Entity
 @Table(name = "m_report_mailing_job_run_history")
-public class ReportMailingJobRunHistory extends AbstractPersistableCustom<Long> {
+public class ReportMailingJobRunHistory extends AbstractPersistableCustom {
     private static final long serialVersionUID = -3757370929988421076L;
 
     @ManyToOne
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java
index bdbeedb..8ae59be 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TFAccessToken.java
@@ -37,7 +37,7 @@ import org.joda.time.LocalDateTime;
 @Entity
 @Table(name = "twofactor_access_token",
         uniqueConstraints = {@UniqueConstraint(columnNames = { "token", "appuser_id" }, name = "token_appuser_UNIQUE")})
-public class TFAccessToken extends AbstractPersistableCustom<Long> {
+public class TFAccessToken extends AbstractPersistableCustom {
 
     @Column(name = "token", nullable = false, length = 32)
     private String token;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java
index ac39188..1c96596 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/domain/TwoFactorConfiguration.java
@@ -30,7 +30,7 @@ import org.apache.fineract.infrastructure.security.constants.TwoFactorConfigurat
 @Entity
 @Table(name = "twofactor_configuration",
         uniqueConstraints = {@UniqueConstraint(columnNames = { "name" }, name = "name_UNIQUE")})
-public class TwoFactorConfiguration extends AbstractPersistableCustom<Long> {
+public class TwoFactorConfiguration extends AbstractPersistableCustom {
 
     @Column(name = "name", nullable = false, length = 32)
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessage.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessage.java
index 416f273..f222f05 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessage.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/domain/SmsMessage.java
@@ -40,7 +40,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "sms_messages_outbound")
-public class SmsMessage extends AbstractPersistableCustom<Long> {
+public class SmsMessage extends AbstractPersistableCustom {
 
     @Column(name = "external_id", nullable = true)
     private String externalId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/domain/Likelihood.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/domain/Likelihood.java
index a9acab8..9368296 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/domain/Likelihood.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/survey/domain/Likelihood.java
@@ -30,7 +30,7 @@ import org.apache.fineract.infrastructure.survey.data.LikelihoodStatus;
 
 @Entity
 @Table(name = "ppi_likelihoods_ppi")
-public final class Likelihood extends AbstractPersistableCustom<Long> {
+public final class Likelihood extends AbstractPersistableCustom {
 
     @Column(name = "ppi_name", nullable = false)
     private String ppiName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifier.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifier.java
index e2b87ee..d129bcb 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifier.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifier.java
@@ -38,7 +38,7 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccount;
         @UniqueConstraint(name = "uk_hathor_identifier_account", columnNames = {"account_id", "type"}),
         @UniqueConstraint(name = "uk_hathor_identifier_value", columnNames = {"type", "a_value", "sub_value_or_type"})
 })
-public class InteropIdentifier extends AbstractPersistableCustom<Long> {
+public class InteropIdentifier extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "account_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/mix/domain/MixTaxonomyMapping.java b/fineract-provider/src/main/java/org/apache/fineract/mix/domain/MixTaxonomyMapping.java
index 576c06f..87e1b03 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/mix/domain/MixTaxonomyMapping.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/mix/domain/MixTaxonomyMapping.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "mix_taxonomy_mapping")
-public class MixTaxonomyMapping extends AbstractPersistableCustom<Long> {
+public class MixTaxonomyMapping extends AbstractPersistableCustom {
 
     @Column(name = "identifier")
     private String identifier;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Notification.java b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Notification.java
index d3bbfd4..ccbc85b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Notification.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Notification.java
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "notification_generator")
-public class Notification extends AbstractPersistableCustom<Long> {
+public class Notification extends AbstractPersistableCustom {
 
     @Column(name = "object_type")
     private String objectType;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/NotificationMapper.java b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/NotificationMapper.java
index c824b04..64188a6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/NotificationMapper.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/NotificationMapper.java
@@ -29,7 +29,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
 
 @Entity
 @Table(name = "notification_mapper")
-public class NotificationMapper extends AbstractPersistableCustom<Long> {
+public class NotificationMapper extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "notification_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Topic.java b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Topic.java
index e1582d3..081fa27 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Topic.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/Topic.java
@@ -26,7 +26,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "topic")
-public class Topic extends AbstractPersistableCustom<Long> {
+public class Topic extends AbstractPersistableCustom {
 
     @Column(name = "title", unique = true, nullable = false, length = 100)
     private String title;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/TopicSubscriber.java b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/TopicSubscriber.java
index 6871470..cf58ceb 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/notification/domain/TopicSubscriber.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/notification/domain/TopicSubscriber.java
@@ -29,7 +29,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
 
 @Entity
 @Table(name = "topic_subscriber")
-public class TopicSubscriber extends AbstractPersistableCustom<Long> {
+public class TopicSubscriber extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "topic_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java
index 21b5779..cfea7c7 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/holiday/domain/Holiday.java
@@ -57,7 +57,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_holiday", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "holiday_name") })
-public class Holiday extends AbstractPersistableCustom<Long> {
+public class Holiday extends AbstractPersistableCustom {
 
     @Column(name = "name", unique = true, nullable = false, length = 100)
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java
index c80ea20..4308f28 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/monetary/domain/ApplicationCurrency.java
@@ -27,7 +27,7 @@ import org.apache.fineract.organisation.office.domain.OrganisationCurrency;
 
 @Entity
 @Table(name = "m_currency")
-public class ApplicationCurrency extends AbstractPersistableCustom<Long> {
+public class ApplicationCurrency extends AbstractPersistableCustom {
 
     @Column(name = "code", nullable = false, length = 3)
     private String code;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/Office.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/Office.java
index c3cdac6..8b7ca05 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/Office.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/Office.java
@@ -44,7 +44,7 @@ import org.joda.time.LocalDate;
 @Entity
 @Table(name = "m_office", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "name_org"),
         @UniqueConstraint(columnNames = { "external_id" }, name = "externalid_org") })
-public class Office extends AbstractPersistableCustom<Long> implements Serializable {
+public class Office extends AbstractPersistableCustom implements Serializable {
 
     @OneToMany(fetch = FetchType.LAZY)
     @JoinColumn(name = "parent_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OfficeTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OfficeTransaction.java
index 322bb3d..362f0de 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OfficeTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OfficeTransaction.java
@@ -37,7 +37,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_office_transaction")
-public class OfficeTransaction extends AbstractPersistableCustom<Long> {
+public class OfficeTransaction extends AbstractPersistableCustom {
 
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "from_office_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OrganisationCurrency.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OrganisationCurrency.java
index dd1115d..f236fa4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OrganisationCurrency.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/office/domain/OrganisationCurrency.java
@@ -29,7 +29,7 @@ import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
  */
 @Entity
 @Table(name = "m_organisation_currency")
-public class OrganisationCurrency extends AbstractPersistableCustom<Long> {
+public class OrganisationCurrency extends AbstractPersistableCustom {
 
     @Column(name = "code", nullable = false, length = 3)
     private String code;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/LoanProductProvisionCriteria.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/LoanProductProvisionCriteria.java
index a3f3b07..3d5fc91 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/LoanProductProvisionCriteria.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/LoanProductProvisionCriteria.java
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct;
 
 @Entity
 @Table(name = "m_loanproduct_provisioning_mapping", uniqueConstraints = { @UniqueConstraint(columnNames = { "product_id" }, name = "product_id") })
-public class LoanProductProvisionCriteria extends AbstractPersistableCustom<Long> {
+public class LoanProductProvisionCriteria extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "criteria_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCategory.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCategory.java
index 5829fec..9653b9a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCategory.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCategory.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_provision_category", uniqueConstraints = { @UniqueConstraint(columnNames = { "category_name" }, name = "category_name") })
-public class ProvisioningCategory extends AbstractPersistableCustom<Long> {
+public class ProvisioningCategory extends AbstractPersistableCustom {
 
     @Column(name = "category_name", nullable = false, unique = true)
     private String categoryName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteria.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteria.java
index 17e5c04..e9a1555 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteria.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteria.java
@@ -42,7 +42,7 @@ import org.joda.time.DateTime;
 
 @Entity
 @Table(name = "m_provisioning_criteria", uniqueConstraints = { @UniqueConstraint(columnNames = { "criteria_name" }, name = "criteria_name") })
-public class ProvisioningCriteria extends AbstractAuditableCustom<AppUser, Long> {
+public class ProvisioningCriteria extends AbstractAuditableCustom {
 
     @Column(name = "criteria_name", nullable = false)
     private String criteriaName;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteriaDefinition.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteriaDefinition.java
index 0e0ba7e..eaa7bf2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteriaDefinition.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/domain/ProvisioningCriteriaDefinition.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_provisioning_criteria_definition")
-public class ProvisioningCriteriaDefinition extends AbstractPersistableCustom<Long> {
+public class ProvisioningCriteriaDefinition extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "criteria_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/domain/Staff.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/domain/Staff.java
index ce1b562..ba95126 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/domain/Staff.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/domain/Staff.java
@@ -42,7 +42,7 @@ import org.joda.time.LocalDate;
 @Table(name = "m_staff", uniqueConstraints = { @UniqueConstraint(columnNames = { "display_name" }, name = "display_name"),
         @UniqueConstraint(columnNames = { "external_id" }, name = "external_id_UNIQUE"),
         @UniqueConstraint(columnNames = { "mobile_no" }, name = "mobile_no_UNIQUE") })
-public class Staff extends AbstractPersistableCustom<Long> {
+public class Staff extends AbstractPersistableCustom {
 
     @Column(name = "firstname", length = 50)
     private String firstname;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Cashier.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Cashier.java
index adb0a41..af2d258 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Cashier.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Cashier.java
@@ -48,7 +48,7 @@ import org.joda.time.LocalDate;
 @Entity
 @Table(name = "m_cashiers", uniqueConstraints = { @UniqueConstraint(name = "ux_cashiers_staff_teller", columnNames = { "staff_id",
         "teller_id" }) })
-public class Cashier extends AbstractPersistableCustom<Long> {
+public class Cashier extends AbstractPersistableCustom {
 
     // ManyToOne(fetch = FetchType.LAZY)
     // JoinColumn(name = "office_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTransaction.java
index a5b0727..d359104 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/CashierTransaction.java
@@ -39,7 +39,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_cashier_transactions")
-public class CashierTransaction extends AbstractPersistableCustom<Long> {
+public class CashierTransaction extends AbstractPersistableCustom {
 
     @Transient
     private Office office;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java
index ac55c8f..9e9940c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java
@@ -43,7 +43,7 @@ import org.joda.time.LocalDate;
 @Table(name = "m_tellers", uniqueConstraints = {
         @UniqueConstraint(name = "ux_tellers_name", columnNames = {"name"})
 })
-public class Teller extends AbstractPersistableCustom<Long> {
+public class Teller extends AbstractPersistableCustom {
 
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "office_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/TellerTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/TellerTransaction.java
index f22a23f..255447d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/TellerTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/domain/TellerTransaction.java
@@ -33,7 +33,7 @@ import org.apache.fineract.portfolio.client.domain.Client;
 
 @Entity
 @Table(name = "m_teller_transactions")
-public class TellerTransaction extends AbstractPersistableCustom<Long> {
+public class TellerTransaction extends AbstractPersistableCustom {
 
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "office_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java
index 18ec0d1..132cb71 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/workingdays/domain/WorkingDays.java
@@ -29,7 +29,7 @@ import org.apache.fineract.organisation.workingdays.api.WorkingDaysApiConstants;
 
 @Entity
 @Table(name = "m_working_days")
-public class WorkingDays extends AbstractPersistableCustom<Long> {
+public class WorkingDays extends AbstractPersistableCustom {
 
     @Column(name = "recurrence", length = 100, nullable = true)
     private String recurrence;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountAssociations.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountAssociations.java
index f9ebb6d..c5d1c1e 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountAssociations.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountAssociations.java
@@ -29,7 +29,7 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccount;
 
 @Entity
 @Table(name = "m_portfolio_account_associations")
-public class AccountAssociations extends AbstractPersistableCustom<Long> {
+public class AccountAssociations extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "loan_account_id", nullable = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferDetails.java
index bb02bb4..9d65a90 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferDetails.java
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccount;
 
 @Entity
 @Table(name = "m_account_transfer_details")
-public class AccountTransferDetails extends AbstractPersistableCustom<Long> {
+public class AccountTransferDetails extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "from_office_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferStandingInstruction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferStandingInstruction.java
index d5b28b7..5be569b 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferStandingInstruction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferStandingInstruction.java
@@ -56,7 +56,7 @@ import org.joda.time.MonthDay;
 
 @Entity
 @Table(name = "m_account_transfer_standing_instructions", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "name") })
-public class AccountTransferStandingInstruction extends AbstractPersistableCustom<Long> {
+public class AccountTransferStandingInstruction extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "account_transfer_details_id", nullable = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferTransaction.java
index 36f6c36..4ecb4a2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/domain/AccountTransferTransaction.java
@@ -37,7 +37,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_account_transfer_transaction")
-public class AccountTransferTransaction extends AbstractPersistableCustom<Long> {
+public class AccountTransferTransaction extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "account_transfer_details_id", nullable = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/Address.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/Address.java
index c8b7f2d..53d2aab 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/Address.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/Address.java
@@ -40,7 +40,7 @@ import org.joda.time.format.DateTimeFormatter;
 
 @Entity
 @Table(name = "m_address")
-public class Address extends AbstractPersistableCustom<Long> {
+public class Address extends AbstractPersistableCustom {
 
     /*
      * @OneToMany(mappedBy = "address", cascade = CascadeType.ALL) private
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/FieldConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/FieldConfiguration.java
index 2b9bd95..0e21768 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/FieldConfiguration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/address/domain/FieldConfiguration.java
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_field_configuration")
-public class FieldConfiguration extends AbstractPersistableCustom<Long> {
+public class FieldConfiguration extends AbstractPersistableCustom {
 
     private String entity;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java
index dd67d64..c938df6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/Calendar.java
@@ -53,7 +53,7 @@ import org.joda.time.LocalDateTime;
 
 @Entity
 @Table(name = "m_calendar")
-public class Calendar extends AbstractAuditableCustom<AppUser, Long> {
+public class Calendar extends AbstractAuditableCustom {
 
     @Column(name = "title", length = 50, nullable = false)
     private String title;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java
index b67a57c..612718a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarHistory.java
@@ -31,7 +31,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_calendar_history")
-public class CalendarHistory extends AbstractPersistableCustom<Long> {
+public class CalendarHistory extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "calendar_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstance.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstance.java
index 923c239..d20428a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstance.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/calendar/domain/CalendarInstance.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_calendar_instance")
-public class CalendarInstance extends AbstractPersistableCustom<Long> {
+public class CalendarInstance extends AbstractPersistableCustom {
 
     @ManyToOne(cascade = CascadeType.PERSIST)
     @JoinColumn(name = "calendar_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java
index 33316a2..7be7908 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/domain/Charge.java
@@ -52,7 +52,7 @@ import org.joda.time.MonthDay;
 
 @Entity
 @Table(name = "m_charge", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "name") })
-public class Charge extends AbstractPersistableCustom<Long> {
+public class Charge extends AbstractPersistableCustom {
 
     @Column(name = "name", length = 100)
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java
index d987109..758a468 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java
@@ -60,7 +60,7 @@ import org.joda.time.format.DateTimeFormatter;
 @Entity
 @Table(name = "m_client", uniqueConstraints = { @UniqueConstraint(columnNames = { "account_no" }, name = "account_no_UNIQUE"), //
         @UniqueConstraint(columnNames = { "mobile_no" }, name = "mobile_no_UNIQUE") })
-public final class Client extends AbstractPersistableCustom<Long> {
+public final class Client extends AbstractPersistableCustom {
 
     @Column(name = "account_no", length = 20, unique = true, nullable = false)
     private String accountNumber;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientAddress.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientAddress.java
index 96ab3fe..f1f1fb2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientAddress.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientAddress.java
@@ -29,7 +29,7 @@ import org.apache.fineract.portfolio.address.domain.Address;
 
 @Entity
 @Table(name = "m_client_address")
-public class ClientAddress extends AbstractPersistableCustom<Long> {
+public class ClientAddress extends AbstractPersistableCustom {
 
     @ManyToOne
     private Client client;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientCharge.java
index 12fa98d..5d8f6a9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientCharge.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientCharge.java
@@ -41,7 +41,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_client_charge")
-public class ClientCharge extends AbstractPersistableCustom<Long> {
+public class ClientCharge extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "client_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientChargePaidBy.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientChargePaidBy.java
index 4f5b968..a50ff8f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientChargePaidBy.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientChargePaidBy.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_client_charge_paid_by")
-public class ClientChargePaidBy extends AbstractPersistableCustom<Long> {
+public class ClientChargePaidBy extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "client_transaction_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java
index 7e63a26..2ff4288 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_family_members")
-public class ClientFamilyMembers extends AbstractPersistableCustom<Long> {
+public class ClientFamilyMembers extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name="client_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientIdentifier.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientIdentifier.java
index 7f69ef4..99829c2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientIdentifier.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientIdentifier.java
@@ -36,7 +36,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
 @Table(name = "m_client_identifier", uniqueConstraints = {
         @UniqueConstraint(columnNames = { "document_type_id", "document_key" }, name = "unique_identifier_key"),
         @UniqueConstraint(columnNames = { "client_id", "document_key", "active" }, name = "unique_active_client_identifier")})
-public class ClientIdentifier extends AbstractAuditableCustom<AppUser, Long> {
+public class ClientIdentifier extends AbstractAuditableCustom {
 
     @ManyToOne
     @JoinColumn(name = "client_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java
index e67f929..0ef1b51 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java
@@ -43,7 +43,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_client_non_person")
-public class ClientNonPerson extends AbstractPersistableCustom<Long> {
+public class ClientNonPerson extends AbstractPersistableCustom {
 
     @OneToOne(optional = false)
     @JoinColumn(name = "client_id", referencedColumnName = "id", nullable = false, unique = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java
index ed3dcd1..91d9ffd 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java
@@ -52,7 +52,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_client_transaction", uniqueConstraints = { @UniqueConstraint(columnNames = { "external_id" }, name = "external_id") })
-public class ClientTransaction extends AbstractPersistableCustom<Long> {
+public class ClientTransaction extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "client_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java
index 3245fc6..f04fc51 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java
@@ -30,7 +30,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 @SuppressWarnings("serial")
 @Entity
 @Table(name = "m_client_transfer_details")
-public class ClientTransferDetails extends AbstractPersistableCustom<Long> {
+public class ClientTransferDetails extends AbstractPersistableCustom {
 
     @Column(name = "client_id", length = 20, unique = true, nullable = false)
     private Long clientId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/domain/LoanCollateral.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/domain/LoanCollateral.java
index de3802a..22582c8 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/domain/LoanCollateral.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/collateral/domain/LoanCollateral.java
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanaccount.domain.Loan;
 
 @Entity
 @Table(name = "m_loan_collateral")
-public class LoanCollateral extends AbstractPersistableCustom<Long> {
+public class LoanCollateral extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRate.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRate.java
index e258c6a..35fff2d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRate.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRate.java
@@ -50,7 +50,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_floating_rates", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "unq_name") })
-public class FloatingRate extends AbstractPersistableCustom<Long> {
+public class FloatingRate extends AbstractPersistableCustom {
 
     @Column(name = "name", length = 200, unique = true, nullable = false)
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java
index 08570a3..bf696b0 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/domain/FloatingRatePeriod.java
@@ -35,7 +35,7 @@ import org.joda.time.LocalDateTime;
 
 @Entity
 @Table(name = "m_floating_rates_periods")
-public class FloatingRatePeriod extends AbstractPersistableCustom<Long> {
+public class FloatingRatePeriod extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "floating_rates_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/domain/Fund.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/domain/Fund.java
index d95641a..a3eaa0e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/domain/Fund.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/fund/domain/Fund.java
@@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 @Entity
 @Table(name = "m_fund", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "fund_name_org"),
         @UniqueConstraint(columnNames = { "external_id" }, name = "fund_externalid_org") })
-public class Fund extends AbstractPersistableCustom<Long> {
+public class Fund extends AbstractPersistableCustom {
 
     @Column(name = "name")
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java
index d456e3f..9a14145 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/Group.java
@@ -63,7 +63,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_group")
-public final class Group extends AbstractPersistableCustom<Long> {
+public final class Group extends AbstractPersistableCustom {
 
     @Column(name = "external_id", length = 100, unique = true)
     private String externalId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupLevel.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupLevel.java
index f39dfa0..35b9cf0 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupLevel.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupLevel.java
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_group_level")
-public class GroupLevel extends AbstractPersistableCustom<Long> {
+public class GroupLevel extends AbstractPersistableCustom {
 
     @Column(name = "parent_id")
     private Long parentId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRole.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRole.java
index 6a61c08..c2a2f9b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRole.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/GroupRole.java
@@ -33,7 +33,7 @@ import org.apache.fineract.portfolio.group.api.GroupingTypesApiConstants;
 
 @Entity
 @Table(name = "m_group_roles")
-public class GroupRole extends AbstractPersistableCustom<Long> {
+public class GroupRole extends AbstractPersistableCustom {
 
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "group_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/StaffAssignmentHistory.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/StaffAssignmentHistory.java
index 261e4a9..11b8575 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/StaffAssignmentHistory.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/group/domain/StaffAssignmentHistory.java
@@ -33,7 +33,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_staff_assignment_history")
-public class StaffAssignmentHistory extends AbstractAuditableCustom<AppUser, Long> {
+public class StaffAssignmentHistory extends AbstractAuditableCustom {
 
     @ManyToOne
     @JoinColumn(name = "centre_id", nullable = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentives.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentives.java
index 7919951..937095f 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentives.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentives.java
@@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_interest_incentives")
-public class InterestIncentives extends AbstractPersistableCustom<Long> {
+public class InterestIncentives extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "interest_rate_slab_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChart.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChart.java
index 06b084c..970f847 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChart.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChart.java
@@ -58,7 +58,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_interest_rate_chart")
-public class InterestRateChart extends AbstractPersistableCustom<Long> {
+public class InterestRateChart extends AbstractPersistableCustom {
 
     @Embedded
     private InterestRateChartFields chartFields;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlab.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlab.java
index 30a610d..2632adb 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlab.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlab.java
@@ -56,7 +56,7 @@ import org.apache.fineract.portfolio.interestratechart.InterestRateChartSlabApiC
 
 @Entity
 @Table(name = "m_interest_rate_slab")
-public class InterestRateChartSlab extends AbstractPersistableCustom<Long> {
+public class InterestRateChartSlab extends AbstractPersistableCustom {
 
     @Embedded
     private InterestRateChartSlabFields slabFields;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
index 5a979c8..eff1c24 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
@@ -147,7 +147,7 @@ import org.springframework.stereotype.Component;
 @Component
 @Table(name = "m_loan", uniqueConstraints = { @UniqueConstraint(columnNames = { "account_no" }, name = "loan_account_no_UNIQUE"),
         @UniqueConstraint(columnNames = { "external_id" }, name = "loan_externalid_UNIQUE") })
-public class Loan extends AbstractPersistableCustom<Long> {
+public class Loan extends AbstractPersistableCustom {
 
     /** Disable optimistic locking till batch jobs failures can be fixed **/
     @Version
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java
index f2ec60b..b7b9526 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java
@@ -56,7 +56,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_loan_charge")
-public class LoanCharge extends AbstractPersistableCustom<Long> {
+public class LoanCharge extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "loan_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java
index 51671b7..083d2c5 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanChargePaidBy.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_loan_charge_paid_by")
-public class LoanChargePaidBy extends AbstractPersistableCustom<Long> {
+public class LoanChargePaidBy extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "loan_transaction_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java
index 3ab27b3..be707f4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java
@@ -34,7 +34,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_loan_disbursement_detail")
-public class LoanDisbursementDetails extends AbstractPersistableCustom<Long> {
+public class LoanDisbursementDetails extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java
index 7ff2919..696423d 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInstallmentCharge.java
@@ -30,7 +30,7 @@ import org.apache.fineract.organisation.monetary.domain.Money;
 
 @Entity
 @Table(name = "m_loan_installment_charge")
-public class LoanInstallmentCharge extends AbstractPersistableCustom<Long> implements Comparable<LoanInstallmentCharge> {
+public class LoanInstallmentCharge extends AbstractPersistableCustom implements Comparable<LoanInstallmentCharge> {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "loan_charge_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalcualtionAdditionalDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalcualtionAdditionalDetails.java
index a4b257b..25d67e1 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalcualtionAdditionalDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalcualtionAdditionalDetails.java
@@ -30,7 +30,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_loan_interest_recalculation_additional_details")
-public class LoanInterestRecalcualtionAdditionalDetails extends AbstractPersistableCustom<Long> {
+public class LoanInterestRecalcualtionAdditionalDetails extends AbstractPersistableCustom {
 
     @Temporal(TemporalType.DATE)
     @Column(name = "effective_date")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java
index 662137b..1d1f5f6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanInterestRecalculationDetails.java
@@ -38,7 +38,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.RecalculationFrequencyTy
 
 @Entity
 @Table(name = "m_loan_recalculation_details")
-public class LoanInterestRecalculationDetails extends AbstractPersistableCustom<Long> {
+public class LoanInterestRecalculationDetails extends AbstractPersistableCustom {
 
     @OneToOne
     @JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOfficerAssignmentHistory.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOfficerAssignmentHistory.java
index 92510a5..779ef44 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOfficerAssignmentHistory.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOfficerAssignmentHistory.java
@@ -34,7 +34,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_loan_officer_assignment_history")
-public class LoanOfficerAssignmentHistory extends AbstractAuditableCustom<AppUser, Long> {
+public class LoanOfficerAssignmentHistory extends AbstractAuditableCustom {
 
     @ManyToOne
     @JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOverdueInstallmentCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOverdueInstallmentCharge.java
index 8ca59c4..cb3d244 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOverdueInstallmentCharge.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanOverdueInstallmentCharge.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_loan_overdue_installment_charge")
-public class LoanOverdueInstallmentCharge extends AbstractPersistableCustom<Long> {
+public class LoanOverdueInstallmentCharge extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "loan_charge_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java
index 0b50e38..3555cbf 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java
@@ -41,7 +41,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_loan_repayment_schedule")
-public final class LoanRepaymentScheduleInstallment extends AbstractAuditableCustom<AppUser, Long> implements Comparable<LoanRepaymentScheduleInstallment> {
+public final class LoanRepaymentScheduleInstallment extends AbstractAuditableCustom implements Comparable<LoanRepaymentScheduleInstallment> {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "loan_id", referencedColumnName="id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRescheduleRequestToTermVariationMapping.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRescheduleRequestToTermVariationMapping.java
index 676ae5a..d3798bb 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRescheduleRequestToTermVariationMapping.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRescheduleRequestToTermVariationMapping.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name="m_loan_reschedule_request_term_variations_mapping")
-public class LoanRescheduleRequestToTermVariationMapping extends AbstractPersistableCustom<Long> {
+public class LoanRescheduleRequestToTermVariationMapping extends AbstractPersistableCustom {
 
 
     @ManyToOne(optional = false, cascade = CascadeType.PERSIST)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java
index 801ae4c..8c3408c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTermVariations.java
@@ -37,7 +37,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_loan_term_variations")
-public class LoanTermVariations extends AbstractPersistableCustom<Long> {
+public class LoanTermVariations extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTopupDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTopupDetails.java
index fe20bf9..12a670e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTopupDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTopupDetails.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_loan_topup")
-public class LoanTopupDetails  extends AbstractPersistableCustom<Long> {
+public class LoanTopupDetails  extends AbstractPersistableCustom {
 
         @OneToOne
         @JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java
index 9d1bb36..267c20b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheCharge.java
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.charge.domain.Charge;
 
 @Entity
 @Table(name = "m_loan_tranche_charges")
-public class LoanTrancheCharge extends AbstractPersistableCustom<Long> {
+public class LoanTrancheCharge extends AbstractPersistableCustom {
 
     @ManyToOne(cascade = CascadeType.ALL, optional = false)
     @JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java
index 73fe0e4..9a309ba 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTrancheDisbursementCharge.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name="m_loan_tranche_disbursement_charge")
-public class LoanTrancheDisbursementCharge extends AbstractPersistableCustom<Long> {
+public class LoanTrancheDisbursementCharge extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "loan_charge_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java
index 5956a8e..83cfaba 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java
@@ -60,7 +60,7 @@ import org.joda.time.LocalDateTime;
  */
 @Entity
 @Table(name = "m_loan_transaction", uniqueConstraints = { @UniqueConstraint(columnNames = { "external_id" }, name = "external_id_UNIQUE") })
-public class LoanTransaction extends AbstractPersistableCustom<Long> {
+public class LoanTransaction extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionToRepaymentScheduleMapping.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionToRepaymentScheduleMapping.java
index cc2d50c..cea9f34 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionToRepaymentScheduleMapping.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionToRepaymentScheduleMapping.java
@@ -31,7 +31,7 @@ import org.apache.fineract.organisation.monetary.domain.Money;
 
 @Entity
 @Table(name = "m_loan_transaction_repayment_schedule_mapping")
-public class LoanTransactionToRepaymentScheduleMapping extends AbstractPersistableCustom<Long> {
+public class LoanTransactionToRepaymentScheduleMapping extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false, cascade = CascadeType.PERSIST)
     @JoinColumn(name = "loan_repayment_schedule_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/Guarantor.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/Guarantor.java
index 4c60d13..3164918 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/Guarantor.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/Guarantor.java
@@ -42,7 +42,7 @@ import org.apache.fineract.portfolio.loanaccount.guarantor.GuarantorConstants.GU
 
 @Entity
 @Table(name = "m_guarantor")
-public class Guarantor extends AbstractPersistableCustom<Long> {
+public class Guarantor extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingDetails.java
index 25f5ebb..0f70c22 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingDetails.java
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccount;
 
 @Entity
 @Table(name = "m_guarantor_funding_details")
-public class GuarantorFundingDetails extends AbstractPersistableCustom<Long> {
+public class GuarantorFundingDetails extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "guarantor_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingTransaction.java
index 231f56d..56ff79f 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/domain/GuarantorFundingTransaction.java
@@ -31,7 +31,7 @@ import org.apache.fineract.portfolio.savings.domain.DepositAccountOnHoldTransact
 
 @Entity
 @Table(name = "m_guarantor_transaction")
-public class GuarantorFundingTransaction extends AbstractPersistableCustom<Long> {
+public class GuarantorFundingTransaction extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "guarantor_fund_detail_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanRepaymentScheduleHistory.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanRepaymentScheduleHistory.java
index df78fed..516912e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanRepaymentScheduleHistory.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanRepaymentScheduleHistory.java
@@ -35,7 +35,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
 
 @Entity
 @Table(name = "m_loan_repayment_schedule_history")
-public class LoanRepaymentScheduleHistory extends AbstractPersistableCustom<Long> {
+public class LoanRepaymentScheduleHistory extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "loan_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequest.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequest.java
index da8461a..e86ab0f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequest.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/domain/LoanRescheduleRequest.java
@@ -43,7 +43,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_loan_reschedule_request")
-public class LoanRescheduleRequest extends AbstractPersistableCustom<Long> {
+public class LoanRescheduleRequest extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "loan_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java
index d64dd56..5d78a58 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProduct.java
@@ -77,7 +77,7 @@ import org.joda.time.LocalDate;
 @Table(name = "m_product_loan", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "unq_name"),
         @UniqueConstraint(columnNames = { "external_id" }, name = "external_id_UNIQUE"),
         @UniqueConstraint(columnNames = { "short_name" }, name = "unq_short_name") })
-public class LoanProduct extends AbstractPersistableCustom<Long> {
+public class LoanProduct extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "fund_id", nullable = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductBorrowerCycleVariations.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductBorrowerCycleVariations.java
index d0d4300..280bbd9 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductBorrowerCycleVariations.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductBorrowerCycleVariations.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_product_loan_variations_borrower_cycle")
-public class LoanProductBorrowerCycleVariations extends AbstractPersistableCustom<Long> {
+public class LoanProductBorrowerCycleVariations extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "loan_product_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductConfigurableAttributes.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductConfigurableAttributes.java
index bf2ab98..3d9133c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductConfigurableAttributes.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductConfigurableAttributes.java
@@ -31,7 +31,7 @@ import org.apache.fineract.portfolio.loanproduct.LoanProductConstants;
 
 @Entity
 @Table(name = "m_product_loan_configurable_attributes")
-public class LoanProductConfigurableAttributes extends AbstractPersistableCustom<Long> implements Serializable {
+public class LoanProductConfigurableAttributes extends AbstractPersistableCustom implements Serializable {
 
     @ManyToOne
     @JoinColumn(name = "loan_product_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java
index 2f36cc8..cb430d3 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductFloatingRates.java
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.floatingrates.domain.FloatingRate;
 
 @Entity
 @Table(name = "m_product_loan_floating_rates")
-public class LoanProductFloatingRates extends AbstractPersistableCustom<Long> {
+public class LoanProductFloatingRates extends AbstractPersistableCustom {
 
     @OneToOne
     @JoinColumn(name = "loan_product_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java
index 5c2efcc..8f246a2 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductGuaranteeDetails.java
@@ -37,7 +37,7 @@ import org.apache.fineract.portfolio.loanproduct.LoanProductConstants;
 
 @Entity
 @Table(name = "m_product_loan_guarantee_details")
-public class LoanProductGuaranteeDetails extends AbstractPersistableCustom<Long> {
+public class LoanProductGuaranteeDetails extends AbstractPersistableCustom {
 
     @OneToOne
     @JoinColumn(name = "loan_product_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java
index 9b34734..ab338c2 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductInterestRecalculationDetails.java
@@ -36,7 +36,7 @@ import org.apache.fineract.portfolio.loanproduct.LoanProductConstants;
 
 @Entity
 @Table(name = "m_product_loan_recalculation_details")
-public class LoanProductInterestRecalculationDetails extends AbstractPersistableCustom<Long> {
+public class LoanProductInterestRecalculationDetails extends AbstractPersistableCustom {
 
     @OneToOne
     @JoinColumn(name = "product_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductVariableInstallmentConfig.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductVariableInstallmentConfig.java
index bad0cef..889fd95 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductVariableInstallmentConfig.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanProductVariableInstallmentConfig.java
@@ -31,7 +31,7 @@ import org.apache.fineract.portfolio.loanproduct.LoanProductConstants;
 
 @Entity
 @Table(name = "m_product_loan_variable_installment_config")
-public class LoanProductVariableInstallmentConfig extends AbstractPersistableCustom<Long> {
+public class LoanProductVariableInstallmentConfig extends AbstractPersistableCustom {
 
     @OneToOne
     @JoinColumn(name = "loan_product_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanTransactionProcessingStrategy.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanTransactionProcessingStrategy.java
index e6e28a5..f5c3168 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanTransactionProcessingStrategy.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/domain/LoanTransactionProcessingStrategy.java
@@ -26,7 +26,7 @@ import org.apache.fineract.portfolio.loanproduct.data.TransactionProcessingStrat
 
 @Entity
 @Table(name = "ref_loan_transaction_processing_strategy")
-public class LoanTransactionProcessingStrategy extends AbstractPersistableCustom<Long> {
+public class LoanTransactionProcessingStrategy extends AbstractPersistableCustom {
 
     @Column(name = "code", unique = true)
     private String code;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/domain/ProductMix.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/domain/ProductMix.java
index 7079949..4ca7d30 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/domain/ProductMix.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/productmix/domain/ProductMix.java
@@ -27,7 +27,7 @@ import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct;
 
 @Entity
 @Table(name = "m_product_mix")
-public class ProductMix extends AbstractPersistableCustom<Long> {
+public class ProductMix extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "product_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/attendance/domain/ClientAttendance.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/attendance/domain/ClientAttendance.java
index b47673b..e28a859 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/attendance/domain/ClientAttendance.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/attendance/domain/ClientAttendance.java
@@ -30,7 +30,7 @@ import org.apache.fineract.portfolio.meeting.domain.Meeting;
 
 @Entity
 @Table(name = "m_client_attendance", uniqueConstraints = { @UniqueConstraint(columnNames = { "client_id", "meeting_id" }, name = "unique_client_meeting_attendance") })
-public class ClientAttendance extends AbstractPersistableCustom<Long> {
+public class ClientAttendance extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "client_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/Meeting.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/Meeting.java
index 970c253..104b19a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/Meeting.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/meeting/domain/Meeting.java
@@ -53,7 +53,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_meeting", uniqueConstraints = { @UniqueConstraint(columnNames = { "calendar_instance_id", "meeting_date" }, name = "unique_calendar_instance_id_meeting_date") })
-public class Meeting extends AbstractPersistableCustom<Long> {
+public class Meeting extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "calendar_instance_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/Note.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/Note.java
index fd44317..4e3e8a0 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/Note.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/Note.java
@@ -39,7 +39,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
 
 @Entity
 @Table(name = "m_note")
-public class Note extends AbstractAuditableCustom<AppUser, Long> {
+public class Note extends AbstractAuditableCustom {
 
     @ManyToOne
     @JoinColumn(name = "client_id", nullable = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetail.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetail.java
index c101bfc..66351f2 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetail.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymentdetail/domain/PaymentDetail.java
@@ -34,7 +34,7 @@ import org.apache.fineract.portfolio.paymenttype.domain.PaymentType;
 
 @Entity
 @Table(name = "m_payment_detail")
-public final class PaymentDetail extends AbstractPersistableCustom<Long> {
+public final class PaymentDetail extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "payment_type_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java
index 914dd42..36e5acb 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/paymenttype/domain/PaymentType.java
@@ -31,7 +31,7 @@ import org.apache.fineract.portfolio.paymenttype.data.PaymentTypeData;
 
 @Entity
 @Table(name = "m_payment_type")
-public class PaymentType extends AbstractPersistableCustom<Long> {
+public class PaymentType extends AbstractPersistableCustom {
 
     @Column(name = "value")
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java
index 50d322a..444cda3 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/rate/domain/Rate.java
@@ -41,7 +41,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
 @Entity
 @Table(name = "m_rate", uniqueConstraints = {
     @UniqueConstraint(columnNames = {"name"}, name = "name")})
-public class Rate extends AbstractAuditableCustom<AppUser, Long> {
+public class Rate extends AbstractAuditableCustom {
 
   @Column(name = "name", length = 250, unique = true)
   private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentive.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentive.java
index a6a4d94..2974d0f 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentive.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentive.java
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.interestratechart.domain.InterestIncentives
 
 @Entity
 @Table(name = "m_deposit_account_interest_incentives")
-public class DepositAccountInterestIncentive extends AbstractPersistableCustom<Long> {
+public class DepositAccountInterestIncentive extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "deposit_account_interest_rate_slab_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentives.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentives.java
index a75684a..d09aec5 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentives.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentives.java
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.interestratechart.domain.InterestIncentives
 
 @Entity
 @Table(name = "m_savings_interest_incentives")
-public class DepositAccountInterestIncentives extends AbstractPersistableCustom<Long> {
+public class DepositAccountInterestIncentives extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "deposit_account_interest_rate_slab_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChart.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChart.java
index b5d09f3..068d926 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChart.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChart.java
@@ -41,7 +41,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_savings_account_interest_rate_chart")
-public class DepositAccountInterestRateChart extends AbstractPersistableCustom<Long> {
+public class DepositAccountInterestRateChart extends AbstractPersistableCustom {
 
     @Embedded
     private InterestRateChartFields chartFields;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChartSlabs.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChartSlabs.java
index a4cced7..3c4c292 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChartSlabs.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChartSlabs.java
@@ -35,7 +35,7 @@ import org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartS
 
 @Entity
 @Table(name = "m_savings_account_interest_rate_slab")
-public class DepositAccountInterestRateChartSlabs extends AbstractPersistableCustom<Long> {
+public class DepositAccountInterestRateChartSlabs extends AbstractPersistableCustom {
 
     @Embedded
     private InterestRateChartSlabFields slabFields;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransaction.java
index 3e31cc6..c321fc0 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransaction.java
@@ -38,7 +38,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_deposit_account_on_hold_transaction")
-public class DepositAccountOnHoldTransaction extends AbstractPersistableCustom<Long> {
+public class DepositAccountOnHoldTransaction extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "savings_account_id", nullable = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java
index 8c1fd7c..0a6c32e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java
@@ -43,7 +43,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_deposit_account_recurring_detail")
-public class DepositAccountRecurringDetail extends AbstractPersistableCustom<Long> {
+public class DepositAccountRecurringDetail extends AbstractPersistableCustom {
 
     @Column(name = "mandatory_recommended_deposit_amount", scale = 6, precision = 19, nullable = true)
     private BigDecimal mandatoryRecommendedDepositAmount;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountTermAndPreClosure.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountTermAndPreClosure.java
index acb55f7..3b833a5 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountTermAndPreClosure.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountTermAndPreClosure.java
@@ -52,7 +52,7 @@ import org.joda.time.Years;
 
 @Entity
 @Table(name = "m_deposit_account_term_and_preclosure")
-public class DepositAccountTermAndPreClosure extends AbstractPersistableCustom<Long> {
+public class DepositAccountTermAndPreClosure extends AbstractPersistableCustom {
 
     @Column(name = "deposit_amount", scale = 6, precision = 19, nullable = true)
     private BigDecimal depositAmount;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductRecurringDetail.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductRecurringDetail.java
index a5ea5ab..70b755a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductRecurringDetail.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductRecurringDetail.java
@@ -30,7 +30,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_deposit_product_recurring_detail")
-public class DepositProductRecurringDetail extends AbstractPersistableCustom<Long> {
+public class DepositProductRecurringDetail extends AbstractPersistableCustom {
 
     @Embedded
     private DepositRecurringDetail recurringDetail;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductTermAndPreClosure.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductTermAndPreClosure.java
index aea2d97..869f448 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductTermAndPreClosure.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductTermAndPreClosure.java
@@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_deposit_product_term_and_preclosure")
-public class DepositProductTermAndPreClosure extends AbstractPersistableCustom<Long> {
+public class DepositProductTermAndPreClosure extends AbstractPersistableCustom {
 
     @Embedded
     private DepositPreClosureDetail preClosureDetail;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositScheduleInstallment.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositScheduleInstallment.java
index e8e0f1d..fa52402 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositScheduleInstallment.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositScheduleInstallment.java
@@ -35,7 +35,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_mandatory_savings_schedule")
-public class RecurringDepositScheduleInstallment extends AbstractAuditableCustom<AppUser, Long> {
+public class RecurringDepositScheduleInstallment extends AbstractAuditableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "savings_account_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java
index 2fa29c6..a0e6920 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java
@@ -125,7 +125,7 @@ import org.springframework.util.CollectionUtils;
 @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
 @DiscriminatorColumn(name = "deposit_type_enum", discriminatorType = DiscriminatorType.INTEGER)
 @DiscriminatorValue("100")
-public class SavingsAccount extends AbstractPersistableCustom<Long> {
+public class SavingsAccount extends AbstractPersistableCustom {
 
     @Version
     int version;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java
index 0c2c337..34c838e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java
@@ -57,7 +57,7 @@ import org.joda.time.MonthDay;
  */
 @Entity
 @Table(name = "m_savings_account_charge")
-public class SavingsAccountCharge extends AbstractPersistableCustom<Long> {
+public class SavingsAccountCharge extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "savings_account_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargePaidBy.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargePaidBy.java
index 467d338..e2a7fbf 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargePaidBy.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargePaidBy.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_savings_account_charge_paid_by")
-public class SavingsAccountChargePaidBy extends AbstractPersistableCustom<Long> {
+public class SavingsAccountChargePaidBy extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "savings_account_transaction_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java
index 3846db8..c1532b6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java
@@ -60,7 +60,7 @@ import org.springframework.util.CollectionUtils;
  */
 @Entity
 @Table(name = "m_savings_account_transaction")
-public final class SavingsAccountTransaction extends AbstractPersistableCustom<Long> {
+public final class SavingsAccountTransaction extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "savings_account_id", referencedColumnName="id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionTaxDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionTaxDetails.java
index c4c6016..1f6ce1e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionTaxDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionTaxDetails.java
@@ -30,7 +30,7 @@ import org.apache.fineract.portfolio.tax.domain.TaxComponent;
 
 @Entity
 @Table(name = "m_savings_account_transaction_tax_details")
-public class SavingsAccountTransactionTaxDetails extends AbstractPersistableCustom<Long> {
+public class SavingsAccountTransactionTaxDetails extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "tax_component_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsOfficerAssignmentHistory.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsOfficerAssignmentHistory.java
index 56d9d65..9da08fb 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsOfficerAssignmentHistory.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsOfficerAssignmentHistory.java
@@ -34,7 +34,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_savings_officer_assignment_history")
-public class SavingsOfficerAssignmentHistory extends AbstractAuditableCustom<AppUser, Long> {
+public class SavingsOfficerAssignmentHistory extends AbstractAuditableCustom {
 
     @ManyToOne
     @JoinColumn(name = "account_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProduct.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProduct.java
index 6dc6953..bdc79fc 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProduct.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProduct.java
@@ -96,7 +96,7 @@ import org.joda.time.LocalDate;
 @Inheritance
 @DiscriminatorColumn(name = "deposit_type_enum", discriminatorType = DiscriminatorType.INTEGER)
 @DiscriminatorValue("100")
-public class SavingsProduct extends AbstractPersistableCustom<Long> {
+public class SavingsProduct extends AbstractPersistableCustom {
 
     @Column(name = "name", nullable = false, unique = true)
     protected String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/domain/SelfBeneficiariesTPT.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/domain/SelfBeneficiariesTPT.java
index 90586e1..ea9b7c5 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/domain/SelfBeneficiariesTPT.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/account/domain/SelfBeneficiariesTPT.java
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 @Entity
 @Table(name = "m_selfservice_beneficiaries_tpt", uniqueConstraints = { @UniqueConstraint(columnNames = {
         "name", "app_user_id", "is_active" }, name = "name") })
-public class SelfBeneficiariesTPT extends AbstractPersistableCustom<Long> {
+public class SelfBeneficiariesTPT extends AbstractPersistableCustom {
 
     @Column(name = "app_user_id", nullable = false)
     private Long appUserId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/Pocket.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/Pocket.java
index da0ea8d..9ceabfc 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/Pocket.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/Pocket.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 @Entity
 @Table(name = "m_pocket", uniqueConstraints = {
         @UniqueConstraint(columnNames = { "app_user_id" }, name = "unique_app_user") })
-public class Pocket extends AbstractPersistableCustom<Long> {
+public class Pocket extends AbstractPersistableCustom {
 
     @Column(name = "app_user_id", length = 20, nullable = false)
     private Long appUserId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/PocketAccountMapping.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/PocketAccountMapping.java
index 536547c..c18a535 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/PocketAccountMapping.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/pockets/domain/PocketAccountMapping.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 @SuppressWarnings("serial")
 @Entity
 @Table(name = "m_pocket_accounts_mapping")
-public class PocketAccountMapping extends AbstractPersistableCustom<Long> {
+public class PocketAccountMapping extends AbstractPersistableCustom {
 
     @Column(name = "pocket_id", length = 20, nullable = false)
     private Long pocketId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/registration/domain/SelfServiceRegistration.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/registration/domain/SelfServiceRegistration.java
index ac091f2..9f9916b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/registration/domain/SelfServiceRegistration.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/registration/domain/SelfServiceRegistration.java
@@ -31,7 +31,7 @@ import org.apache.fineract.portfolio.client.domain.Client;
 
 @Entity
 @Table(name = "request_audit_table")
-public class SelfServiceRegistration extends AbstractPersistableCustom<Long> {
+public class SelfServiceRegistration extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "client_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java
index e54cd7a..3f0f82f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java
@@ -47,7 +47,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
 
 @Entity
 @Table(name = "m_share_account")
-public class ShareAccount extends AbstractPersistableCustom<Long> {
+public class ShareAccount extends AbstractPersistableCustom {
 
     @ManyToOne
     @JoinColumn(name = "client_id", nullable = true)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountCharge.java
index dccd2b2..f9a4e77 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountCharge.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountCharge.java
@@ -35,7 +35,7 @@ import org.apache.fineract.portfolio.charge.domain.ChargeTimeType;
 
 @Entity
 @Table(name = "m_share_account_charge")
-public class ShareAccountCharge extends AbstractPersistableCustom<Long> {
+public class ShareAccountCharge extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "account_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountChargePaidBy.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountChargePaidBy.java
index acbe2d9..b9be358 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountChargePaidBy.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountChargePaidBy.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_share_account_charge_paid_by")
-public class ShareAccountChargePaidBy extends AbstractPersistableCustom<Long>{
+public class ShareAccountChargePaidBy extends AbstractPersistableCustom{
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "share_transaction_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountDividendDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountDividendDetails.java
index 630cf5a..5427010 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountDividendDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountDividendDetails.java
@@ -26,7 +26,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_share_account_dividend_details")
-public class ShareAccountDividendDetails extends AbstractPersistableCustom<Long> {
+public class ShareAccountDividendDetails extends AbstractPersistableCustom {
 
     @Column(name = "account_id", nullable = false)
     private Long shareAccountId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java
index ee14a33..493e266 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java
@@ -36,7 +36,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_share_account_transactions")
-public class ShareAccountTransaction extends AbstractPersistableCustom<Long> {
+public class ShareAccountTransaction extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "account_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java
index d274504..5f1ba65 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java
@@ -51,7 +51,7 @@ import org.joda.time.DateTime;
 @SuppressWarnings("serial")
 @Entity
 @Table(name = "m_share_product")
-public class ShareProduct extends AbstractAuditableCustom<AppUser, Long> {
+public class ShareProduct extends AbstractAuditableCustom {
 
     @Column(name = "name", nullable = false, unique = true)
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductDividendPayOutDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductDividendPayOutDetails.java
index 56eb8f3..f53d48e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductDividendPayOutDetails.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductDividendPayOutDetails.java
@@ -38,7 +38,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_share_product_dividend_pay_out")
-public class ShareProductDividendPayOutDetails extends AbstractAuditableCustom<AppUser, Long> {
+public class ShareProductDividendPayOutDetails extends AbstractAuditableCustom {
 
     @Column(name = "product_id", nullable = true)
     private Long shareProductId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductMarketPrice.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductMarketPrice.java
index 1ada050..642342d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductMarketPrice.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProductMarketPrice.java
@@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_share_product_market_price")
-public class ShareProductMarketPrice extends AbstractPersistableCustom<Long> {
+public class ShareProductMarketPrice extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false)
     @JoinColumn(name = "product_id", referencedColumnName = "id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java
index 09ceb4e..307dfce 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponent.java
@@ -49,7 +49,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_tax_component")
-public class TaxComponent extends AbstractAuditableCustom<AppUser, Long> {
+public class TaxComponent extends AbstractAuditableCustom {
 
     @Column(name = "name", length = 100)
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java
index a1c2e1f..b355971 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentHistory.java
@@ -31,7 +31,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_tax_component_history")
-public class TaxComponentHistory extends AbstractAuditableCustom<AppUser, Long> {
+public class TaxComponentHistory extends AbstractAuditableCustom {
 
     @Column(name = "percentage", scale = 6, precision = 19, nullable = false)
     private BigDecimal percentage;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java
index 97eb93e..75347b6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroup.java
@@ -40,7 +40,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
 
 @Entity
 @Table(name = "m_tax_group")
-public class TaxGroup extends AbstractAuditableCustom<AppUser, Long> {
+public class TaxGroup extends AbstractAuditableCustom {
 
     @Column(name = "name", length = 100)
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupMappings.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupMappings.java
index f923d1b..2460275 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupMappings.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupMappings.java
@@ -36,7 +36,7 @@ import org.joda.time.LocalDate;
 
 @Entity
 @Table(name = "m_tax_group_mappings")
-public class TaxGroupMappings extends AbstractAuditableCustom<AppUser, Long> {
+public class TaxGroupMappings extends AbstractAuditableCustom {
 
     @ManyToOne
     @JoinColumn(name = "tax_component_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Component.java b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Component.java
index 517f62f..f8eba19 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Component.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Component.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_survey_components")
-public class Component extends AbstractPersistableCustom<Long> {
+public class Component extends AbstractPersistableCustom {
 
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "survey_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/LookupTable.java b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/LookupTable.java
index 034fb45..9714ef5 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/LookupTable.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/LookupTable.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_survey_lookup_tables")
-public class LookupTable extends AbstractPersistableCustom<Long> {
+public class LookupTable extends AbstractPersistableCustom {
 
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "survey_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Question.java b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Question.java
index 61644c4..405330e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Question.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Question.java
@@ -32,7 +32,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_survey_questions")
-public class Question extends AbstractPersistableCustom<Long> {
+public class Question extends AbstractPersistableCustom {
 
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "survey_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Response.java b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Response.java
index 748a0c7..6f06854 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Response.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Response.java
@@ -28,7 +28,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_survey_responses")
-public class Response extends AbstractPersistableCustom<Long> {
+public class Response extends AbstractPersistableCustom {
 
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "question_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Scorecard.java b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Scorecard.java
index 3587ee1..97a2a5b 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Scorecard.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Scorecard.java
@@ -34,7 +34,7 @@ import org.apache.fineract.useradministration.domain.AppUser;
 
 @Entity
 @Table(name = "m_survey_scorecards")
-public class Scorecard extends AbstractPersistableCustom<Long> {
+public class Scorecard extends AbstractPersistableCustom {
 
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "survey_id")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Survey.java b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Survey.java
index 994b0f3..7a62ad5 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Survey.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/spm/domain/Survey.java
@@ -34,7 +34,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_surveys")
-public class Survey extends AbstractPersistableCustom<Long> {
+public class Survey extends AbstractPersistableCustom {
 
     @OneToMany(mappedBy = "survey", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval=true)
     @OrderBy("sequenceNo")
diff --git a/fineract-provider/src/main/java/org/apache/fineract/template/domain/Template.java b/fineract-provider/src/main/java/org/apache/fineract/template/domain/Template.java
index 02a66d6..54f165d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/template/domain/Template.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/template/domain/Template.java
@@ -41,7 +41,7 @@ import org.codehaus.jackson.map.annotate.JsonSerialize;
 
 @Entity
 @Table(name = "m_template", uniqueConstraints = {@UniqueConstraint(columnNames = {"name"}, name = "unq_name")})
-public class Template extends AbstractPersistableCustom<Long> {
+public class Template extends AbstractPersistableCustom {
 
     @Column(name = "name", nullable = false, unique = true)
     private String name;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateMapper.java b/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateMapper.java
index a3aac47..fd94024 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateMapper.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/template/domain/TemplateMapper.java
@@ -25,7 +25,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_templatemappers")
-public class TemplateMapper extends AbstractPersistableCustom<Long> {
+public class TemplateMapper extends AbstractPersistableCustom {
 
     @Column(name = "mapperorder")
     private int mapperorder;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java
index 9d864b2..baafc7d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUser.java
@@ -59,7 +59,7 @@ import org.springframework.security.core.userdetails.User;
 
 @Entity
 @Table(name = "m_appuser", uniqueConstraints = @UniqueConstraint(columnNames = { "username" }, name = "username_org"))
-public class AppUser extends AbstractPersistableCustom<Long> implements PlatformUser {
+public class AppUser extends AbstractPersistableCustom implements PlatformUser {
 
     private final static Logger logger = LoggerFactory.getLogger(AppUser.class);
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java
index d51089e..4ab5b5e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserClientMapping.java
@@ -28,7 +28,7 @@ import org.apache.fineract.portfolio.client.domain.Client;
 
 @Entity
 @Table(name = "m_selfservice_user_client_mapping")
-public class AppUserClientMapping extends AbstractPersistableCustom<Long> {
+public class AppUserClientMapping extends AbstractPersistableCustom {
 
     @ManyToOne(optional = false, cascade = CascadeType.PERSIST)
     @JoinColumn(name = "client_id", nullable = false)
diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserPreviousPassword.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserPreviousPassword.java
index 81a7b8d..160005d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserPreviousPassword.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/AppUserPreviousPassword.java
@@ -29,7 +29,7 @@ import org.apache.fineract.infrastructure.core.service.DateUtils;
 
 @Entity
 @Table(name = "m_appuser_previous_password")
-public class AppUserPreviousPassword extends AbstractPersistableCustom<Long> {
+public class AppUserPreviousPassword extends AbstractPersistableCustom {
 
     @Column(name = "user_id", nullable = false)
     private Long userId;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/PasswordValidationPolicy.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/PasswordValidationPolicy.java
index 56c7f49..66e0114 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/PasswordValidationPolicy.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/PasswordValidationPolicy.java
@@ -27,7 +27,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_password_validation_policy")
-public class PasswordValidationPolicy extends AbstractPersistableCustom<Long> {
+public class PasswordValidationPolicy extends AbstractPersistableCustom {
 
     @Column(name = "regex", nullable = false)
     private String regex;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Permission.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Permission.java
index eb7421e..4d6c979 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Permission.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Permission.java
@@ -26,7 +26,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @Entity
 @Table(name = "m_permission")
-public class Permission extends AbstractPersistableCustom<Long> implements Serializable {
+public class Permission extends AbstractPersistableCustom implements Serializable {
 
     @Column(name = "grouping", nullable = false, length = 45)
     private String grouping;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Role.java b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Role.java
index 5c2dc75..3dad910 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Role.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/useradministration/domain/Role.java
@@ -38,7 +38,7 @@ import org.apache.fineract.useradministration.data.RoleData;
 
 @Entity
 @Table(name = "m_role", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "unq_name") })
-public class Role extends AbstractPersistableCustom<Long> implements Serializable {
+public class Role extends AbstractPersistableCustom implements Serializable {
 
     @Column(name = "name", unique = true, nullable = false, length = 100)
     private String name;