Initial Check-in
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e705fa8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+.git
+.idea/**/*.xml
+.settings
+.classpath
+target
+/.idea/compiler.xml
+/.idea/*.xml
+/.idea/modules.xml
+/.idea/vcs.xml
+/bin/
+.iml
+.project
+.classpath
+/elogbook.iml
+/.idea
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..34312ef
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,56 @@
+FROM myserver:withproxy
+#linux 16.04
+MAINTAINER Dimitris
+
+WORKDIR /
+### PORTAL #### 
+WORKDIR portal
+RUN git clone  http://172.18.22.160:8880/gitblit-1.8.0/r/oK/Portal/Backend.git && cd Backend && git checkout DEVELOP_BE 
+WORKDIR Backend
+RUN rm -f -r ./target/portal && rm -f -r ./target/portal.war
+RUN mvn install -DskipTests
+RUN mv ./target/portal.war /opt/tomcat/webapps/portal.war
+
+WORKDIR /
+### PORTAL FE ####
+WORKDIR portal
+RUN git clone  http://172.18.22.160:8880/gitblit-1.8.0/r/oK/Portal/Frontend.git  && cd Frontend && git checkout DEVELOP_FE
+WORKDIR Frontend
+RUN npm install
+RUN ng build --prod
+RUN mv ./dist/ /opt/tomcat/webapps/Frontend/
+
+WORKDIR /
+### DIAGNOSIS APP ####
+WORKDIR microservices
+RUN git clone http://172.18.22.160:8880/gitblit-1.8.0/r/Dropwizard/Microservices/mics-diagnosis-app.git && cd mics-diagnosis-app && git checkout DEVELOP_FE
+WORKDIR mics-diagnosis-app
+RUN npm install
+RUN ng build --prod
+RUN mv ./dist/ /opt/tomcat/webapps/mics-diagnosis-app/
+
+WORKDIR /
+### HOME SERVICE #### 
+WORKDIR microservices
+RUN git clone http://172.18.22.160:8880/gitblit-1.8.0/r/Dropwizard/Microservices/mics-home-service.git && cd mics-home-service && git checkout DEVELOP_BE 
+WORKDIR mics-home-service
+RUN rm -f -r ./target/mics-home-service && rm -f -r ./target/mics-home-service.war
+RUN mvn install -DskipTests
+RUN mv ./target/mics-home-service.war /opt/tomcat/webapps/mics-home-service.war
+
+WORKDIR /
+### PLGM FRONTEND ####
+WORKDIR gridmeasures
+RUN git clone http://172.18.22.160:8880/gitblit-1.8.0/r/oK/PlannedGridMeasures/Frontend.git   && cd Frontend && git checkout DEVELOP_FE
+WORKDIR Frontend
+RUN npm install
+RUN ng build --prod
+RUN mv ./dist/ /opt/tomcat/webapps/GridMeasuresFrontend/
+
+WORKDIR /
+
+CMD ["/opt/tomcat/bin/catalina.sh", "run"]
+
+EXPOSE 8080
+
+
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..e68728c
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,18 @@
+node {
+
+    stage('Clone repository') {
+        /* Let's make sure we have the repository cloned to our workspace */
+
+        checkout scm
+    }
+
+    stage('Build image') {
+        /* This builds the actual image; synonymous to
+         * docker build on the command line */
+		sh 'docker build --no-cache --rm -t myserver_home:jenkinsversion .'
+    }
+	
+	stage('Refresh containers') {
+		bat 'start cmd.exe /c C:\\Jenkinshelper\\refresh_docker.bat'
+	}
+}
\ No newline at end of file
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..11ecb79
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,198 @@
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation
+   distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+    i) changes to the Program, and
+   ii) additions to the Program;
+
+   where such changes and/or additions to the Program originate from and are
+   distributed by that particular Contributor. A Contribution 'originates' from
+   a Contributor if it was added to the Program by such Contributor itself or
+   anyone acting on such Contributor's behalf. Contributions do not include
+   additions to the Program which: (i) are separate modules of software
+   distributed in conjunction with the Program under their own license
+   agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+  a) Subject to the terms of this Agreement, each Contributor hereby grants
+     Recipient a non-exclusive, worldwide, royalty-free copyright license to
+     reproduce, prepare derivative works of, publicly display, publicly perform,
+     distribute and sublicense the Contribution of such Contributor, if any, and
+     such derivative works, in source code and object code form.
+  b) Subject to the terms of this Agreement, each Contributor hereby grants
+     Recipient a non-exclusive, worldwide, royalty-free patent license under
+     Licensed Patents to make, use, sell, offer to sell, import and otherwise
+     transfer the Contribution of such Contributor, if any, in source code and
+     object code form. This patent license shall apply to the combination of the
+     Contribution and the Program if, at the time the Contribution is added by
+     the Contributor, such addition of the Contribution causes such combination
+     to be covered by the Licensed Patents. The patent license shall not apply
+     to any other combinations which include the Contribution. No hardware per
+     se is licensed hereunder.
+  c) Recipient understands that although each Contributor grants the licenses to
+     its Contributions set forth herein, no assurances are provided by any
+     Contributor that the Program does not infringe the patent or other
+     intellectual property rights of any other entity. Each Contributor
+     disclaims any liability to Recipient for claims brought by any other entity
+     based on infringement of intellectual property rights or otherwise. As a
+     condition to exercising the rights and licenses granted hereunder, each
+     Recipient hereby assumes sole responsibility to secure any other
+     intellectual property rights needed, if any. For example, if a third party
+     patent license is required to allow Recipient to distribute the Program, it
+     is Recipient's responsibility to acquire that license before distributing
+     the Program.
+  d) Each Contributor represents that to its knowledge it has sufficient
+     copyright rights in its Contribution, if any, to grant the copyright
+     license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its
+own license agreement, provided that:
+
+  a) it complies with the terms and conditions of this Agreement; and
+  b) its license agreement:
+      i) effectively disclaims on behalf of all Contributors all warranties and
+         conditions, express and implied, including warranties or conditions of
+         title and non-infringement, and implied warranties or conditions of
+         merchantability and fitness for a particular purpose;
+     ii) effectively excludes on behalf of all Contributors all liability for
+         damages, including direct, indirect, special, incidental and
+         consequential damages, such as lost profits;
+    iii) states that any provisions which differ from this Agreement are offered
+         by that Contributor alone and not by any other party; and
+     iv) states that source code for the Program is available from such
+         Contributor, and informs licensees how to obtain it in a reasonable
+         manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+  a) it must be made available under this Agreement; and
+  b) a copy of this Agreement must be included with each copy of the Program.
+     Contributors may not remove or alter any copyright notices contained within
+     the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if
+any, in a manner that reasonably allows subsequent Recipients to identify the
+originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore, if
+a Contributor includes the Program in a commercial product offering, such
+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses, damages
+and costs (collectively "Losses") arising from claims, lawsuits and other legal
+actions brought by a third party against the Indemnified Contributor to the
+extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to
+control, and cooperate with the Commercial Contributor in, the defense and any
+related settlement negotiations. The Indemnified Contributor may participate in
+any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If that
+Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such
+Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a court
+requires any other Contributor to pay any damages as a result, the Commercial
+Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+Recipient is solely responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its exercise of
+rights under this Agreement , including but not limited to the risks and costs
+of program errors, compliance with applicable laws, damage to or loss of data,
+programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable
+law, it shall not affect the validity or enforceability of the remainder of the
+terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such
+provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+(excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted under
+Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to time.
+No one other than the Agreement Steward has the right to modify this Agreement.
+The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation
+may assign the responsibility to serve as the Agreement Steward to a suitable
+separate entity. Each new version of the Agreement will be given a
+distinguishing version number. The Program (including Contributions) may always
+be distributed subject to the version of the Agreement under which it was
+received. In addition, after a new version of the Agreement is published,
+Contributor may elect to distribute the Program (including its Contributions)
+under the new version. Except as expressly stated in Sections 2(a) and 2(b)
+above, Recipient receives no rights or licenses to the intellectual property of
+any Contributor under this Agreement, whether expressly, by implication,
+estoppel or otherwise. All rights in the Program not expressly granted under
+this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial in
+any resulting litigation.
diff --git a/mics.homeService_Test.txt b/mics.homeService_Test.txt
deleted file mode 100644
index e69de29..0000000
--- a/mics.homeService_Test.txt
+++ /dev/null
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..abaa5cf
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.eclipse.openk</groupId>
+    <artifactId>mics-home-service</artifactId>
+    <version>1.0.1</version>
+    <packaging>war</packaging>
+
+    <properties>
+        <gson.version>2.8.5</gson.version>
+        <log4j.version>1.2.17</log4j.version>
+        <commons-io.version>2.5</commons-io.version>
+        <junit.version>4.12</junit.version>
+        <easymock.version>3.4</easymock.version>
+        <powermock-api-easymock.version>1.6.6</powermock-api-easymock.version>
+        <powermock-module-junit4.version>1.7.3</powermock-module-junit4.version>
+        <servlet-api>3.1.0</servlet-api>
+        <jacoco-maven-plugin.version>0.7.9</jacoco-maven-plugin.version>
+        <sonar-maven-plugin.version>3.0.2</sonar-maven-plugin.version>
+        <swagger-maven-plugin-version>3.1.6</swagger-maven-plugin-version>
+        <swagger-jersey2-jaxrs>1.5.12</swagger-jersey2-jaxrs>
+        <httpclient-version>4.5.5</httpclient-version>
+        <jaxrs-ri-version>2.22.1</jaxrs-ri-version>
+        <jackson-annotations-version>2.5.4</jackson-annotations-version>
+        <maven-compiler-plugin-version>3.1</maven-compiler-plugin-version>
+        <maven-jar-plugin-version>3.0.2</maven-jar-plugin-version>
+        <maven-war-plugin-version>2.1</maven-war-plugin-version>
+        <maven-project-info-reports-plugin-version>2.7</maven-project-info-reports-plugin-version>
+        <asciidoctor-maven-plugin-version>1.5.3</asciidoctor-maven-plugin-version>
+        <asciidoctorj-pdf-version>1.5.0-alpha.11</asciidoctorj-pdf-version>
+        <jruby-complete-version>1.7.21</jruby-complete-version>
+        <asciidoctorj-version>1.5.4</asciidoctorj-version>
+        <asciidoctorj-diagram-version>1.5.4.1</asciidoctorj-diagram-version>
+
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.test.skip>false</maven.test.skip>
+        <skip.asciidoc>false</skip.asciidoc>
+    </properties>
+    <dependencies>
+
+
+        <dependency>
+            <groupId>org.glassfish.jersey.bundles</groupId>
+            <artifactId>jaxrs-ri</artifactId>
+            <version>${jaxrs-ri-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>${httpclient-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>${servlet-api}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>${gson.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>${log4j.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.sun.jmx</groupId>
+                    <artifactId>jmxri</artifactId>
+                </exclusion>
+
+                <exclusion>
+                    <groupId>com.sun.jdmk</groupId>
+                    <artifactId>jmxtools</artifactId>
+                </exclusion>
+
+                <exclusion>
+                    <groupId>javax.jms</groupId>
+                    <artifactId>jms</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>${commons-io.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.easymock</groupId>
+            <artifactId>easymock</artifactId>
+            <version>${easymock.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-api-easymock</artifactId>
+            <version>${powermock-api-easymock.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-module-junit4</artifactId>
+            <version>${powermock-module-junit4.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.jacoco</groupId>
+            <artifactId>jacoco-maven-plugin</artifactId>
+            <version>${jacoco-maven-plugin.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
+            <version>${jackson-annotations-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-jersey2-jaxrs</artifactId>
+            <version>${swagger-jersey2-jaxrs}</version>
+            <scope>compile</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.google.code.findbugs</groupId>
+                    <artifactId>annotations</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>${maven-compiler-plugin-version}</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>${maven-jar-plugin-version}</version>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+                        </manifest>
+                    </archive>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>${maven-war-plugin-version}</version>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+                        </manifest>
+                    </archive>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <version>${maven-project-info-reports-plugin-version}</version>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>sonar-maven-plugin</artifactId>
+                <version>${sonar-maven-plugin.version}</version>
+            </plugin>
+            <plugin>
+                <groupId>org.jacoco</groupId>
+                <artifactId>jacoco-maven-plugin</artifactId>
+                <version>${jacoco-maven-plugin.version}</version>
+                <configuration>
+                    <skip>${maven.test.skip}</skip>
+                    <output>file</output>
+                    <append>true</append>
+                    <excludes>
+                        <exclude>**/Globals.*</exclude>
+                        <exclude>**/dao/**/*Dao*.java</exclude>
+                        <exclude>**/controller/BackendController.java</exclude>
+                    </excludes>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>jacoco-initialize</id>
+                        <goals>
+                            <goal>prepare-agent</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>jacoco-site</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>report</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.asciidoctor</groupId>
+                <artifactId>asciidoctor-maven-plugin</artifactId>
+                <version>${asciidoctor-maven-plugin-version}</version>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.asciidoctor</groupId>
+                        <artifactId>asciidoctorj-pdf</artifactId>
+                        <version>${asciidoctorj-pdf-version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.jruby</groupId>
+                        <artifactId>jruby-complete</artifactId>
+                        <version>${jruby-complete-version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.asciidoctor</groupId>
+                        <artifactId>asciidoctorj</artifactId>
+                        <version>${asciidoctorj-version}</version>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.asciidoctor</groupId>
+                        <artifactId>asciidoctorj-diagram</artifactId>
+                        <version>${asciidoctorj-diagram-version}</version>
+                    </dependency>
+                </dependencies>
+                <configuration>
+                    <sourceDirectory>src/main/asciidoc</sourceDirectory>
+                    <requires>
+                        <require>asciidoctor-diagram</require>
+                    </requires>
+                    <attributes>
+                        <imagesoutdir>${project.build.directory}/generated-docs/images</imagesoutdir>
+                        <imagesDir>${project.build.directory}/generated-docs/images</imagesDir>
+                    </attributes>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>output-html</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>process-asciidoc</goal>
+                        </goals>
+                        <configuration>
+                            <skip>${skip.asciidoc}</skip>
+                            <imagesDir>${project.build.directory}/generated-docs/images</imagesDir>
+                            <requires>
+                                <require>asciidoctor-diagram</require>
+                            </requires>
+                            <sourceHighlighter>coderay</sourceHighlighter>
+                            <backend>html</backend>
+                            <doctype>book</doctype>
+                            <imagesDir>./images</imagesDir>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>com.github.kongchen</groupId>
+                <artifactId>swagger-maven-plugin</artifactId>
+                <version>${swagger-maven-plugin-version}</version>
+                <configuration>
+                    <skipSwaggerGeneration>false</skipSwaggerGeneration>
+                    <apiSources>
+                        <apiSource>
+                            <springmvc>false</springmvc>
+                            <locations>
+                                <location>org.eclipse.openk.mics.home</location>
+                            </locations>
+                            <schemes>
+                                <shema>http</shema>
+                            </schemes>
+                            <host>localhost:8080</host>
+                            <basePath>/mics/home</basePath>
+                            <info>
+                                <title>micsHomeService@openK - Backend REST-Service documentation</title>
+                                <version>v1</version>
+                                <description>This documentation contains the description of all used REST services.</description>
+                                <termsOfService>
+                                    .
+                                </termsOfService>
+                                <contact>
+                                    <email>nn@pta.de</email>
+                                    <name></name>
+                                </contact>
+                                <license>
+                                    <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
+                                    <name>Apache 2.0</name>
+                                </license>
+                            </info>
+                            <outputFormats>yaml</outputFormats>
+                            <templatePath>${basedir}/templates/strapdown.html.hbs</templatePath>
+                            <outputPath>target/generated-docs/swaggerInterfaceDocumentation.html</outputPath>
+                            <swaggerDirectory>target/generated-docs/</swaggerDirectory>
+                            <securityDefinitions>
+                                <securityDefinition>
+                                    <json>/securityDefinitions.json</json>
+                                </securityDefinition>
+                            </securityDefinitions>
+                        </apiSource>
+                    </apiSources>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+
+</project>
diff --git a/sonar-project.properties b/sonar-project.properties
new file mode 100644
index 0000000..5f15f9b
--- /dev/null
+++ b/sonar-project.properties
@@ -0,0 +1,16 @@
+# must be unique in a given SonarQube instance
+sonar.projectKey=openk.pta.de:plannedGridMeasures-home-service-BE
+# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
+sonar.projectName=plannedGridMeasures-home-service-BE
+sonar.projectVersion=0.0.1_Snapshot
+ 
+sonar.sourceEncoding=UTF-8
+sonar.sources=src/main
+sonar.language=java
+sonar.exclusions=**/common/Globals.java,**/rest/*.java,**/LoggerUtil.java,**/dao/*.java,**/dao/interfaces/*.java,**/controller/BackendController*.java,**/auth2/**/*.java,**/communication/RestServiceWrapper.java,**/controller/BackendController.java
+sonar.binaries=target/classes
+sonar.cpd.exclusions=**/model/*.java,**/api/*.java
+sonar.tests=src/test
+sonar.java.coveragePlugin=jacoco
+sonar.junit.reportPaths=target/surefire-reports
+sonar.jacoco.reportPath=target/jacoco.exec
diff --git a/src/main/asciidoc/architectureDocumentation/mics.home_architectureDocumentation.adoc b/src/main/asciidoc/architectureDocumentation/mics.home_architectureDocumentation.adoc
new file mode 100644
index 0000000..351776d
--- /dev/null
+++ b/src/main/asciidoc/architectureDocumentation/mics.home_architectureDocumentation.adoc
@@ -0,0 +1,272 @@
+////
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+////
+openKonsequenz - Architecture of the module "mics.home@openK"
+============================================================
+:Author: Frank Dietrich
+:Email: frank.dietrich@pta.de
+:Date: 2017-07-12
+:Revision: 1
+:icons:
+:source-highlighter: highlightjs
+:highlightjs-theme: solarized_dark
+
+This documentation bases on ARC42-Template (v7.0):
+
+*About arc42*
+
+arc42, the Template for documentation of software and system architecture.
+
+By Dr. Gernot Starke, Dr. Peter Hruschka and contributors.
+
+Template Revision: 7.0 EN (based on asciidoc), January 2017
+
+© We acknowledge that this document uses material from the arc 42 architecture template, http://www.arc42.de.
+Created by Dr. Peter Hruschka & Dr. Gernot Starke.
+
+<<<
+
+== Introduction and Goals
+
+=== Requirements Overview
+
+TODO
+
+=== Quality Goals
+
+The eLogbook represents a user module that bases on the architecture platform of openKONSEQUENZ. The main quality
+goals of the platform are:
+
+* *Flexibility* The reference platform shall grant that different systems and modules from different vendors/developers can interact and interoperate, and may be exchanged or recombined.
+* *Availability* All platform modules that are running on the platform can only be as available as the platform same for user modules that are based on platform modules.
+* *Maintainability* (and testability as part of maintainability)  The platform and its platform modules shall be used longer than 15 years.
+* *Integration performance* New implemented functionality of oK own modules and external modules shall be included fast / automatically.
+* *Security* The platform and its modules need to underly security-by-design
+
+The main quality goals of the user module eLogbook are:
+
+* *Functionality* The user module must fulfil the functional requirements mentioned in the section before
+* *Integration performance* The user module must be easy integratable in different production environments. * Modifiability (and testability as part of modifiability) Good documentation (i.e. code and architecture documentation) makes code changes easier and automatic tests facilitate rigorous verification. * Ergonomics The web interface must be realized according to oK-GUI-Styleguide.
+
+The following documents contain the quality goals in detail:
+
+* "Architecture Committee Handbook" v1.2 from 14-09-2016
+* "Quality Committee Handbook" v1.1 from 18-08-2016
+
+The architecture is based on the AC-Handbook. The
+quality demands are described in the QC-Handbook.
+Both specifications were fully complied with in the project, so that a high quality is given.
+
+The code quality regarding static code analysis and unit test code coverage on the backend side is ensured by the
+use of *sonarqube*. The rule set and the qualtity gate are defined by the default, the so called "sonar way".
+
+
+=== Stakeholders
+
+.Stakeholders
+[options="header,footer"]
+|=========================================================
+|Role/Name|Contact|Expectations
+|=========================================================
+
+== Architecture Constraints
+
+The main architecture constraints are:
+
+* *Public License* The module must be available under the “Eclipse Public License 1.0”.
+* *Availability* The source code of the module must be accessible to any interested person/company. Therefore the project is published at https://projects.eclipse.org/projects/technology.elogbook
+* *Standardization* The module must use standardized data structures (CIM) [if available] and the reference platform.
+
+=== Technical Constraints
+
+The following technical constraints are given:
+
+.Technical Contraints
+[options="header,footer"]
+|========================================================
+|Component|Constraints
+|Basis components of the reference platform|
+- Application Server Tomcat
+- JPA EclipseLink
+- Database PostgreSQL
+
+|Enterprise Service Bus|
+* ESB Talend
+* Communication via RESTful Webservices
+
+|Programming Language Frontend
+a|* Angular
+* Bootstrap
+* jQuery
+* REST/JSON Interfaces
+
+|GUI design
+a|* According to oK-GUI-Styleguide
+
+|Java QA environment|Sonarqube 5.6.6
+
+|Programming Language
+a|* Backend: Java 1.8
+* Frontend: Angular 4.0.0 (Javascript, Typescript, HTML5, CSS3)
+
+|IDE
+a|* Not restricted (Eclipse, IntelliJ, Microsoft Developer Studio, Microsoft Visual Code ...)
+
+|Build system
+a|* Backend: Maven
+* Frontend: NodeJS + Angular/cli
+
+|Libraries, Frameworks,Components
+a|* Used Libraries/Frameworks have to be compatible to the Eclipse Public License
+|Architecture Documentation|* According ARC42-Template
+|========================================================
+
+
+=== Technical Dependencies
+
+== System Scope and Context
+
+=== Business Context
+
+
+
+=== Technical Context
+
+The following aspects have to be taken into account for external communication of the module eLogbook:
+
+* As interface-technology RESTful web services are used.
+* Each external interface (interfaces between modules or external systems) has to be documented.
+* Dependencies of modules to services realized by other modules have to be specified and documented explicitly.
+* When CIM is not appropriate (like access management), other standards in their respective domain shall be taken into account first to avoid proprietary and inaccurate interfaces. The interface has also be documented in the overall openKONSEQUENZ interface profile and it should use REST & XML.
+
+The interfaces of the module eLogbook are described in the documentation *"elogbook_interfaceDocumentation"*.
+ 
+=== Solution Strategy
+
+== Building Block View
+
+=== Whitebox Overall System
+
+
+
+
+
+== Runtime View
+
+
+== Deployment View
+
+
+=== Deployment of the application components
+
+==== Deployment of the frontend
+
+==== Deployment of the backend
+
+
+==== Configuration of the system
+
+
+===== Configuration of the webserver
+
+There exists the file *context.xml* in the "conf" subdirectory (*<TOMCAT>/conf*) of the target apache tomcat installation.
+Add the following parameter and resource in order to access the correct backend configuration and to
+gain access to the database:
+
+.context.xml
+[source,xml]
+----
+[...]
+    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
+
+    <!--Manager pathname=""/>
+
+
+    <Parameter name="environment" override="false" value="Development"/-->
+
+    <Parameter name=""OK_MICS_HOME_ENVIRONMENT" override="false" value="Production"/>
+
+
+    <!-- Uncomment this to enable Comet connection tacking (provides events
+         on session expiration as well as webapp lifecycle) -->
+[...]
+----
+
+
+===== Configuration of the backend
+
+After the backend war file has been deployed and unpacked inside of the *<TOMCAT>/webapps* folder there are different
+ backend config files to be found in the folder *<TOMCAT>/webapps/elogbook/WEB-INF/classes*
+
+* backendConfigCustom.json
+* backendConfigDevLocal.json
+* backendConfigDevServer.json
+* backendConfigProduction.json
+
+The active configuration is chosen by parameter *OK_MICS_HOME_ENVIRONMENT* (see context.xml above).
+Possible values are:
+
+* *Custom* (for backendConfigCustom.json)
+* *DevLocal* (for backendConfigDevLocal.json)
+* *DevServer* (for backendConfigDevServer.json)
+* *Production* (for backendConfigProduction.json)
+
+After choosing an environment the corresponding json file has to be configured:
+
+.backendConfigXXX.json
+[source,json]
+----
+{
+  "micsDistributionCluster" : "elogbook.openK",
+  "micsCentralURL" : "http://localhost:9010/mics/central"
+}
+
+----
+* *micsDistributionCluster* - TODO
+* *micsCentralURL* - TODO
+
+
+
+=== CI- and CD-Components
+
+==== GIT-Repository
+
+
+=== Continuous Deployment
+
+
+== Design Decisions
+
+All architecture decisions based on the Architecture Committee Handbook. There are no deviations.
+
+== Risks and Technical Debts
+
+(Currently there aren't any known issues)
+
+<<<
+
+== Glossary
+
+.Abbreviations and glossary terms
+[options="header,footer"]
+|========================================================
+|Short|Long|German|Description
+|AC|Architecture Committee|Architektur-Komittee|Gives Framework and Constraints according to architecture for oK projects.
+|CNCU|Central Network Control Unit||
+|DAO|Data Access Objects||
+|DSO|Distribution System Operator|Verteilnetz-betreiber (VNB)|Manages the distribution network for energy, gas or water.
+|EPL|Eclipse Public License||Underlying license model for Eclipse projects like elogbook@openK
+|ESB|Enterprise Service Bus||Central instance for exchange of data to overcome point-to-point connections.
+|oK|openKONSEQUENZ|openKONSEQUENZ|Name of the consortium of DSOs
+|QC|Quality Committee|Qualitätskomitee|Gives framework and constraints according to quality for oK projects.
+|SCADA|Supervisory Control and Data Acquisition|Netzleitsystem|System, that allows DSOs view/control actual parameters of their power grid.
+|========================================================
+
diff --git a/src/main/asciidoc/howto/mics.home_howtoBuild.adoc b/src/main/asciidoc/howto/mics.home_howtoBuild.adoc
new file mode 100644
index 0000000..593a91d
--- /dev/null
+++ b/src/main/asciidoc/howto/mics.home_howtoBuild.adoc
@@ -0,0 +1,100 @@
+////
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+////
+= openKonsequenz - How to build the module "mics.home@openK"
+:Date: 2017-11-17
+:Revision: 1
+:icons:
+:source-highlighter: highlightjs
+:highlightjs-theme: solarized_dark
+
+<<<
+
+IMPORTANT: Please be sure that you have first *Portal (Auth n Auth)* installed and configured!
+
+== Requirements
+* Apache Tomcat 8.0.30
+* Node.js 6.10.0
+* Angular-CLI
+* Graphviz
+
+== How to build the Backend
+To build the backend you need to have installed Apache Maven and Java (look at `/deploy/`*get_started.txt*).
+
+=== Install and Configure Apache Tomcat
+Tomcat is an open-source Java Servlet Container and provides a "pure Java" HTTP web server environment in which Java code can run.
+
+* Download Tomcat version 8.0.30 from https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.30/bin/
+and extract it (apache-tomcat-8-0-30.zip).
+* Place the extracted folder on your C drive.
+* Configure Tomcat:
+** Configure the *context.xml* file. Copy the *<Resource … >* block from the project file `deploy/conf/`*context.xml*
+and paste it in the `<tomcat>/conf/`*context.xml* in the *<Context>* block.
+
+ <Parameter name="OK_MICS_HOME_ENVIRONMENT" override="false" value="DevLocal"/>
+
+** Dont forget to save it.
+
+
+TIP: For more informations check *Deployment View* Chapter in *http://87.128.212.254:8880/elogbookFE_ADoc/elogbook_architectureDocumentation.html[elogbook_architectureDocumentation]*.
+
+** Tomcat also needs the database driver to be placed in `<tomcat>/lib`. Find it in the project file `deploy/lib/`*postgresql-xxx.jar*.
+
+
+=== Install Graphviz
+Graphviz is open source graph visualization software. You need this software because of auto-generated graphics in the documentations.
+
+* Download and install Graphviz from http://www.graphviz.org/Download_windows.php
+* If not, set the PATH variable
+
+ Name of variable: GRAPHVIZ_DOT
+ Value of variable: <GRAPHVIZ_DIR>\bin\dot.exe
+
+
+== How to build the Frontend
+
+=== Install Node.js
+
+Node.js is an open-source, cross-platform JavaScript run-time environment for executing JavaScript (also Typescript which is a strongly typed form of JavaScript) code server-side.
+
+* Download Node.js 6.10.0 from https://nodejs.org/download/release/v6.10.0/ by clicking on a xxx.msi image for windows.
+* Run the downloaded Node.js .msi Installer - including accepting the license, selecting the destination, and authenticating for the install.
+This requires Administrator privileges, and you may need to authenticate
+* To ensure Node.js has been installed, run the following in your terminal - you should get something like v6.10.0
+
+[source,command]
+----
+    $ node -v
+----
+{blank}
+
+=== Update the npm Angular-CLI client
+This package manager comes bundled with Node.js and its good to have the latest version.
+
+* Open a command line and navigate to the root folder of the frontend project
+* Run the following commands (the version is defined in the package.json file):
+
+[source,command]
+----
+    $ npm install --save-dev @angular/cli
+----
+{blank}
+
+[source,command]
+----
+    $ npm install
+----
+{blank}
+
+TIP: Next Step -> Read the *mics.home_howtoRun* file!
+
+
+
diff --git a/src/main/asciidoc/howto/mics.home_howtoRun.adoc b/src/main/asciidoc/howto/mics.home_howtoRun.adoc
new file mode 100644
index 0000000..a18cd49
--- /dev/null
+++ b/src/main/asciidoc/howto/mics.home_howtoRun.adoc
@@ -0,0 +1,82 @@
+////
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+////
+= openKonsequenz - How to run the module "mics.home@openK"
+:Date: 2017-11-17
+:Revision: 1
+:icons:
+:source-highlighter: highlightjs
+:highlightjs-theme: solarized_dark
+
+<<<
+
+IMPORTANT: Please be sure that you have first *Portal (Auth n Auth)* installed and configured!
+
+== Requirements
+* Browser (Chrome or IE11 suggested)
+
+== Prerequisites
+
+* *To see this application running you have to run Portal application too.* The reason is the authentication, which happened in the Portal login phase.
+
+* A developing and administrating software for databases
+
+
+== How to run the Backend
+To run the backend you need to have installed and configured Apache Tomcat (look at *mics.home_howtoBuild*).
+
+=== Set up and start Apache Tomcat
+Tomcat needs the Web Application Archive (war) file, which is produced by building the maven project, to run the application.
+
+* Copy the *mics-home-app.war* file from the project file `/target` in the `<tomcat>/webapps` file. If there is a folder named *betriebstagebuch*, delete it before.
+* Navigate to `C:\apache-tomcat-8.0.30\bin` and start Tomcat by clicking on *startup.bat*.
+* Tomcat's default port is *8080*.
+
+[source,text]
+----
+If 8080 port is already in use, you have to change tomcat's port as follows:
+- Go to <tomcat>/conf folder
+- Open server.xml file and search for "Connector port"
+- Replace "8080" by your port number (for example 8181)
+- Restart tomcat server (in the same folder which startup.bat is located, you can also find a shutdown.bat file).
+----
+{blank}
+
+IMPORTANT: If you change the port number you have also adapt the port in the
+frontend project: File "<Frontend-Path>/proxy.conf.json"
+
+== How to run the Frontend
+To run the frontend project you need to have installed and updated Node.js and npm Angular-CLI.
+
+=== Compile the Frontend
+
+To compile say Angular-CLI to start.
+
+* Open a command line and navigate to the root folder of the frontend project
+* Run the command
+
+[source,command]
+----
+   $  npm start
+----
+{blank}
+
+* Open a browser and type:
+
+[source,http]
+----
+    http://localhost:4200
+----
+{blank}
+
+
+
+
diff --git a/src/main/asciidoc/images/icons/caution.png b/src/main/asciidoc/images/icons/caution.png
new file mode 100644
index 0000000..9a8c515
--- /dev/null
+++ b/src/main/asciidoc/images/icons/caution.png
Binary files differ
diff --git a/src/main/asciidoc/images/icons/important.png b/src/main/asciidoc/images/icons/important.png
new file mode 100644
index 0000000..be685cc
--- /dev/null
+++ b/src/main/asciidoc/images/icons/important.png
Binary files differ
diff --git a/src/main/asciidoc/images/icons/note.png b/src/main/asciidoc/images/icons/note.png
new file mode 100644
index 0000000..7c1f3e2
--- /dev/null
+++ b/src/main/asciidoc/images/icons/note.png
Binary files differ
diff --git a/src/main/asciidoc/images/icons/tip.png b/src/main/asciidoc/images/icons/tip.png
new file mode 100644
index 0000000..f087c73
--- /dev/null
+++ b/src/main/asciidoc/images/icons/tip.png
Binary files differ
diff --git a/src/main/asciidoc/images/icons/warning.png b/src/main/asciidoc/images/icons/warning.png
new file mode 100644
index 0000000..d41edb9
--- /dev/null
+++ b/src/main/asciidoc/images/icons/warning.png
Binary files differ
diff --git a/src/main/asciidoc/interfaceDocumentation/elogbook_interfaceDocumentation.adoc b/src/main/asciidoc/interfaceDocumentation/elogbook_interfaceDocumentation.adoc
new file mode 100644
index 0000000..e0913bc
--- /dev/null
+++ b/src/main/asciidoc/interfaceDocumentation/elogbook_interfaceDocumentation.adoc
@@ -0,0 +1,2022 @@
+////
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+*
+*     http://www.eclipse.org/legal/epl-v10.html
+*
+******************************************************************************
+////
+eLogbook@openK - Backend REST-Service documentation
+===================================================
+:Author: Frank Dietrich
+:Email: frank.dietrich@pta.de
+:Date: 2017-07-12
+:Revision: 1
+:icons:
+:source-highlighter: highlightjs
+:highlightjs-theme: solarized_dark
+
+
+== Base-URL
+[source,text]
+----
+http://<host>:<port>/<name-of-war>/rest/beservice
+----
+{blank}
+
+== Common Features
+All services may return the following http status codes:
+
+.Http-Status-Codes
+[options="header,footer"]
+|=========================================================
+|Code|Description|Usage within the application
+|200|OK|-
+|400|Bad Request|The structure of the request (for example a JSON within a post request) is not correct
+|401|Unauthorized|Login-credentials are wrong or there is an invalid session token
+|404|Not found|A resource cannot be found (for example trying to get an entity with an invalid id)
+|423|Locked|A resource is locked, because another user has blocked it
+|500|Internal Server Error|An unexpected error occurred
+|=========================================================
+
+If there is a special service behavior regarding the returned http status code, then it will be explained within the service description.
+
+== Protection
+There are two components that are involved, for the authentication of the services:
+
+ . HTTP-Header-Parameter: Authorization
+
+The “login”-services provides both tokens, when called with valid user-credentials. The client of the service has to pass over a valid Authorization, which belongs to Cookie. Other the protected services will come back with a 401-Unauthorized HTTP-Status code.
+
+The protection of a service can be
+
+* None  (The service is unprotected)
+* Normal (The service is available for all logged in users)
+* High (The service is only available for administrators)
+
+The backend server itself determines the secure level of the session. All services that have a
+protection which is not “None” need to provide “Authorization” and “COOKIESESSION-TOKEN”!
+
+== General Services
+=== Receive Version Information
+This service returns the current version of the backend implementation and the version of the database structure.
+
+*URL:* /versionInfo
+
+*Method:* GET
+
+*Request-Headers*:
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+{
+    "dbVersion": "0.1.1_Snapshot",
+    "backendVersion": "0.1.1-Snapshot"
+}
+----
+{blank}
+
+*Protection*: none
+
+*Remarks*:
+
+=== Login
+This service receives login credentials in order to perform the authentication. If the login succeeds,
+it provides the session-token and a session cookie, used for accessing other services later on.
+
+*URL:* /login
+
+*Method:* POST
+
+*Request-Headers*:
+
+* Authorization (Optional) – Existing JWT token
+
+*Request-Body*:
+[source,json]
+----
+{
+  "userName": "Mustermann",
+  "password": "clearpassword"
+}
+----
+{blank}
+
+*Produces*: application/json
+
+*Response-Headers*:
+
+* Authorization - JWT token
+* COOKIESESSION-TOKEN - session cookie
+
+*Response*:
+[source,json]
+----
+{
+    "id": 1,
+    "selected": false,
+    "username": "Mustermann",
+    "name": "Max Mustermann",
+    "specialUser": false
+}
+----
+{blank}
+
+*Protection*: none
+
+*Remarks*: The response headers are only returned when the login was successful.
+
+
+=== Logout
+This services kills the server session belonging to the the given session token.
+
+*URL:* /logout
+
+*Method:* POST
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Produces*: application/json
+
+*Response*:
+
+*Protection*: normal
+
+*Remarks*:
+
+=== Observer Control
+This service checks if the authenticated session user is an observer(he has no responsibilities).
+
+*URL:* /isObserver
+
+*Method:* GET
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+{
+    true
+}
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+== Master Data Services
+
+=== Receive Notification Statuses
+This service returns an array of available notification statuses.
+
+*URL:* /notificationStatuses
+
+*Method:* GET
+
+*Request-Headers*:
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+    {
+        "id": 1,
+        "name": "offen"
+    },
+    {
+        "id": 2,
+        "name": "in Arbeit"
+    },
+    {
+        "id": 3,
+        "name": "erledigt"
+    },
+    {
+        "id": 4,
+        "name": "geschlossen"
+    }
+]
+----
+{blank}
+
+*Protection*: none
+
+*Remarks*:
+
+=== Receive Branches
+This service returns an array of available notification statuses.
+
+*URL:* /branches
+
+*Method:* GET
+
+*Request-Headers*:
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+    {
+        "id": 1,
+        "name": "S",
+        "description": "Strom"
+
+    },
+    {
+        "id": 2,
+        "name": "G",
+        "description": "Gas"
+
+    },
+     ...
+]
+----
+{blank}
+
+*Protection*: none
+
+*Remarks*:
+
+=== Receive GridTerritories
+This service returns an array of available grid territories.
+
+*URL:* /gridTerritories
+
+*Method:* GET
+
+*Request-Headers*:
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+    {
+        "id": 1,
+        "name": "MA",
+        "description": "Mannheim",
+        "fk_ref_master": 1
+
+    },
+    {
+        "id": 2,
+        "name": "OF",
+        "description": "Offenbach",
+        "fk_ref_master": 1
+
+    },
+    ...
+]
+----
+{blank}
+
+*Protection*: none
+
+*Remarks*:
+
+== Application Services
+=== Receive Responsibilities
+This service returns the responsibilities for the authenticated session user.
+
+*URL:* /currentResponsibilities
+
+*Method:* GET
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+    {
+        "gridTerritoryDescription": "Mannheim",
+        "responsibilityList": [
+            {
+                "id": 1,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "Otto",
+                "branchName": "S",
+                "isActive": true
+            },
+            {
+                "id": 2,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "Otto",
+                "branchName": "G",
+                "isActive": true
+            }
+        ]
+    },
+    {
+        "gridTerritoryDescription": "Offenbach",
+        "responsibilityList": [
+            {
+                "id": 4,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "Otto",
+                "branchName": "G",
+                "isActive": true
+            }
+        ]
+    }
+]
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+=== Receive Planned Responsibilities
+This service returns the planned responsibilities for the authenticated session user.
+
+*URL:* /plannedResponsibilities
+
+*Method:* GET
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+    {
+        "gridTerritoryDescription": "Mannheim",
+        "responsibilityList": [
+            {
+                "id": 1,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "Otto",
+                "branchName": "S",
+                "isActive": true
+            },
+            {
+                "id": 2,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "Otto",
+                "branchName": "G",
+                "isActive": true
+            }
+        ]
+    },
+    {
+        "gridTerritoryDescription": "Offenbach",
+        "responsibilityList": [
+            {
+                "id": 4,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "Otto",
+                "branchName": "G",
+                "isActive": true
+            }
+        ]
+    }
+]
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+=== Receive All Responsibilities
+This service returns all the responsibilities.
+
+*URL:* /allResponsibilities
+
+*Method:* GET
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+    {
+        "gridTerritoryDescription": "Offenbach",
+        "responsibilityList": [
+            {
+                "id": 5,
+                "responsibleUser": "hugo",
+                "branchName": "F",
+                "isActive": true
+            },
+            {
+                "id": 4,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "otto",
+                "branchName": "G",
+                "isActive": true
+            },
+            {
+                "id": 7,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "otto",
+                "branchName": "S",
+                "isActive": true
+            },
+            {
+                "id": 8,
+                "responsibleUser": "hugo",
+                "branchName": "W",
+                "isActive": true
+            }
+        ]
+    },
+    {
+        "gridTerritoryDescription": "Mannheim",
+        "responsibilityList": [
+            {
+                "id": 1,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "hugo",
+                "branchName": "S",
+                "isActive": true
+            },
+            {
+                "id": 3,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "otto",
+                "branchName": "F",
+                "isActive": true
+            },
+            {
+                "id": 6,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "hugo",
+                "branchName": "W",
+                "isActive": true
+            },
+            {
+                "id": 2,
+                "responsibleUser": "hugo",
+                "branchName": "G",
+                "isActive": true
+            }
+        ]
+    }
+]
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+=== Receive Historical Responsibilities
+This service returns the responsibility history of a specific-given version.
+
+*URL:* /historicalResponsibilities/{transactionId}
+
+*Method:* GET
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+    {
+        "id": 2,
+        "responsibleUser": "hugo",
+        "formerResponsibleUser": "max",
+        "transferDate": "2017-08-04T08:53:27.502Z",
+        "transactionId": 1,
+        "createDate": "2017-06-19T12:34:35.881Z",
+        "createUser": "admin",
+        "modDate": "2017-08-04T08:53:27.502Z",
+        "modUser": "hugo",
+        "refGridTerritory": {
+            "id": 1,
+            "fkRefMaster": 1,
+            "description": "Mannheim",
+            "name": "MA"
+        },
+        "refBranch": {
+            "id": 3,
+            "name": "F",
+            "description": "Fernwärme"
+        }
+    },
+    {
+        "id": 3,
+        "responsibleUser": "hugo",
+        "formerResponsibleUser": "admin",
+        "transferDate": "2017-08-04T08:53:27.502Z",
+        "transactionId": 1,
+        "createDate": "2017-06-19T11:14:38.525Z",
+        "createUser": "Otto",
+        "modDate": "2017-08-04T08:53:27.502Z",
+        "modUser": "hugo",
+        "refGridTerritory": {
+            "id": 2,
+            "fkRefMaster": 2,
+            "description": "Offenbach",
+            "name": "OF"
+        },
+        "refBranch": {
+            "id": 3,
+            "name": "F",
+            "description": "Fernwärme"
+        }
+    },
+    {
+        "id": 4,
+        "responsibleUser": "hugo",
+        "formerResponsibleUser": "admin",
+        "transferDate": "2017-08-04T08:53:27.502Z",
+        "transactionId": 1,
+        "createDate": "2017-06-19T11:14:38.532Z",
+        "createUser": "Otto",
+        "modDate": "2017-08-04T08:53:27.502Z",
+        "modUser": "hugo",
+        "refGridTerritory": {
+            "id": 1,
+            "fkRefMaster": 1,
+            "description": "Mannheim",
+            "name": "MA"
+        },
+        "refBranch": {
+            "id": 4,
+            "name": "W",
+            "description": "Wasser"
+        }
+    },
+    {
+        "id": 5,
+        "responsibleUser": "hugo",
+        "formerResponsibleUser": "otto",
+        "transferDate": "2017-08-04T08:53:27.502Z",
+        "transactionId": 1,
+        "createDate": "2017-07-24T11:13:00.000Z",
+        "createUser": "admin",
+        "modDate": "2017-08-04T08:53:27.502Z",
+        "modUser": "hugo",
+        "refGridTerritory": {
+            "id": 2,
+            "fkRefMaster": 2,
+            "description": "Offenbach",
+            "name": "OF"
+        },
+        "refBranch": {
+            "id": 4,
+            "name": "W",
+            "description": "Wasser"
+        }
+    }
+]
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+=== Create Notification
+This service creates a new notification in the database. It returns the same entity which the Ids and the version provided by the database.
+
+*URL:* /notifications/create
+
+*Method:* PUT
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Consumes*: application/json
+
+*Request*:
+[source,json]
+----
+{
+  "status": "offen",
+  "notificationText": null,
+  "freeText": "",
+  "freeTextExtended": "extended",
+  "responsibilityForwarding": "",
+  "responsibilityControlPoint": "Abteilung 4",
+  "reminderDate": null,
+  "futureDate": null,
+  "createdDate": "2017-03-09T15:27:17",
+  "expectedFinishDate": null,
+  "finishedDate": null,
+  "creator": "MasterAndCreator",
+  "modDate": "2017-03-09T15:27:17",
+  "modUser": "_fd",
+  "fkRefBranch": 1,
+  "fkRefNotificationStatus": 2,
+  "fkRefGridTerritories": 2
+}
+----
+{blank}
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+{
+    "id": 27,
+    "incidentId": 18,
+    "version": 1,
+    "selected": false,
+    "status": "in Arbeit",
+    "notificationText": "Meldung X:Y",
+    "freeText": "",
+    "freeTextExtended": "extended",
+    "responsibilityForwarding": "",
+    "responsibilityControlPoint": "Abteilung 4",
+    "createdDate": "2017-03-09T15:27:17",
+    "creator": "MasterAndCreator",
+    "modDate": "2017-03-09T15:27:17",
+    "modUser": "_fd",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 2,
+	"fkRefGridTerritories": 1
+}
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+=== Update Notification
+This service stores a modified notification by inserting a new version of it into the database.  It returns the same
+entity with a new version number and the user modifications.
+
+*URL:* /notifications/update
+
+*Method:* POST
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Consumes*: application/json
+
+*Request*:
+[source,json]
+----
+{
+    "id": 27,
+    "incidentId": 18,
+    "version": 1,
+    "selected": false,
+    "status": "in Arbeit",
+    "notificationText": "Meldung X:Y",
+    "freeText": " Meldung ergänzt um diesen Text ",
+    "freeTextExtended": "extended",
+    "responsibilityForwarding": "",
+    "responsibilityControlPoint": "Abteilung 4",
+    "createdDate": "2017-03-09T15:27:17",
+    "creator": "MasterAndCreator",
+    "modDate": "2017-03-09T15:27:17",
+    "modUser": "_fd",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 2
+}
+----
+{blank}
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+{
+    "id": 31,
+    "incidentId": 18,
+    "version": 2,
+    "selected": false,
+    "status": "in Arbeit",
+    "notificationText": "Meldung X:Y",
+    "freeText": "Meldung ergänzt um diesen Text",
+    "freeTextExtended": "extended",
+    "responsibilityForwarding": "",
+    "responsibilityControlPoint": "Abteilung 4",
+    "createdDate": "2017-03-09T15:27:17",
+    "creator": "MasterAndCreator",
+    "modDate": "2017-03-09T15:27:17",
+    "modUser": "_fd",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 2
+}
+----
+{blank}
+
+*Throws*: BtbLocked (Http StatusCode: 423) : Is thrown if the notification status is locked and the service is called
+
+*Protection*: normal
+
+*Remarks*:
+
+=== Get Notification
+This retrieves a notification from the database.
+
+*URL:* /notification/{id}
+
+*Method:* GET
+
+*Path-Parameter*: id
+
+* The primary key of the notification
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+{
+    "id": 27,
+    "incidentId": 18,
+    "version": 2,
+    "selected": false,
+    "status": "in Arbeit",
+    "notificationText": "Meldung X:Y",
+    "freeText": "Meldung ergänzt um diesen Text",
+    "freeTextExtended": "extended",
+    "responsibilityForwarding": "",
+    "responsibilityControlPoint": "Abteilung 4",
+    "createdDate": "2017-03-09T15:27:17",
+    "creator": "MasterAndCreator",
+    "modDate": "2017-03-09T15:27:17",
+    "modUser": "_fd",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 2
+}
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+=== Get Notifications
+This service retrieves a list of notifications from the database. The selection is based on the given filter-object.
+With no filter value specified, the collection returned contains all active notifications. With filter value(s) set, only
+notifications matching the filter values are returned.
+
+The following list explains the available filter values:
+
+* The filter-values “dateFrom” and “dateTo” are compared against the “begin_date” of the notifications (closed interval).
+* The filter values in "responsibilityFilterList" are compared against the id of the notifications.
+* If the boolean filter value "historicalFlag" is "true" historical notifcations are returned.
+* If the boolean filter value is null or "false", active notifications are returned.
+* With historicalFlag set, the corresponding "shiftChangeTransactionId must also be set to obtain a valid result. In this
+case, other filter values do not make sense and are not evaluated.
+
+*URL:* /notifications/{listType}
+
+*Method:* POST
+
+*Path-Parameters*:
+
+* listType - The type of the list for which the data will be loaded: "PAST", "OPEN", "FUTURE"
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+
+*Consumes*: application/json
+
+*Request*:
+[source,json]
+----
+{
+  "dateFrom": "2017-03-09T15:27:17.666Z",
+  "dateTo": "2017-04-09T15:27:17.666Z",
+    "responsibilityFilterList": [
+                                    1, 6
+                                ]
+}
+----
+{blank}
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+  {
+    "id": 1161,
+    "incidentId": 337,
+    "version": 10,
+    "selected": false,
+    "status": "in Arbeit",
+    "beginDate": "2017-05-24T07:11:00.000Z",
+    "notificationText": "UW4 Wartungsarbeiten LSA",
+    "freeText": "Hr. xxx vor Ort",
+    "freeTextExtended": "Hr.yyy ist auch vor Ort",
+    "responsibilityForwarding": "Müller",
+    "responsibilityControlPoint": "Administrator",
+    "expectedFinishDate": "2017-05-24T14:00:00.000Z",
+    "createUser": "admin",
+    "createDate": "2017-05-24T07:03:54.429Z",
+    "modDate": "2017-08-18T14:15:10.355Z",
+    "modUser": "admin",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 2,
+    "fkRefGridTerritory": 1,
+    "adminFlag": false
+  },
+  {
+    "id": 601,
+    "incidentId": 566,
+    "version": 8,
+    "selected": false,
+    "status": "erledigt",
+    "beginDate": "2017-06-17T11:37:00.000Z",
+    "notificationText": "FD #5",
+    "freeText": "fd",
+    "freeTextExtended": "",
+    "responsibilityControlPoint": "Administrator",
+    "expectedFinishDate": "2017-06-19T23:01:00.000Z",
+    "finishedDate": "2017-06-19T13:27:11.333Z",
+    "createUser": "admin",
+    "createDate": "2017-06-19T11:38:17.369Z",
+    "modDate": "2017-06-19T13:27:12.598Z",
+    "modUser": "admin",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 3,
+    "fkRefGridTerritory": 1,
+    "adminFlag": false
+  }
+]
+----
+{blank}
+
+*Request for historical notifications*:
+[source,json]
+----
+{
+ "historicalFlag": true,
+ "shiftChangeTransactionId": 33
+ }
+----
+{blank}
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+  {
+    "id": 1191,
+    "incidentId": 750,
+    "version": 11,
+    "selected": false,
+    "status": "erledigt",
+    "beginDate": "2017-07-25T22:00:00.000Z",
+    "notificationText": "c--d ddddddd",
+    "responsibilityControlPoint": "Max Mustermann",
+    "expectedFinishDate": "2017-07-27T22:00:00.000Z",
+    "finishedDate": "2017-07-31T07:24:43.959Z",
+    "createUser": "admin",
+    "createDate": "2017-07-24T12:20:13.232Z",
+    "modDate": "2017-08-21T11:24:32.855Z",
+    "modUser": "max",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 3,
+    "fkRefGridTerritory": 2,
+    "adminFlag": false
+  },
+  {
+    "id": 994,
+    "incidentId": 825,
+    "version": 6,
+    "selected": false,
+    "status": "erledigt",
+    "beginDate": "2017-08-07T09:41:12.082Z",
+    "notificationText": "dddd",
+    "freeText": "53w5",
+    "freeTextExtended": "terterwrew",
+    "responsibilityControlPoint": "Administrator",
+    "finishedDate": "2017-08-08T10:19:36.001Z",
+    "createUser": "admin",
+    "createDate": "2017-08-07T09:41:55.048Z",
+    "modDate": "2017-08-08T10:19:37.454Z",
+    "modUser": "admin",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 3,
+    "fkRefGridTerritory": 2,
+    "adminFlag": false
+  }
+]
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+
+
+=== Get Notifications by Incident-ID
+This service retrieves a list of notifications from the database. All the returned
+notifications are all versions of the given incident-ID. The sort-order is version descending.
+
+
+*URL:* /notificationsByIncident/{incidentId}
+
+*Method:* GET
+
+*Path-Parameters*:
+
+* incidentId - The incident-ID of all the versions to be returned
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+  {
+    "id": 199,
+    "incidentId": 2,
+    "version": 3,
+    "selected": false,
+    "status": "offen",
+    "beginDate": "2017-05-14T12:30:00",
+    "notificationText": "sfg",
+    "freeText": "freetext11",
+    "freeTextExtended": "freetext_extended",
+    "reminderDate": "2017-05-19T18:05:00",
+    "createUser": "Creator",
+    "createDate": "2017-05-15T14:30:09",
+    "modDate": "2017-05-18T14:21:48",
+    "modUser": "admin",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 1
+  },
+  {
+    "id": 171,
+    "incidentId": 2,
+    "version": 2,
+    "selected": false,
+    "status": "offen",
+    "beginDate": "2017-05-14T12:30:00",
+    "notificationText": "sfg",
+    "freeText": "freetext11_old",
+    "freeTextExtended": "freetext_extended",
+    "reminderDate": "2017-05-19T18:05:00",
+    "createUser": "Creator",
+    "createDate": "2017-05-15T14:30:09",
+    "modDate": "2017-05-18T13:21:48",
+    "modUser": "admin",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 1
+  },
+  {
+    "id": 101,
+    "incidentId": 2,
+    "version": 1,
+    "selected": false,
+    "status": "offen",
+    "beginDate": "2017-05-14T12:30:00",
+    "notificationText": "sfg",
+    "freeText": "freetext11_old_older",
+    "freeTextExtended": "freetext_extended",
+    "reminderDate": "2017-05-19T18:05:00",
+    "createUser": "Creator",
+    "createDate": "2017-05-15T14:30:09",
+    "modDate": "2017-05-18T12:21:48",
+    "modUser": "admin",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 1
+  },
+]
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+
+=== Get Notifications With Reminder
+This service retrieves a list of notifications from the database. The selection is based on the given filter-object.
+With no filter value specified, the collection returned contains all active open and in progress notifications. With filter value(s) set, only
+notifications matching the filter values are returned.
+
+The following list explains the available filter values:
+
+* The filter-value “reminderDate” is compared against the “reminder_date” of the notifications.
+* The filter values in "responsibilityFilterList" are compared against the id of the notifications.
+
+*URL:* /currentReminders
+
+*Method:* POST
+
+*Path-Parameter*: none
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Consumes*: application/json
+
+*Request*:
+[source,json]
+----
+{
+    "reminderDate":"2017-08-30T09:00:23.538Z",
+    "responsibilityFilterList":
+                                [
+                                    1, 2, 3
+                                ]
+}
+----
+{blank}
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+     {
+          "id": 1218,
+          "incidentId": 572,
+          "version": 9,
+          "selected": false,
+          "status": "offen",
+          "beginDate": "2017-06-19T11:50:19.096Z",
+          "notificationText": "FD #9",
+          "freeText": "fd_",
+          "freeTextExtended": "",
+          "responsibilityControlPoint": "Administrator",
+          "reminderDate": "2017-08-22T22:00:00.000Z",
+          "createUser": "admin",
+          "createDate": "2017-06-19T11:50:37.391Z",
+          "modDate": "2017-08-25T08:57:51.890Z",
+          "modUser": "admin",
+          "fkRefBranch": 1,
+          "fkRefNotificationStatus": 1,
+          "fkRefGridTerritory": 1,
+          "adminFlag": false
+     },
+     {
+          "id": 1222,
+          "incidentId": 881,
+          "version": 3,
+          "selected": false,
+          "status": "offen",
+          "beginDate": "2017-08-07T14:48:46.873Z",
+          "notificationText": "ich bin eine anweisung mit dem admin flag",
+          "freeText": "sfas",
+          "freeTextExtended": "safas",
+          "responsibilityControlPoint": "Administrator",
+          "reminderDate": "2017-08-29T22:00:00.000Z",
+          "createUser": "admin",
+          "createDate": "2017-08-07T14:49:09.598Z",
+          "modDate": "2017-08-30T07:47:45.021Z",
+          "modUser": "admin",
+          "fkRefNotificationStatus": 1,
+          "adminFlag": true
+     }
+]
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+
+=== Get Historical Shift-Change List
+This service retrieves a list of documented shift changes (who transferred/took the shift including the timestamp)
+where the list can be narrowed by start date and end date.
+
+
+*URL:* /shiftChangeList
+
+*Method:* POST
+
+*Path-Parameters*: none
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Consumes*: application/json
+
+*Request*:
+[source,json]
+----
+{
+  "transferDateFrom": "2017-06-01T15:27:17.666Z",
+  "transferDateTo": "2017-08-09T15:27:17.666Z",
+}
+----
+{blank}
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+{
+  "startDate": "2017-06-01T15:27:17.666Z",
+  "endDate": "2017-08-09T15:27:17.666Z",
+  "historicalResponsibilities": [
+    {
+      "id": 2,
+      "responsibleUser": "hugo",
+      "formerResponsibleUser": "max",
+      "transferDate": "2017-08-04T08:53:27.502Z",
+      "transactionId": 1,
+      "createDate": "2017-06-19T12:34:35.881Z",
+      "createUser": "admin",
+      "modDate": "2017-08-04T08:53:27.502Z",
+      "modUser": "hugo",
+      "refGridTerritory": {
+        "id": 1,
+        "fkRefMaster": 1,
+        "description": "Mannheim",
+        "name": "MA"
+      },
+      "refBranch": {
+        "id": 3,
+        "name": "F",
+        "description": "Fernwärme"
+      }
+    },
+    {
+      "id": 10,
+      "responsibleUser": "max",
+      "formerResponsibleUser": "admin",
+      "transferDate": "2017-08-08T13:50:10.862Z",
+      "transactionId": 3,
+      "createDate": "2017-06-19T12:34:35.881Z",
+      "createUser": "admin",
+      "modDate": "2017-08-08T13:50:10.861Z",
+      "modUser": "max",
+      "refGridTerritory": {
+        "id": 1,
+        "fkRefMaster": 1,
+        "description": "Mannheim",
+        "name": "MA"
+      },
+      "refBranch": {
+        "id": 3,
+        "name": "F",
+        "description": "Fernwärme"
+      }
+    },
+    {
+      "id": 11,
+      "responsibleUser": "max",
+      "formerResponsibleUser": "admin",
+      "transferDate": "2017-08-08T13:50:10.862Z",
+      "transactionId": 3,
+      "createDate": "2017-07-23T22:00:00.000Z",
+      "createUser": "max",
+      "modDate": "2017-08-08T13:50:10.861Z",
+      "modUser": "max",
+      "refGridTerritory": {
+        "id": 3,
+        "fkRefMaster": 3,
+        "description": "Darmstadt",
+        "name": "DA"
+      },
+      "refBranch": {
+        "id": 1,
+        "name": "S",
+        "description": "Strom"
+      }
+    }
+]
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+=== Receive Users
+This service returns an array of all users.
+
+*URL:* /users
+
+*Method:* GET
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+    {
+        "id": 1,
+        "selected": false,
+        "username": "Mustermann",
+        "password": "Mustermann",
+        "name": "Max Mustermann",
+        "specialUser": false
+    },
+    {
+        "id": 2,
+        "selected": false,
+        "username": "admin",
+        "password": "admin",
+        "name": "Administrator",
+        "specialUser": true
+    },
+    {
+        "id": 3,
+        "selected": false,
+        "username": "Otto",
+        "password": "Otto",
+        "name": "Otto Normalverbraucher",
+        "specialUser": false
+    }
+]
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+=== Plan Responsibility-Transfer
+This service prepares the responsibilities-transfer to another user. It returns an OK status
+in case of success. If the responsibilities of the current user have changed in the meantime, the updated data is returned.
+
+*URL:* /planResponsibilities
+
+*Method:* POST
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Consumes*: application/json
+
+*Request*:
+[source,json]
+----
+[
+    {
+        "gridTerritoryDescription": "Mannheim",
+        "responsibilityList": [
+            {
+                "id": 1,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "Otto",
+                "branchName": "S",
+                "isActive": true
+            },
+            {
+                "id": 2,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "Otto",
+                "branchName": "G",
+                "isActive": true
+            }
+        ]
+    },
+    {
+        "gridTerritoryDescription": "Offenbach",
+        "responsibilityList": [
+            {
+                "id": 4,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "Otto",
+                "branchName": "G",
+                "isActive": true
+            }
+        ]
+    }
+]
+----
+{blank}
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+{
+    "ret": "OK"
+}
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+=== Confirm Responsibility-Transfer
+This service is used to confirm the planned responsibilities for the authenticated session user. It returns an OK status in case of success. If the
+responsibilities of the current user have changed in the meantime, the updated data is returned.
+
+*URL:* /confirmResponsibilities
+
+*Method:* POST
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Consumes*: application/json
+
+*Request*:
+[source,json]
+----
+[
+    {
+        "gridTerritoryDescription": "Mannheim",
+        "responsibilityList": [
+            {
+                "id": 1,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "Otto",
+                "branchName": "S",
+                "isActive": true
+            },
+            {
+                "id": 2,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "Otto",
+                "branchName": "G",
+                "isActive": true
+            }
+        ]
+    },
+    {
+        "gridTerritoryDescription": "Offenbach",
+        "responsibilityList": [
+            {
+                "id": 4,
+                "responsibleUser": "admin",
+                "newResponsibleUser": "Otto",
+                "branchName": "G",
+                "isActive": true
+            }
+        ]
+    }
+]
+----
+{blank}
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+{
+    "ret": "OK"
+}
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+=== Receive Assigned User Suggestions
+This service returns user suggestions for the 'Responsibility Forwarding' input field.
+
+*URL:* /assignedUserSuggestions
+
+*Method:* GET
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+    "Hermann Meister",
+    "Hugo Normalverbraucher",
+    "Max Mustermann",
+    "Michael Müller"
+]
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+=== Get SearchResults
+This service obtains a search filter with different search criteria. The service retrieves a list of those notifications from the database which match all search criteria. 
+
+The following search criteria are available to select/deselect:
+
+* Search string: Any string literal whose occurence will be searched in notification text, free text and extended free text column.
+  The input is case-insensitive.
+* Responsibility/forwarded to: Any string literal whose occurence will be searched in responsibility forwarding column.
+  The input is case-insensitive.
+* Branch: All branches or only one special branch can be included in search, default: ALL
+* Grid Territory: All grid territories or only one special grid territory can be included in search, default: ALL
+* Status: A checkbox for each status to be included into search, default: all checkboxes are selected
+* Fast search: If selected, only entries created or changed within the last two hundred days are included in search, default: selected
+
+*URL:* /getSearchResults
+
+*Method:* POST
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Consumes*: application/json
+
+*Request*:
+[source,json]
+----
+{
+"searchString": "TAriflichen",
+"responsibilityForwarding": "",
+"statusOpenSelection": true,
+"statusInWorkSelection": true,
+"statusDoneSelection": true,
+"statusClosedSelection": false,
+"fkRefBranch": 1,
+ "fkRefGridTerritory": 2,
+  "fastSearchSelected": true
+}
+----
+{blank}
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+  {
+    "id": 1074,
+    "incidentId": 966,
+    "version": 28,
+    "selected": false,
+    "status": "erledigt",
+    "beginDate": "2017-08-08T08:25:26.920Z",
+    "notificationText": "Anweisung zur Einhaltung der Arbeitsschutzrichtlinien",
+    "freeText": "Änderung Bereich dazu!",
+    "freeTextExtended": "gilt nur für die tariflichen Mitarbeiter",
+    "responsibilityForwarding": "Hermann Meister",
+    "responsibilityControlPoint": "Administrator",
+    "createUser": "admin",
+    "createDate": "2017-08-08T08:26:03.140Z",
+    "modDate": "2017-08-09T17:02:08.049Z",
+    "modUser": "admin",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 3,
+    "fkRefGridTerritory": 2,
+    "adminFlag": false
+  },
+  {
+    "id": 1064,
+    "incidentId": 966,
+    "version": 19,
+    "selected": false,
+    "status": "erledigt",
+    "beginDate": "2017-08-08T08:25:26.920Z",
+    "notificationText": "Anweisung für alle tariflichen Mitarbeiter",
+    "freeText": "Änderung Bereich dazu!",
+    "freeTextExtended": "ddddddd",
+    "responsibilityForwarding": "Hermann Meister",
+    "responsibilityControlPoint": "Administrator",
+    "createUser": "admin",
+    "createDate": "2017-08-08T08:26:03.140Z",
+    "modDate": "2017-08-09T12:58:13.568Z",
+    "modUser": "admin",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 3,
+    "fkRefGridTerritory": 2,
+    "adminFlag": false
+  }
+]
+----
+{blank}
+
+*Request for historical notifications*:
+[source,json]
+----
+{
+ "historicalFlag": true,
+ "shiftChangeTransactionId": 33
+ }
+----
+{blank}
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+  {
+    "id": 1191,
+    "incidentId": 750,
+    "version": 11,
+    "selected": false,
+    "status": "erledigt",
+    "beginDate": "2017-07-25T22:00:00.000Z",
+    "notificationText": "c--d ddddddd",
+    "responsibilityControlPoint": "Max Mustermann",
+    "expectedFinishDate": "2017-07-27T22:00:00.000Z",
+    "finishedDate": "2017-07-31T07:24:43.959Z",
+    "createUser": "admin",
+    "createDate": "2017-07-24T12:20:13.232Z",
+    "modDate": "2017-08-21T11:24:32.855Z",
+    "modUser": "max",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 3,
+    "fkRefGridTerritory": 2,
+    "adminFlag": false
+  },
+  {
+    "id": 994,
+    "incidentId": 825,
+    "version": 6,
+    "selected": false,
+    "status": "erledigt",
+    "beginDate": "2017-08-07T09:41:12.082Z",
+    "notificationText": "dddd",
+    "freeText": "53w5",
+    "freeTextExtended": "terterwrew",
+    "responsibilityControlPoint": "Administrator",
+    "finishedDate": "2017-08-08T10:19:36.001Z",
+    "createUser": "admin",
+    "createDate": "2017-08-07T09:41:55.048Z",
+    "modDate": "2017-08-08T10:19:37.454Z",
+    "modUser": "admin",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 3,
+    "fkRefGridTerritory": 2,
+    "adminFlag": false
+  }
+]
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+=== Get Notifications
+This service retrieves a list of notifications from the database. The selection is based on the given filter-object.
+With no filter value specified, the collection returned contains all active notifications. With filter value(s) set, only
+notifications matching the filter values are returned.
+
+The following list explains the available filter values:
+
+* The filter-values “dateFrom” and “dateTo” are compared against the “begin_date” of the notifications (closed interval).
+* The filter values in "responsibilityFilterList" are compared against the id of the notifications.
+* If the boolean filter value "historicalFlag" is "true" historical notifcations are returned.
+* If the boolean filter value is null or "false", active notifications are returned.
+* With historicalFlag set, the corresponding "shiftChangeTransactionId must also be set to obtain a valid result. In this
+case, other filter values do not make sense and are not evaluated.
+
+*URL:* /notifications/{listType}
+
+*Method:* POST
+
+*Path-Parameters*:
+
+* listType - The type of the list for which the data will be loaded: "PAST", "OPEN", "FUTURE"
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Consumes*: application/json
+
+*Request*:
+[source,json]
+----
+{
+  "dateFrom": "2017-03-09T15:27:17.666Z",
+  "dateTo": "2017-04-09T15:27:17.666Z",
+    "responsibilityFilterList": [
+                                    1, 6
+                                ]
+}
+----
+{blank}
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+  {
+    "id": 1161,
+    "incidentId": 337,
+    "version": 10,
+    "selected": false,
+    "status": "in Arbeit",
+    "beginDate": "2017-05-24T07:11:00.000Z",
+    "notificationText": "UW4 Wartungsarbeiten LSA",
+    "freeText": "Hr. xxx vor Ort",
+    "freeTextExtended": "Hr.yyy ist auch vor Ort",
+    "responsibilityForwarding": "Müller",
+    "responsibilityControlPoint": "Administrator",
+    "expectedFinishDate": "2017-05-24T14:00:00.000Z",
+    "createUser": "admin",
+    "createDate": "2017-05-24T07:03:54.429Z",
+    "modDate": "2017-08-18T14:15:10.355Z",
+    "modUser": "admin",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 2,
+    "fkRefGridTerritory": 1,
+    "adminFlag": false
+  },
+  {
+    "id": 601,
+    "incidentId": 566,
+    "version": 8,
+    "selected": false,
+    "status": "erledigt",
+    "beginDate": "2017-06-17T11:37:00.000Z",
+    "notificationText": "FD #5",
+    "freeText": "fd",
+    "freeTextExtended": "",
+    "responsibilityControlPoint": "Administrator",
+    "expectedFinishDate": "2017-06-19T23:01:00.000Z",
+    "finishedDate": "2017-06-19T13:27:11.333Z",
+    "createUser": "admin",
+    "createDate": "2017-06-19T11:38:17.369Z",
+    "modDate": "2017-06-19T13:27:12.598Z",
+    "modUser": "admin",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 3,
+    "fkRefGridTerritory": 1,
+    "adminFlag": false
+  }
+]
+----
+{blank}
+
+*Request for historical notifications*:
+[source,json]
+----
+{
+ "historicalFlag": true,
+ "shiftChangeTransactionId": 33
+ }
+----
+{blank}
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+  {
+    "id": 1191,
+    "incidentId": 750,
+    "version": 11,
+    "selected": false,
+    "status": "erledigt",
+    "beginDate": "2017-07-25T22:00:00.000Z",
+    "notificationText": "c--d ddddddd",
+    "responsibilityControlPoint": "Max Mustermann",
+    "expectedFinishDate": "2017-07-27T22:00:00.000Z",
+    "finishedDate": "2017-07-31T07:24:43.959Z",
+    "createUser": "admin",
+    "createDate": "2017-07-24T12:20:13.232Z",
+    "modDate": "2017-08-21T11:24:32.855Z",
+    "modUser": "max",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 3,
+    "fkRefGridTerritory": 2,
+    "adminFlag": false
+  },
+  {
+    "id": 994,
+    "incidentId": 825,
+    "version": 6,
+    "selected": false,
+    "status": "erledigt",
+    "beginDate": "2017-08-07T09:41:12.082Z",
+    "notificationText": "dddd",
+    "freeText": "53w5",
+    "freeTextExtended": "terterwrew",
+    "responsibilityControlPoint": "Administrator",
+    "finishedDate": "2017-08-08T10:19:36.001Z",
+    "createUser": "admin",
+    "createDate": "2017-08-07T09:41:55.048Z",
+    "modDate": "2017-08-08T10:19:37.454Z",
+    "modUser": "admin",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 3,
+    "fkRefGridTerritory": 2,
+    "adminFlag": false
+  }
+]
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+
+
+=== Get Search Results
+This service obtains a search string combined with a limited number of search options in a search filter. The service retrieves those notifications from the database
+which fulfill the given search criteria within the search filter. 
+Each search string typed in is case-insensitive. The sort order of the result tuples is as follows: branch, incident id (descending), version (descending), grid territory, begin date. 
+
+The search filter obtained by the web service consists of the subsequent criteria:
+
+* search string: The string whose occurence is searched in notification text, free text and extended free text, default: null
+* responsibility/forwarded to: an (additional) search string to be searched in the field responsibility/forwarded, default: null
+* branch: Search in all branches or specify one concrete branch, default: all
+* grid territory: Search in all grid territories or specify one concrete grid territory, default: all
+* status: each defined status (open, in work, finished, closed) can be (de)selected, default: all status selected
+* fast search: if selected, only entries created or modified during the last two hundred days are considered in the search, default: selected
+
+*URL:* /searchResults
+
+*Method:* POST
+
+*Path-Parameters*:
+
+-
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Consumes*: application/json
+
+*Request*:
+[source,json]
+----
+{
+	"searchString": "TAriflichen",
+	"responsibilityForwarding": "",
+	"statusOpenSelection": true,
+	"statusInWorkSelection": true,
+	"statusDoneSelection": true,
+	"statusClosedSelection": false,
+	"fkRefBranch": 1,
+	"fkRefGridTerritory": 2,
+	"fastSearchSelected": true
+}
+----
+{blank}
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+  {
+    "id": 1074,
+    "incidentId": 966,
+    "version": 28,
+    "selected": false,
+    "status": "erledigt",
+    "beginDate": "2017-08-08T08:25:26.920Z",
+    "notificationText": "Anweisung zur Einhaltung der Arbeitsschutzrichtlinien",
+    "freeText": "Änderung Bereich dazu!",
+    "freeTextExtended": "gilt nur für die tariflichen Mitarbeiter",
+    "responsibilityForwarding": "Hermann Meister",
+    "responsibilityControlPoint": "Administrator",
+    "createUser": "admin",
+    "createDate": "2017-08-08T08:26:03.140Z",
+    "modDate": "2017-08-09T17:02:08.049Z",
+    "modUser": "admin",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 3,
+    "fkRefGridTerritory": 2,
+    "adminFlag": false
+  },
+  {
+    "id": 1064,
+    "incidentId": 966,
+    "version": 19,
+    "selected": false,
+    "status": "erledigt",
+    "beginDate": "2017-08-08T08:25:26.920Z",
+    "notificationText": "Anweisung für alle tariflichen Mitarbeiter",
+    "freeText": "Änderung Bereich dazu!",
+    "freeTextExtended": "ddddddd",
+    "responsibilityForwarding": "Hermann Meister",
+    "responsibilityControlPoint": "Administrator",
+    "createUser": "admin",
+    "createDate": "2017-08-08T08:26:03.140Z",
+    "modDate": "2017-08-09T12:58:13.568Z",
+    "modUser": "admin",
+    "fkRefBranch": 1,
+    "fkRefNotificationStatus": 3,
+    "fkRefGridTerritory": 2,
+    "adminFlag": false
+  }
+]
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+=== Get Import Files
+This service retrieves a list of files which are available for import. These files should be placed in the following path:
+[source,text]
+----
+C:/FilesToImport
+----
+{blank}
+
+
+It returns the following informations about the file:
+
+* Name
+* Creation date
+* Creator name
+* Size
+* Type
+
+*URL:* /getImportFiles
+
+*Method:* GET
+
+*Path-Parameter*:
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+[
+    {
+        "fileName": "test.csv",
+        "creationDate": "2017-09-25T12:00:01.635887Z",
+        "creator": "admin",
+        "type": "csv",
+        "size": 5600,
+    },
+    {
+        "fileName": "test_file.txt",
+        "creationDate": "2017-09-23T11:00:01.635887Z",
+        "creator": "max",
+        "type": "txt",
+        "size": 8000,
+    }
+]
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+
+=== Get The Content of a File
+This service retrieves the content of a file. The file should be a text file (.txt, .csv etc)
+and the informations will be retrieved from the 9th row. The file is defined like this
+
+[source,text]
+----
+                                                            PROTOKOLL_STROM
+                                              08.09.2017 10:10:51  -  08.09.2017 10:22:04
+
+Betriebsart: Prozessführung
+Modus      : Spalten-Filtern
+Verknüpfung: --------
+
+.............MG.........................................................................................................................
+20:19:51,425 MG Test text          Mannheim Gas
+ENDE
+
+08.09.2017 10:23:34
+----
+{blank}
+
+This file has to be placed in a configured path accessible by the elogbook backend server.
+
+It returns the following information which extracted from the file:
+
+* Territory name
+* Branch name
+* Description text
+
+*URL:* /importFile
+
+*Method:* GET
+
+*Path-Parameter*:
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+{
+    "branchName": "W",
+    "gridTerritoryName": "MA",
+    "notificationText": "This is a simple test text"
+}
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+
+=== Delete Imported File
+This service deletes a file for a given file name. If there is a file with this name it returns true and deletes
+this file. Else it returns false.
+
+*URL:* /deleteImportedFiles/{fileName}
+
+*Method:* DELETE
+
+*Path-Parameter*: fileName - The name of the file that will be deleted
+
+*Request-Headers*:
+
+* Authorization – Existing JWT token
+
+*Produces*: application/json
+
+*Response*:
+[source,json]
+----
+{
+    true
+}
+----
+{blank}
+
+*Protection*: normal
+
+*Remarks*:
+
+
diff --git a/src/main/java/org/eclipse/openk/mics/home/common/BackendConfig.java b/src/main/java/org/eclipse/openk/mics/home/common/BackendConfig.java
new file mode 100644
index 0000000..0b6d1ff
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/common/BackendConfig.java
@@ -0,0 +1,71 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common;
+
+import org.eclipse.openk.mics.home.common.util.ResourceLoaderBase;
+
+public class BackendConfig {
+
+  private static String configFileName = "backendConfigDevLocal.json";
+
+  // properties of the configfile
+  private String micsCentralURL;
+  private String micsDistributionCluster;
+  private String micsHealthStateExtraPath;
+  private boolean micsCentralIsHttps;
+
+  private static BackendConfig instance;
+
+  private BackendConfig() {
+  }
+
+  public static synchronized BackendConfig getInstance() {
+    if (instance == null) {
+      String jsonConfig = loadJsonConfig();
+      instance = JsonGeneratorBase.getGson().fromJson(jsonConfig, BackendConfig.class);
+    }
+
+    return instance;
+  }
+
+  private static String loadJsonConfig() {
+    ResourceLoaderBase resourceLoaderBase = new ResourceLoaderBase();
+    return resourceLoaderBase.loadStringFromResource(configFileName);
+  }
+
+  public String getMicsCentralURL() {
+    return micsCentralURL;
+  }
+
+  public String getMicsDistributionCluster() {
+    return micsDistributionCluster;
+  }
+
+  public String getMicsHealthStateExtraPath() {
+    return micsHealthStateExtraPath;
+  }
+
+  public boolean isMicsCentralIsHttps() {
+    return micsCentralIsHttps;
+  }
+
+  public static String getConfigFileName() {
+    return configFileName;
+  }
+
+  public static void setConfigFileName(String configFileName) {
+    BackendConfig.configFileName = configFileName;
+  }
+}
+
+
diff --git a/src/main/java/org/eclipse/openk/mics/home/common/Globals.java b/src/main/java/org/eclipse/openk/mics/home/common/Globals.java
new file mode 100644
index 0000000..7825e3b
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/common/Globals.java
@@ -0,0 +1,20 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common;
+
+
+public final class Globals {
+    public static final String HEADER_JSON_UTF8 = "application/json; charset=utf-8";
+
+    private Globals() {}
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/common/GsonUTCDateAdapter.java b/src/main/java/org/eclipse/openk/mics/home/common/GsonUTCDateAdapter.java
new file mode 100644
index 0000000..6d97eb8
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/common/GsonUTCDateAdapter.java
@@ -0,0 +1,52 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParseException;
+import com.google.gson.JsonPrimitive;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+import java.lang.reflect.Type;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+
+public class GsonUTCDateAdapter implements JsonSerializer<Date>, JsonDeserializer<Date> {
+
+    private final DateFormat dateFormat;
+
+    public GsonUTCDateAdapter() {
+        dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);      //This is the format I need
+        dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));                               //This is the key line which converts the date to UTC which cannot be accessed with the default serializer
+    }
+
+    @Override
+    public synchronized JsonElement serialize(Date date, Type type, JsonSerializationContext jsonSerializationContext) {
+        return new JsonPrimitive(dateFormat.format(date));
+    }
+
+    @Override
+    public synchronized Date deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) {
+        try {
+            return dateFormat.parse(jsonElement.getAsString());
+        } catch (ParseException e) {
+            throw new JsonParseException(e);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/mics/home/common/HttpStatusException.java b/src/main/java/org/eclipse/openk/mics/home/common/HttpStatusException.java
new file mode 100644
index 0000000..ebda9be
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/common/HttpStatusException.java
@@ -0,0 +1,25 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common;
+
+public class HttpStatusException extends Exception {
+    private final int httpStatus;
+
+    public HttpStatusException( int httpStatus ) {
+        this.httpStatus = httpStatus;
+    }
+
+    public int getHttpStatus() {
+        return httpStatus;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/common/InitBackendConfig.java b/src/main/java/org/eclipse/openk/mics/home/common/InitBackendConfig.java
new file mode 100644
index 0000000..a592581
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/common/InitBackendConfig.java
@@ -0,0 +1,57 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common;
+
+import org.apache.log4j.Logger;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+
+public class InitBackendConfig extends HttpServlet {
+
+    private static final long serialVersionUID = -7882117179312471533L;
+
+    private static final Logger LOGGER = Logger.getLogger(InitBackendConfig.class.getName());
+
+    @Override
+    public void init() throws ServletException {
+        String environment = getServletContext().getInitParameter("OK_MICS_HOME_ENVIRONMENT");
+        setConfigFiles(environment);
+    }
+
+    private void setConfigFiles(String environment ) {
+        String env = (environment == null ? "Production": environment);
+
+        String backendConfigFile;
+
+        switch (env){
+            case "DevLocal":
+                backendConfigFile="backendConfigDevLocal.json";
+                break;
+            case "Docker":
+                backendConfigFile="backendConfigDocker.json";
+                break;
+            case "DevServer":
+                backendConfigFile="backendConfigDevServer.json";
+                break;
+            case "Custom":
+                backendConfigFile="backendConfigCustom.json";
+                break;
+            default:
+                backendConfigFile="backendConfigProduction.json";
+        }
+
+        BackendConfig.setConfigFileName(backendConfigFile);
+        LOGGER.info("Portal backendendenviroment is: " +environment+ ". Setting backendConfig accordingly to: "+ backendConfigFile);
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/common/JsonGeneratorBase.java b/src/main/java/org/eclipse/openk/mics/home/common/JsonGeneratorBase.java
new file mode 100644
index 0000000..ab6cb01
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/common/JsonGeneratorBase.java
@@ -0,0 +1,27 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import java.util.Date;
+
+public class JsonGeneratorBase {
+    private JsonGeneratorBase() {}
+    public static Gson getGson() {
+        return new GsonBuilder()
+                .registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
+                .disableHtmlEscaping()
+                .create();
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/common/NotificationStatus.java b/src/main/java/org/eclipse/openk/mics/home/common/NotificationStatus.java
new file mode 100644
index 0000000..fcd4834
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/common/NotificationStatus.java
@@ -0,0 +1,30 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common;
+
+public enum NotificationStatus {
+
+	UNKNOWN(0, "unknown"),
+	OPEN(1, "open"),
+	INPROGRESS(2, "inprogress"),
+	FINISHED(3, "finished"),
+	CLOSED(4, "closed");
+
+    public final int id;
+	public final String statusName;
+
+	NotificationStatus(int id, String name) {
+        this.id = id;
+        this.statusName = name;
+	}
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/common/util/JsonGeneratorBase.java b/src/main/java/org/eclipse/openk/mics/home/common/util/JsonGeneratorBase.java
new file mode 100644
index 0000000..b181d8a
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/common/util/JsonGeneratorBase.java
@@ -0,0 +1,29 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common.util;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import org.eclipse.openk.mics.home.common.GsonUTCDateAdapter;
+
+import java.util.Date;
+
+public class JsonGeneratorBase {
+    private JsonGeneratorBase() {}
+    public static Gson getGson() {
+        return new GsonBuilder()
+                .registerTypeAdapter(Date.class, new GsonUTCDateAdapter())
+                .disableHtmlEscaping()
+                .create();
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/common/util/LoggerUtil.java b/src/main/java/org/eclipse/openk/mics/home/common/util/LoggerUtil.java
new file mode 100644
index 0000000..616726c
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/common/util/LoggerUtil.java
@@ -0,0 +1,83 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common.util;
+
+import java.io.IOException;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.apache.log4j.Appender;
+import org.apache.log4j.BasicConfigurator;
+import org.apache.log4j.Layout;
+import org.apache.log4j.Level;
+import org.apache.log4j.PatternLayout;
+import org.apache.log4j.net.SyslogAppender;
+import org.apache.log4j.spi.RootLogger;
+import org.apache.log4j.xml.DOMConfigurator;
+
+/**
+ * <b>LoggerConfig</b><br>
+ * Logging Implementierung
+ */
+public final class LoggerUtil extends HttpServlet {
+    /**
+     * serialVersionUID.
+     */
+    private static final long serialVersionUID = 1L;
+
+    /*
+     * (non-Javadoc)
+     * @see javax.servlet.GenericServlet#init()
+     */
+    @Override
+    public void init() {
+        final ServletContext context = getServletContext();
+
+        if (Boolean.valueOf(context.getInitParameter("param.syslog.use"))) {
+            // configure for syslog using parameters specified in configuration descriptor
+            BasicConfigurator.resetConfiguration();
+
+            final String level = context.getInitParameter("param.syslog.level");
+            RootLogger.getRootLogger().setLevel(Level.toLevel(level));
+
+            final String host = context.getInitParameter("param.syslog.host");
+            final String facility = context.getInitParameter("param.syslog.facility");
+            final Layout layout = new PatternLayout("[%d{yyyy.MM.dd HH:mm:ss}] [%p] [%c] %m%n");
+            final Appender syslogAppender = new SyslogAppender(layout, host,
+                    SyslogAppender.getFacility(facility));
+            BasicConfigurator.configure(syslogAppender);
+
+        } else {
+            // configure using parameters specified in xml file
+            final String prefix = context.getRealPath("/");
+            final String file = getInitParameter("log4j-init-file");
+
+            if (prefix != null && file != null) {
+                DOMConfigurator.configure(prefix + file);
+            }
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest,
+     * javax.servlet.http.HttpServletResponse)
+     */
+    @Override
+    protected void doGet(final HttpServletRequest req, final HttpServletResponse resp)
+            throws ServletException, IOException {
+        // Nothing done on purpose.
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/common/util/ResourceLoaderBase.java b/src/main/java/org/eclipse/openk/mics/home/common/util/ResourceLoaderBase.java
new file mode 100644
index 0000000..9ec0c82
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/common/util/ResourceLoaderBase.java
@@ -0,0 +1,37 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common.util;
+
+import java.io.InputStream;
+import java.io.StringWriter;
+import org.apache.commons.io.IOUtils;
+
+public class ResourceLoaderBase {
+    private String stream2String(InputStream is) {
+        StringWriter writer = new StringWriter();
+        try {
+            IOUtils.copy(is, writer, "UTF-8");
+        } catch (Exception e) { // NOSONAR
+            return "";
+        }
+        return writer.toString();
+
+
+    }
+
+    public String loadStringFromResource(String filename) {
+        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+        InputStream jsonstream = classLoader.getResourceAsStream(filename);
+        return stream2String(jsonstream);
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/communication/RestServiceWrapper.java b/src/main/java/org/eclipse/openk/mics/home/communication/RestServiceWrapper.java
new file mode 100644
index 0000000..249196b
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/communication/RestServiceWrapper.java
@@ -0,0 +1,130 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.communication;
+
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.ssl.SSLContextBuilder;
+import org.apache.http.util.EntityUtils;
+import org.eclipse.openk.mics.home.common.HttpStatusException;
+import org.apache.log4j.Logger;
+import org.eclipse.openk.mics.home.common.Globals;
+
+
+import javax.ws.rs.core.Response;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+
+public class RestServiceWrapper {
+    private static final Logger logger = Logger.getLogger(RestServiceWrapper.class.getName());
+    private String baseURL;
+    private boolean useHttps;
+
+    public RestServiceWrapper(String baseURL, boolean https) {
+        this.baseURL = baseURL;
+        this.useHttps = https;
+    }
+
+    public String performGetRequest(String restFunctionWithParams) throws HttpStatusException {
+        String completeRequest = restFunctionWithParams;
+        logger.debug("CompleteUrl: " + completeRequest);
+        // create HTTP Client
+        try (CloseableHttpClient httpClient = createHttpsClient() ) {
+            // create new Request with given URL
+            HttpGet getRequest = new HttpGet(completeRequest);
+            getRequest.addHeader("accept", Globals.HEADER_JSON_UTF8);
+
+            HttpResponse response;
+            // Execute request an catch response
+            response = httpClient.execute(getRequest);
+
+            return createJson(response);
+        } catch (IOException e) {
+            String errtext = "Communication to <" + completeRequest + "> failed!";
+            logger.warn(errtext, e);
+            throw new HttpStatusException(HttpStatus.SC_SERVICE_UNAVAILABLE);
+        }
+
+    }
+
+	public Response performPostRequestWithResponse(String restFunctionWithParams, String data) throws HttpStatusException {
+		String completeRequest = baseURL + "/" + restFunctionWithParams;
+
+		// create HTTP Client
+		CloseableHttpClient httpClient = createHttpsClient();
+
+		// create new Post Request with given URL
+		HttpPost postRequest = new HttpPost(completeRequest);
+
+		// add additional header to getRequest which accepts application/JSON data
+		postRequest.addHeader("accept", Globals.HEADER_JSON_UTF8);
+		postRequest.addHeader("Content-Type", Globals.HEADER_JSON_UTF8);
+
+		postRequest.setEntity(new StringEntity(data, StandardCharsets.UTF_8));
+
+		HttpResponse response;
+		// Execute request an catch response
+		try {
+			response = httpClient.execute(postRequest);
+		} catch (IOException e) {
+			String errtext = "Communication to <" + completeRequest + "> failed!";
+			logger.warn(errtext, e);
+            throw new HttpStatusException(HttpStatus.SC_SERVICE_UNAVAILABLE);
+		}
+        String ent = createJson(response);
+
+        Response.ResponseBuilder rb = Response.status(response.getStatusLine().getStatusCode());
+        if (ent != null) {
+            rb.entity(ent);
+        }
+        return rb.build();
+	}
+
+    private CloseableHttpClient createHttpsClient() throws HttpStatusException {
+        if (useHttps) {
+            try {
+                SSLContextBuilder builder = new SSLContextBuilder();
+                builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
+                SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(builder.build());
+
+                return HttpClients.custom().setSSLSocketFactory(sslsf).build();
+            } catch (Exception e) {
+                logger.error(e);
+                throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+            }
+        } else {
+            return HttpClientBuilder.create().build();
+        }
+    }
+    
+	private String createJson(HttpResponse response) throws HttpStatusException {
+		String retJson;
+		try {
+			retJson = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
+		} catch (IOException e) {
+			logger.error(e);
+			throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+		}
+
+		return retJson;
+	}
+
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/controller/BackendController.java b/src/main/java/org/eclipse/openk/mics/home/controller/BackendController.java
new file mode 100644
index 0000000..faf0cf8
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/controller/BackendController.java
@@ -0,0 +1,39 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+
+package org.eclipse.openk.mics.home.controller;
+
+import org.apache.log4j.Logger;
+import org.eclipse.openk.mics.home.viewmodel.VersionInfo;
+
+public class BackendController {
+	
+	private static final Logger LOGGER = Logger.getLogger(BackendController.class.getName());
+
+	public VersionInfo getVersionInfo() {
+		LOGGER.info("getVersionInfo is called");
+
+		try {
+			return getVersionInfoImpl(getClass().getPackage().getImplementationVersion());
+		} finally {
+			LOGGER.info("getVersionInfo is finished");
+		}
+	}
+
+	private VersionInfo getVersionInfoImpl(String pomVersion) {
+		VersionInfo vi = new VersionInfo();
+		vi.setBackendVersion(pomVersion);
+
+		return vi;
+	}
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/controller/CentralProxy.java b/src/main/java/org/eclipse/openk/mics/home/controller/CentralProxy.java
new file mode 100644
index 0000000..60853e4
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/controller/CentralProxy.java
@@ -0,0 +1,35 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.controller;
+
+import org.eclipse.openk.mics.home.common.HttpStatusException;
+import org.eclipse.openk.mics.home.communication.RestServiceWrapper;
+
+public class CentralProxy {
+    private final String url;
+    private final RestServiceWrapper restServiceWrapper;
+
+    public CentralProxy( String url ) {
+        this.url = url;
+        this.restServiceWrapper = new RestServiceWrapper( url, false );
+    }
+
+    public String getServerDistribution( String clusterName ) throws HttpStatusException {
+        return restServiceWrapper.performGetRequest(url + "/serviceDistribution/" + clusterName );
+    }
+
+    public String getHealthState( String healthStateExtraPath, String protocol, String host, String port ) throws HttpStatusException {
+        return restServiceWrapper.performGetRequest(protocol + "://" + host + ":" + port + "/" + healthStateExtraPath );
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/controller/ResponseBuilderWrapper.java b/src/main/java/org/eclipse/openk/mics/home/controller/ResponseBuilderWrapper.java
new file mode 100644
index 0000000..b13d6aa
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/controller/ResponseBuilderWrapper.java
@@ -0,0 +1,56 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.controller;
+
+import org.apache.commons.httpclient.HttpStatus;
+import org.eclipse.openk.mics.home.common.HttpStatusException;
+
+
+import javax.ws.rs.core.Response;
+import java.io.UnsupportedEncodingException;
+
+public enum ResponseBuilderWrapper {
+    INSTANCE;
+
+    public Response.ResponseBuilder getResponseBuilder( String json ) throws HttpStatusException {
+        return getResponseBuilder(jsonStringToBytes( json ));
+
+    }
+
+    private Response.ResponseBuilder getResponseBuilder(byte[] json) {
+        return Response.status(HttpStatus.SC_OK).entity(json)
+                .header("Content-Type", "application/json; charset=utf-8")
+                .header("X-XSS-Protection", "1; mode = block")
+                .header("X-DNS-Prefetch-Control", "off")
+                .header("X-Content-Type-Options", "nosniff")
+                .header("X-Frame-Options", "sameorigin")
+                .header("Strict-Transport-Security", "max-age=15768000; includeSubDomains")
+                .header("Cache-Control", "no-cache; no-store; must-revalidate")
+                .header("Pragma", "no-cache")
+                .header("Expires", "0")
+                .header("Access-Control-Allow-Origin", "*");
+    }
+
+    private byte[] jsonStringToBytes( String jsonString ) throws HttpStatusException {
+        try {
+            return jsonString.getBytes("UTF-8");
+        } catch (UnsupportedEncodingException e) { // NOSONAR
+
+            throw new HttpStatusException(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+        }
+    }
+
+    public Response buildOKResponse(String jsonString) throws HttpStatusException {
+        return getResponseBuilder( jsonStringToBytes( jsonString)).build();
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/rest/BackendRestService.java b/src/main/java/org/eclipse/openk/mics/home/rest/BackendRestService.java
new file mode 100644
index 0000000..f9dcc95
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/rest/BackendRestService.java
@@ -0,0 +1,142 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.rest;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.eclipse.openk.mics.home.common.JsonGeneratorBase;
+import org.eclipse.openk.mics.home.communication.RestServiceWrapper;
+import org.eclipse.openk.mics.home.controller.BackendController;
+import org.eclipse.openk.mics.home.controller.CentralProxy;
+import org.eclipse.openk.mics.home.controller.ResponseBuilderWrapper;
+import org.apache.http.HttpStatus;
+import org.apache.log4j.Logger;
+import org.eclipse.openk.mics.home.common.BackendConfig;
+import org.eclipse.openk.mics.home.common.HttpStatusException;
+import org.eclipse.openk.mics.home.viewmodel.VersionInfo;
+
+import javax.ws.rs.*;
+import javax.ws.rs.core.Response;
+
+@Api(value = "/mics/home")
+@ApiResponses( value ={
+		@ApiResponse(code = 200, message = "OK"),
+		@ApiResponse(code = 400, message = "Bad Request"),
+		@ApiResponse(code = 401, message = "Unauthorized"),
+		@ApiResponse(code = 404, message = "Not found"),
+		@ApiResponse(code = 423, message = "Locked"),
+		@ApiResponse(code = 500, message = "Internal Server Error") } )
+@Path("/mics/home")
+public class BackendRestService {
+	private static final Logger logger = Logger.getLogger(BackendRestService.class.getName());
+
+	@ApiOperation(value = "Version Information", notes = "This services displays the version infos of this backend and the connected database.")
+	@ApiResponses( value ={ @ApiResponse(code = 200, message = "OK", response = VersionInfo.class,reference = "#/definitions/VersionInfo") } )
+	@GET
+	@Path("/versionInfo/")
+	@Produces("application/json")
+	public Response getVersionInfo() {
+		String vstring = JsonGeneratorBase.getGson().toJson(
+				new BackendController().getVersionInfo() );
+		try {
+			return ResponseBuilderWrapper.INSTANCE.buildOKResponse(vstring);
+		} catch (HttpStatusException e) {
+			return responseFromException(e);
+		}
+	}
+
+	@ApiOperation(value = "Server Distribution", notes = "This services returns the available distributions for a the clusters.")
+	@ApiResponses( value ={ @ApiResponse(code = 200, message = "OK") } )
+	@GET
+	@Path("/myServerDistribution/")
+	@Produces("application/json")
+	public Response getMyServerDistribution() {
+		logger.debug("myServerDistribution called!");
+		try {
+			BackendConfig bc = BackendConfig.getInstance();
+			CentralProxy central = new CentralProxy(bc.getMicsCentralURL());
+			logger.debug("Forwarding to central on:"+bc.getMicsCentralURL());
+
+			return ResponseBuilderWrapper.INSTANCE.buildOKResponse(
+					central.getServerDistribution(bc.getMicsDistributionCluster()));
+		}
+		catch (Exception e) {
+			logger.error("Error in myServerDistribution", e);
+			return responseFromException(e);
+		}
+	}
+
+	@ApiOperation(value = "Health state check", notes = "This service checks if the components of a service are healthy")
+	@ApiResponses( value ={ @ApiResponse(code = 200, message = "OK") } )
+	@GET
+	@Path("/healthState/{protocol}/{host}/{port}")
+	@Produces("application/json")
+	public Response getHealthState(@ApiParam(name = "protocol", value = "The name of the protocol is used(http/https)")
+                                   @PathParam("protocol") String protocol,
+                                   @ApiParam(name = "host", value = "The name of the host")
+                                   @PathParam("host") String host ,
+                                   @ApiParam(name = "port",  value = "The number of the port")
+                                   @PathParam("port") String port ) {
+		logger.debug("healthState called!");
+		try {
+			BackendConfig bc = BackendConfig.getInstance();
+			CentralProxy central = new CentralProxy(bc.getMicsCentralURL());
+			return ResponseBuilderWrapper.INSTANCE.buildOKResponse(
+					central.getHealthState(bc.getMicsHealthStateExtraPath(), protocol, host, port));
+		}
+		catch (Exception e) {
+			logger.error("Exception in healthState!", e);
+			return responseFromException(e);
+		}
+	}
+
+	@ApiOperation(value = "Dispatcher", notes = "")
+	@ApiResponses( value ={ @ApiResponse(code = 200, message = "OK") } )
+	@POST
+	@Path("/dispatch/")
+	public Response dispatch( String envelope ) {
+		logger.debug("dispatch called!");
+		try {
+			BackendConfig bc = BackendConfig.getInstance();
+			RestServiceWrapper restServiceWrapper = new RestServiceWrapper(bc.getMicsCentralURL(), bc.isMicsCentralIsHttps());
+			return restServiceWrapper.performPostRequestWithResponse(createDispatchURL(), envelope);
+		}
+		catch( Exception e) {
+			logger.error("Exception in dispatch!", e);
+			return responseFromException(e);
+
+		}
+	}
+
+	private String createDispatchURL() {
+		BackendConfig bc = BackendConfig.getInstance();
+		return "dispatch/"+bc.getMicsDistributionCluster();
+	}
+
+
+	private Response responseFromException(Exception e) {
+		int errcode;
+
+		if (e instanceof HttpStatusException) {
+			logger.error("Caught BackendException", e);
+			errcode = ((HttpStatusException) e).getHttpStatus();
+			return Response.status(errcode).build();
+		} else {
+			logger.error("Unexpected exception", e);
+			return Response.status(HttpStatus.SC_INTERNAL_SERVER_ERROR).build();
+		}
+	}
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/rest/RestServiceConfiguration.java b/src/main/java/org/eclipse/openk/mics/home/rest/RestServiceConfiguration.java
new file mode 100644
index 0000000..a829a6d
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/rest/RestServiceConfiguration.java
@@ -0,0 +1,30 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.rest;
+
+
+import java.util.HashSet;
+import java.util.Set;
+
+public class RestServiceConfiguration extends javax.ws.rs.core.Application {
+    public RestServiceConfiguration() {
+        // Standard Contstructor needed
+    }
+
+    @Override
+    public Set<Class<?>> getClasses() {
+        Set<Class<?>> restServicesClasses = new HashSet<>();
+        restServicesClasses.add(BackendRestService.class);
+        return restServicesClasses;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/viewmodel/ErrorReturn.java b/src/main/java/org/eclipse/openk/mics/home/viewmodel/ErrorReturn.java
new file mode 100644
index 0000000..470926a
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/viewmodel/ErrorReturn.java
@@ -0,0 +1,35 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.viewmodel;
+
+import java.io.Serializable;
+
+public class ErrorReturn implements Serializable {
+    private static final long serialVersionUID = -1841112315318005840L;
+
+    private String errorText;
+    private int errorCode;
+
+    public String getErrorText() {
+        return errorText;
+    }
+    public void setErrorText(String errorText) {
+        this.errorText = errorText;
+    }
+    public int getErrorCode() {
+        return errorCode;
+    }
+    public void setErrorCode(int errorCode) {
+        this.errorCode = errorCode;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/viewmodel/ServiceRequestEnvelope.java b/src/main/java/org/eclipse/openk/mics/home/viewmodel/ServiceRequestEnvelope.java
new file mode 100644
index 0000000..022a412
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/viewmodel/ServiceRequestEnvelope.java
@@ -0,0 +1,105 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.viewmodel;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ServiceRequestEnvelope {
+    public static class HttpHeader {
+        private String attribute;
+        private String value;
+
+        public String getAttribute() {
+            return attribute;
+        }
+
+        public void setAttribute(String attribute) {
+            this.attribute = attribute;
+        }
+
+        public String getValue() {
+            return value;
+        }
+
+        public void setValue(String value) {
+            this.value = value;
+        }
+    }
+
+    private String serviceName;
+    private boolean isHttps;
+    private String method;
+    private String uriFragment;
+    private String payload;
+    private HttpHeader[] headers;
+
+    @JsonProperty
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    @JsonProperty
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    @JsonProperty
+    public boolean isHttps() {
+        return isHttps;
+    }
+
+    @JsonProperty
+    public void setHttps(boolean https) {
+        isHttps = https;
+    }
+
+    @JsonProperty
+    public String getMethod() {
+        return method;
+    }
+
+    @JsonProperty
+    public void setMethod(String method) {
+        this.method = method;
+    }
+
+    @JsonProperty
+    public String getUriFragment() {
+        return uriFragment;
+    }
+
+    @JsonProperty
+    public void setUriFragment(String uriFragment) {
+        this.uriFragment = uriFragment;
+    }
+
+    @JsonProperty
+    public String getPayload() {
+        return payload;
+    }
+
+    @JsonProperty
+    public void setPayload(String payload) {
+        this.payload = payload;
+    }
+
+    @JsonProperty
+    public HttpHeader[] getHeaders() {
+        return headers;
+    }
+
+    @JsonProperty
+    public void setHeaders(HttpHeader[] headers) {
+        this.headers = headers;
+    }
+}
diff --git a/src/main/java/org/eclipse/openk/mics/home/viewmodel/VersionInfo.java b/src/main/java/org/eclipse/openk/mics/home/viewmodel/VersionInfo.java
new file mode 100644
index 0000000..b353fc5
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/mics/home/viewmodel/VersionInfo.java
@@ -0,0 +1,25 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.viewmodel;
+
+public class VersionInfo {
+    private String backendVersion;
+
+    public String getBackendVersion() {
+        return backendVersion;
+    }
+
+    public void setBackendVersion(String backendVersion) {
+        this.backendVersion = backendVersion;
+    }
+}
diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..57c51be
--- /dev/null
+++ b/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
+    <persistence-unit name="betriebstagebuch">
+        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+        <non-jta-data-source>java:comp/env/jdbc/okBetriebstagebuchDS</non-jta-data-source>
+        <class>org.eclipse.openk.elogbook.persistence.model.RefVersion</class>
+        <class>org.eclipse.openk.elogbook.persistence.model.RefBranch</class>
+        <class>org.eclipse.openk.elogbook.persistence.model.RefGridTerritory</class>
+        <class>org.eclipse.openk.elogbook.persistence.model.RefNotificationStatus</class>
+        <class>org.eclipse.openk.elogbook.persistence.model.TblNotification</class>
+        <class>org.eclipse.openk.elogbook.persistence.model.TblResponsibility</class>
+        <exclude-unlisted-classes>false</exclude-unlisted-classes>
+        <properties>
+        </properties>
+    </persistence-unit>
+    <persistence-unit name="betriebstagebuchORA">
+        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+        <non-jta-data-source>java:comp/env/jdbc/okBetriebstagebuchDSO</non-jta-data-source>
+        <class>org.eclipse.openk.elogbook.persistence.model.RefVersion</class>
+        <class>org.eclipse.openk.elogbook.persistence.model.RefBranch</class>
+        <class>org.eclipse.openk.elogbook.persistence.model.RefGridTerritory</class>
+        <class>org.eclipse.openk.elogbook.persistence.model.RefNotificationStatus</class>
+        <class>org.eclipse.openk.elogbook.persistence.model.TblNotification</class>
+        <class>org.eclipse.openk.elogbook.persistence.model.TblResponsibility</class>
+        <exclude-unlisted-classes>false</exclude-unlisted-classes>
+        <properties>
+            <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />
+            <property name="eclipselink.target-database" value="Oracle"/>
+        </properties>
+    </persistence-unit>
+</persistence>
diff --git a/src/main/resources/backendConfigCustom.json b/src/main/resources/backendConfigCustom.json
new file mode 100644
index 0000000..e2bd5fc
--- /dev/null
+++ b/src/main/resources/backendConfigCustom.json
@@ -0,0 +1,6 @@
+{
+  "micsDistributionCluster" : "openK",
+  "micsCentralURL" : "http://localhost:9010/mics/central",
+  "micsHealthStateExtraPath" : "healthcheck?pretty=true",
+  "micsCentralIsHttps" : false
+}
diff --git a/src/main/resources/backendConfigDevLocal.json b/src/main/resources/backendConfigDevLocal.json
new file mode 100644
index 0000000..e2bd5fc
--- /dev/null
+++ b/src/main/resources/backendConfigDevLocal.json
@@ -0,0 +1,6 @@
+{
+  "micsDistributionCluster" : "openK",
+  "micsCentralURL" : "http://localhost:9010/mics/central",
+  "micsHealthStateExtraPath" : "healthcheck?pretty=true",
+  "micsCentralIsHttps" : false
+}
diff --git a/src/main/resources/backendConfigDevServer.json b/src/main/resources/backendConfigDevServer.json
new file mode 100644
index 0000000..7e6750e
--- /dev/null
+++ b/src/main/resources/backendConfigDevServer.json
@@ -0,0 +1,6 @@
+{
+  "micsDistributionCluster" : "openK",
+  "micsCentralURL" : "http://172.18.22.160:9010/mics/central",
+  "micsHealthStateExtraPath" : "healthcheck?pretty=true",
+  "micsCentralIsHttps" : false
+}
diff --git a/src/main/resources/backendConfigDocker.json b/src/main/resources/backendConfigDocker.json
new file mode 100644
index 0000000..83fc93c
--- /dev/null
+++ b/src/main/resources/backendConfigDocker.json
@@ -0,0 +1,6 @@
+{
+  "micsDistributionCluster" : "openK",
+  "micsCentralURL" : "http://172.25.0.54:9010/mics/central",
+  "micsHealthStateExtraPath" : "healthcheck?pretty=true",
+  "micsCentralIsHttps" : false
+}
diff --git a/src/main/resources/backendConfigProduction.json b/src/main/resources/backendConfigProduction.json
new file mode 100644
index 0000000..b745e85
--- /dev/null
+++ b/src/main/resources/backendConfigProduction.json
@@ -0,0 +1,6 @@
+{
+  "micsDistributionCluster" : "openK",
+  "micsCentralURL" : "http://169.50.13.154:9010/mics/central",
+  "micsHealthStateExtraPath" : "healthcheck?pretty=true",
+  "micsCentralIsHttps" : false
+}
\ No newline at end of file
diff --git a/src/main/resources/securityDefinitions.json b/src/main/resources/securityDefinitions.json
new file mode 100644
index 0000000..7183dfd
--- /dev/null
+++ b/src/main/resources/securityDefinitions.json
@@ -0,0 +1,16 @@
+{
+  "api_key": {
+    "type": "apiKey",
+    "name": "api_key",
+    "in": "header"
+  },
+  "Existing JWT token": {
+    "type": "oauth2",
+    "authorizationUrl": "http://swagger.io/api/oauth/dialog",
+    "flow": "implicit",
+    "scopes": {
+      "scope1": "scope description 1",
+      "scope2": "scope description 2"
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/logger.xml b/src/main/webapp/WEB-INF/logger.xml
new file mode 100644
index 0000000..8b34194
--- /dev/null
+++ b/src/main/webapp/WEB-INF/logger.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration PUBLIC
+        "-//APACHE//DTD LOG4J 1.2//EN"
+        "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+        <param name="Threshold" value="DEBUG"/>
+        <param name="Target" value="System.out"/>
+        <layout class="org.apache.log4j.PatternLayout">
+            <param name="ConversionPattern" value="[%d{yyyy.MM.dd HH:mm:ss}] [%p] [%c] %m%n"/>
+        </layout>
+    </appender>
+
+    <appender name="Socket" class="org.apache.log4j.net.SocketAppender">
+        <param name="remoteHost" value="127.0.0.1"/>
+        <param name="port" value="4560"/>
+        <layout class="org.apache.log4j.PatternLayout">
+            <param name="ConversionPattern" value="[%d{yyyy.MM.dd HH:mm:ss}] [%p] [%c] %m%n"/>
+        </layout>
+    </appender>
+
+    <!-- Issue: das Verzeichnis muss existieren ... -->
+    <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
+        <param name="Threshold" value="TRACE"/>
+        <param name="File" value="${catalina.base}/logs/mics-home-service.backend.log"/>
+        <param name="Append" value="true"/>
+        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
+        <layout class="org.apache.log4j.PatternLayout">
+            <param name="ConversionPattern" value="[%d{yyyy.MM.dd HH:mm:ss}] [%p] [%c] %m%n"/>
+        </layout>
+    </appender>
+
+    <!-- Default Logging configuration beginnend mit org.eclipse (= alle Packages) -->
+    <category name="org.eclipse.openk">
+        <priority value="DEBUG"/>
+        <!--<priority value="DEBUG"/> -->
+        <!--<priority value="ERROR"/> -->
+        <appender-ref ref="CONSOLE"/>
+        <!--<appender-ref ref="Socket"/> -->
+        <!--<appender-ref ref="FILE"/> -->
+        <!--<appender-ref ref="SYSLOG"/> -->
+        <appender-ref ref="FILE"/>
+    </category>
+    <category name="org.jboss.resteasy">
+        <priority value="WARN"/>
+        <!--<priority value="DEBUG"/> -->
+        <!--<priority value="ERROR"/> -->
+        <appender-ref ref="CONSOLE"/>
+        <!--<appender-ref ref="Socket"/> -->
+        <!--<appender-ref ref="FILE"/> -->
+        <!--<appender-ref ref="SYSLOG"/> -->
+        <appender-ref ref="FILE"/>
+    </category>
+    <category name="javax.persistence.Persistence">
+        <priority value="INFO"/>
+        <!--<priority value="DEBUG"/> -->
+        <!--<priority value="ERROR"/> -->
+        <appender-ref ref="CONSOLE"/>
+        <!--<appender-ref ref="Socket"/> -->
+        <!--<appender-ref ref="FILE"/> -->
+        <!--<appender-ref ref="SYSLOG"/> -->
+        <appender-ref ref="FILE"/>
+    </category>
+
+</log4j:configuration>
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..0f44f71
--- /dev/null
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,43 @@
+<web-app id="WebApp_ID" version="2.4"
+         xmlns="http://java.sun.com/xml/ns/j2ee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+    <display-name>Restful Web Application</display-name>
+
+    <servlet>
+        <servlet-name>jersey-serlvet</servlet-name>
+        <servlet-class>
+            org.glassfish.jersey.servlet.ServletContainer
+        </servlet-class>
+        <init-param>
+            <param-name>jersey.config.server.provider.packages</param-name>
+            <param-value>org.eclipse.openk.mics.home.rest</param-value>
+        </init-param>
+        <load-on-startup>1</load-on-startup>
+
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>jersey-serlvet</servlet-name>
+        <url-pattern>/rest/*</url-pattern>
+    </servlet-mapping>
+
+    <servlet>
+        <servlet-name>log4j-init</servlet-name>
+        <servlet-class>org.eclipse.openk.mics.home.common.util.LoggerUtil</servlet-class>
+        <init-param>
+            <param-name>log4j-init-file</param-name>
+            <param-value>WEB-INF/logger.xml</param-value>
+        </init-param>
+        <load-on-startup>0</load-on-startup>
+    </servlet>
+
+    <servlet>
+        <servlet-name>InitBackendConfig</servlet-name>
+        <servlet-class>org.eclipse.openk.mics.home.common.InitBackendConfig</servlet-class>
+        <load-on-startup>2</load-on-startup>
+    </servlet>
+
+
+</web-app>
diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html
new file mode 100644
index 0000000..97b5341
--- /dev/null
+++ b/src/main/webapp/index.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<title>Insert title here</title>
+</head>
+<body>
+it works!
+</body>
+</html>
\ No newline at end of file
diff --git a/src/test/java/org/eclipse/openk/mics/home/common/BackendConfigTest.java b/src/test/java/org/eclipse/openk/mics/home/common/BackendConfigTest.java
new file mode 100644
index 0000000..201c25e
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/mics/home/common/BackendConfigTest.java
@@ -0,0 +1,31 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common;
+
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class BackendConfigTest {
+    @Test
+    public void testConfig() {
+        BackendConfig bc = BackendConfig.getInstance();
+        assertEquals( bc.getMicsCentralURL(), "http://localhost:9010/mics/central" );
+        assertEquals( bc.getMicsDistributionCluster(), "openK");
+        assertEquals( bc.getMicsHealthStateExtraPath(), "healthcheck?pretty=true" );
+        BackendConfig.setConfigFileName("backendConfigProduction.json");
+        assertEquals( BackendConfig.getConfigFileName(), "backendConfigProduction.json");
+        assertEquals( false, BackendConfig.getInstance().isMicsCentralIsHttps());
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/mics/home/common/HttpStatusExceptionTest.java b/src/test/java/org/eclipse/openk/mics/home/common/HttpStatusExceptionTest.java
new file mode 100644
index 0000000..664e987
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/mics/home/common/HttpStatusExceptionTest.java
@@ -0,0 +1,26 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common;
+
+import org.apache.http.HttpStatus;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class HttpStatusExceptionTest {
+    @Test
+    public void testAll() {
+        HttpStatusException hse = new HttpStatusException( 200 );
+        assertEquals( hse.getHttpStatus(), HttpStatus.SC_OK );
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/mics/home/common/InitBackendConfigTest.java b/src/test/java/org/eclipse/openk/mics/home/common/InitBackendConfigTest.java
new file mode 100644
index 0000000..fbc0e97
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/mics/home/common/InitBackendConfigTest.java
@@ -0,0 +1,53 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common;
+
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+public class InitBackendConfigTest {
+
+    private InitBackendConfig initBackendConfig = new InitBackendConfig();
+
+    @Test
+    public void testSetConfigFiles() throws Exception {
+        Whitebox.invokeMethod(initBackendConfig, "setConfigFiles", "DevLocal");
+    }
+
+    private void testGeneric(String environment ) throws Exception {
+        Whitebox.invokeMethod(initBackendConfig, "setConfigFiles", environment);
+    }
+
+    @Test
+    public void testCombinations() throws Exception {
+
+        testGeneric("DevLocal");
+        testGeneric("DevLocal");
+
+        testGeneric("Docker");
+        testGeneric("Docker");
+
+        testGeneric("DevServer");
+        testGeneric("DevServer");
+
+        testGeneric("Custom");
+        testGeneric("Custom");
+
+        testGeneric(null);
+        testGeneric(null);
+
+        testGeneric("");
+        testGeneric("");
+
+}
+}
diff --git a/src/test/java/org/eclipse/openk/mics/home/common/NotificationStatusTest.java b/src/test/java/org/eclipse/openk/mics/home/common/NotificationStatusTest.java
new file mode 100644
index 0000000..e6fb159
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/mics/home/common/NotificationStatusTest.java
@@ -0,0 +1,32 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class NotificationStatusTest {
+
+	@Test
+	public void createNotificationStatus() throws Exception {
+
+        assertEquals(0, NotificationStatus.UNKNOWN.id);
+        assertEquals(1, NotificationStatus.OPEN.id);
+        assertEquals(2, NotificationStatus.INPROGRESS.id);
+        assertEquals(3, NotificationStatus.FINISHED.id);
+        assertEquals(4, NotificationStatus.CLOSED.id);
+
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/mics/home/common/util/JsonGeneratorBaseTest.java b/src/test/java/org/eclipse/openk/mics/home/common/util/JsonGeneratorBaseTest.java
new file mode 100644
index 0000000..83ce19d
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/mics/home/common/util/JsonGeneratorBaseTest.java
@@ -0,0 +1,76 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common.util;
+
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+import java.util.Date;
+
+import static org.junit.Assert.assertEquals;
+
+public class JsonGeneratorBaseTest extends ResourceLoaderBase {
+    public static class TestPojo {
+        private String name;
+        private int number;
+        private Date date;
+
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int getNumber() {
+            return number;
+        }
+
+        public void setNumber(int number) {
+            this.number = number;
+        }
+
+        public Date getDate() {
+            return date;
+        }
+
+        public void setDate(Date date) {
+            this.date = date;
+        }
+
+    }
+
+    @Test
+    public void testInputOutput() throws Exception {
+        Date now = new Date(System.currentTimeMillis());
+        TestPojo pojo = new TestPojo();
+        pojo.setDate(now);
+        pojo.setName("Haferkamp");
+        pojo.setNumber(6758);
+
+        // call to reach sonar quality gate
+        Whitebox.invokeConstructor(JsonGeneratorBase.class);
+
+        String jsonString = JsonGeneratorBase.getGson().toJson(pojo);
+
+        TestPojo pojoIncoming = JsonGeneratorBase.getGson().fromJson(jsonString, TestPojo.class);
+
+        assertEquals(pojo.getDate(), pojoIncoming.getDate());
+        assertEquals(pojo.getName(), pojoIncoming.getName());
+        assertEquals(pojo.getNumber(), pojoIncoming.getNumber());
+    }
+
+
+}
diff --git a/src/test/java/org/eclipse/openk/mics/home/common/util/ResourceLoaderBaseTest.java b/src/test/java/org/eclipse/openk/mics/home/common/util/ResourceLoaderBaseTest.java
new file mode 100644
index 0000000..ebdb533
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/mics/home/common/util/ResourceLoaderBaseTest.java
@@ -0,0 +1,27 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.common.util;
+
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class ResourceLoaderBaseTest {
+    @Test
+    public void testloadStringFromResourceError() {
+        ResourceLoaderBase rlb = new ResourceLoaderBase();
+        String str = rlb.loadStringFromResource("UNKNOWN_FILE");
+        assertEquals(str, "");
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/mics/home/controller/CentralProxyTest.java b/src/test/java/org/eclipse/openk/mics/home/controller/CentralProxyTest.java
new file mode 100644
index 0000000..64d1d7f
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/mics/home/controller/CentralProxyTest.java
@@ -0,0 +1,40 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.controller;
+
+import org.eclipse.openk.mics.home.common.HttpStatusException;
+import org.eclipse.openk.mics.home.communication.RestServiceWrapper;
+import org.easymock.EasyMock;
+import org.junit.Test;
+import org.powermock.reflect.Whitebox;
+
+import static org.easymock.EasyMock.anyString;
+import static org.junit.Assert.assertEquals;
+
+public class CentralProxyTest {
+
+    @Test
+    public void testAll() throws HttpStatusException {
+        RestServiceWrapper rsw = EasyMock.createMock(RestServiceWrapper.class);
+        EasyMock.expect(rsw.performGetRequest(anyString())).andReturn("fine").anyTimes();
+        EasyMock.replay(rsw);
+        EasyMock.verify(rsw);
+        CentralProxy cp = new CentralProxy("TEST_URL");
+
+        Whitebox.setInternalState(cp, "restServiceWrapper", rsw);
+
+        assertEquals( "fine", cp.getHealthState("/abs",
+                "https", "123.456.789.0", "4711"));
+        assertEquals( "fine", cp.getServerDistribution("klausDasCluster"));
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/mics/home/controller/ResponseBuilderWrapperTest.java b/src/test/java/org/eclipse/openk/mics/home/controller/ResponseBuilderWrapperTest.java
new file mode 100644
index 0000000..c168498
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/mics/home/controller/ResponseBuilderWrapperTest.java
@@ -0,0 +1,41 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.controller;
+
+
+import org.apache.http.HttpStatus;
+import org.eclipse.openk.mics.home.common.HttpStatusException;
+import org.junit.Test;
+
+import javax.ws.rs.core.Response;
+
+import static org.junit.Assert.assertEquals;
+
+
+public class ResponseBuilderWrapperTest {
+    @Test
+    public void testGetResponseBuilder() throws HttpStatusException {
+        String json = "{ 'ret' : 'OK' }";
+        Response.ResponseBuilder rb = ResponseBuilderWrapper.INSTANCE.getResponseBuilder( json );
+        Response resp = rb.build();
+        assertEquals(resp.getStatus(), HttpStatus.SC_OK );
+    }
+
+    @Test
+    public void testBuildOkResponse() throws HttpStatusException {
+        String json = "{ 'test' : 'Value' }";
+        Response resp = ResponseBuilderWrapper.INSTANCE.buildOKResponse( json );
+        assertEquals( resp.getStatus(), HttpStatus.SC_OK );
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/mics/home/viewmodel/ErrorReturnTest.java b/src/test/java/org/eclipse/openk/mics/home/viewmodel/ErrorReturnTest.java
new file mode 100644
index 0000000..6ac0ada
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/mics/home/viewmodel/ErrorReturnTest.java
@@ -0,0 +1,42 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.viewmodel;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+import org.eclipse.openk.mics.home.common.JsonGeneratorBase;
+import org.eclipse.openk.mics.home.common.util.ResourceLoaderBase;
+import org.junit.Test;
+
+public class ErrorReturnTest extends ResourceLoaderBase {
+	// IMPORTANT TEST!!!
+	// Make sure, our Interface produces a DEFINED Json!
+	// Changes in the interface will HOPEFULLY crash here!!!
+
+	@Test
+	public void TestStructureAgainstJson() {
+		String json = super.loadStringFromResource("testErrorReturn.json");
+		ErrorReturn errRet = JsonGeneratorBase.getGson().fromJson(json, ErrorReturn.class);
+		assertFalse(errRet.getErrorText().isEmpty());
+		assertEquals(errRet.getErrorCode(), 999);
+	}
+
+	@Test
+	public void TestSetters() {
+		ErrorReturn errRet = new ErrorReturn();
+		errRet.setErrorCode(1);
+		errRet.setErrorText("bla bla");
+	}
+
+}
diff --git a/src/test/java/org/eclipse/openk/mics/home/viewmodel/ServiceRequestEnvelopeTest.java b/src/test/java/org/eclipse/openk/mics/home/viewmodel/ServiceRequestEnvelopeTest.java
new file mode 100644
index 0000000..23a9fe7
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/mics/home/viewmodel/ServiceRequestEnvelopeTest.java
@@ -0,0 +1,50 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.viewmodel;
+
+
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class ServiceRequestEnvelopeTest {
+
+    @Test
+    public void testPojo() {
+        final String payload = "Testme Accurate";
+        ServiceRequestEnvelope env = new ServiceRequestEnvelope();
+        env.setHttps(true);
+        env.setMethod("POST");
+        env.setUriFragment("Fraggel");
+        env.setServiceName("Salve");
+
+        ServiceRequestEnvelope.HttpHeader[] headers = new ServiceRequestEnvelope.HttpHeader[2];
+        headers[0] = new ServiceRequestEnvelope.HttpHeader();
+        headers[0].setAttribute("1stAttr");
+        headers[0].setValue("1stValue");
+        headers[1] = new ServiceRequestEnvelope.HttpHeader();
+        headers[1].setAttribute("2ndAttr");
+        headers[1].setValue("2ndValue");
+        env.setHeaders(headers);
+
+        assertEquals(true, env.isHttps());
+        assertEquals("POST", env.getMethod());
+        env.setPayload(payload);
+        assertEquals(payload, env.getPayload());
+        assertEquals("Fraggel", env.getUriFragment());
+        assertEquals("Salve", env.getServiceName());
+        assertEquals(2, env.getHeaders().length);
+        assertEquals("2ndAttr", env.getHeaders()[1].getAttribute());
+        assertEquals("1stValue", env.getHeaders()[0].getValue());
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/mics/home/viewmodel/VersionInfoTest.java b/src/test/java/org/eclipse/openk/mics/home/viewmodel/VersionInfoTest.java
new file mode 100644
index 0000000..8e41e0a
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/mics/home/viewmodel/VersionInfoTest.java
@@ -0,0 +1,41 @@
+/**
+******************************************************************************
+* Copyright © 2018 PTA GmbH.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* 
+*     http://www.eclipse.org/legal/epl-v10.html
+* 
+******************************************************************************
+*/
+
+package org.eclipse.openk.mics.home.viewmodel;
+
+
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.openk.mics.home.common.JsonGeneratorBase;
+import org.eclipse.openk.mics.home.common.util.ResourceLoaderBase;
+import org.junit.Test;
+
+public class VersionInfoTest extends ResourceLoaderBase {
+    // IMPORTANT TEST!!!
+    // Make sure, our Interface produces a DEFINED Json!
+    // Changes in the interface will HOPEFULLY crash here!!!
+
+    @Test
+    public void testStructureAgainstJson() {
+        String json = super.loadStringFromResource("VersionInfo.json");
+        VersionInfo vi = JsonGeneratorBase.getGson().fromJson(json, VersionInfo.class);
+
+        assertTrue(vi.getBackendVersion().equals("0x.0x.xx"));
+    }
+
+    @Test
+    public void testSetters() {
+        VersionInfo vi = new VersionInfo();
+        vi.setBackendVersion("222");
+    }
+
+}
diff --git a/src/test/resources/VersionInfo.json b/src/test/resources/VersionInfo.json
new file mode 100644
index 0000000..35510d9
--- /dev/null
+++ b/src/test/resources/VersionInfo.json
@@ -0,0 +1,3 @@
+{
+  "backendVersion": "0x.0x.xx"
+}
\ No newline at end of file
diff --git a/src/test/resources/serviceRequestEnvelope.json b/src/test/resources/serviceRequestEnvelope.json
new file mode 100644
index 0000000..9722f58
--- /dev/null
+++ b/src/test/resources/serviceRequestEnvelope.json
@@ -0,0 +1,17 @@
+{
+  "serviceName": "auth-n-auth.mics",
+  "isHttps": false,
+  "method": "GET",
+  "uriFragment": "versionInfo",
+  "payload": "eyAiYmFja2VuZFZlcnNpb24iOiAiMC4xLjMtU05BUFNIT1QifQ==",
+  "headers": [
+    {
+      "attribute": "Content-Type",
+      "value": "application/json"
+    },
+    {
+      "attribute": "accept",
+      "value": "application/json"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/src/test/resources/testErrorReturn.json b/src/test/resources/testErrorReturn.json
new file mode 100644
index 0000000..f5540af
--- /dev/null
+++ b/src/test/resources/testErrorReturn.json
@@ -0,0 +1,4 @@
+{
+  "errorText": "TESTAT",
+  "errorCode": 999
+}
diff --git a/templates/markdown.hbs b/templates/markdown.hbs
new file mode 100644
index 0000000..2a7e5cf
--- /dev/null
+++ b/templates/markdown.hbs
@@ -0,0 +1,107 @@
+#{{#info}}{{title}}
+
+
+## {{join schemes " | "}}://{{host}}{{basePath}}
+
+
+{{description}}
+
+{{#contact}}
+[**Contact the developer**](mailto:{{email}})
+{{/contact}}
+
+**Version** {{version}}
+
+[**Terms of Service**]({{termsOfService}})
+
+{{#license}}[**{{name}}**]({{url}}){{/license}}
+
+{{/info}}
+
+{{#if consumes}}**Consumes:** {{join consumes ", "}}{{/if}}
+
+{{#if produces}}**Produces:** {{join produces ", "}}{{/if}}
+
+{{#if securityDefinitions}}
+# Security Definitions
+{{/if}}
+{{> security}}
+
+# APIs
+
+{{#each paths}}
+## {{@key}}
+{{#this}}
+{{#get}}
+### GET
+{{> operation}}
+{{/get}}
+
+{{#put}}
+### PUT
+{{> operation}}
+{{/put}}
+
+{{#post}}
+### POST
+
+{{> operation}}
+
+{{/post}}
+
+{{#delete}}
+### DELETE
+{{> operation}}
+{{/delete}}
+
+{{#option}}
+### OPTION
+{{> operation}}
+{{/option}}
+
+{{#patch}}
+### PATCH
+{{> operation}}
+{{/patch}}
+
+{{#head}}
+### HEAD
+{{> operation}}
+{{/head}}
+
+{{/this}}
+{{/each}}
+
+# Definitions
+{{#each definitions}}
+## <a name="/definitions/{{key}}">{{@key}}</a>
+
+<table border="1">
+    <tr>
+        <th>name</th>
+        <th>type</th>
+        <th>required</th>
+        <th>description</th>
+        <th>example</th>
+    </tr>
+    {{#each this.properties}}
+    <tr>
+        <td>{{@key}}</td>
+        <td>
+            {{#ifeq type "array"}}
+            {{#items.$ref}}
+            {{type}}[<a href="{{items.$ref}}">{{basename items.$ref}}</a>]
+            {{/items.$ref}}
+            {{^items.$ref}}{{type}}[{{items.type}}]{{/items.$ref}}
+            {{else}}
+            {{#$ref}}<a href="{{$ref}}">{{basename $ref}}</a>{{/$ref}}
+            {{^$ref}}{{type}}{{#format}} ({{format}}){{/format}}{{/$ref}}
+            {{/ifeq}}
+        </td>
+        <td>{{#required}}required{{/required}}{{^required}}optional{{/required}}</td>
+        <td>{{#description}}{{{description}}}{{/description}}{{^description}}-{{/description}}</td>
+        <td>{{example}}</td>
+    </tr>
+    {{/each}}
+</table>
+{{/each}}
\ No newline at end of file
diff --git a/templates/operation.hbs b/templates/operation.hbs
new file mode 100644
index 0000000..3ad3175
--- /dev/null
+++ b/templates/operation.hbs
@@ -0,0 +1,73 @@
+{{#deprecated}}-deprecated-{{/deprecated}}
+<a id="{{operationId}}">{{summary}}</a>
+
+{{description}}
+
+{{#if externalDocs.url}}{{externalDocs.description}}. [See external documents for more details]({{externalDocs.url}})
+{{/if}}
+
+{{#if security}}
+#### Security
+{{/if}}
+
+{{#security}}
+{{#each this}}
+* {{@key}}
+{{#this}}   * {{this}}
+{{/this}}
+{{/each}}
+{{/security}}
+
+#### Request
+
+{{#if consumes}}
+**Content-Type: ** {{join consumes ", "}}{{/if}}
+
+##### Parameters
+{{#if parameters}}
+<table border="1">
+    <tr>
+        <th>Name</th>
+        <th>Located in</th>
+        <th>Required</th>
+        <th>Description</th>
+        <th>Default</th>
+        <th>Schema</th>
+    </tr>
+    {{/if}}
+
+    {{#parameters}}
+    <tr>
+        <th>{{name}}</th>
+        <td>{{in}}</td>
+        <td>{{#if required}}yes{{else}}no{{/if}}</td>
+        <td>{{description}}{{#if pattern}} (**Pattern**: `{{pattern}}`){{/if}}</td>
+        <td> - </td>
+        {{#ifeq in "body"}}
+        <td>
+            {{#ifeq schema.type "array"}}Array[<a href="{{schema.items.$ref}}">{{basename schema.items.$ref}}</a>]{{/ifeq}}
+            {{#schema.$ref}}<a href="{{schema.$ref}}">{{basename schema.$ref}}</a> {{/schema.$ref}}
+        </td>
+        {{else}}
+        {{#ifeq type "array"}}
+        <td>Array[{{items.type}}] ({{collectionFormat}})</td>
+        {{else}}
+        <td>{{type}} {{#format}}({{format}}){{/format}}</td>
+        {{/ifeq}}
+        {{/ifeq}}
+    </tr>
+    {{/parameters}}
+    {{#if parameters}}
+</table>
+{{/if}}
+
+
+#### Response
+
+{{#if produces}}**Content-Type: ** {{join produces ", "}}{{/if}}
+
+
+| Status Code | Reason      | Response Model |
+|-------------|-------------|----------------|
+{{#each responses}}| {{@key}}    | {{description}} | {{#schema.$ref}}<a href="{{schema.$ref}}">{{basename schema.$ref}}</a>{{/schema.$ref}}{{#ifeq schema.type "array"}}Array[<a href="{{schema.items.$ref}}">{{basename schema.items.$ref}}</a>]{{/ifeq}}{{^schema}} - {{/schema}}|
+{{/each}}
\ No newline at end of file
diff --git a/templates/security.hbs b/templates/security.hbs
new file mode 100644
index 0000000..94badab
--- /dev/null
+++ b/templates/security.hbs
@@ -0,0 +1,88 @@
+{{#each securityDefinitions}}
+### {{@key}}
+{{#this}}
+{{#ifeq type "oauth2"}}
+<table>
+    <tr>
+        <th>type</th>
+        <th colspan="2">{{type}}</th>
+    </tr>
+    {{#if description}}
+    <tr>
+        <th>description</th>
+        <th colspan="2">{{description}}</th>
+    </tr>
+    {{/if}}
+    {{#if authorizationUrl}}
+    <tr>
+        <th>authorizationUrl</th>
+        <th colspan="2">{{authorizationUrl}}</th>
+    </tr>
+    {{/if}}
+    {{#if flow}}
+    <tr>
+        <th>flow</th>
+        <th colspan="2">{{flow}}</th>
+    </tr>
+    {{/if}}
+    {{#if tokenUrl}}
+    <tr>
+        <th>tokenUrl</th>
+        <th colspan="2">{{tokenUrl}}</th>
+    </tr>
+    {{/if}}
+    {{#if scopes}}
+    <tr>
+        <td rowspan="3">scopes</td>
+        {{#each scopes}}
+        <td>{{@key}}</td>
+        <td>{{this}}</td>
+    </tr>
+    <tr>
+        {{/each}}
+    </tr>
+    {{/if}}
+</table>
+{{/ifeq}}
+{{#ifeq type "apiKey"}}
+<table>
+    <tr>
+        <th>type</th>
+        <th colspan="2">{{type}}</th>
+    </tr>
+    {{#if description}}
+    <tr>
+        <th>description</th>
+        <th colspan="2">{{description}}</th>
+    </tr>
+    {{/if}}
+    {{#if name}}
+    <tr>
+        <th>name</th>
+        <th colspan="2">{{name}}</th>
+    </tr>
+    {{/if}}
+    {{#if in}}
+    <tr>
+        <th>in</th>
+        <th colspan="2">{{in}}</th>
+    </tr>
+    {{/if}}
+</table>
+{{/ifeq}}
+{{#ifeq type "basic"}}
+<table>
+    <tr>
+        <th>type</th>
+        <th colspan="2">{{type}}</th>
+    </tr>
+    {{#if description}}
+    <tr>
+        <th>description</th>
+        <th colspan="2">{{description}}</th>
+    </tr>
+    {{/if}}
+</table>
+{{/ifeq}}
+{{/this}}
+{{/each}}
\ No newline at end of file
diff --git a/templates/strapdown.html.hbs b/templates/strapdown.html.hbs
new file mode 100644
index 0000000..fd359ff
--- /dev/null
+++ b/templates/strapdown.html.hbs
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+<title>API Document</title>
+
+<xmp theme="united" style="display:none;">
+    {{>markdown}}
+</xmp>
+
+<script src="http://strapdownjs.com/v/0.2/strapdown.js"></script>
+</html>
\ No newline at end of file