FINERACT-1932: Fineract modularization - fineract-accounting
diff --git a/build.gradle b/build.gradle
index 065217a..b30c632 100644
--- a/build.gradle
+++ b/build.gradle
@@ -28,6 +28,7 @@
             [
                 'fineract-api',
                 'fineract-core',
+                'fineract-accounting',
                 'fineract-provider',
                 'fineract-investor',
                 'fineract-loan',
@@ -45,6 +46,7 @@
                 'fineract-api',
                 'fineract-client',
                 'fineract-core',
+                'fineract-accounting',
                 'fineract-provider',
                 'fineract-investor',
                 'fineract-loan',
diff --git a/fineract-accounting/build.gradle b/fineract-accounting/build.gradle
new file mode 100644
index 0000000..3018795
--- /dev/null
+++ b/fineract-accounting/build.gradle
@@ -0,0 +1,100 @@
+/**
+ * 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 Accounting'
+
+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/accounting/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"
+    }
+}
+
+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-accounting/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-accounting/dependencies.gradle b/fineract-accounting/dependencies.gradle
new file mode 100644
index 0000000..5d95ade
--- /dev/null
+++ b/fineract-accounting/dependencies.gradle
@@ -0,0 +1,79 @@
+/**
+ * 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.apache.avro:avro')
+    implementation(
+            project(path: ':fineract-avro-schemas')
+            )
+
+    implementation(
+            'org.springframework.boot:spring-boot-starter-web',
+            'org.springframework.boot:spring-boot-starter-security',
+            'org.springframework.boot:spring-boot-starter-batch',
+            'org.springframework.batch:spring-batch-integration',
+            '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-boot3',
+            )
+    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-provider/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingApiResource.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingApiResource.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingApiResource.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingApiResource.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingApiResourceSwagger.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingApiResourceSwagger.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingApiResourceSwagger.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingApiResourceSwagger.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingConstants.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingConstants.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/accrual/api/AccrualAccountingConstants.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/handler/ExecutePeriodicAccrualCommandHandler.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/accrual/handler/ExecutePeriodicAccrualCommandHandler.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/handler/ExecutePeriodicAccrualCommandHandler.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/accrual/handler/ExecutePeriodicAccrualCommandHandler.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/serialization/AccrualAccountingDataValidator.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/accrual/serialization/AccrualAccountingDataValidator.java
similarity index 93%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/serialization/AccrualAccountingDataValidator.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/accrual/serialization/AccrualAccountingDataValidator.java
index 65c5275..275805c 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/serialization/AccrualAccountingDataValidator.java
+++ b/fineract-accounting/src/main/java/org/apache/fineract/accounting/accrual/serialization/AccrualAccountingDataValidator.java
@@ -38,15 +38,10 @@
 import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder;
 import org.apache.fineract.infrastructure.core.exception.InvalidJsonException;
 import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
-import org.apache.fineract.infrastructure.core.serialization.FromApiJsonDeserializer;
 import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
 import org.apache.fineract.infrastructure.core.service.DateUtils;
-import org.apache.fineract.portfolio.loanaccount.guarantor.command.GuarantorCommand;
 import org.springframework.stereotype.Component;
 
-/**
- * Implementation of {@link FromApiJsonDeserializer} for {@link GuarantorCommand}'s.
- */
 @Component
 @RequiredArgsConstructor
 public final class AccrualAccountingDataValidator {
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/service/AccrualAccountingWritePlatformService.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/accrual/service/AccrualAccountingWritePlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/accrual/service/AccrualAccountingWritePlatformService.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/accrual/service/AccrualAccountingWritePlatformService.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/api/GLClosureJsonInputParams.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/api/GLClosureJsonInputParams.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/api/GLClosureJsonInputParams.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/api/GLClosureJsonInputParams.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/api/GLClosuresApiResource.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/api/GLClosuresApiResource.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/api/GLClosuresApiResource.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/api/GLClosuresApiResource.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/api/GLClosuresApiResourceSwagger.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/api/GLClosuresApiResourceSwagger.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/api/GLClosuresApiResourceSwagger.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/api/GLClosuresApiResourceSwagger.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/command/GLClosureCommand.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/command/GLClosureCommand.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/command/GLClosureCommand.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/command/GLClosureCommand.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/data/GLClosureData.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/data/GLClosureData.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/data/GLClosureData.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/data/GLClosureData.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/domain/GLClosure.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/domain/GLClosure.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/domain/GLClosure.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/domain/GLClosure.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/domain/GLClosureRepository.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/domain/GLClosureRepository.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/domain/GLClosureRepository.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/domain/GLClosureRepository.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureDuplicateException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureDuplicateException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureDuplicateException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureDuplicateException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureInvalidDeleteException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureInvalidDeleteException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureInvalidDeleteException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureInvalidDeleteException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureInvalidException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureInvalidException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureInvalidException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureInvalidException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureNotFoundException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureNotFoundException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureNotFoundException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/exception/GLClosureNotFoundException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/handler/CreateGLClosureCommandHandler.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/handler/CreateGLClosureCommandHandler.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/handler/CreateGLClosureCommandHandler.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/handler/CreateGLClosureCommandHandler.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/handler/DeleteGLClosureCommandHandler.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/handler/DeleteGLClosureCommandHandler.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/handler/DeleteGLClosureCommandHandler.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/handler/DeleteGLClosureCommandHandler.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/handler/UpdateGLClosureCommandHandler.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/handler/UpdateGLClosureCommandHandler.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/handler/UpdateGLClosureCommandHandler.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/handler/UpdateGLClosureCommandHandler.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/serialization/GLClosureCommandFromApiJsonDeserializer.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/serialization/GLClosureCommandFromApiJsonDeserializer.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/serialization/GLClosureCommandFromApiJsonDeserializer.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/serialization/GLClosureCommandFromApiJsonDeserializer.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureReadPlatformService.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureReadPlatformService.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureReadPlatformService.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureReadPlatformService.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureReadPlatformServiceImpl.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureReadPlatformServiceImpl.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureReadPlatformServiceImpl.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureReadPlatformServiceImpl.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureWritePlatformService.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureWritePlatformService.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureWritePlatformService.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureWritePlatformService.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureWritePlatformServiceJpaRepositoryImpl.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureWritePlatformServiceJpaRepositoryImpl.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureWritePlatformServiceJpaRepositoryImpl.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/closure/service/GLClosureWritePlatformServiceJpaRepositoryImpl.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/common/AccountingDropdownReadPlatformService.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/common/AccountingDropdownReadPlatformService.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/common/AccountingDropdownReadPlatformService.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/common/AccountingDropdownReadPlatformService.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsApiResource.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsApiResource.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsApiResource.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsApiResource.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsApiResourceSwagger.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsApiResourceSwagger.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsApiResourceSwagger.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsApiResourceSwagger.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsConstants.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsConstants.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsConstants.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsConstants.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsJsonInputParams.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsJsonInputParams.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsJsonInputParams.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/api/FinancialActivityAccountsJsonInputParams.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityAccountData.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityAccountData.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityAccountData.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/data/FinancialActivityAccountData.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccount.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccount.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccount.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccount.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccountRepository.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccountRepository.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccountRepository.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccountRepository.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccountRepositoryWrapper.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccountRepositoryWrapper.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccountRepositoryWrapper.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/domain/FinancialActivityAccountRepositoryWrapper.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/DuplicateFinancialActivityAccountFoundException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/DuplicateFinancialActivityAccountFoundException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/DuplicateFinancialActivityAccountFoundException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/DuplicateFinancialActivityAccountFoundException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/FinancialActivityAccountInvalidException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/FinancialActivityAccountInvalidException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/FinancialActivityAccountInvalidException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/FinancialActivityAccountInvalidException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/FinancialActivityAccountNotFoundException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/FinancialActivityAccountNotFoundException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/FinancialActivityAccountNotFoundException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/exception/FinancialActivityAccountNotFoundException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/handler/CreateFinancialActivityAccountHandler.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/handler/CreateFinancialActivityAccountHandler.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/handler/CreateFinancialActivityAccountHandler.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/handler/CreateFinancialActivityAccountHandler.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/handler/DeleteFinancialActivityAccountCommandHandler.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/handler/DeleteFinancialActivityAccountCommandHandler.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/handler/DeleteFinancialActivityAccountCommandHandler.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/handler/DeleteFinancialActivityAccountCommandHandler.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/handler/UpdateFinancialActivityAccountCommandHandler.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/handler/UpdateFinancialActivityAccountCommandHandler.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/handler/UpdateFinancialActivityAccountCommandHandler.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/handler/UpdateFinancialActivityAccountCommandHandler.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/serialization/FinancialActivityAccountDataValidator.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/serialization/FinancialActivityAccountDataValidator.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/serialization/FinancialActivityAccountDataValidator.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/serialization/FinancialActivityAccountDataValidator.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountReadPlatformService.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountReadPlatformService.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountReadPlatformService.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountReadPlatformService.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountReadPlatformServiceImpl.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountReadPlatformServiceImpl.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountReadPlatformServiceImpl.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountReadPlatformServiceImpl.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountWritePlatformService.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountWritePlatformService.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountWritePlatformService.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountWritePlatformService.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountWritePlatformServiceImpl.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountWritePlatformServiceImpl.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountWritePlatformServiceImpl.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/financialactivityaccount/service/FinancialActivityAccountWritePlatformServiceImpl.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/api/GLAccountsApiResource.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/api/GLAccountsApiResource.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/api/GLAccountsApiResource.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/api/GLAccountsApiResource.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/api/GLAccountsApiResourceSwagger.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/api/GLAccountsApiResourceSwagger.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/api/GLAccountsApiResourceSwagger.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/api/GLAccountsApiResourceSwagger.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/command/GLAccountCommand.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/command/GLAccountCommand.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/command/GLAccountCommand.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/command/GLAccountCommand.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/data/GLAccountDataForLookup.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/data/GLAccountDataForLookup.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/data/GLAccountDataForLookup.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/data/GLAccountDataForLookup.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalance.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepository.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepository.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepository.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepository.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepositoryWrapper.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepositoryWrapper.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepositoryWrapper.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/domain/TrialBalanceRepositoryWrapper.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDisableException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDisableException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDisableException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDisableException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDuplicateException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDuplicateException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDuplicateException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountDuplicateException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidClassificationException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidClassificationException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidClassificationException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidClassificationException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidDeleteException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidDeleteException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidDeleteException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidDeleteException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidParentException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidParentException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidParentException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidParentException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidUpdateException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidUpdateException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidUpdateException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidUpdateException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidUsageException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidUsageException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidUsageException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/GLAccountInvalidUsageException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/InvalidParentGLAccountHeadException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/InvalidParentGLAccountHeadException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/exception/InvalidParentGLAccountHeadException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/exception/InvalidParentGLAccountHeadException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/handler/CreateGLAccountCommandHandler.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/handler/CreateGLAccountCommandHandler.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/handler/CreateGLAccountCommandHandler.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/handler/CreateGLAccountCommandHandler.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/handler/DeleteGLAccountCommandHandler.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/handler/DeleteGLAccountCommandHandler.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/handler/DeleteGLAccountCommandHandler.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/handler/DeleteGLAccountCommandHandler.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/handler/UpdateGLAccountCommandHandler.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/handler/UpdateGLAccountCommandHandler.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/handler/UpdateGLAccountCommandHandler.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/handler/UpdateGLAccountCommandHandler.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsConfig.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsConfig.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsConfig.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsConfig.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsTasklet.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsTasklet.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsTasklet.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/jobs/updatetrialbalancedetails/UpdateTrialBalanceDetailsTasklet.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/serialization/GLAccountCommandFromApiJsonDeserializer.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/serialization/GLAccountCommandFromApiJsonDeserializer.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/serialization/GLAccountCommandFromApiJsonDeserializer.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/serialization/GLAccountCommandFromApiJsonDeserializer.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountReadPlatformService.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountReadPlatformService.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountReadPlatformService.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountReadPlatformService.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountReadPlatformServiceImpl.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountReadPlatformServiceImpl.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountReadPlatformServiceImpl.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountReadPlatformServiceImpl.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountWritePlatformService.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountWritePlatformService.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountWritePlatformService.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountWritePlatformService.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountWritePlatformServiceJpaRepositoryImpl.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountWritePlatformServiceJpaRepositoryImpl.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountWritePlatformServiceJpaRepositoryImpl.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/glaccount/service/GLAccountWritePlatformServiceJpaRepositoryImpl.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/JournalEntryMapper.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/JournalEntryMapper.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/JournalEntryMapper.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/JournalEntryMapper.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/api/JournalEntryJsonInputParams.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/api/JournalEntryJsonInputParams.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/api/JournalEntryJsonInputParams.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/api/JournalEntryJsonInputParams.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/command/JournalEntryCommand.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/command/JournalEntryCommand.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/command/JournalEntryCommand.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/command/JournalEntryCommand.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/command/SingleDebitOrCreditEntryCommand.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/command/SingleDebitOrCreditEntryCommand.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/command/SingleDebitOrCreditEntryCommand.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/command/SingleDebitOrCreditEntryCommand.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/data/CreditDebit.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/CreditDebit.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/data/CreditDebit.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/CreditDebit.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryAssociationParametersData.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryAssociationParametersData.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryAssociationParametersData.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryAssociationParametersData.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryData.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryData.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryData.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryDataValidator.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryDataValidator.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryDataValidator.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryDataValidator.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryIdentifier.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryIdentifier.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryIdentifier.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/JournalEntryIdentifier.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/OfficeOpeningBalancesData.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/OfficeOpeningBalancesData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/data/OfficeOpeningBalancesData.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/OfficeOpeningBalancesData.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/data/TransactionDetailData.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/TransactionDetailData.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/data/TransactionDetailData.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/TransactionDetailData.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/data/TransactionTypeEnumData.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/TransactionTypeEnumData.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/data/TransactionTypeEnumData.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/data/TransactionTypeEnumData.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntry.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntryRepository.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntryRepository.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntryRepository.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/domain/JournalEntryRepository.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntriesNotFoundException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntriesNotFoundException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntriesNotFoundException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntriesNotFoundException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntryInvalidException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntryInvalidException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntryInvalidException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntryInvalidException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntryNotFoundException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntryNotFoundException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntryNotFoundException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntryNotFoundException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntryRuntimeException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntryRuntimeException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntryRuntimeException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/exception/JournalEntryRuntimeException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/serialization/JournalEntryCommandFromApiJsonDeserializer.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/serialization/JournalEntryCommandFromApiJsonDeserializer.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/serialization/JournalEntryCommandFromApiJsonDeserializer.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/serialization/JournalEntryCommandFromApiJsonDeserializer.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalAmountHolder.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalAmountHolder.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalAmountHolder.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalAmountHolder.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformService.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformService.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryRunningBalanceUpdateService.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryRunningBalanceUpdateService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryRunningBalanceUpdateService.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryRunningBalanceUpdateService.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMapping.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMapping.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMapping.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMapping.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMappingRepository.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMappingRepository.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMappingRepository.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/domain/ProductToGLAccountMappingRepository.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/exception/ProductToGLAccountMappingInvalidException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/exception/ProductToGLAccountMappingInvalidException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/exception/ProductToGLAccountMappingInvalidException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/exception/ProductToGLAccountMappingInvalidException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/exception/ProductToGLAccountMappingNotFoundException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/exception/ProductToGLAccountMappingNotFoundException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/exception/ProductToGLAccountMappingNotFoundException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/exception/ProductToGLAccountMappingNotFoundException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/serialization/ProductToGLAccountMappingFromApiJsonDeserializer.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/serialization/ProductToGLAccountMappingFromApiJsonDeserializer.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/serialization/ProductToGLAccountMappingFromApiJsonDeserializer.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/serialization/ProductToGLAccountMappingFromApiJsonDeserializer.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformService.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformService.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformService.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformService.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformServiceImpl.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformServiceImpl.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformServiceImpl.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingReadPlatformServiceImpl.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingWritePlatformService.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingWritePlatformService.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingWritePlatformService.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingWritePlatformService.java
diff --git a/fineract-savings/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java
similarity index 100%
rename from fineract-savings/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ShareProductToGLAccountMappingHelper.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ShareProductToGLAccountMappingHelper.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ShareProductToGLAccountMappingHelper.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ShareProductToGLAccountMappingHelper.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/api/ProvisioningEntriesApiResource.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/api/ProvisioningEntriesApiResource.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/api/ProvisioningEntriesApiResource.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/api/ProvisioningEntriesApiResource.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/api/ProvisioningEntriesApiResourceSwagger.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/api/ProvisioningEntriesApiResourceSwagger.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/api/ProvisioningEntriesApiResourceSwagger.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/api/ProvisioningEntriesApiResourceSwagger.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/constant/ProvisioningEntriesApiConstants.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/constant/ProvisioningEntriesApiConstants.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/constant/ProvisioningEntriesApiConstants.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/constant/ProvisioningEntriesApiConstants.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/LoanProductProvisioningEntryData.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/data/LoanProductProvisioningEntryData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/LoanProductProvisioningEntryData.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/data/LoanProductProvisioningEntryData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/ProvisioningEntryData.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/data/ProvisioningEntryData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/data/ProvisioningEntryData.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/data/ProvisioningEntryData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/exception/NoProvisioningCriteriaDefinitionFound.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/exception/NoProvisioningCriteriaDefinitionFound.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/exception/NoProvisioningCriteriaDefinitionFound.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/exception/NoProvisioningCriteriaDefinitionFound.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/exception/ProvisioningEntryAlreadyCreatedException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/exception/ProvisioningEntryAlreadyCreatedException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/exception/ProvisioningEntryAlreadyCreatedException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/exception/ProvisioningEntryAlreadyCreatedException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/exception/ProvisioningEntryNotfoundException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/exception/ProvisioningEntryNotfoundException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/exception/ProvisioningEntryNotfoundException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/exception/ProvisioningEntryNotfoundException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/exception/ProvisioningJournalEntriesCannotbeCreatedException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/exception/ProvisioningJournalEntriesCannotbeCreatedException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/exception/ProvisioningJournalEntriesCannotbeCreatedException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/exception/ProvisioningJournalEntriesCannotbeCreatedException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/serialization/ProvisioningEntriesDefinitionJsonDeserializer.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/serialization/ProvisioningEntriesDefinitionJsonDeserializer.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/serialization/ProvisioningEntriesDefinitionJsonDeserializer.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/serialization/ProvisioningEntriesDefinitionJsonDeserializer.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformService.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformService.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/provisioning/service/ProvisioningEntriesReadPlatformServiceImpl.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/api/AccountingRuleApiResource.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/api/AccountingRuleApiResource.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/api/AccountingRuleApiResource.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/api/AccountingRuleApiResource.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/api/AccountingRuleApiResourceSwagger.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/api/AccountingRuleApiResourceSwagger.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/api/AccountingRuleApiResourceSwagger.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/api/AccountingRuleApiResourceSwagger.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/api/AccountingRuleJsonInputParams.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/api/AccountingRuleJsonInputParams.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/api/AccountingRuleJsonInputParams.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/api/AccountingRuleJsonInputParams.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/data/AccountingRuleData.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/data/AccountingRuleData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/data/AccountingRuleData.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/data/AccountingRuleData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/data/AccountingTagRuleData.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/data/AccountingTagRuleData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/data/AccountingTagRuleData.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/data/AccountingTagRuleData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRule.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRule.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRule.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRule.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRuleRepository.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRuleRepository.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRuleRepository.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRuleRepository.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRuleRepositoryWrapper.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRuleRepositoryWrapper.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRuleRepositoryWrapper.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingRuleRepositoryWrapper.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingTagRule.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingTagRule.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingTagRule.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/domain/AccountingTagRule.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleDataException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleDataException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleDataException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleDataException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleDuplicateException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleDuplicateException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleDuplicateException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleDuplicateException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleInvalidDeleteException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleInvalidDeleteException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleInvalidDeleteException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleInvalidDeleteException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleInvalidException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleInvalidException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleInvalidException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleInvalidException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleNotFoundException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleNotFoundException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleNotFoundException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/exception/AccountingRuleNotFoundException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/handler/CreateAccountingRuleCommandHandler.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/handler/CreateAccountingRuleCommandHandler.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/handler/CreateAccountingRuleCommandHandler.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/handler/CreateAccountingRuleCommandHandler.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/handler/DeleteAccountingRuleCommandHandler.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/handler/DeleteAccountingRuleCommandHandler.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/handler/DeleteAccountingRuleCommandHandler.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/handler/DeleteAccountingRuleCommandHandler.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/handler/UpdateAccountingRuleCommandHandler.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/handler/UpdateAccountingRuleCommandHandler.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/handler/UpdateAccountingRuleCommandHandler.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/handler/UpdateAccountingRuleCommandHandler.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/serialization/AccountingRuleCommandFromApiJsonDeserializer.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/serialization/AccountingRuleCommandFromApiJsonDeserializer.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/serialization/AccountingRuleCommandFromApiJsonDeserializer.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/serialization/AccountingRuleCommandFromApiJsonDeserializer.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleReadPlatformService.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleReadPlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleReadPlatformService.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleReadPlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleReadPlatformServiceImpl.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleReadPlatformServiceImpl.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleReadPlatformServiceImpl.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleReadPlatformServiceImpl.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleWritePlatformService.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleWritePlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleWritePlatformService.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleWritePlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleWritePlatformServiceJpaRepositoryImpl.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleWritePlatformServiceJpaRepositoryImpl.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleWritePlatformServiceJpaRepositoryImpl.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/service/AccountingRuleWritePlatformServiceJpaRepositoryImpl.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/rule/starter/AccountingRuleConfiguration.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/starter/AccountingRuleConfiguration.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/accounting/rule/starter/AccountingRuleConfiguration.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/rule/starter/AccountingRuleConfiguration.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/accounting/trialbalance/exception/TrialBalanceNotFoundException.java b/fineract-accounting/src/main/java/org/apache/fineract/accounting/trialbalance/exception/TrialBalanceNotFoundException.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/accounting/trialbalance/exception/TrialBalanceNotFoundException.java
rename to fineract-accounting/src/main/java/org/apache/fineract/accounting/trialbalance/exception/TrialBalanceNotFoundException.java
diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/business/domain/journalentry/JournalEntryBusinessEvent.java b/fineract-accounting/src/main/java/org/apache/fineract/infrastructure/event/business/domain/journalentry/JournalEntryBusinessEvent.java
similarity index 100%
rename from fineract-core/src/main/java/org/apache/fineract/infrastructure/event/business/domain/journalentry/JournalEntryBusinessEvent.java
rename to fineract-accounting/src/main/java/org/apache/fineract/infrastructure/event/business/domain/journalentry/JournalEntryBusinessEvent.java
diff --git a/fineract-accounting/src/main/resources/jpa/accounting/db/changelog/tenant/module/accounting/module-changelog-master.xml b/fineract-accounting/src/main/resources/jpa/accounting/db/changelog/tenant/module/accounting/module-changelog-master.xml
new file mode 100644
index 0000000..8ba6c78
--- /dev/null
+++ b/fineract-accounting/src/main/resources/jpa/accounting/db/changelog/tenant/module/accounting/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 3000 to make it easier to move existing liquibase changesets here -->
+</databaseChangeLog>
diff --git a/fineract-accounting/src/main/resources/jpa/accounting/persistence.xml b/fineract-accounting/src/main/resources/jpa/accounting/persistence.xml
new file mode 100644
index 0000000..c919eb5
--- /dev/null
+++ b/fineract-accounting/src/main/resources/jpa/accounting/persistence.xml
@@ -0,0 +1,50 @@
+<?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.infrastructure.codes.domain.Code</class>
+        <class>org.apache.fineract.infrastructure.codes.domain.CodeValue</class>
+        <class>org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom</class>
+        <class>org.apache.fineract.organisation.office.domain.Office</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.TaxComponent</class>
+        <class>org.apache.fineract.portfolio.tax.domain.TaxComponentHistory</class>
+        <class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
+        <class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
+        <exclude-unlisted-classes>false</exclude-unlisted-classes>
+        <properties>
+            <property name="eclipselink.weaving" value="static" />
+        </properties>
+    </persistence-unit>
+</persistence>
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCategoryData.java b/fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCategoryData.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCategoryData.java
rename to fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/data/ProvisioningCategoryData.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/exception/ProvisioningCriteriaCannotBeCreatedException.java b/fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/exception/ProvisioningCriteriaCannotBeCreatedException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/exception/ProvisioningCriteriaCannotBeCreatedException.java
rename to fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/exception/ProvisioningCriteriaCannotBeCreatedException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/exception/ProvisioningCriteriaNotFoundException.java b/fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/exception/ProvisioningCriteriaNotFoundException.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/exception/ProvisioningCriteriaNotFoundException.java
rename to fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/exception/ProvisioningCriteriaNotFoundException.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryReadPlatformService.java b/fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryReadPlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryReadPlatformService.java
rename to fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryReadPlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryWritePlatformService.java b/fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryWritePlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryWritePlatformService.java
rename to fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCategoryWritePlatformService.java
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaWritePlatformService.java b/fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaWritePlatformService.java
similarity index 100%
rename from fineract-provider/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaWritePlatformService.java
rename to fineract-core/src/main/java/org/apache/fineract/organisation/provisioning/service/ProvisioningCriteriaWritePlatformService.java
diff --git a/fineract-investor/dependencies.gradle b/fineract-investor/dependencies.gradle
index 943673f..12ec14a 100644
--- a/fineract-investor/dependencies.gradle
+++ b/fineract-investor/dependencies.gradle
@@ -25,6 +25,7 @@
     // implementation dependencies are directly used (compiled against) in src/main (and src/test)
     //
     implementation(project(path: ':fineract-core'))
+    implementation(project(path: ':fineract-accounting'))
     implementation(project(path: ':fineract-loan'))
     implementation('org.apache.avro:avro')
     implementation(
diff --git a/fineract-loan/dependencies.gradle b/fineract-loan/dependencies.gradle
index bd2a158..467fc30 100644
--- a/fineract-loan/dependencies.gradle
+++ b/fineract-loan/dependencies.gradle
@@ -25,6 +25,7 @@
     // implementation dependencies are directly used (compiled against) in src/main (and src/test)
     //
     implementation(project(path: ':fineract-core'))
+    implementation(project(path: ':fineract-accounting'))
 
     implementation(
             'org.springframework.boot:spring-boot-starter-web',
diff --git a/fineract-provider/dependencies.gradle b/fineract-provider/dependencies.gradle
index a287414..08c599d 100644
--- a/fineract-provider/dependencies.gradle
+++ b/fineract-provider/dependencies.gradle
@@ -25,6 +25,7 @@
     }
 
     implementation(project(path: ':fineract-core'))
+    implementation(project(path: ':fineract-accounting'))
     implementation(project(path: ':fineract-investor'))
     implementation(project(path: ':fineract-loan'))
     implementation(project(path: ':fineract-savings'))
diff --git a/fineract-provider/src/main/resources/jpa/persistence.xml b/fineract-provider/src/main/resources/jpa/persistence.xml
index 6fa84ba..bd8bd80 100644
--- a/fineract-provider/src/main/resources/jpa/persistence.xml
+++ b/fineract-provider/src/main/resources/jpa/persistence.xml
@@ -136,6 +136,9 @@
         <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>
+        <!-- Fineract Accounting module -->
+        <class>org.apache.fineract.accounting.rule.domain.AccountingRule</class>
+        <class>org.apache.fineract.accounting.rule.domain.AccountingTagRule</class>
         <exclude-unlisted-classes>false</exclude-unlisted-classes>
         <properties>
             <property name="eclipselink.weaving" value="static" />
diff --git a/fineract-war/build.gradle b/fineract-war/build.gradle
index cf3d6ac..7aa5b54 100644
--- a/fineract-war/build.gradle
+++ b/fineract-war/build.gradle
@@ -49,6 +49,7 @@
 
 dependencies {
     implementation project(':fineract-core')
+    implementation project(':fineract-accounting')
     implementation project(':fineract-investor')
     implementation project(':fineract-loan')
     implementation project(':fineract-provider')
diff --git a/integration-tests/dependencies.gradle b/integration-tests/dependencies.gradle
index 6f939e1..0a5a3c8 100644
--- a/integration-tests/dependencies.gradle
+++ b/integration-tests/dependencies.gradle
@@ -23,6 +23,7 @@
     tomcat 'org.apache.tomcat:tomcat:10.1.18@zip'
     testImplementation( files("$rootDir/fineract-provider/build/classes/java/main/"),
             project(path: ':fineract-core', configuration: 'runtimeElements'),
+            project(path: ':fineract-accounting', configuration: 'runtimeElements'),
             project(path: ':fineract-investor', configuration: 'runtimeElements'),
             project(path: ':fineract-loan', configuration: 'runtimeElements'),
             project(path: ':fineract-savings', configuration: 'runtimeElements'),
diff --git a/settings.gradle b/settings.gradle
index e3b712a..8bf195a 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -49,6 +49,7 @@
 
 rootProject.name='fineract'
 include ':fineract-core'
+include ':fineract-accounting'
 include ':fineract-provider'
 include ':fineract-investor'
 include ':fineract-loan'