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/06/11 01:26:51 UTC

[fineract-cn-payroll] branch revert-5-develop created (now e94c0e3)

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-payroll.git.


      at e94c0e3  Revert "Document the payroll API"

This branch includes the following new commits:

     new e94c0e3  Revert "Document the payroll 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-payroll] 01/01: Revert "Document the payroll 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-payroll.git

commit e94c0e35a279ad01669f20a3018f8cc81932aa34
Author: Isaac Kamga <u2...@gmail.com>
AuthorDate: Mon Jun 11 02:26:48 2018 +0100

    Revert "Document the payroll API"
---
 service/build.gradle                               |  20 -
 service/src/doc/asciidoc/api-docs.adoc             |  31 --
 .../curl-request.adoc                              |   4 -
 .../http-request.adoc                              |  10 -
 .../http-response.adoc                             |   5 -
 .../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          | 508 ---------------------
 .../fineract/cn/payroll/AbstractPayrollTest.java   | 114 -----
 .../fineract/cn/payroll/SuiteTestEnvironment.java  |  48 --
 .../cn/payroll/TestPayrollConfiguration.java       | 172 -------
 .../cn/payroll/TestPayrollDistribution.java        | 198 --------
 .../org/apache/fineract/cn/payroll/TestSuite.java  |  30 --
 .../cn/payroll/domain/DomainObjectGenerator.java   |  49 --
 .../payroll/listener/MigrationEventListener.java   |  50 --
 .../listener/PayrollConfigurationListener.java     |  56 ---
 .../listener/PayrollDistributionListener.java      |  56 ---
 20 files changed, 1376 deletions(-)

diff --git a/service/build.gradle b/service/build.gradle
index 79f2200..b7d4e95 100644
--- a/service/build.gradle
+++ b/service/build.gradle
@@ -26,7 +26,6 @@ buildscript {
 
     dependencies {
         classpath ("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
-        classpath("org.asciidoctor:asciidoctor-gradle-plugin:1.5.3")
     }
 }
 
@@ -37,7 +36,6 @@ plugins {
 
 apply from: '../shared.gradle'
 
-apply plugin: 'org.asciidoctor.convert'
 apply plugin: 'spring-boot'
 
 springBoot {
@@ -62,24 +60,6 @@ dependencies {
             [group: 'org.apache.fineract.cn', name: 'command', version: versions.frameworkcommand],
             [group: 'org.hibernate', name: 'hibernate-validator', version: versions.validator]
     )
-    testCompile(
-            [group: 'org.apache.fineract.cn.payroll', name: 'api', version: project.version],
-            [group: 'org.apache.fineract.cn.anubis', name: 'test', version: versions.frameworkanubis],
-            [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: 'lang', version: versions.frameworklang],
-            [group: 'org.springframework.boot', name: 'spring-boot-starter-test'],
-            [group: 'org.springframework.restdocs', name: 'spring-restdocs-mockmvc'],
-            [group: 'junit', name: 'junit', version: '4.12']
-    )
-}
-
-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
diff --git a/service/src/doc/asciidoc/api-docs.adoc b/service/src/doc/asciidoc/api-docs.adoc
deleted file mode 100644
index 8ab3b68..0000000
--- a/service/src/doc/asciidoc/api-docs.adoc
+++ /dev/null
@@ -1,31 +0,0 @@
-== Apache Fineract CN Payroll Management API Documentation ==
-
-== Payroll Configurations ==
-
-==== Configure Payroll Distribution ====
-
-.curl-request
-include::{snippets}/test-configurations/should-create-payroll-distribution/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-configurations/should-create-payroll-distribution/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-configurations/should-create-payroll-distribution/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-configurations/should-create-payroll-distribution/httpie-request.adoc[]
-
-==== Update Payroll Distribution ====
-
-.curl-request
-include::{snippets}/test-configurations/should-update-payroll-distribution/curl-request.adoc[]
-
-.http-request
-include::{snippets}/test-configurations/should-update-payroll-distribution/http-request.adoc[]
-
-.http-response
-include::{snippets}/test-configurations/should-update-payroll-distribution/http-response.adoc[]
-
-.httpie-request
-include::{snippets}/test-configurations/should-update-payroll-distribution/httpie-request.adoc[]
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-configurations/should-create-payroll-distribution/curl-request.adoc b/service/src/doc/generated-snippets/test-configurations/should-create-payroll-distribution/curl-request.adoc
deleted file mode 100644
index 369d46e..0000000
--- a/service/src/doc/generated-snippets/test-configurations/should-create-payroll-distribution/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/payroll/v1/customers/wwiP1hjgY4urDKHZZmE7K7Pbwr5OV9J3/payroll' -i -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' -d 'wwiP1hjgY4urDKHZZmE7K7Pbwr5OV9J3'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-configurations/should-create-payroll-distribution/http-request.adoc b/service/src/doc/generated-snippets/test-configurations/should-create-payroll-distribution/http-request.adoc
deleted file mode 100644
index 973bc8e..0000000
--- a/service/src/doc/generated-snippets/test-configurations/should-create-payroll-distribution/http-request.adoc
+++ /dev/null
@@ -1,10 +0,0 @@
-[source,http,options="nowrap"]
-----
-POST /payroll/v1/customers/wwiP1hjgY4urDKHZZmE7K7Pbwr5OV9J3/payroll HTTP/1.1
-Accept: application/json
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 32
-
-wwiP1hjgY4urDKHZZmE7K7Pbwr5OV9J3
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-configurations/should-create-payroll-distribution/http-response.adoc b/service/src/doc/generated-snippets/test-configurations/should-create-payroll-distribution/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-configurations/should-create-payroll-distribution/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-configurations/should-create-payroll-distribution/httpie-request.adoc b/service/src/doc/generated-snippets/test-configurations/should-create-payroll-distribution/httpie-request.adoc
deleted file mode 100644
index 58f2cf5..0000000
--- a/service/src/doc/generated-snippets/test-configurations/should-create-payroll-distribution/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ echo 'wwiP1hjgY4urDKHZZmE7K7Pbwr5OV9J3' | http POST 'http://localhost:8080/payroll/v1/customers/wwiP1hjgY4urDKHZZmE7K7Pbwr5OV9J3/payroll' 'Accept:application/json' 'Content-Type:application/json'
-----
\ No newline at end of file
diff --git a/service/src/doc/generated-snippets/test-configurations/should-update-payroll-distribution/curl-request.adoc b/service/src/doc/generated-snippets/test-configurations/should-update-payroll-distribution/curl-request.adoc
deleted file mode 100644
index cf59595..0000000
--- a/service/src/doc/generated-snippets/test-configurations/should-update-payroll-distribution/curl-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ curl 'http://localhost:8080/payroll/v1/customers/WhfpMOMifcLw4XIoImryT51O75wTyfVa/payroll/org.apache.fineract.cn.payroll.api.v1.domain.PayrollConfiguration@42c661d4' -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-configurations/should-update-payroll-distribution/http-request.adoc b/service/src/doc/generated-snippets/test-configurations/should-update-payroll-distribution/http-request.adoc
deleted file mode 100644
index da20ea8..0000000
--- a/service/src/doc/generated-snippets/test-configurations/should-update-payroll-distribution/http-request.adoc
+++ /dev/null
@@ -1,8 +0,0 @@
-[source,http,options="nowrap"]
-----
-PUT /payroll/v1/customers/WhfpMOMifcLw4XIoImryT51O75wTyfVa/payroll/org.apache.fineract.cn.payroll.api.v1.domain.PayrollConfiguration@42c661d4 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-configurations/should-update-payroll-distribution/http-response.adoc b/service/src/doc/generated-snippets/test-configurations/should-update-payroll-distribution/http-response.adoc
deleted file mode 100644
index f3b256d..0000000
--- a/service/src/doc/generated-snippets/test-configurations/should-update-payroll-distribution/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-configurations/should-update-payroll-distribution/httpie-request.adoc b/service/src/doc/generated-snippets/test-configurations/should-update-payroll-distribution/httpie-request.adoc
deleted file mode 100644
index 352b69e..0000000
--- a/service/src/doc/generated-snippets/test-configurations/should-update-payroll-distribution/httpie-request.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-[source,bash]
-----
-$ http PUT 'http://localhost:8080/payroll/v1/customers/WhfpMOMifcLw4XIoImryT51O75wTyfVa/payroll/org.apache.fineract.cn.payroll.api.v1.domain.PayrollConfiguration@42c661d4' '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 105514b..0000000
--- a/service/src/doc/html5/html5/api-docs.html
+++ /dev/null
@@ -1,508 +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 Payroll 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_payroll_management_api_documentation">Apache Fineract CN Payroll Management API Documentation</h2>
-<div class="sectionbody">
-
-</div>
-</div>
-<div class="sect1">
-<h2 id="_payroll_configurations">Payroll Configurations</h2>
-<div class="sectionbody">
-<div class="sect3">
-<h4 id="_configure_payroll_distribution">Configure Payroll Distribution</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/payroll/v1/customers/wwiP1hjgY4urDKHZZmE7K7Pbwr5OV9J3/payroll' -i -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' -d 'wwiP1hjgY4urDKHZZmE7K7Pbwr5OV9J3'</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 /payroll/v1/customers/wwiP1hjgY4urDKHZZmE7K7Pbwr5OV9J3/payroll HTTP/1.1
-Accept: application/json
-Content-Type: application/json
-Host: localhost:8080
-Content-Length: 32
-
-wwiP1hjgY4urDKHZZmE7K7Pbwr5OV9J3</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 'wwiP1hjgY4urDKHZZmE7K7Pbwr5OV9J3' | http POST 'http://localhost:8080/payroll/v1/customers/wwiP1hjgY4urDKHZZmE7K7Pbwr5OV9J3/payroll' 'Accept:application/json' 'Content-Type:application/json'</code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_update_payroll_distribution">Update Payroll Distribution</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/payroll/v1/customers/WhfpMOMifcLw4XIoImryT51O75wTyfVa/payroll/org.apache.fineract.cn.payroll.api.v1.domain.PayrollConfiguration@42c661d4' -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 /payroll/v1/customers/WhfpMOMifcLw4XIoImryT51O75wTyfVa/payroll/org.apache.fineract.cn.payroll.api.v1.domain.PayrollConfiguration@42c661d4 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/payroll/v1/customers/WhfpMOMifcLw4XIoImryT51O75wTyfVa/payroll/org.apache.fineract.cn.payroll.api.v1.domain.PayrollConfiguration@42c661d4' 'Accept:application/json' 'Content-Type:application/json'</code></pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div id="footer">
-<div id="footer-text">
-Last updated 2018-04-23 16:34:50 +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/payroll/AbstractPayrollTest.java b/service/src/test/java/org/apache/fineract/cn/payroll/AbstractPayrollTest.java
deleted file mode 100644
index 5aca3d0..0000000
--- a/service/src/test/java/org/apache/fineract/cn/payroll/AbstractPayrollTest.java
+++ /dev/null
@@ -1,114 +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.payroll;
-
-
-import org.apache.fineract.cn.anubis.test.v1.TenantApplicationSecurityEnvironmentTestRule;
-import org.apache.fineract.cn.api.context.AutoUserContext;
-import org.apache.fineract.cn.payroll.api.v1.EventConstants;
-import org.apache.fineract.cn.payroll.api.v1.client.PayrollManager;
-import org.apache.fineract.cn.payroll.service.PayrollServiceConfiguration;
-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.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;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(
-    webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT,
-    classes = {
-        AbstractPayrollTest.TestConfiguration.class
-    }
-)
-public class AbstractPayrollTest extends SuiteTestEnvironment {
-
-  @Configuration
-  @EnableEventRecording
-  @EnableFeignClients(basePackages = {
-      "org.apache.fineract.cn.payroll.api.v1.client"
-  })
-  @RibbonClient(name = SuiteTestEnvironment.APP_NAME)
-  @ComponentScan(
-      basePackages = {
-          "org.apache.fineract.cn.payroll.listener"
-      }
-  )
-  @Import({
-      PayrollServiceConfiguration.class
-  })
-  public static class TestConfiguration {
-    public TestConfiguration() {
-      super();
-    }
-  }
-
-  static final String TEST_USER = "mage";
-
-  @ClassRule
-  public final static TenantDataStoreContextTestRule tenantDataStoreContext =
-      TenantDataStoreContextTestRule.forRandomTenantName(SuiteTestEnvironment.cassandraInitializer,
-          SuiteTestEnvironment.mariaDBInitializer);
-
-  @Rule
-  public final TenantApplicationSecurityEnvironmentTestRule tenantApplicationSecurityEnvironment
-      = new TenantApplicationSecurityEnvironmentTestRule(SuiteTestEnvironment.testEnvironment, this::waitForInitialize);
-
-  @Autowired
-  EventRecorder eventRecorder;
-
-  private AutoUserContext userContext;
-
-  @Autowired
-  PayrollManager testSubject;
-
-  public AbstractPayrollTest() {
-    super();
-  }
-
-  @Before
-  public void prepareTest() {
-    this.userContext = this.tenantApplicationSecurityEnvironment.createAutoUserContext(AbstractPayrollTest.TEST_USER);
-  }
-
-  @After
-  public void cleanupTest() {
-    userContext.close();
-  }
-
-  public boolean waitForInitialize() {
-    try {
-      return this.eventRecorder.wait(EventConstants.INITIALIZE, SuiteTestEnvironment.APP_VERSION);
-    } catch (final InterruptedException e) {
-      throw new IllegalStateException(e);
-    }
-  }
-
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/payroll/SuiteTestEnvironment.java b/service/src/test/java/org/apache/fineract/cn/payroll/SuiteTestEnvironment.java
deleted file mode 100644
index ebe1880..0000000
--- a/service/src/test/java/org/apache/fineract/cn/payroll/SuiteTestEnvironment.java
+++ /dev/null
@@ -1,48 +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.payroll;
-
-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;
-
-/**
- * This contains the database resources required by the test.  They are in a separate
- * class so that the test suite can initialize them before the classes it calls. This
- * makes test runs faster and prevents tests from "stepping on each other's toes" when
- * initializing and de-initializing external resources.
- */
-public class SuiteTestEnvironment {
-  static final String APP_VERSION = "1";
-  static final String APP_NAME = "payroll-v" + APP_VERSION;
-
-  static final TestEnvironment testEnvironment = new TestEnvironment(APP_NAME);
-  static final CassandraInitializer cassandraInitializer = new CassandraInitializer();
-  static final 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/payroll/TestPayrollConfiguration.java b/service/src/test/java/org/apache/fineract/cn/payroll/TestPayrollConfiguration.java
deleted file mode 100644
index d5e41d6..0000000
--- a/service/src/test/java/org/apache/fineract/cn/payroll/TestPayrollConfiguration.java
+++ /dev/null
@@ -1,172 +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.payroll;
-
-import com.google.common.collect.Lists;
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.fineract.cn.accounting.api.v1.domain.Account;
-import org.apache.fineract.cn.customer.api.v1.domain.Customer;
-import org.apache.fineract.cn.payroll.api.v1.EventConstants;
-import org.apache.fineract.cn.payroll.api.v1.domain.PayrollAllocation;
-import org.apache.fineract.cn.payroll.api.v1.domain.PayrollConfiguration;
-import org.apache.fineract.cn.payroll.domain.DomainObjectGenerator;
-import org.apache.fineract.cn.payroll.service.internal.service.adaptor.AccountingAdaptor;
-import org.apache.fineract.cn.payroll.service.internal.service.adaptor.CustomerAdaptor;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.mockito.Matchers;
-import org.mockito.Mockito;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.http.MediaType;
-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.math.BigDecimal;
-import java.util.Optional;
-
-import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
-import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration;
-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 TestPayrollConfiguration extends AbstractPayrollTest {
-
-  @Rule
-  public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("src/doc/generated-snippets/test-configurations");
-
-  @Autowired
-  private WebApplicationContext context;
-
-  private MockMvc mockMvc;
-
-  final String path = "/payroll/v1";
-
-  @Before
-  public void setUp(){
-
-    this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
-            .apply(documentationConfiguration(this.restDocumentation))
-            .alwaysDo(document("{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint())))
-            .build();
-  }
-
-  @MockBean
-  private CustomerAdaptor customerAdaptorSpy;
-  @MockBean
-  private AccountingAdaptor accountingAdaptorSpy;
-
-  public TestPayrollConfiguration() {
-    super();
-  }
-
-  @Test
-  public void shouldCreatePayrollDistribution() throws Exception {
-    final String customerIdentifier = RandomStringUtils.randomAlphanumeric(32);
-    final PayrollConfiguration payrollConfiguration = DomainObjectGenerator.getPayrollConfiguration();
-    this.prepareMocks(customerIdentifier, payrollConfiguration);
-
-    super.testSubject.setPayrollConfiguration(customerIdentifier, payrollConfiguration);
-    Assert.assertTrue(super.eventRecorder.wait(EventConstants.PUT_CONFIGURATION, customerIdentifier));
-
-    try {
-      this.mockMvc.perform(post(path + "/customers/" + customerIdentifier + "/payroll")
-              .accept(MediaType.APPLICATION_JSON_VALUE)
-              .contentType(MediaType.APPLICATION_JSON_VALUE)
-              .content(customerIdentifier))
-              .andExpect(status().isNotFound());
-    } catch (Exception e) { e.printStackTrace(); }
-  }
-
-  @Test
-  public void shouldUpdatePayrollDistribution() throws Exception {
-    final String customerIdentifier = RandomStringUtils.randomAlphanumeric(32);
-    final PayrollConfiguration payrollConfiguration = DomainObjectGenerator.getPayrollConfiguration();
-    this.prepareMocks(customerIdentifier, payrollConfiguration);
-
-    super.testSubject.setPayrollConfiguration(customerIdentifier, payrollConfiguration);
-    Assert.assertTrue(super.eventRecorder.wait(EventConstants.PUT_CONFIGURATION, customerIdentifier));
-
-    final PayrollAllocation newPayrollAllocation = new PayrollAllocation();
-    payrollConfiguration.setPayrollAllocations(Lists.newArrayList(newPayrollAllocation));
-    newPayrollAllocation.setAccountNumber(RandomStringUtils.randomAlphanumeric(34));
-    newPayrollAllocation.setAmount(BigDecimal.valueOf(15.00D));
-    newPayrollAllocation.setProportional(Boolean.FALSE);
-
-    Mockito
-            .doAnswer(invocation -> Optional.of(new Account()))
-            .when(this.accountingAdaptorSpy).findAccount(Matchers.eq(newPayrollAllocation.getAccountNumber()));
-
-    super.testSubject.setPayrollConfiguration(customerIdentifier, payrollConfiguration);
-    Assert.assertTrue(super.eventRecorder.wait(EventConstants.PUT_CONFIGURATION, customerIdentifier));
-
-    Thread.sleep(500L);
-
-    final PayrollConfiguration fetchedPayrollConfiguration =
-            super.testSubject.findPayrollConfiguration(customerIdentifier);
-
-    Assert.assertNotNull(fetchedPayrollConfiguration.getLastModifiedBy());
-    Assert.assertNotNull(fetchedPayrollConfiguration.getLastModifiedOn());
-    Assert.assertEquals(1, fetchedPayrollConfiguration.getPayrollAllocations().size());
-
-    final Optional<PayrollAllocation> optionalPayrollAllocation =
-            fetchedPayrollConfiguration.getPayrollAllocations().stream().findFirst();
-
-    Assert.assertTrue(optionalPayrollAllocation.isPresent());
-
-    this.comparePayrollAllocations(newPayrollAllocation, optionalPayrollAllocation.get());
-
-    try {
-      this.mockMvc.perform(put(path + "/customers/" + customerIdentifier + "/payroll/" + payrollConfiguration.toString())
-              .accept(MediaType.APPLICATION_JSON_VALUE)
-              .contentType(MediaType.APPLICATION_JSON))
-              .andExpect(status().is4xxClientError());
-    } catch ( Exception E) { E.printStackTrace(); }
-  }
-
-  private void prepareMocks(final String customerIdentifier, final PayrollConfiguration payrollConfiguration) {
-    Mockito
-            .doAnswer(invocation -> Optional.of(new Customer()))
-            .when(this.customerAdaptorSpy).findCustomer(Matchers.eq(customerIdentifier));
-
-    Mockito
-            .doAnswer(invocation -> Optional.of(new Account()))
-            .when(this.accountingAdaptorSpy).findAccount(Matchers.eq(payrollConfiguration.getMainAccountNumber()));
-
-    payrollConfiguration.getPayrollAllocations().forEach(payrollAllocation ->
-            Mockito
-                    .doAnswer(invocation -> Optional.of(new Account()))
-                    .when(this.accountingAdaptorSpy).findAccount(Matchers.eq(payrollAllocation.getAccountNumber()))
-    );
-  }
-
-  private void comparePayrollAllocations(final PayrollAllocation expected, final PayrollAllocation actual) {
-    Assert.assertEquals(expected.getAccountNumber(), actual.getAccountNumber());
-    Assert.assertTrue(expected.getAmount().compareTo(actual.getAmount()) == 0);
-    Assert.assertEquals(expected.getProportional(), actual.getProportional());
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/payroll/TestPayrollDistribution.java b/service/src/test/java/org/apache/fineract/cn/payroll/TestPayrollDistribution.java
deleted file mode 100644
index 68c2991..0000000
--- a/service/src/test/java/org/apache/fineract/cn/payroll/TestPayrollDistribution.java
+++ /dev/null
@@ -1,198 +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.payroll;
-
-import com.google.common.collect.Lists;
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.fineract.cn.accounting.api.v1.domain.Account;
-import org.apache.fineract.cn.customer.api.v1.domain.Customer;
-import org.apache.fineract.cn.payroll.api.v1.EventConstants;
-import org.apache.fineract.cn.payroll.api.v1.client.PayrollPaymentValidationException;
-import org.apache.fineract.cn.payroll.api.v1.domain.*;
-import org.apache.fineract.cn.payroll.domain.DomainObjectGenerator;
-import org.apache.fineract.cn.payroll.service.internal.repository.PayrollCollectionEntity;
-import org.apache.fineract.cn.payroll.service.internal.service.adaptor.AccountingAdaptor;
-import org.apache.fineract.cn.payroll.service.internal.service.adaptor.CustomerAdaptor;
-import org.junit.Assert;
-import org.junit.Test;
-import org.mockito.Matchers;
-import org.mockito.Mockito;
-import org.springframework.boot.test.mock.mockito.MockBean;
-
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Optional;
-
-public class TestPayrollDistribution extends AbstractPayrollTest {
-
-  @MockBean
-  private CustomerAdaptor customerAdaptorSpy;
-  @MockBean
-  private AccountingAdaptor accountingAdaptorSpy;
-
-  public TestPayrollDistribution() {
-    super();
-  }
-
-  @Test
-  public void shouldDistributePayments() throws Exception {
-    final String customerIdentifier = RandomStringUtils.randomAlphanumeric(32);
-    final PayrollConfiguration payrollConfiguration = DomainObjectGenerator.getPayrollConfiguration();
-    this.prepareMocks(customerIdentifier, payrollConfiguration);
-
-    super.testSubject.setPayrollConfiguration(customerIdentifier, payrollConfiguration);
-    Assert.assertTrue(super.eventRecorder.wait(EventConstants.PUT_CONFIGURATION, customerIdentifier));
-
-    final PayrollCollectionSheet payrollCollectionSheet = new PayrollCollectionSheet();
-    payrollCollectionSheet.setSourceAccountNumber(RandomStringUtils.randomAlphanumeric(34));
-    final PayrollPayment payrollPayment = new PayrollPayment();
-    payrollPayment.setCustomerIdentifier(customerIdentifier);
-    payrollPayment.setEmployer("ACME, Inc.");
-    payrollPayment.setSalary(BigDecimal.valueOf(1234.56D));
-    payrollCollectionSheet.setPayrollPayments(Lists.newArrayList(payrollPayment));
-
-    final Account sourceAccount = new Account();
-    sourceAccount.setState(Account.State.OPEN.name());
-    Mockito
-        .doAnswer(invocation -> Optional.of(sourceAccount))
-        .when(this.accountingAdaptorSpy).findAccount(Matchers.eq(payrollCollectionSheet.getSourceAccountNumber()));
-
-    Mockito
-        .doAnswer(invocation -> Optional.empty())
-        .when(this.accountingAdaptorSpy).postPayrollPayment(
-        Matchers.any(PayrollCollectionEntity.class),
-        Matchers.refEq(payrollPayment),
-        Matchers.any(PayrollConfiguration.class)
-    );
-
-    super.testSubject.distribute(payrollCollectionSheet);
-    Assert.assertTrue(super.eventRecorder.wait(EventConstants.POST_DISTRIBUTION, payrollCollectionSheet.getSourceAccountNumber()));
-
-    final List<PayrollCollectionHistory> payrollCollectionHistories = super.testSubject.fetchDistributionHistory();
-    Assert.assertEquals(1, payrollCollectionHistories.size());
-
-    final PayrollCollectionHistory payrollCollectionHistory = payrollCollectionHistories.get(0);
-    final PayrollPaymentPage payrollPaymentPage =
-        super.testSubject.fetchPayments(payrollCollectionHistory.getIdentifier(), 0, 10, null, null);
-    Assert.assertEquals(Long.valueOf(1L), payrollPaymentPage.getTotalElements());
-
-    final PayrollPayment fetchedPayrollPayment = payrollPaymentPage.getPayrollPayments().get(0);
-    Assert.assertTrue(fetchedPayrollPayment.getProcessed());
-  }
-
-  @Test(expected = PayrollPaymentValidationException.class)
-  public void shouldNotDistributePaymentsAllocatedAccountClosed() throws Exception {
-    final String customerIdentifier = RandomStringUtils.randomAlphanumeric(32);
-    final PayrollConfiguration payrollConfiguration = DomainObjectGenerator.getPayrollConfiguration();
-    this.prepareMocks(customerIdentifier, payrollConfiguration);
-
-    final PayrollAllocation invalidPayrollAllocation = new PayrollAllocation();
-    invalidPayrollAllocation.setAccountNumber(RandomStringUtils.randomAlphanumeric(34));
-    invalidPayrollAllocation.setProportional(Boolean.FALSE);
-    invalidPayrollAllocation.setAmount(BigDecimal.valueOf(200.00D));
-    payrollConfiguration.getPayrollAllocations().add(invalidPayrollAllocation);
-
-    final Account invalidPayrollAccount = new Account();
-    invalidPayrollAccount.setState(Account.State.CLOSED.name());
-    Mockito
-        .doAnswer(invocation -> Optional.of(invalidPayrollAccount))
-        .when(this.accountingAdaptorSpy).findAccount(Matchers.eq(invalidPayrollAllocation.getAccountNumber()));
-
-    super.testSubject.setPayrollConfiguration(customerIdentifier, payrollConfiguration);
-    Assert.assertTrue(super.eventRecorder.wait(EventConstants.PUT_CONFIGURATION, customerIdentifier));
-
-    final PayrollCollectionSheet payrollCollectionSheet = new PayrollCollectionSheet();
-    payrollCollectionSheet.setSourceAccountNumber(RandomStringUtils.randomAlphanumeric(34));
-    final PayrollPayment payrollPayment = new PayrollPayment();
-    payrollPayment.setCustomerIdentifier(customerIdentifier);
-    payrollPayment.setEmployer("ACME, Inc.");
-    payrollPayment.setSalary(BigDecimal.valueOf(1234.56D));
-    payrollCollectionSheet.setPayrollPayments(Lists.newArrayList(payrollPayment));
-
-    final Account sourceAccount = new Account();
-    sourceAccount.setState(Account.State.OPEN.name());
-    Mockito
-        .doAnswer(invocation -> Optional.of(sourceAccount))
-        .when(this.accountingAdaptorSpy).findAccount(Matchers.eq(payrollCollectionSheet.getSourceAccountNumber()));
-
-    Mockito
-        .doAnswer(invocation -> Optional.empty())
-        .when(this.accountingAdaptorSpy).postPayrollPayment(
-        Matchers.any(PayrollCollectionEntity.class),
-        Matchers.refEq(payrollPayment),
-        Matchers.any(PayrollConfiguration.class)
-    );
-
-    super.testSubject.distribute(payrollCollectionSheet);
-  }
-
-  @Test(expected = PayrollPaymentValidationException.class)
-  public void shouldNotDistributePaymentsSourceAccountClosed() throws Exception {
-    final String customerIdentifier = RandomStringUtils.randomAlphanumeric(32);
-    final PayrollConfiguration payrollConfiguration = DomainObjectGenerator.getPayrollConfiguration();
-    this.prepareMocks(customerIdentifier, payrollConfiguration);
-
-    super.testSubject.setPayrollConfiguration(customerIdentifier, payrollConfiguration);
-    Assert.assertTrue(super.eventRecorder.wait(EventConstants.PUT_CONFIGURATION, customerIdentifier));
-
-    final PayrollCollectionSheet payrollCollectionSheet = new PayrollCollectionSheet();
-    payrollCollectionSheet.setSourceAccountNumber(RandomStringUtils.randomAlphanumeric(34));
-    final PayrollPayment payrollPayment = new PayrollPayment();
-    payrollPayment.setCustomerIdentifier(customerIdentifier);
-    payrollPayment.setEmployer("ACME, Inc.");
-    payrollPayment.setSalary(BigDecimal.valueOf(1234.56D));
-    payrollCollectionSheet.setPayrollPayments(Lists.newArrayList(payrollPayment));
-
-    final Account sourceAccount = new Account();
-    sourceAccount.setState(Account.State.CLOSED.name());
-    Mockito
-        .doAnswer(invocation -> Optional.of(sourceAccount))
-        .when(this.accountingAdaptorSpy).findAccount(Matchers.eq(payrollCollectionSheet.getSourceAccountNumber()));
-
-    Mockito
-        .doAnswer(invocation -> Optional.empty())
-        .when(this.accountingAdaptorSpy).postPayrollPayment(
-        Matchers.any(PayrollCollectionEntity.class),
-        Matchers.refEq(payrollPayment),
-        Matchers.any(PayrollConfiguration.class)
-    );
-
-    super.testSubject.distribute(payrollCollectionSheet);
-  }
-
-  private void prepareMocks(final String customerIdentifier, final PayrollConfiguration payrollConfiguration) {
-    Mockito
-        .doAnswer(invocation -> Optional.of(new Customer()))
-        .when(this.customerAdaptorSpy).findCustomer(Matchers.eq(customerIdentifier));
-
-    final Account mainAccount = new Account();
-    mainAccount.setState(Account.State.OPEN.name());
-    Mockito
-        .doAnswer(invocation -> Optional.of(mainAccount))
-        .when(this.accountingAdaptorSpy).findAccount(Matchers.eq(payrollConfiguration.getMainAccountNumber()));
-
-    payrollConfiguration.getPayrollAllocations().forEach(payrollAllocation -> {
-      final Account allocatedAccount = new Account();
-      allocatedAccount.setState(Account.State.OPEN.name());
-      Mockito
-          .doAnswer(invocation -> Optional.of(allocatedAccount))
-          .when(this.accountingAdaptorSpy).findAccount(Matchers.eq(payrollAllocation.getAccountNumber()));
-    });
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/payroll/TestSuite.java b/service/src/test/java/org/apache/fineract/cn/payroll/TestSuite.java
deleted file mode 100644
index 5fe0817..0000000
--- a/service/src/test/java/org/apache/fineract/cn/payroll/TestSuite.java
+++ /dev/null
@@ -1,30 +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.payroll;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
-    TestPayrollConfiguration.class,
-    TestPayrollDistribution.class
-})
-public class TestSuite extends SuiteTestEnvironment {
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/payroll/domain/DomainObjectGenerator.java b/service/src/test/java/org/apache/fineract/cn/payroll/domain/DomainObjectGenerator.java
deleted file mode 100644
index dc3dbfe..0000000
--- a/service/src/test/java/org/apache/fineract/cn/payroll/domain/DomainObjectGenerator.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.payroll.domain;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.fineract.cn.payroll.api.v1.domain.PayrollAllocation;
-import org.apache.fineract.cn.payroll.api.v1.domain.PayrollConfiguration;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-
-public class DomainObjectGenerator {
-
-  private DomainObjectGenerator() {
-    super();
-  }
-
-  public static PayrollConfiguration getPayrollConfiguration() {
-    final PayrollConfiguration payrollConfiguration = new PayrollConfiguration();
-    payrollConfiguration.setMainAccountNumber(RandomStringUtils.randomAlphanumeric(34));
-
-    final ArrayList<PayrollAllocation> payrollAllocations = new ArrayList<>();
-    payrollConfiguration.setPayrollAllocations(payrollAllocations);
-
-    final PayrollAllocation savingsAllocation = new PayrollAllocation();
-    payrollAllocations.add(savingsAllocation);
-    savingsAllocation.setAccountNumber(RandomStringUtils.randomAlphanumeric(34));
-    savingsAllocation.setAmount(BigDecimal.valueOf(5.00D));
-    savingsAllocation.setProportional(Boolean.TRUE);
-
-    return payrollConfiguration;
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/payroll/listener/MigrationEventListener.java b/service/src/test/java/org/apache/fineract/cn/payroll/listener/MigrationEventListener.java
deleted file mode 100644
index fc5867b..0000000
--- a/service/src/test/java/org/apache/fineract/cn/payroll/listener/MigrationEventListener.java
+++ /dev/null
@@ -1,50 +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.payroll.listener;
-
-import org.apache.fineract.cn.lang.config.TenantHeaderFilter;
-import org.apache.fineract.cn.payroll.api.v1.EventConstants;
-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 MigrationEventListener {
-
-  private final EventRecorder eventRecorder;
-
-  @Autowired
-  public MigrationEventListener(@SuppressWarnings("SpringJavaAutowiringInspection") final EventRecorder eventRecorder) {
-    super();
-    this.eventRecorder = eventRecorder;
-  }
-
-  @JmsListener(
-      subscription = EventConstants.DESTINATION,
-      destination = EventConstants.DESTINATION,
-      selector = EventConstants.SELECTOR_INITIALIZE
-  )
-  public void onInitialization(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                               final String payload) {
-    this.eventRecorder.event(tenant, EventConstants.INITIALIZE, payload, String.class);
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/payroll/listener/PayrollConfigurationListener.java b/service/src/test/java/org/apache/fineract/cn/payroll/listener/PayrollConfigurationListener.java
deleted file mode 100644
index 776112d..0000000
--- a/service/src/test/java/org/apache/fineract/cn/payroll/listener/PayrollConfigurationListener.java
+++ /dev/null
@@ -1,56 +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.payroll.listener;
-
-import org.apache.fineract.cn.lang.config.TenantHeaderFilter;
-import org.apache.fineract.cn.payroll.api.v1.EventConstants;
-import org.apache.fineract.cn.payroll.service.ServiceConstants;
-import org.apache.fineract.cn.test.listener.EventRecorder;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.jms.annotation.JmsListener;
-import org.springframework.messaging.handler.annotation.Header;
-import org.springframework.stereotype.Component;
-
-@Component
-public class PayrollConfigurationListener {
-
-  private final Logger logger;
-  private final EventRecorder eventRecorder;
-
-  @Autowired
-  public PayrollConfigurationListener(@Qualifier(ServiceConstants.LOGGER_NAME) final Logger logger,
-                                      final EventRecorder eventRecorder) {
-    super();
-    this.logger = logger;
-    this.eventRecorder = eventRecorder;
-  }
-
-  @JmsListener(
-      subscription = EventConstants.DESTINATION,
-      destination = EventConstants.DESTINATION,
-      selector = EventConstants.SELECTOR_PUT_CONFIGURATION
-  )
-  public void onPutConfiguration(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                                 final String payload) {
-    this.logger.info("Payment configuration for customer {} processed.", payload);
-    this.eventRecorder.event(tenant, EventConstants.PUT_CONFIGURATION, payload, String.class);
-  }
-}
diff --git a/service/src/test/java/org/apache/fineract/cn/payroll/listener/PayrollDistributionListener.java b/service/src/test/java/org/apache/fineract/cn/payroll/listener/PayrollDistributionListener.java
deleted file mode 100644
index c489f2a..0000000
--- a/service/src/test/java/org/apache/fineract/cn/payroll/listener/PayrollDistributionListener.java
+++ /dev/null
@@ -1,56 +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.payroll.listener;
-
-import org.apache.fineract.cn.lang.config.TenantHeaderFilter;
-import org.apache.fineract.cn.payroll.api.v1.EventConstants;
-import org.apache.fineract.cn.payroll.service.ServiceConstants;
-import org.apache.fineract.cn.test.listener.EventRecorder;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.jms.annotation.JmsListener;
-import org.springframework.messaging.handler.annotation.Header;
-import org.springframework.stereotype.Component;
-
-@Component
-public class PayrollDistributionListener {
-
-  private final Logger logger;
-  private final EventRecorder eventRecorder;
-
-  @Autowired
-  public PayrollDistributionListener(@Qualifier(ServiceConstants.LOGGER_NAME) final Logger logger,
-                                     final EventRecorder eventRecorder) {
-    super();
-    this.logger = logger;
-    this.eventRecorder = eventRecorder;
-  }
-
-  @JmsListener(
-      subscription = EventConstants.DESTINATION,
-      destination = EventConstants.DESTINATION,
-      selector = EventConstants.SELECTOR_POST_DISTRIBUTION
-  )
-  public void onPostCollection(@Header(TenantHeaderFilter.TENANT_HEADER) final String tenant,
-                               final String payload) {
-    this.logger.info("Payment distribution with source account {0} processed.", payload);
-    this.eventRecorder.event(tenant, EventConstants.POST_DISTRIBUTION, payload, String.class);
-  }
-}

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