diff --git a/get_started.txt b/get_started.txt
index 6eac812..a40deb3 100644
--- a/get_started.txt
+++ b/get_started.txt
@@ -21,14 +21,21 @@
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! *
 **********************************************************************
 
+Here you find a step-by-step instruction on how to build all documentation in this repository including:
+- architectureDocumentation.adoc
+- howtoBuild.adoc
+- howtoConfigure.adoc
+- howtoRun.adoc
+- userDocumentation.adoc
+At the end you have a pdf and a html version of each adoc (documentation).
 
 ---------------- REQUIREMENTS -------------
 * Java 1.8
 * Apache Maven 3.6.1
+* Graphviz
 
-
-IF you have this versions, check if you have set JAVA_HOME and M2_HOME.
-    - If yes: Ignore step 1 and 2
+If you meet this requirements, check if you have set JAVA_HOME and M2_HOME.
+    - If yes: Ignore step 1,2 and 3
     - If no: Follow the corresponding steps below
 
 
@@ -74,57 +81,20 @@
  Value of variable: <GRAPHVIZ_DIR>\bin
 
 -------------------- 4 ---------------------
-To get started with the project you have to clone gridFailureInformation backend and frontend projects.
-
-Backend <project_url>: https://git.eclipse.org/r/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.backend.git
-Frontend <project_url>: https://git.eclipse.org/r/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.frontend.git
-
-- Create a folder and do following for each of them
-- Open a cmd and navigate to the folder
-- use the command to create a clone of each project
-    § git clone <project_url>
-
-Developing only:
-- if you are going to develop, important is a switch to the develop branch
-    - navigate in the folder with the clone and switch to develop branch
-        $ git checkout <branch>
-- At the end just pull the actual version of the code
-    $ git pull origin <branch>
-
-
---------------------------
-Active Develop Branches: |
-Backend -> DEVELOP       |
-Frontend -> DEVELOP      |
--------------------------|
-Stable Branches: master  |
---------------------------
-
-
--------------------- 5 ---------------------
-Build the maven project
-
-The backend repository consists of several subprojects. The main backend is the
-"gfsBackService". Depending on the interfaces and the features you want to use, you
-need to build other subprojects as well:
--addressImport: Importing addresses from csv-files
--mailExport: Publish messages via e-mail
--stoerungsauskundtInteraces: Export and import messages from the site "stoerungsauskunft.de"
--others in future
-
-Building such a maven project, will produce a <project_name>.jar file, which is needed to run the project.
-- Open a command line and navigate to the root folder of the backend project
-- Use the following call to cleanly build and install artifacts into the local repository:
+Building the documentation:
+- Open a command line and navigate to the root folder of this project (same location of this very get_started.txt file)
+- Use the following call to cleanly build and install artifacts:
     $ mvn clean install
 
--------------------- 6 ---------------------
-Open and familiarize yourself with the project
-
-- if you successfully build the maven project you can find in /target/generated-docs all the documentations of this projects
+-------------------- 5 ---------------------
+If you successfully build the maven project you can find in /target/generated-docs all the documentations of this projects
+in pdf and html form, choose according to your liking:
     - "howtoBuild" -> here you can read how to build the whole (backend and frontend) project
-    - "howtoRun" -> here you can read how to run the Application
+    - "howtoConfigure" -> here you can read how to configure the Application
+    - "howtoRun" -> here you can read how to run/start the Application
     - "architectureDocumentation" -> here you can read about the architecture pf this module
 
+
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 NEXT STEP -> READ THE howtoBuild FILE             !
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
\ No newline at end of file
diff --git a/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc b/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc
index bc11abb..060ec30 100644
--- a/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc
+++ b/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc
@@ -1066,23 +1066,6 @@
 |5|power station name|String(255)
 |=========================================================
 
-=== Deployment of the application components
-
-==== Deployment of the frontend
-
-TODO:
-
-==== Deployment of the backend
-TODO:
-
-==== Deployment of the database
-The component "Flyway" is used to make to distribute structural
-or content related changes to the database.
-
-The database is built out of the scripts in the directory "db/migrations". Every sql
-script contains the complete db script for the contact base data database (in different versions).
-The highest version number indicates the currently valid script.
-
 ==== Configuration of the system
 
 ===== DB based configuration
@@ -1217,6 +1200,21 @@
 This automatically triggers the build and the deployment on the
 Q-environment.
 
+==== Deployment of the frontend
+
+TODO:
+
+==== Deployment of the backend
+TODO:
+
+==== Deployment of the database
+The component "Flyway" is used to make to distribute structural
+or content related changes to the database.
+
+The database is built out of the scripts in the directory "db/migrations". Every sql
+script contains the complete db script for the contact base data database (in different versions).
+The highest version number indicates the currently valid script.
+
 <<<
 
 == Design decisions
diff --git a/src/main/asciidoc/howto/howtoBuild.adoc b/src/main/asciidoc/howto/howtoBuild.adoc
index 193ce1b..f9a3aea 100644
--- a/src/main/asciidoc/howto/howtoBuild.adoc
+++ b/src/main/asciidoc/howto/howtoBuild.adoc
@@ -12,6 +12,8 @@
 
 :lang: en
 :encoding: utf-8
+:sectanchors:
+:numbered:
 <<<
 
 IMPORTANT: Please be sure that you have first *Portal (Auth n Auth)* and *ContactBaseData* installed and configured!
@@ -19,9 +21,62 @@
 == Requirements
 * Node.js 12.14.0
 * Angular-CLI
+* Java 1.8
+* Apache Maven
+
+== Chekout the project
+To get started with the project you have to clone gridFailureInformation backend and frontend projects.
+
+Backend repository url <project_url>: +
+https://git.eclipse.org/r/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.backend.git +
+Frontend repository url <project_url>: +
+https://git.eclipse.org/r/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.frontend.git +
+
+- Create a folder and do following for each of them
+- Open a cmd and navigate to the folder
+- use the command to create a clone of each project +
+§ git clone <project_url>
+
+.Developing only:
+If you are going to develop, important is a switch to the develop branch.
+
+- Navigate in the folder with the clone and switch to develop branch: +
+----
+$ git checkout <branch>
+----
+- At the end just pull the actual version of the code: +
+----
+$ git pull origin <branch>
+----
+
+Active Develop Branches: +
+Backend -> DEVELOP +
+Frontend -> DEVELOP +
+Stable Branches -> master
+
 
 == How to build the Backend
-To build the backend you need to have installed Apache Maven and Java (look at `/deploy/`*get_started.txt*).
+
+The backend repository consists of several subprojects. The main backend is the
+"gfsBackendService". Depending on the interfaces and the features you want to use, you
+need to build other subprojects as well:
+
+[horizontal]
+addressImport:: Importing addresses from csv-files
+mailExport:: Publish messages via e-mail
+stoerungsauskundtInteraces:: Export and import messages from the site "stoerungsauskunft.de"
+SARIS-Interface:: Import messages from SARIS
+SAMO-Interface:: Import messages from SAMO
+other interfaces in future:: ...
+
+
+Building such a maven project, will produce a <project_name>.jar file, which is needed to run the project.
+
+- Open a command line and navigate to the root folder of the backend project
+- Use the following call to cleanly build and install artifacts into the local repository: +
+----
+$ mvn clean install
+----
 
 == How to build the Frontend
 
@@ -58,7 +113,7 @@
 ----
 {blank}
 
-TIP: Next Step -> Read the *grid-failure-information_howtoRun* file!
+TIP: Next Step -> Read the *howtoRun* file!
 
 == How to build the SIT-Web-FE (Map- and Table-Component)
 === Prerequirements
diff --git a/src/main/asciidoc/howto/howtoConfigure.adoc b/src/main/asciidoc/howto/howtoConfigure.adoc
new file mode 100644
index 0000000..638d7ff
--- /dev/null
+++ b/src/main/asciidoc/howto/howtoConfigure.adoc
@@ -0,0 +1,313 @@
+= openKonsequenz - How to configure the modules
+
+:Date: 2020-03-24
+:Revision: 1
+
+:icons:
+:source-highlighter: highlightjs
+:highlightjs-theme: solarized_dark
+
+:imagesdir: ../img
+:iconsdir: ../img/icons
+
+:lang: en
+:encoding: utf-8
+:sectanchors:
+:numbered:
+:xrefstyle: full
+
+<<<
+
+IMPORTANT: Please be sure that you have first *Portal (Auth n Auth)* and *ContactBaseData* installed and configured!
+
+
+== Prerequisites
+* *howToBuild* documentation read and steps completed
+* *howToRun* documentation read
+* *application.yml* was copied from [microservice]/src/main/resources/application.yml next to the *.jar into the deployment folder
+of each microservice you want to use
+
+CAUTION: Each [microservice] has its *own application.yml*
+
+== Configuration of the system
+
+The backend services are configured in *application.yml* files. If there is an *application.yml* file next to the
+**.jar* file of the microservice this very *application.yml* has precedence over the default *application.yml* which resides
+inside the jar file. In other words if there is no *application.yml* next to the jar file the default one inside is beeing used.
+For reasons of convenience we use the method config-file outside and next to the jar.
+After editing an *application.yml* file, you have to restart the microservice for changes to take effect.
+
+Yml-files can be divided into different configuration profiles.
+When starting the backend-service one has the possibility to specify
+the active profile, if no profile is set the default is beeing used.
+The default profile is the one which you most likely want to configure and which you are going
+to use. If you want different or more profiles see the following link for further details:
+https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-profiles
+
+CAUTION: _Credentials (Username and Password)_ +
+All credentials in this yml-files are hidden. Environment variables are used to set
+them. Get an environment variable in a yml-file this way `${ENVIRONEMT_VARIABLE}`.
+To successfully run the backend service either set the environment variable for the using platform
+or replace them in the yml-file.
+
+
+=== Periodically executed jobs - Cron expression
+
+To execute periodically occuring jobs, Spring uses a form of cron expression.
+They don't follow the same format as UNIX cron expressions.
+
+Spring Cron expression consists of six sequential fields:
+----
+second, minute, hour, day of month, month, day(s) of week
+----
+
+.Explenation
+[options="header,footer"]
+|=======================
+|syntax |means            |example        | explanation
+|*      |match any        |"* * * * * *"  | do always
+|*/x    |every x          |"*/5 * * * * *"| do every five seconds
+|?      |no specification |"0 0 0 24 12 ?"| do every Christmas Day
+|=======================
+
+.Examples
+[options="header,footer"]
+|=======================
+|syntax                 |means
+|"0 0 * * * *"          |the top of every hour of every day.
+|"0 */1 * ? * *"        |every minute starting at second 0.
+|"0 */5 * ? * *"        |every 5 minutes starting at second 0.
+|"*/10 * * * * *"       |every ten seconds.
+|"0 0 8-10 * * *"       |8, 9 and 10 o'clock of every day.
+|"0 0/30 8-10 * * *"    |8:00, 8:30, 9:00, 9:30 and 10 o'clock every day.
+|"0 0 9-17 * * MON-FRI" |on the hour nine-to-five weekdays
+|"0 0 0 24 12 ?"        |every Christmas Day at midnight
+|=======================
+
+You can use the following generator but keep in mind to *not use the year*.
+The spring expression hast to consist of six fields only:
+
+https://www.freeformatter.com/cron-expression-generator-quartz.html
+
+[#secureEndpoints]
+=== Secure Endpoints
+
+The main backend (gfsBackendService) is secured by JWTs (JSON-Web-Tokens).
+The following services are secured by "Basic Authentication":
+
+* addressImport
+* mailExport
+* stoerungsauskunftInterface
+* SARISInterface
+
+For each of them you will find the following parameters to configure the "Basic Authentication" in the
+corresponding *application.yml*:
+
+* *security.endpoint.user* Username for the secure endpoint
+* *security.endpoint.password* Password for the secure endpoint
+
+SAMOInterface has no public endpoints and therefore doesn't need to be secured.
+
+[NOTE]
+Besides the initial manual import of all addresses, this endpoints (in combination with Swagger) are primarily a convenient way to
+test the functionality of the application.
+
+
+=== Configuration of each service
+
+The following services has to be configured and its parameters will be explained in the next sections:
+
+* <<configuration-gfsBackendService>>
+* <<configuration-addressImport>>
+* <<configuration-mailExport>>
+* Interfaces
+** <<configuration-stoerungsauskunftInterface>>
+** <<configuration-SAMOInterface>>
+** <<configuration-SARISInterface>>
+
+Some parameters explained in <<configuration-gfsBackendService>> below, are used in other services
+as well an won't be explained again (for example <<configuration-section-rabbit_mq>>).
+
+[#configuration-gfsBackendService]
+==== Configuration of gfsBackendService (Main Backend)
+
+
+* *spring.datasource* configuration section for the database connection
+* *flyway.enabled* If enabled=true then the database migrations
+will automatically performed when starting the application
+(this parameter should normally be set to "false"
+* *server.port* Port on which this microservice is deployed on (DEPLOYMENT_PORT). (E.g. for gfsBackendService: 9165)
+* *server.max-http-header-size* Maximum size for the http-headers
+* *jwt.tokenHeader* Name of the http-header which carries the authentication-token.
+(should be "Authorization")
+* *jwt.useStaticJwt* If set to "true" then the backend will use *jwt.staticJwt*
+as Authorization-token. (This won't work for calls to other modules
+like the Auth'n'Auth-Modul, because the token will be out of date)
+* *process.definitions.classification.plannedMeasureDbid* Id in DB of "geplante Maßnahme" of table ref_failure_classification.
+This is needed for the proccess grid.
+* *reminder.status-change.minutes-before* Send reminder mail to publisher distribution group x minutes before planned end date
+of the gridfailureinformation. (value in minutes, Example: 1440)
+* *export-to-dmz.enabled* Switch to export periodically published gridfailureinformations  to the external "Table/Map-Web-Component"
+(true or false)
+* *export-to-dmz.cron* Cron-expression for the export job (above). (Example: 0 */10 * ? * *)
+* *swagger.enabled* Switch to enabled/disable Swagger (Endpoints). (true/false)
+
+
+
+[#configuration-section-rabbit_mq, reftext="_RabbitMQ configuration_"]
+_RabbitMQ configuration_
+
+* *rabbitmq.host* RabbitMQ-Server (for example "localhost")
+* *rabbitmq.port* Port of the RabbitMQ-Server (for example "5672")
+* *rabbitmq.username* Username for the technical RabbitMQ user
+* *rabbitmq.password* Password the the technical RabbitMQ user
+* *rabbitmq.routingkey* Routing key for the import queue
+* *rabbitmq.exchangename*: Exchange name for the import queue
+* *rabbitmq.importExchange*: Exchange name for the import queue
+* *rabbitmq.importQueue* Queuename for the import queue (will be created by the backend)
+* *rabbitmq.importkey* Routing key for the import queue
+* *rabbitmq.exportExchange*: Exchange name for the export queue
+* *rabbitmq.exportQueue*: Queuename for the export queue (will be created by the backend)
+* *rabbitmq.exportKey*: Exchange name for the export queue
+* *rabbitmq.isMailType*: Should this channel be treated as a mail channel? +
+If true messages of this channel will be sent via email.
+
+*exportExchange* in the main backend is further divided into *channels* functionality stays the same as describe above.
+
+
+[#configuration-section-settings]
+_UI setting_
+
+* *overviewMapInitialZoom*: Initial zoom-factor for the display of the overview map (default is 10)
+* *detailMapInitialZoom*: Inital zoom-factor for the display of map in the detail view (for example 10)
+* *overviewMapInitialLatitude*: Initial latitude for the overview map (for example 49.656634)
+* *overviewMapInitialLongitude*: Initial longitude for the overview map (for example 8.423207)
+* *daysInPastToShowClosedInfos*: Days in the past, before a closed failure information will not be shown any more (for example 365)
+* *dataExternInitialVisibility*: *show* or *hide* data in the external map or table unless a postcode has been entered
+
+[#configuration-section-mailtemplates]
+_Mail settings (Default templates)_
+
+
+* *emailSubjectPublishInit*: Template for the subject of the publishing e-mail
+* *emailContentPublishInit*: Template for the body of the publishing e-mail
+* *emailSubjectUpdateInit*: Template for the subject of the update e-mail
+* *emailContentUpdateInit*: Template for the body of the update e-mail
+* *emailSubjectCompleteInit*: Template for the subject of the completed e-mail
+* *emailContentCompleteInit*: Template for the body of the completed e-mail
+* *distribution-group-publisher.name*: Name of the distribution group for the publisher (Example: "Veröffentlicher")
+* *distribution-group-publisher.distribution-text*: Template for the body of the e-mail
+which is sent to the publisher distribution group
+
+[#configuration-section-visibility-of-fields]
+_Field visibility settings_
+
+Please configure the visibilty of fields in this section using "show" or "hide"
+
+* *visibilityConfiguration.fieldVisibility*: Here you can set the visibility of fields in the detail mask of the Failure
+Information
+* *visibilityConfiguration.tableInternColumnVisibility*: Here you can set the visibility of column in the
+internal table
+* *visibilityConfiguration.tableExternColumnVisibility*: Use "show" or "hide" to toggle the visibility of columns
+in the external table
+* *visibilityConfiguration.mapExternTooltipVisibility*: Here you can define which column shall be shown or hidden
+in the tooltips of the external map
+
+[#configuration-section-services]
+_Services configuration_
+
+* *services.authNAuth.name* Name for  Auth'n'Auth-Service-Service (for example "authNAuthService")
+* *services.authNAuth.technical-username* Technical user for Auth'n'Auth-Service-Service
+* *services.authNAuth.technical-userpassword* Password for technical-user for Auth'n'Auth-Service-Service
+* *services.contacts.name* Name for ContactBaseData-Service (for example "contactService")
+* *services.contacts.communicationType.mobile* Designation of mobile phone number as communication type in
+ContactBaseData-Service (for example "Mobil")
+* *services.contacts.useModuleNameForFilter*  Boolean Parameter to decide whether to filter contacts in
+contact service by module name in ContactBaseData-Service ("true" / "false")
+* *services.contacts.moduleName*  name of module to filter data from ContactBaseData-Service
+(for example "Störungsinformationstool")
+* *services.sitCache.name* Name for SitCache-Service (for example "sitCacheService")
+
+* *portalFeLoginURL* Login Url of your Portal (Auth n Auth) module.
+This is needed for the creation of the direct email link to a gridfailure information message.
+* *portalFeModulename* Name of this module as it is displayed in the Portal (Auth n Auth) module
+below the corresponding image (example "Störungsinformationstool").
+This is needed for the creation of the direct email link to a gridfailure information message.
+
+* *authNAuthService.ribbon.listOfServers* Here one can configure the base url to the Auth'n'Auth-Service
+* *contactService.ribbon.listOfServers* Here one can configure the base url to the ContactBaseData-Service
+* *sitCacheService.ribbon.listOfServers* Here one can configure the base url to the SitCacheService-Service
+
+
+[#configuration-addressImport]
+==== Configuration of addressImport
+* *utm.zoneNumber* Parameters needed to calculate latitude/longitude coordinates (32)
+* *utm.zoneLetter* Parameters needed to calculate latitude/longitude coordinates (U)
+https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system
+
+* *adressimport.cleanup* Cleanup the adress database before each import? (true/false)
+* *adressimport.cron* Cron-expression for the adress import job
+* *adressimport.file(s)* Path of each CSV-file to import
+
+''''
+.How to start import of addresses manually
+To start the import of addresses manually you can use the endpoint of the addressImporter,
+alternatively you can wait until the cron expression starts the job automatically.
+
+. Navigate with your browser to:
+
+----
+[HOSTNAME_OF_DEPLOYMENT]:[DEPLOYMENT_PORT_OF_ADDRESSIMPORTER]/swagger-ui.html#/
+----
+
+[start=2]
+. Enter the credentials you have set for the endpoints of the addressImporter. (See <<secureEndpoints>>)
+. Press "adress-import-controller". You should see now the following screen:
+
+image::swagger-ui-addressimporter.png[]
+
+[start=3]
+. Press somewhere in the "POST" row and then press "Try it out"
+
+image::swagger-ui-addressimporter-try-out.png[]
+
+[start=4]
+. Now press the big blue "Execute" button
+. The import has successfully started if you receive a status code 200
+
+[#configuration-mailExport]
+==== Configuration of mailExport
+* *email.sender* Email adress of your sender for the automatically sent emails.
+* *email.smtpHost* SMTP-Host of your email provider
+* *email.port* Port of your email provider
+
+[#configuration-stoerungsauskunftInterface]
+==== Configuration of stoerungsauskunft-Interface
+* *stoerungsauskunft.apiUrl* URL to the endpoint of "stoerungsauskunft.de"
+(Development: https://stage-api-operator.stoerungsauskunft.de/api/v1.0/ )
+change to production enviroment accordingly.
+* *stoerungsauskunft.user* Username for stoerungsauskunft.de
+* *stoerungsauskunft.password* Password for stoerungsauskunft.de
+* *stoerungsauskunft.scheduling-import.enabled* Switch to enable/disable automatic import from stoerungsauskunft.de (true/false)
+* *stoerungsauskunft.scheduling-import.cron* Cron-expression for automatic import from stoerungsauskunft.de (Example: 0 */20 * ? * *)
+
+[#configuration-SAMOInterface]
+==== Configuration of SAMO-Interface
+* *sftp.enable-polling* Switch to enable/disable automatic import from SAMO (true/false)
+* *sftp.host* IP-address of the host
+
+You can decide if you want to access sftp via username/password or with ssh private/publicKey. If you set a path to a privateKey
+this method has precedence over username/password-method and is used instead. Keep in mind *not* to set an passphrase since
+confirmation of the passphrase is not possible in this automatic process.
+
+* *sftp.privateKey*  Private key in form of "file: _PATH_TO_FILE_" without quotes (Example: "file:C:\sshKeys\privateOpenKQServer_key-SAMO-Interface" without quotes)
+* *sftp.privateKeyPassphrase* leave it empty
+* *sftp.user* Username for the sftp access
+* *sftp.password* Password for the sftp access
+* *sftp.deleteRemoteFile* Switch to delete remote file after succesfully import. Leave it on true (true/false)
+* *sftp.directory* Path of the remote directory on the server where the *.json file to import is located
+* *sftp.fileFilter* Which file formats to import, leave it in JSON (*.json)
+* *sftp.cron* Cron-expression for automatic import from SAMO (Example: 0 */10 * ? * *)
+
+[#configuration-SARISInterface]
+==== Configuration of SARIS-Interface
\ No newline at end of file
diff --git a/src/main/asciidoc/howto/howtoRun.adoc b/src/main/asciidoc/howto/howtoRun.adoc
index 1ac35d0..1fbffb7 100644
--- a/src/main/asciidoc/howto/howtoRun.adoc
+++ b/src/main/asciidoc/howto/howtoRun.adoc
@@ -38,13 +38,23 @@
 
 *** To initialize the database schema run the latest sql script:
 
- /src/resources/db/migration/V0_??__CREATE_GFI_DB.sql
+ /src/resources/db/migration/V0_60__CREATE_GFI_DB_Complete_V_1.0.0.sql
 
 
 == How to run the Backend
-To run the backend you to create a separate directory for each backend microservice
+To run the backend you need to create a separate directory for each backend microservice
 you want to use, get the **.jar* file from the *target* directory of the java-project (which should exists after
-a successful maven-build) and copy it to the new directory (i.e. "gfsBackService").
+a successful maven-build) and copy it to the new directory (i.e. "gfsBackendService" = [_deployFolder_]).
+
+To configure each application (microservice) and adjust to your likings, we use the file *application.yml* for. +
+Copy the file *application.yml* from [microservice]/src/main/resources/application.yml next to the **.jar* in your [_deployFolder_].
+This step has to be done for *each* microservice but most of the configuration is done in the "main backend" (i.e.
+"gfsBackendService"), so every microservice has its own *application.yml*. +
+The folder *logs* is created at the first time you start the application.
+
+.Deployment folder structure, folder logs is created at first start
+image::deployStructure.png[]
+
 
 Depending on which services you want to use, you have to install different microservices:
 
@@ -52,10 +62,11 @@
 * *gfsBackend* (Main backendservice - always needed)
 * *mailExport* (Export messages via e-mail)
 * *SAMOInterface* (Import interface for the SAMO System)
+* *SARISInterface* (Import interface for the SARIS System)
 * *StoerungsauskunftInterface* (Import and export interface for the site "Stoerungsauskunft.de")
 
-Once you created a directory and copied the **.jar* file you need to configure each service. Please
-read the architecture documentation to get information about the possible configurations of the services.
+Once you created a directory and copied the **.jar* file you need to configure each service via the *application.yml*. +
+See *howtoConfigure* documentation to get information about the possible configurations of the services.
 
 * Open a command line and navigate to the root folder of the service you want to start
 * Run the command
@@ -68,32 +79,32 @@
 
 
 == How to run the Frontend
+
+IMPORTANT: Please be sure that you have first *Portal (Auth n Auth)* and *ContactBaseData* installed and configured!
+Make sure you have added the module *gridFailureInformation* to the *Portal (Auth n Auth)* module configuration (see Portal Project: moduleConfig***.json)
+
 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.
 
+* Navigate to the root folder of the project. Adjust the parameter "target" in the file *proxy.conf.json* (root folder) accordingly, pointing to the main backend url and its port. +
+Example: If you have started the main backend ("gfsBackendService") on the same machine with default values, then the "target" would be
+"http://localhost:9165/".
 * Open a command line and navigate to the root folder of the frontend project
 * Run the command
 
 [source,command]
 ----
-   $  npm start
+   $  npm start-local
 ----
 {blank}
 
-* Open a browser and type:
+* You can now access the application via the *Portal (Auth n Auth)* with a valid user who owns rights for the module *gridFailureInformation*.
 
-[source,http]
-----
-    http://localhost:4200
-----
 {blank}
 
-IMPORTANT: The reason you maybe don´t see the application running properly, is that you have not even logged in.
-To do so, run first the Portal project, where you can log in and then open the elogbook.
-
 == How to run the SIT-Web-Cache-Service
 === Prerequirements
 * SIT-Web-Cache-Service is built properly. Otherwise following the instructions in the *howtoBuild* file!
diff --git a/src/main/asciidoc/img/deployStructure.png b/src/main/asciidoc/img/deployStructure.png
new file mode 100644
index 0000000..105c457
--- /dev/null
+++ b/src/main/asciidoc/img/deployStructure.png
Binary files differ
diff --git a/src/main/asciidoc/img/swagger-ui-addressimporter-try-out.png b/src/main/asciidoc/img/swagger-ui-addressimporter-try-out.png
new file mode 100644
index 0000000..47634cb
--- /dev/null
+++ b/src/main/asciidoc/img/swagger-ui-addressimporter-try-out.png
Binary files differ
diff --git a/src/main/asciidoc/img/swagger-ui-addressimporter.png b/src/main/asciidoc/img/swagger-ui-addressimporter.png
new file mode 100644
index 0000000..415d2c1
--- /dev/null
+++ b/src/main/asciidoc/img/swagger-ui-addressimporter.png
Binary files differ
