You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ik...@apache.org on 2018/04/27 13:20:02 UTC

[fineract-cn-customer] branch revert-5-develop created (now 07e5eaf)

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

ikamga pushed a change to branch revert-5-develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-customer.git.


      at 07e5eaf  Revert "Document the Customer API"

This branch includes the following new commits:

     new 07e5eaf  Revert "Document the Customer API"

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


-- 
To stop receiving notification emails like this one, please contact
ikamga@apache.org.

[fineract-cn-customer] 01/01: Revert "Document the Customer API"

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

ikamga pushed a commit to branch revert-5-develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-customer.git

commit 07e5eaf3df7706a56d9aab32572e7ed7f658ef7b
Author: Isaac Kamga <u2...@gmail.com>
AuthorDate: Fri Apr 27 14:19:59 2018 +0100

    Revert "Document the Customer API"
---
 service/build.gradle                               |   45 +-
 service/src/doc/asciidoc/api-docs.adoc             |  307 ------
 .../should-activate-client/curl-request.adoc       |    4 -
 .../should-activate-client/http-request.adoc       |    9 -
 .../should-activate-client/http-response.adoc      |    5 -
 .../should-activate-client/httpie-request.adoc     |    4 -
 .../should-close-client/curl-request.adoc          |    4 -
 .../should-close-client/http-request.adoc          |    9 -
 .../should-close-client/http-response.adoc         |    5 -
 .../should-close-client/httpie-request.adoc        |    4 -
 .../should-create-customer/curl-request.adoc       |    4 -
 .../should-create-customer/http-request.adoc       |    9 -
 .../should-create-customer/http-response.adoc      |    5 -
 .../should-create-customer/httpie-request.adoc     |    4 -
 .../should-delete-portrait/curl-request.adoc       |    4 -
 .../should-delete-portrait/http-request.adoc       |    7 -
 .../should-delete-portrait/http-response.adoc      |    5 -
 .../should-delete-portrait/httpie-request.adoc     |    4 -
 .../should-fetch-commands/curl-request.adoc        |    4 -
 .../should-fetch-commands/http-request.adoc        |    7 -
 .../should-fetch-commands/http-response.adoc       |    5 -
 .../should-fetch-commands/httpie-request.adoc      |    4 -
 .../should-fetch-customers/curl-request.adoc       |    4 -
 .../should-fetch-customers/http-request.adoc       |    7 -
 .../should-fetch-customers/http-response.adoc      |    5 -
 .../should-fetch-customers/httpie-request.adoc     |    4 -
 .../should-find-customer/curl-request.adoc         |    4 -
 .../should-find-customer/http-request.adoc         |    7 -
 .../should-find-customer/http-response.adoc        |    5 -
 .../should-find-customer/httpie-request.adoc       |    4 -
 .../should-lock-client/curl-request.adoc           |    4 -
 .../should-lock-client/http-request.adoc           |    9 -
 .../should-lock-client/http-response.adoc          |    5 -
 .../should-lock-client/httpie-request.adoc         |    4 -
 .../should-reopen-client/curl-request.adoc         |    4 -
 .../should-reopen-client/http-request.adoc         |    9 -
 .../should-reopen-client/http-response.adoc        |    5 -
 .../should-reopen-client/httpie-request.adoc       |    4 -
 .../should-replace-portrait/curl-request.adoc      |    4 -
 .../should-replace-portrait/http-request.adoc      |   10 -
 .../should-replace-portrait/http-response.adoc     |    5 -
 .../should-replace-portrait/httpie-request.adoc    |    4 -
 .../should-unlock-client/curl-request.adoc         |    4 -
 .../should-unlock-client/http-request.adoc         |    9 -
 .../should-unlock-client/http-response.adoc        |    5 -
 .../should-unlock-client/httpie-request.adoc       |    4 -
 .../should-update-address/curl-request.adoc        |    4 -
 .../should-update-address/http-request.adoc        |   10 -
 .../should-update-address/http-response.adoc       |    5 -
 .../should-update-address/httpie-request.adoc      |    4 -
 .../curl-request.adoc                              |    4 -
 .../http-request.adoc                              |   10 -
 .../http-response.adoc                             |    5 -
 .../httpie-request.adoc                            |    4 -
 .../should-update-customer/curl-request.adoc       |    4 -
 .../should-update-customer/http-request.adoc       |    9 -
 .../should-update-customer/http-response.adoc      |    5 -
 .../should-update-customer/httpie-request.adoc     |    4 -
 .../should-upload-portrait/curl-request.adoc       |    4 -
 .../should-upload-portrait/http-request.adoc       |   10 -
 .../should-upload-portrait/http-response.adoc      |    5 -
 .../should-upload-portrait/httpie-request.adoc     |    4 -
 .../curl-request.adoc                              |    4 -
 .../http-request.adoc                              |    8 -
 .../http-response.adoc                             |    5 -
 .../httpie-request.adoc                            |    4 -
 .../curl-request.adoc                              |    4 -
 .../http-request.adoc                              |    7 -
 .../http-response.adoc                             |    5 -
 .../httpie-request.adoc                            |    4 -
 .../should-fetch-scans/curl-request.adoc           |    4 -
 .../should-fetch-scans/http-request.adoc           |    7 -
 .../should-fetch-scans/http-response.adoc          |    5 -
 .../should-fetch-scans/httpie-request.adoc         |    4 -
 .../should-find-scan-with-image/curl-request.adoc  |    4 -
 .../should-find-scan-with-image/http-request.adoc  |    7 -
 .../should-find-scan-with-image/http-response.adoc |    5 -
 .../httpie-request.adoc                            |    4 -
 .../should-find-scan/curl-request.adoc             |    4 -
 .../should-find-scan/http-request.adoc             |    7 -
 .../should-find-scan/http-response.adoc            |    5 -
 .../should-find-scan/httpie-request.adoc           |    4 -
 .../curl-request.adoc                              |    4 -
 .../http-request.adoc                              |    8 -
 .../http-response.adoc                             |    5 -
 .../httpie-request.adoc                            |    4 -
 service/src/doc/html5/html5/api-docs.html          | 1103 --------------------
 .../fineract/cn/customer/AbstractCustomerTest.java |  126 ---
 .../fineract/cn/customer/SuiteTestEnvironment.java |   43 -
 .../apache/fineract/cn/customer/TestCustomer.java  |  576 ----------
 .../apache/fineract/cn/customer/TestDocuments.java |  224 ----
 .../cn/customer/TestIdentificationCards.java       |  341 ------
 .../fineract/cn/customer/TestInfrastructure.java   |   47 -
 .../org/apache/fineract/cn/customer/TestSuite.java |   37 -
 .../fineract/cn/customer/TestTaskDefinition.java   |  133 ---
 .../fineract/cn/customer/TestTaskInstance.java     |  237 -----
 .../fineract/cn/customer/catalog/TestCatalog.java  |  350 -------
 .../catalog/listener/CatalogEventListener.java     |   76 --
 .../cn/customer/catalog/util/CatalogGenerator.java |   67 --
 .../customer/listener/CustomerEventListener.java   |  184 ----
 .../customer/listener/DocumentEventListener.java   |  104 --
 .../customer/listener/MigrationEventListener.java  |   49 -
 .../cn/customer/listener/TaskEventListener.java    |   58 -
 .../cn/customer/util/AddressGenerator.java         |   41 -
 .../cn/customer/util/CommandGenerator.java         |   35 -
 .../cn/customer/util/ContactDetailGenerator.java   |   39 -
 .../customer/util/CustomerDocumentGenerator.java   |   36 -
 .../cn/customer/util/CustomerGenerator.java        |   52 -
 .../customer/util/IdentificationCardGenerator.java |   42 -
 .../fineract/cn/customer/util/ScanGenerator.java   |   42 -
 .../fineract/cn/customer/util/TaskGenerator.java   |   41 -
 111 files changed, 20 insertions(+), 4863 deletions(-)

diff --git a/service/build.gradle b/service/build.gradle
index f4c8c7f..04cd95a 100644
--- a/service/build.gradle
+++ b/service/build.gradle
@@ -1,3 +1,20 @@
+/*
+ * 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.
+ */
+
 buildscript {
     ext {
         springBootVersion = '1.4.1.RELEASE'
@@ -9,7 +26,6 @@ buildscript {
 
     dependencies {
         classpath ("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
-        classpath("org.asciidoctor:asciidoctor-gradle-plugin:1.5.3")
     }
 }
 
@@ -19,8 +35,8 @@ plugins {
 }
 
 apply from: '../shared.gradle'
+
 apply plugin: 'spring-boot'
-apply plugin: 'org.asciidoctor.convert'
 
 springBoot {
     executable = true
@@ -36,35 +52,14 @@ dependencies {
             [group: 'org.apache.fineract.cn.anubis', name: 'library', version: versions.frameworkanubis],
             [group: 'com.google.code.gson', name: 'gson'],
             [group: 'org.apache.fineract.cn', name: 'lang', version: versions.frameworklang],
-            [group: 'org.apache.fineract.cn', name: 'api', version: versions.frameworkapi],
-            [group: 'org.apache.fineract.cn', name: 'test', version: versions.frameworktest],
             [group: 'org.apache.fineract.cn', name: 'async', version: versions.frameworkasync],
             [group: 'org.apache.fineract.cn', name: 'cassandra', version: versions.frameworkcassandra],
             [group: 'org.apache.fineract.cn', name: 'mariadb', version: versions.frameworkmariadb],
             [group: 'org.apache.fineract.cn', name: 'command', version: versions.frameworkcommand],
-            [group: 'org.hibernate', name: 'hibernate-validator', version: versions.validator],
-            [group: 'org.springframework.boot', name: 'spring-boot-starter-web'],
-            [group: 'org.springframework.restdocs', name: 'spring-restdocs-mockmvc']
-    )
-    testCompile(
-            [group: 'org.apache.fineract.cn.customer', name: 'api', version: project.version],
-            [group: 'org.apache.fineract.cn', name: 'api', version: versions.frameworkapi],
-            [group: 'org.apache.fineract.cn', name: 'test', version: versions.frameworktest],
-            [group: 'org.apache.fineract.cn.anubis', name: 'test', version: versions.frameworkanubis],
-            [group: 'org.springframework.restdocs', name: 'spring-restdocs-mockmvc'],
-            [group: 'org.springframework.boot', name: 'spring-boot-starter-test'],
-            [group: 'junit', name: 'junit', version: '4.12']
+            [group: 'org.hibernate', name: 'hibernate-validator', version: versions.validator]
     )
 }
 
-asciidoctor {
-    sourceDir 'src/doc/asciidoc/'
-    outputDir 'src/doc/html5'
-    options backend: "html", doctype: "book"
-    attributes "source-highlighter": "highlightjs", \
-                'snippets': file('src/doc/generated-snippets/')
-}
-
 publishToMavenLocal.dependsOn bootRepackage
 
 publishing {
@@ -75,7 +70,7 @@ publishing {
             artifactId project.name
             version project.version
         }
-        bootService(MavenPublication) {
+       bootService(MavenPublication) {
             // "boot" jar
             artifact ("$buildDir/libs/$project.name-$version-boot.jar")
             groupId project.group
diff --git a/service/src/doc/asciidoc/api-docs.adoc b/service/src/doc/asciidoc/api-docs.adoc
deleted file mode 100644
index acc5456..0000000
--- a/service/src/doc/asciidoc/api-docs.adoc
+++ /dev/null
@@ -1,307 +0,0 @@
-== Apache Fineract CN Customer Management API Documentation ==
-
-== Customers ==
-
-==== Create A Customer ====
-
-.curl-request
-include::{snippets}/test-customer/should-create-customer/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-customer/should-create-customer/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-customer/should-create-customer/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-customer/should-create-customer/httpie-request.adoc[]
-
-==== Get A Customer ====
-
-.curl-request
-include::{snippets}/test-customer/should-find-customer/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-customer/should-find-customer/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-customer/should-find-customer/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-customer/should-find-customer/httpie-request.adoc[]
-
-==== Get Customers ====
-
-.curl-request
-include::{snippets}/test-customer/should-fetch-customers/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-customer/should-fetch-customers/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-customer/should-fetch-customers/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-customer/should-fetch-customers/httpie-request.adoc[]
-
-==== Update A Customer ====
-
-.curl-request
-include::{snippets}/test-customer/should-update-customer/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-customer/should-update-customer/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-customer/should-update-customer/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-customer/should-update-customer/httpie-request.adoc[]
-
-==== Update A Customer's Address ====
-
-.curl-request
-include::{snippets}/test-customer/should-update-address/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-customer/should-update-address/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-customer/should-update-address/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-customer/should-update-address/httpie-request.adoc[]
-
-==== Update A Customer's Contact Details ====
-
-.curl-request
-include::{snippets}/test-customer/should-update-contact-details/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-customer/should-update-contact-details/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-customer/should-update-contact-details/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-customer/should-update-contact-details/httpie-request.adoc[]
-
-==== Upload A Customer's Portrait ====
-
-.curl-request
-include::{snippets}/test-customer/should-upload-portrait/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-customer/should-upload-portrait/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-customer/should-upload-portrait/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-customer/should-upload-portrait/httpie-request.adoc[]
-
-==== Replace A Customer's Portrait ====
-
-.curl-request
-include::{snippets}/test-customer/should-replace-portrait/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-customer/should-replace-portrait/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-customer/should-replace-portrait/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-customer/should-replace-portrait/httpie-request.adoc[]
-
-==== Delete A Customer's Portrait ====
-
-.curl-request
-include::{snippets}/test-customer/should-delete-portrait/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-customer/should-delete-portrait/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-customer/should-delete-portrait/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-customer/should-delete-portrait/httpie-request.adoc[]
-
-== Command A Customer ==
-
-==== List A Customer's Commands ====
-
-.curl-request
-include::{snippets}/test-customer/should-fetch-commands/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-customer/should-fetch-commands/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-customer/should-fetch-commands/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-customer/should-fetch-commands/httpie-request.adoc[]
-
-==== Activate A Customer ====
-
-.curl-request
-include::{snippets}/test-customer/should-activate-client/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-customer/should-activate-client/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-customer/should-activate-client/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-customer/should-activate-client/httpie-request.adoc[]
-
-==== Lock A Customer ====
-
-.curl-request
-include::{snippets}/test-customer/should-lock-client/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-customer/should-lock-client/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-customer/should-lock-client/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-customer/should-lock-client/httpie-request.adoc[]
-
-==== Unlock A Customer ====
-
-.curl-request
-include::{snippets}/test-customer/should-unlock-client/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-customer/should-unlock-client/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-customer/should-unlock-client/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-customer/should-unlock-client/httpie-request.adoc[]
-
-==== Close A Customer ====
-
-.curl-request
-include::{snippets}/test-customer/should-close-client/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-customer/should-close-client/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-customer/should-close-client/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-customer/should-close-client/httpie-request.adoc[]
-
-==== Reopen A Customer ====
-
-.curl-request
-include::{snippets}/test-customer/should-reopen-client/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-customer/should-reopen-client/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-customer/should-reopen-client/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-customer/should-reopen-client/httpie-request.adoc[]
-
-== Identification Cards ==
-
-==== Create A Customer's Identification Card ====
-
-.curl-request
-include::{snippets}/test-identification-cards/should-create-identification-card/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-identification-cards/should-create-identification-card/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-identification-cards/should-create-identification-card/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-identification-cards/should-create-identification-card/httpie-request.adoc[]
-
-==== List A Customer's Identification Cards ====
-
-.curl-request
-include::{snippets}/test-identification-cards/should-fetch-identification-cards/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-identification-cards/should-fetch-identification-cards/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-identification-cards/should-fetch-identification-cards/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-identification-cards/should-fetch-identification-cards/httpie-request.adoc[]
-
-==== Update A Customer's Identification Card ====
-
-.curl-request
-include::{snippets}/test-identification-cards/should-update-identification-card/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-identification-cards/should-update-identification-card/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-identification-cards/should-update-identification-card/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-identification-cards/should-update-identification-card/httpie-request.adoc[]
-
-==== List A Customer's Identification Card Scans ====
-
-.curl-request
-include::{snippets}/test-identification-cards/should-fetch-scans/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-identification-cards/should-fetch-scans/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-identification-cards/should-fetch-scans/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-identification-cards/should-fetch-scans/httpie-request.adoc[]
-
-==== List A Customer's Identification Card Scan ====
-
-.curl-request
-include::{snippets}/test-identification-cards/should-find-scan/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-identification-cards/should-find-scan/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-identification-cards/should-find-scan/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-identification-cards/should-find-scan/httpie-request.adoc[]
-
-==== List A Customer's Identification Card Scan With Image ====
-
-.curl-request
-include::{snippets}/test-identification-cards/should-find-scan-with-image/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-identification-cards/should-find-scan-with-image/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-identification-cards/should-find-scan-with-image/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-identification-cards/should-find-scan-with-image/httpie-request.adoc[]
-
-
-
-
-
-
diff --git a/service/src/doc/generated-snippets/test-customer/should-activate-client/curl-request.adoc b/service/src/doc/generated-snippets/test-customer/should-activate-client/curl-request.adoc
deleted file mode 100644
index 078430a..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-activate-client/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/u4tjlLnf/commands' -i -X PUT -H 'Content-Type: application/json' -d 'u4tjlLnf'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-activate-client/http-request.adoc b/service/src/doc/generated-snippets/test-customer/should-activate-client/http-request.adoc
deleted file mode 100644
index 87b991c..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-activate-client/http-request.adoc
+++ /dev/null
@@ -1,9 +0,0 @@
-[source,http,options="nowrap"]
-----
-PUT /customer/v1/customers/u4tjlLnf/commands HTTP/1.1
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-u4tjlLnf
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-activate-client/http-response.adoc b/service/src/doc/generated-snippets/test-customer/should-activate-client/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-activate-client/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-activate-client/httpie-request.adoc b/service/src/doc/generated-snippets/test-customer/should-activate-client/httpie-request.adoc
deleted file mode 100644
index 6329a27..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-activate-client/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ echo 'u4tjlLnf' | http PUT 'http://localhost:8080/customer/v1/customers/u4tjlLnf/commands' 'Content-Type:application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-close-client/curl-request.adoc b/service/src/doc/generated-snippets/test-customer/should-close-client/curl-request.adoc
deleted file mode 100644
index 2388beb..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-close-client/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/Wc3zwE42/commands' -i -X PUT -H 'Content-Type: application/json' -d 'Wc3zwE42'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-close-client/http-request.adoc b/service/src/doc/generated-snippets/test-customer/should-close-client/http-request.adoc
deleted file mode 100644
index 146df73..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-close-client/http-request.adoc
+++ /dev/null
@@ -1,9 +0,0 @@
-[source,http,options="nowrap"]
-----
-PUT /customer/v1/customers/Wc3zwE42/commands HTTP/1.1
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-Wc3zwE42
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-close-client/http-response.adoc b/service/src/doc/generated-snippets/test-customer/should-close-client/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-close-client/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-close-client/httpie-request.adoc b/service/src/doc/generated-snippets/test-customer/should-close-client/httpie-request.adoc
deleted file mode 100644
index 7241dbe..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-close-client/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ echo 'Wc3zwE42' | http PUT 'http://localhost:8080/customer/v1/customers/Wc3zwE42/commands' 'Content-Type:application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-create-customer/curl-request.adoc b/service/src/doc/generated-snippets/test-customer/should-create-customer/curl-request.adoc
deleted file mode 100644
index 0c4bca6..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-create-customer/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers' -i -X POST -H 'Content-Type: application/json' -d 'HGLg6dMM'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-create-customer/http-request.adoc b/service/src/doc/generated-snippets/test-customer/should-create-customer/http-request.adoc
deleted file mode 100644
index a98d779..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-create-customer/http-request.adoc
+++ /dev/null
@@ -1,9 +0,0 @@
-[source,http,options="nowrap"]
-----
-POST /customer/v1/customers HTTP/1.1
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-HGLg6dMM
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-create-customer/http-response.adoc b/service/src/doc/generated-snippets/test-customer/should-create-customer/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-create-customer/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-create-customer/httpie-request.adoc b/service/src/doc/generated-snippets/test-customer/should-create-customer/httpie-request.adoc
deleted file mode 100644
index 74b1d1f..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-create-customer/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ echo 'HGLg6dMM' | http POST 'http://localhost:8080/customer/v1/customers' 'Content-Type:application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-delete-portrait/curl-request.adoc b/service/src/doc/generated-snippets/test-customer/should-delete-portrait/curl-request.adoc
deleted file mode 100644
index 35cfcd0..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-delete-portrait/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/XRGYXK2C/portrait' -i -X DELETE -H 'Content-Type: image/png'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-delete-portrait/http-request.adoc b/service/src/doc/generated-snippets/test-customer/should-delete-portrait/http-request.adoc
deleted file mode 100644
index dede8f8..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-delete-portrait/http-request.adoc
+++ /dev/null
@@ -1,7 +0,0 @@
-[source,http,options="nowrap"]
-----
-DELETE /customer/v1/customers/XRGYXK2C/portrait HTTP/1.1
-Content-Type: image/png
-Host: localhost:8080
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-delete-portrait/http-response.adoc b/service/src/doc/generated-snippets/test-customer/should-delete-portrait/http-response.adoc
deleted file mode 100644
index 4fc5fd7..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-delete-portrait/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 202 Accepted
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-delete-portrait/httpie-request.adoc b/service/src/doc/generated-snippets/test-customer/should-delete-portrait/httpie-request.adoc
deleted file mode 100644
index e00254a..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-delete-portrait/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ http DELETE 'http://localhost:8080/customer/v1/customers/XRGYXK2C/portrait' 'Content-Type:image/png'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-fetch-commands/curl-request.adoc b/service/src/doc/generated-snippets/test-customer/should-fetch-commands/curl-request.adoc
deleted file mode 100644
index 929e53e..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-fetch-commands/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/Ye6mDs0v/commands' -i -H 'Accept: */*'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-fetch-commands/http-request.adoc b/service/src/doc/generated-snippets/test-customer/should-fetch-commands/http-request.adoc
deleted file mode 100644
index 48ce0ce..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-fetch-commands/http-request.adoc
+++ /dev/null
@@ -1,7 +0,0 @@
-[source,http,options="nowrap"]
-----
-GET /customer/v1/customers/Ye6mDs0v/commands HTTP/1.1
-Accept: */*
-Host: localhost:8080
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-fetch-commands/http-response.adoc b/service/src/doc/generated-snippets/test-customer/should-fetch-commands/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-fetch-commands/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-fetch-commands/httpie-request.adoc b/service/src/doc/generated-snippets/test-customer/should-fetch-commands/httpie-request.adoc
deleted file mode 100644
index e88536f..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-fetch-commands/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ http GET 'http://localhost:8080/customer/v1/customers/Ye6mDs0v/commands' 'Accept:*/*'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-fetch-customers/curl-request.adoc b/service/src/doc/generated-snippets/test-customer/should-fetch-customers/curl-request.adoc
deleted file mode 100644
index f6b25ba..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-fetch-customers/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers' -i -H 'Accept: */*'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-fetch-customers/http-request.adoc b/service/src/doc/generated-snippets/test-customer/should-fetch-customers/http-request.adoc
deleted file mode 100644
index 3d53d0f..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-fetch-customers/http-request.adoc
+++ /dev/null
@@ -1,7 +0,0 @@
-[source,http,options="nowrap"]
-----
-GET /customer/v1/customers HTTP/1.1
-Accept: */*
-Host: localhost:8080
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-fetch-customers/http-response.adoc b/service/src/doc/generated-snippets/test-customer/should-fetch-customers/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-fetch-customers/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-fetch-customers/httpie-request.adoc b/service/src/doc/generated-snippets/test-customer/should-fetch-customers/httpie-request.adoc
deleted file mode 100644
index cf9cd53..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-fetch-customers/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ http GET 'http://localhost:8080/customer/v1/customers' 'Accept:*/*'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-find-customer/curl-request.adoc b/service/src/doc/generated-snippets/test-customer/should-find-customer/curl-request.adoc
deleted file mode 100644
index 59fc93f..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-find-customer/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/njTjvNyL' -i -H 'Accept: application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-find-customer/http-request.adoc b/service/src/doc/generated-snippets/test-customer/should-find-customer/http-request.adoc
deleted file mode 100644
index 09e9b75..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-find-customer/http-request.adoc
+++ /dev/null
@@ -1,7 +0,0 @@
-[source,http,options="nowrap"]
-----
-GET /customer/v1/customers/njTjvNyL HTTP/1.1
-Accept: application/json
-Host: localhost:8080
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-find-customer/http-response.adoc b/service/src/doc/generated-snippets/test-customer/should-find-customer/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-find-customer/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-find-customer/httpie-request.adoc b/service/src/doc/generated-snippets/test-customer/should-find-customer/httpie-request.adoc
deleted file mode 100644
index b15cb89..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-find-customer/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ http GET 'http://localhost:8080/customer/v1/customers/njTjvNyL' 'Accept:application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-lock-client/curl-request.adoc b/service/src/doc/generated-snippets/test-customer/should-lock-client/curl-request.adoc
deleted file mode 100644
index 5dbd261..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-lock-client/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/JDD1oBjd/commands' -i -X PUT -H 'Content-Type: application/json' -d 'JDD1oBjd'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-lock-client/http-request.adoc b/service/src/doc/generated-snippets/test-customer/should-lock-client/http-request.adoc
deleted file mode 100644
index 9e4ac4d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-lock-client/http-request.adoc
+++ /dev/null
@@ -1,9 +0,0 @@
-[source,http,options="nowrap"]
-----
-PUT /customer/v1/customers/JDD1oBjd/commands HTTP/1.1
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-JDD1oBjd
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-lock-client/http-response.adoc b/service/src/doc/generated-snippets/test-customer/should-lock-client/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-lock-client/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-lock-client/httpie-request.adoc b/service/src/doc/generated-snippets/test-customer/should-lock-client/httpie-request.adoc
deleted file mode 100644
index ffbc772..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-lock-client/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ echo 'JDD1oBjd' | http PUT 'http://localhost:8080/customer/v1/customers/JDD1oBjd/commands' 'Content-Type:application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-reopen-client/curl-request.adoc b/service/src/doc/generated-snippets/test-customer/should-reopen-client/curl-request.adoc
deleted file mode 100644
index dad866e..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-reopen-client/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/R0xYQ8jJ/commands' -i -X PUT -H 'Content-Type: application/json' -d 'R0xYQ8jJ'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-reopen-client/http-request.adoc b/service/src/doc/generated-snippets/test-customer/should-reopen-client/http-request.adoc
deleted file mode 100644
index 51b9be2..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-reopen-client/http-request.adoc
+++ /dev/null
@@ -1,9 +0,0 @@
-[source,http,options="nowrap"]
-----
-PUT /customer/v1/customers/R0xYQ8jJ/commands HTTP/1.1
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-R0xYQ8jJ
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-reopen-client/http-response.adoc b/service/src/doc/generated-snippets/test-customer/should-reopen-client/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-reopen-client/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-reopen-client/httpie-request.adoc b/service/src/doc/generated-snippets/test-customer/should-reopen-client/httpie-request.adoc
deleted file mode 100644
index 2234906..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-reopen-client/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ echo 'R0xYQ8jJ' | http PUT 'http://localhost:8080/customer/v1/customers/R0xYQ8jJ/commands' 'Content-Type:application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-replace-portrait/curl-request.adoc b/service/src/doc/generated-snippets/test-customer/should-replace-portrait/curl-request.adoc
deleted file mode 100644
index af22edb..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-replace-portrait/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/y6l1FhV8/portrait' -i -X POST -H 'Accept: multipart/form-data' -H 'Content-Type: image/png' -d 'Real Devs Deliver'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-replace-portrait/http-request.adoc b/service/src/doc/generated-snippets/test-customer/should-replace-portrait/http-request.adoc
deleted file mode 100644
index c591c70..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-replace-portrait/http-request.adoc
+++ /dev/null
@@ -1,10 +0,0 @@
-[source,http,options="nowrap"]
-----
-POST /customer/v1/customers/y6l1FhV8/portrait HTTP/1.1
-Accept: multipart/form-data
-Content-Type: image/png
-Host: localhost:8080
-Content-Length: 17
-
-Real Devs Deliver
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-replace-portrait/http-response.adoc b/service/src/doc/generated-snippets/test-customer/should-replace-portrait/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-replace-portrait/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-replace-portrait/httpie-request.adoc b/service/src/doc/generated-snippets/test-customer/should-replace-portrait/httpie-request.adoc
deleted file mode 100644
index 8accdab..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-replace-portrait/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ echo 'Real Devs Deliver' | http POST 'http://localhost:8080/customer/v1/customers/y6l1FhV8/portrait' 'Accept:multipart/form-data' 'Content-Type:image/png'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-unlock-client/curl-request.adoc b/service/src/doc/generated-snippets/test-customer/should-unlock-client/curl-request.adoc
deleted file mode 100644
index d4fecfe..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-unlock-client/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/Izcp1G3s/commands' -i -X PUT -H 'Content-Type: application/json' -d 'Izcp1G3s'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-unlock-client/http-request.adoc b/service/src/doc/generated-snippets/test-customer/should-unlock-client/http-request.adoc
deleted file mode 100644
index a76ad25..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-unlock-client/http-request.adoc
+++ /dev/null
@@ -1,9 +0,0 @@
-[source,http,options="nowrap"]
-----
-PUT /customer/v1/customers/Izcp1G3s/commands HTTP/1.1
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-Izcp1G3s
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-unlock-client/http-response.adoc b/service/src/doc/generated-snippets/test-customer/should-unlock-client/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-unlock-client/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-unlock-client/httpie-request.adoc b/service/src/doc/generated-snippets/test-customer/should-unlock-client/httpie-request.adoc
deleted file mode 100644
index 921fb8c..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-unlock-client/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ echo 'Izcp1G3s' | http PUT 'http://localhost:8080/customer/v1/customers/Izcp1G3s/commands' 'Content-Type:application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-update-address/curl-request.adoc b/service/src/doc/generated-snippets/test-customer/should-update-address/curl-request.adoc
deleted file mode 100644
index 6f66179..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-update-address/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/TCDV60bZ/address' -i -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' -d 'TCDV60bZ'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-update-address/http-request.adoc b/service/src/doc/generated-snippets/test-customer/should-update-address/http-request.adoc
deleted file mode 100644
index 8d4c3fe..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-update-address/http-request.adoc
+++ /dev/null
@@ -1,10 +0,0 @@
-[source,http,options="nowrap"]
-----
-PUT /customer/v1/customers/TCDV60bZ/address HTTP/1.1
-Accept: application/json
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-TCDV60bZ
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-update-address/http-response.adoc b/service/src/doc/generated-snippets/test-customer/should-update-address/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-update-address/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-update-address/httpie-request.adoc b/service/src/doc/generated-snippets/test-customer/should-update-address/httpie-request.adoc
deleted file mode 100644
index e04df1f..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-update-address/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ echo 'TCDV60bZ' | http PUT 'http://localhost:8080/customer/v1/customers/TCDV60bZ/address' 'Accept:application/json' 'Content-Type:application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-update-contact-details/curl-request.adoc b/service/src/doc/generated-snippets/test-customer/should-update-contact-details/curl-request.adoc
deleted file mode 100644
index f947e0d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-update-contact-details/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/3WYfvF6X/contact' -i -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' -d '3WYfvF6X'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-update-contact-details/http-request.adoc b/service/src/doc/generated-snippets/test-customer/should-update-contact-details/http-request.adoc
deleted file mode 100644
index 8d2df3f..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-update-contact-details/http-request.adoc
+++ /dev/null
@@ -1,10 +0,0 @@
-[source,http,options="nowrap"]
-----
-PUT /customer/v1/customers/3WYfvF6X/contact HTTP/1.1
-Accept: application/json
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-3WYfvF6X
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-update-contact-details/http-response.adoc b/service/src/doc/generated-snippets/test-customer/should-update-contact-details/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-update-contact-details/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-update-contact-details/httpie-request.adoc b/service/src/doc/generated-snippets/test-customer/should-update-contact-details/httpie-request.adoc
deleted file mode 100644
index f641211..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-update-contact-details/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ echo '3WYfvF6X' | http PUT 'http://localhost:8080/customer/v1/customers/3WYfvF6X/contact' 'Accept:application/json' 'Content-Type:application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-update-customer/curl-request.adoc b/service/src/doc/generated-snippets/test-customer/should-update-customer/curl-request.adoc
deleted file mode 100644
index 207d50b..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-update-customer/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/6nD48BGj' -i -X PUT -H 'Content-Type: application/json' -d '6nD48BGj'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-update-customer/http-request.adoc b/service/src/doc/generated-snippets/test-customer/should-update-customer/http-request.adoc
deleted file mode 100644
index f1da70b..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-update-customer/http-request.adoc
+++ /dev/null
@@ -1,9 +0,0 @@
-[source,http,options="nowrap"]
-----
-PUT /customer/v1/customers/6nD48BGj HTTP/1.1
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-6nD48BGj
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-update-customer/http-response.adoc b/service/src/doc/generated-snippets/test-customer/should-update-customer/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-update-customer/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-update-customer/httpie-request.adoc b/service/src/doc/generated-snippets/test-customer/should-update-customer/httpie-request.adoc
deleted file mode 100644
index 7b34e0f..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-update-customer/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ echo '6nD48BGj' | http PUT 'http://localhost:8080/customer/v1/customers/6nD48BGj' 'Content-Type:application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-upload-portrait/curl-request.adoc b/service/src/doc/generated-snippets/test-customer/should-upload-portrait/curl-request.adoc
deleted file mode 100644
index f52b490..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-upload-portrait/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/3qtoZGv8/portrait' -i -X POST -H 'Accept: multipart/form-data' -H 'Content-Type: image/png' -d 'Devs May Deliver'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-upload-portrait/http-request.adoc b/service/src/doc/generated-snippets/test-customer/should-upload-portrait/http-request.adoc
deleted file mode 100644
index 1b984bc..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-upload-portrait/http-request.adoc
+++ /dev/null
@@ -1,10 +0,0 @@
-[source,http,options="nowrap"]
-----
-POST /customer/v1/customers/3qtoZGv8/portrait HTTP/1.1
-Accept: multipart/form-data
-Content-Type: image/png
-Host: localhost:8080
-Content-Length: 16
-
-Devs May Deliver
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-upload-portrait/http-response.adoc b/service/src/doc/generated-snippets/test-customer/should-upload-portrait/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-upload-portrait/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-customer/should-upload-portrait/httpie-request.adoc b/service/src/doc/generated-snippets/test-customer/should-upload-portrait/httpie-request.adoc
deleted file mode 100644
index e3f25ac..0000000
--- a/service/src/doc/generated-snippets/test-customer/should-upload-portrait/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ echo 'Devs May Deliver' | http POST 'http://localhost:8080/customer/v1/customers/3qtoZGv8/portrait' 'Accept:multipart/form-data' 'Content-Type:image/png'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-create-identification-card/curl-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-create-identification-card/curl-request.adoc
deleted file mode 100644
index 67756f6..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-create-identification-card/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/g3ADQraM/identifications' -i -X POST -H 'Content-Type: application/json' -H 'Accept: application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-create-identification-card/http-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-create-identification-card/http-request.adoc
deleted file mode 100644
index e758c2b..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-create-identification-card/http-request.adoc
+++ /dev/null
@@ -1,8 +0,0 @@
-[source,http,options="nowrap"]
-----
-POST /customer/v1/customers/g3ADQraM/identifications HTTP/1.1
-Content-Type: application/json
-Accept: application/json
-Host: localhost:8080
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-create-identification-card/http-response.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-create-identification-card/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-create-identification-card/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-create-identification-card/httpie-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-create-identification-card/httpie-request.adoc
deleted file mode 100644
index 30c59aa..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-create-identification-card/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ http POST 'http://localhost:8080/customer/v1/customers/g3ADQraM/identifications' 'Content-Type:application/json' 'Accept:application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-identification-cards/curl-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-fetch-identification-cards/curl-request.adoc
deleted file mode 100644
index c4219c3..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-identification-cards/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/f4A6My9u/identifications' -i -H 'Accept: */*'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-identification-cards/http-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-fetch-identification-cards/http-request.adoc
deleted file mode 100644
index 67cdd3c..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-identification-cards/http-request.adoc
+++ /dev/null
@@ -1,7 +0,0 @@
-[source,http,options="nowrap"]
-----
-GET /customer/v1/customers/f4A6My9u/identifications HTTP/1.1
-Accept: */*
-Host: localhost:8080
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-identification-cards/http-response.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-fetch-identification-cards/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-identification-cards/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-identification-cards/httpie-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-fetch-identification-cards/httpie-request.adoc
deleted file mode 100644
index a046647..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-identification-cards/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ http GET 'http://localhost:8080/customer/v1/customers/f4A6My9u/identifications' 'Accept:*/*'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-scans/curl-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-fetch-scans/curl-request.adoc
deleted file mode 100644
index 5eb26d6..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-scans/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/KyKSVsOr/identifications/zmKtw0Aif69NYeN4GtUZcDIEf6Bcu63M/scans' -i -H 'Accept: */*'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-scans/http-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-fetch-scans/http-request.adoc
deleted file mode 100644
index 886a910..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-scans/http-request.adoc
+++ /dev/null
@@ -1,7 +0,0 @@
-[source,http,options="nowrap"]
-----
-GET /customer/v1/customers/KyKSVsOr/identifications/zmKtw0Aif69NYeN4GtUZcDIEf6Bcu63M/scans HTTP/1.1
-Accept: */*
-Host: localhost:8080
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-scans/http-response.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-fetch-scans/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-scans/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-scans/httpie-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-fetch-scans/httpie-request.adoc
deleted file mode 100644
index ec57194..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-fetch-scans/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ http GET 'http://localhost:8080/customer/v1/customers/KyKSVsOr/identifications/zmKtw0Aif69NYeN4GtUZcDIEf6Bcu63M/scans' 'Accept:*/*'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan-with-image/curl-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-find-scan-with-image/curl-request.adoc
deleted file mode 100644
index 26929e4..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan-with-image/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/Y8uayjNj/identifications/5VtZnu60KFcXwOqmrmU83RimT4nP3NA9/scans/2GIxiGHmtwbIz1pGQu0Ft5nArC4HCIFt/image' -i -H 'Accept: */*'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan-with-image/http-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-find-scan-with-image/http-request.adoc
deleted file mode 100644
index 83cc474..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan-with-image/http-request.adoc
+++ /dev/null
@@ -1,7 +0,0 @@
-[source,http,options="nowrap"]
-----
-GET /customer/v1/customers/Y8uayjNj/identifications/5VtZnu60KFcXwOqmrmU83RimT4nP3NA9/scans/2GIxiGHmtwbIz1pGQu0Ft5nArC4HCIFt/image HTTP/1.1
-Accept: */*
-Host: localhost:8080
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan-with-image/http-response.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-find-scan-with-image/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan-with-image/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan-with-image/httpie-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-find-scan-with-image/httpie-request.adoc
deleted file mode 100644
index 04e1577..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan-with-image/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ http GET 'http://localhost:8080/customer/v1/customers/Y8uayjNj/identifications/5VtZnu60KFcXwOqmrmU83RimT4nP3NA9/scans/2GIxiGHmtwbIz1pGQu0Ft5nArC4HCIFt/image' 'Accept:*/*'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan/curl-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-find-scan/curl-request.adoc
deleted file mode 100644
index 973f13b..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/QfPGPVsL/identifications/U1SVL17rBX96AMcyAtPuU4rC9H0dJjaK/scans/sameIdentifier' -i -H 'Accept: */*'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan/http-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-find-scan/http-request.adoc
deleted file mode 100644
index 831796b..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan/http-request.adoc
+++ /dev/null
@@ -1,7 +0,0 @@
-[source,http,options="nowrap"]
-----
-GET /customer/v1/customers/QfPGPVsL/identifications/U1SVL17rBX96AMcyAtPuU4rC9H0dJjaK/scans/sameIdentifier HTTP/1.1
-Accept: */*
-Host: localhost:8080
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan/http-response.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-find-scan/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan/httpie-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-find-scan/httpie-request.adoc
deleted file mode 100644
index c286aab..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-find-scan/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ http GET 'http://localhost:8080/customer/v1/customers/QfPGPVsL/identifications/U1SVL17rBX96AMcyAtPuU4rC9H0dJjaK/scans/sameIdentifier' 'Accept:*/*'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-update-identification-card/curl-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-update-identification-card/curl-request.adoc
deleted file mode 100644
index 4564f27..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-update-identification-card/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/customer/v1/customers/kSLcV44v/identifications/3P4PMz3zI9aD9pnWIPIbf7nbR0AhqwaO' -i -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-update-identification-card/http-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-update-identification-card/http-request.adoc
deleted file mode 100644
index b5de17e..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-update-identification-card/http-request.adoc
+++ /dev/null
@@ -1,8 +0,0 @@
-[source,http,options="nowrap"]
-----
-PUT /customer/v1/customers/kSLcV44v/identifications/3P4PMz3zI9aD9pnWIPIbf7nbR0AhqwaO HTTP/1.1
-Accept: application/json
-Content-Type: application/json
-Host: localhost:8080
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-update-identification-card/http-response.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-update-identification-card/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-update-identification-card/http-response.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-[source,http,options="nowrap"]
-----
-HTTP/1.1 404 Not Found
-
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-identification-cards/should-update-identification-card/httpie-request.adoc b/service/src/doc/generated-snippets/test-identification-cards/should-update-identification-card/httpie-request.adoc
deleted file mode 100644
index de1eac0..0000000
--- a/service/src/doc/generated-snippets/test-identification-cards/should-update-identification-card/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ http PUT 'http://localhost:8080/customer/v1/customers/kSLcV44v/identifications/3P4PMz3zI9aD9pnWIPIbf7nbR0AhqwaO' 'Accept:application/json' 'Content-Type:application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/html5/html5/api-docs.html b/service/src/doc/html5/html5/api-docs.html
deleted file mode 100644
index 04cd0c5..0000000
--- a/service/src/doc/html5/html5/api-docs.html
+++ /dev/null
@@ -1,1103 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-<meta charset="UTF-8">
-<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
-<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 1.5.3">
-<title>Apache Fineract CN Customer Management API Documentation</title>
-<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
-<style>
-/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
-/* Remove comment around @import statement below when using as a custom stylesheet */
-/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
-article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
-audio,canvas,video{display:inline-block}
-audio:not([controls]){display:none;height:0}
-[hidden],template{display:none}
-script{display:none!important}
-html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
-body{margin:0}
-a{background:transparent}
-a:focus{outline:thin dotted}
-a:active,a:hover{outline:0}
-h1{font-size:2em;margin:.67em 0}
-abbr[title]{border-bottom:1px dotted}
-b,strong{font-weight:bold}
-dfn{font-style:italic}
-hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
-mark{background:#ff0;color:#000}
-code,kbd,pre,samp{font-family:monospace;font-size:1em}
-pre{white-space:pre-wrap}
-q{quotes:"\201C" "\201D" "\2018" "\2019"}
-small{font-size:80%}
-sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
-sup{top:-.5em}
-sub{bottom:-.25em}
-img{border:0}
-svg:not(:root){overflow:hidden}
-figure{margin:0}
-fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
-legend{border:0;padding:0}
-button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
-button,input{line-height:normal}
-button,select{text-transform:none}
-button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
-button[disabled],html input[disabled]{cursor:default}
-input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
-input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}
-input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
-button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
-textarea{overflow:auto;vertical-align:top}
-table{border-collapse:collapse;border-spacing:0}
-*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
-html,body{font-size:100%}
-body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto}
-a:hover{cursor:pointer}
-img,object,embed{max-width:100%;height:auto}
-object,embed{height:100%}
-img{-ms-interpolation-mode:bicubic}
-.left{float:left!important}
-.right{float:right!important}
-.text-left{text-align:left!important}
-.text-right{text-align:right!important}
-.text-center{text-align:center!important}
-.text-justify{text-align:justify!important}
-.hide{display:none}
-body{-webkit-font-smoothing:antialiased}
-img,object,svg{display:inline-block;vertical-align:middle}
-textarea{height:auto;min-height:50px}
-select{width:100%}
-.center{margin-left:auto;margin-right:auto}
-.spread{width:100%}
-p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6}
-.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
-div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
-a{color:#2156a5;text-decoration:underline;line-height:inherit}
-a:hover,a:focus{color:#1d4b8f}
-a img{border:none}
-p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
-p aside{font-size:.875em;line-height:1.35;font-style:italic}
-h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
-h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
-h1{font-size:2.125em}
-h2{font-size:1.6875em}
-h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
-h4,h5{font-size:1.125em}
-h6{font-size:1em}
-hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
-em,i{font-style:italic;line-height:inherit}
-strong,b{font-weight:bold;line-height:inherit}
-small{font-size:60%;line-height:inherit}
-code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
-ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
-ul,ol,ul.no-bullet,ol.no-bullet{margin-left:1.5em}
-ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
-ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
-ul.square{list-style-type:square}
-ul.circle{list-style-type:circle}
-ul.disc{list-style-type:disc}
-ul.no-bullet{list-style:none}
-ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
-dl dt{margin-bottom:.3125em;font-weight:bold}
-dl dd{margin-bottom:1.25em}
-abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
-abbr{text-transform:none}
-blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
-blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
-blockquote cite:before{content:"\2014 \0020"}
-blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
-blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
-@media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
-h1{font-size:2.75em}
-h2{font-size:2.3125em}
-h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
-h4{font-size:1.4375em}}
-table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
-table thead,table tfoot{background:#f7f8f7;font-weight:bold}
-table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
-table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
-table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
-table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
-body{tab-size:4}
-h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
-h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
-.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table}
-.clearfix:after,.float-group:after{clear:both}
-*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
-pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
-.keyseq{color:rgba(51,51,51,.8)}
-kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
-.keyseq kbd:first-child{margin-left:0}
-.keyseq kbd:last-child{margin-right:0}
-.menuseq,.menu{color:rgba(0,0,0,.8)}
-b.button:before,b.button:after{position:relative;top:-1px;font-weight:400}
-b.button:before{content:"[";padding:0 3px 0 2px}
-b.button:after{content:"]";padding:0 2px 0 3px}
-p a>code:hover{color:rgba(0,0,0,.9)}
-#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
-#header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table}
-#header:after,#content:after,#footnotes:after,#footer:after{clear:both}
-#content{margin-top:1.25em}
-#content:before{content:none}
-#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
-#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8}
-#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px}
-#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
-#header .details span:first-child{margin-left:-.125em}
-#header .details span.email a{color:rgba(0,0,0,.85)}
-#header .details br{display:none}
-#header .details br+span:before{content:"\00a0\2013\00a0"}
-#header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
-#header .details br+span#revremark:before{content:"\00a0|\00a0"}
-#header #revnumber{text-transform:capitalize}
-#header #revnumber:after{content:"\00a0"}
-#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
-#toc{border-bottom:1px solid #efefed;padding-bottom:.5em}
-#toc>ul{margin-left:.125em}
-#toc ul.sectlevel0>li>a{font-style:italic}
-#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
-#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
-#toc li{line-height:1.3334;margin-top:.3334em}
-#toc a{text-decoration:none}
-#toc a:active{text-decoration:underline}
-#toctitle{color:#7a2518;font-size:1.2em}
-@media only screen and (min-width:768px){#toctitle{font-size:1.375em}
-body.toc2{padding-left:15em;padding-right:0}
-#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
-#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
-#toc.toc2>ul{font-size:.9em;margin-bottom:0}
-#toc.toc2 ul ul{margin-left:0;padding-left:1em}
-#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
-body.toc2.toc-right{padding-left:0;padding-right:15em}
-body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}}
-@media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
-#toc.toc2{width:20em}
-#toc.toc2 #toctitle{font-size:1.375em}
-#toc.toc2>ul{font-size:.95em}
-#toc.toc2 ul ul{padding-left:1.25em}
-body.toc2.toc-right{padding-left:0;padding-right:20em}}
-#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
-#content #toc>:first-child{margin-top:0}
-#content #toc>:last-child{margin-bottom:0}
-#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
-#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
-.sect1{padding-bottom:.625em}
-@media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}}
-.sect1+.sect1{border-top:1px solid #efefed}
-#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
-#content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
-#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
-#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
-#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
-.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
-.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
-table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0}
-.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)}
-table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit}
-.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
-.admonitionblock>table td.icon{text-align:center;width:80px}
-.admonitionblock>table td.icon img{max-width:none}
-.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
-.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)}
-.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
-.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
-.exampleblock>.content>:first-child{margin-top:0}
-.exampleblock>.content>:last-child{margin-bottom:0}
-.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
-.sidebarblock>:first-child{margin-top:0}
-.sidebarblock>:last-child{margin-bottom:0}
-.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
-.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
-.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
-.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
-.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em}
-.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal}
-@media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
-@media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
-.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
-.listingblock pre.highlightjs{padding:0}
-.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
-.listingblock pre.prettyprint{border-width:0}
-.listingblock>.content{position:relative}
-.listingblock code[data-lang]:before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
-.listingblock:hover code[data-lang]:before{display:block}
-.listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999}
-.listingblock.terminal pre .command:not([data-prompt]):before{content:"$"}
-table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
-table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
-table.pyhltable td.code{padding-left:.75em;padding-right:0}
-pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8}
-pre.pygments .lineno{display:inline-block;margin-right:.25em}
-table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
-.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
-.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
-.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
-.quoteblock blockquote{margin:0;padding:0;border:0}
-.quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
-.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
-.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right}
-.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)}
-.quoteblock .quoteblock blockquote{padding:0 0 0 .75em}
-.quoteblock .quoteblock blockquote:before{display:none}
-.verseblock{margin:0 1em 1.25em 1em}
-.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
-.verseblock pre strong{font-weight:400}
-.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
-.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
-.quoteblock .attribution br,.verseblock .attribution br{display:none}
-.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
-.quoteblock.abstract{margin:0 0 1.25em 0;display:block}
-.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0}
-.quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none}
-table.tableblock{max-width:100%;border-collapse:separate}
-table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0}
-table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
-table.grid-all th.tableblock,table.grid-all td.tableblock{border-width:0 1px 1px 0}
-table.grid-all tfoot>tr>th.tableblock,table.grid-all tfoot>tr>td.tableblock{border-width:1px 1px 0 0}
-table.grid-cols th.tableblock,table.grid-cols td.tableblock{border-width:0 1px 0 0}
-table.grid-all *>tr>.tableblock:last-child,table.grid-cols *>tr>.tableblock:last-child{border-right-width:0}
-table.grid-rows th.tableblock,table.grid-rows td.tableblock{border-width:0 0 1px 0}
-table.grid-all tbody>tr:last-child>th.tableblock,table.grid-all tbody>tr:last-child>td.tableblock,table.grid-all thead:last-child>tr>th.tableblock,table.grid-rows tbody>tr:last-child>th.tableblock,table.grid-rows tbody>tr:last-child>td.tableblock,table.grid-rows thead:last-child>tr>th.tableblock{border-bottom-width:0}
-table.grid-rows tfoot>tr>th.tableblock,table.grid-rows tfoot>tr>td.tableblock{border-width:1px 0 0 0}
-table.frame-all{border-width:1px}
-table.frame-sides{border-width:0 1px}
-table.frame-topbot{border-width:1px 0}
-th.halign-left,td.halign-left{text-align:left}
-th.halign-right,td.halign-right{text-align:right}
-th.halign-center,td.halign-center{text-align:center}
-th.valign-top,td.valign-top{vertical-align:top}
-th.valign-bottom,td.valign-bottom{vertical-align:bottom}
-th.valign-middle,td.valign-middle{vertical-align:middle}
-table thead th,table tfoot th{font-weight:bold}
-tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
-tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
-p.tableblock>code:only-child{background:none;padding:0}
-p.tableblock{font-size:1em}
-td>div.verse{white-space:pre}
-ol{margin-left:1.75em}
-ul li ol{margin-left:1.5em}
-dl dd{margin-left:1.125em}
-dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
-ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
-ul.unstyled,ol.unnumbered,ul.checklist,ul.none{list-style-type:none}
-ul.unstyled,ol.unnumbered,ul.checklist{margin-left:.625em}
-ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1em;font-size:.85em}
-ul.checklist li>p:first-child>input[type="checkbox"]:first-child{width:1em;position:relative;top:1px}
-ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden}
-ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block}
-ul.inline>li>*{display:block}
-.unstyled dl dt{font-weight:400;font-style:normal}
-ol.arabic{list-style-type:decimal}
-ol.decimal{list-style-type:decimal-leading-zero}
-ol.loweralpha{list-style-type:lower-alpha}
-ol.upperalpha{list-style-type:upper-alpha}
-ol.lowerroman{list-style-type:lower-roman}
-ol.upperroman{list-style-type:upper-roman}
-ol.lowergreek{list-style-type:lower-greek}
-.hdlist>table,.colist>table{border:0;background:none}
-.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
-td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
-td.hdlist1{font-weight:bold;padding-bottom:1.25em}
-.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
-.colist>table tr>td:first-of-type{padding:0 .75em;line-height:1}
-.colist>table tr>td:last-of-type{padding:.25em 0}
-.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
-.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0}
-.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em}
-.imageblock>.title{margin-bottom:0}
-.imageblock.thumb,.imageblock.th{border-width:6px}
-.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
-.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
-.image.left{margin-right:.625em}
-.image.right{margin-left:.625em}
-a.image{text-decoration:none;display:inline-block}
-a.image object{pointer-events:none}
-sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
-sup.footnote a,sup.footnoteref a{text-decoration:none}
-sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
-#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
-#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0}
-#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;text-indent:-1.05em;margin-bottom:.2em}
-#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none}
-#footnotes .footnote:last-of-type{margin-bottom:0}
-#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
-.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
-.gist .file-data>table td.line-data{width:99%}
-div.unbreakable{page-break-inside:avoid}
-.big{font-size:larger}
-.small{font-size:smaller}
-.underline{text-decoration:underline}
-.overline{text-decoration:overline}
-.line-through{text-decoration:line-through}
-.aqua{color:#00bfbf}
-.aqua-background{background-color:#00fafa}
-.black{color:#000}
-.black-background{background-color:#000}
-.blue{color:#0000bf}
-.blue-background{background-color:#0000fa}
-.fuchsia{color:#bf00bf}
-.fuchsia-background{background-color:#fa00fa}
-.gray{color:#606060}
-.gray-background{background-color:#7d7d7d}
-.green{color:#006000}
-.green-background{background-color:#007d00}
-.lime{color:#00bf00}
-.lime-background{background-color:#00fa00}
-.maroon{color:#600000}
-.maroon-background{background-color:#7d0000}
-.navy{color:#000060}
-.navy-background{background-color:#00007d}
-.olive{color:#606000}
-.olive-background{background-color:#7d7d00}
-.purple{color:#600060}
-.purple-background{background-color:#7d007d}
-.red{color:#bf0000}
-.red-background{background-color:#fa0000}
-.silver{color:#909090}
-.silver-background{background-color:#bcbcbc}
-.teal{color:#006060}
-.teal-background{background-color:#007d7d}
-.white{color:#bfbfbf}
-.white-background{background-color:#fafafa}
-.yellow{color:#bfbf00}
-.yellow-background{background-color:#fafa00}
-span.icon>.fa{cursor:default}
-.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
-.admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c}
-.admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
-.admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900}
-.admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400}
-.admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000}
-.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
-.conum[data-value] *{color:#fff!important}
-.conum[data-value]+b{display:none}
-.conum[data-value]:after{content:attr(data-value)}
-pre .conum[data-value]{position:relative;top:-.125em}
-b.conum *{color:inherit!important}
-.conum:not([data-value]):empty{display:none}
-dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
-h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
-p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
-p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
-p{margin-bottom:1.25rem}
-.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
-.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
-.print-only{display:none!important}
-@media print{@page{margin:1.25cm .75cm}
-*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
-a{color:inherit!important;text-decoration:underline!important}
-a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
-a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
-abbr[title]:after{content:" (" attr(title) ")"}
-pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
-thead{display:table-header-group}
-svg{max-width:100%}
-p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
-h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
-#toc,.sidebarblock,.exampleblock>.content{background:none!important}
-#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important}
-.sect1{padding-bottom:0!important}
-.sect1+.sect1{border:0!important}
-#header>h1:first-child{margin-top:1.25rem}
-body.book #header{text-align:center}
-body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0}
-body.book #header .details{border:0!important;display:block;padding:0!important}
-body.book #header .details span:first-child{margin-left:0!important}
-body.book #header .details br{display:block}
-body.book #header .details br+span:before{content:none!important}
-body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
-body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
-.listingblock code[data-lang]:before{display:block}
-#footer{background:none!important;padding:0 .9375em}
-#footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em}
-.hide-on-print{display:none!important}
-.print-only{display:block!important}
-.hide-for-print{display:none!important}
-.show-for-print{display:inherit!important}}
-</style>
-</head>
-<body class="book">
-<div id="header">
-</div>
-<div id="content">
-<div class="sect1">
-<h2 id="_apache_fineract_cn_customer_management_api_documentation">Apache Fineract CN Customer Management API Documentation</h2>
-<div class="sectionbody">
-
-</div>
-</div>
-<div class="sect1">
-<h2 id="_customers">Customers</h2>
-<div class="sectionbody">
-<div class="sect3">
-<h4 id="_create_a_customer">Create A Customer</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers' -i -X POST -H 'Content-Type: application/json' -d 'HGLg6dMM'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">POST /customer/v1/customers HTTP/1.1
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-HGLg6dMM</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ echo 'HGLg6dMM' | http POST 'http://localhost:8080/customer/v1/customers' 'Content-Type:application/json'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_get_a_customer">Get A Customer</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/njTjvNyL' -i -H 'Accept: application/json'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">GET /customer/v1/customers/njTjvNyL HTTP/1.1
-Accept: application/json
-Host: localhost:8080</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ http GET 'http://localhost:8080/customer/v1/customers/njTjvNyL' 'Accept:application/json'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_get_customers">Get Customers</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers' -i -H 'Accept: */*'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">GET /customer/v1/customers HTTP/1.1
-Accept: */*
-Host: localhost:8080</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ http GET 'http://localhost:8080/customer/v1/customers' 'Accept:*/*'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_update_a_customer">Update A Customer</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/6nD48BGj' -i -X PUT -H 'Content-Type: application/json' -d '6nD48BGj'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">PUT /customer/v1/customers/6nD48BGj HTTP/1.1
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-6nD48BGj</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ echo '6nD48BGj' | http PUT 'http://localhost:8080/customer/v1/customers/6nD48BGj' 'Content-Type:application/json'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_update_a_customer_s_address">Update A Customer&#8217;s Address</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/TCDV60bZ/address' -i -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' -d 'TCDV60bZ'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">PUT /customer/v1/customers/TCDV60bZ/address HTTP/1.1
-Accept: application/json
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-TCDV60bZ</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ echo 'TCDV60bZ' | http PUT 'http://localhost:8080/customer/v1/customers/TCDV60bZ/address' 'Accept:application/json' 'Content-Type:application/json'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_update_a_customer_s_contact_details">Update A Customer&#8217;s Contact Details</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/3WYfvF6X/contact' -i -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json' -d '3WYfvF6X'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">PUT /customer/v1/customers/3WYfvF6X/contact HTTP/1.1
-Accept: application/json
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-3WYfvF6X</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ echo '3WYfvF6X' | http PUT 'http://localhost:8080/customer/v1/customers/3WYfvF6X/contact' 'Accept:application/json' 'Content-Type:application/json'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_upload_a_customer_s_portrait">Upload A Customer&#8217;s Portrait</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/3qtoZGv8/portrait' -i -X POST -H 'Accept: multipart/form-data' -H 'Content-Type: image/png' -d 'Devs May Deliver'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">POST /customer/v1/customers/3qtoZGv8/portrait HTTP/1.1
-Accept: multipart/form-data
-Content-Type: image/png
-Host: localhost:8080
-Content-Length: 16
-
-Devs May Deliver</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ echo 'Devs May Deliver' | http POST 'http://localhost:8080/customer/v1/customers/3qtoZGv8/portrait' 'Accept:multipart/form-data' 'Content-Type:image/png'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_replace_a_customer_s_portrait">Replace A Customer&#8217;s Portrait</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/y6l1FhV8/portrait' -i -X POST -H 'Accept: multipart/form-data' -H 'Content-Type: image/png' -d 'Real Devs Deliver'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">POST /customer/v1/customers/y6l1FhV8/portrait HTTP/1.1
-Accept: multipart/form-data
-Content-Type: image/png
-Host: localhost:8080
-Content-Length: 17
-
-Real Devs Deliver</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ echo 'Real Devs Deliver' | http POST 'http://localhost:8080/customer/v1/customers/y6l1FhV8/portrait' 'Accept:multipart/form-data' 'Content-Type:image/png'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_delete_a_customer_s_portrait">Delete A Customer&#8217;s Portrait</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/XRGYXK2C/portrait' -i -X DELETE -H 'Content-Type: image/png'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">DELETE /customer/v1/customers/XRGYXK2C/portrait HTTP/1.1
-Content-Type: image/png
-Host: localhost:8080</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 202 Accepted</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ http DELETE 'http://localhost:8080/customer/v1/customers/XRGYXK2C/portrait' 'Content-Type:image/png'</code></pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_command_a_customer">Command A Customer</h2>
-<div class="sectionbody">
-<div class="sect3">
-<h4 id="_list_a_customer_s_commands">List A Customer&#8217;s Commands</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/Ye6mDs0v/commands' -i -H 'Accept: */*'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">GET /customer/v1/customers/Ye6mDs0v/commands HTTP/1.1
-Accept: */*
-Host: localhost:8080</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ http GET 'http://localhost:8080/customer/v1/customers/Ye6mDs0v/commands' 'Accept:*/*'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_activate_a_customer">Activate A Customer</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/u4tjlLnf/commands' -i -X PUT -H 'Content-Type: application/json' -d 'u4tjlLnf'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">PUT /customer/v1/customers/u4tjlLnf/commands HTTP/1.1
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-u4tjlLnf</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ echo 'u4tjlLnf' | http PUT 'http://localhost:8080/customer/v1/customers/u4tjlLnf/commands' 'Content-Type:application/json'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_lock_a_customer">Lock A Customer</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/JDD1oBjd/commands' -i -X PUT -H 'Content-Type: application/json' -d 'JDD1oBjd'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">PUT /customer/v1/customers/JDD1oBjd/commands HTTP/1.1
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-JDD1oBjd</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ echo 'JDD1oBjd' | http PUT 'http://localhost:8080/customer/v1/customers/JDD1oBjd/commands' 'Content-Type:application/json'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_unlock_a_customer">Unlock A Customer</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/Izcp1G3s/commands' -i -X PUT -H 'Content-Type: application/json' -d 'Izcp1G3s'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">PUT /customer/v1/customers/Izcp1G3s/commands HTTP/1.1
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-Izcp1G3s</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ echo 'Izcp1G3s' | http PUT 'http://localhost:8080/customer/v1/customers/Izcp1G3s/commands' 'Content-Type:application/json'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_close_a_customer">Close A Customer</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/Wc3zwE42/commands' -i -X PUT -H 'Content-Type: application/json' -d 'Wc3zwE42'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">PUT /customer/v1/customers/Wc3zwE42/commands HTTP/1.1
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-Wc3zwE42</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ echo 'Wc3zwE42' | http PUT 'http://localhost:8080/customer/v1/customers/Wc3zwE42/commands' 'Content-Type:application/json'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_reopen_a_customer">Reopen A Customer</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/R0xYQ8jJ/commands' -i -X PUT -H 'Content-Type: application/json' -d 'R0xYQ8jJ'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">PUT /customer/v1/customers/R0xYQ8jJ/commands HTTP/1.1
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 8
-
-R0xYQ8jJ</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ echo 'R0xYQ8jJ' | http PUT 'http://localhost:8080/customer/v1/customers/R0xYQ8jJ/commands' 'Content-Type:application/json'</code></pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_identification_cards">Identification Cards</h2>
-<div class="sectionbody">
-<div class="sect3">
-<h4 id="_create_a_customer_s_identification_card">Create A Customer&#8217;s Identification Card</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/g3ADQraM/identifications' -i -X POST -H 'Content-Type: application/json' -H 'Accept: application/json'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">POST /customer/v1/customers/g3ADQraM/identifications HTTP/1.1
-Content-Type: application/json
-Accept: application/json
-Host: localhost:8080</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ http POST 'http://localhost:8080/customer/v1/customers/g3ADQraM/identifications' 'Content-Type:application/json' 'Accept:application/json'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_list_a_customer_s_identification_cards">List A Customer&#8217;s Identification Cards</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/f4A6My9u/identifications' -i -H 'Accept: */*'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">GET /customer/v1/customers/f4A6My9u/identifications HTTP/1.1
-Accept: */*
-Host: localhost:8080</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ http GET 'http://localhost:8080/customer/v1/customers/f4A6My9u/identifications' 'Accept:*/*'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_update_a_customer_s_identification_card">Update A Customer&#8217;s Identification Card</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/kSLcV44v/identifications/3P4PMz3zI9aD9pnWIPIbf7nbR0AhqwaO' -i -X PUT -H 'Accept: application/json' -H 'Content-Type: application/json'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">PUT /customer/v1/customers/kSLcV44v/identifications/3P4PMz3zI9aD9pnWIPIbf7nbR0AhqwaO HTTP/1.1
-Accept: application/json
-Content-Type: application/json
-Host: localhost:8080</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ http PUT 'http://localhost:8080/customer/v1/customers/kSLcV44v/identifications/3P4PMz3zI9aD9pnWIPIbf7nbR0AhqwaO' 'Accept:application/json' 'Content-Type:application/json'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_list_a_customer_s_identification_card_scans">List A Customer&#8217;s Identification Card Scans</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/KyKSVsOr/identifications/zmKtw0Aif69NYeN4GtUZcDIEf6Bcu63M/scans' -i -H 'Accept: */*'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">GET /customer/v1/customers/KyKSVsOr/identifications/zmKtw0Aif69NYeN4GtUZcDIEf6Bcu63M/scans HTTP/1.1
-Accept: */*
-Host: localhost:8080</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ http GET 'http://localhost:8080/customer/v1/customers/KyKSVsOr/identifications/zmKtw0Aif69NYeN4GtUZcDIEf6Bcu63M/scans' 'Accept:*/*'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_list_a_customer_s_identification_card_scan">List A Customer&#8217;s Identification Card Scan</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/QfPGPVsL/identifications/U1SVL17rBX96AMcyAtPuU4rC9H0dJjaK/scans/sameIdentifier' -i -H 'Accept: */*'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">GET /customer/v1/customers/QfPGPVsL/identifications/U1SVL17rBX96AMcyAtPuU4rC9H0dJjaK/scans/sameIdentifier HTTP/1.1
-Accept: */*
-Host: localhost:8080</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ http GET 'http://localhost:8080/customer/v1/customers/QfPGPVsL/identifications/U1SVL17rBX96AMcyAtPuU4rC9H0dJjaK/scans/sameIdentifier' 'Accept:*/*'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_list_a_customer_s_identification_card_scan_with_image">List A Customer&#8217;s Identification Card Scan With Image</h4>
-<div class="listingblock">
-<div class="title">curl-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ curl 'http://localhost:8080/customer/v1/customers/Y8uayjNj/identifications/5VtZnu60KFcXwOqmrmU83RimT4nP3NA9/scans/2GIxiGHmtwbIz1pGQu0Ft5nArC4HCIFt/image' -i -H 'Accept: */*'</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-request</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">GET /customer/v1/customers/Y8uayjNj/identifications/5VtZnu60KFcXwOqmrmU83RimT4nP3NA9/scans/2GIxiGHmtwbIz1pGQu0Ft5nArC4HCIFt/image HTTP/1.1
-Accept: */*
-Host: localhost:8080</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">http-response</div>
-<div class="content">
-<pre class="highlightjs highlight nowrap"><code class="language-http" data-lang="http">HTTP/1.1 404 Not Found</code></pre>
-</div>
-</div>
-<div class="listingblock">
-<div class="title">httpie-request</div>
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash" data-lang="bash">$ http GET 'http://localhost:8080/customer/v1/customers/Y8uayjNj/identifications/5VtZnu60KFcXwOqmrmU83RimT4nP3NA9/scans/2GIxiGHmtwbIz1pGQu0Ft5nArC4HCIFt/image' 'Accept:*/*'</code></pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div id="footer">
-<div id="footer-text">
-Last updated 2018-04-23 14:20:51 +01:00
-</div>
-</div>
-<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.9.1/styles/github.min.css">
-<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.9.1/highlight.min.js"></script>
-<script>hljs.initHighlighting()</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/AbstractCustomerTest.java b/service/src/test/java/org/apache/fineract/cn/customer/AbstractCustomerTest.java
deleted file mode 100644
index d03ecaa..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/AbstractCustomerTest.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer;
-
-import org.apache.fineract.cn.anubis.test.v1.TenantApplicationSecurityEnvironmentTestRule;
-import org.apache.fineract.cn.api.context.AutoUserContext;
-import org.apache.fineract.cn.customer.api.v1.CustomerEventConstants;
-import org.apache.fineract.cn.customer.api.v1.client.CustomerDocumentsManager;
-import org.apache.fineract.cn.customer.api.v1.client.CustomerManager;
-import org.apache.fineract.cn.customer.rest.config.CustomerRestConfiguration;
-import org.apache.fineract.cn.test.fixture.TenantDataStoreContextTestRule;
-import org.apache.fineract.cn.test.listener.EnableEventRecording;
-import org.apache.fineract.cn.test.listener.EventRecorder;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.junit.Rule;
-import org.junit.runner.RunWith;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.cloud.netflix.feign.EnableFeignClients;
-import org.springframework.cloud.netflix.ribbon.RibbonClient;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.junit4.SpringRunner;
-
-/**
- * @author Myrle Krantz
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT,
-    classes = {AbstractCustomerTest.TestConfiguration.class})
-public class AbstractCustomerTest extends SuiteTestEnvironment {
-  static final String TEST_USER = "maatkare";
-  private static final String LOGGER_NAME = "test-logger";
-
-  @Configuration
-  @EnableEventRecording
-  @EnableFeignClients(basePackages = {"org.apache.fineract.cn.customer.api.v1.client"})
-  @RibbonClient(name = APP_NAME)
-  @ComponentScan(
-      basePackages = {
-          "org.apache.fineract.cn.customer.listener"
-      }
-  )
-  @Import({CustomerRestConfiguration.class})
-  public static class TestConfiguration {
-    public TestConfiguration() {
-      super();
-    }
-
-    @Bean(name = LOGGER_NAME)
-    public Logger logger() {
-      return LoggerFactory.getLogger(LOGGER_NAME);
-    }
-  }
-
-  @ClassRule
-  public final static TenantDataStoreContextTestRule tenantDataStoreContext = TenantDataStoreContextTestRule.forRandomTenantName(cassandraInitializer, mariaDBInitializer);
-
-  @Rule
-  public final TenantApplicationSecurityEnvironmentTestRule tenantApplicationSecurityEnvironment
-      = new TenantApplicationSecurityEnvironmentTestRule(testEnvironment, this::waitForInitialize);
-
-  @SuppressWarnings("SpringAutowiredFieldsWarningInspection")
-  @Autowired
-  CustomerManager customerManager;
-
-  @SuppressWarnings("SpringAutowiredFieldsWarningInspection")
-  @Autowired
-  CustomerDocumentsManager customerDocumentsManager;
-
-  @SuppressWarnings({"SpringAutowiredFieldsWarningInspection", "SpringJavaAutowiringInspection"})
-  @Autowired
-  EventRecorder eventRecorder;
-
-  @SuppressWarnings("SpringAutowiredFieldsWarningInspection")
-  @Autowired
-  @Qualifier(LOGGER_NAME)
-  Logger logger;
-
-  private AutoUserContext userContext;
-
-  public AbstractCustomerTest() {
-    super();
-  }
-
-  @Before
-  public void prepareTest() {
-    userContext = tenantApplicationSecurityEnvironment.createAutoUserContext(TEST_USER);
-  }
-
-  @After
-  public void cleanupTest() {
-    userContext.close();
-  }
-
-  public boolean waitForInitialize() {
-    try {
-      return this.eventRecorder.wait(CustomerEventConstants.INITIALIZE, CustomerEventConstants.INITIALIZE);
-    } catch (final InterruptedException e) {
-      throw new IllegalStateException(e);
-    }
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/SuiteTestEnvironment.java b/service/src/test/java/org/apache/fineract/cn/customer/SuiteTestEnvironment.java
deleted file mode 100644
index 27f4ee3..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/SuiteTestEnvironment.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer;
-
-import org.apache.fineract.cn.test.env.TestEnvironment;
-import org.apache.fineract.cn.test.fixture.cassandra.CassandraInitializer;
-import org.apache.fineract.cn.test.fixture.mariadb.MariaDBInitializer;
-import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
-import org.junit.rules.RunExternalResourceOnce;
-import org.junit.rules.TestRule;
-
-/**
- * @author Myrle Krantz
- */
-public class SuiteTestEnvironment {
-  static final String APP_NAME = "customer-v1";
-  final static TestEnvironment testEnvironment = new TestEnvironment(APP_NAME);
-  final static CassandraInitializer cassandraInitializer = new CassandraInitializer();
-  final static MariaDBInitializer mariaDBInitializer = new MariaDBInitializer();
-
-  @ClassRule
-  public static TestRule orderClassRules = RuleChain
-      .outerRule(new RunExternalResourceOnce(testEnvironment))
-      .around(new RunExternalResourceOnce(cassandraInitializer))
-      .around(new RunExternalResourceOnce(mariaDBInitializer));
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/TestCustomer.java b/service/src/test/java/org/apache/fineract/cn/customer/TestCustomer.java
deleted file mode 100644
index 87d0afa..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/TestCustomer.java
+++ /dev/null
@@ -1,576 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.fineract.cn.customer.api.v1.CustomerEventConstants;
-import org.apache.fineract.cn.customer.api.v1.client.*;
-import org.apache.fineract.cn.customer.api.v1.domain.*;
-import org.apache.fineract.cn.customer.util.AddressGenerator;
-import org.apache.fineract.cn.customer.util.CommandGenerator;
-import org.apache.fineract.cn.customer.util.ContactDetailGenerator;
-import org.apache.fineract.cn.customer.util.CustomerGenerator;
-import org.apache.fineract.cn.lang.DateConverter;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.mock.web.MockMultipartFile;
-import org.springframework.restdocs.JUnitRestDocumentation;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-import org.springframework.web.context.WebApplicationContext;
-
-import java.time.Clock;
-import java.time.LocalDate;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Stream;
-
-import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
-import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration;
-import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.delete;
-import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get;
-import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post;
-import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.put;
-import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessRequest;
-import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessResponse;
-import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-
-public class TestCustomer extends AbstractCustomerTest {
-
-  @Rule
-  public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("src/doc/generated-snippets/test-customer");
-
-  @Autowired
-  private WebApplicationContext context;
-
-  private MockMvc mockMvc;
-
-  final String path = "/customer/v1";
-
-  @Before
-  public void setUp(){
-
-    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
-            .apply(documentationConfiguration(this.restDocumentation))
-            .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint())))
-            .build();
-  }
-
-  @Test
-  public void shouldCreateCustomer() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    Assert.assertFalse(this.customerManager.isCustomerInGoodStanding(customer.getIdentifier()));
-
-    final Customer createdCustomer = this.customerManager.findCustomer(customer.getIdentifier());
-    Assert.assertNotNull(createdCustomer);
-
-    this.mockMvc.perform(post(path + "/customers").contentType(MediaType.APPLICATION_JSON_VALUE)
-            .content(createdCustomer.getIdentifier()))
-            .andExpect(status().is4xxClientError());
-  }
-
-  @Test
-  public void shouldNotCreateCustomerAlreadyExists() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    try {
-      this.customerManager.createCustomer(customer);
-      Assert.fail();
-    } catch (final CustomerAlreadyExistsException ex) {
-      // do nothing, expected
-    }
-  }
-
-  @Test
-  public void shouldNotCreateCustomerValidationFailed() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    customer.getAddress().setStreet(null);
-    customer.setContactDetails(null);
-
-    try {
-      this.customerManager.createCustomer(customer);
-      Assert.fail();
-    } catch (final CustomerValidationException ex) {
-      // do nothing, expected
-    }
-  }
-
-  @Test
-  public void shouldFindCustomer() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    final Customer foundCustomer = this.customerManager.findCustomer(customer.getIdentifier());
-    Assert.assertNotNull(foundCustomer);
-    Assert.assertNotNull(foundCustomer.getAddress());
-    Assert.assertNotNull(foundCustomer.getContactDetails());
-    Assert.assertEquals(2, foundCustomer.getContactDetails().size());
-    Assert.assertEquals(customer.getMember(), foundCustomer.getMember());
-
-    this.mockMvc.perform(get(path + "/customers/" + customer.getIdentifier()).accept(MediaType.APPLICATION_JSON))
-            .andExpect(status().is4xxClientError());
-  }
-
-  @Test
-  public void shouldNotFindCustomerNotFound() throws Exception {
-    try {
-      this.customerManager.findCustomer(RandomStringUtils.randomAlphanumeric(8));
-      Assert.fail();
-    } catch (final CustomerNotFoundException ex) {
-      // do nothing, expected
-    }
-  }
-
-  @Test
-  public void shouldFindNonExistentCustomerIsNotInGoodStanding() throws Exception {
-    Assert.assertFalse(this.customerManager.isCustomerInGoodStanding(testEnvironment.generateUniqueIdentifer("don")));
-  }
-
-  @Test
-  public void shouldFetchCustomers() throws Exception {
-    Stream.of(
-            CustomerGenerator.createRandomCustomer(),
-            CustomerGenerator.createRandomCustomer()
-    ).forEach(customer -> {
-      this.customerManager.createCustomer(customer);
-      try {
-        this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-      } catch (final InterruptedException ex) {
-        Assert.fail(ex.getMessage());
-      }
-    });
-
-    final CustomerPage customerPage = this.customerManager.fetchCustomers(null, null, 0, 20, null, null);
-    Assert.assertTrue(customerPage.getTotalElements() >= 2);
-
-    try
-    {
-      this.mockMvc.perform(get(path + "/customers").accept(MediaType.ALL))
-              .andExpect(status().is4xxClientError());
-    } catch (Exception exception){ exception.printStackTrace(); }
-
-  }
-
-
-  @Test
-  public void shouldFetchCustomersByTerm() throws Exception {
-    final Customer randomCustomer = CustomerGenerator.createRandomCustomer();
-    final String randomCustomerIdentifier = randomCustomer.getIdentifier();
-    this.customerManager.createCustomer(randomCustomer);
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, randomCustomerIdentifier);
-
-    final CustomerPage customerPage = this.customerManager.fetchCustomers(randomCustomerIdentifier, Boolean.FALSE, 0, 20, null, null);
-    Assert.assertTrue(customerPage.getTotalElements() == 1);
-  }
-
-  @Test
-  public void shouldUpdateCustomer() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    customer.setSurname(RandomStringUtils.randomAlphanumeric(256));
-
-    this.customerManager.updateCustomer(customer.getIdentifier(), customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.PUT_CUSTOMER, customer.getIdentifier());
-
-    final Customer updatedCustomer = this.customerManager.findCustomer(customer.getIdentifier());
-    Assert.assertEquals(customer.getSurname(), updatedCustomer.getSurname());
-
-    this.mockMvc.perform(put(path + "/customers/" + customer.getIdentifier())
-            .contentType(MediaType.APPLICATION_JSON)
-            .content(updatedCustomer.getIdentifier()))
-            .andExpect(status().is4xxClientError());
-
-  }
-
-  @Test
-  public void shouldNotUpdateCustomerNotFound() throws Exception {
-    try {
-      this.customerManager.updateCustomer(RandomStringUtils.randomAlphanumeric(8), CustomerGenerator.createRandomCustomer());
-      Assert.fail();
-    } catch (final CustomerNotFoundException ex) {
-      // do nothing, expected
-    }
-  }
-
-  @Test
-  public void shouldActivateClient() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.ACTIVATE, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.ACTIVATE_CUSTOMER, customer.getIdentifier());
-
-    Assert.assertTrue(this.customerManager.isCustomerInGoodStanding(customer.getIdentifier()));
-
-    final Customer activatedCustomer = this.customerManager.findCustomer(customer.getIdentifier());
-    Assert.assertEquals(Customer.State.ACTIVE.name(), activatedCustomer.getCurrentState());
-    Assert.assertNotNull(activatedCustomer.getApplicationDate());
-
-    this.mockMvc.perform(put(path + "/customers/" + activatedCustomer.getIdentifier() + "/commands").contentType(MediaType.APPLICATION_JSON_VALUE)
-            .content(activatedCustomer.getIdentifier()))
-            .andExpect(status().is4xxClientError());
-  }
-
-  @Test
-  public void shouldLockClient() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.ACTIVATE, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.ACTIVATE_CUSTOMER, customer.getIdentifier());
-
-    Assert.assertTrue(this.customerManager.isCustomerInGoodStanding(customer.getIdentifier()));
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.LOCK, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.LOCK_CUSTOMER, customer.getIdentifier());
-
-    Assert.assertFalse(this.customerManager.isCustomerInGoodStanding(customer.getIdentifier()));
-
-    final Customer lockedCustomer = this.customerManager.findCustomer(customer.getIdentifier());
-    Assert.assertEquals(Customer.State.LOCKED.name(), lockedCustomer.getCurrentState());
-
-    this.mockMvc.perform(put(path + "/customers/" + lockedCustomer.getIdentifier() + "/commands").contentType(MediaType.APPLICATION_JSON_VALUE)
-            .content(lockedCustomer.getIdentifier()))
-            .andExpect(status().is4xxClientError());
-  }
-
-  @Test
-  public void shouldUnlockClient() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    final String applicationDate = DateConverter.toIsoString(LocalDate.now(Clock.systemUTC())).substring(0, 10);
-    customer.setApplicationDate(applicationDate);
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.ACTIVATE, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.ACTIVATE_CUSTOMER, customer.getIdentifier());
-
-    Assert.assertTrue(this.customerManager.isCustomerInGoodStanding(customer.getIdentifier()));
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.LOCK, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.LOCK_CUSTOMER, customer.getIdentifier());
-
-    Assert.assertFalse(this.customerManager.isCustomerInGoodStanding(customer.getIdentifier()));
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.UNLOCK, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.UNLOCK_CUSTOMER, customer.getIdentifier());
-
-    Assert.assertTrue(this.customerManager.isCustomerInGoodStanding(customer.getIdentifier()));
-
-    final Customer unlockedCustomer = this.customerManager.findCustomer(customer.getIdentifier());
-    Assert.assertEquals(Customer.State.ACTIVE.name(), unlockedCustomer.getCurrentState());
-    Assert.assertEquals(applicationDate, unlockedCustomer.getApplicationDate());
-
-    this.mockMvc.perform(put(path + "/customers/" + unlockedCustomer.getIdentifier() + "/commands").contentType(MediaType.APPLICATION_JSON_VALUE)
-            .content(unlockedCustomer.getIdentifier()))
-            .andExpect(status().is4xxClientError());
-  }
-
-  @Test
-  public void shouldCloseClient() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.ACTIVATE, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.ACTIVATE_CUSTOMER, customer.getIdentifier());
-
-    Assert.assertTrue(this.customerManager.isCustomerInGoodStanding(customer.getIdentifier()));
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.CLOSE, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.CLOSE_CUSTOMER, customer.getIdentifier());
-
-    Assert.assertFalse(this.customerManager.isCustomerInGoodStanding(customer.getIdentifier()));
-
-    final Customer closedCustomer = this.customerManager.findCustomer(customer.getIdentifier());
-    Assert.assertEquals(Customer.State.CLOSED.name(), closedCustomer.getCurrentState());
-
-    this.mockMvc.perform(put(path + "/customers/" + closedCustomer.getIdentifier() + "/commands").contentType(MediaType.APPLICATION_JSON_VALUE)
-            .content(closedCustomer.getIdentifier()))
-            .andExpect(status().is4xxClientError());
-  }
-
-  @Test
-  public void shouldReopenClient() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.ACTIVATE, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.ACTIVATE_CUSTOMER, customer.getIdentifier());
-
-    Assert.assertTrue(this.customerManager.isCustomerInGoodStanding(customer.getIdentifier()));
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.CLOSE, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.CLOSE_CUSTOMER, customer.getIdentifier());
-
-    Assert.assertFalse(this.customerManager.isCustomerInGoodStanding(customer.getIdentifier()));
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.REOPEN, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.REOPEN_CUSTOMER, customer.getIdentifier());
-
-    Assert.assertTrue(this.customerManager.isCustomerInGoodStanding(customer.getIdentifier()));
-
-    final Customer reopenedCustomer = this.customerManager.findCustomer(customer.getIdentifier());
-    Assert.assertEquals(Customer.State.ACTIVE.name(), reopenedCustomer.getCurrentState());
-
-    this.mockMvc.perform(put(path + "/customers/" + reopenedCustomer.getIdentifier() + "/commands").contentType(MediaType.APPLICATION_JSON_VALUE)
-            .content(reopenedCustomer.getIdentifier()))
-            .andExpect(status().is4xxClientError());
-  }
-
-  @Test
-  public void shouldFetchCommands() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.ACTIVATE, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.ACTIVATE_CUSTOMER, customer.getIdentifier());
-
-    final List<Command> commands = this.customerManager.fetchCustomerCommands(customer.getIdentifier());
-    Assert.assertTrue(commands.size() == 1);
-
-    this.mockMvc.perform(get(path + "/customers/" + customer.getIdentifier() + "/commands").accept(MediaType.ALL_VALUE))
-            .andExpect(status().is4xxClientError());
-  }
-
-  @Test
-  public void shouldUpdateAddress() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    final Address address = AddressGenerator.createRandomAddress();
-    this.customerManager.putAddress(customer.getIdentifier(), address);
-
-    this.eventRecorder.wait(CustomerEventConstants.PUT_ADDRESS, customer.getIdentifier());
-
-    final Customer changedCustomer = this.customerManager.findCustomer(customer.getIdentifier());
-    final Address changedAddress = changedCustomer.getAddress();
-
-    Assert.assertEquals(address.getCity(), changedAddress.getCity());
-    Assert.assertEquals(address.getCountryCode(), changedAddress.getCountryCode());
-    Assert.assertEquals(address.getPostalCode(), changedAddress.getPostalCode());
-    Assert.assertEquals(address.getRegion(), changedAddress.getRegion());
-    Assert.assertEquals(address.getStreet(), changedAddress.getStreet());
-    Assert.assertEquals(address.getCountry(), changedAddress.getCountry());
-
-    this.mockMvc.perform(put(path + "/customers/" + customer.getIdentifier() + "/address").accept(MediaType.APPLICATION_JSON_VALUE)
-            .contentType(MediaType.APPLICATION_JSON_VALUE)
-            .content(changedCustomer.getIdentifier()))
-            .andExpect(status().is4xxClientError());
-  }
-
-  @Test
-  public void shouldUpdateContactDetails() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    final ContactDetail contactDetail = ContactDetailGenerator.createRandomContactDetail();
-    this.customerManager.putContactDetails(customer.getIdentifier(), Collections.singletonList(contactDetail));
-
-    this.eventRecorder.wait(CustomerEventConstants.PUT_CONTACT_DETAILS, customer.getIdentifier());
-
-    final Customer changedCustomer = this.customerManager.findCustomer(customer.getIdentifier());
-    final List<ContactDetail> changedContactDetails = changedCustomer.getContactDetails();
-    Assert.assertEquals(1, changedContactDetails.size());
-    final ContactDetail changedContactDetail = changedContactDetails.get(0);
-    Assert.assertEquals(contactDetail.getType(), changedContactDetail.getType());
-    Assert.assertEquals(contactDetail.getValue(), changedContactDetail.getValue());
-    Assert.assertEquals(contactDetail.getValidated(), changedContactDetail.getValidated());
-    Assert.assertEquals(contactDetail.getGroup(), changedContactDetail.getGroup());
-    Assert.assertEquals(contactDetail.getPreferenceLevel(), changedContactDetail.getPreferenceLevel());
-
-    this.mockMvc.perform(put(path + "/customers/" + customer.getIdentifier() + "/contact").accept(MediaType.APPLICATION_JSON_VALUE)
-            .contentType(MediaType.APPLICATION_JSON_VALUE)
-            .content(changedCustomer.getIdentifier()))
-            .andExpect(status().is4xxClientError());
-  }
-
-  @Test
-  public void shouldUploadPortrait() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    this.customerManager.findCustomer(customer.getIdentifier());
-
-    final MockMultipartFile file = new MockMultipartFile("portrait", "test.png", MediaType.IMAGE_PNG_VALUE, "Devs May Deliver".getBytes());
-
-    this.customerManager.postPortrait(customer.getIdentifier(), file);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_PORTRAIT, customer.getIdentifier());
-
-    byte[] portrait = this.customerManager.getPortrait(customer.getIdentifier());
-
-    Assert.assertArrayEquals(file.getBytes(), portrait);
-
-    this.mockMvc.perform(post(path + "/customers/" + customer.getIdentifier() + "/portrait").accept(MediaType.MULTIPART_FORM_DATA_VALUE)
-            .contentType(MediaType.IMAGE_PNG_VALUE)
-            .content(portrait))
-            .andExpect(status().isNotFound());
-  }
-
-  @Test
-  public void shouldReplacePortrait() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    final MockMultipartFile firstFile = new MockMultipartFile("portrait", "test.png", MediaType.IMAGE_PNG_VALUE, "Devs May Deliver".getBytes());
-
-    this.customerManager.postPortrait(customer.getIdentifier(), firstFile);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_PORTRAIT, customer.getIdentifier());
-
-    final MockMultipartFile secondFile = new MockMultipartFile("portrait", "test.png", MediaType.IMAGE_PNG_VALUE, "Real Devs Deliver".getBytes());
-
-    this.customerManager.postPortrait(customer.getIdentifier(), secondFile);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_PORTRAIT, customer.getIdentifier());
-
-    // For a unknown reason the wait gets the POST_PORTRAIT event although the the entity has not been written into the database
-    Thread.sleep(500);
-
-    final byte[] portrait = this.customerManager.getPortrait(customer.getIdentifier());
-
-    Assert.assertArrayEquals(secondFile.getBytes(), portrait);
-
-    this.mockMvc.perform(post(path + "/customers/" + customer.getIdentifier() + "/portrait").accept(MediaType.MULTIPART_FORM_DATA_VALUE)
-            .contentType(MediaType.IMAGE_PNG_VALUE)
-            .content(portrait))
-            .andExpect(status().isNotFound());
-  }
-
-  @Test(expected = DocumentValidationException.class)
-  public void shouldThrowIfPortraitExceedsMaxSize() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    final MockMultipartFile firstFile = new MockMultipartFile("portrait", "test.png", MediaType.IMAGE_PNG_VALUE, RandomStringUtils.randomAlphanumeric(750000).getBytes());
-
-    this.customerManager.postPortrait(customer.getIdentifier(), firstFile);
-  }
-
-  @Test(expected = PortraitNotFoundException.class)
-  public void shouldDeletePortrait() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-
-    this.customerManager.createCustomer(customer);
-
-    Assert.assertTrue(this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier()));
-
-    final MockMultipartFile firstFile = new MockMultipartFile("portrait", "test.png", MediaType.IMAGE_PNG_VALUE, "i don't care".getBytes());
-
-    this.customerManager.postPortrait(customer.getIdentifier(), firstFile);
-
-    Assert.assertTrue(this.eventRecorder.wait(CustomerEventConstants.POST_PORTRAIT, customer.getIdentifier()));
-
-    this.customerManager.deletePortrait(customer.getIdentifier());
-
-    Assert.assertTrue(this.eventRecorder.wait(CustomerEventConstants.DELETE_PORTRAIT, customer.getIdentifier()));
-
-    this.customerManager.getPortrait(customer.getIdentifier());
-
-    this.mockMvc.perform(delete(path + "/customers/" + customer.getIdentifier() + "/portrait")
-            .contentType(MediaType.IMAGE_PNG_VALUE))
-            .andExpect(status().isOk());
-  }
-
-  @Test
-  public void shouldReturnAvailableProcessSteps() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    final List<ProcessStep> pendingProcessSteps = this.customerManager.fetchProcessSteps(customer.getIdentifier());
-    Assert.assertEquals(2, pendingProcessSteps.size());
-    Assert.assertEquals(Command.Action.ACTIVATE.name(), pendingProcessSteps.get(0).getCommand().getAction());
-    Assert.assertEquals(Command.Action.CLOSE.name(), pendingProcessSteps.get(1).getCommand().getAction());
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.ACTIVATE, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.ACTIVATE_CUSTOMER, customer.getIdentifier());
-
-    final List<ProcessStep> activeProcessSteps = this.customerManager.fetchProcessSteps(customer.getIdentifier());
-    Assert.assertEquals(2, activeProcessSteps.size());
-    Assert.assertEquals(Command.Action.LOCK.name(), activeProcessSteps.get(0).getCommand().getAction());
-    Assert.assertEquals(Command.Action.CLOSE.name(), activeProcessSteps.get(1).getCommand().getAction());
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.LOCK, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.LOCK_CUSTOMER, customer.getIdentifier());
-
-    final List<ProcessStep> lockedProcessSteps = this.customerManager.fetchProcessSteps(customer.getIdentifier());
-    Assert.assertEquals(2, lockedProcessSteps.size());
-    Assert.assertEquals(Command.Action.UNLOCK.name(), lockedProcessSteps.get(0).getCommand().getAction());
-    Assert.assertEquals(Command.Action.CLOSE.name(), lockedProcessSteps.get(1).getCommand().getAction());
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.UNLOCK, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.UNLOCK_CUSTOMER, customer.getIdentifier());
-
-    final List<ProcessStep> unlockedProcessSteps = this.customerManager.fetchProcessSteps(customer.getIdentifier());
-    Assert.assertEquals(2, unlockedProcessSteps.size());
-    Assert.assertEquals(Command.Action.LOCK.name(), unlockedProcessSteps.get(0).getCommand().getAction());
-    Assert.assertEquals(Command.Action.CLOSE.name(), unlockedProcessSteps.get(1).getCommand().getAction());
-
-    this.customerManager.customerCommand(customer.getIdentifier(), CommandGenerator.create(Command.Action.CLOSE, "Test"));
-    this.eventRecorder.wait(CustomerEventConstants.CLOSE_CUSTOMER, customer.getIdentifier());
-
-    final List<ProcessStep> closedProcessSteps = this.customerManager.fetchProcessSteps(customer.getIdentifier());
-    Assert.assertEquals(1, closedProcessSteps.size());
-    Assert.assertEquals(Command.Action.REOPEN.name(), closedProcessSteps.get(0).getCommand().getAction());
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/TestDocuments.java b/service/src/test/java/org/apache/fineract/cn/customer/TestDocuments.java
deleted file mode 100644
index 46adfa6..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/TestDocuments.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.fineract.cn.api.util.NotFoundException;
-import org.apache.fineract.cn.customer.api.v1.CustomerEventConstants;
-import org.apache.fineract.cn.customer.api.v1.client.CompletedDocumentCannotBeChangedException;
-import org.apache.fineract.cn.customer.api.v1.client.DocumentValidationException;
-import org.apache.fineract.cn.customer.api.v1.domain.Customer;
-import org.apache.fineract.cn.customer.api.v1.domain.CustomerDocument;
-import org.apache.fineract.cn.customer.api.v1.events.DocumentEvent;
-import org.apache.fineract.cn.customer.api.v1.events.DocumentPageEvent;
-import org.apache.fineract.cn.customer.util.CustomerDocumentGenerator;
-import org.apache.fineract.cn.customer.util.CustomerGenerator;
-import org.apache.fineract.cn.test.domain.TimeStampChecker;
-import org.junit.Assert;
-import org.junit.Test;
-import org.springframework.http.MediaType;
-import org.springframework.mock.web.MockMultipartFile;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
-
-/**
- * @author Myrle Krantz
- */
-public class TestDocuments extends AbstractCustomerTest {
-
-  @Test
-  public void shouldUploadThenDeleteInCompleteDocument() throws InterruptedException, IOException {
-    logger.info("Prepare test");
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    customerManager.createCustomer(customer);
-    Assert.assertTrue(eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier()));
-
-    final CustomerDocument customerDocument = CustomerDocumentGenerator.createRandomCustomerDocument();
-    customerDocumentsManager.createDocument(customer.getIdentifier(), customerDocument.getIdentifier(), customerDocument);
-    Assert.assertTrue(eventRecorder.wait(CustomerEventConstants.POST_DOCUMENT,
-        new DocumentEvent(customer.getIdentifier(), customerDocument.getIdentifier())));
-
-    for (int i = 0; i < 5; i++) {
-      createDocumentPage(customer.getIdentifier(), customerDocument.getIdentifier(), i);
-    }
-
-    logger.info("Delete document");
-    customerDocumentsManager.deleteDocument(customer.getIdentifier(), customerDocument.getIdentifier());
-    Assert.assertTrue(eventRecorder.wait(CustomerEventConstants.DELETE_DOCUMENT,
-        new DocumentEvent(customer.getIdentifier(), customerDocument.getIdentifier())));
-
-    try {
-      customerDocumentsManager.getDocument(customer.getIdentifier(), customerDocument.getIdentifier());
-      Assert.fail("Deleted document should not be findable");
-    }
-    catch (final NotFoundException ignored) {}
-
-    final List<CustomerDocument> customersDocuments = customerDocumentsManager.getDocuments(customer.getIdentifier());
-    Assert.assertFalse(customersDocuments.contains(customerDocument));
-  }
-
-  @Test
-  public void shouldUploadEditThenCompleteDocument() throws InterruptedException, IOException {
-    logger.info("Prepare test");
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-    customerManager.createCustomer(customer);
-    Assert.assertTrue(eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier()));
-
-
-    logger.info("Check that document \"stub\" can be created");
-    final CustomerDocument customerDocument = CustomerDocumentGenerator.createRandomCustomerDocument();
-    customerDocumentsManager.createDocument(customer.getIdentifier(), customerDocument.getIdentifier(), customerDocument);
-    Assert.assertTrue(eventRecorder.wait(CustomerEventConstants.POST_DOCUMENT,
-        new DocumentEvent(customer.getIdentifier(), customerDocument.getIdentifier())));
-
-    final CustomerDocument createdCustomerDocument = customerDocumentsManager.getDocument(
-        customer.getIdentifier(), customerDocument.getIdentifier());
-    Assert.assertEquals(customerDocument, createdCustomerDocument);
-
-
-    logger.info("Check that pages can be created");
-    for (int i = 0; i < 10; i++) {
-      createDocumentPage(customer.getIdentifier(), customerDocument.getIdentifier(), i);
-    }
-
-    List<Integer> pageNumbers = customerDocumentsManager.getDocumentPageNumbers(
-        customer.getIdentifier(), customerDocument.getIdentifier());
-    final List<Integer> expectedPageNumbers = IntStream.range(0, 10).boxed().collect(Collectors.toList());
-    Assert.assertEquals(expectedPageNumbers, pageNumbers);
-
-
-    logger.info("Check that a page can be deleted");
-    customerDocumentsManager.deleteDocumentPage(customer.getIdentifier(), customerDocument.getIdentifier(), 9);
-    Assert.assertTrue(eventRecorder.wait(CustomerEventConstants.DELETE_DOCUMENT_PAGE,
-        new DocumentPageEvent(customer.getIdentifier(), customerDocument.getIdentifier(), 9)));
-
-    final List<Integer> changedPageNumbers = customerDocumentsManager.getDocumentPageNumbers(
-        customer.getIdentifier(), customerDocument.getIdentifier());
-    final List<Integer> changedExpectedPageNumbers = IntStream.range(0, 9).boxed().collect(Collectors.toList());
-    Assert.assertEquals(changedExpectedPageNumbers, changedPageNumbers);
-
-    try {
-      customerDocumentsManager.getDocumentPage(customer.getIdentifier(), customerDocument.getIdentifier(), 9);
-      Assert.fail("Getting the 9th document page should throw a NotFoundException after the 9th page was removed.");
-    }
-    catch (final NotFoundException ignored) {}
-
-
-    logger.info("Check that a document which is missing pages cannot be completed");
-    customerDocumentsManager.deleteDocumentPage(customer.getIdentifier(), customerDocument.getIdentifier(), 2);
-    Assert.assertTrue(eventRecorder.wait(CustomerEventConstants.DELETE_DOCUMENT_PAGE,
-        new DocumentPageEvent(customer.getIdentifier(), customerDocument.getIdentifier(), 2)));
-
-    try {
-      customerDocumentsManager.completeDocument(customer.getIdentifier(), customerDocument.getIdentifier(), true);
-      Assert.fail("It shouldn't be possible to complete a document with missing pages.");
-    }
-    catch (final DocumentValidationException ignored) {}
-
-    createDocumentPage(customer.getIdentifier(), customerDocument.getIdentifier(), 2);
-
-
-    logger.info("Check that a document's description can be changed.");
-    customerDocument.setDescription("new description");
-    customerDocumentsManager.changeDocument(customer.getIdentifier(), customerDocument.getIdentifier(), customerDocument);
-    Assert.assertTrue(eventRecorder.wait(CustomerEventConstants.PUT_DOCUMENT,
-        new DocumentEvent(customer.getIdentifier(), customerDocument.getIdentifier())));
-
-    {
-      final CustomerDocument changedCustomerDocument = customerDocumentsManager.getDocument(customer.getIdentifier(), customerDocument.getIdentifier());
-      Assert.assertEquals(customerDocument, changedCustomerDocument);
-    }
-
-
-    logger.info("Check that a valid document can be completed");
-    final TimeStampChecker timeStampChecker = TimeStampChecker.roughlyNow();
-    customerDocumentsManager.completeDocument(customer.getIdentifier(), customerDocument.getIdentifier(), true);
-    Assert.assertTrue(eventRecorder.wait(CustomerEventConstants.POST_DOCUMENT_COMPLETE,
-        new DocumentEvent(customer.getIdentifier(), customerDocument.getIdentifier())));
-
-    final CustomerDocument completedDocument = customerDocumentsManager.getDocument(
-        customer.getIdentifier(), customerDocument.getIdentifier());
-    Assert.assertEquals(true, completedDocument.isCompleted());
-    timeStampChecker.assertCorrect(completedDocument.getCreatedOn());
-
-
-    logger.info("Check that document can't be changed or removed after completion");
-    try {
-      createDocumentPage(customer.getIdentifier(), customerDocument.getIdentifier(), 9);
-      Assert.fail("Adding another page after the document is completed shouldn't be possible.");
-    }
-    catch (final CompletedDocumentCannotBeChangedException ignored) {}
-    try {
-      customerDocumentsManager.deleteDocumentPage(customer.getIdentifier(), customerDocument.getIdentifier(), 8);
-      Assert.fail("Deleting a page after the document is completed shouldn't be possible.");
-    }
-    catch (final CompletedDocumentCannotBeChangedException ignored) {}
-    try {
-      customerDocumentsManager.changeDocument(customer.getIdentifier(), customerDocument.getIdentifier(), customerDocument);
-      Assert.fail("Changing a document after it is completed shouldn't be possible.");
-    }
-    catch (final CompletedDocumentCannotBeChangedException ignored) {}
-    try {
-      customerDocumentsManager.deleteDocument(customer.getIdentifier(), customerDocument.getIdentifier());
-      Assert.fail("Changing a document after it is completed shouldn't be possible.");
-    }
-    catch (final CompletedDocumentCannotBeChangedException ignored) {}
-
-
-    logger.info("Check that document can't be uncompleted");
-    try {
-      customerDocumentsManager.completeDocument(customer.getIdentifier(), customerDocument.getIdentifier(), false);
-      Assert.fail("It shouldn't be possible to change a document from completed to uncompleted.");
-    }
-    catch (final CompletedDocumentCannotBeChangedException ignored) {}
-
-
-    logger.info("Check that document is in the list");
-    final List<CustomerDocument> documents = customerDocumentsManager.getDocuments(customer.getIdentifier());
-    final boolean documentIsInList = documents.stream().anyMatch(x ->
-        (x.getIdentifier().equals(customerDocument.getIdentifier())) &&
-            (x.isCompleted()));
-    Assert.assertTrue("The document we just completed should be in the list", documentIsInList);
-  }
-
-
-  private void createDocumentPage(
-      final String customerIdentifier,
-      final String documentIdentifier,
-      final int pageNumber) throws InterruptedException, IOException {
-    final MockMultipartFile page = new MockMultipartFile(
-        "page",
-        "test.png",
-        MediaType.IMAGE_PNG_VALUE,
-        RandomStringUtils.randomAlphanumeric(20).getBytes());
-
-    customerDocumentsManager.createDocumentPage(customerIdentifier, documentIdentifier, pageNumber, page);
-    eventRecorder.wait(CustomerEventConstants.POST_DOCUMENT_PAGE,
-        new DocumentPageEvent(customerIdentifier, documentIdentifier, pageNumber));
-
-    Thread.sleep(100);
-
-    final byte[] uploadedPage = customerDocumentsManager.getDocumentPage(customerIdentifier, documentIdentifier, pageNumber);
-    Assert.assertTrue("Page " + pageNumber, Arrays.equals(page.getBytes(), uploadedPage));
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/TestIdentificationCards.java b/service/src/test/java/org/apache/fineract/cn/customer/TestIdentificationCards.java
deleted file mode 100644
index e2f15ed..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/TestIdentificationCards.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.fineract.cn.customer.api.v1.CustomerEventConstants;
-import org.apache.fineract.cn.customer.api.v1.client.IdentificationCardNotFoundException;
-import org.apache.fineract.cn.customer.api.v1.client.ScanAlreadyExistsException;
-import org.apache.fineract.cn.customer.api.v1.client.ScanNotFoundException;
-import org.apache.fineract.cn.customer.api.v1.domain.Customer;
-import org.apache.fineract.cn.customer.api.v1.domain.IdentificationCard;
-import org.apache.fineract.cn.customer.api.v1.domain.IdentificationCardScan;
-import org.apache.fineract.cn.customer.api.v1.events.ScanEvent;
-import org.apache.fineract.cn.customer.util.CustomerGenerator;
-import org.apache.fineract.cn.customer.util.IdentificationCardGenerator;
-import org.apache.fineract.cn.customer.util.ScanGenerator;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.mock.web.MockMultipartFile;
-import org.springframework.restdocs.JUnitRestDocumentation;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-import org.springframework.web.context.WebApplicationContext;
-
-import java.util.List;
-import java.util.stream.Stream;
-
-import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
-import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration;
-import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.delete;
-import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get;
-import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post;
-import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.put;
-import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessRequest;
-import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessResponse;
-import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-
-public class TestIdentificationCards extends AbstractCustomerTest {
-
-  @Rule
-  public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("src/doc/generated-snippets/test-identification-cards");
-
-  @Autowired
-  private WebApplicationContext context;
-
-  private MockMvc mockMvc;
-
-  final String path = "/customer/v1";
-
-  @Before
-  public void setUp(){
-
-    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
-            .apply(documentationConfiguration(this.restDocumentation))
-            .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint())))
-            .build();
-  }
-
-  @Test
-  public void shouldFetchIdentificationCards() throws Exception {
-    final String customerIdentifier = this.createCustomer();
-
-    Stream.of(
-            IdentificationCardGenerator.createRandomIdentificationCard(),
-            IdentificationCardGenerator.createRandomIdentificationCard(),
-            IdentificationCardGenerator.createRandomIdentificationCard()
-    ).forEach(identificationCard -> {
-      this.customerManager.createIdentificationCard(customerIdentifier, identificationCard);
-      try {
-        this.eventRecorder.wait(CustomerEventConstants.POST_IDENTIFICATION_CARD, identificationCard.getNumber());
-      } catch (final InterruptedException ex) {
-        Assert.fail(ex.getMessage());
-      }
-    });
-
-    final List<IdentificationCard> result = this.customerManager.fetchIdentificationCards(customerIdentifier);
-
-    Assert.assertTrue(result.size() == 3);
-
-    try
-    {
-      this.mockMvc.perform(get(path + "/customers/" + customerIdentifier + "/identifications")
-              .accept(MediaType.ALL))
-              .andExpect(status().isNotFound());
-    } catch (Exception exception){ exception.printStackTrace(); }
-  }
-
-  @Test
-  public void shouldCreateIdentificationCard() throws Exception {
-    final String customerIdentifier = this.createCustomer();
-
-    final String identificationCardNumber = this.createIdentificationCard(customerIdentifier);
-
-    final IdentificationCard identificationCard = this.customerManager.findIdentificationCard(customerIdentifier, identificationCardNumber);
-
-    Assert.assertNotNull(identificationCard);
-
-    Assert.assertEquals(identificationCard.getCreatedBy(), TEST_USER);
-
-    this.mockMvc.perform(post(path + "/customers/" + customerIdentifier + "/identifications")
-            .contentType(MediaType.APPLICATION_JSON_VALUE)
-            .accept(MediaType.APPLICATION_JSON_VALUE))
-            .andExpect(status().is4xxClientError());
-  }
-
-  @Test
-  public void shouldUpdateIdentificationCard() throws Exception {
-    final String customerIdentifier = this.createCustomer();
-
-    final String identificationCardNumber = this.createIdentificationCard(customerIdentifier);
-
-    final IdentificationCard identificationCard = this.customerManager.findIdentificationCard(customerIdentifier, identificationCardNumber);
-
-    final IdentificationCard updatedIdentificationCard = IdentificationCardGenerator.createRandomIdentificationCard();
-
-    updatedIdentificationCard.setNumber(identificationCardNumber);
-
-    this.customerManager.updateIdentificationCard(customerIdentifier, updatedIdentificationCard.getNumber(), updatedIdentificationCard);
-
-    this.eventRecorder.wait(CustomerEventConstants.PUT_IDENTIFICATION_CARD, updatedIdentificationCard.getNumber());
-
-    final IdentificationCard changedIdentificationCard = this.customerManager.findIdentificationCard(customerIdentifier, identificationCard.getNumber());
-
-    Assert.assertEquals(updatedIdentificationCard.getType(), changedIdentificationCard.getType());
-    Assert.assertEquals(updatedIdentificationCard.getIssuer(), changedIdentificationCard.getIssuer());
-    Assert.assertEquals(updatedIdentificationCard.getNumber(), changedIdentificationCard.getNumber());
-    Assert.assertEquals(TEST_USER, changedIdentificationCard.getLastModifiedBy());
-
-    this.mockMvc.perform(put(path + "/customers/" + customerIdentifier
-            + "/identifications/" + identificationCardNumber ).accept(MediaType.APPLICATION_JSON_VALUE)
-            .contentType(MediaType.APPLICATION_JSON_VALUE))
-            .andExpect(status().is4xxClientError());
-  }
-
-  @Test(expected = IdentificationCardNotFoundException.class)
-  public void shouldDeleteIdentificationCard() throws Exception {
-    final String customerIdentifier = this.createCustomer();
-
-    final String identificationCardNumber = this.createIdentificationCard(customerIdentifier);
-
-    this.customerManager.deleteIdentificationCard(customerIdentifier, identificationCardNumber);
-
-    this.eventRecorder.wait(CustomerEventConstants.DELETE_IDENTIFICATION_CARD, identificationCardNumber);
-
-    this.customerManager.findIdentificationCard(customerIdentifier, identificationCardNumber);
-
-    this.mockMvc.perform(delete(path + "/customers/" + customerIdentifier
-            + "/identifications/" + identificationCardNumber)
-            .contentType(MediaType.IMAGE_PNG_VALUE)
-            .accept(MediaType.ALL_VALUE))
-            .andExpect(status().isAccepted());
-  }
-
-  @Test(expected = IdentificationCardNotFoundException.class)
-  public void shouldDeleteIdentificationCardWithScan() throws Exception {
-    final String customerIdentifier = this.createCustomer();
-
-    final String identificationCardNumber = this.createIdentificationCard(customerIdentifier);
-
-    IdentificationCardScan scanIdentifier = this.createScan(customerIdentifier, identificationCardNumber);
-
-    this.customerManager.deleteIdentificationCard(customerIdentifier, identificationCardNumber);
-
-    this.eventRecorder.wait(CustomerEventConstants.DELETE_IDENTIFICATION_CARD, identificationCardNumber);
-
-    this.customerManager.findIdentificationCard(customerIdentifier, identificationCardNumber);
-
-    this.mockMvc.perform(delete(path + "/customers/" + customerIdentifier + "/identifications/"
-            + identificationCardNumber + "/scans/" + scanIdentifier)
-            .accept(MediaType.ALL_VALUE)
-            .contentType(MediaType.IMAGE_PNG_VALUE))
-            .andExpect(status().isOk());
-  }
-
-  @Test
-  public void shouldFetchScans() throws Exception {
-    final String customerIdentifier = this.createCustomer();
-
-    final String identificationCardNumber = this.createIdentificationCard(customerIdentifier);
-
-    this.createScan(customerIdentifier, identificationCardNumber);
-    this.createScan(customerIdentifier, identificationCardNumber);
-    this.createScan(customerIdentifier, identificationCardNumber);
-
-    final List<IdentificationCardScan> result = this.customerManager.fetchIdentificationCardScans(customerIdentifier, identificationCardNumber);
-
-    Assert.assertTrue(result.size() == 3);
-
-    this.mockMvc.perform(get(path + "/customers/" + customerIdentifier
-            + "/identifications/" + identificationCardNumber + "/scans").accept(MediaType.ALL_VALUE))
-            .andExpect(status().isNotFound());
-  }
-
-  @Test
-  public void shouldFindScan() throws Exception {
-    final String customerIdentifier = this.createCustomer();
-
-    final String identificationCardNumberOne = this.createIdentificationCard(customerIdentifier);
-    final String identificationCardNumberTwo = this.createIdentificationCard(customerIdentifier);
-    this.createScan(customerIdentifier, identificationCardNumberOne, "sameIdentifier");
-    final IdentificationCardScan createdScan = this.createScan(customerIdentifier, identificationCardNumberTwo, "sameIdentifier");
-
-    final IdentificationCardScan scan = this.customerManager.findIdentificationCardScan(customerIdentifier, identificationCardNumberTwo, createdScan.getIdentifier());
-
-    Assert.assertNotNull(scan);
-
-    Assert.assertEquals(scan.getIdentifier(), createdScan.getIdentifier());
-    Assert.assertEquals(scan.getDescription(), createdScan.getDescription());
-
-    this.mockMvc.perform(get(path + "/customers/" + customerIdentifier
-            + "/identifications/" + identificationCardNumberOne + "/scans/" + scan.getIdentifier())
-            .accept(MediaType.ALL_VALUE))
-            .andExpect(status().isNotFound());
-  }
-
-  @Test
-  public void shouldFindScanWithImage() throws Exception {
-    final String customerIdentifier = this.createCustomer();
-
-    final String identificationCardNumber = this.createIdentificationCard(customerIdentifier);
-
-    final IdentificationCardScan scan = ScanGenerator.createRandomScan(null);
-
-    final byte[] imageInBytes = RandomStringUtils.randomAlphanumeric(20).getBytes();
-
-    final MockMultipartFile image = new MockMultipartFile("image", "test.png", MediaType.IMAGE_PNG_VALUE, imageInBytes);
-
-    this.customerManager.postIdentificationCardScan(customerIdentifier, identificationCardNumber, scan.getIdentifier(), scan.getDescription(), image);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_IDENTIFICATION_CARD_SCAN, new ScanEvent(identificationCardNumber, scan.getIdentifier()));
-
-    final byte[] persistedImageInBytes = this.customerManager.fetchIdentificationCardScanImage(customerIdentifier, identificationCardNumber, scan.getIdentifier());
-
-    Assert.assertArrayEquals(imageInBytes, persistedImageInBytes);
-
-    this.mockMvc.perform(get(path + "/customers/" + customerIdentifier + "/identifications/"
-            + identificationCardNumber + "/scans/" + scan.getIdentifier() + "/image")
-            .accept(MediaType.ALL_VALUE))
-            .andExpect(status().isNotFound());
-  }
-
-  @Test(expected = ScanAlreadyExistsException.class)
-  public void shouldThrowIfScanAlreadyExists() throws Exception {
-    final String customerIdentifier = this.createCustomer();
-
-    final String identificationCardNumber = this.createIdentificationCard(customerIdentifier);
-
-    final IdentificationCardScan scan = this.createScan(customerIdentifier, identificationCardNumber);
-
-    final MockMultipartFile image = new MockMultipartFile("image", "test.png", MediaType.IMAGE_PNG_VALUE, RandomStringUtils.randomAlphanumeric(20).getBytes());
-
-    this.customerManager.postIdentificationCardScan(customerIdentifier, identificationCardNumber, scan.getIdentifier(), scan.getDescription(), image);
-  }
-
-  @Test(expected = ScanNotFoundException.class)
-  public void shouldDeleteScan() throws Exception {
-    final String customerIdentifier = this.createCustomer();
-
-    final String identificationCardNumber = this.createIdentificationCard(customerIdentifier);
-
-    final IdentificationCardScan createdScan = this.createScan(customerIdentifier, identificationCardNumber);
-
-    this.customerManager.deleteScan(customerIdentifier, identificationCardNumber, createdScan.getIdentifier());
-
-    this.eventRecorder.wait(CustomerEventConstants.DELETE_IDENTIFICATION_CARD_SCAN, new ScanEvent(identificationCardNumber, createdScan.getIdentifier()));
-
-    this.customerManager.findIdentificationCardScan(customerIdentifier, identificationCardNumber, createdScan.getIdentifier());
-
-    this.mockMvc.perform(delete(path + "/customers/" + customerIdentifier + "/identifications/"
-            + identificationCardNumber + "/scans/" + createdScan.getIdentifier())
-            .accept(MediaType.ALL_VALUE)
-            .contentType(MediaType.IMAGE_PNG_VALUE))
-            .andExpect(status().isOk());
-  }
-
-  private String createCustomer() throws Exception {
-    final Customer customer = CustomerGenerator.createRandomCustomer();
-
-    this.customerManager.createCustomer(customer);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, customer.getIdentifier());
-
-    return customer.getIdentifier();
-  }
-
-  private String createIdentificationCard(final String customerIdentifier) throws Exception {
-    final IdentificationCard identificationCard = IdentificationCardGenerator.createRandomIdentificationCard();
-
-    this.customerManager.createIdentificationCard(customerIdentifier, identificationCard);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_IDENTIFICATION_CARD, identificationCard.getNumber());
-
-    return identificationCard.getNumber();
-  }
-
-  private IdentificationCardScan createScan(final String customerIdentifier, final String cardNumber) throws Exception {
-    final IdentificationCardScan scan = ScanGenerator.createRandomScan(null);
-
-    this.postIdentificationCardScan(customerIdentifier, cardNumber, scan);
-
-    return scan;
-  }
-
-  private IdentificationCardScan createScan(final String customerIdentifier, final String cardNumber, final String identifier) throws Exception {
-    final IdentificationCardScan scan = ScanGenerator.createRandomScan(identifier);
-
-    this.postIdentificationCardScan(customerIdentifier, cardNumber, scan);
-
-    return scan;
-  }
-
-  private void postIdentificationCardScan(final String customerIdentifier, final String cardNumber, final IdentificationCardScan scan) throws InterruptedException {
-    final MockMultipartFile image = new MockMultipartFile("image", "test.png", MediaType.IMAGE_PNG_VALUE, RandomStringUtils.randomAlphanumeric(20).getBytes());
-
-    this.customerManager.postIdentificationCardScan(customerIdentifier, cardNumber, scan.getIdentifier(), scan.getDescription(), image);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_IDENTIFICATION_CARD_SCAN, new ScanEvent(cardNumber, scan.getIdentifier()));
-  }
-
-}
\ No newline at end of file
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/TestInfrastructure.java b/service/src/test/java/org/apache/fineract/cn/customer/TestInfrastructure.java
deleted file mode 100644
index 3852c3f..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/TestInfrastructure.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import javax.sql.DataSource;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-
-public class TestInfrastructure extends AbstractCustomerTest {
-
-  @Autowired
-  private DataSource dataSource;
-
-  @Test
-  public void shouldInitializeCustomer() throws Exception {
-    try (final Connection connection = this.dataSource.getConnection()) {
-      final DatabaseMetaData databaseMetaData = connection.getMetaData();
-      Assert.assertTrue(databaseMetaData.getTables(null, null, "maat_customers", null).next());
-      Assert.assertTrue(databaseMetaData.getTables(null, null, "maat_addresses", null).next());
-      Assert.assertTrue(databaseMetaData.getTables(null, null, "maat_contact_details", null).next());
-      Assert.assertTrue(databaseMetaData.getTables(null, null, "maat_identification_cards", null).next());
-      Assert.assertTrue(databaseMetaData.getTables(null, null, "maat_commands", null).next());
-      Assert.assertTrue(databaseMetaData.getTables(null, null, "maat_task_definitions", null).next());
-      Assert.assertTrue(databaseMetaData.getTables(null, null, "maat_task_instances", null).next());
-    }
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/TestSuite.java b/service/src/test/java/org/apache/fineract/cn/customer/TestSuite.java
deleted file mode 100644
index 983b158..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/TestSuite.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-/**
- * @author Myrle Krantz
- */
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
-    TestCustomer.class,
-    TestIdentificationCards.class,
-    TestInfrastructure.class,
-    TestTaskDefinition.class,
-    TestTaskInstance.class,
-    TestDocuments.class
-})
-public class TestSuite extends SuiteTestEnvironment {
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/TestTaskDefinition.java b/service/src/test/java/org/apache/fineract/cn/customer/TestTaskDefinition.java
deleted file mode 100644
index 4475827..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/TestTaskDefinition.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.fineract.cn.customer.api.v1.CustomerEventConstants;
-import org.apache.fineract.cn.customer.api.v1.client.TaskAlreadyExistsException;
-import org.apache.fineract.cn.customer.api.v1.client.TaskNotFoundException;
-import org.apache.fineract.cn.customer.api.v1.domain.TaskDefinition;
-import org.apache.fineract.cn.customer.util.TaskGenerator;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class TestTaskDefinition extends AbstractCustomerTest {
-
-  @Test
-  public void shouldCreateTask() throws Exception {
-    final TaskDefinition taskDefinition = TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.FALSE, Boolean.FALSE);
-    this.customerManager.createTask(taskDefinition);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_TASK, taskDefinition.getIdentifier());
-
-    final TaskDefinition savedTaskDefinition = this.customerManager.findTask(taskDefinition.getIdentifier());
-    Assert.assertNotNull(savedTaskDefinition);
-    Assert.assertEquals(taskDefinition.getIdentifier(), savedTaskDefinition.getIdentifier());
-    Assert.assertEquals(taskDefinition.getType(), savedTaskDefinition.getType());
-    Assert.assertEquals(taskDefinition.getName(), savedTaskDefinition.getName());
-    Assert.assertEquals(taskDefinition.getDescription(), savedTaskDefinition.getDescription());
-    Assert.assertEquals(taskDefinition.getMandatory(), savedTaskDefinition.getMandatory());
-    Assert.assertEquals(taskDefinition.getPredefined(), savedTaskDefinition.getPredefined());
-    Assert.assertArrayEquals(taskDefinition.getCommands(), savedTaskDefinition.getCommands());
-  }
-
-  @Test
-  public void shouldNotCreateTaskAlreadyExists() throws Exception {
-    final TaskDefinition taskDefinition = TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.FALSE, Boolean.FALSE);
-    this.customerManager.createTask(taskDefinition);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_TASK, taskDefinition.getIdentifier());
-
-    try {
-      this.customerManager.createTask(taskDefinition);
-      Assert.fail();
-    } catch (final TaskAlreadyExistsException ex) {
-      // do nothing, expected
-    }
-  }
-
-  @Test
-  public void shouldFindTask() throws Exception {
-    final TaskDefinition taskDefinition = TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.FALSE, Boolean.FALSE);
-    this.customerManager.createTask(taskDefinition);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_TASK, taskDefinition.getIdentifier());
-
-    final TaskDefinition savedTaskDefinition = this.customerManager.findTask(taskDefinition.getIdentifier());
-    Assert.assertNotNull(savedTaskDefinition);
-  }
-
-  @Test
-  public void shouldNotFindTaskNotFound() throws Exception {
-    try {
-      this.customerManager.findTask(RandomStringUtils.randomAlphanumeric(8));
-      Assert.fail();
-    } catch (TaskNotFoundException ex) {
-      // do nothing, expected
-    }
-  }
-
-  @Test
-  public void shouldFetchAllTasks() throws Exception {
-    Arrays.asList(
-            TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.FALSE, Boolean.FALSE),
-            TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.FALSE, Boolean.FALSE),
-            TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.FALSE, Boolean.FALSE)
-    ).forEach(taskDefinition -> {
-      this.customerManager.createTask(taskDefinition);
-      try {
-        this.eventRecorder.wait(CustomerEventConstants.POST_TASK, taskDefinition.getIdentifier());
-      } catch (final InterruptedException ex) {
-        Assert.fail();
-      }
-    });
-
-    final List<TaskDefinition> taskDefinitions = this.customerManager.fetchAllTasks();
-    Assert.assertTrue(taskDefinitions.size() >= 3);
-  }
-
-  @Test
-  public void shouldUpdateTask() throws Exception {
-    final TaskDefinition taskDefinition = TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.FALSE, Boolean.FALSE);
-    this.customerManager.createTask(taskDefinition);
-
-    this.eventRecorder.wait(CustomerEventConstants.POST_TASK, taskDefinition.getIdentifier());
-
-    final TaskDefinition updatedTaskDefinition = TaskGenerator.createRandomTask(TaskDefinition.Type.CUSTOM, Boolean.TRUE, Boolean.TRUE);
-    updatedTaskDefinition.setIdentifier(taskDefinition.getIdentifier());
-    updatedTaskDefinition.setCommands(TaskDefinition.Command.REOPEN.name());
-
-    this.customerManager.updateTask(updatedTaskDefinition.getIdentifier(), updatedTaskDefinition);
-
-    this.eventRecorder.wait(CustomerEventConstants.PUT_TASK, taskDefinition.getIdentifier());
-
-    final TaskDefinition fetchedTaskDefinition = this.customerManager.findTask(updatedTaskDefinition.getIdentifier());
-    Assert.assertNotNull(fetchedTaskDefinition);
-    Assert.assertEquals(updatedTaskDefinition.getIdentifier(), fetchedTaskDefinition.getIdentifier());
-    Assert.assertEquals(updatedTaskDefinition.getType(), fetchedTaskDefinition.getType());
-    Assert.assertEquals(updatedTaskDefinition.getName(), fetchedTaskDefinition.getName());
-    Assert.assertEquals(updatedTaskDefinition.getDescription(), fetchedTaskDefinition.getDescription());
-    Assert.assertEquals(updatedTaskDefinition.getMandatory(), fetchedTaskDefinition.getMandatory());
-    Assert.assertEquals(updatedTaskDefinition.getPredefined(), fetchedTaskDefinition.getPredefined());
-    Assert.assertArrayEquals(updatedTaskDefinition.getCommands(), fetchedTaskDefinition.getCommands());
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/TestTaskInstance.java b/service/src/test/java/org/apache/fineract/cn/customer/TestTaskInstance.java
deleted file mode 100644
index 34e5087..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/TestTaskInstance.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer;
-
-import org.apache.fineract.cn.customer.api.v1.CustomerEventConstants;
-import org.apache.fineract.cn.customer.api.v1.client.TaskExecutionException;
-import org.apache.fineract.cn.customer.api.v1.domain.Command;
-import org.apache.fineract.cn.customer.api.v1.domain.Customer;
-import org.apache.fineract.cn.customer.api.v1.domain.IdentificationCard;
-import org.apache.fineract.cn.customer.api.v1.domain.TaskDefinition;
-import org.apache.fineract.cn.customer.util.CustomerGenerator;
-import org.apache.fineract.cn.customer.util.IdentificationCardGenerator;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.util.List;
-
-public class TestTaskInstance extends AbstractCustomerTest {
-
-  @Test
-  public void shouldProceedCustomerWorkFlowWithMandatoryIdTasks() throws Exception {
-    // create a predefined and mandatory task validating every state transition
-    // has a an ID card assigned
-    final TaskDefinition taskDefinition = new TaskDefinition();
-    taskDefinition.setIdentifier("nat-id");
-    taskDefinition.setType(TaskDefinition.Type.ID_CARD.name());
-    taskDefinition.setName("National ID is needed.");
-    taskDefinition.setCommands(
-        TaskDefinition.Command.ACTIVATE.name(),
-        TaskDefinition.Command.UNLOCK.name(),
-        TaskDefinition.Command.REOPEN.name()
-    );
-    taskDefinition.setPredefined(Boolean.TRUE);
-    taskDefinition.setMandatory(Boolean.TRUE);
-
-    this.customerManager.createTask(taskDefinition);
-    this.eventRecorder.wait(CustomerEventConstants.POST_TASK, taskDefinition.getIdentifier());
-
-    // create a random customer
-    final Customer randomCustomer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(randomCustomer);
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, randomCustomer.getIdentifier());
-
-    // try to activate the customer with missing ID card
-    final Command activateCustomer = new Command();
-    activateCustomer.setAction(Command.Action.ACTIVATE.name());
-    this.customerManager.customerCommand(randomCustomer.getIdentifier(), activateCustomer);
-    Assert.assertFalse(this.eventRecorder.wait(CustomerEventConstants.ACTIVATE_CUSTOMER, randomCustomer.getIdentifier()));
-
-    // assert client is still in pending
-    final Customer stillPendingCustomer = this.customerManager.findCustomer(randomCustomer.getIdentifier());
-    Assert.assertEquals(Customer.State.PENDING.name(), stillPendingCustomer.getCurrentState());
-
-    try {
-      // try to close the task
-      this.customerManager.taskForCustomerExecuted(randomCustomer.getIdentifier(), taskDefinition.getIdentifier());
-      Assert.fail();
-    } catch (final TaskExecutionException ex) {
-      // do nothing, expected
-    }
-
-    // set the ID card for the customer
-    final IdentificationCard randomIdentificationCard = IdentificationCardGenerator.createRandomIdentificationCard();
-    this.customerManager.createIdentificationCard(randomCustomer.getIdentifier(), randomIdentificationCard);
-    this.eventRecorder.wait(CustomerEventConstants.POST_IDENTIFICATION_CARD, randomIdentificationCard.getNumber());
-
-    // close the task
-    this.customerManager.taskForCustomerExecuted(randomCustomer.getIdentifier(), taskDefinition.getIdentifier());
-    this.eventRecorder.wait(CustomerEventConstants.PUT_CUSTOMER, randomCustomer.getIdentifier());
-
-    // try to activate customer
-    this.customerManager.customerCommand(randomCustomer.getIdentifier(), activateCustomer);
-    this.eventRecorder.wait(CustomerEventConstants.ACTIVATE_CUSTOMER, randomCustomer.getIdentifier());
-
-    // assert customer is now active
-    final Customer activatedCustomer = this.customerManager.findCustomer(randomCustomer.getIdentifier());
-    Assert.assertEquals(Customer.State.ACTIVE.name(), activatedCustomer.getCurrentState());
-
-    // set predefined to false so it does not have a side effect on other tests
-    taskDefinition.setPredefined(false);
-    this.customerManager.updateTask(taskDefinition.getIdentifier(), taskDefinition);
-    this.eventRecorder.wait(CustomerEventConstants.PUT_TASK, taskDefinition.getIdentifier());
-  }
-
-  @Test
-  public void shouldListNonMandatoryTasks() throws Exception{
-    final TaskDefinition taskDefinition = new TaskDefinition();
-    taskDefinition.setIdentifier("customid");
-    taskDefinition.setType(TaskDefinition.Type.CUSTOM.name());
-    taskDefinition.setName("Do the barrel roll");
-    taskDefinition.setCommands(
-            TaskDefinition.Command.ACTIVATE.name(),
-            TaskDefinition.Command.UNLOCK.name(),
-            TaskDefinition.Command.REOPEN.name()
-    );
-    taskDefinition.setPredefined(Boolean.TRUE);
-    taskDefinition.setMandatory(Boolean.FALSE);
-
-    this.customerManager.createTask(taskDefinition);
-    this.eventRecorder.wait(CustomerEventConstants.POST_TASK, taskDefinition.getIdentifier());
-
-    // create a random customer
-    final Customer randomCustomer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(randomCustomer);
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, randomCustomer.getIdentifier());
-
-    final List<TaskDefinition> tasksForCustomer = this.customerManager.findTasksForCustomer(randomCustomer.getIdentifier(), false);
-
-    Assert.assertEquals(1, tasksForCustomer.size());
-
-    taskDefinition.setPredefined(false);
-    this.customerManager.updateTask(taskDefinition.getIdentifier(), taskDefinition);
-    this.eventRecorder.wait(CustomerEventConstants.PUT_TASK, taskDefinition.getIdentifier());
-  }
-
-  @Test
-  public void shouldUnlockCustomerMultipleTasks() throws Exception{
-    final TaskDefinition customTask1 = new TaskDefinition();
-    customTask1.setIdentifier("custom-task-1");
-    customTask1.setType(TaskDefinition.Type.CUSTOM.name());
-    customTask1.setName("Do the barrel roll");
-    customTask1.setCommands(
-        TaskDefinition.Command.ACTIVATE.name(),
-        TaskDefinition.Command.UNLOCK.name()
-    );
-    customTask1.setPredefined(Boolean.TRUE);
-    customTask1.setMandatory(Boolean.TRUE);
-
-    this.customerManager.createTask(customTask1);
-    this.eventRecorder.wait(CustomerEventConstants.POST_TASK, customTask1.getIdentifier());
-
-    final TaskDefinition customTask2 = new TaskDefinition();
-    customTask2.setIdentifier("custom-task-2");
-    customTask2.setType(TaskDefinition.Type.CUSTOM.name());
-    customTask2.setName("Do the barrel roll");
-    customTask2.setCommands(
-        TaskDefinition.Command.ACTIVATE.name(),
-        TaskDefinition.Command.UNLOCK.name()
-    );
-    customTask2.setPredefined(Boolean.TRUE);
-    customTask2.setMandatory(Boolean.TRUE);
-
-    this.customerManager.createTask(customTask2);
-    this.eventRecorder.wait(CustomerEventConstants.POST_TASK, customTask2.getIdentifier());
-
-    // create a random customer
-    final Customer randomCustomer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(randomCustomer);
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, randomCustomer.getIdentifier());
-
-    // close the task
-    this.customerManager.taskForCustomerExecuted(randomCustomer.getIdentifier(), customTask1.getIdentifier());
-    this.eventRecorder.wait(CustomerEventConstants.PUT_CUSTOMER, randomCustomer.getIdentifier());
-
-    this.customerManager.taskForCustomerExecuted(randomCustomer.getIdentifier(), customTask2.getIdentifier());
-    this.eventRecorder.wait(CustomerEventConstants.PUT_CUSTOMER, randomCustomer.getIdentifier());
-
-    this.eventRecorder.clear();
-
-    final Command activateCustomer = new Command();
-    activateCustomer.setAction(Command.Action.ACTIVATE.name());
-    this.customerManager.customerCommand(randomCustomer.getIdentifier(), activateCustomer);
-    Assert.assertTrue(this.eventRecorder.wait(CustomerEventConstants.ACTIVATE_CUSTOMER, randomCustomer.getIdentifier()));
-
-    final Command lockCustomer = new Command();
-    lockCustomer.setAction(Command.Action.LOCK.name());
-    this.customerManager.customerCommand(randomCustomer.getIdentifier(), lockCustomer);
-    Assert.assertTrue(this.eventRecorder.wait(CustomerEventConstants.LOCK_CUSTOMER, randomCustomer.getIdentifier()));
-
-    // close the task
-    this.customerManager.taskForCustomerExecuted(randomCustomer.getIdentifier(), customTask1.getIdentifier());
-    this.eventRecorder.wait(CustomerEventConstants.PUT_CUSTOMER, randomCustomer.getIdentifier());
-
-    this.customerManager.taskForCustomerExecuted(randomCustomer.getIdentifier(), customTask2.getIdentifier());
-    this.eventRecorder.wait(CustomerEventConstants.PUT_CUSTOMER, randomCustomer.getIdentifier());
-
-    final Command unlockCustomer = new Command();
-    unlockCustomer.setAction(Command.Action.UNLOCK.name());
-    this.customerManager.customerCommand(randomCustomer.getIdentifier(), unlockCustomer);
-    Assert.assertTrue(this.eventRecorder.wait(CustomerEventConstants.UNLOCK_CUSTOMER, randomCustomer.getIdentifier()));
-
-    final Customer customer = this.customerManager.findCustomer(randomCustomer.getIdentifier());
-    Assert.assertEquals(Customer.State.ACTIVE.name(), customer.getCurrentState());
-
-    // set predefined to false so it does not have a side effect on other tests
-    customTask1.setPredefined(false);
-    this.customerManager.updateTask(customTask1.getIdentifier(), customTask1);
-    this.eventRecorder.wait(CustomerEventConstants.PUT_TASK, customTask1.getIdentifier());
-
-    customTask2.setPredefined(false);
-    this.customerManager.updateTask(customTask2.getIdentifier(), customTask2);
-    this.eventRecorder.wait(CustomerEventConstants.PUT_TASK, customTask2.getIdentifier());
-  }
-
-  @Test(expected = TaskExecutionException.class)
-  public void shouldNotProceedFourEyesWrongSigner() throws Exception {
-    final TaskDefinition fourEyesTask = new TaskDefinition();
-    fourEyesTask.setIdentifier("4-eyes-task-1");
-    fourEyesTask.setType(TaskDefinition.Type.FOUR_EYES.name());
-    fourEyesTask.setName("Do the barrel roll");
-    fourEyesTask.setCommands(
-        TaskDefinition.Command.ACTIVATE.name()
-    );
-    fourEyesTask.setPredefined(Boolean.TRUE);
-    fourEyesTask.setMandatory(Boolean.TRUE);
-
-    this.customerManager.createTask(fourEyesTask);
-    this.eventRecorder.wait(CustomerEventConstants.POST_TASK, fourEyesTask.getIdentifier());
-
-    final Customer randomCustomer = CustomerGenerator.createRandomCustomer();
-    this.customerManager.createCustomer(randomCustomer);
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, randomCustomer.getIdentifier());
-
-    this.customerManager.taskForCustomerExecuted(randomCustomer.getIdentifier(), fourEyesTask.getIdentifier());
-    this.eventRecorder.wait(CustomerEventConstants.PUT_CUSTOMER, randomCustomer.getIdentifier());
-
-    fourEyesTask.setPredefined(false);
-    this.customerManager.updateTask(fourEyesTask.getIdentifier(), fourEyesTask);
-    this.eventRecorder.wait(CustomerEventConstants.PUT_TASK, fourEyesTask.getIdentifier());
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/catalog/TestCatalog.java b/service/src/test/java/org/apache/fineract/cn/customer/catalog/TestCatalog.java
deleted file mode 100644
index 47f5add..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/catalog/TestCatalog.java
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer.catalog;
-
-import com.google.common.collect.Lists;
-import org.apache.fineract.cn.anubis.test.v1.TenantApplicationSecurityEnvironmentTestRule;
-import org.apache.fineract.cn.api.context.AutoUserContext;
-import org.apache.fineract.cn.customer.api.v1.CustomerEventConstants;
-import org.apache.fineract.cn.customer.api.v1.client.CustomerManager;
-import org.apache.fineract.cn.customer.api.v1.domain.Customer;
-import org.apache.fineract.cn.customer.catalog.api.v1.CatalogEventConstants;
-import org.apache.fineract.cn.customer.catalog.api.v1.client.CatalogAlreadyInUseException;
-import org.apache.fineract.cn.customer.catalog.api.v1.client.CatalogManager;
-import org.apache.fineract.cn.customer.catalog.api.v1.client.FieldAlreadyInUseException;
-import org.apache.fineract.cn.customer.catalog.api.v1.domain.Catalog;
-import org.apache.fineract.cn.customer.catalog.api.v1.domain.Field;
-import org.apache.fineract.cn.customer.catalog.api.v1.domain.Option;
-import org.apache.fineract.cn.customer.catalog.api.v1.domain.Value;
-import org.apache.fineract.cn.customer.catalog.util.CatalogGenerator;
-import org.apache.fineract.cn.customer.rest.config.CustomerRestConfiguration;
-import org.apache.fineract.cn.customer.util.CustomerGenerator;
-import org.apache.fineract.cn.test.env.TestEnvironment;
-import org.apache.fineract.cn.test.fixture.TenantDataStoreContextTestRule;
-import org.apache.fineract.cn.test.fixture.cassandra.CassandraInitializer;
-import org.apache.fineract.cn.test.fixture.mariadb.MariaDBInitializer;
-import org.apache.fineract.cn.test.listener.EnableEventRecording;
-import org.apache.fineract.cn.test.listener.EventRecorder;
-import org.junit.*;
-import org.junit.rules.RuleChain;
-import org.junit.rules.TestRule;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.cloud.netflix.feign.EnableFeignClients;
-import org.springframework.cloud.netflix.ribbon.RibbonClient;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
-public class TestCatalog {
-  private static final String APP_NAME = "customer-v1";
-  @Configuration
-  @EnableEventRecording
-  @EnableFeignClients(basePackages = {"org.apache.fineract.cn.customer.api.v1.client",
-      "org.apache.fineract.cn.customer.catalog.api.v1.client"})
-  @RibbonClient(name = APP_NAME)
-  @ComponentScan(
-      basePackages = {
-          "org.apache.fineract.cn.customer.listener",
-          "org.apache.fineract.cn.customer.catalog.listener"
-      }
-  )
-  @Import({CustomerRestConfiguration.class})
-  public static class TestConfiguration {
-    public TestConfiguration() {
-      super();
-    }
-  }
-  private final static TestEnvironment testEnvironment = new TestEnvironment(APP_NAME);
-  private final static CassandraInitializer cassandraInitializer = new CassandraInitializer();
-  private final static MariaDBInitializer mariaDBInitializer = new MariaDBInitializer();
-  private final static TenantDataStoreContextTestRule tenantDataStoreContext = TenantDataStoreContextTestRule.forRandomTenantName(cassandraInitializer, mariaDBInitializer);
-
-  @ClassRule
-  public static TestRule orderClassRules = RuleChain
-          .outerRule(testEnvironment)
-          .around(cassandraInitializer)
-          .around(mariaDBInitializer)
-          .around(tenantDataStoreContext);
-
-  @Rule
-  public final TenantApplicationSecurityEnvironmentTestRule tenantApplicationSecurityEnvironment
-          = new TenantApplicationSecurityEnvironmentTestRule(testEnvironment, this::waitForInitialize);
-
-
-  @Autowired
-  private CatalogManager catalogManager;
-  @Autowired
-  private CustomerManager customerManager;
-  @Autowired
-  private EventRecorder eventRecorder;
-
-  private AutoUserContext userContext;
-
-  public TestCatalog() {
-    super();
-  }
-
-  @Before
-  public void prepareTest() {
-    final String TEST_USER = "nunkare";
-    userContext = tenantApplicationSecurityEnvironment.createAutoUserContext(TEST_USER);
-  }
-
-  @After
-  public void cleanupTest() {
-    userContext.close();
-  }
-
-  public boolean waitForInitialize() {
-    try {
-      return this.eventRecorder.wait(CustomerEventConstants.INITIALIZE, CustomerEventConstants.INITIALIZE);
-    } catch (final InterruptedException e) {
-      throw new IllegalStateException(e);
-    }
-  }
-
-  @Test
-  public void shouldCreateCatalog() throws Exception {
-    final Catalog catalog = CatalogGenerator.createRandomCatalog();
-
-    this.catalogManager.createCatalog(catalog);
-    this.eventRecorder.wait(CatalogEventConstants.POST_CATALOG, catalog.getIdentifier());
-
-    final Catalog savedCatalog = this.catalogManager.findCatalog(catalog.getIdentifier());
-    Assert.assertEquals(catalog.getIdentifier(), savedCatalog.getIdentifier());
-    Assert.assertEquals(catalog.getName(), savedCatalog.getName());
-    Assert.assertEquals(catalog.getDescription(), savedCatalog.getDescription());
-    Assert.assertNotNull(savedCatalog.getCreatedBy());
-    Assert.assertNotNull(savedCatalog.getCreatedOn());
-    Assert.assertTrue(catalog.getFields().size() == savedCatalog.getFields().size());
-    savedCatalog.getFields().forEach(field -> {
-      if (field.getOptions() != null) {
-        Assert.assertTrue(field.getOptions().size() > 0);
-        Assert.assertEquals(Integer.valueOf(1), field.getOptions().get(0).getValue());
-      } else {
-        if (field.getDataType().equals(Field.DataType.SINGLE_SELECTION.name())) {
-          Assert.fail();
-        }
-      }
-    });
-  }
-
-  @Test
-  public void shouldFetchCatalogs() throws Exception {
-    final List<Catalog> catalogs = Arrays.asList(
-        CatalogGenerator.createRandomCatalog(),
-        CatalogGenerator.createRandomCatalog(),
-        CatalogGenerator.createRandomCatalog());
-
-    catalogs.forEach(catalog -> {
-      this.catalogManager.createCatalog(catalog);
-      try {
-        this.eventRecorder.wait(CatalogEventConstants.POST_CATALOG, catalog.getIdentifier());
-      } catch (InterruptedException e) {
-        Assert.fail();
-      }
-    });
-
-    final List<Catalog> fetchedCatalogs = this.catalogManager.fetchCatalogs();
-    Assert.assertTrue(fetchedCatalogs.size() >= 3);
-  }
-
-  @Test
-  public void shouldSaveCustomValues() throws Exception {
-    final Catalog randomCatalog = CatalogGenerator.createRandomCatalog();
-
-    this.catalogManager.createCatalog(randomCatalog);
-    this.eventRecorder.wait(CatalogEventConstants.POST_CATALOG, randomCatalog.getIdentifier());
-
-    final Customer randomCustomer = CustomerGenerator.createRandomCustomer();
-    randomCustomer.setCustomValues(randomCatalog.getFields()
-        .stream()
-        .map(field -> {
-          final Value value = new Value();
-          value.setCatalogIdentifier(randomCatalog.getIdentifier());
-          value.setFieldIdentifier(field.getIdentifier());
-          switch (Field.DataType.valueOf(field.getDataType())) {
-            case NUMBER:
-              value.setValue("123.45");
-              break;
-            case SINGLE_SELECTION:
-              value.setValue("1");
-          }
-          return value;
-        })
-        .collect(Collectors.toList())
-    );
-
-    this.customerManager.createCustomer(randomCustomer);
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, randomCustomer.getIdentifier());
-
-    final Customer savedCustomer = this.customerManager.findCustomer(randomCustomer.getIdentifier());
-    Assert.assertTrue(savedCustomer.getCustomValues().size() == 2);
-  }
-
-  @Test
-  public void shouldDeleteCatalog() throws Exception {
-    final Catalog catalog = CatalogGenerator.createRandomCatalog();
-
-    this.catalogManager.createCatalog(catalog);
-    this.eventRecorder.wait(CatalogEventConstants.POST_CATALOG, catalog.getIdentifier());
-
-    this.catalogManager.deleteCatalog(catalog.getIdentifier());
-    Assert.assertTrue(this.eventRecorder.wait(CatalogEventConstants.DELETE_CATALOG, catalog.getIdentifier()));
-  }
-
-  @Test(expected = CatalogAlreadyInUseException.class)
-  public void shouldNotDeleteCatalogUsed() throws Exception {
-    final Catalog catalog = CatalogGenerator.createRandomCatalog();
-
-    this.catalogManager.createCatalog(catalog);
-    this.eventRecorder.wait(CatalogEventConstants.POST_CATALOG, catalog.getIdentifier());
-
-    final Customer randomCustomer = CustomerGenerator.createRandomCustomer();
-    randomCustomer.setCustomValues(catalog.getFields()
-        .stream()
-        .map(field -> {
-          final Value value = new Value();
-          value.setCatalogIdentifier(catalog.getIdentifier());
-          value.setFieldIdentifier(field.getIdentifier());
-          switch (Field.DataType.valueOf(field.getDataType())) {
-            case NUMBER:
-              value.setValue("25.00");
-              break;
-            case SINGLE_SELECTION:
-              value.setValue("1");
-          }
-          return value;
-        })
-        .collect(Collectors.toList())
-    );
-
-    this.customerManager.createCustomer(randomCustomer);
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, randomCustomer.getIdentifier());
-
-    this.catalogManager.deleteCatalog(catalog.getIdentifier());
-  }
-
-  @Test
-  public void shouldDeleteField() throws Exception {
-    final Catalog catalog = CatalogGenerator.createRandomCatalog();
-
-    this.catalogManager.createCatalog(catalog);
-    this.eventRecorder.wait(CatalogEventConstants.POST_CATALOG, catalog.getIdentifier());
-
-    final Optional<Field> optionalField = catalog.getFields().stream().findFirst();
-    optionalField.ifPresent(field -> {
-      this.catalogManager.deleteField(catalog.getIdentifier(), field.getIdentifier());
-      try {
-        Assert.assertTrue(this.eventRecorder.wait(CatalogEventConstants.DELETE_FIELD, field.getIdentifier()));
-      } catch (final InterruptedException iex) {
-        Assert.fail(iex.getMessage());
-      }
-    });
-
-    final Catalog savedCatalog = this.catalogManager.findCatalog(catalog.getIdentifier());
-    Assert.assertEquals(1, savedCatalog.getFields().size());
-  }
-
-  @Test(expected = FieldAlreadyInUseException.class)
-  public void shouldNotDeleteField() throws Exception {
-    final Catalog catalog = CatalogGenerator.createRandomCatalog();
-
-    this.catalogManager.createCatalog(catalog);
-    this.eventRecorder.wait(CatalogEventConstants.POST_CATALOG, catalog.getIdentifier());
-
-    final Customer randomCustomer = CustomerGenerator.createRandomCustomer();
-    randomCustomer.setCustomValues(catalog.getFields()
-        .stream()
-        .map(field -> {
-          final Value value = new Value();
-          value.setCatalogIdentifier(catalog.getIdentifier());
-          value.setFieldIdentifier(field.getIdentifier());
-          switch (Field.DataType.valueOf(field.getDataType())) {
-            case NUMBER:
-              value.setValue("37.00");
-              break;
-            case SINGLE_SELECTION:
-              value.setValue("1");
-          }
-          return value;
-        })
-        .collect(Collectors.toList())
-    );
-
-    this.customerManager.createCustomer(randomCustomer);
-    this.eventRecorder.wait(CustomerEventConstants.POST_CUSTOMER, randomCustomer.getIdentifier());
-
-    final Optional<Field> optionalField = catalog.getFields().stream().findFirst();
-    optionalField.ifPresent(field -> this.catalogManager.deleteField(catalog.getIdentifier(), field.getIdentifier()));
-  }
-
-  @Test
-  public void shouldUpdateField() throws Exception {
-    final Catalog catalog = CatalogGenerator.createRandomCatalog();
-
-    this.catalogManager.createCatalog(catalog);
-    this.eventRecorder.wait(CatalogEventConstants.POST_CATALOG, catalog.getIdentifier());
-
-    final Optional<Field> optionalField = catalog.getFields()
-        .stream()
-        .filter(field -> field.getDataType().equals(Field.DataType.SINGLE_SELECTION.name()))
-        .findFirst();
-
-    optionalField.ifPresent(field -> {
-      final Option option = new Option();
-      option.setLabel("new-option");
-      option.setValue(2);
-      field.setOptions(Lists.newArrayList(option));
-      this.catalogManager.updateField(catalog.getIdentifier(), field.getIdentifier(), field);
-      try {
-        Assert.assertTrue(this.eventRecorder.wait(CatalogEventConstants.PUT_FIELD, field.getIdentifier()));
-      } catch (final InterruptedException iex) {
-        Assert.fail(iex.getMessage());
-      }
-    });
-
-    final Catalog savedCatalog = this.catalogManager.findCatalog(catalog.getIdentifier());
-    final Optional<Field> optionalFetchedField = savedCatalog.getFields()
-        .stream()
-        .filter(field -> field.getDataType().equals(Field.DataType.SINGLE_SELECTION.name()))
-        .findFirst();
-
-    if (optionalFetchedField.isPresent()) {
-      final Field field = optionalFetchedField.get();
-      Assert.assertEquals(1, field.getOptions().size());
-      final Optional<Option> optionalOption = field.getOptions().stream().findFirst();
-      Assert.assertTrue(optionalOption.isPresent());
-      final Option option = optionalOption.get();
-      Assert.assertEquals(Integer.valueOf(2), option.getValue());
-    } else {
-      Assert.fail();
-    }
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/catalog/listener/CatalogEventListener.java b/service/src/test/java/org/apache/fineract/cn/customer/catalog/listener/CatalogEventListener.java
deleted file mode 100644
index 613c4f0..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/catalog/listener/CatalogEventListener.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer.catalog.listener;
-
-import org.apache.fineract.cn.customer.api.v1.CustomerEventConstants;
-import org.apache.fineract.cn.customer.catalog.api.v1.CatalogEventConstants;
-import org.apache.fineract.cn.lang.config.TenantHeaderFilter;
-import org.apache.fineract.cn.test.listener.EventRecorder;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jms.annotation.JmsListener;
-import org.springframework.messaging.handler.annotation.Header;
-import org.springframework.stereotype.Component;
-
-@SuppressWarnings("unused")
-@Component
-public class CatalogEventListener {
-  private final EventRecorder eventRecorder;
-
-  @Autowired
-  public CatalogEventListener(final EventRecorder eventRecorder) {
-    super();
-    this.eventRecorder = eventRecorder;
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CatalogEventConstants.SELECTOR_POST_CATALOG
-  )
-  public void customerCreatedEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                   final String payload) {
-    this.eventRecorder.event(tenant, CatalogEventConstants.POST_CATALOG, payload, String.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CatalogEventConstants.SELECTOR_DELETE_CATALOG
-  )
-  public void onDeleteCatalog(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                              final String payload) {
-    this.eventRecorder.event(tenant, CatalogEventConstants.DELETE_CATALOG, payload, String.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CatalogEventConstants.SELECTOR_DELETE_FIELD
-  )
-  public void onDeleteField(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                            final String payload) {
-    this.eventRecorder.event(tenant, CatalogEventConstants.DELETE_FIELD, payload, String.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CatalogEventConstants.SELECTOR_PUT_FIELD
-  )
-  public void onChangeField(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                            final String payload) {
-    this.eventRecorder.event(tenant, CatalogEventConstants.PUT_FIELD, payload, String.class);
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/catalog/util/CatalogGenerator.java b/service/src/test/java/org/apache/fineract/cn/customer/catalog/util/CatalogGenerator.java
deleted file mode 100644
index 5c8ba2a..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/catalog/util/CatalogGenerator.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer.catalog.util;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.fineract.cn.customer.catalog.api.v1.domain.Catalog;
-import org.apache.fineract.cn.customer.catalog.api.v1.domain.Field;
-import org.apache.fineract.cn.customer.catalog.api.v1.domain.Option;
-
-import java.util.Arrays;
-
-public class CatalogGenerator {
-
-  private CatalogGenerator() {
-    super();
-  }
-
-  public static Catalog createRandomCatalog() {
-    final Catalog catalog = new Catalog();
-    catalog.setIdentifier(RandomStringUtils.randomAlphanumeric(32));
-    catalog.setName(RandomStringUtils.randomAlphanumeric(256));
-    catalog.setDescription(RandomStringUtils.randomAlphanumeric(4096));
-
-    final Field simpleField = new Field();
-    simpleField.setDataType(Field.DataType.NUMBER.name());
-    simpleField.setIdentifier(RandomStringUtils.randomAlphanumeric(32));
-    simpleField.setLabel(RandomStringUtils.randomAlphanumeric(256));
-    simpleField.setHint(RandomStringUtils.randomAlphanumeric(512));
-    simpleField.setDescription(RandomStringUtils.randomAlphanumeric(4096));
-    simpleField.setMandatory(Boolean.FALSE);
-    simpleField.setLength(10);
-    simpleField.setPrecision(2);
-    simpleField.setMinValue(0.00D);
-    simpleField.setMaxValue(99999999.99D);
-
-    final Field optionField = new Field();
-    optionField.setDataType(Field.DataType.SINGLE_SELECTION.name());
-    optionField.setIdentifier(RandomStringUtils.randomAlphanumeric(32));
-    optionField.setLabel(RandomStringUtils.randomAlphanumeric(256));
-    optionField.setHint(RandomStringUtils.randomAlphanumeric(512));
-    optionField.setDescription(RandomStringUtils.randomAlphanumeric(4096));
-    optionField.setMandatory(Boolean.FALSE);
-    final Option option = new Option();
-    option.setLabel(RandomStringUtils.randomAlphanumeric(256));
-    option.setValue(1);
-    optionField.setOptions(Arrays.asList(option));
-
-    catalog.setFields(Arrays.asList(simpleField, optionField));
-    return catalog;
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/listener/CustomerEventListener.java b/service/src/test/java/org/apache/fineract/cn/customer/listener/CustomerEventListener.java
deleted file mode 100644
index 03012ba..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/listener/CustomerEventListener.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer.listener;
-
-import org.apache.fineract.cn.customer.api.v1.CustomerEventConstants;
-import org.apache.fineract.cn.customer.api.v1.events.ScanEvent;
-import org.apache.fineract.cn.lang.config.TenantHeaderFilter;
-import org.apache.fineract.cn.test.listener.EventRecorder;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jms.annotation.JmsListener;
-import org.springframework.messaging.handler.annotation.Header;
-import org.springframework.stereotype.Component;
-
-@Component
-public class CustomerEventListener {
-
-  private final EventRecorder eventRecorder;
-
-  @Autowired
-  public CustomerEventListener(final EventRecorder eventRecorder) {
-    super();
-    this.eventRecorder = eventRecorder;
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_POST_CUSTOMER
-  )
-  public void customerCreatedEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                   final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.POST_CUSTOMER, payload, String.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_PUT_CUSTOMER
-  )
-  public void customerUpdatedEvents(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                    final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.PUT_CUSTOMER, payload, String.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_ACTIVATE_CUSTOMER
-  )
-  public void customerActivatedEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                     final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.ACTIVATE_CUSTOMER, payload, String.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_LOCK_CUSTOMER
-  )
-  public void customerLockedEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                  final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.LOCK_CUSTOMER, payload, String.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_UNLOCK_CUSTOMER
-  )
-  public void customerUnlockedEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                    final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.UNLOCK_CUSTOMER, payload, String.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_CLOSE_CUSTOMER
-  )
-  public void customerClosedEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                  final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.CLOSE_CUSTOMER, payload, String.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_REOPEN_CUSTOMER
-  )
-  public void customerReopenedEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                    final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.REOPEN_CUSTOMER, payload, String.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_PUT_ADDRESS
-  )
-  public void addressChangedEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                  final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.PUT_ADDRESS, payload, String.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_PUT_CONTACT_DETAILS
-  )
-  public void contactDetailsChangedEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                  final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.PUT_CONTACT_DETAILS, payload, String.class);
-  }
-
-  @JmsListener(
-          destination = CustomerEventConstants.DESTINATION,
-          selector = CustomerEventConstants.SELECTOR_POST_IDENTIFICATION_CARD
-  )
-  public void identificationCardCreateEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                             final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.POST_IDENTIFICATION_CARD, payload, String.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_PUT_IDENTIFICATION_CARD
-  )
-  public void identificationCardChangedEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                             final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.PUT_IDENTIFICATION_CARD, payload, String.class);
-  }
-
-  @JmsListener(
-          destination = CustomerEventConstants.DESTINATION,
-          selector = CustomerEventConstants.SELECTOR_DELETE_IDENTIFICATION_CARD
-  )
-  public void identificationCardDeletedEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                             final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.DELETE_IDENTIFICATION_CARD, payload, String.class);
-  }
-
-  @JmsListener(
-          destination = CustomerEventConstants.DESTINATION,
-          selector = CustomerEventConstants.SELECTOR_POST_IDENTIFICATION_CARD_SCAN
-  )
-  public void identificationCardScanCreateEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                            final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.POST_IDENTIFICATION_CARD_SCAN, payload, ScanEvent.class);
-  }
-
-  @JmsListener(
-          destination = CustomerEventConstants.DESTINATION,
-          selector = CustomerEventConstants.SELECTOR_DELETE_IDENTIFICATION_CARD_SCAN
-  )
-  public void identificationCardScanDeleteEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                                final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.DELETE_IDENTIFICATION_CARD_SCAN, payload, ScanEvent.class);
-  }
-
-  @JmsListener(
-          destination = CustomerEventConstants.DESTINATION,
-          selector = CustomerEventConstants.SELECTOR_PUT_PORTRAIT
-  )
-  public void portraitPutEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                             final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.POST_PORTRAIT, payload, String.class);
-  }
-
-  @JmsListener(
-          destination = CustomerEventConstants.DESTINATION,
-          selector = CustomerEventConstants.SELECTOR_DELETE_PORTRAIT
-  )
-  public void portraitDeleteEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                               final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.DELETE_PORTRAIT, payload, String.class);
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/listener/DocumentEventListener.java b/service/src/test/java/org/apache/fineract/cn/customer/listener/DocumentEventListener.java
deleted file mode 100644
index 3cfac7c..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/listener/DocumentEventListener.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer.listener;
-
-import org.apache.fineract.cn.customer.api.v1.CustomerEventConstants;
-import org.apache.fineract.cn.customer.api.v1.events.DocumentEvent;
-import org.apache.fineract.cn.customer.api.v1.events.DocumentPageEvent;
-import org.apache.fineract.cn.lang.config.TenantHeaderFilter;
-import org.apache.fineract.cn.test.listener.EventRecorder;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jms.annotation.JmsListener;
-import org.springframework.messaging.handler.annotation.Header;
-import org.springframework.stereotype.Component;
-
-/**
- * @author Myrle Krantz
- */
-@Component
-public class DocumentEventListener {
-
-  private final EventRecorder eventRecorder;
-
-  @Autowired
-  public DocumentEventListener(final EventRecorder eventRecorder) {
-    super();
-    this.eventRecorder = eventRecorder;
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_POST_DOCUMENT
-  )
-  public void postDocumentEvent(
-      @Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-      final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.POST_DOCUMENT, payload, DocumentEvent.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_PUT_DOCUMENT
-  )
-  public void putDocumentEvent(
-      @Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-      final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.PUT_DOCUMENT, payload, DocumentEvent.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_DELETE_DOCUMENT
-  )
-  public void deleteDocumentEvent(
-      @Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-      final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.DELETE_DOCUMENT, payload, DocumentEvent.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_POST_DOCUMENT_PAGE
-  )
-  public void postDocumentPageEvent(
-      @Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-      final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.POST_DOCUMENT_PAGE, payload, DocumentPageEvent.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_DELETE_DOCUMENT_PAGE
-  )
-  public void deleteDocumentPageEvent(
-      @Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-      final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.DELETE_DOCUMENT_PAGE, payload, DocumentPageEvent.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_POST_DOCUMENT_COMPLETE
-  )
-  public void postDocumentComplete(
-      @Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-      final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.POST_DOCUMENT_COMPLETE, payload, DocumentEvent.class);
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/listener/MigrationEventListener.java b/service/src/test/java/org/apache/fineract/cn/customer/listener/MigrationEventListener.java
deleted file mode 100644
index d8cad4e..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/listener/MigrationEventListener.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer.listener;
-
-import org.apache.fineract.cn.customer.api.v1.CustomerEventConstants;
-import org.apache.fineract.cn.lang.config.TenantHeaderFilter;
-import org.apache.fineract.cn.test.listener.EventRecorder;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jms.annotation.JmsListener;
-import org.springframework.messaging.handler.annotation.Header;
-import org.springframework.stereotype.Component;
-
-@SuppressWarnings({"WeakerAccess", "unused"})
-@Component
-public class MigrationEventListener {
-
-  private final EventRecorder eventRecorder;
-
-  @Autowired
-  public MigrationEventListener(final EventRecorder eventRecorder) {
-    super();
-    this.eventRecorder = eventRecorder;
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_INITIALIZE
-  )
-  public void initialized(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                          final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.INITIALIZE, payload, String.class);
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/listener/TaskEventListener.java b/service/src/test/java/org/apache/fineract/cn/customer/listener/TaskEventListener.java
deleted file mode 100644
index d319e1e..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/listener/TaskEventListener.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer.listener;
-
-import org.apache.fineract.cn.customer.api.v1.CustomerEventConstants;
-import org.apache.fineract.cn.lang.config.TenantHeaderFilter;
-import org.apache.fineract.cn.test.listener.EventRecorder;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jms.annotation.JmsListener;
-import org.springframework.messaging.handler.annotation.Header;
-import org.springframework.stereotype.Component;
-
-@SuppressWarnings("unused")
-@Component
-public class TaskEventListener {
-
-  private final EventRecorder eventRecorder;
-
-  @Autowired
-  public TaskEventListener(final EventRecorder eventRecorder) {
-    super();
-    this.eventRecorder = eventRecorder;
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_POST_TASK
-  )
-  public void taskCreatedEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                               final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.POST_TASK, payload, String.class);
-  }
-
-  @JmsListener(
-      destination = CustomerEventConstants.DESTINATION,
-      selector = CustomerEventConstants.SELECTOR_PUT_TASK
-  )
-  public void taskUpdateEvent(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                               final String payload) {
-    this.eventRecorder.event(tenant, CustomerEventConstants.PUT_TASK, payload, String.class);
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/util/AddressGenerator.java b/service/src/test/java/org/apache/fineract/cn/customer/util/AddressGenerator.java
deleted file mode 100644
index 1b4e4b4..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/util/AddressGenerator.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer.util;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.fineract.cn.customer.api.v1.domain.Address;
-
-public class AddressGenerator {
-
-  private AddressGenerator() {
-    super();
-  }
-
-  public static Address createRandomAddress() {
-    final Address address = new Address();
-    address.setStreet(RandomStringUtils.randomAlphanumeric(256));
-    address.setCity(RandomStringUtils.randomAlphanumeric(256));
-    address.setPostalCode(RandomStringUtils.randomAlphanumeric(32));
-    address.setRegion(RandomStringUtils.randomAlphanumeric(256));
-    address.setPostalCode(RandomStringUtils.randomAlphanumeric(32));
-    address.setCountryCode(RandomStringUtils.randomAlphanumeric(2));
-    address.setCountry(RandomStringUtils.randomAlphanumeric(256));
-    return address;
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/util/CommandGenerator.java b/service/src/test/java/org/apache/fineract/cn/customer/util/CommandGenerator.java
deleted file mode 100644
index dd827dd..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/util/CommandGenerator.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer.util;
-
-import org.apache.fineract.cn.customer.api.v1.domain.Command;
-
-public final class CommandGenerator {
-
-  private CommandGenerator() {
-    super();
-  }
-
-  public static Command create(final Command.Action action, final String comment) {
-    final Command command = new Command();
-    command.setAction(action.name());
-    command.setComment(comment);
-    return command;
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/util/ContactDetailGenerator.java b/service/src/test/java/org/apache/fineract/cn/customer/util/ContactDetailGenerator.java
deleted file mode 100644
index b4b2343..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/util/ContactDetailGenerator.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer.util;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.fineract.cn.customer.api.v1.domain.ContactDetail;
-
-public final class ContactDetailGenerator {
-
-  private ContactDetailGenerator() {
-    super();
-  }
-
-  public static ContactDetail createRandomContactDetail() {
-    final ContactDetail contactDetail = new ContactDetail();
-    contactDetail.setType(ContactDetail.Type.MOBILE.name());
-    contactDetail.setGroup(ContactDetail.Group.PRIVATE.name());
-    contactDetail.setValue(RandomStringUtils.randomAlphanumeric(32));
-    contactDetail.setPreferenceLevel(Integer.valueOf(1));
-    contactDetail.setValidated(Boolean.FALSE);
-    return contactDetail;
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/util/CustomerDocumentGenerator.java b/service/src/test/java/org/apache/fineract/cn/customer/util/CustomerDocumentGenerator.java
deleted file mode 100644
index 875ff2a..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/util/CustomerDocumentGenerator.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer.util;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.fineract.cn.customer.api.v1.domain.CustomerDocument;
-
-public final class CustomerDocumentGenerator {
-
-  private CustomerDocumentGenerator() {
-    super();
-  }
-
-  public static CustomerDocument createRandomCustomerDocument() {
-    final CustomerDocument ret = new CustomerDocument();
-    ret.setIdentifier(RandomStringUtils.randomAlphanumeric(8));
-    ret.setDescription(RandomStringUtils.randomAlphanumeric(4096));
-    return ret;
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/util/CustomerGenerator.java b/service/src/test/java/org/apache/fineract/cn/customer/util/CustomerGenerator.java
deleted file mode 100644
index b50d50e..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/util/CustomerGenerator.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer.util;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.fineract.cn.customer.api.v1.domain.Customer;
-import org.apache.fineract.cn.lang.DateOfBirth;
-
-import java.time.Clock;
-import java.time.LocalDate;
-import java.util.Arrays;
-
-public final class CustomerGenerator {
-
-  private CustomerGenerator() {
-    super();
-  }
-
-  public static Customer createRandomCustomer() {
-    final Customer customer = new Customer();
-    customer.setIdentifier(RandomStringUtils.randomAlphanumeric(8));
-    customer.setType(Customer.Type.PERSON.name());
-    customer.setGivenName(RandomStringUtils.randomAlphanumeric(256));
-    customer.setMiddleName(RandomStringUtils.randomAlphanumeric(256));
-    customer.setSurname(RandomStringUtils.randomAlphanumeric(256));
-    customer.setDateOfBirth(DateOfBirth.fromLocalDate(LocalDate.now(Clock.systemUTC())));
-    customer.setMember(Boolean.TRUE);
-    customer.setAssignedOffice(RandomStringUtils.randomAlphanumeric(8));
-    customer.setAssignedEmployee(RandomStringUtils.randomAlphanumeric(8));
-    customer.setCurrentState(Customer.State.PENDING.name());
-    customer.setAddress(AddressGenerator.createRandomAddress());
-    customer.setContactDetails(Arrays.asList(ContactDetailGenerator.createRandomContactDetail(),
-        ContactDetailGenerator.createRandomContactDetail()));
-    return customer;
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/util/IdentificationCardGenerator.java b/service/src/test/java/org/apache/fineract/cn/customer/util/IdentificationCardGenerator.java
deleted file mode 100644
index c56ca94..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/util/IdentificationCardGenerator.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer.util;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.fineract.cn.customer.api.v1.domain.ExpirationDate;
-import org.apache.fineract.cn.customer.api.v1.domain.IdentificationCard;
-
-import java.time.Clock;
-import java.time.LocalDate;
-
-public class IdentificationCardGenerator {
-
-  private IdentificationCardGenerator() {
-    super();
-  }
-
-  public static IdentificationCard createRandomIdentificationCard() {
-    final IdentificationCard identificationCard = new IdentificationCard();
-    identificationCard.setType(RandomStringUtils.randomAlphanumeric(128));
-    identificationCard.setNumber(RandomStringUtils.randomAlphanumeric(32));
-    identificationCard.setExpirationDate(ExpirationDate.fromLocalDate(LocalDate.now(Clock.systemUTC()).plusYears(2L)));
-    identificationCard.setIssuer(RandomStringUtils.randomAlphanumeric(256));
-    return identificationCard;
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/util/ScanGenerator.java b/service/src/test/java/org/apache/fineract/cn/customer/util/ScanGenerator.java
deleted file mode 100644
index 42af9d5..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/util/ScanGenerator.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer.util;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.fineract.cn.customer.api.v1.domain.IdentificationCardScan;
-
-import javax.annotation.Nullable;
-
-public class ScanGenerator {
-
-  private ScanGenerator() {}
-
-  public static IdentificationCardScan createRandomScan(@Nullable final String identifier) {
-    final IdentificationCardScan scan = new IdentificationCardScan();
-
-    if(identifier != null) {
-      scan.setIdentifier(identifier);
-    } else {
-      scan.setIdentifier(RandomStringUtils.randomAlphanumeric(32));
-    }
-
-    scan.setDescription(RandomStringUtils.randomAlphanumeric(128));
-    return scan;
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/customer/util/TaskGenerator.java b/service/src/test/java/org/apache/fineract/cn/customer/util/TaskGenerator.java
deleted file mode 100644
index 0dcaff8..0000000
--- a/service/src/test/java/org/apache/fineract/cn/customer/util/TaskGenerator.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.
- */
-package org.apache.fineract.cn.customer.util;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.fineract.cn.customer.api.v1.domain.TaskDefinition;
-
-public final class TaskGenerator {
-
-  private TaskGenerator() {
-    super();
-  }
-
-  public static TaskDefinition createRandomTask(final TaskDefinition.Type type, final Boolean mandatory, final Boolean predefined) {
-    final TaskDefinition taskDefinition = new TaskDefinition();
-    taskDefinition.setIdentifier(RandomStringUtils.randomAlphanumeric(8));
-    taskDefinition.setType(type.name());
-    taskDefinition.setName(RandomStringUtils.randomAlphanumeric(256));
-    taskDefinition.setDescription(RandomStringUtils.randomAlphanumeric(2048));
-    taskDefinition.setCommands(TaskDefinition.Command.ACTIVATE.name());
-    taskDefinition.setMandatory(mandatory);
-    taskDefinition.setPredefined(predefined);
-    return taskDefinition;
-  }
-}

-- 
To stop receiving notification emails like this one, please contact
ikamga@apache.org.