FINERACT-1932: Fineract modularization - fineract-savings
diff --git a/build.gradle b/build.gradle
index 9b1a179..a1d1b41 100644
--- a/build.gradle
+++ b/build.gradle
@@ -31,6 +31,7 @@
                 'fineract-provider',
                 'fineract-investor',
                 'fineract-loan',
+                'fineract-savings',
                 'integration-tests',
                 'twofactor-tests',
                 'oauth2-tests',
@@ -46,7 +47,8 @@
                 'fineract-core',
                 'fineract-provider',
                 'fineract-investor',
-                'fineract-loan'
+                'fineract-loan',
+                'fineract-savings'
             ].contains(it.name)
         }
         npmRepository = 'https://npm.pkg.github.com'
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/api/DataTableApiConstant.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/api/DataTableApiConstant.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/api/DataTableApiConstant.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/api/DataTableApiConstant.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DataTableValidator.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DataTableValidator.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DataTableValidator.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DataTableValidator.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableCheckStatusData.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableCheckStatusData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableCheckStatusData.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableCheckStatusData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableChecksData.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableChecksData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableChecksData.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/DatatableChecksData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/EntityDataTableChecksData.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/EntityDataTableChecksData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/EntityDataTableChecksData.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/EntityDataTableChecksData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/EntityTables.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/EntityTables.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/EntityTables.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/EntityTables.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/GenericResultsetData.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/GenericResultsetData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/GenericResultsetData.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/GenericResultsetData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportData.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportData.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportExportType.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportExportType.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportExportType.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportExportType.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterData.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterData.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterJoinData.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterJoinData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterJoinData.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ReportParameterJoinData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetRowData.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetRowData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetRowData.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/ResultsetRowData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/StatusEnum.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/StatusEnum.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/StatusEnum.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/data/StatusEnum.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataService.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataService.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/GenericDataService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataService.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataService.java
rename to fineract-core/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/ReadWriteNonCoreDataService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/InvalidCurrencyException.java b/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/exception/InvalidCurrencyException.java
similarity index 95%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/InvalidCurrencyException.java
rename to fineract-core/src/main/java/org/apache/fineract/organisation/monetary/exception/InvalidCurrencyException.java
index 3a965bb..40aa519 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/exception/InvalidCurrencyException.java
+++ b/fineract-core/src/main/java/org/apache/fineract/organisation/monetary/exception/InvalidCurrencyException.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.fineract.portfolio.loanproduct.exception;
+package org.apache.fineract.organisation.monetary.exception;
 
 import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeAppliedToException.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeAppliedToException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeAppliedToException.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/charge/exception/ChargeCannotBeAppliedToException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/CollectionSheetConstants.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/collectionsheet/CollectionSheetConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/collectionsheet/CollectionSheetConstants.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/collectionsheet/CollectionSheetConstants.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/ConditionType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/ConditionType.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/common/domain/ConditionType.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/common/domain/ConditionType.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/CommonEnumerations.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/common/service/CommonEnumerations.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/common/service/CommonEnumerations.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/common/service/CommonEnumerations.java
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanStatus.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanStatus.java
similarity index 100%
rename from fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanStatus.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanStatus.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/SearchConstants.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/search/SearchConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/search/SearchConstants.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/search/SearchConstants.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQueryDataValidator.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQueryDataValidator.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQueryDataValidator.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQueryDataValidator.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQuerySearchConditions.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQuerySearchConditions.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQuerySearchConditions.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQuerySearchConditions.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQuerySearchConstants.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQuerySearchConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQuerySearchConstants.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/AdHocQuerySearchConstants.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdvancedQueryData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/AdvancedQueryData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdvancedQueryData.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/AdvancedQueryData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdvancedQueryRequest.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/AdvancedQueryRequest.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/AdvancedQueryRequest.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/AdvancedQueryRequest.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/ColumnFilterData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/ColumnFilterData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/ColumnFilterData.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/ColumnFilterData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/FilterData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/FilterData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/FilterData.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/FilterData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/SearchConditions.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/SearchConditions.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/SearchConditions.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/SearchConditions.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/SearchData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/SearchData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/SearchData.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/SearchData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/TableQueryData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/TableQueryData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/TableQueryData.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/TableQueryData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/TransactionSearchRequest.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/TransactionSearchRequest.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/search/data/TransactionSearchRequest.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/search/data/TransactionSearchRequest.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchUtil.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/search/service/SearchUtil.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchUtil.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/search/service/SearchUtil.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepository.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepository.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepository.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepository.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepositoryWrapper.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepositoryWrapper.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepositoryWrapper.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxComponentRepositoryWrapper.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepository.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepository.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepository.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepository.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepositoryWrapper.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepositoryWrapper.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepositoryWrapper.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/domain/TaxGroupRepositoryWrapper.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxComponentNotFoundException.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxComponentNotFoundException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxComponentNotFoundException.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxComponentNotFoundException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxGroupNotFoundException.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxGroupNotFoundException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxGroupNotFoundException.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/exception/TaxGroupNotFoundException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxUtils.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/tax/service/TaxUtils.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/tax/service/TaxUtils.java
rename to fineract-core/src/main/java/org/apache/fineract/portfolio/tax/service/TaxUtils.java
diff --git a/fineract-provider/dependencies.gradle b/fineract-provider/dependencies.gradle
index 60a5e7c..8589a9c 100644
--- a/fineract-provider/dependencies.gradle
+++ b/fineract-provider/dependencies.gradle
@@ -21,6 +21,7 @@
     implementation(project(path: ':fineract-core'))
     implementation(project(path: ':fineract-investor'))
     implementation(project(path: ':fineract-loan'))
+    implementation(project(path: ':fineract-savings'))
     providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
 
     // Never use "compile" scope, but make all dependencies either 'implementation', 'runtimeOnly' or 'testCompile'.
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransactionData.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransactionData.java
index 64d45ef..4822098 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransactionData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransactionData.java
@@ -21,41 +21,18 @@
 import jakarta.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.time.LocalDate;
+import lombok.Getter;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import org.apache.fineract.infrastructure.core.service.MathUtil;
-import org.apache.fineract.portfolio.note.domain.Note;
 import org.apache.fineract.portfolio.savings.SavingsAccountTransactionType;
 import org.apache.fineract.portfolio.savings.domain.SavingsAccount;
 import org.apache.fineract.portfolio.savings.domain.SavingsAccountChargePaidBy;
 import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction;
 import org.apache.fineract.portfolio.savings.service.SavingsEnumerations;
 
+@Getter
 public class InteropTransactionData extends CommandProcessingResult {
 
-    // private final SavingsAccountTransactionEnumData transactionType;
-    // private final PaymentDetailData paymentDetailData;
-    // private final BigDecimal outstandingChargeAmount;
-    // private final boolean reversed;
-    // private final AccountTransferData transfer;
-    // private final LocalDate submittedOnDate;
-    // private final boolean interestedPostedAsOn;
-    // private final String submittedByUsername;
-    // // templates
-    // final Collection<PaymentTypeData> paymentTypeOptions;
-    // //import fields
-    // private Long paymentTypeId;
-    // private String checkNumber;
-    // private String routingCode;
-    // private String receiptNumber;
-    // private String bankNumber;
-
-    // private String transactionReference;
-    // private String statementReference;
-    // private CreditDebitType creditDebit;
-    // private TransactionStatus status;
-    // private String transactionInformation;
-    // private String addressLine;
-
     @NotNull
     private final String accountId;
     @NotNull
@@ -75,7 +52,7 @@
     @NotNull
     private final LocalDate valueDateTime;
 
-    private final String note;
+    private String note;
 
     public InteropTransactionData(Long entityId, String accountId, String transactionId, SavingsAccountTransactionType transactionType,
             BigDecimal amount, BigDecimal chargeAmount, String currency, BigDecimal accountBalance, LocalDate bookingDateTime,
@@ -117,33 +94,14 @@
         LocalDate valueDateTime = endOfBalanceLocalDate == null ? bookingDateTime : endOfBalanceLocalDate;
 
         StringBuilder sb = new StringBuilder();
-        int currLength = 0;
-        for (Note note : transaction.getNotes()) {
-            String s = note.getNote();
-            if (s == null) {
-                continue;
-            }
-
-            int availableLength = 500 - currLength;
-            if (availableLength <= 1) {
-                break;
-            }
-
-            if (currLength > 0) {
-                sb.append(' ');
-                availableLength--;
-            }
-            if (s.length() > availableLength) {
-                s = s.substring(availableLength);
-            }
-            sb.append(s);
-            currLength = sb.length();
-        }
-        if (currLength == 0) {
-            sb.append(SavingsEnumerations.transactionType(transactionType).getValue());
-        }
+        sb.append(SavingsEnumerations.transactionType(transactionType).getValue());
 
         return new InteropTransactionData(savingsAccount.getId(), savingsAccount.getExternalId().getValue(), transactionId, transactionType,
                 amount, chargeAmount, currency, runningBalance, bookingDateTime, valueDateTime, sb.toString());
     }
+
+    public void updateNote(String note) {
+        this.note = note;
+    }
+
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransactionsData.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransactionsData.java
index 34c25ca..f3d13e4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransactionsData.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropTransactionsData.java
@@ -22,11 +22,15 @@
 import java.util.List;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
+import lombok.Getter;
+import lombok.Setter;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import org.apache.fineract.infrastructure.core.service.DateUtils;
 import org.apache.fineract.portfolio.savings.domain.SavingsAccount;
 import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction;
 
+@Getter
+@Setter
 public class InteropTransactionsData extends CommandProcessingResult {
 
     List<InteropTransactionData> transactions;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropServiceImpl.java
index 2cae4bb..0947168 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/interoperation/service/InteropServiceImpl.java
@@ -64,6 +64,7 @@
 import org.apache.fineract.interoperation.data.InteropQuoteRequestData;
 import org.apache.fineract.interoperation.data.InteropQuoteResponseData;
 import org.apache.fineract.interoperation.data.InteropRequestData;
+import org.apache.fineract.interoperation.data.InteropTransactionData;
 import org.apache.fineract.interoperation.data.InteropTransactionRequestData;
 import org.apache.fineract.interoperation.data.InteropTransactionRequestResponseData;
 import org.apache.fineract.interoperation.data.InteropTransactionsData;
@@ -218,7 +219,27 @@
             return (transactionsTo == null || transactionsTo.compareTo(transactionDate) > 0) && (transactionsFrom == null
                     || transactionsFrom.compareTo(transactionDate.withHour(23).withMinute(59).withSecond(59)) <= 0);
         };
-        return InteropTransactionsData.build(savingsAccount, transFilter);
+        InteropTransactionsData interopTransactionsData = InteropTransactionsData.build(savingsAccount, transFilter);
+        for (InteropTransactionData interopTransactionData : interopTransactionsData.getTransactions()) {
+            final List<Note> transactionNotes = noteRepository
+                    .findBySavingsTransactionId(Long.valueOf(interopTransactionData.getTransactionId()));
+            StringBuilder sb = new StringBuilder();
+            for (final Note note : transactionNotes) {
+                String s = note.getNote();
+                if (s == null) {
+                    continue;
+                }
+                sb.append(s + " ");
+            }
+            if (sb.toString().length() > 0) {
+                String text = interopTransactionData.getNote() + " " + sb.toString();
+                if (text.length() > 500) {
+                    text = text.substring(0, 500);
+                }
+                interopTransactionData.updateNote(text);
+            }
+        }
+        return interopTransactionsData;
     }
 
     @NotNull
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java
index 2264b9c..26f0f11 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssembler.java
@@ -39,6 +39,7 @@
 import org.apache.fineract.organisation.holiday.domain.Holiday;
 import org.apache.fineract.organisation.holiday.domain.HolidayRepository;
 import org.apache.fineract.organisation.holiday.domain.HolidayStatusType;
+import org.apache.fineract.organisation.monetary.exception.InvalidCurrencyException;
 import org.apache.fineract.organisation.staff.domain.Staff;
 import org.apache.fineract.organisation.staff.domain.StaffRepository;
 import org.apache.fineract.organisation.staff.exception.StaffNotFoundException;
@@ -81,7 +82,6 @@
 import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct;
 import org.apache.fineract.portfolio.loanproduct.domain.LoanProductRelatedDetail;
 import org.apache.fineract.portfolio.loanproduct.domain.LoanProductRepository;
-import org.apache.fineract.portfolio.loanproduct.exception.InvalidCurrencyException;
 import org.apache.fineract.portfolio.loanproduct.exception.LinkedAccountRequiredException;
 import org.apache.fineract.portfolio.loanproduct.exception.LoanProductNotFoundException;
 import org.apache.fineract.portfolio.rate.domain.Rate;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java
index 5e96c43..1b2f76a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java
@@ -60,6 +60,7 @@
 import org.apache.fineract.infrastructure.event.business.service.BusinessEventNotifierService;
 import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
 import org.apache.fineract.organisation.monetary.domain.Money;
+import org.apache.fineract.organisation.monetary.exception.InvalidCurrencyException;
 import org.apache.fineract.portfolio.account.PortfolioAccountType;
 import org.apache.fineract.portfolio.account.data.AccountTransferDTO;
 import org.apache.fineract.portfolio.account.data.PortfolioAccountData;
@@ -125,7 +126,6 @@
 import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.ScheduledDateGenerator;
 import org.apache.fineract.portfolio.loanaccount.serialization.LoanChargeApiJsonValidator;
 import org.apache.fineract.portfolio.loanproduct.data.LoanOverdueDTO;
-import org.apache.fineract.portfolio.loanproduct.exception.InvalidCurrencyException;
 import org.apache.fineract.portfolio.loanproduct.exception.LinkedAccountRequiredException;
 import org.apache.fineract.portfolio.note.domain.Note;
 import org.apache.fineract.portfolio.note.domain.NoteRepository;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java
index a47fe5e..26f0f67 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanproduct/service/LoanProductWritePlatformServiceJpaRepositoryImpl.java
@@ -40,6 +40,7 @@
 import org.apache.fineract.infrastructure.event.business.domain.loan.product.LoanProductCreateBusinessEvent;
 import org.apache.fineract.infrastructure.event.business.service.BusinessEventNotifierService;
 import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
+import org.apache.fineract.organisation.monetary.exception.InvalidCurrencyException;
 import org.apache.fineract.portfolio.charge.domain.Charge;
 import org.apache.fineract.portfolio.charge.domain.ChargeRepositoryWrapper;
 import org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket;
@@ -57,7 +58,6 @@
 import org.apache.fineract.portfolio.loanproduct.domain.LoanProduct;
 import org.apache.fineract.portfolio.loanproduct.domain.LoanProductPaymentAllocationRule;
 import org.apache.fineract.portfolio.loanproduct.domain.LoanProductRepository;
-import org.apache.fineract.portfolio.loanproduct.exception.InvalidCurrencyException;
 import org.apache.fineract.portfolio.loanproduct.exception.LoanProductCannotBeModifiedDueToNonClosedLoansException;
 import org.apache.fineract.portfolio.loanproduct.exception.LoanProductDateException;
 import org.apache.fineract.portfolio.loanproduct.exception.LoanProductNotFoundException;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/NoteRepository.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/NoteRepository.java
index f609eea..c57b20e 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/NoteRepository.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/note/domain/NoteRepository.java
@@ -26,6 +26,8 @@
 import org.apache.fineract.portfolio.savings.domain.SavingsAccount;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 
 public interface NoteRepository extends JpaRepository<Note, Long>, JpaSpecificationExecutor<Note> {
 
@@ -46,4 +48,8 @@
     List<Note> findBySavingsAccount(SavingsAccount savingAccount);
 
     Note findBySavingsAccountAndId(SavingsAccount savingAccount, Long id);
+
+    @Query("select note from Note note where note.savingsTransaction.id = :savingsTransactionId")
+    List<Note> findBySavingsTransactionId(@Param("savingsTransactionId") Long savingsTransactionId);
+
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionsSearchServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionsSearchServiceImpl.java
index 8b17c96..60f1416 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionsSearchServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionsSearchServiceImpl.java
@@ -39,7 +39,7 @@
 import org.apache.fineract.infrastructure.dataqueries.data.EntityTables;
 import org.apache.fineract.infrastructure.dataqueries.data.ResultsetColumnHeaderData;
 import org.apache.fineract.infrastructure.dataqueries.service.GenericDataService;
-import org.apache.fineract.infrastructure.dataqueries.service.ReadWriteNonCoreDataServiceImpl;
+import org.apache.fineract.infrastructure.dataqueries.service.ReadWriteNonCoreDataService;
 import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
 import org.apache.fineract.portfolio.savings.SavingsAccountTransactionType;
 import org.apache.fineract.portfolio.savings.data.SavingsAccountTransactionData;
@@ -66,7 +66,7 @@
     private final PlatformSecurityContext context;
     private final GenericDataService genericDataService;
     private final DatabaseSpecificSQLGenerator sqlGenerator;
-    private final ReadWriteNonCoreDataServiceImpl datatableService;
+    private final ReadWriteNonCoreDataService datatableService;
     private final DataTableValidator dataTableValidator;
     private final JdbcTemplate jdbcTemplate;
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java
index 4f457a1..dc64831 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java
@@ -46,6 +46,7 @@
 import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
 import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
 import org.apache.fineract.organisation.monetary.domain.Money;
+import org.apache.fineract.organisation.monetary.exception.InvalidCurrencyException;
 import org.apache.fineract.portfolio.accounts.constants.ShareAccountApiConstants;
 import org.apache.fineract.portfolio.charge.domain.Charge;
 import org.apache.fineract.portfolio.charge.domain.ChargeCalculationType;
@@ -54,7 +55,6 @@
 import org.apache.fineract.portfolio.client.domain.Client;
 import org.apache.fineract.portfolio.client.domain.ClientRepositoryWrapper;
 import org.apache.fineract.portfolio.common.domain.PeriodFrequencyType;
-import org.apache.fineract.portfolio.loanproduct.exception.InvalidCurrencyException;
 import org.apache.fineract.portfolio.savings.DepositAccountType;
 import org.apache.fineract.portfolio.savings.domain.SavingsAccount;
 import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepositoryWrapper;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/serialization/ShareProductDataSerializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/serialization/ShareProductDataSerializer.java
index 64e2b6c..fa7bc44 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/serialization/ShareProductDataSerializer.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/serialization/ShareProductDataSerializer.java
@@ -44,10 +44,10 @@
 import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
 import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
 import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
+import org.apache.fineract.organisation.monetary.exception.InvalidCurrencyException;
 import org.apache.fineract.portfolio.charge.domain.Charge;
 import org.apache.fineract.portfolio.charge.domain.ChargeRepositoryWrapper;
 import org.apache.fineract.portfolio.common.domain.PeriodFrequencyType;
-import org.apache.fineract.portfolio.loanproduct.exception.InvalidCurrencyException;
 import org.apache.fineract.portfolio.shareproducts.constants.ShareProductApiConstants;
 import org.apache.fineract.portfolio.shareproducts.data.ShareProductMarketPriceData;
 import org.apache.fineract.portfolio.shareproducts.domain.ShareProduct;
diff --git a/fineract-provider/src/main/resources/jpa/persistence.xml b/fineract-provider/src/main/resources/jpa/persistence.xml
index b1fba72..9633ded 100644
--- a/fineract-provider/src/main/resources/jpa/persistence.xml
+++ b/fineract-provider/src/main/resources/jpa/persistence.xml
@@ -114,6 +114,24 @@
         <class>org.apache.fineract.portfolio.loanproduct.domain.AllocationTypeListConverter</class>
         <class>org.apache.fineract.portfolio.loanproduct.domain.LoanProductPaymentAllocationRule</class>
         <class>org.apache.fineract.portfolio.loanaccount.domain.LoanPaymentAllocationRule</class>
+        <!-- Fineract Savings module -->
+        <class>org.apache.fineract.interoperation.domain.InteropIdentifier</class>
+        <class>org.apache.fineract.portfolio.interestratechart.domain.InterestIncentives</class>
+        <class>org.apache.fineract.portfolio.interestratechart.domain.InterestRateChart</class>
+        <class>org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartSlab</class>
+        <class>org.apache.fineract.portfolio.savings.domain.DepositAccountInterestRateChart</class>
+        <class>org.apache.fineract.portfolio.savings.domain.DepositAccountInterestRateChartSlabs</class>
+        <class>org.apache.fineract.portfolio.savings.domain.DepositAccountInterestIncentives</class>
+        <class>org.apache.fineract.portfolio.savings.domain.DepositAccountOnHoldTransaction</class>
+        <class>org.apache.fineract.portfolio.savings.domain.DepositAccountTermAndPreClosure</class>
+        <class>org.apache.fineract.portfolio.savings.domain.GroupSavingsIndividualMonitoring</class>
+        <class>org.apache.fineract.portfolio.savings.domain.SavingsProduct</class>
+        <class>org.apache.fineract.portfolio.savings.domain.SavingsAccount</class>
+        <class>org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge</class>
+        <class>org.apache.fineract.portfolio.savings.domain.SavingsAccountChargePaidBy</class>
+        <class>org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction</class>
+        <class>org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionTaxDetails</class>
+        <class>org.apache.fineract.portfolio.savings.domain.SavingsOfficerAssignmentHistory</class>
         <exclude-unlisted-classes>false</exclude-unlisted-classes>
         <properties>
             <property name="eclipselink.weaving" value="static" />
diff --git a/fineract-savings/build.gradle b/fineract-savings/build.gradle
new file mode 100644
index 0000000..df6fa6f
--- /dev/null
+++ b/fineract-savings/build.gradle
@@ -0,0 +1,106 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+description = 'Fineract Savings'
+
+apply plugin: 'java'
+apply plugin: 'eclipse'
+
+compileJava.doLast {
+    def mainSS = sourceSets.main
+    def source = mainSS.java.classesDirectory.get()
+    copy {
+        from file("src/main/resources/jpa/savings/persistence.xml")
+        into "${source}/META-INF/"
+    }
+    javaexec {
+        description = 'Performs EclipseLink static weaving of entity classes'
+        def target = source
+        main 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
+        args '-persistenceinfo', source, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
+    }
+}
+
+// Configuration for Swagger documentation generation task
+// https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-gradle-plugin
+import org.apache.tools.ant.filters.ReplaceTokens
+
+
+
+configurations {
+    providedRuntime // needed for Spring Boot executable WAR
+    providedCompile
+    compile() {
+        exclude module: 'hibernate-entitymanager'
+        exclude module: 'hibernate-validator'
+        exclude module: 'activation'
+        exclude module: 'bcmail-jdk14'
+        exclude module: 'bcprov-jdk14'
+        exclude module: 'bctsp-jdk14'
+        exclude module: 'c3p0'
+        exclude module: 'stax-api'
+        exclude module: 'jaxb-api'
+        exclude module: 'jaxb-impl'
+        exclude module: 'jboss-logging'
+        exclude module: 'itext-rtf'
+        exclude module: 'classworlds'
+    }
+    runtime
+}
+
+apply from: 'dependencies.gradle'
+
+// Configuration for the modernizer plugin
+// https://github.com/andygoossens/gradle-modernizer-plugin
+modernizer {
+    ignoreClassNamePatterns = [
+        '.*AbstractPersistableCustom',
+        '.*EntityTables',
+        '.*domain.*'
+    ]
+}
+
+// If we are running Gradle within Eclipse to enhance classes with OpenJPA,
+// set the classes directory to point to Eclipse's default build directory
+if (project.hasProperty('env') && project.getProperty('env') == 'eclipse') {
+    sourceSets.main.java.outputDir = new File(rootProject.projectDir, "fineract-savings/bin/main")
+}
+
+eclipse {
+    project {
+        buildCommand([ LaunchConfigHandle: "<project>/.externalToolBuilders/OpenJPA Enhance Builder.launch" ],  'org.eclipse.ui.externaltools.ExternalToolBuilder')
+    }
+}
+
+/* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */
+sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory
+sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory
+
+if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
+    sourceSets {
+        test {
+            java {
+                exclude '**/core/boot/tests/**'
+            }
+        }
+    }
+}
diff --git a/fineract-savings/dependencies.gradle b/fineract-savings/dependencies.gradle
new file mode 100644
index 0000000..c6f4d7c
--- /dev/null
+++ b/fineract-savings/dependencies.gradle
@@ -0,0 +1,74 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+dependencies {
+    // Never use "compile" scope, but make all dependencies either 'implementation', 'runtimeOnly' or 'testCompile'.
+    // Note that we never use 'api', because Fineract at least currently is a simple monolithic application ("WAR"), not a library.
+    // We also (normally should have) no need to ever use 'compileOnly'.
+
+    // implementation dependencies are directly used (compiled against) in src/main (and src/test)
+    //
+    implementation(project(path: ':fineract-core'))
+
+    implementation(
+            'org.springframework.boot:spring-boot-starter-web',
+            'org.springframework.boot:spring-boot-starter-security',
+            'jakarta.ws.rs:jakarta.ws.rs-api',
+            'org.glassfish.jersey.media:jersey-media-multipart',
+
+            'com.google.guava:guava',
+            'com.google.code.gson:gson',
+
+            'org.apache.commons:commons-lang3',
+
+            'com.jayway.jsonpath:json-path',
+
+            'com.github.spotbugs:spotbugs-annotations',
+            'io.swagger.core.v3:swagger-annotations-jakarta',
+
+            'com.squareup.retrofit2:converter-gson',
+
+            'org.springdoc:springdoc-openapi-starter-webmvc-ui',
+            'org.mapstruct:mapstruct',
+
+            'io.github.resilience4j:resilience4j-spring-boot2',
+            'org.apache.httpcomponents:httpcore',
+            )
+    compileOnly 'org.projectlombok:lombok'
+    annotationProcessor 'org.projectlombok:lombok'
+    annotationProcessor 'org.mapstruct:mapstruct-processor'
+    implementation ('org.springframework.boot:spring-boot-starter-data-jpa') {
+        exclude group: 'org.hibernate'
+    }
+    implementation('org.eclipse.persistence:org.eclipse.persistence.jpa') {
+        exclude group: 'org.eclipse.persistence', module: 'jakarta.persistence'
+    }
+    // testCompile dependencies are ONLY used in src/test, not src/main.
+    // Do NOT repeat dependencies which are ALREADY in implementation or runtimeOnly!
+    //
+    testImplementation( 'io.github.classgraph:classgraph' )
+    testImplementation ('org.springframework.boot:spring-boot-starter-test') {
+        exclude group: 'com.jayway.jsonpath', module: 'json-path'
+        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
+        exclude group: 'jakarta.activation'
+        exclude group: 'javax.activation'
+        exclude group: 'org.skyscreamer'
+    }
+    testImplementation ('org.mockito:mockito-inline')
+}
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java b/fineract-savings/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java
rename to fineract-savings/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropAccountData.java b/fineract-savings/src/main/java/org/apache/fineract/interoperation/data/InteropAccountData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropAccountData.java
rename to fineract-savings/src/main/java/org/apache/fineract/interoperation/data/InteropAccountData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropIdentifierData.java b/fineract-savings/src/main/java/org/apache/fineract/interoperation/data/InteropIdentifierData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/interoperation/data/InteropIdentifierData.java
rename to fineract-savings/src/main/java/org/apache/fineract/interoperation/data/InteropIdentifierData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropActionState.java b/fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropActionState.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropActionState.java
rename to fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropActionState.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropAmountType.java b/fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropAmountType.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropAmountType.java
rename to fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropAmountType.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifier.java b/fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifier.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifier.java
rename to fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifier.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifierType.java b/fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifierType.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifierType.java
rename to fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropIdentifierType.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropInitiatorType.java b/fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropInitiatorType.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropInitiatorType.java
rename to fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropInitiatorType.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropTransactionRole.java b/fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropTransactionRole.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropTransactionRole.java
rename to fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropTransactionRole.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropTransactionScenario.java b/fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropTransactionScenario.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropTransactionScenario.java
rename to fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropTransactionScenario.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropTransferActionType.java b/fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropTransferActionType.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/interoperation/domain/InteropTransferActionType.java
rename to fineract-savings/src/main/java/org/apache/fineract/interoperation/domain/InteropTransferActionType.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsSummaryCustom.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsSummaryCustom.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsSummaryCustom.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/accountdetails/data/SavingsSummaryCustom.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeCannotBeWaivedException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeCannotBeWaivedException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeCannotBeWaivedException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeCannotBeWaivedException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeNotFoundException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeNotFoundException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeNotFoundException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeNotFoundException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeWithoutMandatoryFieldException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeWithoutMandatoryFieldException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeWithoutMandatoryFieldException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/charge/exception/SavingsAccountChargeWithoutMandatoryFieldException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestIncentiveApiConstants.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestIncentiveApiConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestIncentiveApiConstants.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestIncentiveApiConstants.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestRateChartApiConstants.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestRateChartApiConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestRateChartApiConstants.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestRateChartApiConstants.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestRateChartSlabApiConstants.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestRateChartSlabApiConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestRateChartSlabApiConstants.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/InterestRateChartSlabApiConstants.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestIncentiveData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/data/InterestRateChartSlabData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentives.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentives.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentives.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentives.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentivesFields.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentivesFields.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentivesFields.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestIncentivesFields.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChart.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChart.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChart.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChart.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartFields.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartFields.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartFields.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartFields.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartRepository.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartRepository.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartRepository.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartRepository.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartRepositoryWrapper.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartRepositoryWrapper.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartRepositoryWrapper.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartRepositoryWrapper.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlab.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlab.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlab.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlab.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabComparator.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabComparator.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabComparator.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabComparator.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabFields.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabFields.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabFields.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabFields.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabRepository.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabRepository.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabRepository.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabRepository.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabRepositoryWrapper.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabRepositoryWrapper.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabRepositoryWrapper.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/domain/InterestRateChartSlabRepositoryWrapper.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartNotFoundException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartNotFoundException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartNotFoundException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartNotFoundException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartSlabNotFoundException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartSlabNotFoundException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartSlabNotFoundException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/exception/InterestRateChartSlabNotFoundException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/AttributeIncentiveCalculation.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/AttributeIncentiveCalculation.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/AttributeIncentiveCalculation.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/AttributeIncentiveCalculation.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/AttributeIncentiveCalculationFactory.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/AttributeIncentiveCalculationFactory.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/AttributeIncentiveCalculationFactory.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/AttributeIncentiveCalculationFactory.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/ClientAttributeIncentiveCalculation.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/ClientAttributeIncentiveCalculation.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/ClientAttributeIncentiveCalculation.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/ClientAttributeIncentiveCalculation.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/IncentiveDTO.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/IncentiveDTO.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/IncentiveDTO.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/IncentiveDTO.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveAttributeName.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveAttributeName.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveAttributeName.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveAttributeName.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveEntityType.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveEntityType.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveEntityType.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveEntityType.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveType.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveType.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveType.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/InterestIncentiveType.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentiveAssembler.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentiveAssembler.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentiveAssembler.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestIncentiveAssembler.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartAssembler.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartAssembler.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartAssembler.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartAssembler.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabAssembler.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabAssembler.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabAssembler.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/interestratechart/service/InterestRateChartSlabAssembler.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountUtils.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountUtils.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountUtils.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/DepositAccountUtils.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsTransactionBooleanValues.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/SavingsTransactionBooleanValues.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/SavingsTransactionBooleanValues.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/SavingsTransactionBooleanValues.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsApiSetConstants.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsApiSetConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsApiSetConstants.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsApiSetConstants.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/ClosingOfSavingsAccounts.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/ClosingOfSavingsAccounts.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/ClosingOfSavingsAccounts.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/ClosingOfSavingsAccounts.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestIncentiveData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestIncentiveData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestIncentiveData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestIncentiveData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartSlabData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartSlabData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartSlabData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountInterestRateChartSlabData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountOnHoldTransactionData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountOnHoldTransactionData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountOnHoldTransactionData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountOnHoldTransactionData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositProductData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositAccountData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositAccountData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositAccountData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositAccountData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/GSIMContainer.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GSIMContainer.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/GSIMContainer.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GSIMContainer.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/GroupSavingsIndividualMonitoringAccountData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositAccountData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositAccountData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositAccountData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositAccountData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountAnnualFeeData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountAnnualFeeData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountAnnualFeeData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountAnnualFeeData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeDataValidator.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeDataValidator.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeDataValidator.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountChargeDataValidator.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountConstant.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountConstant.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountConstant.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountConstant.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataDTO.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataDTO.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataDTO.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataDTO.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataValidator.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataValidator.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataValidator.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountDataValidator.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDTO.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDTO.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDTO.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionDTO.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsActivation.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsActivation.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsActivation.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsActivation.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsApproval.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsApproval.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsApproval.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsApproval.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductDataValidator.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductDataValidator.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductDataValidator.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductDataValidator.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/TransactionDateData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/TransactionDateData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/TransactionDateData.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/TransactionDateData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentive.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentive.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentive.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentive.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentives.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentives.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentives.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestIncentives.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChart.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChart.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChart.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChart.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChartSlabs.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChartSlabs.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChartSlabs.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountInterestRateChartSlabs.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransaction.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransaction.java
similarity index 92%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransaction.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransaction.java
index 78a5f2f..cb132e4 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransaction.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountOnHoldTransaction.java
@@ -20,12 +20,10 @@
 
 import static org.apache.fineract.infrastructure.core.service.DateUtils.getSystemZoneId;
 
-import jakarta.persistence.CascadeType;
 import jakarta.persistence.Column;
 import jakarta.persistence.Entity;
 import jakarta.persistence.JoinColumn;
 import jakarta.persistence.ManyToOne;
-import jakarta.persistence.OneToOne;
 import jakarta.persistence.Table;
 import java.math.BigDecimal;
 import java.time.LocalDate;
@@ -35,7 +33,6 @@
 import org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom;
 import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
 import org.apache.fineract.organisation.monetary.domain.Money;
-import org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorFundingTransaction;
 import org.apache.fineract.portfolio.savings.DepositAccountOnHoldTransactionType;
 
 @Entity
@@ -62,9 +59,6 @@
     @Column(name = "created_date", nullable = true)
     private LocalDateTime createdDateToRemove;
 
-    @OneToOne(cascade = CascadeType.ALL, mappedBy = "depositAccountOnHoldTransaction", optional = true, orphanRemoval = true)
-    private GuarantorFundingTransaction guarantorFundingTransaction;
-
     protected DepositAccountOnHoldTransaction() {}
 
     private DepositAccountOnHoldTransaction(final SavingsAccount savingsAccount, final BigDecimal amount,
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountTermAndPreClosure.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountTermAndPreClosure.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountTermAndPreClosure.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountTermAndPreClosure.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositPreClosureDetail.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositPreClosureDetail.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositPreClosureDetail.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositPreClosureDetail.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductAmountDetails.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductAmountDetails.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductAmountDetails.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductAmountDetails.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductAssembler.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductAssembler.java
similarity index 99%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductAssembler.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductAssembler.java
index 3cef741..caf6dd0 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductAssembler.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductAssembler.java
@@ -68,12 +68,12 @@
 import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder;
 import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
 import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
+import org.apache.fineract.organisation.monetary.exception.InvalidCurrencyException;
 import org.apache.fineract.portfolio.charge.domain.Charge;
 import org.apache.fineract.portfolio.charge.domain.ChargeRepositoryWrapper;
 import org.apache.fineract.portfolio.charge.exception.ChargeCannotBeAppliedToException;
 import org.apache.fineract.portfolio.interestratechart.domain.InterestRateChart;
 import org.apache.fineract.portfolio.interestratechart.service.InterestRateChartAssembler;
-import org.apache.fineract.portfolio.loanproduct.exception.InvalidCurrencyException;
 import org.apache.fineract.portfolio.savings.PreClosurePenalInterestOnType;
 import org.apache.fineract.portfolio.savings.SavingsCompoundingInterestPeriodType;
 import org.apache.fineract.portfolio.savings.SavingsInterestCalculationDaysInYearType;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductRecurringDetail.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductRecurringDetail.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductRecurringDetail.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductRecurringDetail.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductTermAndPreClosure.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductTermAndPreClosure.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductTermAndPreClosure.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositProductTermAndPreClosure.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositRecurringDetail.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositRecurringDetail.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositRecurringDetail.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositRecurringDetail.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositTermDetail.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositTermDetail.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositTermDetail.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositTermDetail.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/FixedDepositProduct.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/FixedDepositProduct.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/FixedDepositProduct.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/FixedDepositProduct.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/GSIMRepositoy.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GSIMRepositoy.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/GSIMRepositoy.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GSIMRepositoy.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GroupSavingsIndividualMonitoring.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositProduct.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositProduct.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositProduct.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositProduct.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositProductRepository.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositProductRepository.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositProductRepository.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositProductRepository.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeAssembler.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeAssembler.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeAssembler.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeAssembler.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargePaidBy.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargePaidBy.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargePaidBy.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargePaidBy.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeRepository.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeRepository.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeRepository.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeRepository.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeRepositoryWrapper.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeRepositoryWrapper.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeRepositoryWrapper.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountChargeRepositoryWrapper.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountDomainService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSummary.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSummary.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSummary.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountSummary.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java
similarity index 98%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java
index 6910fad..2cd1c7d 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransaction.java
@@ -46,7 +46,6 @@
 import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
 import org.apache.fineract.organisation.monetary.domain.Money;
 import org.apache.fineract.organisation.office.domain.Office;
-import org.apache.fineract.portfolio.note.domain.Note;
 import org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail;
 import org.apache.fineract.portfolio.savings.SavingsAccountTransactionType;
 import org.apache.fineract.portfolio.savings.data.SavingsAccountTransactionEnumData;
@@ -127,10 +126,6 @@
     @Column(name = "reason_for_block", nullable = true)
     private String reasonForBlock;
 
-    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
-    @JoinColumn(name = "savings_account_transaction_id", referencedColumnName = "id")
-    private List<Note> notes = new ArrayList<>();
-
     @Column(name = "is_reversal", nullable = false)
     private boolean reversalTransaction;
 
@@ -428,10 +423,6 @@
         return this.taxDetails;
     }
 
-    public List<Note> getNotes() {
-        return notes;
-    }
-
     public Integer getTypeOf() {
         return this.typeOf;
     }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionComparator.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionComparator.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionComparator.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionComparator.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionDataComparator.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionDataComparator.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionDataComparator.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionDataComparator.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionRepository.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionRepository.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionRepository.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionRepository.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionSummaryWrapper.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionSummaryWrapper.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionSummaryWrapper.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionSummaryWrapper.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionTaxDetails.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionTaxDetails.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionTaxDetails.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountTransactionTaxDetails.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsEvent.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsEvent.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsEvent.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsEvent.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsOfficerAssignmentHistory.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsOfficerAssignmentHistory.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsOfficerAssignmentHistory.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsOfficerAssignmentHistory.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProduct.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProduct.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProduct.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProduct.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductAssembler.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductAssembler.java
similarity index 99%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductAssembler.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductAssembler.java
index a9f3862..c47cb76 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductAssembler.java
+++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductAssembler.java
@@ -59,10 +59,10 @@
 import org.apache.fineract.accounting.common.AccountingRuleType;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
+import org.apache.fineract.organisation.monetary.exception.InvalidCurrencyException;
 import org.apache.fineract.portfolio.charge.domain.Charge;
 import org.apache.fineract.portfolio.charge.domain.ChargeRepositoryWrapper;
 import org.apache.fineract.portfolio.charge.exception.ChargeCannotBeAppliedToException;
-import org.apache.fineract.portfolio.loanproduct.exception.InvalidCurrencyException;
 import org.apache.fineract.portfolio.savings.SavingsCompoundingInterestPeriodType;
 import org.apache.fineract.portfolio.savings.SavingsInterestCalculationDaysInYearType;
 import org.apache.fineract.portfolio.savings.SavingsInterestCalculationType;
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductChargeAssembler.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductChargeAssembler.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductChargeAssembler.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductChargeAssembler.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductRepository.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductRepository.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductRepository.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsProductRepository.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountInterestRateChartNotFoundException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountInterestRateChartNotFoundException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountInterestRateChartNotFoundException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountInterestRateChartNotFoundException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountNotFoundException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountNotFoundException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountNotFoundException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountNotFoundException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountTransactionNotAllowedException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountTransactionNotAllowedException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountTransactionNotAllowedException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/DepositAccountTransactionNotAllowedException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/FixedDepositProductNotFoundException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/FixedDepositProductNotFoundException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/FixedDepositProductNotFoundException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/FixedDepositProductNotFoundException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/InsufficientAccountBalanceException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/InsufficientAccountBalanceException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/InsufficientAccountBalanceException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/InsufficientAccountBalanceException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/PostInterestAsOnDateException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/PostInterestAsOnDateException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/PostInterestAsOnDateException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/PostInterestAsOnDateException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/PostInterestClosingDateException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/PostInterestClosingDateException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/PostInterestClosingDateException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/PostInterestClosingDateException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/RecurringDepositProductNotFoundException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/RecurringDepositProductNotFoundException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/RecurringDepositProductNotFoundException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/RecurringDepositProductNotFoundException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountBlockedException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountBlockedException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountBlockedException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountBlockedException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountClosingNotAllowedException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountClosingNotAllowedException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountClosingNotAllowedException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountClosingNotAllowedException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountCreditsBlockedException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountCreditsBlockedException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountCreditsBlockedException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountCreditsBlockedException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountDebitsBlockedException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountDebitsBlockedException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountDebitsBlockedException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountDebitsBlockedException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountNotFoundException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountNotFoundException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountNotFoundException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountNotFoundException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountTransactionNotFoundException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountTransactionNotFoundException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountTransactionNotFoundException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsAccountTransactionNotFoundException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsActivityPriorToClientTransferException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsActivityPriorToClientTransferException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsActivityPriorToClientTransferException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsActivityPriorToClientTransferException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerAssignmentDateException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerAssignmentDateException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerAssignmentDateException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerAssignmentDateException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerAssignmentException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerAssignmentException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerAssignmentException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerAssignmentException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerUnassignmentDateException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerUnassignmentDateException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerUnassignmentDateException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerUnassignmentDateException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerUnassignmentException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerUnassignmentException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerUnassignmentException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsOfficerUnassignmentException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductNotFoundException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductNotFoundException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductNotFoundException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductNotFoundException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsTransferTransactionsCannotBeUndoneException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsTransferTransactionsCannotBeUndoneException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsTransferTransactionsCannotBeUndoneException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsTransferTransactionsCannotBeUndoneException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/TransactionBeforePivotDateNotAllowed.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/TransactionBeforePivotDateNotAllowed.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/TransactionBeforePivotDateNotAllowed.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/TransactionBeforePivotDateNotAllowed.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/TransactionUpdateNotAllowedException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/TransactionUpdateNotAllowedException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/exception/TransactionUpdateNotAllowedException.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/TransactionUpdateNotAllowedException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountInterestRateChartReadPlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountOnHoldTransactionReadPlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountOnHoldTransactionReadPlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountOnHoldTransactionReadPlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountOnHoldTransactionReadPlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountPreMatureCalculationPlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountPreMatureCalculationPlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountPreMatureCalculationPlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountPreMatureCalculationPlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositAccountWritePlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositApplicationProcessWritePlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositApplicationProcessWritePlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositApplicationProcessWritePlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositApplicationProcessWritePlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositsDropdownReadPlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/GSIMReadPlatformServiceImpl.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountChargeReadPlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountInterestPostingService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsApplicationProcessWritePlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsApplicationProcessWritePlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsApplicationProcessWritePlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsApplicationProcessWritePlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsDropdownReadPlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsDropdownReadPlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsDropdownReadPlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsDropdownReadPlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPoster.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPoster.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPoster.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPoster.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPosterTask.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPosterTask.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPosterTask.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsSchedularInterestPosterTask.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionSearchService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionSearchService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionSearchService.java
rename to fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/search/SavingsAccountTransactionSearchService.java
diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/module-changelog-master.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/module-changelog-master.xml
new file mode 100644
index 0000000..8746633
--- /dev/null
+++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/module-changelog-master.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements. See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License. You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied. See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
+  <!-- Sequence is starting from 2000 to make it easier to move existing liquibase changesets here -->
+</databaseChangeLog>
diff --git a/fineract-savings/src/main/resources/jpa/savings/persistence.xml b/fineract-savings/src/main/resources/jpa/savings/persistence.xml
new file mode 100644
index 0000000..bf9980f
--- /dev/null
+++ b/fineract-savings/src/main/resources/jpa/savings/persistence.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements. See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership. The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License. You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied. See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+
+<persistence version="2.0"
+    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+
+    <!--  This file is only used for static weaving, nothing more.  -->
+    <!--  You can find the runtime configuration in the JPAConfig class  -->
+    <persistence-unit name="jpa-pu" transaction-type="RESOURCE_LOCAL">
+        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+        <!-- Fineract core module -->
+        <class>org.apache.fineract.accounting.glaccount.domain.GLAccount</class>
+        <class>org.apache.fineract.accounting.journalentry.domain.JournalEntry</class>
+        <class>org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom</class>
+        <class>org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom</class>
+        <class>org.apache.fineract.infrastructure.codes.domain.Code</class>
+        <class>org.apache.fineract.infrastructure.codes.domain.CodeValue</class>
+        <class>org.apache.fineract.infrastructure.documentmanagement.domain.Image</class>
+        <class>org.apache.fineract.organisation.staff.domain.Staff</class>
+        <class>org.apache.fineract.organisation.office.domain.Office</class>
+        <class>org.apache.fineract.organisation.office.domain.OrganisationCurrency</class>
+        <class>org.apache.fineract.organisation.monetary.domain.ApplicationCurrency</class>
+        <class>org.apache.fineract.organisation.holiday.domain.Holiday</class>
+        <class>org.apache.fineract.organisation.workingdays.domain.WorkingDays</class>
+        <class>org.apache.fineract.portfolio.group.domain.Group</class>
+        <class>org.apache.fineract.portfolio.group.domain.GroupLevel</class>
+        <class>org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory</class>
+        <class>org.apache.fineract.portfolio.group.domain.GroupRole</class>
+        <class>org.apache.fineract.portfolio.client.domain.Client</class>
+        <class>org.apache.fineract.portfolio.fund.domain.Fund</class>
+        <class>org.apache.fineract.portfolio.charge.domain.Charge</class>
+        <class>org.apache.fineract.portfolio.paymenttype.domain.PaymentType</class>
+        <class>org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail</class>
+        <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
+        <class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
+        <class>org.apache.fineract.portfolio.tax.domain.TaxComponent</class>
+        <class>org.apache.fineract.portfolio.tax.domain.TaxComponentHistory</class>
+        <class>org.apache.fineract.portfolio.calendar.domain.Calendar</class>
+        <class>org.apache.fineract.portfolio.calendar.domain.CalendarHistory</class>
+        <class>org.apache.fineract.portfolio.calendar.domain.CalendarInstance</class>
+        <class>org.apache.fineract.useradministration.domain.AppUser</class>
+        <class>org.apache.fineract.useradministration.domain.Role</class>
+        <class>org.apache.fineract.useradministration.domain.Permission</class>
+        <class>org.apache.fineract.useradministration.domain.AppUserClientMapping</class>
+        <exclude-unlisted-classes>false</exclude-unlisted-classes>
+        <properties>
+            <property name="eclipselink.weaving" value="static" />
+        </properties>
+    </persistence-unit>
+</persistence>
diff --git a/integration-tests/dependencies.gradle b/integration-tests/dependencies.gradle
index 206bd6a..ff1cce9 100644
--- a/integration-tests/dependencies.gradle
+++ b/integration-tests/dependencies.gradle
@@ -25,6 +25,7 @@
             project(path: ':fineract-core', configuration: 'runtimeElements'),
             project(path: ':fineract-investor', configuration: 'runtimeElements'),
             project(path: ':fineract-loan', configuration: 'runtimeElements'),
+            project(path: ':fineract-savings', configuration: 'runtimeElements'),
             project(path: ':fineract-provider', configuration: 'runtimeElements'),
             project(path: ':fineract-avro-schemas', configuration: 'runtimeElements'),
             project(path: ':fineract-client', configuration: 'runtimeElements'),
diff --git a/settings.gradle b/settings.gradle
index 871f543..8227953 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -52,6 +52,7 @@
 include ':fineract-provider'
 include ':fineract-investor'
 include ':fineract-loan'
+include ':fineract-savings'
 include ':fineract-war'
 include ':integration-tests'
 include ':twofactor-tests'