[TOB-73,359,403,430] doc: userdoc and finish
Commit contains all backend tasks for the sprint ten.
The focus of sprint 10 was to:
- move documentation from backend repo to docu repo
- finish architecture documentation
- add userdocumentation
- finish howto Documentation
- add howto for using other databases
Details:
[TOB-430] doc: architecture documentation
* cleanup documentation
[TOB-430] doc: Add building block view for front end
[TOB-450] doc: Add user doc link to how to run
[TOB-430] doc: update images
* fixed typos in architecture documentation images
* fixed userdoc images
* added frontend component diag
* added feature modules diag
[TOB-430] doc: Update front-end dependencies
* Fix typos/grammar
* Remove text block newline/pagebreak markdown
[TOB-449] doc: userdoc
* add portrait version of workflow in attachment
* fix typos
[TOB-449] doc: userdoc cleanup
* replaced placeholder images of admin sections
* replaced popup image
* fixed typos and formulations in documentation
* added java parameter to build script
[TOB-359] doc: howto alternate databases
* added documentation for alternate databases (i.e. Oracle)
[TOB-449] doc: enhance userdoc
* enhanced content
* fixed some typos
* fixed references
[TOB-449] doc: enhance userdocumentation
* added workflow data section
* added admin sections
[TOB-449] doc: enhance userdocumentation
* added sections for textblock editor
* added images
* added sections for statement official in charge
* added sections for approver
* added sections for department member
[TOB-448] doc: user documentation
* added basic document structure
* added description of main user interface views
[TOB-394] doc: architecture documentation
* enhance architecture documentation by adding database and workflow
engine sections and cleaned up some typos, etc.
* update image references from png to svg for smaller document size and
sharper images
[TOB-403] doc: Update howtoRun/howtoBuild for front end
[TOB-403] doc: move doc to documentation repo
* copied documentation from statement module back-end repo.
* added /README.md
* added /pom.xml for maven build
* added /build script to run the build in an encapsulated docker
environment
Signed-off-by: Tobias Stummer <stummer@develop-group.de>
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..fa462bc
--- /dev/null
+++ b/README.md
@@ -0,0 +1,9 @@
+# Eclipse openK User Modules - Statement Public Affairs documentation
+
+This application represents a user module for the [Eclipse openK User Modules](https://projects.eclipse.org/projects/technology.openk-usermodules) project.
+
+## Build
+
+Run `mvn clean build` to build the documentation. All build artifacts will be stored in the `targets/` directory.
+
+
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..cd816fa
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+*******************************************************************************
+* Copyright (c) 2019 Contributors to the Eclipse Foundation
+*
+* See the NOTICE file(s) distributed with this work for additional
+* information regarding copyright ownership.
+*
+* This program and the accompanying materials are made available under the
+* terms of the Eclipse Public License v. 2.0 which is available at
+* http://www.eclipse.org/legal/epl-2.0.
+*
+* SPDX-License-Identifier: EPL-2.0
+*******************************************************************************
+-->
+<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+<modelVersion>4.0.0</modelVersion>
+<groupId>org.eclipse.openk</groupId>
+<artifactId>statement-public-affairs-doc</artifactId>
+<version>1.0.0</version>
+<name>statement-public-affairs documentation</name>
+<description>StatementPublicAffairs project documentation for openKONSEQUENZ</description>
+
+<properties>
+ <jruby-complete-version>9.0.0.0</jruby-complete-version>
+ <asciidoctor-maven-plugin-version>1.5.3</asciidoctor-maven-plugin-version>
+ <asciidoctorj-pdf-version>1.5.0-alpha.11</asciidoctorj-pdf-version>
+ <asciidoctorj-version>1.5.4</asciidoctorj-version>
+ <asciidoctorj-diagram-versions>1.5.4.1</asciidoctorj-diagram-versions>
+</properties>
+
+<build>
+ <defaultGoal>compile</defaultGoal>
+ <finalName>${project.artifactId}</finalName>
+
+ <plugins>
+ <plugin>
+ <groupId>org.asciidoctor</groupId>
+ <artifactId>asciidoctor-maven-plugin</artifactId>
+ <version>${asciidoctor-maven-plugin-version}</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.jruby</groupId>
+ <artifactId>jruby-complete</artifactId>
+ <version>${jruby-complete-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.asciidoctor</groupId>
+ <artifactId>asciidoctorj-pdf</artifactId>
+ <version>${asciidoctorj-pdf-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-versions}</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>./images</imagesDir>
+ <requires>
+ <require>asciidoctor-diagram</require>
+ </requires>
+ <sourceHighlighter>coderay</sourceHighlighter>
+ <backend>html</backend>
+ <doctype>article</doctype>
+ </configuration>
+ </execution>
+ <execution>
+ <id>output-pdf</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>pdf</backend>
+ <doctype>article</doctype>
+ <attributes>
+ <icons>font</icons>
+ <pagenums />
+ <toc />
+ <idprefix />
+ <idseparator>-</idseparator>
+ </attributes>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+</build>
+
+</project>
diff --git a/src/main/asciidoc/api/openapi.yaml b/src/main/asciidoc/api/openapi.yaml
new file mode 100644
index 0000000..c38b40a
--- /dev/null
+++ b/src/main/asciidoc/api/openapi.yaml
@@ -0,0 +1,2841 @@
+openapi: 3.0.0
+info:
+ description: "REST interface description of the openKONSEQUENZ module statement-public-affairs backend."
+ version: "0.0.1"
+ title: "OpenKONSEQUENZ Module Statement-Public-Affairs back-end"
+ license:
+ name: "EPL-2.0"
+ url: "http://www.eclipse.org/legal/epl-2.0"
+
+tags:
+ -
+ name: basic
+ description: Basic interfaces
+paths:
+
+
+ /admin/departments:
+ get:
+ tags:
+ - "admin"
+ summary: "Get department and sector configuration"
+ responses:
+ 200:
+ description: "Latest department and sector configuration"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DepartmentStructure'
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+ put:
+ tags:
+ - "admin"
+ summary: "Set department and sector configuration"
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DepartmentStructure'
+ responses:
+ 204:
+ description: "Successfully set"
+ 400:
+ description: "Bad Request"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+ /admin/textblockconfig:
+ get:
+ tags:
+ - "admin"
+ summary: "Get latest Textblock Configuration"
+ responses:
+ 200:
+ description: "Latest Textblock Configuration"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/TextblockConfiguration'
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+ put:
+ tags:
+ - "admin"
+ summary: "Set Textblock Configuration"
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/TextblockConfiguration'
+ responses:
+ 204:
+ description: "Successfully set"
+ 400:
+ description: "Bad Request"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+ /admin/users-sync:
+ post:
+ tags:
+ - "admin"
+ summary: "Sync users from auth-n-auth"
+ responses:
+ 204:
+ description: "Successful"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+ /admin/users:
+ get:
+ tags:
+ - "admin"
+ summary: "Get user list"
+ responses:
+ 200:
+ description: "List of all users"
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/User'
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+ /admin/users/{userId}/settings:
+ post:
+ tags:
+ - "admin"
+ summary: "Set user detail settings"
+ parameters:
+ - name: userId
+ in: path
+ description: User ID
+ required: true
+ schema:
+ type: integer
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UserSettings'
+
+ responses:
+ 204:
+ description: "Successfully set"
+ 400:
+ description: "Bad Request, maybe malformed email"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "User not found"
+ 424:
+ description: "Departement not found"
+ security:
+ - JWT:
+ - spa_access
+
+ /logout:
+ get:
+ tags:
+ - "basic"
+ summary: "Logout of the service"
+ description: "Invalidate the access token"
+ responses:
+ 204:
+ description: "Logout successful"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ security:
+ - JWT:
+ - spa_access
+ /geo-coordinate-transform:
+ post:
+ tags:
+ - "map"
+ summary: "Transform geo coordinates"
+ description: "Transform geo coordinates"
+ parameters:
+ - name: from
+ in: query
+ description: "Input position format"
+ required: true
+ schema:
+ type: string
+ - name: to
+ in: query
+ description: "Output position format"
+ required: true
+ schema:
+ type: string
+ requestBody:
+ description: "Geo coordinates dictionary"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/GeoPositions'
+ responses:
+ 200:
+ description: "Transformed Geo Positions"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/GeoPositions'
+ 400:
+ description: "Bad Request"
+
+
+
+ /keepalive-session:
+ get:
+ tags:
+ - "basic"
+ summary: "Extend session validity"
+ description: "Should be called every minute to ensure that the session for the given token identifer is not "
+ responses:
+ 204:
+ description: "Successfully extended"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+ /version:
+ get:
+ tags:
+ - "basic"
+ summary: "Service version"
+ description: "Application name, build version, etc."
+ responses:
+ 200:
+ description: "Version response"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/VersionModel'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+
+ /contacts:
+ get:
+ tags:
+ - "contacts"
+ summary: "Get contact details for contact with given contactId"
+ description: "Get contact details for contact with given contactId"
+ parameters:
+ - name: q
+ in: query
+ description: "Search string"
+ required: true
+ schema:
+ type: string
+ - name: size
+ in: query
+ description: "Page size"
+ required: false
+ schema:
+ type: integer
+ - name: page
+ in: query
+ description: "Page number"
+ required: false
+ schema:
+ type: integer
+ - name: sort
+ in: query
+ description: "Sort parameter"
+ required: false
+ schema:
+ type: string
+ example: "name|email|firstName|lastName"
+ responses:
+ 200:
+ description: "Paged list of matching contacts"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/PagedContacts'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden, maybe not enough rights to access contact module."
+ security:
+ - JWT:
+ - spa_access
+
+ /contacts/{contactId}:
+ get:
+ tags:
+ - "contacts"
+ summary: "Get contact details for contact with given contactId"
+ description: "Get contact details for contact with given contactId"
+ parameters:
+ - name: contactId
+ in: path
+ description: Contact ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ responses:
+ 200:
+ description: "Contact details"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ContactDetails'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden, maybe not enough rights to access contact module."
+ 404:
+ description: "Not Found - Contact with given contactId could not be found."
+ security:
+ - JWT:
+ - spa_access
+
+ /sectors:
+ get:
+ tags:
+ - "statement"
+ summary: "Get all sectors"
+ responses:
+ 200:
+ description: "Map of sectors by location."
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Sectors'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+ /statements/{statementId}/sectors:
+ get:
+ tags:
+ - "statement"
+ summary: "Get all sectors"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ 200:
+ description: "Map of sectors by location."
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Sectors'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+ /statementpositionsearch:
+ get:
+ tags:
+ - "statement"
+ summary: "Search statementpositions with queries"
+ parameters:
+ - name: dueDateFrom
+ in: query
+ description: "Search substrings of city, district or type"
+ required: false
+ schema:
+ type: string
+ - name: dueDateTo
+ in: query
+ description: "Search substrings of city, district or type"
+ required: false
+ schema:
+ type: string
+ - name: typeId
+ in: query
+ description: "Search substrings of city, district or type"
+ required: false
+ schema:
+ type: integer
+ responses:
+ 200:
+ description: "List of searched Statements filtered according to url parameters"
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/StatementPositionModel'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+ /statementsearch:
+ get:
+ tags:
+ - "statement"
+ summary: "Search statements with queries"
+
+ parameters:
+ - name: q
+ in: query
+ description: "Search substrings of city, district or type"
+ required: false
+ schema:
+ type: array
+ items:
+ type: string
+ - name: dueDateFrom
+ in: query
+ description: "Search substrings of city, district or type"
+ required: false
+ schema:
+ type: string
+ - name: dueDateTo
+ in: query
+ description: "Search substrings of city, district or type"
+ required: false
+ schema:
+ type: string
+ - name: receiptDateFrom
+ in: query
+ description: "Search substrings of city, district or type"
+ required: false
+ schema:
+ type: string
+ - name: receiptDateTo
+ in: query
+ description: "Search substrings of city, district or type"
+ required: false
+ schema:
+ type: string
+ - name: creationDateFrom
+ in: query
+ description: "Search substrings of city, district or type"
+ required: false
+ schema:
+ type: string
+ - name: creationDateTo
+ in: query
+ description: "Search substrings of city, district or type"
+ required: false
+ schema:
+ type: string
+ - name: city
+ in: query
+ description: "Search substrings of city, district or type"
+ required: false
+ schema:
+ type: string
+ - name: district
+ in: query
+ description: "Search substrings of city, district or type"
+ required: false
+ schema:
+ type: string
+ - name: typeId
+ in: query
+ description: "Search substrings of city, district or type"
+ required: false
+ schema:
+ type: integer
+ - name: finished
+ in: query
+ description: "Search substrings of city, district or type"
+ required: false
+ schema:
+ type: boolean
+ - name: editedByMe
+ in: query
+ description: "Search substrings of city, district or type"
+ required: false
+ schema:
+ type: boolean
+ - name: size
+ in: query
+ description: "Page size"
+ required: false
+ schema:
+ type: integer
+ - name: page
+ in: query
+ description: "Page number"
+ required: false
+ schema:
+ type: integer
+ - name: sort
+ in: query
+ description: "Sort parameter sortkey,[asc|desc]"
+ required: false
+ schema:
+ type: string
+ example: "dueDate,asc | dueDate,desc"
+
+ responses:
+ 200:
+ description: "List of searched Statements filtered according to url parameters"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListStatementModel'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+ /statements:
+ get:
+ tags:
+ - "statement"
+ summary: "List all Statements"
+ description: "List all Statements. Filtering by statement Ids via query parameter"
+ parameters:
+ - name: ids
+ in: query
+ description: Statement IDs
+ required: false
+ schema:
+ type: array
+ items:
+ type: integer
+ responses:
+ 200:
+ description: "List of all Statements filtered according to url parameters"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListStatementModel'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+ post:
+ tags:
+ - "statement"
+ summary: "Create a new Statement"
+ description: "Create a new Statement."
+ requestBody:
+ description: "New Statement. Fields like id, finished and taskId are overridden by the backend."
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/StatementModel'
+
+ responses:
+ 200:
+ description: "New Staetement with correct id and other additional information added by the creation process"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/StatementModel'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/task/{taskId}/statement:
+ post:
+ tags:
+ - "process"
+ summary: "Update a Statement"
+ description: "Update a Statement."
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ requestBody:
+ description: "Updated Statement."
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/StatementModel'
+
+ responses:
+ 204:
+ description: "Successful"
+ 400:
+ description: "Bad Request - Invalid statement model"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+ /statement-data/types:
+ get:
+ tags:
+ - "statement"
+ summary: "Get List of available Statement types"
+ description: "Get List of available Statement types"
+ responses:
+ 200:
+ description: "List of Statement Types"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListStatementType'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+ /statements/{statementId}:
+ get:
+ tags:
+ - "statement"
+ summary: "Get Statement with statementId"
+ description: "Get Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ 200:
+ description: "Statement with statementId"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/StatementModel'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+ /statements/{statementId}/contact:
+ get:
+ tags:
+ - "statement"
+ summary: "Get statement contact"
+ description: "Get statement contact"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ 200:
+ description: "Contact details"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ContactDetails'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+
+ /statements/{statementId}/workflowmodel:
+ get:
+ tags:
+ - "statement"
+ summary: "Get Statement with statementId"
+ description: "Get Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ 200:
+ description: "Statement with statementId"
+ content:
+ application/xml:
+ schema:
+ type: string
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+
+ /statements/{statementId}/attachments:
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ get:
+ tags:
+ - "attachment"
+ summary: "List Attachments for Statement with statementId"
+ description: "List Attachments for Statement with statementId"
+
+ responses:
+ 200:
+ description: "List of Attachments"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListAttachmentModel'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/task/{taskId}/transfermailtext:
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ post:
+ tags:
+ - "attachment"
+ - "mail"
+ summary: "Transfer mail text to statement attachment"
+ responses:
+ 200:
+ description: "successful"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId or task with taskId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/task/{taskId}/transfermailattachments:
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ post:
+ tags:
+ - "attachment"
+ - "mail"
+ summary: "Transfer mail attachments to statement attachment"
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListTransferAttachments'
+ responses:
+ 200:
+ description: "successful"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListAttachmentModel'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId or task with taskId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+
+ /process/statements/{statementId}/task/{taskId}/attachments:
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ - name: tagId
+ in: query
+ description: Tag ID
+ required: false
+ schema:
+ type: string
+ post:
+ tags:
+ - "attachment"
+ summary: "Create a new Attachment"
+ description: "Create a new Attachment."
+ requestBody:
+ content:
+ multipart/form-data:
+ schema:
+ type: object
+ properties:
+ attachment:
+ type: array
+ items:
+ type: string
+ format: binary
+ responses:
+ 200:
+ description: "New Attachment with correct id and other additional information added by the creation process"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/AttachmentModel'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+ /process/statements/{statementId}/task/{taskId}/attachments/{attachmentId}:
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ - name: attachmentId
+ in: path
+ description: Attachment ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ delete:
+ tags:
+ - "attachment"
+ summary: "Delete Attachment with Id"
+ description: "Delete Attachment with Id"
+ responses:
+ 204:
+ description: "Deletion successful."
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Attachment not found"
+ security:
+ - JWT:
+ - spa_access
+
+ /statements/{statementId}/consideration:
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ post:
+ tags:
+ - "attachment"
+ summary: "Create a new Attachment with consideration tag only allowed when statement is finished."
+ description: "Create a new Attachment with consideration tag only allowed when statement is finished."
+ requestBody:
+ content:
+ multipart/form-data:
+ schema:
+ type: object
+ properties:
+ attachment:
+ type: array
+ items:
+ type: string
+ format: binary
+ responses:
+ 200:
+ description: "New Attachment with correct id and other additional information added by the creation process"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/AttachmentModel'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /statements/{statementId}/attachments/{attachmentId}:
+ get:
+ tags:
+ - "attachment"
+ summary: "Get Attachment details with attachmentId for Statement with statementId"
+ description: "Get Attachment details with attachmentId for Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: attachmentId
+ in: path
+ description: Attachment ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ 200:
+ description: "Requested Attachment"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/AttachmentModel'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Attachment with given statementId and attachmentId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/task/{taskId}/attachments/{attachmentId}/tags:
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ - name: attachmentId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ post:
+ tags:
+ - "attachment"
+ summary: "Set Attachment tags"
+ description: "Set Attachment tags"
+ requestBody:
+ description: "Taglist"
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ type: string
+ responses:
+ 204:
+ description: "Attachment tags set"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /tags:
+ get:
+ tags:
+ - "attachment"
+ summary: "Get list of available tags"
+ responses:
+ 200:
+ description: "Tag list"
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Tag'
+ put:
+ tags:
+ - "attachment"
+ summary: "Add a new tag"
+ parameters:
+ - name: "label"
+ in: query
+ required: true
+ schema:
+ type: string
+ responses:
+ 201:
+ description: "Successfully added"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Attachment with given statementId and attachmentId does not exist"
+ 409:
+ description: "Tag already exists"
+ security:
+ - JWT:
+ - spa_access
+
+ /statements/{statementId}/attachments/{attachmentId}/file:
+ get:
+ tags:
+ - "attachment"
+ summary: "Get Attachment file for Attachmetn with attachmentId for Statement with statementId"
+ description: "Get Attachment file for Attachmetn with attachmentId for Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: attachmentId
+ in: path
+ description: Attachment ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: accessToken
+ in: query
+ required: true
+ schema:
+ type: string
+ responses:
+ 200:
+ description: "Requested Attachment File"
+ content:
+ application/pdf:
+ schema:
+ type: string
+ format: binary
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Attachment with given statementId and attachmentId does not exist"
+
+
+ /process/statements/{statementId}/task:
+ get:
+ tags:
+ - "process"
+ summary: "Get all current workflow tasks for Statement with statementId"
+ description: "Get all current workflow tasks for Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ 200:
+ description: "List of Current Statement Tasks"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListTaskModel'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Task with given taskId of Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/task/{taskId}/claim:
+ post:
+ tags:
+ - "process"
+ summary: "Claim task with taskId of Statement with statementId"
+ description: "Claim task with taskId of Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ responses:
+ 200:
+ description: "Statement Task"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/TaskModel'
+ 400:
+ description: "Bad Request - Invalid parameters or already claimed"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/task/{taskId}/unclaim:
+ post:
+ tags:
+ - "process"
+ summary: "Unclaim task with taskId of Statement with statementId"
+ description: "Unclaim task with taskId of Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ responses:
+ 200:
+ description: "Statement Task"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/TaskModel'
+ 400:
+ description: "Bad Request - Invalid parameters or not claimed"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/workflow:
+ get:
+ tags:
+ - "process"
+ summary: "Get workflow data in task context of task with taskId of Statement with statementId"
+ description: "Get workflow data in task context of task with taskId of Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ responses:
+ 200:
+ description: "WorkflowDataModel"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/WorkflowDataModel'
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/workflow/children:
+ get:
+ tags:
+ - "process"
+ summary: "Get children of Statement with statementId"
+ description: "Get children of Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ 200:
+ description: "Children statement ids"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/StatementIds'
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+ /process/statements/{statementId}/workflow/parents:
+ get:
+ tags:
+ - "process"
+ summary: "Get Statement parents of Statement with statementId"
+ description: "Get Statement parents of Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ 200:
+ description: "Parent statement ids"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/StatementIds'
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/task/{taskId}/workflow/parents:
+ post:
+ tags:
+ - "process"
+ summary: "Set Statement parents of Statement with statementId"
+ description: "Set Statement parents of Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ requestBody:
+ description: "Statement parent statement Ids."
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/StatementIds'
+ responses:
+ 200:
+ description: "Parent statement ids"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/StatementIds'
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/departmentconfig:
+ get:
+ tags:
+ - "process"
+ summary: "Get department configuration of the Statement with statementId"
+ description: "Get department configuration of the Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ 200:
+ description: "Comments"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DepartmentConfiguration'
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/comments:
+ get:
+ tags:
+ - "process"
+ summary: "Get comments of Statement with statementId"
+ description: "Get commetns of Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ 200:
+ description: "Comments"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/CommentList'
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ put:
+ tags:
+ - "process"
+ summary: "Put comment of Statement with statementId"
+ description: "Put comment of Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ requestBody:
+ content:
+ text/plain:
+ schema:
+ type: string
+ example: "I have a comment."
+ responses:
+ 204:
+ description: "Successful"
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/comments/{commentId}:
+ delete:
+ tags:
+ - "process"
+ summary: "Delete Comment with commentId of Statement with statementId"
+ description: "Delete Comment with commentId of Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: commentId
+ in: path
+ description: Comment ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ 204:
+ description: "Successful"
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId or Commetn with given commentId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+
+ /process/statements/{statementId}/task/{taskId}/complete:
+ post:
+ tags:
+ - "process"
+ summary: "Complete task with taskId of Statement with statementId"
+ description: "Complete task with taskId of Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ requestBody:
+ description: "Required variables to successfully complete the task."
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MapCompleteVariable'
+ responses:
+ 204:
+ description: "Complete sucessful"
+ 400:
+ description: "Bad Request - Invalid parameters or not claimed"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/task/{taskId}/workflow:
+ get:
+ tags:
+ - "process"
+ summary: "Get workflow data in task context of task with taskId of Statement with statementId"
+ description: "Get workflow data in task context of task with taskId of Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ responses:
+ 200:
+ description: "WorkflowDataModel"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/WorkflowDataModel'
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+ post:
+ tags:
+ - "process"
+ summary: "Set workflow data in task context of task with taskId of Statement with statementId"
+ description: "Set workflow data in task context of task with taskId of Statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ requestBody:
+ description: "Required variables to successfully complete the task."
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/WorkflowDataModel'
+ responses:
+ 204:
+ description: "Successful"
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/workflow/textblockconfig:
+ get:
+ tags:
+ - "process"
+ - "textblock"
+ summary: "Get Textblock configuration of version assigned for statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ 200:
+ description: "TextblockConfigModel"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/TextConfig'
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/workflow/textarrangement:
+ get:
+ tags:
+ - "process"
+ - "textblock"
+ summary: "Get TextArrangement of statement with statementId"
+ description: "Get TextArrangement of statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ 200:
+ description: "Current TextArrangement"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/TextArrangementModel'
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/workflow/contributions:
+ get:
+ tags:
+ - "process"
+ - "contributions"
+ summary: "Get Contribution status"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ 200:
+ description: "Current Contribution status"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DepartmentGroup'
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/task/{taskId}/workflow/contribute:
+ patch:
+ tags:
+ - "process"
+ - "contributions"
+ summary: "Set contribution status to contributed for division of requested user"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ responses:
+ 204:
+ description: "Ok"
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/task/{taskId}/workflow/contributions:
+ post:
+ tags:
+ - "process"
+ - "contributions"
+ summary: "Get Contribution status"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/DepartmentGroup'
+ responses:
+ 204:
+ description: "Ok"
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/task/{taskId}/workflow/textarrangement:
+ post:
+ tags:
+ - "process"
+ - "textblock"
+ summary: "Post TextArrangement for statement with statementId"
+ description: "Post TextArrangement for statement with statementId"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ requestBody:
+ description: "New TextArrangement"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/TextArrangementModel'
+ responses:
+ 204:
+ description: "Successfully set"
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+ /process/statements/{statementId}/workflow/textarrangement/validate:
+ post:
+ tags:
+ - "process"
+ - "textblock"
+ summary: "Post TextArrangement for validation statement with statementId, without storing"
+ description: "Post TextArrangement for validation statement with statementId, without storing"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ requestBody:
+ description: "New TextArrangement"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/TextArrangementModel'
+ responses:
+ 200:
+ description: "Validation result"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationResultModel'
+ 400:
+ description: "Bad Request - Invalid parameters"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/workflow/textarrangement/compile:
+ post:
+ tags:
+ - "process"
+ - "textblock"
+ summary: "Post TextArrangement for validation statement with statementId and compile statement response pdf"
+ description: "Post TextArrangement for validation statement with statementId and compile statement response pdf"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ requestBody:
+ description: "New TextArrangement"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/TextArrangementModel'
+ responses:
+ 200:
+ description: "Statement pdf"
+ content:
+ application/pdf:
+ schema:
+ type: string
+ format: binary
+ 400:
+ description: "Bad Request - Invalid parameters or invalid text arrangement"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ 422:
+ description: "Validation result"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationResultModel'
+ security:
+ - JWT:
+ - spa_access
+
+ /process/statements/{statementId}/task/{taskId}/mailAndComplete:
+ post:
+ tags:
+ - "process"
+ - "mail"
+ summary: "Send statement response via mail and complete task"
+ description: "Send statement response via mail and complete task"
+ parameters:
+ - name: statementId
+ in: path
+ description: Statement ID
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: taskId
+ in: path
+ description: Task ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ responses:
+ 200:
+ description: "Sending mail without errors and complete"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MailSendReport'
+ 424:
+ description: "Send mail failed"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MailSendReport'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Statement with given statementId does not exist"
+ security:
+ - JWT:
+ - spa_access
+ /mail/inbox:
+ get:
+ tags:
+ - "mail"
+ summary: "Show mail inbox"
+ responses:
+ 200:
+ description: "Sending mail without errors"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/EmailModelList'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+ /mail/inbox/{mailId}:
+ delete:
+ tags:
+ - "mail"
+ summary: "Delete mail with mailId from inbox"
+ parameters:
+ - name: mailId
+ in: path
+ description: Mail ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ responses:
+ 200:
+ description: "Deleted"
+ 404:
+ description: "Mail with id does not exist in inbox"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+ patch:
+ tags:
+ - "mail"
+ summary: "Move mail with mailId from inbox to processed statements"
+ parameters:
+ - name: mailId
+ in: path
+ description: Mail ID
+ required: true
+ schema:
+ type: string
+ format: uuid
+ responses:
+ 200:
+ description: "Moved"
+ 404:
+ description: "Mail with id does not exist in inbox"
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ security:
+ - JWT:
+ - spa_access
+
+ /mail/identifier/{mailId}:
+ get:
+ tags:
+ - "mail"
+ summary: "Show mail with identifier"
+ parameters:
+ - name: mailId
+ in: path
+ description: Mail ID
+ required: true
+ schema:
+ type: string
+ format: mailid
+ responses:
+ 200:
+ description: "Mail details"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/EmailModel'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Mail with given mailId does not exist"
+ security:
+ - JWT:
+ - spa_access
+
+ /mail/identifier/{mailId}/{attachmentName}:
+ get:
+ tags:
+ - "mail"
+ summary: "Get mail attachment file by mailId and attachmentName"
+ parameters:
+ - name: mailId
+ in: path
+ description: Mail ID
+ required: true
+ schema:
+ type: string
+ format: mailid
+ - name: attachmentName
+ in: path
+ description: "Attachment file name"
+ required: true
+ schema:
+ type: string
+ - name: accessToken
+ in: query
+ required: true
+ schema:
+ type: string
+ responses:
+ 200:
+ description: "Requested Attachment File"
+ content:
+ application/pdf:
+ schema:
+ type: string
+ format: binary
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Attachment with given attachmentName or Mail with given mailId does not exist"
+
+ /dashboard/statements:
+ get:
+ tags:
+ - "statement"
+ summary: "Get dashboard statements"
+ responses:
+ 200:
+ description: "Dashboard statements"
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/DashboardStatement'
+ 401:
+ description: "Not Authorized - Please provide a security token"
+ 403:
+ description: "Forbidden"
+ 404:
+ description: "Not Found - Attachment with given attachmentName or Mail with given mailId does not exist"
+
+
+components:
+ securitySchemes:
+ JWT:
+ type: oauth2
+ flows:
+ implicit:
+ authorizationUrl: http://localhost/portal/rest/beservice/login
+ scopes:
+ spa_access: Grant basic access the statement public affairs back-end interfaces
+ schemas:
+ VersionModel:
+ type: "object"
+ properties:
+ buildVersion:
+ type: "string"
+ applicationName:
+ type: "string"
+ xml:
+ name: "VersionModel"
+
+
+
+
+ ListStatementModel:
+ type: "array"
+ items:
+ $ref: '#/components/schemas/StatementModel'
+
+ StatementModel:
+ type: "object"
+ properties:
+ id:
+ type: integer
+ format: int64
+ title:
+ type: "string"
+ dueDate:
+ type: "string"
+ example: "2020-04-22"
+ format: date
+ pattern: "YYYY-MM-DD"
+ receiptDate:
+ type: "string"
+ example: "2020-04-22"
+ format: date
+ pattern: "YYYY-MM-DD"
+ creationDate:
+ type: "string"
+ example: "2020-04-22"
+ format: date
+ pattern: "YYYY-MM-DD"
+ taskId:
+ type: "string"
+ example: "123e4567-e89b-12d3-a456-426655440000"
+ format: uuid
+ pattern: "xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx"
+ finished:
+ type: "boolean"
+ typeId:
+ type: integer
+ format: int64
+ city:
+ type: "string"
+ customerReference:
+ type: "string"
+ district:
+ type: "string"
+ contactId:
+ type: string
+ mailId:
+ type: string
+
+ DashboardStatement:
+ type: "object"
+ properties:
+ info:
+ $ref: '#/components/schemas/StatementModel'
+ tasks:
+ $ref: '#/components/schemas/ListTaskModel'
+ editedByMe:
+ type: boolean
+ mandatoryDepartmentsCount:
+ type: integer
+ mandatoryContributionsCount:
+ type: integer
+ optionalForMyDepartment:
+ type: boolean
+ completedForMyDepartment:
+ type: boolean
+
+ ListAttachmentModel:
+ type: "array"
+ items:
+ $ref: '#/components/schemas/AttachmentModel'
+
+ AttachmentModel:
+ type: "object"
+ properties:
+ id:
+ type: integer
+ format: int64
+ name:
+ type: "string"
+ type:
+ type: "string"
+ tagIds:
+ type: array
+ items:
+ type: integer
+ format: int64
+ size:
+ type: integer
+ timestamp:
+ type: string
+
+ Tag:
+ type: "object"
+ properties:
+ id:
+ type: string
+ name:
+ type: string
+
+ ListStatementType:
+ type: "array"
+ items:
+ $ref: '#/components/schemas/StatementType'
+
+ StatementType:
+ type: "object"
+ properties:
+ id:
+ type: integer
+ format: int64
+ name:
+ type: "string"
+
+ ListTaskModel:
+ type: "array"
+ items:
+ $ref: '#/components/schemas/TaskModel'
+
+ TaskModel:
+ type: "object"
+ properties:
+ statementId:
+ type: integer
+ format: int64
+ taskId:
+ type: string
+ example: "123e4567-e89b-12d3-a456-426655440000"
+ format: uuid
+ pattern: "xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx"
+ taskDefinitionKey:
+ type: string
+ processDefinitionKey:
+ type: string
+ assignee:
+ type: string
+ authorized:
+ type: boolean
+ name:
+ type: string
+ requiredVariables:
+ $ref: '#/components/schemas/TaskModelRequiredVariables'
+
+ TaskModelRequiredVariables:
+ type: "object"
+ properties:
+ name:
+ type: string
+ enum:
+ - Boolean
+ MapCompleteVariable:
+ type: "object"
+ properties:
+ name:
+ $ref: '#/components/schemas/CompleteVariable'
+
+ CompleteVariable:
+ type: "object"
+ properties:
+ type:
+ type: string
+ enum:
+ - Boolean
+ value:
+ type: boolean
+
+ DepartmentGroup:
+ type: object
+ properties:
+ groupname:
+ type: array
+ items:
+ type: string
+
+
+ WorkflowDataModel:
+ type: "object"
+ properties:
+ geoPosition:
+ type: string
+ mandatoryDepartments:
+ $ref: '#/components/schemas/DepartmentGroup'
+ optionalDepartments:
+ $ref: '#/components/schemas/DepartmentGroup'
+
+ DepartmentConfiguration:
+ type: "object"
+ properties:
+ suggestedDepartments:
+ $ref: '#/components/schemas/DepartmentGroup'
+ allDepartments:
+ $ref: '#/components/schemas/DepartmentGroup'
+
+
+ CommentList:
+ type: array
+ items:
+ type: object
+ properties:
+ id:
+ type: integer
+ text:
+ type: string
+ userName:
+ type: string
+ firstName:
+ type: string
+ lastName:
+ type: string
+ timestamp:
+ type: string
+
+
+ PagedContacts:
+ type: object
+ properties:
+ content:
+ $ref: '#/components/schemas/Contacts'
+ totalElements:
+ type: integer
+ totalPages:
+ type: integer
+ last:
+ type: boolean
+ numberOfElements:
+ type: integer
+ first:
+ type: boolean
+ size:
+ type: integer
+ number:
+ type: integer
+ empty:
+ type: boolean
+
+ Contacts:
+ type: array
+ items:
+ type: object
+ properties:
+ id:
+ type: string
+ email:
+ type: string
+ firstName:
+ type: string
+ lastName:
+ type: string
+ companyId:
+ type: string
+ companyName:
+ type: string
+
+ ContactDetails:
+ type: object
+ properties:
+ company:
+ type: string
+ salutation:
+ type: string
+ title:
+ type: string
+ firstName:
+ type: string
+ lastName:
+ type: string
+ email:
+ type: string
+ street:
+ type: string
+ houseNumber:
+ type: string
+ postCode:
+ type: string
+ community:
+ type: string
+ communitySuffix:
+ type: string
+
+ StatementIds:
+ type: array
+ items:
+ type: integer
+
+ Sectors:
+ type: object
+ properties:
+ city#district:
+ type: array
+ items:
+ type: string
+ example: Strom
+
+ TextConfig:
+ type: object
+ properties:
+ configuration:
+ $ref: '#/components/schemas/TextblockConfig'
+ replacements:
+ type: object
+ properties:
+ key:
+ type: string
+ example: "value"
+
+ TextblockConfig:
+ type: object
+ properties:
+ selects:
+ type: object
+ properties:
+ key:
+ type: array
+ items:
+ type: string
+
+ groups:
+ type: array
+ items:
+ type: object
+ properties:
+ groupName:
+ type: string
+ textBlocks:
+ type: array
+ items:
+ $ref: '#/components/schemas/TextblockItem'
+ negativeGroups:
+ type: array
+ items:
+ type: object
+ properties:
+ groupName:
+ type: string
+ textBlocks:
+ type: array
+ items:
+ $ref: '#/components/schemas/TextblockItem'
+
+ TextblockItem:
+ type: object
+ properties:
+ id:
+ type: string
+ text:
+ type: string
+ excludes:
+ type: array
+ items:
+ type: string
+ requires:
+ type: array
+ items:
+ type: object
+ properties:
+ ids:
+ type: array
+ items:
+ type: string
+ type:
+ type: string
+ example: "and|xor|or"
+
+ TextArrangementModel:
+ type: array
+ items:
+ type: object
+ properties:
+ type:
+ type: string
+ example: "block|text|newline|pagebreak"
+ textblockId:
+ type: string
+ addNewline:
+ type: boolean
+ placeholderValues:
+ type: object
+ properties:
+ varname:
+ type: string
+ example: "value or id"
+ replacement:
+ type: string
+
+ ValidationResultModel:
+ type: object
+ properties:
+ valid:
+ type: boolean
+ errors:
+ type: array
+ items:
+ type: object
+ properties:
+ arrangementId:
+ type: integer
+ textblockId:
+ type: string
+ textblockGroup:
+ type: string
+ missingVariables:
+ type: array
+ items:
+ type: string
+ requires:
+ type: array
+ items:
+ type: object
+ properties:
+ ids:
+ type: array
+ items:
+ type: string
+ type:
+ type: string
+ example: "and|xor|or"
+ excludes:
+ type: array
+ items:
+ type: string
+ after:
+ type: string
+ MailSendReport:
+ type: object
+ properties:
+ successful:
+ type: boolean
+ reason:
+ type: string
+
+ EmailModelList:
+ type: array
+ items:
+ $ref: '#/components/schemas/EmailModel'
+
+ EmailModel:
+ type: object
+ properties:
+ identifier:
+ type: string
+ subject:
+ type: string
+ date:
+ type: string
+ example: "date-time-format"
+ from:
+ type: string
+ textplain:
+ type: string
+ texthtml:
+ type: string
+ attachments:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ size:
+ type: integer
+ type:
+ type: string
+
+ ListTransferAttachments:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ tagIds:
+ type: array
+ items:
+ type: string
+
+ StatementPositionModel:
+ type: object
+ properties:
+ id:
+ type: integer
+ title:
+ type: string
+ geoPosition:
+ type: string
+ typeId:
+ type: integer
+
+ GeoPositions:
+ type: object
+ properties:
+ position1:
+ type: object
+ properties:
+ x:
+ type: number
+ y:
+ type: number
+
+ DepartmentStructure:
+ type: object
+ properties:
+ city#district:
+ type: object
+ properties:
+ provides:
+ type: array
+ items:
+ type: string
+ departments:
+ type: object
+ properties:
+ groupKey:
+ type: array
+ items:
+ type: string
+
+ TextblockConfiguration:
+ type: object
+ properties:
+ groups:
+ type: array
+ items:
+ type: object
+ properties:
+ groupName:
+ type: string
+ textBlocks:
+ type: array
+ items:
+ type: object
+ properties:
+ id:
+ type: string
+ requires:
+ type: array
+ items:
+ type: object
+ properties:
+ ids:
+ type: array
+ items:
+ type: string
+ type:
+ type: string
+ example: "xor"
+ excludes:
+ type: array
+ items:
+ type: string
+ text:
+ type: string
+ negativeGroups:
+ type: array
+ items:
+ type: object
+ properties:
+ groupName:
+ type: string
+ textBlocks:
+ type: array
+ items:
+ type: object
+ properties:
+ id:
+ type: string
+ requires:
+ type: array
+ items:
+ type: object
+ properties:
+ ids:
+ type: array
+ items:
+ type: string
+ type:
+ type: string
+ example: "xor"
+ excludes:
+ type: array
+ items:
+ type: string
+ text:
+ type: string
+ selects:
+ type: object
+ properties:
+ name:
+ type: array
+ items:
+ type: string
+
+ UserSettings:
+ type: object
+ properties:
+ email:
+ type: string
+ department:
+ type: object
+ properties:
+ group:
+ type: string
+ name:
+ type: string
+
+ User:
+ type: object
+ properties:
+ id:
+ type: integer
+ userName:
+ type: string
+ firstName:
+ type: string
+ lastName:
+ type: string
+ roles:
+ type: array
+ items:
+ type: string
+ settings:
+ $ref: '#/components/schemas/UserSettings'
+
+
+
+
+externalDocs:
+ description: "Find out more about OpenKONSEQUENZ"
+ url: "https://www.openkonsequenz.de/"
diff --git a/src/main/asciidoc/arch/architecture.adoc b/src/main/asciidoc/arch/architecture.adoc
new file mode 100644
index 0000000..a0869d8
--- /dev/null
+++ b/src/main/asciidoc/arch/architecture.adoc
@@ -0,0 +1,85 @@
+// header file for arc42-template,
+// including all help texts
+//
+// ====================================
+:source-highlighter: highlightjs
+:highlightjs-theme: solarized_dark
+
+= OpenKONSEQUENZ - Architecture of the module Statement Public Affairs
+Tobias Stummer, Dr. Christopher Keim, Christian Simon
+// toc-title definition MUST follow document title without blank line!
+:toc-title: Table of Contents
+
+//additional style for arc42 help callouts
+ifdef::basebackend-html[]
+++++
+<style>
+.arc42help {font-size:small; width: 14px; height: 16px; overflow: hidden; position: absolute; right: 0px; padding: 2px 0px 3px 2px;}
+.arc42help::before {content: "?";}
+.arc42help:hover {width:auto; height: auto; z-index: 100; padding: 10px;}
+.arc42help:hover::before {content: "";}
+@media print {
+ .arc42help {display:hidden;}
+}
+</style>
+++++
+endif::basebackend-html[]
+
+// configure EN settings for asciidoc
+include::arch/src/config.adoc[]
+
+This documentation is based on the ARC42-Template (v7.0):
+
+
+// numbering from here on
+:numbered:
+
+<<<<
+// 1. Introduction and Goals
+include::arch/src/01_introduction_and_goals.adoc[]
+
+<<<<
+// 2. Architecture Constraints
+include::arch/src/02_architecture_constraints.adoc[]
+
+<<<<
+// 3. System Scope and Context
+include::arch/src/03_system_scope_and_context.adoc[]
+
+<<<<
+// 4. Solution Strategy
+include::arch/src/04_solution_strategy.adoc[]
+
+<<<<
+// 5. Building Block View
+include::arch/src/05_building_block_view.adoc[]
+
+<<<<
+// 6. Runtime View
+include::arch/src/06_runtime_view.adoc[]
+
+<<<<
+// 7. Deployment View
+include::arch/src/07_deployment_view.adoc[]
+
+<<<<
+// 8. Concepts
+include::arch/src/08_concepts.adoc[]
+
+<<<<
+// 9. Design Decisions
+include::arch/src/09_design_decisions.adoc[]
+
+<<<<
+// 10. Quality Scenarios
+include::arch/src/10_quality_scenarios.adoc[]
+
+<<<<
+// 11. Technical Risks
+include::arch/src/11_technical_risks.adoc[]
+
+<<<<
+// 12. Glossary
+include::arch/src/12_glossary.adoc[]
+
+
diff --git a/src/main/asciidoc/arch/src/01_introduction_and_goals.adoc b/src/main/asciidoc/arch/src/01_introduction_and_goals.adoc
new file mode 100644
index 0000000..3b2ff9f
--- /dev/null
+++ b/src/main/asciidoc/arch/src/01_introduction_and_goals.adoc
@@ -0,0 +1,44 @@
+[[section-introduction-and-goals]]
+== Introduction and Goals
+
+Distribution System Operators (DSO) are bodies of public affairs (BPA). As such they are included in the coordination processes for project planning, land use planning and infrastructure projects. Their comments, objections and notices must be taken into account in the upcoming planning processes. The procedure of these inquiries follow a standardized process and are triggered in a similar form on a regular basis.
+
+To support these processes, a systematic management of these inquiries are recommended to the network operator.
+
+The openKONSEQUENZ platform already provides a rich set of modules providing solutions to support network operators.
+
+The new module statement public affairs is planned as an openKONSEQUENZ user module to support network operator staff with these recurring processes.
+
+=== Requirements Overview
+
+The module Statement Public Affairs shall support the processing of statement requests from the receiving of new statement requests, over the evaluation of the request and the creation of the statement response, to the dispatch of the response to the receiver. New requests can come in via mail or e-mail. Both sources shall be considered as entry points to process new statement requests with the module. The creation process of a statement response requires a joint contribution of multiple workers in different user roles. The statement processing shall address these workflows in the module implementation. The dispatch of statement responses shall also be possible via mail or e-mail.
+
+=== Quality Goals
+
+The following documents contain the quality goals in detail:
+
+* Architecture Committee Handbook v1.6.0 from 10-07-2019
+* Quality Committee Handbook v2.0.1 from 15-10-2018
+
+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 back-end and front-end sides are ensured by the use of sonarqube. The rule set and the quality gate are defined by the default, the so called "sonar way" in agreement with the AC/QC.
+
+The module 'Statement Public Affairs' is part of the Eclipse project 'Eclipse openK User Modules'.
+This project bases on the Eclipse Public Licence 2.0.
+
+=== Stakeholders
+
+
+.Stakeholders
+[options="header",cols="1,2,2"]
+|===
+|Role/Name|Contact|Expectations
+| Product Owner | Benedikt Herget, Holger Kronschnabel | The software must fulfil their functional and nonfunctional requirements.
+| Module Developer | Dr. Christopher Keim, Tobias Stummer| All relevant technical information must be available for implementing the software.
+| Scrum Master | Samir Al-Hilank | The module development follows the scrum process.
+|External Reviewer (represents the AC/QC)| Heiko Oberländer, Alexander Langold |The software and the documentation is realized according to the Quality and Architecture Handbook of openKONSEQUENZ.
+|External Reviewer (represents the Eclipse-Requirements)|n.n.|The software is licensed under the EPL 2.0. It must be validated that all requirements are fulfilled.
+|System Integrator|n.n.|A documentation for the integration of the module in the DSO specific environments must be available.
+|===
diff --git a/src/main/asciidoc/arch/src/02_architecture_constraints.adoc b/src/main/asciidoc/arch/src/02_architecture_constraints.adoc
new file mode 100644
index 0000000..517eb7c
--- /dev/null
+++ b/src/main/asciidoc/arch/src/02_architecture_constraints.adoc
@@ -0,0 +1,121 @@
+[[section-architecture-constraints]]
+== Architecture Constraints
+The main architecture constraints are:
+
+* *Public License* The module must be available under the “Eclipse Public License 2.0”.
+* *Standardization* The module must use the reference platform.
+* *Availability* The source code of the module must be accessible to any interested person/company.
+
+Therefore the project is published under the following repositories:
+
+* https://git.eclipse.org/r/plugins/gitiles/openk-usermodules/org.eclipse.openk-usermodules.statementPublicAffairs.backend
+* https://git.eclipse.org/r/plugins/gitiles/openk-usermodules/org.eclipse.openk-usermodules.statementPublicAffairs.frontend
+* https://git.eclipse.org/r/plugins/gitiles/openk-usermodules/org.eclipse.openk-usermodules.statementPublicAffairs.documentation
+
+=== Technical Constraints
+
+The following technical constraints are given:
+
+.Technical Constraints
+[options="header"]
+|===
+|Component|Constraints
+|Base components of the reference platform
+a|* Application Server Tomcat
+* JPA EclipseLink
+* Database PostgreSQL
+
+|Programming language frontend
+a|* Angular
+* Bootstrap
+* REST/JSON Interfaces
+
+|GUI design
+a|* According to oK-GUI-Styleguide
+
+|Java QA environment
+a|* Sonarqube 5.6.6
+
+|Programming language
+a|* Backend: Java 1.8
+* Frontend: Angular 9+ (Javascript, Typescript, HTML5, CSS3)
+
+|IDE
+a|* Not restricted (Eclipse, Webstorm, Vim ...)
+
+|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
+a|* According ARC42-Template
+|===
+
+
+
+=== Technical Dependencies
+
+
+==== Modules
+The following modules are required to use the 'Statement Public Affairs' module:
+
+.Modules
+[options="header,footer"]
+|=========================================================
+|Name of the module|Purpose|Status of the module
+|'Auth&Auth'|Authentification and Authorization|available
+|'Contact Base Data'| Customer and user contact details|available
+|=========================================================
+
+
+==== Libraries
+
+The following libraries are used:
+
+.Libraries
+[options="header,footer"]
+|=========================================================
+|Name of the library|Version|License|Tier
+| spring-cloud-core-openfeign |2.2.0|Apache-2.0 | Back-end
+| spring-boot-starter-data-jpa |2.2.1|Apache-2.0 | Back-end
+| spring-boot |2.2.1|Apache-2.0 | Back-end
+| spring-boot-starter-web |2.2.1|Apache-2.0 | Back-end
+| lombok |1.18.10|MIT | Back-end
+| postgresql |42.2.8|BSD 2-clause | Back-end
+| spring-cloud-starter-netflix-ribbon |2.2.0|Apache-2.0 | Back-end
+| keycloak-core |3.4.2|Apache-2.0 | Back-end
+| jjwt |0.9.1|Apache-2.0 | Back-end
+| h2 |1.4.200|EPL 1.0 | Back-end
+| proj4j | 1.1.0 | Apache-2.0 | Back-end
+| angular/animations |9.1.12| MIT | Front-end
+| angular/cdk |9.2.4| MIT | Front-end
+| angular/common |9.1.12| MIT | Front-end
+| angular/compiler |9.1.12| MIT | Front-end
+| angular/core |9.1.12| MIT | Front-end
+| angular/forms |9.1.12| MIT | Front-end
+| angular/material |9.2.4| MIT | Front-end
+| angular/platform-browser-dynamic |9.1.12| MIT | Front-end
+| angular/platform-browser |9.1.12| MIT | Front-end
+| angular/router |9.1.12| MIT | Front-end
+| ngrx/effects |9.2.0| MIT | Front-end
+| ngrx/store |9.2.0| MIT | Front-end
+| ngx-translate/core |12.1.2| MIT | Front-end
+| ngx-translate/http-loader |5.0.0| MIT | Front-end
+| leaflet |1.6.0| BSD-2-Clause | Front-end
+| material-design-icons |3.0.1| Apache-2.0 | Front-end
+| rxjs |6.5.4| Apache-2.0 | Front-end
+| source-sans-pro |3.6.0| OFL-1.1 | Front-end
+| tslib |1.10.0| Apache-2.0 | Front-end
+| zone.js |0.10.2| MIT | Front-end
+| bpmn-js |6.5.1| bpmn.io License https://bpmn.io/license | Front-end
+| moment-js |2.27.0| MIT | Front-end
+| primeng |9.1.3| MIT | Front-end
+|=========================================================
+
+The used libraries can also be found in the dependency configuration of each project repository.
+
+* Back-end: file pom.xml
+* Front-end: file package.json
diff --git a/src/main/asciidoc/arch/src/03_system_scope_and_context.adoc b/src/main/asciidoc/arch/src/03_system_scope_and_context.adoc
new file mode 100644
index 0000000..2758c08
--- /dev/null
+++ b/src/main/asciidoc/arch/src/03_system_scope_and_context.adoc
@@ -0,0 +1,24 @@
+[[section-system-scope-and-context]]
+== System Scope and Context
+
+The following image shows an overview of the module 'Statement Public Affairs' as a C4-Model container diagram:
+
+image::architecture-system-context.svg[]
+
+
+=== Business Context
+
+The user module 'Statement Public Affairs' communicates via Restful Webservices with the following modules:
+
+* *Core Module 'Auth & Auth'* To authenticate and validate the access rights to the module interfaces, the 'Auth & Auth' module is used to verify the user authorization and limit the allowed user access accordingly.
+
+* *Core Module 'Contact Base Data'* Customer and user contact details are not managed within the statement public affairs module. Therefore the openKONSEQUENZ core module 'Contact Base Data' is used instead.
+
+=== Technical Context
+
+The following aspects have to be taken into account for the frontend to backend communication of the module 'Statement Public Affairs':
+
+* RESTful web services are used as interface-technology.
+* External interfaces have to be documented.
+* Dependencies of modules to services realized by other modules have to be specified and documented explicitly.
+
diff --git a/src/main/asciidoc/arch/src/04_solution_strategy.adoc b/src/main/asciidoc/arch/src/04_solution_strategy.adoc
new file mode 100644
index 0000000..e2086b0
--- /dev/null
+++ b/src/main/asciidoc/arch/src/04_solution_strategy.adoc
@@ -0,0 +1,12 @@
+[[section-solution-strategy]]
+== Solution Strategy
+
+The module 'Statement Public Affairs' is realized in the following main architecture tiers:
+
+. *Frontend* - The GUI is implemented as a web-frontend with rich-client functionality.
+. *Backend* - The business functionalities are implemented in the backend tier. It provides the business functions via RESTful webservices.
+. *Database* - The database stores all module specific data.
+. *WorkflowEngine* - The workflow engine drives the processing of each statement according to a predefined workflow.
+
+
+
diff --git a/src/main/asciidoc/arch/src/05_building_block_view.adoc b/src/main/asciidoc/arch/src/05_building_block_view.adoc
new file mode 100644
index 0000000..4be295e
--- /dev/null
+++ b/src/main/asciidoc/arch/src/05_building_block_view.adoc
@@ -0,0 +1,155 @@
+[[section-building-block-view]]
+
+== Building Block View
+
+=== Whitebox Overall System
+
+image::architecture-container-diag.svg[]
+
+Motivation::
+
+The statement module is part of the openKONSEQUENZ module framework. It makes use of the rich feature set of other openKONSEQUENZ core modules and user modules. Other external services with standardized interfaces are used for communication and context visualization.
+
+Contained Building Blocks::
+
+The module consists of the following main components:
+
+.Module Components
+[options="header,footer"]
+|========================================================
+|Component|Description
+|Web Application | Web application server that delivers the frontend single page application
+|Frontend| The single page application that provides the user interface
+|API Application | The module back-end logic
+|Statement DB| Database where the statement module configuration and the statement process data is stored
+|Workflow Engine | External process workflow engine that is used by the API Application to manage the statement workflow tasks
+|========================================================
+
+
+The system context describes the following components:
+
+.System Context Components
+[options="header,footer"]
+|========================================================
+|Component|Description
+|SPA User | Authenticated person that operates the statement process. Initiates a new statement process, browses existing statement processes, enhances statement data, approves statements or administrates the statement service base data.
+|Map Tile Server | Server that provides open streetmap tiles that are used in map views.
+|Kontaktstammdaten | OpenKONSEQUENZ module that manages the contact data.
+|Email Server | Inbox for new statement requests and outbox for statement responses and user notification.
+|AuthNAuth | OpenKONSEQUENZ module that manages user authentication for OpenKONSEQUENZ modules.
+|========================================================
+
+==== Web Application
+
+The component Web Application is accessed by the SPA User to log into the OpenK portal. When access is granted, the single page application component Frontend is provided to the user. The web application itself is deployed in a tomcat application server.
+
+The Web Application can be accessed via HTTPS at the entry point with the url /statementpaFE relative to the base url of the application server.
+
+==== Frontend
+
+The component Frontend is delivered by the Web Application when a SPA User requests the Web Application. It provides a web based user interface to browse existing statement processes. According to the current status of each statement process different statement views are presented to work on the current statement process task that are derived from the workflow process. Based on the User Roles of the SPA User, access to some of these interfaces may be limited.
+
+==== API Application
+
+The component API Application contains the backend logic of the openKONSEQUENZ module. It provides authenticated access to list all statement processes, to initiate a new statement process instances and push existing processes. Besides managing the statement processes data such as pdf attachments, comments and text building blocks can be set. These contributions are used to compose the resulting statement response document at the end of the process. For persistence of statement data, the component Statement DB is used. Each statement instance is tethered to a workflow process instance that is managed by the component Workflow Engine. To control the workflow process of a statement, the API application acts as a surrogate that provides similar interfaces as the component Workflow Engine.
+
+The API Application can be accessed via the HTTPS protocol. The interfaces to access the backend functionality are implemented RESTful as sub entry points with the url /statementpaBE relative to the base url of the application server. Access to these interfaces may be restricted based on a role based authorization mechanism.
+
+==== Workflow Engine
+
+The concrete process definition of the statement process workflow is deployed in the component Workflow Engine. It is based on a full distribution of Camunda BPM. Each statement workflow process itself is managed using the Workflow Engine component.
+
+The Workflow Engine provides a RESTful interface to start new process instances, list current process tasks, claim and complete user tasks and provides a fetch-lock and complete interface for external service tasks.
+
+==== Statement DB
+
+The component Statement DB is based on a postgres database. All statement data is persisted there except for workflow process related data which is managed and persisted by the Workflow Engine internal database.
+
+The Statement DB provides a SQL interface.
+
+=== Level 2
+
+==== White Box API Application
+
+The statement back-end itself is structured into the three main tiers controller, service and resource. The following architecture diagram shows its main components:
+
+image::architecture-backend-component-diag.svg[]
+
+The controller tier contains RESTful interface endpoints to get an overview over the existing statements via the 'StatementOverviewController' and to get statement details via the 'StatementController' and the 'StatementWorkflowDataController'. Task specific manipulations are handled by the 'StatementProcessController'. Other controllers are more related to a specific data set type, like the 'TextblockController' and 'MailController' or provide utility and context interfaces like the 'UsersController' and the 'GeoPositionController'.
+
+The service tier contains main services that abstract the controller functionality and modularize the back-end logic. Besides the central 'StatementService' and 'StatementProcessService' utility services such as the 'NotifyService', 'UserInfoService' and 'AuthorizationService' are widely used by many services.
+
+The resources tier contains components such as database repositories and facades for external services, such as the 'AuthNAuthApi', 'ContactDatabaseApi' and 'CamundaApi'.
+
+
+==== White Box Front-end
+
+The front-end application is structured into five different kind of modules: Feature modules, shared modules, store
+modules, core modules and utility modules:
+
+image::architecture-frontend-component-diag.svg[]
+
+===== Feature Modules
+
+Feature modules are a collection of Angular components which make up the main user interfaces of the application. Some
+of these modules include a routing configuration (routing modules) to specify certain components which are used as an
+entry point for routed views. Feature modules deliver the top components of the front-end application which dispatch
+actions to the global store and subscribe to data changes in the global store state. As such, they connect the view
+model with the deeper lying data model of the application.
+
+The following diagram shows a more detailed overview of the different feature modules of the front-end.
+
+image::architecture-feature-modules-diag.svg[]
+
+The navigation module implements a basic frame and router outlet which is used for the whole front-end application.
+It forms, together with the routing modules like the dashboard, mail, search, statement details, new statement and
+edit module, the whole user interface for a specific URL route for the front-end.
+For a better modularization and reuse, certain aspects of the user interface are implemented in their own feature module
+like the map module for displaying and searching for geographic positions, the comments module for viewing, adding and
+deleting comments, the attachments module for handling file uploads and downloads and the three main form modules
+(statement info form module, workflow data form module and the statement editor form module) for submitting changes
+to the actual statement model in the back-end data base.
+
+===== Shared Modules
+
+Shared modules are merely a collection of Angular components, directives and pipes which provide independent building
+blocks for the user interface, for example a common select component or a side menu component.
+
+===== Store Modules
+
+All global data is managed in a central store and accessed in a reactive way. Store modules offer actions to alter
+the global state or trigger side effects (like sending a message to the back-end API), and selectors to access and
+subscribe to data changes of parts in the global state.
+
+===== Core Modules
+
+Core modules offer services for data access and messaging. They provide injection tokens for the application's
+configuration files, offer facades for sending messages to the back-end and geocoder API and for accessing
+basic browser API, e.g. opening a new tab, triggering the download of a file or showing a confirmation dialog.
+
+===== Utility Modules
+
+Utility modules are no actual Angular modules but merely a collection of constants and utility functions. Those
+helper functions (e.g. for altering arrays or formatting date strings) are pure and independent from the rest
+of the front-end.
+
+
+==== White Box Workflow Engine
+
+The process of creating a new statement response is defined by the following statement workflow.
+
+image::Statement-workflow.svg[]
+
+The business process model represents a general workflow for statement processing that was developed in coordination with the customer. All actions to process a statement response are grouped together into a set of tasks that can be worked on by different users or user groups. The three lanes indicate the main user groups required to process the response. The process starts with the creation of a new statement process instance by a user with the user-role 'Official-In-Charge' (OIC) (In table as 'Sachbearbeiter'). There all relevant data is added to the statement database that is required to decide whether the DSO is the appropriate authority for the request. If not, a negative response will be formulated and sent to the customer after an approval by a user with the user-role 'Approver' (In table as 'Genehmiger'). In the positive case additional information relevant for other contributing users such as the 'Departement-Members' is added to the statement data set. After providing a draft of the statement response, the department members contribute the data set with their expertise. When all relevant departments have contributed, the statement response is formulated. An approver is then required to verify the statement response and initiate the dispatch. In cases the automatic dispatch is not successful or manual mail delivery is chosen, an OIC can correct the automatic dispatch error or manually send the the mail and finish the statement process.
+
+To process each of the tasks in the model above, one or more users with the appropriate user role have to claim the task, provide decision information and contribute documents where necessary and complete the task afterwards. The management of the workflow process is handled by an external Camunda workflow engine instance that is controlled via its RESTful interfaces by the module back-end. This architecture allows adaptions to the workflow process.
+
+==== White Box Statement DB
+
+All case relevant data to create a statement response is stored in a relational database structured as follows:
+
+image::database-structure.svg[]
+
+The center of a statement data set is represented as a 'Statement' in the database structure above. It stores the main case data such as the title, due dates and city and contact references. Attachments can be added and assigned with tags to classify them. Each attachment is directly assigned to a specific statement. Next to the attachments, the 'WorkflowData' is the center to further processing such as the response text arrangement, required department contributions and comments. To reduce migration efforts when updating the department structure and overall text block configuration, the 'DepartmentStructure' and the 'TextblockDefinition' contain a consistent configuration set.
+
+
diff --git a/src/main/asciidoc/arch/src/06_runtime_view.adoc b/src/main/asciidoc/arch/src/06_runtime_view.adoc
new file mode 100644
index 0000000..8e1751d
--- /dev/null
+++ b/src/main/asciidoc/arch/src/06_runtime_view.adoc
@@ -0,0 +1,37 @@
+[[section-runtime-view]]
+== Runtime View
+
+=== Login and authentication
+
+The login and authentication process is as follows:
+
+.StatementPublicAffairs application is called by the *portal* application. The User is already logged in
+[plantuml]
+....
+actor User
+participant PortalFrontend
+participant PortalBackend
+participant StatementPublicAffairsFrontend
+entity FrontendAuthService
+participant StatementPublicAffairsBackend
+
+User->PortalFrontend: Start StatementPublicAffairs(JWT)
+PortalFrontend->StatementPublicAffairsFrontend: navigate to frontend-URL with JWT
+StatementPublicAffairsFrontend->FrontendAuthService: Extract JWT and store token in session
+... some delay ...
+StatementPublicAffairsFrontend->StatementPublicAffairsBackend: Call any secured service with JWT
+group Call secured service
+
+StatementPublicAffairsBackend->PortalBackend: "/checkAut(JWT)"
+group Authorization succeeded
+StatementPublicAffairsBackend->StatementPublicAffairsBackend: run service
+StatementPublicAffairsBackend->StatementPublicAffairsFrontend: return service result
+end
+group Authorization failed
+StatementPublicAffairsBackend->StatementPublicAffairsFrontend: return HTTP Code 401
+end
+end
+....
+
+The user authenticates himself via the openKONSEQUENZ Portal Application (AuthNAuth). In that SSO (single sign on) process, he returns a JWT (JSON Web Token) that can be used as a authentication token for all other openKONSEQUENZ applications. The front-end application provides the token for all HTTPS requests at the module back-end. There it is verified against the AuthNAuth module. Furher request specific authorization processes then use the roles appended in the verified token for the authorization mechanism.
+
diff --git a/src/main/asciidoc/arch/src/07_deployment_view.adoc b/src/main/asciidoc/arch/src/07_deployment_view.adoc
new file mode 100644
index 0000000..112ab98
--- /dev/null
+++ b/src/main/asciidoc/arch/src/07_deployment_view.adoc
@@ -0,0 +1,20 @@
+[[section-deployment-view]]
+
+== Deployment View
+
+=== Deployment of the front-end
+
+See _howtoRun_ documentation.
+
+=== Deployment of the back-end
+
+See _howtoRun_ documentation.
+
+=== Deployment of the database
+
+See _howtoRun_ documentation.
+
+=== Configuration of the system
+
+See _howtoRun_ documentation.
+
diff --git a/src/main/asciidoc/arch/src/08_concepts.adoc b/src/main/asciidoc/arch/src/08_concepts.adoc
new file mode 100644
index 0000000..5a5cc30
--- /dev/null
+++ b/src/main/asciidoc/arch/src/08_concepts.adoc
@@ -0,0 +1,335 @@
+[[section-concepts]]
+== Cross-cutting Concepts
+
+=== Role concept
+
+The creation of a new statement response requires the collaboration of multiple editors from different company domains. They enhance the statement by adding domain specific information, comments that should support the final creation of the response document or verify the document for approval. The statement process is therefore divided up into multiple sequenced tasks each of which can be matched to one or more abstract user roles. A suitable role and rights concept must restrict general access to a previously defined group of editors as well as restricting the editing according to additional parameters like the current task and assigned user roles. This should be ensured by an adapted front-end visualization as well as a verification of the concrete edit type and parameters in the back-end service.
+
+The authorization logic is therefore implemented in a multi-tier validation process.
+
+To identify an access user, the external core module AuthNAuth is used. Each user of the Statement Public Affairs module is verified by a token generated by the AuthNAuth module. The assigned user roles managed by the AuthNAuth module can be used by the statement module to authorize the access interfaces.
+
+The overall access to the user interface as well as the back-end api is authorized by a basic role SPA_ACCESS that has to be assigned to each user of the Statement Public Affairs module.
+This role grants the user readable access to statement overview and details. Besides that, editing of statement details like attachments, comments or text-blocks is only allowed in certain statement process tasks and only granted to specific user roles. To prevent inconsistencies it shall be ensured, that only one user can edit a statement at the same time. This is ensured by a user to task assignment where only the currently assigned process task user is authorized to edit the statement.
+
+With this in mind one can abstract the following basic rules:
+
+* General read access is granted by the basic SPA_ACCESS role
+* Editing access is only granted for the currently assigned user
+* The concrete edit authorization is specific to the statement process task and the user roles
+
+==== Roles
+
+[cols="30%, 70%", options="header"]
+|===
+| Role | Description
+| SPA_ACCESS | Basic role that provides module access
+| SPA_ADMIN | Configures the statement module
+| SPA_OIC | Official in charge who does the formal statement editing
+| SPA_DIVISION_MEMBER | Member of a division who enhances the statement with domain specific information
+| SPA_APPROVER | Approves finished statements or negative responses
+| SPA_GUEST | Browses statements that are still in process or already finished
+|===
+
+==== Verification
+
+As shown in the authorization process diagram the verification is a multi-tier process.
+
+image::authorization-process.svg[]
+
+
+The first tier is the only granted based on the SPA_ACCESS user role that every statement module user shares.
+
+The next tiers differ in the concrete access types. Access types can be grouped into process task specific access and general access. General access is only verified by the user roles. Examples for these access types are reading statement details or starting a new statement process. The other access types are specified for each process task. To process a task, the user has to temporarily claim the task. This claim-user is matched with the access user. The last step of the task specific access authorization verifies the User Roles in combination with the task.
+
+==== Backend
+
+In the API back-end, the three layers are implemented as follows.
+The verification of the SPA_ACCESS role is implemented as a general precondition to access an end-point. This reduces the attack surface of the service as only little code is executed before access is denied.
+A central authorization service implements the other two verification layers. It has interfaces to verify the task specific access and the general access types and is requested in the beginning of each end-point logic.
+The central authorization service is configured by an authorization matrix that sets the role and task specific access rights.
+
+==== Frontend
+
+The basic strategy for the front end is to only render specific views or user controls if the user is authorized to read or use them. User roles as well as the information on tasks are stored centrally in the web application. On a change, all views are updated with the new data and display or hide certain parts of it.
+
+In the front end application, the first tier of access is verified right at the initialization when all roles for the user are loaded from the back end. If the user is not provided with general read access, only an error message is rendered. Otherwise, the user has access to the main views of the application.
+
+Certain sub pages, e.g. the settings page for configuring the module, can only be accessed with a specific user role. If a user is not provided with all necessary roles, links to the sub pages are not rendered in the navigation bar. Route guards ensure that a user can not access restricted sub pages via an URL route and redirect to the main landing page in this case.
+
+The second tier of access is verified if a user wants to view or edit a specific user task. For example, user controls to claim a task are only rendered if the task is not claimed by another user and if the user is actually allowed to do so by its assigned roles.
+Details of a statement can only be edited on a specific sub page: the edit page. When accessing the edit page for a specific task, first the relevant task information is loaded (or updated) and different kind of views are presented to the user based on the task information and the user's roles.
+
+While visiting the web application, roles can be revoked from the user. If so and if the user is trying to access now restricted areas of the web application, the user is logged out automatically. This essentially forces the user to revisit the website. It is also possible that the user's claim on a statement task is revoked. If so, all currently displayed views are updated accordingly to the new task information. For example, the edit page is updated and displays now a simple message instead of a form to edit the statement's details.
+
+=== Text block concept
+
+Based on the given general information regarding a statement, a textual response is formulated which is finally sent to the recipient. As the actual writing follows a standardized process, most parts of the text can be reused in various requests and only a small portion of it has to be adjusted to the specific situation, for example the contact person's name, the current date or simple free text which has to be defined by the user.
+
+
+When creating the statement response draft or final version, the responsible editor shall be able to put together the response text by selecting multiple text blocks, sort them and enhance them with case specific details. In addition, text blocks can have interdependencies. They may require predecessors, just make sense in a specific order or exclude each other. A text block concept is required that allows the administration of reusable text blocks including interdependency rules, order restrictions and the ability to define placeholders that can be used to adapt a text block to a specific case. Before creating the final document text block restrictions like placeholders, order, etc. shall be verified to ensure a consistent document text.
+
+==== Block administration
+
+The administration of the text blocks shall support the following modifications:
+
+* Create new and delete existing text block groups
+* Create new and delete text blocks
+* Modify existing text blocks
+* Rearrange text blocks
+* Set interdependencies between text blocks of the same group
+* Set variable text block place holders in text blocks
+
+The text block configuration is persisted in a single definition format that is versioned, so that it can be referenced in the creation process. This ensures that modifications of the text block definition do not affect statements that are already under development.
+
+==== Text formatting
+
+Text block content may be formatted. The following format types are supported:
+
+* bold
+* italic
+* lists with bullet points
+* newlines
+
+They can be manually set using a markup language with the following rules:
+
+[cols="20%,15%,65%", options="header"]
+|===
+| Type | Rule | Example
+| *bold* | \*<text>* | That's a \*bold* text.
+| _italic_ | \_<text>_ | That's a \_italic_ text.
+| bullet points | * Bullet | * That's a list entry
+|===
+
+Newlines can be set inside the text block by using enter or using the special character \n manually.
+
+==== Text place holder
+
+There are three main types of text place holders:
+
+* Free text can be of any textual form and may include formatted text or specific data from the statement’s general information like the title, dates and the contact person's name
+* Freely fillable date fields
+* Texts which can be chosen from a predefined list of options
+
+They can be manually set according to the following rules:
+
+[cols="20%,15%,65%", options="header"]
+|===
+| Type | Rule | Example
+| free text | <f:name> | Here's some random text: <f:random>.
+| date | <d:name> | Here's some date: <d:name>.
+| statement info| <t:name> | Referencing your request with the due date of <t:dueDate>, ...
+| select | <s:name> | Techspecs of the windmill: <s:ts_windmill>
+|===
+
+To be able to match statement info place holder variables with statement info data text response generators for a defined set of variables are implemented in the back-end.
+The source for the common place holders is a configuration file that contains a single replacement string or a list of replacement entries with a short handle that can be represented as a selection in the front-end.
+
+==== Persistence
+
+===== Definition
+
+The text block definition structure is as follows:
+[source,json]
+----
+{
+ "groups": [
+ {
+ "name": "<string>",
+ "blocks": [
+ {
+ "id": "<string>",
+ "text": "In the urban area of <t:city> we are operator of the network division(s) <t:divisions>.",
+ "requires": [
+ {
+ "type": "<and|or|xor>",
+ "ids": ["<block-id>", ...]
+ }
+ ],
+ "excludes": ["<block-id>",...]
+ }
+ ]
+ }
+ ]
+}
+----
+
+To ensure that modifications of the text block definition do not affect statements under development certain rules are established:
+
+* The definition has to be versioned
+* The current definition version is assigned to a new statement before the first time a draft of the statement response is created
+
+The definition is persisted in the database in JSON format.
+
+===== Statement response
+
+The persisted statement response holds the current compilation of text blocks. Therefore it includes a reference of the specific statement definition version.
+The detailed structure is as follows:
+[source,json]
+----
+{
+ "blocks": [
+ {
+ "type": "text",
+ "replacement": "That's a free text block."
+ },
+ {
+ "type": "block",
+ "textblockId": "1a",
+ "addNewline": true,
+ "placeholderValues": {
+ "f:freetext1": "free text",
+ "d:date1": "2020-06-30",
+ "s:select1": "<selectId>"
+ }
+ },
+ {
+ "type": "newline"
+ },
+ {
+ "type": "pagebreak"
+ }
+ ]
+}
+----
+
+==== Backend API
+
+
+[cols="10%,60%,30%", options="header"]
+|===
+| Req | Uri | Description
+| GET | /admin/text | Get current text block definition
+| POST | /admin/text | Set new text block definition
+| GET | /process/statements/{sId}/workflow/textarrangement | Get current text block compilation of statement
+| POST | /process/statements/{sId}/task/{tId}/workflow/textarrangement | Set text block compilation of statement
+|===
+
+
+=== User notification via email
+
+The process of collecting information to create a statement response is achieved by multiple statement editors contributing information from their knowledge domain. An efficient statement process requires a coordination of these different contributions via an email notification mechanism.
+
+Contributors of a statement shall be informed about important process steps at the transitions to the next process user task. Examples for these transitions are the notification of all users with the role SPA_Approver when a new positive or negative statement response shall be cleared or to inform all contributors when a statement process is finished.
+
+Therefore a notification component is required that is triggered when a process task is finished. If the current process task is configured for notification, all the contributors and configured ROLES shall be notified. The list of recipients consists of the contributors, all with ROLE official in charge, all approvers, or all users of the departments set in the statement workflow-data.
+
+The email account used for the notification mechanism should be a no-reply or a support account and should not be the same as the one for the statement inbox email account to avoid troubling response email in the statement inbox.
+
+The email text is configurable and contains the statement id, title for a simple evaluation by the recipient and a link to the details view of the specific statement.
+
+The email itself is sent via a configured email account connected via SMTP and an encrypted SSL connection.
+
+=== Statement email inbox
+
+New statement processes can be initiated in two different ways. An official in charge can initiate a new statement that was received via mail manually or transfer a statement request from an email inbox semi-automatically into a new statement process.
+
+Email is a communication type that does not include a proper sender identification. There's currently no identification method planned to ensure that spam e-mails can be filtered out reliably. As a consequence, new statement requests cannot automatically be transferred into new statement processes and need to be semi-automatically transferred by a statement official in charge.
+
+The semi-automatic transfer is implemented as a separate view to initiate new statement processes. There is a list of current emails that have not been processed by another statement process member. To evaluate that a new email is a legitimate statement request, the content of the email such as the email text and the attachments should be accessible within that view. For security reasons, the email content will only be shown as plain text. HTML content will not be rendered. An email content typically consists of multiple parts including the email text as plain-text or HTML, a signature and attachment files. For the detail view in the INBOX, all content parts that are not attachments are concatenated and presented as plain-text. With that, the content can be read and security issues that can be caused by rendering HTML content can be prevented. When transferred, the content is added as an attachment to the new statement process.
+
+Via the email communication protocol IMAP, the statement module can manage incoming mails of the statement mailbox. With that access one can list all new e-mails and process them by deleting unwanted e-mails, flag e-mails as read or unread and structure them by moving e-mails in a folder like structure. To manage the incoming statement request e-mails the statement specific mailbox folders are structured as follows:
+
+[cols="30%,70%", options="header"]
+|===
+| Folder | Description
+| INBOX | Inbox folder where all new e-mails are delivered to
+| PROCESSED | Folder where e-mails are moved to when a new statement process is initiated based on that e-mail
+| OTHER | Folder where e-mails are moved to that a statement official in charge selected as spam or for deletion
+|===
+
+With that an administrator is still able to access the mailbox with an email client with a reduced risk of interfering with the mechanism of the statement module to distinguish between new and already processed statement requests. Other mechanisms like flagging an email as READ can be set by accident when an administrator browses through the email folders with an email client. In case a statement official in charge deleted a legitimate statement request by accident it can still be found by an administrator within the OTHER folder and moved back to the INBOX folder with any email client. There it will show up again as a new request in the statement module view.
+
+To ensure that no other will interfere with that mechanism, the email address used for the external statement process communication should only be used for that purpose.
+
+When a new statement process is initiated, the request email is linked to the statement by the unique email MessageId that is part of the email header (RFC/3051). With that, it is possible to identify the request email afterwards and access the email text and attachments again later in the statement process when for instance an email-attachment was forgotten to be transferred to the statement process. Attachments of an e-mail themselves can be uniquely identified by their content sequence number and the file name.
+
+=== Statement response dispatch
+
+After the successful statement process the positive or negative response can be either delivered via mail or e-mail. The response message consists of a response letter and optional attachments. In case of a response via e-mail, the response mail consists of a plain-text response with the response letter attached as a PDF document. Additionally attachments can be selected that are sent together with the response e-mail.
+The same e-mail address as the statement request inbox is used to deliver the response e-mail. Therefore the same e-mail address as the statement request inbox is used. In cases where the response cannot be delivered or no recipient e-mail address is available, the response letter PDF together with additional response attachments can be downloaded and sent via mail.
+
+=== Statement response PDF
+
+During the statement process all contributors help forming a statement response text that is compiled together into an official response letter. The persistence format of these contributions and the text compilation is specified in the concept section <<Text block concept,Text block concept>>. The form of the response letter is a single- or multi-paged PDF document according to the size of the response text. For the generation of the PDF document a template based solution was chosen.
+
+==== PDF templates
+
+To generate a response letter in form of a PDF document the following procedure is used.
+
+The PDF documents are generated by using a letter paper template PDF and a definition of the position and size of text blocks that are placed on the letter paper. The content structure of a response letter is as follows:
+
+image::pdf-concept.svg[]
+
+As shown in the diagram above, the first page has a similar structure as a business letter. It contains of the three text blocks
+ address-block, infodata-block and content-block. The address-block shows the recipient address with values like company address and and recipient name that are part of the statement-info-data-set. The infodata-block contains predefined text as well as information from the statement-infodata-set.
+
+The text-block compilation that is created by the statement contributors is then printed as left-aligned text in the content-block. If the content exceeds the size of the content block of a page, an additional page that uses a different letter paper template and contains only a content-block is added. The letter ends with a predefined closing and a signature part.
+
+The template can be configured according to a specific letter format and consists of a two page PDF document and a configuration file with the text-block positions and text-block sizes. Page one of the template PDF is the first page. Page two is used for all following pages.
+
+Each text- block is referenced as follows:
+
+* type [address | info | content-p1 | content-p2]
+* top-left (x,y) position in cm (float) from the top-left document corner
+* width, height in cm (float)
+* text lines that can contain statement placeholders
+* fontsize
+
+The closing has special configuration including the salutation and up to two signature fields. The position is relative to the current text position.
+
+
+Configuration format:
+[source,json]
+----
+{
+ "address": {
+ "x": 10.2,
+ "y": 4.2,
+ "width": 5.3,
+ "height": 10.3,
+ "fontsize" : 10
+ },
+ "info": {
+ "x": 10.2,
+ "y": 4.2,
+ "width": 5.3,
+ "height": 10.3
+ "text": ["each", "line", "as", "separate", "entry"],
+ "fontsize" : 8
+ },
+ "content-p1": {
+ "x": 10.2,
+ "y": 4.2,
+ "width": 5.3,
+ "height": 10.3,
+ "fontsize" : 10
+ },
+ "content-p2": {
+ "x": 10.2,
+ "y": 4.2,
+ "width": 5.3,
+ "height": 10.3,
+ "fontsize" : 10
+ },
+ "closing": {
+ "salutation": ["Sincerely yours", "another line"],
+ "signatures": [
+ {
+ "xrel":2.1,
+ "yrel":3.2,
+ "width": 5.1
+ "label" : ["First Lastname", "Second line"]
+ "fontsize" : 10
+ }, ...
+ ]
+ }
+}
+----
+
+==== PDF response text
+
+The response content formulated during the statement process is stored as a set of text parts. For generating the response text a simple form of type-setting is used. Text that exceeds the configured with of a text-block is wrapped after the last token that fits the boundary. Text tokens are generated by cutting the text along the blanks. When a text part does not fit into the height of a content text-block a new page is generated and the whole text-block is then printed onto the new page.
+As described in the section <<Text formatting,Text formatting>> the response text can contain bold and italic text as well as bullet point lists.
+At the end, the response is closed with the configured closing.
+
diff --git a/src/main/asciidoc/arch/src/09_design_decisions.adoc b/src/main/asciidoc/arch/src/09_design_decisions.adoc
new file mode 100644
index 0000000..8f947f4
--- /dev/null
+++ b/src/main/asciidoc/arch/src/09_design_decisions.adoc
@@ -0,0 +1,7 @@
+[[section-design-decisions]]
+== Design Decisions
+
+All architecture decisions are based on the Architecture Committee Handbook. There are no deviations.
+
+
+
diff --git a/src/main/asciidoc/arch/src/10_quality_scenarios.adoc b/src/main/asciidoc/arch/src/10_quality_scenarios.adoc
new file mode 100644
index 0000000..5ae623e
--- /dev/null
+++ b/src/main/asciidoc/arch/src/10_quality_scenarios.adoc
@@ -0,0 +1,5 @@
+[[section-quality-scenarios]]
+== Quality Requirements
+
+All quality requirements decisions are based on the Qualitee Committee Handbook. There are no deviations.
+
diff --git a/src/main/asciidoc/arch/src/11_technical_risks.adoc b/src/main/asciidoc/arch/src/11_technical_risks.adoc
new file mode 100644
index 0000000..ef7182b
--- /dev/null
+++ b/src/main/asciidoc/arch/src/11_technical_risks.adoc
@@ -0,0 +1,6 @@
+[[section-technical-risks]]
+== Risks and Technical Debts
+There are currently no known issues.
+
+
+
diff --git a/src/main/asciidoc/arch/src/12_glossary.adoc b/src/main/asciidoc/arch/src/12_glossary.adoc
new file mode 100644
index 0000000..ead645c
--- /dev/null
+++ b/src/main/asciidoc/arch/src/12_glossary.adoc
@@ -0,0 +1,16 @@
+[[section-glossary]]
+== Glossary
+
+
+
+
+
+[options="header"]
+|===
+| Term | Long | German | Description
+|AC|Architecture Committee|Architektur-Komittee|Gives framework and constraints according to architecture for oK projects.
+|DSO|Distribution System Operator|Verteilnetzbetreiber (VNB)|Manages the distribution network for energy, gas or water.
+|EPL|Eclipse Public License||Underlying license model for Eclipse projects like statement-public-affairs@openK
+|QC|Quality Committee|Qualitätskomitee|Gives framework and constraints according to quality for oK projects.
+|SPA| Statement Public Affairs | Stellungnahmen öffentlicher Belange |
+|===
diff --git a/src/main/asciidoc/arch/src/about-arc42.adoc b/src/main/asciidoc/arch/src/about-arc42.adoc
new file mode 100644
index 0000000..69f51bf
--- /dev/null
+++ b/src/main/asciidoc/arch/src/about-arc42.adoc
@@ -0,0 +1,20 @@
+:homepage: http://arc42.org
+
+:keywords: software-architecture, documentation, template, arc42
+
+:numbered!:
+**About arc42**
+
+[role="lead"]
+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
+
+(C)
+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.
diff --git a/src/main/asciidoc/arch/src/config.adoc b/src/main/asciidoc/arch/src/config.adoc
new file mode 100644
index 0000000..334d529
--- /dev/null
+++ b/src/main/asciidoc/arch/src/config.adoc
@@ -0,0 +1,9 @@
+// asciidoc settings for EN (English)
+// ==================================
+:toc-title: table of contents
+
+// enable table-of-contents
+:toc:
+
+// where are images located?
+:imagesdir: ./images
diff --git a/src/main/asciidoc/howto/howtoAlternateDatabase.adoc b/src/main/asciidoc/howto/howtoAlternateDatabase.adoc
new file mode 100644
index 0000000..decf1b9
--- /dev/null
+++ b/src/main/asciidoc/howto/howtoAlternateDatabase.adoc
@@ -0,0 +1,64 @@
+= openKonsequenz - Alternate back-end databases (i.e. Oracle) - Statement Public Affairs
+:Date: 2020-11-05
+:Revision: 0.1.0
+:icons:
+:source-highlighter: highlightjs
+:highlightjs-theme: solarized_dark
+:!toc:
+
+<<<
+
+== Alternate back-end database - HowTo
+
+The default database of the openKONSEQUENZ module Statement Public Affairs is the PostgreSQL database. To use other databases (i.e. Oracle), some adaptions have to be made to the build configuration and to the run configuration.
+
+TIP: It is recommended to read the howToBuild and howToRun documentation first.
+
+=== Build configuration
+
+The back-end of the Statement Public Affairs module is written in Java and connects to databases with the generic JDBC connector. For Oracle we need an additional dependency referenced in the pom.xml file.
+
+The configuration entry below is an example. Please verify that the license of the library suits your purpose.
+[source,xml]
+----
+<dependency>
+ <groupId>com.oracle.database.jdbc</groupId>
+ <artifactId>ojdbc8</artifactId>
+ <version>19.7.0.0</version>
+</dependency>
+----
+
+=== Run configuration
+
+The application.yml file that configures the module back-end has to be changed as follows.
+
+Alter or add the following parameters in the *application.yml*. Other parameters should not be deleted.
+[source, yml]
+----
+spring:
+ datasource:
+ url: "jdbc:oracle:thin:@192.168.56.43:1539/xe"
+ username: "C##SPA_SERVICE"
+ password: "spa_service"
+ driver-class-name: oracle.jdbc.OracleDriver
+----
+
+Change the parameters according to your database configuration.
+
+* The *url* parameter is of the format {jdbc_connection}@{host}:{port}/{oracle_sid}.
+* The *username* and *password* are the database credentials of the module back-end user.
+* The *driver-class-name* defines the connection driver.
+
+<<<
+=== Initial database configuration
+
+In the module back-end repository you find a */deploy/db* folder that contains database initialization sql scripts.
+
+Currently existing database initialization sql scripts:
+[options="header"]
+|===
+|File | Database
+|createDB.sql| PostgreSQL database
+|createDB-Oracle.sql| Oracle database
+|===
+
diff --git a/src/main/asciidoc/howto/howtoBuild.adoc b/src/main/asciidoc/howto/howtoBuild.adoc
new file mode 100644
index 0000000..ea7bc45
--- /dev/null
+++ b/src/main/asciidoc/howto/howtoBuild.adoc
@@ -0,0 +1,126 @@
+= openKonsequenz - How to build the module "Statement Public Affairs"
+:Date: 2020-06-09
+:Revision: 0.3.0
+:icons:
+:source-highlighter: highlightjs
+:highlightjs-theme: solarized_dark
+
+<<<
+
+== Requirements
+* Node.js 12.17.0
+* Apache Maven 3.6.3
+* Openjdk 1.8.0_252
+
+== Building the back end
+
+=== Environment
+
+Verify that your environment is set up correctly.
+
+The java version of the JDK should match 1.8.0
+
+[source,command]
+----
+ $ java -version
+----
+The JAVA_HOME environment variable should point to the jdk home folder.
+
+The maven version should match 3.6.8
+
+[source,command]
+----
+ $ mvn --version
+----
+
+=== Get back end sources
+
+Clone the back end sources with a git client.
+
+=== Configuration
+
+To include the configuration within the deployment artifact, the configuration file application.yml in src/main/resources can be replaced.
+You can find a detailed description of the available configuration parameters in the howToRun document.
+
+=== Build and test
+
+To build the back end move to the project base folder
+
+The following command builds a new artifact, runs unit tests to verify the implementation and stores the artifact and the test results within the target/ folder.
+
+Build war for Apache Tomcat:
+[source, command]
+----
+ $ mvn clean install
+----
+
+Build jar for stand alone Java Spring application:
+[source, command]
+----
+ $ mvn clean install -Dp.type=jar
+----
+
+To speed up the build you can skip testing.
+[source, command]
+----
+ $ mvn clean install -DskipTests
+----
+
+The target/ folder should then contain a web application archive named statement-public-affairs.war
+
+
+== Building the front end
+
+=== Environment
+
+Verify that your environment is set up correctly.
+
+The node version should match 12.17.x.
+
+[source, command]
+----
+ $ node --version
+----
+
+=== Get front end sources
+
+Clone the front end sources with a git client.
+
+
+=== Configuration
+
+All relevant configurations for the front end can be found in the file `app.config.json`. This file is required for
+compilation, thus changes to it take only effect after building the front end.
+Please visit the *howtoRun* documentation for more information on a detailed overview of the configurable parameters.
+
+=== Build and test
+
+To build the front end, move to the project base folder.
+
+The following command installs all dependencies via npm and is required before starting the build or any tests.
+
+[source, command]
+----
+ $ npm install
+----
+
+After successfully installing all dependencies, the following command builds new artifacts and stores them in the `dist/` folder.
+
+[source, command]
+----
+ $ npm run build
+ $ npm run build:archive
+----
+
+Tests and static code analysis can be executed with the following commands. The generated test report can then be found in the `coverage/` folder. Reports for the static code analysis can be found in the files `lint.ts.report.json` and `lint.styles.report.json` for all typescript and (s)css code.
+
+[source, command]
+----
+ $ npm run test:report
+ $ npm run lint:report
+----
+
+
+TIP: Next Step -> Read the *howToRun* documentation!
+
+
diff --git a/src/main/asciidoc/howto/howtoRun.adoc b/src/main/asciidoc/howto/howtoRun.adoc
new file mode 100644
index 0000000..bbd0e26
--- /dev/null
+++ b/src/main/asciidoc/howto/howtoRun.adoc
@@ -0,0 +1,650 @@
+= openKonsequenz - How to run the module "Statement Public Affairs"
+:Date: 2020-06-09
+:Revision: 0.3.0
+:icons:
+:source-highlighter: highlightjs
+:highlightjs-theme: solarized_dark
+
+<<<
+
+IMPORTANT: Please be sure that you have installed and configured the following openKonsequenz modules!
+
+* Portal (AuthNAuth)
+* Contact Base Data
+
+== Requirements
+* Browser (Chrome or Firefox)
+* For Linux based installation
+** `statemtent-public-affairsBE.war` file after a successfully maven build located in `<back-end project root>/target`.
+** `statemtent-public-affairsFE.war` file after a successfully npm build located in `<front-end project root>/dist`.
+
+* For Docker based installation
+** `statemtent-public-affairsBE.jar` file after a successfully maven build located in `<back-end project root>/target`.
+** already configured and successful npm build results located in `<front-end project root>/dist`.
+
+
+See *howToBuild* documentation.
+
+== Prerequisites
+* Configured Portal Available modules configuration - add statement module
+* Contact Base Data module
+* Configured AuthNAuth module
+
+== Configure Keycloak
+* AuthNAuth service users
+* AuthNAuth SPA_Roles
+
+Required Roles are:
+
+[%header,cols=3*]
+.User roles
+|===
+| Role | Assign to users | Description
+| ROLE_SPA_ACCESS | all service users | General service access
+| ROLE_SPA_OFFICIAL_IN_CHARGE | Official in charge users | Create and manage statements
+| ROLE_SPA_APPROVER | approvers | Approve statement responses
+| ROLE_SPA_DIVISION_MEMBER | only division members | Enrich statement
+| ROLE_ADMIN | admin users | Access administrator interfaces
+|===
+
+== Installation overview
+The openK module Statement Public Affairs consists of a front end web application that communicates with a back end application via a RESTful interface. Both are independent of each other what allows different deployment options that should fit for common environments. Besides a properly configured authNAuth module and Contact Base Data module, the Statement Public Affairs module relies on a database for storing statement process data and a workflow engine that supports the statement specific workflow states and variables for the workflow gateway transition.
+Described below are two common installation types, the installation on a Linux based host environment as well as a docker based version.
+
+== Linux based installation
+The Linux based installation that follows the original guidelines of most openK modules uses an Apache Tomcat that runs both, the front-end web application and the back-end web application of the statement module. For storing the statement process data, a PostgreSQL database is used. The statement workflow process is supported by a Camunda workflow engine. In this installation guide, all services are deployed on the same host. You can adapt this according to your own environment if necessary.
+
+=== Install and configure Apache Tomcat
+The back-end and front-end web applications are deployed on a Apache Tomcat application sever. To run the Apache Tomcat application server a Java runtime has to be installed first.
+For compatibility reasons with other modules, an openjdk-8 environment is required. This can be done via your application repository such as apt of the Linux distribution of your choice.
+
+To install the Apache Tomcat application server, just download the respective version and follow the general installation guides on the Apache documentation.
+https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.24/bin/apache-tomcat-8.5.24.tar.gz
+
+Later, after successful configuration of the keycloak server, the Contact Base Data module, the statement database and the Camunda workflow engine, the statement module back-end and front-end web application can be deployed by copying the artifacts to the webapps folder of the extracted Apache Tomcat installation.
+
+=== Install and deploy the database
+All statement specific process data is is saved to in a relational database. Following already existing openK modules the PostgreSQL database was chosen as a default.
+At the time of the module implementation, the PostgreSQL database in version 9.5 was used.
+
+First create a new user and database for the statement module (named spa_service in the example). The user and password should match the back-end module configuration.
+[source, command]
+----
+psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
+ CREATE USER spa_service;
+ CREATE DATABASE spa_service;
+ ALTER USER spa_service with encrypted password 'service password';
+ GRANT ALL PRIVILEGES ON DATABASE spa_service TO spa_service;
+----
+
+Then initialize the database with the init script 'createDB.sql' that can be found in the back-end source deploy/db folder.
+
+The following database parameters are required for the statement module back-end configuration:
+
+* Database URI and port
+* Service username and password
+
+=== Install and configure the Camunda workflow engine
+The statement workflow process is supported by a Camunda workflow engine.
+At the time of the module implementation, the Camunda worklflow engine in version 7.8.0 was used.
+It can be downloaded from the following location:
+https://downloads.camunda.cloud/release/camunda-bpm/tomcat/7.8/camunda-bpm-tomcat-7.8.0.tar.gz
+
+To install the Camunda workflow engine, just download the respective version and follow the general installation guides in the Camunda documentation. In addition to that the authentication configuration has to be adapted to enable Basic-Auth for the engine REST interface.
+
+Therefore add the following lines to the webapps/engine-rest/WEB-INF/web.xml of your Camunda tomcat installation:
+[source, xml]
+----
+<filter>
+ <filter-name>camunda-auth</filter-name>
+ <filter-class>
+ org.camunda.bpm.engine.rest.security.auth.ProcessEngineAuthenticationFilter
+ </filter-class>
+ <init-param>
+ <param-name>authentication-provider</param-name>
+ <param-value>org.camunda.bpm.engine.rest.security.auth.impl.HttpBasicAuthenticationProvider</param-value>
+ </init-param>
+</filter>
+<filter-mapping>
+ <filter-name>camunda-auth</filter-name>
+ <url-pattern>/*</url-pattern>
+</filter-mapping>
+----
+
+Then finish the installation and create a new service admin and service user and a tenant with id "spa" via the Camunda web-interface. The service user requires access to Deployment, Tasks, Process Definition and Process Instance.
+
+The service user and password should match the back-end module configuration.
+
+Then use the service user with the Camunda modeler to upload the statmenent.bpmn workflow model to the Camunda instance.
+An alternate way to upload the statement.bpmn is via the following curl command:
+[source, command]
+----
+curl --user username:password http://localhost:8480/engine-rest/deployment/create -F "data=@Stellungnahme.bpmn" -F "deployment-source=process-application" -F "deployment-name=Stellungnahme" -F "tenant-id=spa" -v
+----
+
+
+The following workflow engine parameters are required for the statement module back-end configuration:
+
+* engine URI and port
+* service username and password
+* workflow identifier
+* tenantId
+
+=== Run the back-end
+To run the module back-end, just deploy the artifact with a proper configuration to the Apache Tomcat instance.
+For configuration details, please see section Configuration below.
+
+=== Run the front-end
+To run the module front-end, just deploy the artifact with a proper configuration to the Apache Tomcat instance.
+For configuration details, please see section Configuration below.
+
+== Docker based installation
+Based on the Docker container philosopy, the docker container structure of the statement module is splitted up into multiple docker containers. The module front-end is implemented as a nginx based container that provides the module webapp. The module back-end is implemented as a Java runtime environment based container that runs the back-end as a spring application.
+
+Please ensure that you have alreaady configured the front-end and that you have already build the front-end and back-end according to the howToBuild documentation. The front-end and back-end repositories contain buildDocker scripts that may help you with the build process by creating a closed build environment for reproducible builds.
+
+=== Front-end
+Building the front-end docker image requires already configured build artifacts.
+
+The front-end docker image can be build from the project root folder (contains the package.json file).
+
+=== Back-end
+Building the back-end docker image requires build artifacts with the package-format 'jar'.
+
+The back-end docker has the following folder structure:
+
+* /app
+* /app/bin
+* /app/config
+* /app/archive
+* /app/logs
+
+That folder structure can be found in the repository /docker/runenv folder.
+The config folder contains all configuration files. They are baked into the docker image. For security reasons it might make sense to mount the configuration files when starting the back-end docker container.
+
+To build the back-end docker image please see section 'Docker Compose - Blueprint'
+
+=== Dependency Services - Blueprint
+The back-end project /docker folder also contains docker recipes for dependencies. They can be used as a blueprint how to configure the dependency services in a production environment.
+
+The folder /docker/postgresenv contains a docker recipe to create a postgreSQL based database instance that is initialized properly for the statement module.
+
+The folder /docker/camundaenv contains a docker recipe to create a camunda workflow engine instance. It is automatically initialized with a statement module user, access rules and a deployed workflow by the start-scripts.
+
+The folder /docker/openkmain contains a nginx based docker recipe that can be used as a reverse proxy to be able to access all configured openKONSEQUENZ modules at one host (like in the QA-Environment).
+
+To run the other dependency openKONSEQUENZ services like the authNAuth module and the Contact Base Data module please see the module specific installation documentation.
+
+=== Docker Compose - Blueprint
+Docker compose is a tool to orchestrate multi-container Docker applications. There you can specify build options, run options and dependencies between configured docker containers.
+
+The root folder of the module back-end repository contains a docker-compose.yml configuration that can be used as a blueprint to manage a openKONSEQUENZ service environment.
+Please alter the configuration according to your environment.
+
+To build the docker containers specified in the configuration use the following command:
+[source, command]
+----
+$ docker-compose build
+----
+
+To start the docker containers specified in the configuration use the following command:
+[source, command]
+----
+$ docker-compose up
+----
+
+== Configuration
+
+=== Configuration of the Statement Public Affairs module back-end
+
+The back-end service is configured with the `application.yml` file.
+
+==== Configuration Settings
+The back end configuration is separated into multiple configuration files.
+
+The basic configuration values are located in the application.yml and are loaded when starting the back end service (see section Application YML).
+Some of the configuration parameters refer to specific configurations that are described in the sections below.
+
+===== Application YML
+The back-end service is configured with the application.yml file.
+
+* *spring*:
+** *datasource*: Section for the database connection
+*** url: jdbc:postgresql://serverdomain:port (default: 5432)/NameOfDatabase (Example: spa_service)
+*** username: spa_service
+*** password: <password of spa_service> see "Install and deploy the Database"
+
+
+* *application*:
+** name: \^project.artifactId^ extract name from the pom.xml at build time
+* *build*:
+** version: \^project.version^ extract version from pom.xml at build time
+
+* *server*:
+** port: 9156 port of the server when running as stand alone spring application
+
+* *jwt*:
+** tokenHeader: Authorization HTTP header key of the token
+** useStaticJwt: false (enable only for testing)
+** staticJwt: x (set static jwt token value when enabling useStaticJwt setting)
+
+* *services*: Define service specific config root section
+** *authNAuth*:
+*** name: authNAuthService
+** *camunda*:
+*** name: camundaService
+** *contactdatabase*:
+*** name: contactDatabaseService
+
+
+* *authNAuthService*: Section for the AuthNAuth service
+** *ribbon*:
+*** listOfServers: http://localhost:8080 base URL of the AuthNAuth service
+
+* *camundaService*: Section for the Camunda service
+** *ribbon*:
+*** listOfServers: http://localhost:8280 base URL of the Camunda service
+
+* *contactDatabaseService*: Section for the contact database service
+** *ribbon*:
+*** listOfServers: http://localhost:9155 base URL of the contact database service
+
+* *camunda*: User credentials for the service to authenticate against the Camunda service
+** user: spa_service
+** pw: password
+
+
+* *authnauth*: User credentials for the service to authenticate against the AuthNAuth service
+** technical-username: spa_service
+** technical-userpassword: password
+
+
+* *contactDatabase*: User credentials for the service to access the contact database
+** technical-username: spa_service
+** technical-userpassword: password
+
+
+* *workflow*: Workflow specific configuration parameters
+** processDefinitionKey: statement_p key of the workflow process to use for the statement workflow
+** tenantId: spa tenant Id, the workflow is assigned to
+
+* *feign*:
+** *client*:
+*** *config*:
+**** *default*:
+***** *connectTimeout*: (Default: 60000) Connection timeout for the REST-Calls (in ms).
+***** *readTimeout*: (Default: 60000) Read timeout for the REST-Calls (in ms).
+
+* *cors*:
+** *corsEnabled*: (Default: false) (true or false) Cross-Origin Resource Sharing on/off
+
+* *statement*:
+** *compile*:
+*** dateFormatPattern: dd.MM.yyyy date format string in response texts (e.g. PDF response)
+*** statementFileName: Statement.pdf file name of a generated response PDF
+*** templatePdf: classpath:template.pdf path of the template.pdf file to user for generating the response PDF (see section Template PDF)
+*** templateJson: classpath:template.json path of the template.json file for generating the response PDF texts (see section Template JSON)
+** *authorization*:
+*** path: classpath:authorization.csv path of the authorization configuration containing the authorization rules (see section Authorization CSV)
+*** csv-delimiter: ; delimiter char of the authorization configuration CSV file entries
+
+* *archive*:
+** basefolder: /opt/statement/archive base folder path for the statement archive
+** statementArchiveFolderName: <t:finishedDate>_<t:id>_statement name of the statement archive folder <t:finishedDate> and <t:id> are place holder keys
+
+* *mail*:
+** *account*:
+*** *statement*:
+**** properties: /opt/statement/config/mail-statement.properties path of the mail properties file for the statement mail box (see section Mailbox Config properties)
+*** *notification*:
+**** properties: /opt/statement/config/mail-notification.properties path of the mail properties file for the notification mail box
+** newmailcheck: true check for new mails in statement inbox every minute and send notification mail to users with role SPA_STATEMENT_OIC
+** configurationPath: /opt/statement/config/mailConfig.json path of the mailConfig json configuration (see section MailConfig)
+
+===== Mailbox Config properties
+There are two required mail box properties files. Both are properties are described in the sections below.
+The configuration parameters have to be altered fit your mail server configuration.
+
+====== Mailbox Config properties - statement
+
+* mail.imap.host = imap.host.tld IMAP host address
+* mail.imap.user = username username of the mail account
+* mail.imap.password = password password of the mail account
+* mail.imap.port = 993 port of the IMAP server
+* mail.imap.auth = true enable authentication
+* mail.imap.socketFactory.class = javax.net.ssl.SSLSocketFactory set SSL connections
+
+
+* mail.smtp.host = smtp.host.tld SMTP host address
+* mail.smtp.auth = true enable authentication
+* mail.smtp.from = statements@company.tld email address of the sender
+* mail.smtp.port = 465 port
+* mail.smtp.socketFactory.port = 465
+* mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory
+* mail.smtp.socketFactory.fallback = false
+
+====== Mailbox Config properties - notification
+
+* mail.imap.user = username username of the mail account
+* mail.imap.password = password password of the mail account
+
+* mail.smtp.host = smtp.host.tld SMTP host address
+* mail.smtp.auth = true enable authentication
+* mail.smtp.from = statements@company.tld email address of the sender
+* mail.smtp.port = 465 port
+* mail.smtp.socketFactory.port = 465
+* mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory
+* mail.smtp.socketFactory.fallback = false
+
+===== Mail Config JSON
+The mail configuration specifies the response email content values. It contains an entry for each notification type and the response email. There one can set the email subject and text body values. Notifications that reference a statement can contain a placeholder value for the statement identifier to allow linking to the specific statement (e.g. via an URL containing the statement identifier).
+
+[source, json]
+----
+{
+ "notificationInboxNewMail": {
+ "subject": "[Statement] New statement request",
+ "body": "Notification email body\n\nStatement module: https://url-to-the-statement service\n",
+ "bccEmailAddresses": []
+ },
+ "notificationEnrichDraft": {
+ "subject": "[Statement] Division contributions required",
+ "body": "Notification email body can directly reference the statement with an <id> place holder value https://url../statementpaFE/details?id=<id>",
+ "bccEmailAddresses": []
+ },
+ "notificationApprovalRequired": {
+ "subject": "[Statement] Approval required",
+ "body": "Notification email body ...",
+ "bccEmailAddresses": []
+ },
+ "notificationNotApproved": {
+ "subject": "[Statement] Not approved, rework required",
+ "body": "Notification email body ...",
+ "bccEmailAddresses": []
+ },
+ "notificationApprovedAndNotSent": {
+ "subject": "[Statement] Approved, manual send required",
+ "body": "Notification email body ..."
+ "bccEmailAddresses": []
+ },
+ "notificationApprovedAndSent": {
+ "subject": "[Statement] Approved and sent",
+ "body": "Notification email body ..."
+ "bccEmailAddresses": []
+ },
+ "notificationAllMandatoryContributions": {
+ "subject": "[Statement] All mandatory departments contributed",
+ "body": "Notification email body ..."
+ "bccEmailAddresses": []
+ },
+ "statementResponse": {
+ "subject": "[Statement] Response for your request - our sign <t:id>",
+ "body": "Statement response email body ..."
+ "bccEmailAddresses": []
+ }
+
+}
+----
+
+===== Template PDF
+
+To generate a response letter in form of a PDF document the following procedure is used.
+
+The PDF documents are generated by using a letter paper template PDF and a definition of the position and size of text blocks that are placed on the letter paper. The content structure of a response letter is as follows:
+
+image::pdf-concept.png[]
+
+As shown in the diagram above, the first page has a similar structure as a business letter. It contains of the three text blocks
+ address-block, infodata-block and content-block. The address-block shows the recipient address with values like company address and and recipient name that are part of the statement-info-data-set. The infodata-block contains predefined text as well as information from the statement-infodata-set.
+
+The text-block compilation that is created by the statement contributors is then printed as left-aligned text in the content-block. If the content exceeds the size of the content block of a page, an additional page that uses a different letter paper template and contains only a content-block is added. The letter ends with a predefined closing and a signature part.
+
+The template can be configured according to a specific letter format and consists of a two page PDF document and a configuration file with the text-block positions and text-block sizes. Page one of the template PDF is the first page. Page two is used for all following pages.
+
+===== Template JSON
+Each text- block is referenced as follows:
+
+* type [address | info | content-p1 | content-p2]
+* top-left (x,y) position in cm (float) from the top-left document corner
+* width, height in cm (float)
+* text lines that can contain statement placeholders
+* fontsize
+
+The closing has special configuration including the salutation and up to two signature fields. The position is relative to the current text position.
+
+Example configuration:
+[source, json]
+----
+{
+ "address": {
+ "x": 2.5,
+ "y": 5.8,
+ "width": 10,
+ "height": 5.0,
+ "fontSize": 10
+ },
+ "info": {
+ "x": 14.7,
+ "y": 5.3,
+ "width": 5.5,
+ "height": 5.0,
+ "fontSize": 6,
+ "text": ["Dornheimer Weg 24", "64293 Darmstadt", "Telefon 06151 701-xxxx", "Telefax 06151 701-xxxx", "vorname.nachname@e-netz-suedhessen.de", "Ihr Zeichen: <t:customerReference>", "Unser Zeichen: <t:id>", "", "" ,"Datum <t:b-currentDate>" ]
+ },
+ "contentP1": {
+ "x": 2.5,
+ "y": 11.4,
+ "width": 13.0,
+ "height": 14.0,
+ "fontSize": 10,
+ "text": ["Sehr geehrte(r) <t:c-salutation> <t:c-title> <t:c-firstName> <t:c-lastName>,\n\n vielen Dank für Ihre Anfrage.\n\n\n"]
+ },
+ "contentP2": {
+ "x": 2.5,
+ "y": 5.3,
+ "width": 13.0,
+ "height": 20.0,
+ "fontSize": 10
+ },
+ "closing": {
+ "salutation": [
+ "",
+ "",
+ "",
+ "Mit freundlichen Grüßen",
+ "Ihre e-netz Südhessen AG"
+ ],
+ "signatures": [
+ {
+ "xoffset": 0,
+ "yoffset": 2,
+ "width": 5,
+ "lines": [
+ "Hans Huber",
+ "Geschäftsführer"
+ ]
+ },
+ {
+ "xoffset": 7.8,
+ "yoffset": 2,
+ "width": 5,
+ "lines": [
+ "i.A. Sepp Meier",
+ "Netzbetrieb"
+ ]
+ }
+
+ ]
+ }
+}
+----
+
+===== Authorization CSV
+The authorization configuration is specific to the statement workflow definition. In general it should not be altered.
+In case the statement workflow definition has changed and additional tasks are added, the configuration can be altered accordingly.
+
+Each line contains a single authorization rule. It consists of the four columns:
+
+* taskDefinitionKey
+* required ROLE
+* action
+* special constraint
+
+The default csv delimiter is ';'. It can be configured in the appliction.yml configuration (see section Application YML)
+
+Default configuration:
+[source, csv]
+----
+ANY; ROLE_SPA_OFFICIAL_IN_CHARGE; CREATE_STATEMENT; ANY
+ANY; ROLE_SPA_OFFICIAL_IN_CHARGE; MANIPULATE_ATTACHMENTS; ANY
+ANY; ROLE_SPA_OFFICIAL_IN_CHARGE; SEARCH_CONTACTS; ANY
+ANY; ROLE_SPA_OFFICIAL_IN_CHARGE; MOVE_MAIL; ANY
+ANY; ROLE_SPA_OFFICIAL_IN_CHARGE; FINISH_STATEMENT; ANY
+ANY; ROLE_SPA_APPROVER; FINISH_STATEMENT; ANY
+
+ANY; ROLE_SPA_ACCESS; READ_BASE_DATA; ANY
+ANY; ROLE_SPA_ACCESS; READ_STATEMENT; ANY
+ANY; ROLE_SPA_ACCESS; READ_MAIL; ANY
+ANY; ROLE_SPA_ACCESS; READ_WORKFLOW_TASK; ANY
+ANY; ROLE_SPA_ACCESS; UNCLAIM_TASK; ANY
+ANY; ROLE_SPA_ACCESS; CREATE_COMMENT; ANY
+ANY; ROLE_SPA_ACCESS; READ_STATEMENT_PROCESS_HISTORY; ANY
+ANY; ROLE_SPA_ACCESS; DELETE_COMMENT; IS_OWN_COMMENT
+ANY; ROLE_SPA_ACCESS; READ_DASHBOARD_STATEMENTS; ANY
+
+addBasicInfoData; ROLE_SPA_OFFICIAL_IN_CHARGE; READ_WORKFLOW_TASK; ANY
+addBasicInfoData; ROLE_SPA_OFFICIAL_IN_CHARGE; CLAIM_TASK; ANY
+addBasicInfoData; ROLE_SPA_OFFICIAL_IN_CHARGE; MANIPULATE_ATTACHMENTS; IS_CLAIMED_BY_USER
+addBasicInfoData; ROLE_SPA_OFFICIAL_IN_CHARGE; MANIPULATE_STATEMENT; IS_CLAIMED_BY_USER
+
+
+addWorkflowData; ROLE_SPA_OFFICIAL_IN_CHARGE; READ_WORKFLOW_TASK; ANY
+addWorkflowData; ROLE_SPA_OFFICIAL_IN_CHARGE; CLAIM_TASK; ANY
+addWorkflowData; ROLE_SPA_OFFICIAL_IN_CHARGE; SET_PARENT_STATEMENTS; ANY
+addWorkflowData; ROLE_SPA_OFFICIAL_IN_CHARGE; SET_REQ_DEPARTMENTS; ANY
+addWorkflowData; ROLE_SPA_OFFICIAL_IN_CHARGE; SET_WORKFLOW_DATA; ANY
+
+
+createDraft; ROLE_SPA_OFFICIAL_IN_CHARGE; READ_WORKFLOW_TASK; ANY
+createDraft; ROLE_SPA_OFFICIAL_IN_CHARGE; CLAIM_TASK; ANY
+createDraft; ROLE_SPA_OFFICIAL_IN_CHARGE; SET_TEXTARRANGEMENT; IS_CLAIMED_BY_USER
+createDraft; ROLE_SPA_OFFICIAL_IN_CHARGE; MANIPULATE_ATTACHMENTS; IS_CLAIMED_BY_USER
+createDraft; ROLE_SPA_OFFICIAL_IN_CHARGE; SET_DEPARTMENT_CONTRIBUTIONS; ANY
+
+
+enrichDraft; ROLE_SPA_DIVISION_MEMBER; READ_WORKFLOW_TASK; ANY
+enrichDraft; ROLE_SPA_DIVISION_MEMBER; CLAIM_TASK; IS_REQ_DIVISION_MEMBER
+enrichDraft; ROLE_SPA_DIVISION_MEMBER; SET_TEXTARRANGEMENT; IS_REQ_DIVISION_MEMBER
+enrichDraft; ROLE_SPA_DIVISION_MEMBER; MANIPULATE_ATTACHMENTS; IS_REQ_DIVISION_MEMBER
+enrichDraft; ROLE_SPA_DIVISION_MEMBER; MANIPULATE_ATTACHMENTS; IS_CLAIMED_BY_USER
+enrichDraft; ROLE_SPA_DIVISION_MEMBER; SET_USER_CONTRIBUTED; ANY
+
+enrichDraft; ROLE_SPA_OFFICIAL_IN_CHARGE; READ_WORKFLOW_TASK; ANY
+enrichDraft; ROLE_SPA_OFFICIAL_IN_CHARGE; CLAIM_TASK; ANY
+enrichDraft; ROLE_SPA_OFFICIAL_IN_CHARGE; SET_TEXTARRANGEMENT; IS_CLAIMED_BY_USER
+enrichDraft; ROLE_SPA_OFFICIAL_IN_CHARGE; MANIPULATE_ATTACHMENTS; ANY
+enrichDraft; ROLE_SPA_OFFICIAL_IN_CHARGE; MANIPULATE_ATTACHMENTS; IS_CLAIMED_BY_USER
+enrichDraft; ROLE_SPA_OFFICIAL_IN_CHARGE; SET_USER_CONTRIBUTED; ANY
+
+
+checkAndFormulateResponse; ROLE_SPA_OFFICIAL_IN_CHARGE; READ_WORKFLOW_TASK; ANY
+checkAndFormulateResponse; ROLE_SPA_OFFICIAL_IN_CHARGE; CLAIM_TASK; ANY
+checkAndFormulateResponse; ROLE_SPA_OFFICIAL_IN_CHARGE; SET_TEXTARRANGEMENT; IS_CLAIMED_BY_USER
+checkAndFormulateResponse; ROLE_SPA_OFFICIAL_IN_CHARGE; MANIPULATE_ATTACHMENTS; IS_CLAIMED_BY_USER
+checkAndFormulateResponse; ROLE_SPA_OFFICIAL_IN_CHARGE; REPLACE_STATEMENT_RESPONSE; IS_CLAIMED_BY_USER
+checkAndFormulateResponse; ROLE_SPA_OFFICIAL_IN_CHARGE; SET_DEPARTMENT_CONTRIBUTIONS; ANY
+
+createNegativeResponse; ROLE_SPA_OFFICIAL_IN_CHARGE; READ_WORKFLOW_TASK; ANY
+createNegativeResponse; ROLE_SPA_OFFICIAL_IN_CHARGE; CLAIM_TASK; ANY
+createNegativeResponse; ROLE_SPA_OFFICIAL_IN_CHARGE; SET_TEXTARRANGEMENT; IS_CLAIMED_BY_USER
+createNegativeResponse; ROLE_SPA_OFFICIAL_IN_CHARGE; MANIPULATE_ATTACHMENTS; IS_CLAIMED_BY_USER
+createNegativeResponse; ROLE_SPA_OFFICIAL_IN_CHARGE; REPLACE_STATEMENT_RESPONSE; IS_CLAIMED_BY_USER
+
+
+approveStatement; ROLE_SPA_APPROVER; CLAIM_TASK; ANY
+approveStatement; ROLE_SPA_APPROVER; READ_WORKFLOW_TASK; ANY
+
+sendStatement; ROLE_SPA_OFFICIAL_IN_CHARGE; READ_WORKFLOW_TASK; ANY
+sendStatement; ROLE_SPA_OFFICIAL_IN_CHARGE; CLAIM_TASK; ANY
+sendStatement; ROLE_SPA_OFFICIAL_IN_CHARGE; DISPATCH_STATEMENT_RESPONSE; IS_CLAIMED_BY_USER
+----
+
+=== Configuration of the Statement Public Affairs module front-end
+The front-end application requires a configured web server and a configuration file with certain
+properties for its general settings as described below.
+
+==== Web server
+The front-end web server requires a fall back configuration for all deep links to the application that returns
+its main index.html file.
+
+Configuration files for an Apache Tomcat server are already deployed to the `assets/WEB-INF` and `assets/META-INF`
+folders as build artefacts, but other server types may require a different configuration
+(see https://angular.io/guide/deployment#server-configuration[Angular docs] for more information).
+
+==== General settings
+The whole front-end application can be configured by certain properties in the `app.config.json` file in the source
+directory prior to building. Thus, all changes to this configuration file only take effect after (re-)building the
+front-end application.
+
+===== Routes
+* `routes.spaBackend`: Route on which the website's back-end is served
+* `routes.portal`: Route on which the main portal is served
+* `routes.contactDataBase`: Route on which the Contact Data Base front-end is served
+* `routes.userDocu`: Route on which the user documentation is served
+
+===== Leaflet
+* `leaflet.urlTemplate`: URL template to the map tile server required by https://leafletjs.com[Leaflet]
+* `leaflet.attribution`: Attribution which is added to all Leaflet map views
+* `leaflet.lat`/`leaflet.lng`/`leaflet.zoom`: Default coordinates and zoom level to which all leaflet maps are
+ initially configured
+
+===== Nominatim
+* `nominatim.url`: URL to a https://nominatim.org[Nominatim] geocoding service
+* `nominatim.searchQueryPrefix`: Prefix which is added automatically to every https://nominatim.org[Nominatim]
+ search query
+
+===== Geographic Information System (GIS)
+* `gis.urlTemplate`: URL template to a geographic information system (GIS)
+* `gis.projectionFrom`: Coordinate projection used by the configured tile server
+* `gis.projectionTo`: Coordinate projection used in the configured GIS
+
+The following key words are replaced in the given GIS URL template for each map view:
+
+* `{centerX}`, `{centerY}`: Center coordinates
+* `{northEastX}`, `{northEastY}`: North east boundary coordinates
+* `{northWestX}`, `{northWestY}`: North west boundary coordinates
+* `{southEastX}`, `{southEastY}`: South east boundary coordinates
+* `{southWestX}`, `{southWestY}`: South west boundary coordinates
+* `{user}`: User name
+
+All coordinates are transformed via a HTTP call to the back end before opening the GIS.
+Please visit https://trac.osgeo.org/proj4j/[Proj4j] for all available projections.
+
+===== Example configuration
+[source, json]
+----
+{
+ "gis": {
+ "urlTemplate": "http://localhost/gis?pCX={centerX}&pCY={centerY}&pOSUser={user}",
+ "projectionFrom": "EPSG:4326",
+ "projectionTo": "EPSG:25832"
+ },
+ "leaflet": {
+ "urlTemplate": "https://{s}.openk-tile-server.org/{z}/{x}/{y}.png",
+ "attribution": "© <a href=\"https://www.openk-tile-server.org\">TileServer</a> contributors",
+ "lat": 49.87282103349044,
+ "lng": 8.651196956634523,
+ "zoom": 12
+ },
+ "nominatim": {
+ "url": "https://nominatim.openk.org",
+ "searchQueryPrefix": "Germany"
+ },
+ "routes": {
+ "spaBackend": "/statementpaBE",
+ "portal": "/portalFE",
+ "contactDataBase": "/contactdatabase",
+ "userDocu": "./assets/docu/userDocumentation.pdf"
+ }
+}
+----
diff --git a/src/main/asciidoc/images/SPA-ContainerDiagram.png b/src/main/asciidoc/images/SPA-ContainerDiagram.png
new file mode 100644
index 0000000..825f1f3
--- /dev/null
+++ b/src/main/asciidoc/images/SPA-ContainerDiagram.png
Binary files differ
diff --git a/src/main/asciidoc/images/Statement-workflow-portrait.svg b/src/main/asciidoc/images/Statement-workflow-portrait.svg
new file mode 100644
index 0000000..57d978b
--- /dev/null
+++ b/src/main/asciidoc/images/Statement-workflow-portrait.svg
@@ -0,0 +1,2585 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ inkscape:version="1.0 (4035a4f, 2020-05-01)"
+ sodipodi:docname="Statement-workflow-portrait.svg"
+ id="svg2769"
+ version="1.1"
+ viewBox="154 74 793.70079 1122.5197"
+ height="297mm"
+ width="210mm">
+ <metadata
+ id="metadata2773">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ units="mm"
+ showguides="false"
+ fit-margin-bottom="0"
+ fit-margin-right="0"
+ fit-margin-left="0"
+ fit-margin-top="0"
+ inkscape:current-layer="svg2769"
+ inkscape:window-maximized="0"
+ inkscape:window-y="23"
+ inkscape:window-x="0"
+ inkscape:cy="1059"
+ inkscape:cx="357.5"
+ inkscape:zoom="0.31583924"
+ showgrid="false"
+ id="namedview2771"
+ inkscape:window-height="1665"
+ inkscape:window-width="2919"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ guidetolerance="10"
+ gridtolerance="10"
+ objecttolerance="10"
+ borderopacity="1"
+ bordercolor="#666666"
+ pagecolor="#ffffff" />
+ <defs
+ id="defs1833">
+ <marker
+ orient="auto"
+ markerHeight="10"
+ markerWidth="10"
+ refY="10"
+ refX="11"
+ viewBox="0 0 20 20"
+ id="sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv">
+ <path
+ id="path1830"
+ style="fill:#000000;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-dasharray:10000, 1"
+ d="M 1,5 11,10 1,15 Z" />
+ </marker>
+ </defs>
+ <g
+ transform="matrix(0,-0.52911104,0.52911104,0,344.75607,1275.3466)"
+ id="g2767"
+ class="djs-group">
+ <g
+ id="g1851"
+ transform="translate(160,80)"
+ style="display:block"
+ data-element-id="Participant_0pmtbog"
+ class="djs-element djs-shape">
+ <g
+ id="g1843"
+ class="djs-visual">
+ <rect
+ id="rect1835"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ ry="0"
+ rx="0"
+ height="700"
+ width="2103"
+ y="0"
+ x="0" />
+ <polyline
+ id="polyline1837"
+ style="fill:none;stroke:#000000;stroke-width:2px"
+ points="30,0 30,700 " />
+ <text
+ id="text1841"
+ transform="rotate(-90,350,350)"
+ style="font-weight:normal;font-size:12px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan1839"
+ y="18.6"
+ x="309.96875">Stellungnahme</tspan></text>
+ </g>
+ <rect
+ id="rect1845"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="700"
+ width="2103"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-click-stroke" />
+ <rect
+ id="rect1847"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="700"
+ width="30"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect1849"
+ style="fill:none"
+ class="djs-outline"
+ height="712"
+ width="2115"
+ y="-6"
+ x="-6" />
+ </g>
+ <g
+ id="g2765"
+ class="djs-children">
+ <g
+ id="g1869"
+ class="djs-group">
+ <g
+ id="g1867"
+ transform="translate(190,600)"
+ style="display:block"
+ data-element-id="Lane_0spmnb6"
+ class="djs-element djs-shape">
+ <g
+ id="g1859"
+ class="djs-visual">
+ <rect
+ id="rect1853"
+ style="fill:#ffffff;fill-opacity:0.35;stroke:#000000;stroke-width:2px"
+ ry="0"
+ rx="0"
+ height="180"
+ width="2073"
+ y="0"
+ x="0" />
+ <text
+ id="text1857"
+ transform="rotate(-90,90,90)"
+ style="font-weight:normal;font-size:12px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan1855"
+ y="18.6"
+ x="56.898438">Genehmiger</tspan></text>
+ </g>
+ <rect
+ id="rect1861"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="180"
+ width="2073"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-click-stroke" />
+ <rect
+ id="rect1863"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="180"
+ width="30"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect1865"
+ style="fill:none"
+ class="djs-outline"
+ height="192"
+ width="2085"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g1887"
+ class="djs-group">
+ <g
+ id="g1885"
+ transform="translate(190,260)"
+ style="display:block"
+ data-element-id="Lane_0gjug73"
+ class="djs-element djs-shape">
+ <g
+ id="g1877"
+ class="djs-visual">
+ <rect
+ id="rect1871"
+ style="fill:#ffffff;fill-opacity:0.35;stroke:#000000;stroke-width:2px"
+ ry="0"
+ rx="0"
+ height="340"
+ width="2073"
+ y="0"
+ x="0" />
+ <text
+ id="text1875"
+ transform="rotate(-90,170,170)"
+ style="font-weight:normal;font-size:12px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan1873"
+ y="18.6"
+ x="129.21875">Sachbearbeiter</tspan></text>
+ </g>
+ <rect
+ id="rect1879"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="340"
+ width="2073"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-click-stroke" />
+ <rect
+ id="rect1881"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="340"
+ width="30"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect1883"
+ style="fill:none"
+ class="djs-outline"
+ height="352"
+ width="2085"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g1905"
+ class="djs-group">
+ <g
+ id="g1903"
+ transform="translate(190,80)"
+ style="display:block"
+ data-element-id="Lane_078yf14"
+ class="djs-element djs-shape">
+ <g
+ id="g1895"
+ class="djs-visual">
+ <rect
+ id="rect1889"
+ style="fill:#ffffff;fill-opacity:0.35;stroke:#000000;stroke-width:2px"
+ ry="0"
+ rx="0"
+ height="180"
+ width="2073"
+ y="0"
+ x="0" />
+ <text
+ id="text1893"
+ transform="rotate(-90,90,90)"
+ style="font-weight:normal;font-size:12px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan1891"
+ y="18.6"
+ x="60.984375">FB und SB</tspan></text>
+ </g>
+ <rect
+ id="rect1897"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="180"
+ width="2073"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-click-stroke" />
+ <rect
+ id="rect1899"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="180"
+ width="30"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect1901"
+ style="fill:none"
+ class="djs-outline"
+ height="192"
+ width="2085"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g1917"
+ class="djs-group">
+ <g
+ id="g1915"
+ style="display:block"
+ data-element-id="Flow_1myajze"
+ class="djs-element djs-connection">
+ <g
+ id="g1909"
+ class="djs-visual">
+ <path
+ id="path1907"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 2164,500 h 38" />
+ </g>
+ <polyline
+ id="polyline1911"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="2164,500 2202,500 " />
+ <rect
+ id="rect1913"
+ style="fill:none"
+ class="djs-outline"
+ height="12"
+ width="50"
+ y="494"
+ x="2158" />
+ </g>
+ </g>
+ <g
+ id="g1929"
+ class="djs-group">
+ <g
+ id="g1927"
+ style="display:block"
+ data-element-id="Flow_0gg09id"
+ class="djs-element djs-connection">
+ <g
+ id="g1921"
+ class="djs-visual">
+ <path
+ id="path1919"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 1988,500 h 126" />
+ </g>
+ <polyline
+ id="polyline1923"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="1988,500 2114,500 " />
+ <rect
+ id="rect1925"
+ style="fill:none"
+ class="djs-outline"
+ height="12"
+ width="138"
+ y="494"
+ x="1982" />
+ </g>
+ </g>
+ <g
+ id="g1941"
+ class="djs-group">
+ <g
+ id="g1939"
+ style="display:block"
+ data-element-id="Flow_0twsltu"
+ class="djs-element djs-connection">
+ <g
+ id="g1933"
+ class="djs-visual">
+ <path
+ id="path1931"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="M 1963,475 V 360 h 37" />
+ </g>
+ <polyline
+ id="polyline1935"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="1963,475 1963,360 2000,360 " />
+ <rect
+ id="rect1937"
+ style="fill:none"
+ class="djs-outline"
+ height="127"
+ width="49"
+ y="354"
+ x="1957" />
+ </g>
+ </g>
+ <g
+ id="g1953"
+ class="djs-group">
+ <g
+ id="g1951"
+ style="display:block"
+ data-element-id="Flow_19wy667"
+ class="djs-element djs-connection">
+ <g
+ id="g1945"
+ class="djs-visual">
+ <path
+ id="path1943"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 740,530 h 948" />
+ </g>
+ <polyline
+ id="polyline1947"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="740,530 1688,530 " />
+ <rect
+ id="rect1949"
+ style="fill:none"
+ class="djs-outline"
+ height="12"
+ width="960"
+ y="524"
+ x="734" />
+ </g>
+ </g>
+ <g
+ id="g1965"
+ class="djs-group">
+ <g
+ id="g1963"
+ style="display:block"
+ data-element-id="Flow_0ehvm4u"
+ class="djs-element djs-connection">
+ <g
+ id="g1957"
+ class="djs-visual">
+ <path
+ id="path1955"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 1713,555 v 115 h 80" />
+ </g>
+ <polyline
+ id="polyline1959"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="1713,555 1713,670 1793,670 " />
+ <rect
+ id="rect1961"
+ style="fill:none"
+ class="djs-outline"
+ height="127"
+ width="92"
+ y="549"
+ x="1707" />
+ </g>
+ </g>
+ <g
+ id="g1977"
+ class="djs-group">
+ <g
+ id="g1975"
+ style="display:block"
+ data-element-id="Flow_0x0a063"
+ class="djs-element djs-connection">
+ <g
+ id="g1969"
+ class="djs-visual">
+ <path
+ id="path1967"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 1738,530 h 32 V 290 H 443 v 90" />
+ </g>
+ <polyline
+ id="polyline1971"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="1738,530 1770,530 1770,290 443,290 443,380 " />
+ <rect
+ id="rect1973"
+ style="fill:none"
+ class="djs-outline"
+ height="252"
+ width="1339"
+ y="284"
+ x="437" />
+ </g>
+ </g>
+ <g
+ id="g1989"
+ class="djs-group">
+ <g
+ id="g1987"
+ style="display:block"
+ data-element-id="Flow_0cot0xy"
+ class="djs-element djs-connection">
+ <g
+ id="g1981"
+ class="djs-visual">
+ <path
+ id="path1979"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 1575,405 h 138 v 100" />
+ </g>
+ <polyline
+ id="polyline1983"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="1575,405 1713,405 1713,505 " />
+ <rect
+ id="rect1985"
+ style="fill:none"
+ class="djs-outline"
+ height="112"
+ width="150"
+ y="399"
+ x="1569" />
+ </g>
+ </g>
+ <g
+ id="g2001"
+ class="djs-group">
+ <g
+ id="g1999"
+ style="display:block"
+ data-element-id="Flow_017kj0u"
+ class="djs-element djs-connection">
+ <g
+ id="g1993"
+ class="djs-visual">
+ <path
+ id="path1991"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 690,430 v 60" />
+ </g>
+ <polyline
+ id="polyline1995"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="690,430 690,490 " />
+ <rect
+ id="rect1997"
+ style="fill:none"
+ class="djs-outline"
+ height="72"
+ width="12"
+ y="424"
+ x="684" />
+ </g>
+ </g>
+ <g
+ id="g2013"
+ class="djs-group">
+ <g
+ id="g2011"
+ style="display:block"
+ data-element-id="Flow_0nwawsv"
+ class="djs-element djs-connection">
+ <g
+ id="g2005"
+ class="djs-visual">
+ <path
+ id="path2003"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="M 715,405 H 853" />
+ </g>
+ <polyline
+ id="polyline2007"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="715,405 853,405 " />
+ <rect
+ id="rect2009"
+ style="fill:none"
+ class="djs-outline"
+ height="12"
+ width="150"
+ y="399"
+ x="709" />
+ </g>
+ </g>
+ <g
+ id="g2025"
+ class="djs-group">
+ <g
+ id="g2023"
+ style="display:block"
+ data-element-id="Flow_1uni785"
+ class="djs-element djs-connection">
+ <g
+ id="g2017"
+ class="djs-visual">
+ <path
+ id="path2015"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 328,405 h 90" />
+ </g>
+ <polyline
+ id="polyline2019"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="328,405 418,405 " />
+ <rect
+ id="rect2021"
+ style="fill:none"
+ class="djs-outline"
+ height="12"
+ width="102"
+ y="399"
+ x="322" />
+ </g>
+ </g>
+ <g
+ id="g2037"
+ class="djs-group">
+ <g
+ id="g2035"
+ style="display:block"
+ data-element-id="Flow_167ttld"
+ class="djs-element djs-connection">
+ <g
+ id="g2029"
+ class="djs-visual">
+ <path
+ id="path2027"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 600,405 h 65" />
+ </g>
+ <polyline
+ id="polyline2031"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="600,405 665,405 " />
+ <rect
+ id="rect2033"
+ style="fill:none"
+ class="djs-outline"
+ height="12"
+ width="77"
+ y="399"
+ x="594" />
+ </g>
+ </g>
+ <g
+ id="g2049"
+ class="djs-group">
+ <g
+ id="g2047"
+ style="display:block"
+ data-element-id="Flow_1hqe1j8"
+ class="djs-element djs-connection">
+ <g
+ id="g2041"
+ class="djs-visual">
+ <path
+ id="path2039"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 953,405 h 97" />
+ </g>
+ <polyline
+ id="polyline2043"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="953,405 1050,405 " />
+ <rect
+ id="rect2045"
+ style="fill:none"
+ class="djs-outline"
+ height="12"
+ width="109"
+ y="399"
+ x="947" />
+ </g>
+ </g>
+ <g
+ id="g2061"
+ class="djs-group">
+ <g
+ id="g2059"
+ style="display:block"
+ data-element-id="Flow_0rrgglo"
+ class="djs-element djs-connection">
+ <g
+ id="g2053"
+ class="djs-visual">
+ <path
+ id="path2051"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 1150,405 h 115" />
+ </g>
+ <polyline
+ id="polyline2055"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="1150,405 1265,405 " />
+ <rect
+ id="rect2057"
+ style="fill:none"
+ class="djs-outline"
+ height="12"
+ width="127"
+ y="399"
+ x="1144" />
+ </g>
+ </g>
+ <g
+ id="g2073"
+ class="djs-group">
+ <g
+ id="g2071"
+ style="display:block"
+ data-element-id="Flow_0r3c12h"
+ class="djs-element djs-connection">
+ <g
+ id="g2065"
+ class="djs-visual">
+ <path
+ id="path2063"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="M 1400,200 V 365" />
+ </g>
+ <polyline
+ id="polyline2067"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="1400,200 1400,365 " />
+ <rect
+ id="rect2069"
+ style="fill:none"
+ class="djs-outline"
+ height="177"
+ width="12"
+ y="194"
+ x="1394" />
+ </g>
+ </g>
+ <g
+ id="g2085"
+ class="djs-group">
+ <g
+ id="g2083"
+ style="display:block"
+ data-element-id="Flow_1tmr5qp"
+ class="djs-element djs-connection">
+ <g
+ id="g2077"
+ class="djs-visual">
+ <path
+ id="path2075"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 1450,405 h 75" />
+ </g>
+ <polyline
+ id="polyline2079"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="1450,405 1525,405 " />
+ <rect
+ id="rect2081"
+ style="fill:none"
+ class="djs-outline"
+ height="12"
+ width="87"
+ y="399"
+ x="1444" />
+ </g>
+ </g>
+ <g
+ id="g2097"
+ class="djs-group">
+ <g
+ id="g2095"
+ style="display:block"
+ data-element-id="Flow_10zb14i"
+ class="djs-element djs-connection">
+ <g
+ id="g2089"
+ class="djs-visual">
+ <path
+ id="path2087"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 1550,430 v 70 h -260 v -70" />
+ </g>
+ <polyline
+ id="polyline2091"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="1550,430 1550,500 1290,500 1290,430 " />
+ <rect
+ id="rect2093"
+ style="fill:none"
+ class="djs-outline"
+ height="82"
+ width="272"
+ y="424"
+ x="1284" />
+ </g>
+ </g>
+ <g
+ id="g2109"
+ class="djs-group">
+ <g
+ id="g2107"
+ style="display:block"
+ data-element-id="Flow_12c0wj3"
+ class="djs-element djs-connection">
+ <g
+ id="g2101"
+ class="djs-visual">
+ <path
+ id="path2099"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 1893,670 h 45" />
+ </g>
+ <polyline
+ id="polyline2103"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="1893,670 1938,670 " />
+ <rect
+ id="rect2105"
+ style="fill:none"
+ class="djs-outline"
+ height="12"
+ width="57"
+ y="664"
+ x="1887" />
+ </g>
+ </g>
+ <g
+ id="g2121"
+ class="djs-group">
+ <g
+ id="g2119"
+ style="display:block"
+ data-element-id="Flow_00qgmxu"
+ class="djs-element djs-connection">
+ <g
+ id="g2113"
+ class="djs-visual">
+ <path
+ id="path2111"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="M 1963,645 V 525" />
+ </g>
+ <polyline
+ id="polyline2115"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="1963,645 1963,525 " />
+ <rect
+ id="rect2117"
+ style="fill:none"
+ class="djs-outline"
+ height="132"
+ width="12"
+ y="519"
+ x="1957" />
+ </g>
+ </g>
+ <g
+ id="g2133"
+ class="djs-group">
+ <g
+ id="g2131"
+ style="display:block"
+ data-element-id="Flow_1k89j3h"
+ class="djs-element djs-connection">
+ <g
+ id="g2125"
+ class="djs-visual">
+ <path
+ id="path2123"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 1963,695 v 45 H 443 V 430" />
+ </g>
+ <polyline
+ id="polyline2127"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="1963,695 1963,740 443,740 443,430 " />
+ <rect
+ id="rect2129"
+ style="fill:none"
+ class="djs-outline"
+ height="322"
+ width="1532"
+ y="424"
+ x="437" />
+ </g>
+ </g>
+ <g
+ id="g2145"
+ class="djs-group">
+ <g
+ id="g2143"
+ style="display:block"
+ data-element-id="Flow_0279yx1"
+ class="djs-element djs-connection">
+ <g
+ id="g2137"
+ class="djs-visual">
+ <path
+ id="path2135"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 2100,360 h 39 v 115" />
+ </g>
+ <polyline
+ id="polyline2139"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="2100,360 2139,360 2139,475 " />
+ <rect
+ id="rect2141"
+ style="fill:none"
+ class="djs-outline"
+ height="127"
+ width="51"
+ y="354"
+ x="2094" />
+ </g>
+ </g>
+ <g
+ id="g2157"
+ class="djs-group">
+ <g
+ id="g2155"
+ style="display:block"
+ data-element-id="Flow_0oigd8l"
+ class="djs-element djs-connection">
+ <g
+ id="g2149"
+ class="djs-visual">
+ <path
+ id="path2147"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="m 468,405 h 32" />
+ </g>
+ <polyline
+ id="polyline2151"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="468,405 500,405 " />
+ <rect
+ id="rect2153"
+ style="fill:none"
+ class="djs-outline"
+ height="12"
+ width="44"
+ y="399"
+ x="462" />
+ </g>
+ </g>
+ <g
+ id="g2169"
+ class="djs-group">
+ <g
+ id="g2167"
+ style="display:block"
+ data-element-id="Flow_0nt1wtg"
+ class="djs-element djs-connection">
+ <g
+ id="g2161"
+ class="djs-visual">
+ <path
+ id="path2159"
+ style="fill:none;stroke:#000000;stroke-width:2px;stroke-linejoin:round;marker-end:url(#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv)"
+ d="M 1290,380 V 160 h 60" />
+ </g>
+ <polyline
+ id="polyline2163"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ class="djs-hit djs-hit-stroke"
+ points="1290,380 1290,160 1350,160 " />
+ <rect
+ id="rect2165"
+ style="fill:none"
+ class="djs-outline"
+ height="232"
+ width="72"
+ y="154"
+ x="1284" />
+ </g>
+ </g>
+ <g
+ id="g2183"
+ class="djs-group">
+ <g
+ id="g2181"
+ transform="translate(665,380)"
+ style="display:block"
+ data-element-id="Gateway_1qr83rr"
+ class="djs-element djs-shape">
+ <g
+ id="g2175"
+ class="djs-visual">
+ <polygon
+ id="polygon2171"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ points="25,0 50,25 25,50 0,25 " />
+ <path
+ id="path2173"
+ style="fill:#000000;stroke:#000000;stroke-width:1px"
+ d="M 16,15 23.428571,24.714286 16,34.428571 h 3.428571 l 5.714286,-7.464228 5.714286,7.464228 h 3.428571 L 26.857143,24.714286 34.285714,15 H 30.857143 L 25.142857,22.464229 19.428571,15 Z" />
+ </g>
+ <rect
+ id="rect2177"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="50"
+ width="50"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2179"
+ style="fill:none"
+ class="djs-outline"
+ height="62"
+ width="62"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2197"
+ class="djs-group">
+ <g
+ id="g2195"
+ transform="translate(663,350)"
+ style="display:block"
+ data-element-id="Gateway_1qr83rr_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2189"
+ class="djs-visual">
+ <text
+ id="text2187"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2185"
+ y="9.8999996"
+ x="0">Zuständig?</tspan></text>
+ </g>
+ <rect
+ id="rect2191"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="14"
+ width="55"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2193"
+ style="fill:none"
+ class="djs-outline"
+ height="26"
+ width="67"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2225"
+ class="djs-group">
+ <g
+ id="g2223"
+ transform="translate(500,365)"
+ style="display:block"
+ data-element-id="addBasicInfoData"
+ class="djs-element djs-shape">
+ <g
+ id="g2217"
+ class="djs-visual">
+ <rect
+ id="rect2199"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ ry="10"
+ rx="10"
+ height="80"
+ width="100"
+ y="0"
+ x="0" />
+ <text
+ id="text2209"
+ style="font-weight:normal;font-size:12px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2201"
+ y="22"
+ x="24.3125">Ergänzen</tspan><tspan
+ id="tspan2203"
+ y="36.400002"
+ x="13.96875">Infodatensatz</tspan><tspan
+ id="tspan2205"
+ y="50.799999"
+ x="5.296875">und Entscheiden</tspan><tspan
+ id="tspan2207"
+ y="65.199997"
+ x="14.3125">Zuständigkeit</tspan></text>
+ <path
+ id="path2211"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.622 -4.357,-4.622 -2.552,0 -4.288,2.068 -4.288,4.622 0,1.348 0.974,2.562 1.896,3.405 -0.529,0.187 -5.669,2.097 -5.794,4.756 v 6.718 h 17 V 16.776 C 21.051,14.478 15.523,12.181 15,12 Z m -8,6 v 5.5 m 11,0 v -5" />
+ <path
+ id="path2213"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 m 2.162,1.009 c 0,2.447001 -2.158,4.431 -4.821,4.431 -2.665,0 -4.822,-1.980999 -4.822,-4.431" />
+ <path
+ id="path2215"
+ style="fill:#000000;stroke:#000000;stroke-width:0.5px"
+ d="M 15,12 M 8.1,8.2 c 0,0 2.251,-2.358 4.274,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 C 16.4,7.418 16.381,4.197 12.307,3.852 8.732,3.853 8.099,7.219 8.1,8.2 Z" />
+ </g>
+ <rect
+ id="rect2219"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="80"
+ width="100"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2221"
+ style="fill:none"
+ class="djs-outline"
+ height="92"
+ width="112"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2239"
+ class="djs-group">
+ <g
+ id="g2237"
+ transform="translate(418,380)"
+ style="display:block"
+ data-element-id="Gateway_0i8uj9a"
+ class="djs-element djs-shape">
+ <g
+ id="g2231"
+ class="djs-visual">
+ <polygon
+ id="polygon2227"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ points="25,0 50,25 25,50 0,25 " />
+ <path
+ id="path2229"
+ style="fill:#000000;stroke:#000000;stroke-width:1px"
+ d="M 16,15 23.428571,24.714286 16,34.428571 h 3.428571 l 5.714286,-7.464228 5.714286,7.464228 h 3.428571 L 26.857143,24.714286 34.285714,15 H 30.857143 L 25.142857,22.464229 19.428571,15 Z" />
+ </g>
+ <rect
+ id="rect2233"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="50"
+ width="50"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2235"
+ style="fill:none"
+ class="djs-outline"
+ height="62"
+ width="62"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2269"
+ class="djs-group">
+ <g
+ id="g2267"
+ transform="translate(853,365)"
+ style="display:block"
+ data-element-id="addWorkflowData"
+ class="djs-element djs-shape">
+ <g
+ id="g2261"
+ class="djs-visual">
+ <rect
+ id="rect2241"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ ry="10"
+ rx="10"
+ height="80"
+ width="100"
+ y="0"
+ x="0" />
+ <text
+ id="text2253"
+ style="font-weight:normal;font-size:12px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2243"
+ y="14.8"
+ x="8.90625">Aufbereiten der</tspan><tspan
+ id="tspan2245"
+ y="29.200001"
+ x="22.304688">Daten und</tspan><tspan
+ id="tspan2247"
+ y="43.599998"
+ x="15.3125">Erstellen des</tspan><tspan
+ id="tspan2249"
+ y="58"
+ x="7.421875">Workflowdatens</tspan><tspan
+ id="tspan2251"
+ y="72.400002"
+ x="41.992188">atz</tspan></text>
+ <path
+ id="path2255"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.622 -4.357,-4.622 -2.552,0 -4.288,2.068 -4.288,4.622 0,1.348 0.974,2.562 1.896,3.405 -0.529,0.187 -5.669,2.097 -5.794,4.756 v 6.718 h 17 V 16.776 C 21.051,14.478 15.523,12.181 15,12 Z m -8,6 v 5.5 m 11,0 v -5" />
+ <path
+ id="path2257"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 m 2.162,1.009 c 0,2.447001 -2.158,4.431 -4.821,4.431 -2.665,0 -4.822,-1.980999 -4.822,-4.431" />
+ <path
+ id="path2259"
+ style="fill:#000000;stroke:#000000;stroke-width:0.5px"
+ d="M 15,12 M 8.1,8.2 c 0,0 2.251,-2.358 4.274,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 C 16.4,7.418 16.381,4.197 12.307,3.852 8.732,3.853 8.099,7.219 8.1,8.2 Z" />
+ </g>
+ <rect
+ id="rect2263"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="80"
+ width="100"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2265"
+ style="fill:none"
+ class="djs-outline"
+ height="92"
+ width="112"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2281"
+ class="djs-group">
+ <g
+ id="g2279"
+ transform="translate(292,387)"
+ style="display:block"
+ data-element-id="s_anlegen_manuell"
+ class="djs-element djs-shape">
+ <g
+ id="g2273"
+ class="djs-visual">
+ <circle
+ id="circle2271"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ r="18"
+ cy="18"
+ cx="18" />
+ </g>
+ <rect
+ id="rect2275"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="36"
+ width="36"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2277"
+ style="fill:none"
+ class="djs-outline"
+ height="48"
+ width="48"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2297"
+ class="djs-group">
+ <g
+ id="g2295"
+ transform="translate(273,430)"
+ style="display:block"
+ data-element-id="s_anlegen_manuell_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2289"
+ class="djs-visual">
+ <text
+ id="text2287"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2283"
+ y="9.8999996"
+ x="23.546875">Neue</tspan><tspan
+ id="tspan2285"
+ y="23.1"
+ x="0">Stellungnahme</tspan></text>
+ </g>
+ <rect
+ id="rect2291"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="27"
+ width="74"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2293"
+ style="fill:none"
+ class="djs-outline"
+ height="39"
+ width="86"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2323"
+ class="djs-group">
+ <g
+ id="g2321"
+ transform="translate(1050,365)"
+ style="display:block"
+ data-element-id="createDraft"
+ class="djs-element djs-shape">
+ <g
+ id="g2315"
+ class="djs-visual">
+ <rect
+ id="rect2299"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ ry="10"
+ rx="10"
+ height="80"
+ width="100"
+ y="0"
+ x="0" />
+ <text
+ id="text2307"
+ style="font-weight:normal;font-size:12px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2301"
+ y="29.200001"
+ x="26.65625">Erstellen</tspan><tspan
+ id="tspan2303"
+ y="43.599998"
+ x="29.445312">Entwurf</tspan><tspan
+ id="tspan2305"
+ y="58"
+ x="9.96875">Stellungnahme</tspan></text>
+ <path
+ id="path2309"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.622 -4.357,-4.622 -2.552,0 -4.288,2.068 -4.288,4.622 0,1.348 0.974,2.562 1.896,3.405 -0.529,0.187 -5.669,2.097 -5.794,4.756 v 6.718 h 17 V 16.776 C 21.051,14.478 15.523,12.181 15,12 Z m -8,6 v 5.5 m 11,0 v -5" />
+ <path
+ id="path2311"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 m 2.162,1.009 c 0,2.447001 -2.158,4.431 -4.821,4.431 -2.665,0 -4.822,-1.980999 -4.822,-4.431" />
+ <path
+ id="path2313"
+ style="fill:#000000;stroke:#000000;stroke-width:0.5px"
+ d="M 15,12 M 8.1,8.2 c 0,0 2.251,-2.358 4.274,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 C 16.4,7.418 16.381,4.197 12.307,3.852 8.732,3.853 8.099,7.219 8.1,8.2 Z" />
+ </g>
+ <rect
+ id="rect2317"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="80"
+ width="100"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2319"
+ style="fill:none"
+ class="djs-outline"
+ height="92"
+ width="112"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2349"
+ class="djs-group">
+ <g
+ id="g2347"
+ transform="translate(1793,630)"
+ style="display:block"
+ data-element-id="approveStatement"
+ class="djs-element djs-shape">
+ <g
+ id="g2341"
+ class="djs-visual">
+ <rect
+ id="rect2325"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ ry="10"
+ rx="10"
+ height="80"
+ width="100"
+ y="0"
+ x="0" />
+ <text
+ id="text2333"
+ style="font-weight:normal;font-size:12px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2327"
+ y="29.200001"
+ x="20.640625">Prüfen und</tspan><tspan
+ id="tspan2329"
+ y="43.599998"
+ x="5.21875">Genehmigen der</tspan><tspan
+ id="tspan2331"
+ y="58"
+ x="29.671875">Antwort</tspan></text>
+ <path
+ id="path2335"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.622 -4.357,-4.622 -2.552,0 -4.288,2.068 -4.288,4.622 0,1.348 0.974,2.562 1.896,3.405 -0.529,0.187 -5.669,2.097 -5.794,4.756 v 6.718 h 17 V 16.776 C 21.051,14.478 15.523,12.181 15,12 Z m -8,6 v 5.5 m 11,0 v -5" />
+ <path
+ id="path2337"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 m 2.162,1.009 c 0,2.447001 -2.158,4.431 -4.821,4.431 -2.665,0 -4.822,-1.980999 -4.822,-4.431" />
+ <path
+ id="path2339"
+ style="fill:#000000;stroke:#000000;stroke-width:0.5px"
+ d="M 15,12 M 8.1,8.2 c 0,0 2.251,-2.358 4.274,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 C 16.4,7.418 16.381,4.197 12.307,3.852 8.732,3.853 8.099,7.219 8.1,8.2 Z" />
+ </g>
+ <rect
+ id="rect2343"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="80"
+ width="100"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2345"
+ style="fill:none"
+ class="djs-outline"
+ height="92"
+ width="112"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2363"
+ class="djs-group">
+ <g
+ id="g2361"
+ transform="translate(1938,645)"
+ style="display:block"
+ data-element-id="Gateway_0t8k8x7"
+ class="djs-element djs-shape">
+ <g
+ id="g2355"
+ class="djs-visual">
+ <polygon
+ id="polygon2351"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ points="25,0 50,25 25,50 0,25 " />
+ <path
+ id="path2353"
+ style="fill:#000000;stroke:#000000;stroke-width:1px"
+ d="M 16,15 23.428571,24.714286 16,34.428571 h 3.428571 l 5.714286,-7.464228 5.714286,7.464228 h 3.428571 L 26.857143,24.714286 34.285714,15 H 30.857143 L 25.142857,22.464229 19.428571,15 Z" />
+ </g>
+ <rect
+ id="rect2357"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="50"
+ width="50"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2359"
+ style="fill:none"
+ class="djs-outline"
+ height="62"
+ width="62"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2377"
+ class="djs-group">
+ <g
+ id="g2375"
+ transform="translate(1998,663)"
+ style="display:block"
+ data-element-id="Gateway_0t8k8x7_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2369"
+ class="djs-visual">
+ <text
+ id="text2367"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2365"
+ y="9.8999996"
+ x="0">Genehmigung?</tspan></text>
+ </g>
+ <rect
+ id="rect2371"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="14"
+ width="76"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2373"
+ style="fill:none"
+ class="djs-outline"
+ height="26"
+ width="88"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2391"
+ class="djs-group">
+ <g
+ id="g2389"
+ transform="translate(1265,380)"
+ style="display:block"
+ data-element-id="Gateway_1vm0oko"
+ class="djs-element djs-shape">
+ <g
+ id="g2383"
+ class="djs-visual">
+ <polygon
+ id="polygon2379"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ points="25,0 50,25 25,50 0,25 " />
+ <path
+ id="path2381"
+ style="fill:#000000;stroke:#000000;stroke-width:1px"
+ d="M 16,15 23.428571,24.714286 16,34.428571 h 3.428571 l 5.714286,-7.464228 5.714286,7.464228 h 3.428571 L 26.857143,24.714286 34.285714,15 H 30.857143 L 25.142857,22.464229 19.428571,15 Z" />
+ </g>
+ <rect
+ id="rect2385"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="50"
+ width="50"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2387"
+ style="fill:none"
+ class="djs-outline"
+ height="62"
+ width="62"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2417"
+ class="djs-group">
+ <g
+ id="g2415"
+ transform="translate(1350,120)"
+ style="display:block"
+ data-element-id="enrichDraft"
+ class="djs-element djs-shape">
+ <g
+ id="g2409"
+ class="djs-visual">
+ <rect
+ id="rect2393"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ ry="10"
+ rx="10"
+ height="80"
+ width="100"
+ y="0"
+ x="0" />
+ <text
+ id="text2401"
+ style="font-weight:normal;font-size:12px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2395"
+ y="29.200001"
+ x="21">Anreichern</tspan><tspan
+ id="tspan2397"
+ y="43.599998"
+ x="25.3125">durch die</tspan><tspan
+ id="tspan2399"
+ y="58"
+ x="13.640625">Fachbereiche</tspan></text>
+ <path
+ id="path2403"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.622 -4.357,-4.622 -2.552,0 -4.288,2.068 -4.288,4.622 0,1.348 0.974,2.562 1.896,3.405 -0.529,0.187 -5.669,2.097 -5.794,4.756 v 6.718 h 17 V 16.776 C 21.051,14.478 15.523,12.181 15,12 Z m -8,6 v 5.5 m 11,0 v -5" />
+ <path
+ id="path2405"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 m 2.162,1.009 c 0,2.447001 -2.158,4.431 -4.821,4.431 -2.665,0 -4.822,-1.980999 -4.822,-4.431" />
+ <path
+ id="path2407"
+ style="fill:#000000;stroke:#000000;stroke-width:0.5px"
+ d="M 15,12 M 8.1,8.2 c 0,0 2.251,-2.358 4.274,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 C 16.4,7.418 16.381,4.197 12.307,3.852 8.732,3.853 8.099,7.219 8.1,8.2 Z" />
+ </g>
+ <rect
+ id="rect2411"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="80"
+ width="100"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2413"
+ style="fill:none"
+ class="djs-outline"
+ height="92"
+ width="112"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2443"
+ class="djs-group">
+ <g
+ id="g2441"
+ transform="translate(1350,365)"
+ style="display:block"
+ data-element-id="checkAndFormulateResponse"
+ class="djs-element djs-shape">
+ <g
+ id="g2435"
+ class="djs-visual">
+ <rect
+ id="rect2419"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ ry="10"
+ rx="10"
+ height="80"
+ width="100"
+ y="0"
+ x="0" />
+ <text
+ id="text2427"
+ style="font-weight:normal;font-size:12px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2421"
+ y="29.200001"
+ x="20.640625">Prüfen und</tspan><tspan
+ id="tspan2423"
+ y="43.599998"
+ x="12.890625">Verfassen der</tspan><tspan
+ id="tspan2425"
+ y="58"
+ x="29.671875">Antwort</tspan></text>
+ <path
+ id="path2429"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.622 -4.357,-4.622 -2.552,0 -4.288,2.068 -4.288,4.622 0,1.348 0.974,2.562 1.896,3.405 -0.529,0.187 -5.669,2.097 -5.794,4.756 v 6.718 h 17 V 16.776 C 21.051,14.478 15.523,12.181 15,12 Z m -8,6 v 5.5 m 11,0 v -5" />
+ <path
+ id="path2431"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 m 2.162,1.009 c 0,2.447001 -2.158,4.431 -4.821,4.431 -2.665,0 -4.822,-1.980999 -4.822,-4.431" />
+ <path
+ id="path2433"
+ style="fill:#000000;stroke:#000000;stroke-width:0.5px"
+ d="M 15,12 M 8.1,8.2 c 0,0 2.251,-2.358 4.274,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 C 16.4,7.418 16.381,4.197 12.307,3.852 8.732,3.853 8.099,7.219 8.1,8.2 Z" />
+ </g>
+ <rect
+ id="rect2437"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="80"
+ width="100"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2439"
+ style="fill:none"
+ class="djs-outline"
+ height="92"
+ width="112"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2457"
+ class="djs-group">
+ <g
+ id="g2455"
+ transform="translate(1525,380)"
+ style="display:block"
+ data-element-id="Gateway_1doisb4"
+ class="djs-element djs-shape">
+ <g
+ id="g2449"
+ class="djs-visual">
+ <polygon
+ id="polygon2445"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ points="25,0 50,25 25,50 0,25 " />
+ <path
+ id="path2447"
+ style="fill:#000000;stroke:#000000;stroke-width:1px"
+ d="M 16,15 23.428571,24.714286 16,34.428571 h 3.428571 l 5.714286,-7.464228 5.714286,7.464228 h 3.428571 L 26.857143,24.714286 34.285714,15 H 30.857143 L 25.142857,22.464229 19.428571,15 Z" />
+ </g>
+ <rect
+ id="rect2451"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="50"
+ width="50"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2453"
+ style="fill:none"
+ class="djs-outline"
+ height="62"
+ width="62"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2473"
+ class="djs-group">
+ <g
+ id="g2471"
+ transform="translate(1505,343)"
+ style="display:block"
+ data-element-id="Gateway_1doisb4_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2465"
+ class="djs-visual">
+ <text
+ id="text2463"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2459"
+ y="9.8999996"
+ x="0">Fachbereichsanwt</tspan><tspan
+ id="tspan2461"
+ y="23.1"
+ x="1.5234375">orten vollständig?</tspan></text>
+ </g>
+ <rect
+ id="rect2467"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="27"
+ width="90"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2469"
+ style="fill:none"
+ class="djs-outline"
+ height="39"
+ width="102"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2487"
+ class="djs-group">
+ <g
+ id="g2485"
+ transform="translate(1938,475)"
+ style="display:block"
+ data-element-id="Gateway_1moejbp"
+ class="djs-element djs-shape">
+ <g
+ id="g2479"
+ class="djs-visual">
+ <polygon
+ id="polygon2475"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ points="25,0 50,25 25,50 0,25 " />
+ <path
+ id="path2477"
+ style="fill:#000000;stroke:#000000;stroke-width:1px"
+ d="M 16,15 23.428571,24.714286 16,34.428571 h 3.428571 l 5.714286,-7.464228 5.714286,7.464228 h 3.428571 L 26.857143,24.714286 34.285714,15 H 30.857143 L 25.142857,22.464229 19.428571,15 Z" />
+ </g>
+ <rect
+ id="rect2481"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="50"
+ width="50"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2483"
+ style="fill:none"
+ class="djs-outline"
+ height="62"
+ width="62"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2503"
+ class="djs-group">
+ <g
+ id="g2501"
+ transform="translate(1869,495)"
+ style="display:block"
+ data-element-id="Gateway_1moejbp_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2495"
+ class="djs-visual">
+ <text
+ id="text2493"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2489"
+ y="9.8999996"
+ x="0">Automatisch</tspan><tspan
+ id="tspan2491"
+ y="23.1"
+ x="4.5546875">gesendet?</tspan></text>
+ </g>
+ <rect
+ id="rect2497"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="27"
+ width="61"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2499"
+ style="fill:none"
+ class="djs-outline"
+ height="39"
+ width="73"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2517"
+ class="djs-group">
+ <g
+ id="g2515"
+ transform="translate(2114,475)"
+ style="display:block"
+ data-element-id="Gateway_162pjk3"
+ class="djs-element djs-shape">
+ <g
+ id="g2509"
+ class="djs-visual">
+ <polygon
+ id="polygon2505"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ points="25,0 50,25 25,50 0,25 " />
+ <path
+ id="path2507"
+ style="fill:#000000;stroke:#000000;stroke-width:1px"
+ d="M 16,15 23.428571,24.714286 16,34.428571 h 3.428571 l 5.714286,-7.464228 5.714286,7.464228 h 3.428571 L 26.857143,24.714286 34.285714,15 H 30.857143 L 25.142857,22.464229 19.428571,15 Z" />
+ </g>
+ <rect
+ id="rect2511"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="50"
+ width="50"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2513"
+ style="fill:none"
+ class="djs-outline"
+ height="62"
+ width="62"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2529"
+ class="djs-group">
+ <g
+ id="g2527"
+ transform="translate(2202,482)"
+ style="display:block"
+ data-element-id="e_erfolgreicher_abschluss"
+ class="djs-element djs-shape">
+ <g
+ id="g2521"
+ class="djs-visual">
+ <circle
+ id="circle2519"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:4px"
+ r="18"
+ cy="18"
+ cx="18" />
+ </g>
+ <rect
+ id="rect2523"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="36"
+ width="36"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2525"
+ style="fill:none"
+ class="djs-outline"
+ height="48"
+ width="48"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2545"
+ class="djs-group">
+ <g
+ id="g2543"
+ transform="translate(2185,525)"
+ style="display:block"
+ data-element-id="e_erfolgreicher_abschluss_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2537"
+ class="djs-visual">
+ <text
+ id="text2535"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2531"
+ y="9.8999996"
+ x="23.84375">Ende</tspan><tspan
+ id="tspan2533"
+ y="23.1"
+ x="0">Stellungnahme</tspan></text>
+ </g>
+ <rect
+ id="rect2539"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="27"
+ width="74"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2541"
+ style="fill:none"
+ class="djs-outline"
+ height="39"
+ width="86"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2569"
+ class="djs-group">
+ <g
+ id="g2567"
+ transform="translate(2000,320)"
+ style="display:block"
+ data-element-id="sendStatement"
+ class="djs-element djs-shape">
+ <g
+ id="g2561"
+ class="djs-visual">
+ <rect
+ id="rect2547"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ ry="10"
+ rx="10"
+ height="80"
+ width="100"
+ y="0"
+ x="0" />
+ <text
+ id="text2553"
+ style="font-weight:normal;font-size:12px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2549"
+ y="36.400002"
+ x="10.882812">Versenden der</tspan><tspan
+ id="tspan2551"
+ y="50.799999"
+ x="29.671875">Antwort</tspan></text>
+ <path
+ id="path2555"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.622 -4.357,-4.622 -2.552,0 -4.288,2.068 -4.288,4.622 0,1.348 0.974,2.562 1.896,3.405 -0.529,0.187 -5.669,2.097 -5.794,4.756 v 6.718 h 17 V 16.776 C 21.051,14.478 15.523,12.181 15,12 Z m -8,6 v 5.5 m 11,0 v -5" />
+ <path
+ id="path2557"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 m 2.162,1.009 c 0,2.447001 -2.158,4.431 -4.821,4.431 -2.665,0 -4.822,-1.980999 -4.822,-4.431" />
+ <path
+ id="path2559"
+ style="fill:#000000;stroke:#000000;stroke-width:0.5px"
+ d="M 15,12 M 8.1,8.2 c 0,0 2.251,-2.358 4.274,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 C 16.4,7.418 16.381,4.197 12.307,3.852 8.732,3.853 8.099,7.219 8.1,8.2 Z" />
+ </g>
+ <rect
+ id="rect2563"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="80"
+ width="100"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2565"
+ style="fill:none"
+ class="djs-outline"
+ height="92"
+ width="112"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2583"
+ class="djs-group">
+ <g
+ id="g2581"
+ transform="translate(1688,505)"
+ style="display:block"
+ data-element-id="Gateway_0lxzryr"
+ class="djs-element djs-shape">
+ <g
+ id="g2575"
+ class="djs-visual">
+ <polygon
+ id="polygon2571"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ points="25,0 50,25 25,50 0,25 " />
+ <path
+ id="path2573"
+ style="fill:#000000;stroke:#000000;stroke-width:1px"
+ d="M 16,15 23.428571,24.714286 16,34.428571 h 3.428571 l 5.714286,-7.464228 5.714286,7.464228 h 3.428571 L 26.857143,24.714286 34.285714,15 H 30.857143 L 25.142857,22.464229 19.428571,15 Z" />
+ </g>
+ <rect
+ id="rect2577"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="50"
+ width="50"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2579"
+ style="fill:none"
+ class="djs-outline"
+ height="62"
+ width="62"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2599"
+ class="djs-group">
+ <g
+ id="g2597"
+ transform="translate(1627,486)"
+ style="display:block"
+ data-element-id="Gateway_0lxzryr_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2591"
+ class="djs-visual">
+ <text
+ id="text2589"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2585"
+ y="9.8999996"
+ x="14.085938">Antwort</tspan><tspan
+ id="tspan2587"
+ y="23.1"
+ x="0">fertiggestellt?</tspan></text>
+ </g>
+ <rect
+ id="rect2593"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="27"
+ width="66"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2595"
+ style="fill:none"
+ class="djs-outline"
+ height="39"
+ width="78"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2623"
+ class="djs-group">
+ <g
+ id="g2621"
+ transform="translate(640,490)"
+ style="display:block"
+ data-element-id="createNegativeResponse"
+ class="djs-element djs-shape">
+ <g
+ id="g2615"
+ class="djs-visual">
+ <rect
+ id="rect2601"
+ style="fill:#ffffff;fill-opacity:0.95;stroke:#000000;stroke-width:2px"
+ ry="10"
+ rx="10"
+ height="80"
+ width="100"
+ y="0"
+ x="0" />
+ <text
+ id="text2607"
+ style="font-weight:normal;font-size:12px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2603"
+ y="36.400002"
+ x="12.890625">Verfassen der</tspan><tspan
+ id="tspan2605"
+ y="50.799999"
+ x="9.9765625">Negativantwort</tspan></text>
+ <path
+ id="path2609"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.622 -4.357,-4.622 -2.552,0 -4.288,2.068 -4.288,4.622 0,1.348 0.974,2.562 1.896,3.405 -0.529,0.187 -5.669,2.097 -5.794,4.756 v 6.718 h 17 V 16.776 C 21.051,14.478 15.523,12.181 15,12 Z m -8,6 v 5.5 m 11,0 v -5" />
+ <path
+ id="path2611"
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.5px"
+ d="m 15,12 m 2.162,1.009 c 0,2.447001 -2.158,4.431 -4.821,4.431 -2.665,0 -4.822,-1.980999 -4.822,-4.431" />
+ <path
+ id="path2613"
+ style="fill:#000000;stroke:#000000;stroke-width:0.5px"
+ d="M 15,12 M 8.1,8.2 c 0,0 2.251,-2.358 4.274,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 C 16.4,7.418 16.381,4.197 12.307,3.852 8.732,3.853 8.099,7.219 8.1,8.2 Z" />
+ </g>
+ <rect
+ id="rect2617"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="80"
+ width="100"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2619"
+ style="fill:none"
+ class="djs-outline"
+ height="92"
+ width="112"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2637"
+ class="djs-group">
+ <g
+ id="g2635"
+ transform="translate(1974,723)"
+ style="display:block"
+ data-element-id="Flow_1k89j3h_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2629"
+ class="djs-visual">
+ <text
+ id="text2627"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2625"
+ y="9.8999996"
+ x="0">nicht genehmigt</tspan></text>
+ </g>
+ <rect
+ id="rect2631"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="14"
+ width="78"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2633"
+ style="fill:none"
+ class="djs-outline"
+ height="26"
+ width="90"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2651"
+ class="djs-group">
+ <g
+ id="g2649"
+ transform="translate(1970,557)"
+ style="display:block"
+ data-element-id="Flow_00qgmxu_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2643"
+ class="djs-visual">
+ <text
+ id="text2641"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2639"
+ y="9.8999996"
+ x="0">genehmigt</tspan></text>
+ </g>
+ <rect
+ id="rect2645"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="14"
+ width="52"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2647"
+ style="fill:none"
+ class="djs-outline"
+ height="26"
+ width="64"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2665"
+ class="djs-group">
+ <g
+ id="g2663"
+ transform="translate(1462,483)"
+ style="display:block"
+ data-element-id="Flow_10zb14i_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2657"
+ class="djs-visual">
+ <text
+ id="text2655"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2653"
+ y="9.8999996"
+ x="0">nicht vollständig</tspan></text>
+ </g>
+ <rect
+ id="rect2659"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="14"
+ width="79"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2661"
+ style="fill:none"
+ class="djs-outline"
+ height="26"
+ width="91"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2679"
+ class="djs-group">
+ <g
+ id="g2677"
+ transform="translate(723,387)"
+ style="display:block"
+ data-element-id="Flow_0nwawsv_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2671"
+ class="djs-visual">
+ <text
+ id="text2669"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2667"
+ y="9.8999996"
+ x="0">zuständig</tspan></text>
+ </g>
+ <rect
+ id="rect2673"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="14"
+ width="48"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2675"
+ style="fill:none"
+ class="djs-outline"
+ height="26"
+ width="60"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2693"
+ class="djs-group">
+ <g
+ id="g2691"
+ transform="translate(706,447)"
+ style="display:block"
+ data-element-id="Flow_017kj0u_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2685"
+ class="djs-visual">
+ <text
+ id="text2683"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2681"
+ y="9.8999996"
+ x="0">nicht zuständig</tspan></text>
+ </g>
+ <rect
+ id="rect2687"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="14"
+ width="74"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2689"
+ style="fill:none"
+ class="djs-outline"
+ height="26"
+ width="86"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2707"
+ class="djs-group">
+ <g
+ id="g2705"
+ transform="translate(1619,387)"
+ style="display:block"
+ data-element-id="Flow_0cot0xy_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2699"
+ class="djs-visual">
+ <text
+ id="text2697"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2695"
+ y="9.8999996"
+ x="0">vollständig</tspan></text>
+ </g>
+ <rect
+ id="rect2701"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="14"
+ width="52"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2703"
+ style="fill:none"
+ class="djs-outline"
+ height="26"
+ width="64"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2721"
+ class="djs-group">
+ <g
+ id="g2719"
+ transform="translate(1682,273)"
+ style="display:block"
+ data-element-id="Flow_0x0a063_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2713"
+ class="djs-visual">
+ <text
+ id="text2711"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2709"
+ y="9.8999996"
+ x="0">nicht fertiggestellt</tspan></text>
+ </g>
+ <rect
+ id="rect2715"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="14"
+ width="86"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2717"
+ style="fill:none"
+ class="djs-outline"
+ height="26"
+ width="98"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2735"
+ class="djs-group">
+ <g
+ id="g2733"
+ transform="translate(1720,573)"
+ style="display:block"
+ data-element-id="Flow_0ehvm4u_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2727"
+ class="djs-visual">
+ <text
+ id="text2725"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2723"
+ y="9.8999996"
+ x="0">fertiggestellt</tspan></text>
+ </g>
+ <rect
+ id="rect2729"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="14"
+ width="60"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2731"
+ style="fill:none"
+ class="djs-outline"
+ height="26"
+ width="72"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2749"
+ class="djs-group">
+ <g
+ id="g2747"
+ transform="translate(1977,423)"
+ style="display:block"
+ data-element-id="Flow_0twsltu_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2741"
+ class="djs-visual">
+ <text
+ id="text2739"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2737"
+ y="9.8999996"
+ x="0">nicht gesendet</tspan></text>
+ </g>
+ <rect
+ id="rect2743"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="14"
+ width="72"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2745"
+ style="fill:none"
+ class="djs-outline"
+ height="26"
+ width="84"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ <g
+ id="g2763"
+ class="djs-group">
+ <g
+ id="g2761"
+ transform="translate(2029,482)"
+ style="display:block"
+ data-element-id="Flow_0gg09id_label"
+ class="djs-element djs-shape">
+ <g
+ id="g2755"
+ class="djs-visual">
+ <text
+ id="text2753"
+ style="font-weight:normal;font-size:11px;font-family:Arial, sans-serif;fill:#000000"
+ class="djs-label"
+ lineHeight="1.2"><tspan
+ id="tspan2751"
+ y="9.8999996"
+ x="0">gesendet</tspan></text>
+ </g>
+ <rect
+ id="rect2757"
+ style="fill:none;stroke:#ffffff;stroke-width:15px;stroke-opacity:0"
+ height="14"
+ width="46"
+ y="0"
+ x="0"
+ class="djs-hit djs-hit-all" />
+ <rect
+ id="rect2759"
+ style="fill:none"
+ class="djs-outline"
+ height="26"
+ width="58"
+ y="-6"
+ x="-6" />
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/src/main/asciidoc/images/Statement-workflow.svg b/src/main/asciidoc/images/Statement-workflow.svg
new file mode 100644
index 0000000..00aa225
--- /dev/null
+++ b/src/main/asciidoc/images/Statement-workflow.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- created with bpmn-js / http://bpmn.io -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2115" height="712" viewBox="154 74 2115 712" version="1.1"><defs><marker id="sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv" viewBox="0 0 20 20" refX="11" refY="10" markerWidth="10" markerHeight="10" orient="auto"><path d="M 1 5 L 11 10 L 1 15 Z" style="fill: black; stroke-width: 1px; stroke-linecap: round; stroke-dasharray: 10000, 1; stroke: black;"/></marker></defs><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Participant_0pmtbog" style="display: block;" transform="matrix(1 0 0 1 160 80)"><g class="djs-visual"><rect x="0" y="0" width="2103" height="700" rx="0" ry="0" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><polyline points="30,0 30,700 " style="fill: none; stroke: black; stroke-width: 2px;"/><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 12px; font-weight: normal; fill: black;" transform="matrix(-1.83697e-16 -1 1 -1.83697e-16 0 700)"><tspan x="309.96875" y="18.6">Stellungnahme</tspan></text></g><rect class="djs-hit djs-hit-click-stroke" x="0" y="0" width="2103" height="700" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect class="djs-hit djs-hit-all" x="0" y="0" width="30" height="700" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="2115" height="712" class="djs-outline" style="fill: none;"/></g><g class="djs-children"><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Lane_0spmnb6" style="display: block;" transform="matrix(1 0 0 1 190 600)"><g class="djs-visual"><rect x="0" y="0" width="2073" height="180" rx="0" ry="0" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.35;"/><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 12px; font-weight: normal; fill: black;" transform="matrix(-1.83697e-16 -1 1 -1.83697e-16 0 180)"><tspan x="56.8984375" y="18.6">Genehmiger</tspan></text></g><rect class="djs-hit djs-hit-click-stroke" x="0" y="0" width="2073" height="180" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect class="djs-hit djs-hit-all" x="0" y="0" width="30" height="180" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="2085" height="192" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Lane_0gjug73" style="display: block;" transform="matrix(1 0 0 1 190 260)"><g class="djs-visual"><rect x="0" y="0" width="2073" height="340" rx="0" ry="0" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.35;"/><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 12px; font-weight: normal; fill: black;" transform="matrix(-1.83697e-16 -1 1 -1.83697e-16 0 340)"><tspan x="129.21875" y="18.6">Sachbearbeiter</tspan></text></g><rect class="djs-hit djs-hit-click-stroke" x="0" y="0" width="2073" height="340" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect class="djs-hit djs-hit-all" x="0" y="0" width="30" height="340" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="2085" height="352" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Lane_078yf14" style="display: block;" transform="matrix(1 0 0 1 190 80)"><g class="djs-visual"><rect x="0" y="0" width="2073" height="180" rx="0" ry="0" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.35;"/><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 12px; font-weight: normal; fill: black;" transform="matrix(-1.83697e-16 -1 1 -1.83697e-16 0 180)"><tspan x="60.984375" y="18.6">FB und SB</tspan></text></g><rect class="djs-hit djs-hit-click-stroke" x="0" y="0" width="2073" height="180" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect class="djs-hit djs-hit-all" x="0" y="0" width="30" height="180" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="2085" height="192" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_1myajze" style="display: block;"><g class="djs-visual"><path d="m 2164,500L2202,500 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="2164,500 2202,500 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="2158" y="494" width="50" height="12" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_0gg09id" style="display: block;"><g class="djs-visual"><path d="m 1988,500L2114,500 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="1988,500 2114,500 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="1982" y="494" width="138" height="12" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_0twsltu" style="display: block;"><g class="djs-visual"><path d="m 1963,475L1963,360 L2000,360 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="1963,475 1963,360 2000,360 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="1957" y="354" width="49" height="127" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_19wy667" style="display: block;"><g class="djs-visual"><path d="m 740,530L1688,530 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="740,530 1688,530 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="734" y="524" width="960" height="12" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_0ehvm4u" style="display: block;"><g class="djs-visual"><path d="m 1713,555L1713,670 L1793,670 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="1713,555 1713,670 1793,670 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="1707" y="549" width="92" height="127" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_0x0a063" style="display: block;"><g class="djs-visual"><path d="m 1738,530L1770,530 L1770,290 L443,290 L443,380 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="1738,530 1770,530 1770,290 443,290 443,380 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="437" y="284" width="1339" height="252" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_0cot0xy" style="display: block;"><g class="djs-visual"><path d="m 1575,405L1713,405 L1713,505 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="1575,405 1713,405 1713,505 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="1569" y="399" width="150" height="112" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_017kj0u" style="display: block;"><g class="djs-visual"><path d="m 690,430L690,490 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="690,430 690,490 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="684" y="424" width="12" height="72" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_0nwawsv" style="display: block;"><g class="djs-visual"><path d="m 715,405L853,405 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="715,405 853,405 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="709" y="399" width="150" height="12" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_1uni785" style="display: block;"><g class="djs-visual"><path d="m 328,405L418,405 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="328,405 418,405 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="322" y="399" width="102" height="12" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_167ttld" style="display: block;"><g class="djs-visual"><path d="m 600,405L665,405 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="600,405 665,405 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="594" y="399" width="77" height="12" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_1hqe1j8" style="display: block;"><g class="djs-visual"><path d="m 953,405L1050,405 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="953,405 1050,405 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="947" y="399" width="109" height="12" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_0rrgglo" style="display: block;"><g class="djs-visual"><path d="m 1150,405L1265,405 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="1150,405 1265,405 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="1144" y="399" width="127" height="12" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_0r3c12h" style="display: block;"><g class="djs-visual"><path d="m 1400,200L1400,365 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="1400,200 1400,365 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="1394" y="194" width="12" height="177" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_1tmr5qp" style="display: block;"><g class="djs-visual"><path d="m 1450,405L1525,405 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="1450,405 1525,405 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="1444" y="399" width="87" height="12" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_10zb14i" style="display: block;"><g class="djs-visual"><path d="m 1550,430L1550,500 L1290,500 L1290,430 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="1550,430 1550,500 1290,500 1290,430 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="1284" y="424" width="272" height="82" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_12c0wj3" style="display: block;"><g class="djs-visual"><path d="m 1893,670L1938,670 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="1893,670 1938,670 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="1887" y="664" width="57" height="12" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_00qgmxu" style="display: block;"><g class="djs-visual"><path d="m 1963,645L1963,525 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="1963,645 1963,525 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="1957" y="519" width="12" height="132" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_1k89j3h" style="display: block;"><g class="djs-visual"><path d="m 1963,695L1963,740 L443,740 L443,430 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="1963,695 1963,740 443,740 443,430 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="437" y="424" width="1532" height="322" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_0279yx1" style="display: block;"><g class="djs-visual"><path d="m 2100,360L2139,360 L2139,475 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="2100,360 2139,360 2139,475 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="2094" y="354" width="51" height="127" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_0oigd8l" style="display: block;"><g class="djs-visual"><path d="m 468,405L500,405 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="468,405 500,405 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="462" y="399" width="44" height="12" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-connection" data-element-id="Flow_0nt1wtg" style="display: block;"><g class="djs-visual"><path d="m 1290,380L1290,160 L1350,160 " style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-5ckcqkvasld7t8guh0b6aw6sv');"/></g><polyline points="1290,380 1290,160 1350,160 " class="djs-hit djs-hit-stroke" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="1284" y="154" width="72" height="232" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Gateway_1qr83rr" style="display: block;" transform="matrix(1 0 0 1 665 380)"><g class="djs-visual"><polygon points="25,0 50,25 25,50 0,25" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><path d="m 16,15 7.42857142857143,9.714285714285715 -7.42857142857143,9.714285714285715 3.428571428571429,0 5.714285714285715,-7.464228571428572 5.714285714285715,7.464228571428572 3.428571428571429,0 -7.42857142857143,-9.714285714285715 7.42857142857143,-9.714285714285715 -3.428571428571429,0 -5.714285714285715,7.464228571428572 -5.714285714285715,-7.464228571428572 -3.428571428571429,0 z" style="fill: black; stroke-width: 1px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="50" height="50" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="62" height="62" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Gateway_1qr83rr_label" style="display: block;" transform="matrix(1 0 0 1 663 350)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="0" y="9.899999999999999">Zuständig?</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="55" height="14" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="67" height="26" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="addBasicInfoData" style="display: block;" transform="matrix(1 0 0 1 500 365)"><g class="djs-visual"><rect x="0" y="0" width="100" height="80" rx="10" ry="10" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 12px; font-weight: normal; fill: black;"><tspan x="24.3125" y="22">Ergänzen </tspan><tspan x="13.96875" y="36.4">Infodatensatz </tspan><tspan x="5.296875" y="50.8">und Entscheiden</tspan><tspan x="14.3125" y="65.19999999999999">Zuständigkeit</tspan></text><path d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.62199999 -4.357,-4.62199999 -2.55199998,0 -4.28799998,2.06799999 -4.28799998,4.62199999 0,1.348 0.974,2.562 1.89599998,3.405 -0.52899998,0.187 -5.669,2.097 -5.794,4.7560005 v 6.718 h 17 v -6.718 c 0,-2.2980005 -5.5279996,-4.5950005 -6.0509996,-4.7760005 zm -8,6 l 0,5.5 m 11,0 l 0,-5" style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m 2.162,1.009 c 0,2.4470005 -2.158,4.4310005 -4.821,4.4310005 -2.66499998,0 -4.822,-1.981 -4.822,-4.4310005 " style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m -6.9,-3.80 c 0,0 2.25099998,-2.358 4.27399998,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 -0.098,-0.57 -0.117,-3.79099999 -4.191,-4.13599999 -3.57499998,0.001 -4.20799998,3.36699999 -4.20699998,4.34799999 z" style="fill: black; stroke-width: 0.5px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="100" height="80" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="112" height="92" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Gateway_0i8uj9a" style="display: block;" transform="matrix(1 0 0 1 418 380)"><g class="djs-visual"><polygon points="25,0 50,25 25,50 0,25" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><path d="m 16,15 7.42857142857143,9.714285714285715 -7.42857142857143,9.714285714285715 3.428571428571429,0 5.714285714285715,-7.464228571428572 5.714285714285715,7.464228571428572 3.428571428571429,0 -7.42857142857143,-9.714285714285715 7.42857142857143,-9.714285714285715 -3.428571428571429,0 -5.714285714285715,7.464228571428572 -5.714285714285715,-7.464228571428572 -3.428571428571429,0 z" style="fill: black; stroke-width: 1px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="50" height="50" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="62" height="62" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="addWorkflowData" style="display: block;" transform="matrix(1 0 0 1 853 365)"><g class="djs-visual"><rect x="0" y="0" width="100" height="80" rx="10" ry="10" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 12px; font-weight: normal; fill: black;"><tspan x="8.90625" y="14.799999999999999">Aufbereiten der </tspan><tspan x="22.3046875" y="29.199999999999996">Daten und </tspan><tspan x="15.3125" y="43.599999999999994">Erstellen des </tspan><tspan x="7.421875" y="57.99999999999999">Workflowdatens</tspan><tspan x="41.9921875" y="72.39999999999999">atz</tspan></text><path d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.62199999 -4.357,-4.62199999 -2.55199998,0 -4.28799998,2.06799999 -4.28799998,4.62199999 0,1.348 0.974,2.562 1.89599998,3.405 -0.52899998,0.187 -5.669,2.097 -5.794,4.7560005 v 6.718 h 17 v -6.718 c 0,-2.2980005 -5.5279996,-4.5950005 -6.0509996,-4.7760005 zm -8,6 l 0,5.5 m 11,0 l 0,-5" style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m 2.162,1.009 c 0,2.4470005 -2.158,4.4310005 -4.821,4.4310005 -2.66499998,0 -4.822,-1.981 -4.822,-4.4310005 " style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m -6.9,-3.80 c 0,0 2.25099998,-2.358 4.27399998,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 -0.098,-0.57 -0.117,-3.79099999 -4.191,-4.13599999 -3.57499998,0.001 -4.20799998,3.36699999 -4.20699998,4.34799999 z" style="fill: black; stroke-width: 0.5px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="100" height="80" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="112" height="92" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="s_anlegen_manuell" style="display: block;" transform="matrix(1 0 0 1 292 387)"><g class="djs-visual"><circle cx="18" cy="18" r="18" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="36" height="36" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="48" height="48" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="s_anlegen_manuell_label" style="display: block;" transform="matrix(1 0 0 1 273 430)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="23.546875" y="9.899999999999999">Neue </tspan><tspan x="0" y="23.099999999999998">Stellungnahme</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="74" height="27" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="86" height="39" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="createDraft" style="display: block;" transform="matrix(1 0 0 1 1050 365)"><g class="djs-visual"><rect x="0" y="0" width="100" height="80" rx="10" ry="10" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 12px; font-weight: normal; fill: black;"><tspan x="26.65625" y="29.200000000000003">Erstellen </tspan><tspan x="29.4453125" y="43.6">Entwurf </tspan><tspan x="9.96875" y="58">Stellungnahme</tspan></text><path d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.62199999 -4.357,-4.62199999 -2.55199998,0 -4.28799998,2.06799999 -4.28799998,4.62199999 0,1.348 0.974,2.562 1.89599998,3.405 -0.52899998,0.187 -5.669,2.097 -5.794,4.7560005 v 6.718 h 17 v -6.718 c 0,-2.2980005 -5.5279996,-4.5950005 -6.0509996,-4.7760005 zm -8,6 l 0,5.5 m 11,0 l 0,-5" style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m 2.162,1.009 c 0,2.4470005 -2.158,4.4310005 -4.821,4.4310005 -2.66499998,0 -4.822,-1.981 -4.822,-4.4310005 " style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m -6.9,-3.80 c 0,0 2.25099998,-2.358 4.27399998,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 -0.098,-0.57 -0.117,-3.79099999 -4.191,-4.13599999 -3.57499998,0.001 -4.20799998,3.36699999 -4.20699998,4.34799999 z" style="fill: black; stroke-width: 0.5px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="100" height="80" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="112" height="92" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="approveStatement" style="display: block;" transform="matrix(1 0 0 1 1793 630)"><g class="djs-visual"><rect x="0" y="0" width="100" height="80" rx="10" ry="10" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 12px; font-weight: normal; fill: black;"><tspan x="20.640625" y="29.200000000000003">Prüfen und </tspan><tspan x="5.21875" y="43.6">Genehmigen der</tspan><tspan x="29.671875" y="58">Antwort</tspan></text><path d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.62199999 -4.357,-4.62199999 -2.55199998,0 -4.28799998,2.06799999 -4.28799998,4.62199999 0,1.348 0.974,2.562 1.89599998,3.405 -0.52899998,0.187 -5.669,2.097 -5.794,4.7560005 v 6.718 h 17 v -6.718 c 0,-2.2980005 -5.5279996,-4.5950005 -6.0509996,-4.7760005 zm -8,6 l 0,5.5 m 11,0 l 0,-5" style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m 2.162,1.009 c 0,2.4470005 -2.158,4.4310005 -4.821,4.4310005 -2.66499998,0 -4.822,-1.981 -4.822,-4.4310005 " style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m -6.9,-3.80 c 0,0 2.25099998,-2.358 4.27399998,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 -0.098,-0.57 -0.117,-3.79099999 -4.191,-4.13599999 -3.57499998,0.001 -4.20799998,3.36699999 -4.20699998,4.34799999 z" style="fill: black; stroke-width: 0.5px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="100" height="80" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="112" height="92" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Gateway_0t8k8x7" style="display: block;" transform="matrix(1 0 0 1 1938 645)"><g class="djs-visual"><polygon points="25,0 50,25 25,50 0,25" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><path d="m 16,15 7.42857142857143,9.714285714285715 -7.42857142857143,9.714285714285715 3.428571428571429,0 5.714285714285715,-7.464228571428572 5.714285714285715,7.464228571428572 3.428571428571429,0 -7.42857142857143,-9.714285714285715 7.42857142857143,-9.714285714285715 -3.428571428571429,0 -5.714285714285715,7.464228571428572 -5.714285714285715,-7.464228571428572 -3.428571428571429,0 z" style="fill: black; stroke-width: 1px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="50" height="50" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="62" height="62" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Gateway_0t8k8x7_label" style="display: block;" transform="matrix(1 0 0 1 1998 663)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="0" y="9.899999999999999">Genehmigung?</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="76" height="14" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="88" height="26" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Gateway_1vm0oko" style="display: block;" transform="matrix(1 0 0 1 1265 380)"><g class="djs-visual"><polygon points="25,0 50,25 25,50 0,25" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><path d="m 16,15 7.42857142857143,9.714285714285715 -7.42857142857143,9.714285714285715 3.428571428571429,0 5.714285714285715,-7.464228571428572 5.714285714285715,7.464228571428572 3.428571428571429,0 -7.42857142857143,-9.714285714285715 7.42857142857143,-9.714285714285715 -3.428571428571429,0 -5.714285714285715,7.464228571428572 -5.714285714285715,-7.464228571428572 -3.428571428571429,0 z" style="fill: black; stroke-width: 1px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="50" height="50" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="62" height="62" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="enrichDraft" style="display: block;" transform="matrix(1 0 0 1 1350 120)"><g class="djs-visual"><rect x="0" y="0" width="100" height="80" rx="10" ry="10" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 12px; font-weight: normal; fill: black;"><tspan x="21" y="29.200000000000003">Anreichern </tspan><tspan x="25.3125" y="43.6">durch die </tspan><tspan x="13.640625" y="58">Fachbereiche</tspan></text><path d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.62199999 -4.357,-4.62199999 -2.55199998,0 -4.28799998,2.06799999 -4.28799998,4.62199999 0,1.348 0.974,2.562 1.89599998,3.405 -0.52899998,0.187 -5.669,2.097 -5.794,4.7560005 v 6.718 h 17 v -6.718 c 0,-2.2980005 -5.5279996,-4.5950005 -6.0509996,-4.7760005 zm -8,6 l 0,5.5 m 11,0 l 0,-5" style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m 2.162,1.009 c 0,2.4470005 -2.158,4.4310005 -4.821,4.4310005 -2.66499998,0 -4.822,-1.981 -4.822,-4.4310005 " style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m -6.9,-3.80 c 0,0 2.25099998,-2.358 4.27399998,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 -0.098,-0.57 -0.117,-3.79099999 -4.191,-4.13599999 -3.57499998,0.001 -4.20799998,3.36699999 -4.20699998,4.34799999 z" style="fill: black; stroke-width: 0.5px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="100" height="80" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="112" height="92" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="checkAndFormulateResponse" style="display: block;" transform="matrix(1 0 0 1 1350 365)"><g class="djs-visual"><rect x="0" y="0" width="100" height="80" rx="10" ry="10" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 12px; font-weight: normal; fill: black;"><tspan x="20.640625" y="29.200000000000003">Prüfen und </tspan><tspan x="12.890625" y="43.6">Verfassen der </tspan><tspan x="29.671875" y="58">Antwort</tspan></text><path d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.62199999 -4.357,-4.62199999 -2.55199998,0 -4.28799998,2.06799999 -4.28799998,4.62199999 0,1.348 0.974,2.562 1.89599998,3.405 -0.52899998,0.187 -5.669,2.097 -5.794,4.7560005 v 6.718 h 17 v -6.718 c 0,-2.2980005 -5.5279996,-4.5950005 -6.0509996,-4.7760005 zm -8,6 l 0,5.5 m 11,0 l 0,-5" style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m 2.162,1.009 c 0,2.4470005 -2.158,4.4310005 -4.821,4.4310005 -2.66499998,0 -4.822,-1.981 -4.822,-4.4310005 " style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m -6.9,-3.80 c 0,0 2.25099998,-2.358 4.27399998,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 -0.098,-0.57 -0.117,-3.79099999 -4.191,-4.13599999 -3.57499998,0.001 -4.20799998,3.36699999 -4.20699998,4.34799999 z" style="fill: black; stroke-width: 0.5px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="100" height="80" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="112" height="92" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Gateway_1doisb4" style="display: block;" transform="matrix(1 0 0 1 1525 380)"><g class="djs-visual"><polygon points="25,0 50,25 25,50 0,25" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><path d="m 16,15 7.42857142857143,9.714285714285715 -7.42857142857143,9.714285714285715 3.428571428571429,0 5.714285714285715,-7.464228571428572 5.714285714285715,7.464228571428572 3.428571428571429,0 -7.42857142857143,-9.714285714285715 7.42857142857143,-9.714285714285715 -3.428571428571429,0 -5.714285714285715,7.464228571428572 -5.714285714285715,-7.464228571428572 -3.428571428571429,0 z" style="fill: black; stroke-width: 1px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="50" height="50" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="62" height="62" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Gateway_1doisb4_label" style="display: block;" transform="matrix(1 0 0 1 1505 343)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="0" y="9.899999999999999">Fachbereichsanwt</tspan><tspan x="1.5234375" y="23.099999999999998">orten vollständig?</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="90" height="27" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="102" height="39" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Gateway_1moejbp" style="display: block;" transform="matrix(1 0 0 1 1938 475)"><g class="djs-visual"><polygon points="25,0 50,25 25,50 0,25" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><path d="m 16,15 7.42857142857143,9.714285714285715 -7.42857142857143,9.714285714285715 3.428571428571429,0 5.714285714285715,-7.464228571428572 5.714285714285715,7.464228571428572 3.428571428571429,0 -7.42857142857143,-9.714285714285715 7.42857142857143,-9.714285714285715 -3.428571428571429,0 -5.714285714285715,7.464228571428572 -5.714285714285715,-7.464228571428572 -3.428571428571429,0 z" style="fill: black; stroke-width: 1px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="50" height="50" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="62" height="62" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Gateway_1moejbp_label" style="display: block;" transform="matrix(1 0 0 1 1869 495)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="0" y="9.899999999999999">Automatisch </tspan><tspan x="4.5546875" y="23.099999999999998">gesendet?</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="61" height="27" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="73" height="39" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Gateway_162pjk3" style="display: block;" transform="matrix(1 0 0 1 2114 475)"><g class="djs-visual"><polygon points="25,0 50,25 25,50 0,25" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><path d="m 16,15 7.42857142857143,9.714285714285715 -7.42857142857143,9.714285714285715 3.428571428571429,0 5.714285714285715,-7.464228571428572 5.714285714285715,7.464228571428572 3.428571428571429,0 -7.42857142857143,-9.714285714285715 7.42857142857143,-9.714285714285715 -3.428571428571429,0 -5.714285714285715,7.464228571428572 -5.714285714285715,-7.464228571428572 -3.428571428571429,0 z" style="fill: black; stroke-width: 1px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="50" height="50" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="62" height="62" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="e_erfolgreicher_abschluss" style="display: block;" transform="matrix(1 0 0 1 2202 482)"><g class="djs-visual"><circle cx="18" cy="18" r="18" style="stroke: black; stroke-width: 4px; fill: white; fill-opacity: 0.95;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="36" height="36" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="48" height="48" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="e_erfolgreicher_abschluss_label" style="display: block;" transform="matrix(1 0 0 1 2185 525)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="23.84375" y="9.899999999999999">Ende </tspan><tspan x="0" y="23.099999999999998">Stellungnahme</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="74" height="27" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="86" height="39" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="sendStatement" style="display: block;" transform="matrix(1 0 0 1 2000 320)"><g class="djs-visual"><rect x="0" y="0" width="100" height="80" rx="10" ry="10" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 12px; font-weight: normal; fill: black;"><tspan x="10.8828125" y="36.4">Versenden der </tspan><tspan x="29.671875" y="50.8">Antwort</tspan></text><path d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.62199999 -4.357,-4.62199999 -2.55199998,0 -4.28799998,2.06799999 -4.28799998,4.62199999 0,1.348 0.974,2.562 1.89599998,3.405 -0.52899998,0.187 -5.669,2.097 -5.794,4.7560005 v 6.718 h 17 v -6.718 c 0,-2.2980005 -5.5279996,-4.5950005 -6.0509996,-4.7760005 zm -8,6 l 0,5.5 m 11,0 l 0,-5" style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m 2.162,1.009 c 0,2.4470005 -2.158,4.4310005 -4.821,4.4310005 -2.66499998,0 -4.822,-1.981 -4.822,-4.4310005 " style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m -6.9,-3.80 c 0,0 2.25099998,-2.358 4.27399998,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 -0.098,-0.57 -0.117,-3.79099999 -4.191,-4.13599999 -3.57499998,0.001 -4.20799998,3.36699999 -4.20699998,4.34799999 z" style="fill: black; stroke-width: 0.5px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="100" height="80" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="112" height="92" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Gateway_0lxzryr" style="display: block;" transform="matrix(1 0 0 1 1688 505)"><g class="djs-visual"><polygon points="25,0 50,25 25,50 0,25" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><path d="m 16,15 7.42857142857143,9.714285714285715 -7.42857142857143,9.714285714285715 3.428571428571429,0 5.714285714285715,-7.464228571428572 5.714285714285715,7.464228571428572 3.428571428571429,0 -7.42857142857143,-9.714285714285715 7.42857142857143,-9.714285714285715 -3.428571428571429,0 -5.714285714285715,7.464228571428572 -5.714285714285715,-7.464228571428572 -3.428571428571429,0 z" style="fill: black; stroke-width: 1px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="50" height="50" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="62" height="62" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Gateway_0lxzryr_label" style="display: block;" transform="matrix(1 0 0 1 1627 486)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="14.0859375" y="9.899999999999999">Antwort </tspan><tspan x="0" y="23.099999999999998">fertiggestellt?</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="66" height="27" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="78" height="39" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="createNegativeResponse" style="display: block;" transform="matrix(1 0 0 1 640 490)"><g class="djs-visual"><rect x="0" y="0" width="100" height="80" rx="10" ry="10" style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 12px; font-weight: normal; fill: black;"><tspan x="12.890625" y="36.4">Verfassen der </tspan><tspan x="9.9765625" y="50.8">Negativantwort</tspan></text><path d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.62199999 -4.357,-4.62199999 -2.55199998,0 -4.28799998,2.06799999 -4.28799998,4.62199999 0,1.348 0.974,2.562 1.89599998,3.405 -0.52899998,0.187 -5.669,2.097 -5.794,4.7560005 v 6.718 h 17 v -6.718 c 0,-2.2980005 -5.5279996,-4.5950005 -6.0509996,-4.7760005 zm -8,6 l 0,5.5 m 11,0 l 0,-5" style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m 2.162,1.009 c 0,2.4470005 -2.158,4.4310005 -4.821,4.4310005 -2.66499998,0 -4.822,-1.981 -4.822,-4.4310005 " style="fill: white; stroke-width: 0.5px; stroke: black;"/><path d="m 15,12 m -6.9,-3.80 c 0,0 2.25099998,-2.358 4.27399998,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 -0.098,-0.57 -0.117,-3.79099999 -4.191,-4.13599999 -3.57499998,0.001 -4.20799998,3.36699999 -4.20699998,4.34799999 z" style="fill: black; stroke-width: 0.5px; stroke: black;"/></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="100" height="80" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="112" height="92" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Flow_1k89j3h_label" style="display: block;" transform="matrix(1 0 0 1 1974 723)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="0" y="9.899999999999999">nicht genehmigt</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="78" height="14" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="90" height="26" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Flow_00qgmxu_label" style="display: block;" transform="matrix(1 0 0 1 1970 557)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="0" y="9.899999999999999">genehmigt</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="52" height="14" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="64" height="26" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Flow_10zb14i_label" style="display: block;" transform="matrix(1 0 0 1 1462 483)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="0" y="9.899999999999999">nicht vollständig</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="79" height="14" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="91" height="26" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Flow_0nwawsv_label" style="display: block;" transform="matrix(1 0 0 1 723 387)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="0" y="9.899999999999999">zuständig</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="48" height="14" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="60" height="26" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Flow_017kj0u_label" style="display: block;" transform="matrix(1 0 0 1 706 447)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="0" y="9.899999999999999">nicht zuständig</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="74" height="14" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="86" height="26" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Flow_0cot0xy_label" style="display: block;" transform="matrix(1 0 0 1 1619 387)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="0" y="9.899999999999999">vollständig</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="52" height="14" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="64" height="26" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Flow_0x0a063_label" style="display: block;" transform="matrix(1 0 0 1 1682 273)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="0" y="9.899999999999999">nicht fertiggestellt</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="86" height="14" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="98" height="26" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Flow_0ehvm4u_label" style="display: block;" transform="matrix(1 0 0 1 1720 573)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="0" y="9.899999999999999">fertiggestellt</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="60" height="14" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="72" height="26" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Flow_0twsltu_label" style="display: block;" transform="matrix(1 0 0 1 1977 423)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="0" y="9.899999999999999">nicht gesendet</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="72" height="14" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="84" height="26" class="djs-outline" style="fill: none;"/></g></g><g class="djs-group"><g class="djs-element djs-shape" data-element-id="Flow_0gg09id_label" style="display: block;" transform="matrix(1 0 0 1 2029 482)"><g class="djs-visual"><text lineHeight="1.2" class="djs-label" style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;"><tspan x="0" y="9.899999999999999">gesendet</tspan></text></g><rect class="djs-hit djs-hit-all" x="0" y="0" width="46" height="14" style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/><rect x="-6" y="-6" width="58" height="26" class="djs-outline" style="fill: none;"/></g></g></g></g></svg>
\ No newline at end of file
diff --git a/src/main/asciidoc/images/architecture-backend-component-diag.png b/src/main/asciidoc/images/architecture-backend-component-diag.png
new file mode 100644
index 0000000..c27abfa
--- /dev/null
+++ b/src/main/asciidoc/images/architecture-backend-component-diag.png
Binary files differ
diff --git a/src/main/asciidoc/images/architecture-backend-component-diag.svg b/src/main/asciidoc/images/architecture-backend-component-diag.svg
new file mode 100644
index 0000000..eefdcd6
--- /dev/null
+++ b/src/main/asciidoc/images/architecture-backend-component-diag.svg
@@ -0,0 +1,1444 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ inkscape:export-ydpi="300"
+ inkscape:export-xdpi="300"
+ inkscape:export-filename="/Users/tobiass/Work/repos/org.eclipse.openk/src/main/asciidoc/images/architecture-backend-component-diag.png"
+ sodipodi:docname="architecture-backend-component-diag.svg"
+ inkscape:version="1.0 (4035a4f, 2020-05-01)"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 261.8569 270.48187"
+ height="270.48187mm"
+ width="261.8569mm">
+ <defs
+ id="defs2">
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4845"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4843" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4667"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4665" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4501"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4499"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4195"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4193"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4051"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4049" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3907"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3905" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker3774"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path3772"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3306"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3304" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="Arrow2Lstart"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path2976" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="Arrow1Lend"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2961" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="Arrow1Lstart"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lstart">
+ <path
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2958" />
+ </marker>
+ <g
+ id="lend13">
+ <path
+ d="M 3,1 0,0 3,-1 v 2"
+ id="path485" />
+ </g>
+ <marker
+ id="mrkr13-73"
+ class="st16"
+ overflow="visible"
+ orient="auto"
+ refX="-13.08"
+ v:arrowSize="2"
+ v:arrowType="13"
+ v:setback="13.08">
+ <use
+ transform="scale(-4.36)"
+ xlink:href="#lend13"
+ id="use488"
+ x="0"
+ y="0"
+ width="100%"
+ height="100%" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ inkscape:window-maximized="0"
+ inkscape:window-y="105"
+ inkscape:window-x="1006"
+ inkscape:window-height="1805"
+ inkscape:window-width="2572"
+ showguides="false"
+ showgrid="false"
+ inkscape:document-rotation="0"
+ inkscape:current-layer="layer1"
+ inkscape:document-units="mm"
+ inkscape:cy="526.38262"
+ inkscape:cx="409.30726"
+ inkscape:zoom="1.012555"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ fit-margin-top="5"
+ fit-margin-left="5"
+ fit-margin-right="5"
+ fit-margin-bottom="5"
+ lock-margins="true" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1"
+ transform="translate(84.682354,-29.486814)">
+ <g
+ id="g5916">
+ <path
+ id="path5903"
+ d="m 144.32606,119.77171 0.0955,10.2907"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text5909"
+ y="125.10642"
+ x="147.69817"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="125.10642"
+ x="147.69817"
+ sodipodi:role="line"
+ id="tspan5907">uses</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.60601135,0,0,0.60601135,-35.676571,-17.015895)"
+ id="g1970">
+ <g
+ id="g1915"
+ transform="matrix(1.6968085,0,0,1.6968085,221.73028,-84.491926)">
+ <rect
+ ry="0.84923375"
+ y="99.88063"
+ x="-71.083817"
+ height="26.249598"
+ width="37.499928"
+ id="rect1886"
+ style="fill:#3d81c3;fill-opacity:1;stroke-width:0.358357" />
+ <g
+ transform="translate(-0.06383133,0.18112087)"
+ style="fill:#438dd5;fill-opacity:1"
+ id="g1906">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.299779"
+ id="rect1888"
+ width="35.537167"
+ height="21.589588"
+ x="-70.038605"
+ y="103.36477" />
+ <g
+ style="fill:#438dd5;fill-opacity:1"
+ id="g1899"
+ transform="translate(-0.0979895)">
+ <rect
+ ry="1.0706718"
+ y="100.69426"
+ x="-64.437927"
+ height="2.1413436"
+ width="29.936491"
+ id="rect1890"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.276217" />
+ <circle
+ r="1.0790378"
+ cy="101.80888"
+ cx="-68.763588"
+ id="path1892"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583" />
+ <circle
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583"
+ id="circle1894"
+ cx="-66.061241"
+ cy="101.80888"
+ r="1.0790378" />
+ </g>
+ </g>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="132.93182"
+ y="99.937546"
+ id="text1919"><tspan
+ sodipodi:role="line"
+ x="132.93182"
+ y="99.937546"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan1921">Frontend</tspan><tspan
+ sodipodi:role="line"
+ x="132.93182"
+ y="105.7057"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan1925">[singe-page-application]</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.60601135,0,0,0.60601135,32.015371,251.37819)"
+ id="g1996">
+ <rect
+ y="14.17335"
+ x="155.2043"
+ height="44.540539"
+ width="63.630196"
+ id="rect1978"
+ style="fill:#999999;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="187.07486"
+ y="26.511494"
+ id="text1984"><tspan
+ sodipodi:role="line"
+ x="187.07486"
+ y="26.511494"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan1980">AuthNAuth</tspan><tspan
+ sodipodi:role="line"
+ x="187.07486"
+ y="32.279644"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan1982">[openK Modul]</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.60601135,0,0,0.60601135,-155.64246,293.65828)"
+ id="g2013">
+ <g
+ id="g2006"
+ transform="translate(61.406131,-69.767817)">
+ <rect
+ y="14.17335"
+ x="155.2043"
+ height="44.540539"
+ width="63.630196"
+ id="rect1998"
+ style="fill:#999999;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="187.07486"
+ y="26.511494"
+ id="text2004"><tspan
+ sodipodi:role="line"
+ x="187.07486"
+ y="26.511494"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2000">Kontaktstammdaten</tspan><tspan
+ sodipodi:role="line"
+ x="187.07486"
+ y="32.279644"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2002">[openK Modul]</tspan></text>
+ </g>
+ </g>
+ <g
+ transform="matrix(0.60601135,0,0,0.60601135,19.290868,156.19532)"
+ id="g2882">
+ <g
+ id="g2860"
+ transform="matrix(0.8452813,0,0,0.8452813,-22.847855,18.799358)">
+ <path
+ d="m 43.311036,192.31202 v 28.75019 a 37.499999,10.190804 0 0 0 0,0.0305 v 0.48525 h 0.04806 a 37.499999,10.190804 0 0 0 37.451977,9.67486 37.499999,10.190804 0 0 0 37.451977,-9.67486 h 0.0475 v -0.51573 a 37.499999,10.190804 0 0 0 0,-0.031 v -28.71918 z"
+ style="fill:#438dd5;fill-opacity:1;stroke:#3d81c3;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path2015" />
+ <ellipse
+ ry="10.190804"
+ rx="37.5"
+ cy="192.31224"
+ cx="80.810791"
+ id="ellipse2023"
+ style="fill:#438dd5;fill-opacity:1;stroke:#3d81c3;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="45.386959"
+ y="200.01646"
+ id="text2868"><tspan
+ sodipodi:role="line"
+ x="45.386959"
+ y="200.01646"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2864">Statement DB</tspan><tspan
+ sodipodi:role="line"
+ x="45.386959"
+ y="205.78462"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2866">[e.g. postgreSQL]</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.60601135,0,0,0.60601135,11.70853,117.57042)"
+ id="g2912">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583"
+ id="rect2894"
+ width="63.630196"
+ height="44.540539"
+ x="105.81809"
+ y="234.97412" />
+ <text
+ id="text2900"
+ y="247.31226"
+ x="137.64421"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ id="tspan2896"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="247.31226"
+ x="137.64421"
+ sodipodi:role="line">Workflow Engine</tspan><tspan
+ id="tspan2898"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="253.08041"
+ x="137.64421"
+ sodipodi:role="line">[Camunda]</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.60601135,0,0,0.60601135,-206.13919,293.65828)"
+ id="g2924">
+ <g
+ transform="translate(61.406131,-69.767817)"
+ id="g2922">
+ <rect
+ style="fill:#999999;fill-opacity:1;stroke-width:0.264583"
+ id="rect2914"
+ width="63.630196"
+ height="44.540539"
+ x="155.2043"
+ y="14.17335" />
+ <text
+ id="text2920"
+ y="26.511494"
+ x="187.07486"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ id="tspan2916"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="26.511494"
+ x="187.07486"
+ sodipodi:role="line">Email Server</tspan><tspan
+ id="tspan2918"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="32.279644"
+ x="187.07486"
+ sodipodi:role="line" /></text>
+ </g>
+ </g>
+ <text
+ id="text3757"
+ y="142.78859"
+ x="81.385109"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="142.78859"
+ x="81.385109"
+ sodipodi:role="line"
+ id="tspan3755" /></text>
+ <path
+ id="path4047"
+ d="M 56.582901,61.217582 97.125769,91.38961"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="88.905067"
+ y="75.720207"
+ id="text4175"><tspan
+ id="tspan4173"
+ sodipodi:role="line"
+ x="88.905067"
+ y="75.720207"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">makes API calls</tspan><tspan
+ id="tspan4177"
+ sodipodi:role="line"
+ x="88.905067"
+ y="78.392548"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">[JSON/HTTPS]</tspan></text>
+ <rect
+ ry="2.6268222"
+ y="84.500938"
+ x="-79.321838"
+ height="153.88228"
+ width="251.13586"
+ id="rect5017"
+ style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.721032;stroke-miterlimit:4;stroke-dasharray:0.721032, 2.16311;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ id="text5057"
+ y="235.09062"
+ x="-75.245224"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.56545px;stroke-width:0.16034"
+ y="235.09062"
+ x="-75.245224"
+ id="tspan5055"
+ sodipodi:role="line">API Application Container</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.99302px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="-79.850418"
+ y="294.35049"
+ id="text5061"><tspan
+ sodipodi:role="line"
+ id="tspan5059"
+ x="-79.850418"
+ y="294.35049"
+ style="font-size:2.99302px;stroke-width:0.16034">Component diagram: Statement Public Affairs Module - API Application</tspan></text>
+ <g
+ id="g5731"
+ transform="matrix(0.60601135,0,0,0.60601135,-38.526907,-50.141032)">
+ <rect
+ y="234.97412"
+ x="105.81809"
+ height="44.540539"
+ width="63.630196"
+ id="rect5723"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="137.64421"
+ y="247.31226"
+ id="text5729"><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="247.31226"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5725">Statement</tspan><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="254.36781"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5757">Controller</tspan><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="260.13596"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5727">[Spring MVC Rest Controller]</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.60601135,0,0,0.60601135,-138.99778,-12.294735)"
+ id="g5741">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583"
+ id="rect5733"
+ width="63.630196"
+ height="44.540539"
+ x="105.81809"
+ y="234.97412" />
+ <text
+ id="text5739"
+ y="247.31226"
+ x="137.64421"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ id="tspan5735"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="247.31226"
+ x="137.64421"
+ sodipodi:role="line">UserInfo</tspan><tspan
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="254.36781"
+ x="137.64421"
+ sodipodi:role="line"
+ id="tspan5743">Service</tspan><tspan
+ id="tspan5737"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="260.13596"
+ x="137.64421"
+ sodipodi:role="line">[Spring Service]</tspan></text>
+ </g>
+ <g
+ id="g5755"
+ transform="matrix(0.60601135,0,0,0.60601135,11.70853,-50.141028)">
+ <rect
+ y="234.97412"
+ x="105.81809"
+ height="44.540539"
+ width="63.630196"
+ id="rect5745"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="137.64421"
+ y="247.31226"
+ id="text5753"><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="247.31226"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5747">Statement Process</tspan><tspan
+ id="tspan5749"
+ sodipodi:role="line"
+ x="137.64421"
+ y="254.36781"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583">Controller</tspan><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="260.13596"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5751">[Spring MVC Rest Controller]</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.60601135,0,0,0.60601135,61.943973,-50.141032)"
+ id="g5769">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583"
+ id="rect5759"
+ width="63.630196"
+ height="44.540539"
+ x="105.81809"
+ y="234.97412" />
+ <text
+ id="text5767"
+ y="247.31226"
+ x="137.64421"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ id="tspan5761"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="247.31226"
+ x="137.64421"
+ sodipodi:role="line">Session</tspan><tspan
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="254.36781"
+ x="137.64421"
+ sodipodi:role="line"
+ id="tspan5763">Controller</tspan><tspan
+ id="tspan5765"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="260.13596"
+ x="137.64421"
+ sodipodi:role="line">[Spring MVC Rest Controller]</tspan></text>
+ </g>
+ <g
+ id="g5781"
+ transform="matrix(0.60601135,0,0,0.60601135,-138.99778,-50.141028)">
+ <rect
+ y="234.97412"
+ x="105.81809"
+ height="44.540539"
+ width="63.630196"
+ id="rect5771"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="137.64421"
+ y="247.31226"
+ id="text5779"><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="247.31226"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5773">UserInfo</tspan><tspan
+ id="tspan5775"
+ sodipodi:role="line"
+ x="137.64421"
+ y="254.36781"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583">Controller</tspan><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="260.13596"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5777">[Spring MVC Rest Controller]</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.60601135,0,0,0.60601135,-38.526907,25.55155)"
+ id="g5793">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583"
+ id="rect5783"
+ width="63.630196"
+ height="44.540539"
+ x="105.81809"
+ y="234.97412" />
+ <text
+ id="text5791"
+ y="247.31226"
+ x="137.64421"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ id="tspan5785"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="247.31226"
+ x="137.64421"
+ sodipodi:role="line">Statement</tspan><tspan
+ id="tspan5787"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="254.36781"
+ x="137.64421"
+ sodipodi:role="line">Service</tspan><tspan
+ id="tspan5789"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="260.13596"
+ x="137.64421"
+ sodipodi:role="line">[Spring Service]</tspan></text>
+ </g>
+ <g
+ id="g5805"
+ transform="matrix(0.60601135,0,0,0.60601135,11.70853,-12.294735)">
+ <rect
+ y="234.97412"
+ x="105.81809"
+ height="44.540539"
+ width="63.630196"
+ id="rect5795"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="137.64421"
+ y="247.31226"
+ id="text5803"><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="247.31226"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5797">Statement Process</tspan><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="254.36781"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5799">Service</tspan><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="260.13596"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5801">[Spring Service]</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.60601135,0,0,0.60601135,11.70853,25.55155)"
+ id="g5817">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583"
+ id="rect5807"
+ width="63.630196"
+ height="44.540539"
+ x="105.81809"
+ y="234.97412" />
+ <text
+ id="text5815"
+ y="247.31226"
+ x="137.64421"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ id="tspan5809"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="247.31226"
+ x="137.64421"
+ sodipodi:role="line">Workflow</tspan><tspan
+ id="tspan5811"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="254.36781"
+ x="137.64421"
+ sodipodi:role="line">Service</tspan><tspan
+ id="tspan5813"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="260.13596"
+ x="137.64421"
+ sodipodi:role="line">[Spring Service]</tspan></text>
+ </g>
+ <g
+ id="g5829"
+ transform="matrix(0.60601135,0,0,0.60601135,-38.526907,63.397851)">
+ <rect
+ y="234.97412"
+ x="105.81809"
+ height="44.540539"
+ width="63.630196"
+ id="rect5819"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="137.64421"
+ y="247.31226"
+ id="text5827"><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="247.31226"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5821">Database</tspan><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="254.36781"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5823">Repositories</tspan><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="260.13596"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5825">[Spring Repository]</tspan></text>
+ </g>
+ <g
+ id="g5841"
+ transform="matrix(0.60601135,0,0,0.60601135,11.70853,63.397851)">
+ <rect
+ y="234.97412"
+ x="105.81809"
+ height="44.540539"
+ width="63.630196"
+ id="rect5831"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="137.64421"
+ y="247.31226"
+ id="text5839"><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="247.31226"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5833">Camunda</tspan><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="254.36781"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5835">Api</tspan><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="260.13596"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5837">[Feign Client]</tspan></text>
+ </g>
+ <g
+ id="g5853"
+ transform="matrix(0.60601135,0,0,0.60601135,61.943973,-12.294735)">
+ <rect
+ y="234.97412"
+ x="105.81809"
+ height="44.540539"
+ width="63.630196"
+ id="rect5843"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="137.64421"
+ y="247.31226"
+ id="text5851"><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="247.31226"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5845">Session</tspan><tspan
+ id="tspan5847"
+ sodipodi:role="line"
+ x="137.64421"
+ y="254.36781"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583">Service</tspan><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="260.13596"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5849">[Spring Service]</tspan></text>
+ </g>
+ <g
+ id="g5865"
+ transform="matrix(0.60601135,0,0,0.60601135,-138.99778,25.55155)">
+ <rect
+ y="234.97412"
+ x="105.81809"
+ height="44.540539"
+ width="63.630196"
+ id="rect5855"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="137.64421"
+ y="247.31226"
+ id="text5863"><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="247.31226"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5857">Notification</tspan><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="254.36781"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5859">Service</tspan><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="260.13596"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan5861">[Spring Service]</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.60601135,0,0,0.60601135,-88.501042,63.397851)"
+ id="g5877">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583"
+ id="rect5867"
+ width="63.630196"
+ height="44.540539"
+ x="105.81809"
+ y="234.97412" />
+ <text
+ id="text5875"
+ y="247.31226"
+ x="137.64421"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ id="tspan5869"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="247.31226"
+ x="137.64421"
+ sodipodi:role="line">Contacts</tspan><tspan
+ id="tspan5871"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="254.36781"
+ x="137.64421"
+ sodipodi:role="line">Api</tspan><tspan
+ id="tspan5873"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="260.13596"
+ x="137.64421"
+ sodipodi:role="line">[Feign Client]</tspan></text>
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ d="M 63.15154,60.456004 141.54722,91.38961"
+ id="path5879" />
+ <text
+ id="text5885"
+ y="76.765427"
+ x="124.96484"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="76.765427"
+ x="124.96484"
+ sodipodi:role="line"
+ id="tspan5881">makes API calls</tspan><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="79.437767"
+ x="124.96484"
+ sodipodi:role="line"
+ id="tspan5883">[JSON/HTTPS]</tspan></text>
+ <path
+ id="path5887"
+ d="M 45.292342,61.762517 45.91044,90.867005"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="54.139847"
+ y="75.720207"
+ id="text5893"><tspan
+ id="tspan5889"
+ sodipodi:role="line"
+ x="54.139847"
+ y="75.720207"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">makes API calls</tspan><tspan
+ id="tspan5891"
+ sodipodi:role="line"
+ x="54.139847"
+ y="78.392548"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">[JSON/HTTPS]</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ d="m 26.609197,60.456004 -80.51638,31.194909"
+ id="path5895" />
+ <text
+ id="text5901"
+ y="75.720207"
+ x="0.87887198"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="75.720207"
+ x="0.87887198"
+ sodipodi:role="line"
+ id="tspan5897">makes API calls</tspan><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="78.392548"
+ x="0.87887198"
+ sodipodi:role="line"
+ id="tspan5899">[JSON/HTTPS]</tspan></text>
+ <g
+ id="g5924"
+ transform="translate(-49.386206)">
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ d="m 144.32606,119.77171 0.0955,10.2907"
+ id="path5918" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="147.69817"
+ y="125.10642"
+ id="text5922"><tspan
+ id="tspan5920"
+ sodipodi:role="line"
+ x="147.69817"
+ y="125.10642"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ </g>
+ <g
+ transform="translate(-49.386206,37.627586)"
+ id="g5940">
+ <path
+ id="path5934"
+ d="m 144.32606,119.77171 0.0955,10.2907"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text5938"
+ y="125.10642"
+ x="147.69817"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="125.10642"
+ x="147.69817"
+ sodipodi:role="line"
+ id="tspan5936">uses</tspan></text>
+ </g>
+ <g
+ id="g5948"
+ transform="translate(-49.386206,74.993869)">
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ d="m 144.32606,119.77171 0.0955,10.2907"
+ id="path5942" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="147.69817"
+ y="125.10642"
+ id="text5946"><tspan
+ id="tspan5944"
+ sodipodi:role="line"
+ x="147.69817"
+ y="125.10642"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ </g>
+ <g
+ transform="translate(-97.988504,74.993869)"
+ id="g5956">
+ <path
+ id="path5950"
+ d="m 144.32606,119.77171 0.0955,10.2907"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text5954"
+ y="125.10642"
+ x="147.69817"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="125.10642"
+ x="147.69817"
+ sodipodi:role="line"
+ id="tspan5952">uses</tspan></text>
+ </g>
+ <path
+ id="path5958"
+ d="m 75.835496,157.09431 -11.67482,10.85422"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text5962"
+ y="162.28349"
+ x="67.236626"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="162.28349"
+ x="67.236626"
+ sodipodi:role="line"
+ id="tspan5960">uses</tspan></text>
+ <g
+ transform="translate(-200.41915)"
+ id="g5972">
+ <path
+ id="path5966"
+ d="m 144.32606,119.77171 0.0955,10.2907"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text5970"
+ y="125.10642"
+ x="147.69817"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="125.10642"
+ x="147.69817"
+ sodipodi:role="line"
+ id="tspan5968">uses</tspan></text>
+ </g>
+ <g
+ id="g5980"
+ transform="translate(-100.34022)">
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ d="m 144.32606,119.77171 0.0955,48.17959"
+ id="path5974" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="147.69817"
+ y="125.10642"
+ id="text5978"><tspan
+ id="tspan5976"
+ sodipodi:role="line"
+ x="147.69817"
+ y="125.10642"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ d="m -55.30918,194.76558 0.0955,64.38035"
+ id="path5990" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="-47.102966"
+ y="245.19576"
+ id="text5994"><tspan
+ id="tspan5992"
+ sodipodi:role="line"
+ x="-47.102966"
+ y="245.19576"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">sends e-mails</tspan><tspan
+ id="tspan6047"
+ sodipodi:role="line"
+ x="-47.102966"
+ y="247.86809"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">using</tspan></text>
+ <g
+ id="g6012"
+ transform="translate(-0.2613025,37.627586)">
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ d="m 144.32606,119.77171 0.0955,48.04894"
+ id="path6006" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="147.69817"
+ y="125.10642"
+ id="text6010"><tspan
+ id="tspan6008"
+ sodipodi:role="line"
+ x="147.69817"
+ y="125.10642"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ </g>
+ <path
+ id="path6014"
+ d="m 46.337556,232.78512 0.0955,27.14472"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text6018"
+ y="246.71564"
+ x="52.975945"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="246.71564"
+ x="52.975945"
+ sodipodi:role="line"
+ id="tspan6016">uses JDBC</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ d="m 94.939854,232.78512 0.0955,26.62212"
+ id="path6030" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="103.0154"
+ y="244.99898"
+ id="text6034"><tspan
+ id="tspan6032"
+ sodipodi:role="line"
+ x="103.0154"
+ y="244.99898"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan><tspan
+ sodipodi:role="line"
+ x="103.0154"
+ y="247.67131"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ id="tspan6075">[HTTPS/JSON]</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ d="m 64.160679,119.24802 11.674816,10.85423"
+ id="path6041" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="67.236626"
+ y="125.77098"
+ id="text6045"><tspan
+ id="tspan6043"
+ sodipodi:role="line"
+ x="67.236626"
+ y="125.77098"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ <g
+ transform="matrix(0.60601135,0,0,0.60601135,62.139947,63.397851)"
+ id="g6062">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583"
+ id="rect6052"
+ width="63.630196"
+ height="44.540539"
+ x="105.81809"
+ y="234.97412" />
+ <text
+ id="text6060"
+ y="247.31226"
+ x="137.64421"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ id="tspan6054"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="247.31226"
+ x="137.64421"
+ sodipodi:role="line">AuthNAuth</tspan><tspan
+ id="tspan6056"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="254.36781"
+ x="137.64421"
+ sodipodi:role="line">Api</tspan><tspan
+ id="tspan6058"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="260.13596"
+ x="137.64421"
+ sodipodi:role="line">[Feign Client]</tspan></text>
+ </g>
+ <path
+ id="path6064"
+ d="m 144.06643,232.78512 0.0955,26.62212"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text6081"
+ y="244.99898"
+ x="152.1403"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="244.99898"
+ x="152.1403"
+ sodipodi:role="line"
+ id="tspan6077">uses</tspan><tspan
+ id="tspan6079"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="247.67131"
+ x="152.1403"
+ sodipodi:role="line">[HTTPS/JSON]</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="3.9816859"
+ y="244.99898"
+ id="text6087"><tspan
+ id="tspan6083"
+ sodipodi:role="line"
+ x="3.9816859"
+ y="244.99898"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan><tspan
+ sodipodi:role="line"
+ x="3.9816859"
+ y="247.67131"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ id="tspan6085">[HTTPS/JSON]</tspan></text>
+ <g
+ id="g6109"
+ transform="matrix(0.60601135,0,0,0.60601135,-88.501042,25.55155)">
+ <rect
+ y="234.97412"
+ x="105.81809"
+ height="44.540539"
+ width="63.630196"
+ id="rect6099"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="137.64421"
+ y="247.31226"
+ id="text6107"><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="247.31226"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan6101">Authorization</tspan><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="254.36781"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan6103">Service</tspan><tspan
+ sodipodi:role="line"
+ x="137.64421"
+ y="260.13596"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan6105">[Spring Service]</tspan></text>
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ d="m -4.4858149,232.78512 0.0955,27.14472"
+ id="path6111" />
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ d="M 75.835496,147.68741 -5.0845334,168.07918"
+ id="path6113" />
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ d="m 25.534731,181.13416 -11.021564,0.0102"
+ id="path6115" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="25.950804"
+ y="157.972"
+ id="text6119"><tspan
+ id="tspan6117"
+ sodipodi:role="line"
+ x="25.950804"
+ y="157.972"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ <text
+ id="text6123"
+ y="180.18272"
+ x="20.8554"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="180.18272"
+ x="20.8554"
+ sodipodi:role="line"
+ id="tspan6121">uses</tspan></text>
+ <path
+ id="path6125"
+ d="M 75.704845,143.37591 -35.918249,143.25542"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text6129"
+ y="141.77124"
+ x="23.860382"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="141.77124"
+ x="23.860382"
+ sodipodi:role="line"
+ id="tspan6127">uses</tspan></text>
+ </g>
+ <style
+ type="text/css"
+ id="style483"><![CDATA[
+ .st1 {fill:#08427b;stroke:#073b6f;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st2 {fill:#ffffff;font-family:Calibri;font-size:0.833336em}
+ .st3 {font-size:0.599989em}
+ .st4 {font-size:0.799995em}
+ .st5 {fill:#1168bd;stroke:#1864ad;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st6 {fill:#438dd5;stroke:#3d81c3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st7 {fill:#85bbf0;stroke:#78a8d8;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st8 {fill:#000000;font-family:Calibri;font-size:0.833336em}
+ .st9 {fill:#438dd5}
+ .st10 {stroke:#3d81c3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st11 {fill:#3d81c3;stroke:#3d81c3;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st12 {stroke:#408dd5;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st13 {fill:#408dd5;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st14 {fill:#438dd5;stroke:#3d81c3;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.283465}
+ .st15 {marker-end:url(#mrkr13-73);stroke:#444444;stroke-dasharray:5.25,3.75;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st16 {fill:#444444;fill-opacity:1;stroke:#444444;stroke-opacity:1;stroke-width:0.22935779816514}
+ .st17 {fill:#ffffff;stroke:none;stroke-linecap:butt;stroke-width:7.2}
+ .st18 {fill:#000000;font-family:Calibri;font-size:0.666664em}
+ .st19 {font-size:0.749991em}
+ .st20 {fill:none;stroke:#444444;stroke-dasharray:7.5,4.5;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5}
+ .st21 {font-size:1em}
+ .st22 {fill:#999999;stroke:#8b8b8b;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st23 {fill:#999999}
+ .st24 {stroke:#8b8b8b;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st25 {fill:#8b8b8b;stroke:#8b8b8b;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st26 {stroke:#999999;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st27 {fill:#999999;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st28 {fill:#999999;stroke:#8b8b8b;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.283465}
+ .st29 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+ ]]></style>
+</svg>
diff --git a/src/main/asciidoc/images/architecture-container-diag.png b/src/main/asciidoc/images/architecture-container-diag.png
new file mode 100644
index 0000000..93212d8
--- /dev/null
+++ b/src/main/asciidoc/images/architecture-container-diag.png
Binary files differ
diff --git a/src/main/asciidoc/images/architecture-container-diag.svg b/src/main/asciidoc/images/architecture-container-diag.svg
new file mode 100644
index 0000000..e97ef25
--- /dev/null
+++ b/src/main/asciidoc/images/architecture-container-diag.svg
@@ -0,0 +1,1001 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="187.64917mm"
+ height="192.62976mm"
+ viewBox="0 0 187.64917 192.62976"
+ version="1.1"
+ id="svg8"
+ inkscape:version="1.0 (4035a4f, 2020-05-01)"
+ sodipodi:docname="architecture-container-diag.svg"
+ inkscape:export-filename="/Users/tobiass/Work/repos/org.eclipse.openk/src/main/asciidoc/images/architecture-container-diag.png"
+ inkscape:export-xdpi="300"
+ inkscape:export-ydpi="300">
+ <defs
+ id="defs2">
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4845"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4843"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4667"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4665"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4501"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4499" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4335"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend"
+ inkscape:collect="always">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4333" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4195"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4193" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4051"
+ style="overflow:visible"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path4049"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker3907"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path3905"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3774"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3772" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3653"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend"
+ inkscape:collect="always">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3651" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker3514"
+ style="overflow:visible"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path3512"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3406"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend"
+ inkscape:collect="always">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3404" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend"
+ style="overflow:visible"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path2967"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker3306"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path3304"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2976"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(1.1,0,0,1.1,1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2961"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2958"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(0.8,0,0,0.8,10,0)" />
+ </marker>
+ <g
+ id="lend13">
+ <path
+ id="path485"
+ d="M 3,1 0,0 3,-1 v 2" />
+ </g>
+ <marker
+ v:setback="13.08"
+ v:arrowType="13"
+ v:arrowSize="2"
+ refX="-13.08"
+ orient="auto"
+ overflow="visible"
+ class="st16"
+ id="mrkr13-73">
+ <use
+ height="100%"
+ width="100%"
+ y="0"
+ x="0"
+ id="use488"
+ xlink:href="#lend13"
+ transform="scale(-4.36)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ lock-margins="true"
+ fit-margin-bottom="5"
+ fit-margin-right="5"
+ fit-margin-left="5"
+ fit-margin-top="5"
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.012555"
+ inkscape:cx="-29.44567"
+ inkscape:cy="269.87364"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ inkscape:document-rotation="0"
+ showgrid="false"
+ showguides="false"
+ inkscape:window-width="2572"
+ inkscape:window-height="1805"
+ inkscape:window-x="1106"
+ inkscape:window-y="23"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-21.410249,-75.1118)"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <g
+ id="g5256"
+ transform="matrix(0.60601135,0,0,0.60601135,25.290463,76.280578)">
+ <g
+ transform="translate(278.28735,-28.899031)"
+ id="g1785">
+ <path
+ id="rect1768"
+ style="fill:#08427b;fill-opacity:1;fill-rule:evenodd;stroke-width:0.999999"
+ d="m -716.0957,133.11914 a 44.372757,44.372757 0 0 0 -44.12891,44.37109 44.372757,44.372757 0 0 0 13.91602,32.27149 h -41.64453 c -14.89849,0 -26.89258,11.99409 -26.89258,26.89258 v 68.57617 c 0,14.89849 11.99409,26.89258 26.89258,26.89258 h 144.19921 c 14.89852,0 26.89258,-11.99409 26.89258,-26.89258 V 236.6543 c 0,-14.89849 -11.99406,-26.89258 -26.89258,-26.89258 h -41.64453 a 44.372757,44.372757 0 0 0 13.91797,-32.27149 44.372757,44.372757 0 0 0 -44.37305,-44.37109 44.372757,44.372757 0 0 0 -0.24218,0 z"
+ transform="scale(0.26458333)" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5.52804px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.138201"
+ x="-189.59583"
+ y="63.141998"
+ id="text1777"><tspan
+ sodipodi:role="line"
+ id="tspan1775"
+ x="-189.59583"
+ y="63.141998"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.138201">SPA User</tspan><tspan
+ sodipodi:role="line"
+ x="-189.59583"
+ y="70.091354"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.138201"
+ id="tspan1779">[Person]</tspan></text>
+ </g>
+ <g
+ transform="translate(11.719776,3.6509745)"
+ id="g1970">
+ <g
+ id="g1915"
+ transform="matrix(1.6968085,0,0,1.6968085,221.73028,-84.491926)">
+ <rect
+ ry="0.84923375"
+ y="99.88063"
+ x="-71.083817"
+ height="26.249598"
+ width="37.499928"
+ id="rect1886"
+ style="fill:#3d81c3;fill-opacity:1;stroke-width:0.358357" />
+ <g
+ transform="translate(-0.06383133,0.18112087)"
+ style="fill:#438dd5;fill-opacity:1"
+ id="g1906">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.299779"
+ id="rect1888"
+ width="35.537167"
+ height="21.589588"
+ x="-70.038605"
+ y="103.36477" />
+ <g
+ style="fill:#438dd5;fill-opacity:1"
+ id="g1899"
+ transform="translate(-0.0979895)">
+ <rect
+ ry="1.0706718"
+ y="100.69426"
+ x="-64.437927"
+ height="2.1413436"
+ width="29.936491"
+ id="rect1890"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.276217" />
+ <circle
+ r="1.0790378"
+ cy="101.80888"
+ cx="-68.763588"
+ id="path1892"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583" />
+ <circle
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583"
+ id="circle1894"
+ cx="-66.061241"
+ cy="101.80888"
+ r="1.0790378" />
+ </g>
+ </g>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="132.93182"
+ y="99.937546"
+ id="text1919"><tspan
+ sodipodi:role="line"
+ x="132.93182"
+ y="99.937546"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan1921">Frontend</tspan><tspan
+ sodipodi:role="line"
+ x="132.93182"
+ y="105.7057"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan1925">[singe-page-application]</tspan></text>
+ </g>
+ <g
+ transform="translate(0.78390805,2.8670655)"
+ id="g1976">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583"
+ id="rect1940"
+ width="63.630196"
+ height="44.540539"
+ x="9.3974047"
+ y="85.770287" />
+ <text
+ id="text1957"
+ y="98.108429"
+ x="41.329636"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ id="tspan1953"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="98.108429"
+ x="41.329636"
+ sodipodi:role="line">Web Application</tspan><tspan
+ id="tspan1955"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="103.87658"
+ x="41.329636"
+ sodipodi:role="line">[tomcat]</tspan></text>
+ </g>
+ <g
+ transform="translate(76.158259,0.26130234)"
+ id="g1996">
+ <rect
+ y="14.17335"
+ x="155.2043"
+ height="44.540539"
+ width="63.630196"
+ id="rect1978"
+ style="fill:#999999;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="187.07486"
+ y="26.511494"
+ id="text1984"><tspan
+ sodipodi:role="line"
+ x="187.07486"
+ y="26.511494"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan1980">AuthNAuth</tspan><tspan
+ sodipodi:role="line"
+ x="187.07486"
+ y="32.279644"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan1982">[openK Modul]</tspan></text>
+ </g>
+ <g
+ transform="translate(14.752127,218.43936)"
+ id="g2013">
+ <g
+ id="g2006"
+ transform="translate(61.406131,-69.767817)">
+ <rect
+ y="14.17335"
+ x="155.2043"
+ height="44.540539"
+ width="63.630196"
+ id="rect1998"
+ style="fill:#999999;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="187.07486"
+ y="26.511494"
+ id="text2004"><tspan
+ sodipodi:role="line"
+ x="187.07486"
+ y="26.511494"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2000">Kontaktstammdaten</tspan><tspan
+ sodipodi:role="line"
+ x="187.07486"
+ y="32.279644"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2002">[openK Modul]</tspan></text>
+ </g>
+ </g>
+ <g
+ transform="translate(-3.463585,65.81216)"
+ id="g2882">
+ <g
+ id="g2860"
+ transform="matrix(0.8452813,0,0,0.8452813,-22.847855,18.799358)">
+ <path
+ d="m 43.311036,192.31202 v 28.75019 a 37.499999,10.190804 0 0 0 0,0.0305 v 0.48525 h 0.04806 a 37.499999,10.190804 0 0 0 37.451977,9.67486 37.499999,10.190804 0 0 0 37.451977,-9.67486 h 0.0475 v -0.51573 a 37.499999,10.190804 0 0 0 0,-0.031 v -28.71918 z"
+ style="fill:#438dd5;fill-opacity:1;stroke:#3d81c3;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path2015" />
+ <ellipse
+ ry="10.190804"
+ rx="37.5"
+ cy="192.31224"
+ cx="80.810791"
+ id="ellipse2023"
+ style="fill:#438dd5;fill-opacity:1;stroke:#3d81c3;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="45.386959"
+ y="200.01646"
+ id="text2868"><tspan
+ sodipodi:role="line"
+ x="45.386959"
+ y="200.01646"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2864">Statement DB</tspan><tspan
+ sodipodi:role="line"
+ x="45.386959"
+ y="205.78462"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2866">[e.g.postgreSQL]</tspan></text>
+ </g>
+ <g
+ transform="translate(103.43703,77.074607)"
+ id="g2892">
+ <rect
+ y="85.770287"
+ x="9.3974047"
+ height="44.540539"
+ width="63.630196"
+ id="rect2884"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="41.329636"
+ y="98.108429"
+ id="text2890"><tspan
+ sodipodi:role="line"
+ x="41.329636"
+ y="98.108429"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2886">API Application</tspan><tspan
+ sodipodi:role="line"
+ x="41.329636"
+ y="103.87658"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2888">[Web Application]</tspan></text>
+ </g>
+ <g
+ transform="translate(7.0163396,2.0758922)"
+ id="g2912">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583"
+ id="rect2894"
+ width="63.630196"
+ height="44.540539"
+ x="105.81809"
+ y="234.97412" />
+ <text
+ id="text2900"
+ y="247.31226"
+ x="137.64421"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ id="tspan2896"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="247.31226"
+ x="137.64421"
+ sodipodi:role="line">Workflow Engine</tspan><tspan
+ id="tspan2898"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="253.08041"
+ x="137.64421"
+ sodipodi:role="line">[Camunda]</tspan></text>
+ </g>
+ <g
+ transform="translate(14.752127,144.23424)"
+ id="g2924">
+ <g
+ transform="translate(61.406131,-69.767817)"
+ id="g2922">
+ <rect
+ style="fill:#999999;fill-opacity:1;stroke-width:0.264583"
+ id="rect2914"
+ width="63.630196"
+ height="44.540539"
+ x="155.2043"
+ y="14.17335" />
+ <text
+ id="text2920"
+ y="26.511494"
+ x="187.07486"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ id="tspan2916"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="26.511494"
+ x="187.07486"
+ sodipodi:role="line">Email Server</tspan><tspan
+ id="tspan2918"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="32.279644"
+ x="187.07486"
+ sodipodi:role="line" /></text>
+ </g>
+ </g>
+ <g
+ id="g2954"
+ transform="translate(14.752127,292.64448)">
+ <g
+ id="g2952"
+ transform="translate(61.406131,-69.767817)">
+ <rect
+ y="14.17335"
+ x="155.2043"
+ height="44.540539"
+ width="63.630196"
+ id="rect2944"
+ style="fill:#999999;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="187.07486"
+ y="26.511494"
+ id="text2950"><tspan
+ sodipodi:role="line"
+ x="187.07486"
+ y="26.511494"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2946">Map Tile Server</tspan><tspan
+ sodipodi:role="line"
+ x="187.07486"
+ y="32.279644"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2948">[OpenStreetMap]</tspan></text>
+ </g>
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ id="path2956"
+ d="M 84.92337,58.793104 39.718009,87.536397"
+ style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
+ <text
+ id="text3390"
+ y="66.893486"
+ x="51.231979"
+ style="font-style:normal;font-weight:normal;font-size:3.52778px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="66.893486"
+ x="51.231979"
+ id="tspan3388"
+ sodipodi:role="line">visits SPA Portal</tspan><tspan
+ id="tspan3392"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="71.303207"
+ x="51.231979"
+ sodipodi:role="line">using</tspan><tspan
+ id="tspan3394"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="75.712936"
+ x="51.231979"
+ sodipodi:role="line">[HTTPS]</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3406)"
+ d="M 91.978543,58.270498 138.75172,88.84291"
+ id="path3402" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:3.52778px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="134.37212"
+ y="68.461304"
+ id="text3494"><tspan
+ sodipodi:role="line"
+ id="tspan3488"
+ x="134.37212"
+ y="68.461304"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583">visits and</tspan><tspan
+ sodipodi:role="line"
+ x="134.37212"
+ y="72.871025"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ id="tspan3492">modifies</tspan><tspan
+ id="tspan3502"
+ sodipodi:role="line"
+ x="134.37212"
+ y="77.280754"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583">current Statements</tspan></text>
+ <path
+ id="path3510"
+ d="m 116.01839,36.582375 113.66667,0.261301"
+ style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3514)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text3634"
+ y="30.049809"
+ x="157.88936"
+ style="font-style:normal;font-weight:normal;font-size:3.52778px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="30.049809"
+ x="157.88936"
+ id="tspan3628"
+ sodipodi:role="line">request Authentication Token</tspan><tspan
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="34.459534"
+ x="157.88936"
+ sodipodi:role="line"
+ id="tspan3632">[JSON/HTTPS]</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3653)"
+ d="M 75.255171,112.09885 H 111.83754"
+ id="path3649" />
+ <text
+ id="text3757"
+ y="109.74713"
+ x="92.563683"
+ style="font-style:normal;font-weight:normal;font-size:3.52778px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="109.74713"
+ x="92.563683"
+ sodipodi:role="line"
+ id="tspan3755">delivers</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3774)"
+ d="M 245.36322,88.842908 116.27969,41.808425"
+ id="path3770" />
+ <text
+ id="text3886"
+ y="49.908813"
+ x="174.35143"
+ style="font-style:normal;font-weight:normal;font-size:3.52778px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="49.908813"
+ x="174.35143"
+ id="tspan3880"
+ sodipodi:role="line">delivers Statement</tspan><tspan
+ id="tspan3888"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="54.318539"
+ x="174.35143"
+ sodipodi:role="line">notifications</tspan><tspan
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="58.728264"
+ x="174.35143"
+ sodipodi:role="line"
+ id="tspan3884">[IMAP]</tspan></text>
+ <path
+ id="path3903"
+ d="m 177.42452,185.2636 h 51.73793"
+ style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3907)"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:3.52778px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="192.64261"
+ y="184.24461"
+ id="text4023"><tspan
+ id="tspan4021"
+ sodipodi:role="line"
+ x="192.64261"
+ y="184.24461"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583">request contact</tspan><tspan
+ id="tspan4037"
+ sodipodi:role="line"
+ x="192.64261"
+ y="188.65434"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583">details</tspan><tspan
+ id="tspan4039"
+ sodipodi:role="line"
+ x="192.64261"
+ y="193.06406"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583">[JSON/HTTPS]</tspan></text>
+ <path
+ id="path4047"
+ d="m 143.97778,133.78697 -1e-5,28.48199"
+ style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:3.52778px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="129.11897"
+ y="146.32951"
+ id="text4175"><tspan
+ id="tspan4173"
+ sodipodi:role="line"
+ x="129.11897"
+ y="146.32951"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583">makes API calls</tspan><tspan
+ id="tspan4177"
+ sodipodi:role="line"
+ x="129.11897"
+ y="150.73924"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583">[JSON/HTTPS]</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4195)"
+ d="m 143.97778,207.87044 -1e-5,28.48199"
+ id="path4185" />
+ <text
+ id="text4191"
+ y="220.41269"
+ x="129.11897"
+ style="font-style:normal;font-weight:normal;font-size:3.52778px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="220.41269"
+ x="129.11897"
+ sodipodi:role="line"
+ id="tspan4187">manages tasks</tspan><tspan
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="224.82242"
+ x="129.11897"
+ sodipodi:role="line"
+ id="tspan4189">[JSON/HTTPS]</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4335)"
+ d="M 169.14815,162.32228 231.36256,58.975192"
+ id="path4331" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:3.52778px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="260.51685"
+ y="63.235249"
+ id="text4477"><tspan
+ sodipodi:role="line"
+ id="tspan4473"
+ x="260.51685"
+ y="63.235249"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583">verify Authentication Token</tspan><tspan
+ id="tspan4475"
+ sodipodi:role="line"
+ x="260.51685"
+ y="67.644974"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583">[JSON/HTTPS]</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4501)"
+ d="M 112.62146,185.0023 62.451333,239.09195"
+ id="path4491" />
+ <text
+ id="text4497"
+ y="201.46437"
+ x="71.371078"
+ style="font-style:normal;font-weight:normal;font-size:3.52778px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="201.46437"
+ x="71.371078"
+ sodipodi:role="line"
+ id="tspan4493">reads and</tspan><tspan
+ id="tspan4653"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="205.8741"
+ x="71.371078"
+ sodipodi:role="line">writes Statement</tspan><tspan
+ id="tspan4655"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="210.28381"
+ x="71.371078"
+ sodipodi:role="line">data</tspan><tspan
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="214.69354"
+ x="71.371078"
+ sodipodi:role="line"
+ id="tspan4495">[JDBC]</tspan></text>
+ <path
+ id="path4663"
+ d="m 177.50984,168.33225 53.85272,-35.15194"
+ style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4667)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text4831"
+ y="140.05824"
+ x="251.63257"
+ style="font-style:normal;font-weight:normal;font-size:3.52778px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="140.05824"
+ x="251.63257"
+ id="tspan4827"
+ sodipodi:role="line">send Statement status</tspan><tspan
+ id="tspan4833"
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="144.46797"
+ x="251.63257"
+ sodipodi:role="line">update notification</tspan><tspan
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="148.87769"
+ x="251.63257"
+ sodipodi:role="line"
+ id="tspan4829">[SMTP]</tspan></text>
+ <path
+ id="path4841"
+ d="m 176.37931,111.83755 53.56705,146.5908"
+ style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 1.5;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4845)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text5013"
+ y="229.97258"
+ x="239.1545"
+ style="font-style:normal;font-weight:normal;font-size:3.52778px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="229.97258"
+ x="239.1545"
+ sodipodi:role="line"
+ id="tspan5009">request map tiles</tspan><tspan
+ style="font-size:3.52778px;text-align:center;text-anchor:middle;stroke-width:0.264583"
+ y="234.38231"
+ x="239.1545"
+ sodipodi:role="line"
+ id="tspan5011">[HTTP]</tspan></text>
+ <rect
+ ry="3.6836877"
+ y="82.06971"
+ x="2.2453284"
+ height="215.79469"
+ width="216.44437"
+ id="rect5017"
+ style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.792683;stroke-miterlimit:4;stroke-dasharray:0.792683, 2.37805;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ id="text5057"
+ y="293.96552"
+ x="4.4421449"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ style="font-size:4.23333px;stroke-width:0.264583"
+ y="293.96552"
+ x="4.4421449"
+ id="tspan5055"
+ sodipodi:role="line">Statement Public Affairs Module</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.93889px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="4.4421449"
+ y="306.66553"
+ id="text5061"><tspan
+ sodipodi:role="line"
+ id="tspan5059"
+ x="4.4421449"
+ y="306.66553"
+ style="font-size:4.93889px;stroke-width:0.264583">Container diagram: Statement Public Affairs Module</tspan></text>
+ </g>
+ </g>
+ <style
+ id="style483"
+ type="text/css"><![CDATA[
+ .st1 {fill:#08427b;stroke:#073b6f;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st2 {fill:#ffffff;font-family:Calibri;font-size:0.833336em}
+ .st3 {font-size:0.599989em}
+ .st4 {font-size:0.799995em}
+ .st5 {fill:#1168bd;stroke:#1864ad;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st6 {fill:#438dd5;stroke:#3d81c3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st7 {fill:#85bbf0;stroke:#78a8d8;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st8 {fill:#000000;font-family:Calibri;font-size:0.833336em}
+ .st9 {fill:#438dd5}
+ .st10 {stroke:#3d81c3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st11 {fill:#3d81c3;stroke:#3d81c3;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st12 {stroke:#408dd5;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st13 {fill:#408dd5;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st14 {fill:#438dd5;stroke:#3d81c3;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.283465}
+ .st15 {marker-end:url(#mrkr13-73);stroke:#444444;stroke-dasharray:5.25,3.75;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st16 {fill:#444444;fill-opacity:1;stroke:#444444;stroke-opacity:1;stroke-width:0.22935779816514}
+ .st17 {fill:#ffffff;stroke:none;stroke-linecap:butt;stroke-width:7.2}
+ .st18 {fill:#000000;font-family:Calibri;font-size:0.666664em}
+ .st19 {font-size:0.749991em}
+ .st20 {fill:none;stroke:#444444;stroke-dasharray:7.5,4.5;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5}
+ .st21 {font-size:1em}
+ .st22 {fill:#999999;stroke:#8b8b8b;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st23 {fill:#999999}
+ .st24 {stroke:#8b8b8b;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st25 {fill:#8b8b8b;stroke:#8b8b8b;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st26 {stroke:#999999;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st27 {fill:#999999;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st28 {fill:#999999;stroke:#8b8b8b;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.283465}
+ .st29 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+ ]]></style>
+</svg>
diff --git a/src/main/asciidoc/images/architecture-feature-modules-diag.svg b/src/main/asciidoc/images/architecture-feature-modules-diag.svg
new file mode 100644
index 0000000..ccbdcef
--- /dev/null
+++ b/src/main/asciidoc/images/architecture-feature-modules-diag.svg
@@ -0,0 +1,1513 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="226.08469mm"
+ height="176.70599mm"
+ viewBox="0 0 226.08468 176.70599"
+ version="1.1"
+ id="svg8"
+ inkscape:version="1.0 (4035a4f, 2020-05-01)"
+ sodipodi:docname="architecture-feature-modules-diag.svg"
+ inkscape:export-filename="/Users/tobiass/Work/repos/org.eclipse.openk/src/main/asciidoc/images/architecture-backend-component-diag.png"
+ inkscape:export-xdpi="300"
+ inkscape:export-ydpi="300">
+ <defs
+ id="defs2">
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker13917"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path13915" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker13483"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path13481" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker13069"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path13067"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker12657"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path12655" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker12253"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path12251" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker11869"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path11867"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker11487"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path11485" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker11029"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path11027" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker10663"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path10661"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker10305"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path10303" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker9949"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path9947" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker9601"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path9599"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker9267"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path9265" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker8893"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path8891"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker8563"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path8561" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6492"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6490"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6174"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6172"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5946"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path5944" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5636"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path5634" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5071"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path5069" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4869"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4867" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4673"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4671" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4489"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4487" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4297"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4295" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4125"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4123" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3953"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3951" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3787"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3785" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3633"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3631" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3479"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3477" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3337"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3335" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3201"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3199" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3059"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3057" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2924"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2922" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2806"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2804" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2688"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2686" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2582"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2580" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2353"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2351" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2253"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2251" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4845"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4843"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4667"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4665"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4501"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4499" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4195"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4193" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker3907"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path3905"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3774"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3772" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker3306"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path3304"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2976"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(1.1,0,0,1.1,1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2961"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2958"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(0.8,0,0,0.8,10,0)" />
+ </marker>
+ <g
+ id="lend13">
+ <path
+ id="path485"
+ d="M 3,1 0,0 3,-1 v 2" />
+ </g>
+ <marker
+ v:setback="13.08"
+ v:arrowType="13"
+ v:arrowSize="2"
+ refX="-13.08"
+ orient="auto"
+ overflow="visible"
+ class="st16"
+ id="mrkr13-73">
+ <use
+ height="100%"
+ width="100%"
+ y="0"
+ x="0"
+ id="use488"
+ xlink:href="#lend13"
+ transform="scale(-4.36)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ lock-margins="true"
+ fit-margin-bottom="5"
+ fit-margin-right="5"
+ fit-margin-left="5"
+ fit-margin-top="5"
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.012555"
+ inkscape:cx="207.00141"
+ inkscape:cy="317.22197"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ inkscape:document-rotation="0"
+ showgrid="false"
+ showguides="false"
+ inkscape:window-width="2572"
+ inkscape:window-height="1805"
+ inkscape:window-x="1333"
+ inkscape:window-y="90"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(31.155598,-98.920647)"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker10305)"
+ d="m 82.133707,189.67611 24.853743,25.31801"
+ id="path10301" />
+ <path
+ id="path10659"
+ d="m 125.97111,189.39529 -0.1658,25.70754"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker10663)"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker11029)"
+ d="m 170.93487,189.65659 -25.3868,25.33753"
+ id="path11025" />
+ <g
+ transform="translate(88.762032,-4.1808429)"
+ id="g8202">
+ <g
+ transform="translate(42.551893,19.664472)"
+ id="g8148">
+ <rect
+ y="167.94853"
+ x="-24.326479"
+ height="16.278662"
+ width="38.560619"
+ id="rect8138"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.124518" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="-5.068717"
+ y="175.23189"
+ id="text8146"><tspan
+ sodipodi:role="line"
+ x="-5.0687165"
+ y="175.23189"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ id="tspan8140">Statement Info</tspan><tspan
+ id="tspan8142"
+ sodipodi:role="line"
+ x="-5.0687165"
+ y="179.50763"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034">Form Module</tspan><tspan
+ sodipodi:role="line"
+ x="-5.068717"
+ y="183.00319"
+ style="font-size:2.56545px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ id="tspan8144" /></text>
+ </g>
+ <g
+ id="g8164"
+ transform="translate(86.932913,19.664472)">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.124518"
+ id="rect8154"
+ width="38.560619"
+ height="16.278662"
+ x="-24.326479"
+ y="167.94853" />
+ <text
+ id="text8162"
+ y="175.22353"
+ x="-5.1630845"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ id="tspan8156"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="175.22353"
+ x="-5.163085"
+ sodipodi:role="line">Statement Editor</tspan><tspan
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="179.49927"
+ x="-5.163084"
+ sodipodi:role="line"
+ id="tspan8158">Form Module</tspan><tspan
+ id="tspan8160"
+ style="font-size:2.56545px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="182.99483"
+ x="-5.1630845"
+ sodipodi:role="line" /></text>
+ </g>
+ <g
+ transform="translate(-1.8291187,19.664472)"
+ id="g8176">
+ <rect
+ y="167.94853"
+ x="-24.326479"
+ height="16.278662"
+ width="38.560619"
+ id="rect8166"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.124518" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="-4.973515"
+ y="175.23189"
+ id="text8174"><tspan
+ sodipodi:role="line"
+ x="-4.973515"
+ y="175.23189"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ id="tspan8168">Workflow Data</tspan><tspan
+ id="tspan8170"
+ sodipodi:role="line"
+ x="-4.9735146"
+ y="179.50763"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034">Form Module</tspan><tspan
+ sodipodi:role="line"
+ x="-4.973515"
+ y="183.00319"
+ style="font-size:2.56545px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ id="tspan8172" /></text>
+ </g>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="81.385109"
+ y="142.78859"
+ id="text3757"><tspan
+ id="tspan3755"
+ sodipodi:role="line"
+ x="81.385109"
+ y="142.78859"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034" /></text>
+ <text
+ id="text5061"
+ y="270.00845"
+ x="-26.447886"
+ style="font-style:normal;font-weight:normal;font-size:2.99302px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.99302px;stroke-width:0.16034"
+ y="270.00845"
+ x="-26.447886"
+ id="tspan5059"
+ sodipodi:role="line">Block diagram: Statement Public Affairs Module - Feature Modules</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker5946)"
+ d="M -4.9827532,163.40926 -15.861965,242.94517"
+ id="path5942" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="-12.493497"
+ y="194.09033"
+ id="text5946"><tspan
+ id="tspan5944"
+ sodipodi:role="line"
+ x="-12.493497"
+ y="194.09033"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ <g
+ transform="translate(42.551893,-42.158206)"
+ id="g7690">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.124518"
+ id="rect6099"
+ width="38.560619"
+ height="16.278662"
+ x="-24.326479"
+ y="167.94853" />
+ <text
+ id="text6107"
+ y="175.23091"
+ x="-5.1296802"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ id="tspan6101"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="175.23091"
+ x="-5.1296806"
+ sodipodi:role="line">Dashboard Module</tspan><tspan
+ style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="178.96074"
+ x="-5.1296806"
+ sodipodi:role="line"
+ id="tspan7683">(Routing Module)</tspan><tspan
+ id="tspan6105"
+ style="font-size:2.56545px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="182.25426"
+ x="-5.1296802"
+ sodipodi:role="line" /></text>
+ </g>
+ <rect
+ y="103.92065"
+ x="-25.894291"
+ height="15.756056"
+ width="126.98909"
+ id="rect5723"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.22231" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="37.516743"
+ y="112.74485"
+ id="text5729"><tspan
+ sodipodi:role="line"
+ x="37.516743"
+ y="112.74485"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ id="tspan5727">Navigation Module</tspan></text>
+ <g
+ transform="translate(-1.8291187,-42.158206)"
+ id="g7714">
+ <rect
+ y="167.94853"
+ x="-24.326479"
+ height="16.278662"
+ width="38.560619"
+ id="rect7704"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.124518" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="-5.1296802"
+ y="175.23091"
+ id="text7712"><tspan
+ sodipodi:role="line"
+ x="-5.1296802"
+ y="175.23091"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ id="tspan7706">Settings Module</tspan><tspan
+ id="tspan7708"
+ sodipodi:role="line"
+ x="-5.1296806"
+ y="178.96074"
+ style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034">(Routing Module)</tspan><tspan
+ sodipodi:role="line"
+ x="-5.1296802"
+ y="182.25426"
+ style="font-size:2.56545px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ id="tspan7710" /></text>
+ </g>
+ <g
+ id="g7738"
+ transform="translate(-1.8291187,-20.901905)">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.124518"
+ id="rect7728"
+ width="38.560619"
+ height="16.278662"
+ x="-24.326479"
+ y="167.94853" />
+ <text
+ id="text7736"
+ y="175.23091"
+ x="-5.1296802"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ id="tspan7730"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="175.23091"
+ x="-5.1296806"
+ sodipodi:role="line">Search Module</tspan><tspan
+ style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="178.96074"
+ x="-5.1296806"
+ sodipodi:role="line"
+ id="tspan7732">(Routing Module)</tspan><tspan
+ id="tspan7734"
+ style="font-size:2.56545px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="182.25426"
+ x="-5.1296802"
+ sodipodi:role="line" /></text>
+ </g>
+ <g
+ id="g7762"
+ transform="translate(86.932913,-42.158206)">
+ <rect
+ y="167.94853"
+ x="-24.326479"
+ height="16.278662"
+ width="38.560619"
+ id="rect7752"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.124518" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="-5.1296802"
+ y="175.23091"
+ id="text7760"><tspan
+ sodipodi:role="line"
+ x="-5.1296797"
+ y="175.23091"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ id="tspan7754">Mail Module</tspan><tspan
+ id="tspan7756"
+ sodipodi:role="line"
+ x="-5.1296806"
+ y="178.96074"
+ style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034">(Routing Module)</tspan><tspan
+ sodipodi:role="line"
+ x="-5.1296802"
+ y="182.25426"
+ style="font-size:2.56545px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ id="tspan7758" /></text>
+ </g>
+ <g
+ id="g7774"
+ transform="translate(86.932913,-20.901905)">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.124518"
+ id="rect7764"
+ width="38.560619"
+ height="16.278662"
+ x="-24.326479"
+ y="167.94853" />
+ <text
+ id="text7772"
+ y="173.05965"
+ x="-5.1772804"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ id="tspan7766"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="173.05965"
+ x="-5.1772799"
+ sodipodi:role="line">New Statement</tspan><tspan
+ id="tspan7788"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="177.33539"
+ x="-5.1772804"
+ sodipodi:role="line">Module</tspan><tspan
+ style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="181.06522"
+ x="-5.1772809"
+ sodipodi:role="line"
+ id="tspan7768">(Routing Module)</tspan><tspan
+ id="tspan7770"
+ style="font-size:2.56545px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="184.35872"
+ x="-5.1772804"
+ sodipodi:role="line" /></text>
+ </g>
+ <g
+ transform="translate(42.551893,-20.901905)"
+ id="g7786">
+ <rect
+ y="167.94853"
+ x="-24.326479"
+ height="16.278662"
+ width="38.560619"
+ id="rect7776"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.124518" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="-5.1296802"
+ y="175.23091"
+ id="text7784"><tspan
+ sodipodi:role="line"
+ x="-5.1296802"
+ y="175.23091"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ id="tspan7778">Edit Module</tspan><tspan
+ id="tspan7780"
+ sodipodi:role="line"
+ x="-5.1296806"
+ y="178.96074"
+ style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034">(Routing Module)</tspan><tspan
+ sodipodi:role="line"
+ x="-5.1296802"
+ y="182.25426"
+ style="font-size:2.56545px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ id="tspan7782" /></text>
+ </g>
+ <g
+ transform="translate(131.31393,47.574816)"
+ id="g7800">
+ <rect
+ y="167.94853"
+ x="-24.326479"
+ height="16.278662"
+ width="38.560619"
+ id="rect7790"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.124518" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="-5.1296797"
+ y="175.23091"
+ id="text7798"><tspan
+ sodipodi:role="line"
+ x="-5.1296792"
+ y="175.23091"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ id="tspan7792">Details Module</tspan><tspan
+ id="tspan7794"
+ sodipodi:role="line"
+ x="-5.1296802"
+ y="178.96074"
+ style="font-size:2.82222px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034">(Routing Module)</tspan><tspan
+ sodipodi:role="line"
+ x="-5.1296797"
+ y="182.25426"
+ style="font-size:2.56545px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ id="tspan7796" /></text>
+ </g>
+ <g
+ id="g8102"
+ transform="translate(175.69495,75.279456)">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.124518"
+ id="rect8092"
+ width="38.560619"
+ height="16.278662"
+ x="-24.326479"
+ y="167.94853" />
+ <text
+ id="text8100"
+ y="175.22353"
+ x="-4.9200683"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ id="tspan8094"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="175.22353"
+ x="-4.9200683"
+ sodipodi:role="line">Attachments Form</tspan><tspan
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="179.49927"
+ x="-4.9200683"
+ sodipodi:role="line"
+ id="tspan8096">Module</tspan><tspan
+ id="tspan8098"
+ style="font-size:2.56545px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="182.99483"
+ x="-4.9200683"
+ sodipodi:role="line" /></text>
+ </g>
+ <g
+ transform="translate(42.551893,75.279456)"
+ id="g8114">
+ <rect
+ y="167.94853"
+ x="-24.326479"
+ height="16.278662"
+ width="38.560619"
+ id="rect8104"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.124518" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="-5.1296802"
+ y="175.23091"
+ id="text8112"><tspan
+ sodipodi:role="line"
+ x="-5.1296806"
+ y="175.23091"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ id="tspan8106">Comments Form</tspan><tspan
+ id="tspan8108"
+ sodipodi:role="line"
+ x="-5.1296802"
+ y="179.50665"
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034">Module</tspan><tspan
+ sodipodi:role="line"
+ x="-5.1296802"
+ y="183.00221"
+ style="font-size:2.56545px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ id="tspan8110" /></text>
+ </g>
+ <g
+ id="g8134"
+ transform="translate(-1.8291187,75.279456)">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.124518"
+ id="rect8124"
+ width="38.560619"
+ height="16.278662"
+ x="-24.326479"
+ y="167.94853" />
+ <text
+ id="text8132"
+ y="177.04323"
+ x="-5.1296797"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="177.04323"
+ x="-5.1296797"
+ sodipodi:role="line"
+ id="tspan8128">Map Module</tspan><tspan
+ id="tspan8130"
+ style="font-size:2.56545px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.16034"
+ y="180.53879"
+ x="-5.1296797"
+ sodipodi:role="line" /></text>
+ </g>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8563)"
+ d="m 88.143668,162.88665 37.723082,20.4815"
+ id="path8553" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="116.33952"
+ y="181.92723"
+ id="text8557"><tspan
+ id="tspan8555"
+ sodipodi:role="line"
+ x="116.33952"
+ y="181.92723"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ <path
+ id="path8883"
+ d="M 41.370489,163.40926 170.28821,183.10685"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker8893)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text8887"
+ y="177.69388"
+ x="153.38121"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="177.69388"
+ x="153.38121"
+ sodipodi:role="line"
+ id="tspan8885">uses</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker9267)"
+ d="m 41.370489,163.40926 72.737641,19.95889"
+ id="path9263" />
+ <path
+ id="path9597"
+ d="m 41.370489,163.40926 37.723082,20.22019"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker9601)"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker9949)"
+ d="m 37.137153,163.40926 0.0955,79.27459"
+ id="path9945" />
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker11487)"
+ d="m 171.43778,200.37 -0.42711,42.16961"
+ id="path11483" />
+ <path
+ id="path11865"
+ d="m 171.43778,200.37 -0.42711,42.16961"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker11869)"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker12253)"
+ d="m 145.54807,199.71082 18.66873,42.56749"
+ id="path12249" />
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker12657)"
+ d="m 127.80023,231.85988 23.56824,11.36811"
+ id="path12653" />
+ <path
+ id="path13065"
+ d="M 106.98745,231.802 0.59682818,242.70539"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker13069)"
+ sodipodi:nodetypes="cc" />
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker13483)"
+ d="M 120.48375,231.85988 56.786033,243.22799"
+ id="path13479" />
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker13917)"
+ d="m 74.324615,199.92307 -81.71991,43.0221"
+ id="path13913" />
+ <text
+ id="text14749"
+ y="194.09033"
+ x="41.481503"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="194.09033"
+ x="41.481503"
+ sodipodi:role="line"
+ id="tspan14747">uses</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="9.7315035"
+ y="231.13203"
+ id="text14753"><tspan
+ id="tspan14751"
+ sodipodi:role="line"
+ x="9.7315035"
+ y="231.13203"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ <text
+ id="text14757"
+ y="236.42371"
+ x="46.77317"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="236.42371"
+ x="46.77317"
+ sodipodi:role="line"
+ id="tspan14755">uses</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="83.814835"
+ y="241.71538"
+ id="text14761"><tspan
+ id="tspan14759"
+ sodipodi:role="line"
+ x="83.814835"
+ y="241.71538"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ <text
+ id="text14765"
+ y="239.59874"
+ x="136.73151"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="239.59874"
+ x="136.73151"
+ sodipodi:role="line"
+ id="tspan14763">uses</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="152.60652"
+ y="229.0154"
+ id="text14769"><tspan
+ id="tspan14767"
+ sodipodi:role="line"
+ x="152.60652"
+ y="229.0154"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ <text
+ id="text14773"
+ y="229.0154"
+ x="175.36069"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="229.0154"
+ x="175.36069"
+ sodipodi:role="line"
+ id="tspan14771">uses</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="158.42758"
+ y="207.84871"
+ id="text14777"><tspan
+ id="tspan14775"
+ sodipodi:role="line"
+ x="158.42758"
+ y="207.84871"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ <text
+ id="text14781"
+ y="207.84871"
+ x="131.96922"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="207.84871"
+ x="131.96922"
+ sodipodi:role="line"
+ id="tspan14779">uses</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="105.51089"
+ y="207.84871"
+ id="text14785"><tspan
+ id="tspan14783"
+ sodipodi:role="line"
+ x="105.51089"
+ y="207.84871"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ <text
+ id="text14789"
+ y="178.74448"
+ x="61.060905"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="178.74448"
+ x="61.060905"
+ sodipodi:role="line"
+ id="tspan14787">uses</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="85.931732"
+ y="178.74448"
+ id="text14793"><tspan
+ id="tspan14791"
+ sodipodi:role="line"
+ x="85.931732"
+ y="178.74448"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ </g>
+ <style
+ id="style483"
+ type="text/css"><![CDATA[
+ .st1 {fill:#08427b;stroke:#073b6f;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st2 {fill:#ffffff;font-family:Calibri;font-size:0.833336em}
+ .st3 {font-size:0.599989em}
+ .st4 {font-size:0.799995em}
+ .st5 {fill:#1168bd;stroke:#1864ad;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st6 {fill:#438dd5;stroke:#3d81c3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st7 {fill:#85bbf0;stroke:#78a8d8;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st8 {fill:#000000;font-family:Calibri;font-size:0.833336em}
+ .st9 {fill:#438dd5}
+ .st10 {stroke:#3d81c3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st11 {fill:#3d81c3;stroke:#3d81c3;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st12 {stroke:#408dd5;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st13 {fill:#408dd5;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st14 {fill:#438dd5;stroke:#3d81c3;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.283465}
+ .st15 {marker-end:url(#mrkr13-73);stroke:#444444;stroke-dasharray:5.25,3.75;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st16 {fill:#444444;fill-opacity:1;stroke:#444444;stroke-opacity:1;stroke-width:0.22935779816514}
+ .st17 {fill:#ffffff;stroke:none;stroke-linecap:butt;stroke-width:7.2}
+ .st18 {fill:#000000;font-family:Calibri;font-size:0.666664em}
+ .st19 {font-size:0.749991em}
+ .st20 {fill:none;stroke:#444444;stroke-dasharray:7.5,4.5;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5}
+ .st21 {font-size:1em}
+ .st22 {fill:#999999;stroke:#8b8b8b;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st23 {fill:#999999}
+ .st24 {stroke:#8b8b8b;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st25 {fill:#8b8b8b;stroke:#8b8b8b;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st26 {stroke:#999999;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
+ .st27 {fill:#999999;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st28 {fill:#999999;stroke:#8b8b8b;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.283465}
+ .st29 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+ ]]></style>
+</svg>
diff --git a/src/main/asciidoc/images/architecture-frontend-component-diag.svg b/src/main/asciidoc/images/architecture-frontend-component-diag.svg
new file mode 100644
index 0000000..8f43049
--- /dev/null
+++ b/src/main/asciidoc/images/architecture-frontend-component-diag.svg
@@ -0,0 +1,1130 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="204.35323mm"
+ height="224.67267mm"
+ viewBox="0 0 204.35322 224.67267"
+ version="1.1"
+ id="svg8"
+ inkscape:version="1.0 (4035a4f, 2020-05-01)"
+ sodipodi:docname="architecture-frontend-component-diag.svg"
+ inkscape:export-filename="/Users/tobiass/Work/repos/org.eclipse.openk/src/main/asciidoc/images/architecture-backend-component-diag.png"
+ inkscape:export-xdpi="300"
+ inkscape:export-ydpi="300">
+ <defs
+ id="defs2">
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6492"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6490"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6174"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6172"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5946"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path5944" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5636"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path5634" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker5299"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5297"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5071"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path5069" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4869"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4867" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4673"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4671" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4489"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4487" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4297"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4295" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4125"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4123" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3953"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3951" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3787"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3785" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3633"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3631" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3479"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3477" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3337"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3335" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3201"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3199" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3059"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3057" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2924"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2922" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2806"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2804" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2688"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2686" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2582"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2580" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2470"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2468" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2353"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2351" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker2253"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2251" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4845"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4843"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4667"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4665"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4501"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4499" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4195"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path4193" />
+ </marker>
+ <marker
+ inkscape:collect="always"
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4051"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4049"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker3907"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path3905"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3774"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
+ <path
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path3772" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker3306"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path3304"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2976"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(1.1,0,0,1.1,1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2961"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2958"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(0.8,0,0,0.8,10,0)" />
+ </marker>
+ <g
+ id="lend13">
+ <path
+ id="path485"
+ d="M 3,1 0,0 3,-1 v 2" />
+ </g>
+ <marker
+ v:setback="13.08"
+ v:arrowType="13"
+ v:arrowSize="2"
+ refX="-13.08"
+ orient="auto"
+ overflow="visible"
+ class="st16"
+ id="mrkr13-73">
+ <use
+ height="100%"
+ width="100%"
+ y="0"
+ x="0"
+ id="use488"
+ xlink:href="#lend13"
+ transform="scale(-4.36)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ lock-margins="true"
+ fit-margin-bottom="5"
+ fit-margin-right="5"
+ fit-margin-left="5"
+ fit-margin-top="5"
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.012555"
+ inkscape:cx="220.47947"
+ inkscape:cy="367.00788"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ inkscape:document-rotation="0"
+ showgrid="false"
+ showguides="false"
+ inkscape:window-width="2572"
+ inkscape:window-height="1805"
+ inkscape:window-x="1182"
+ inkscape:window-y="72"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(34.721669,-75.296017)"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <g
+ id="g2013"
+ transform="matrix(0.60601135,0,0,0.60601135,-55.432885,293.65828)">
+ <g
+ transform="translate(61.406131,-69.767817)"
+ id="g2006">
+ <rect
+ style="fill:#999999;fill-opacity:1;stroke-width:0.264583"
+ id="rect1998"
+ width="63.630196"
+ height="44.540539"
+ x="155.2043"
+ y="14.17335" />
+ <text
+ id="text2004"
+ y="38.018715"
+ x="186.97806"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ id="tspan2000"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="38.018715"
+ x="186.97806"
+ sodipodi:role="line">Configuration Files</tspan><tspan
+ id="tspan2002"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="43.786865"
+ x="186.97806"
+ sodipodi:role="line" /></text>
+ </g>
+ </g>
+ <g
+ id="g2912"
+ transform="matrix(0.60601135,0,0,0.60601135,61.943973,117.57042)">
+ <rect
+ y="234.97412"
+ x="105.81809"
+ height="44.540539"
+ width="63.630196"
+ id="rect2894"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="137.84128"
+ y="256.07874"
+ id="text2900"><tspan
+ sodipodi:role="line"
+ x="137.84128"
+ y="256.07874"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2896">API Application</tspan><tspan
+ sodipodi:role="line"
+ x="137.84128"
+ y="261.84689"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2898">[Web Application]</tspan></text>
+ </g>
+ <g
+ id="g2924"
+ transform="matrix(0.60601135,0,0,0.60601135,-105.66832,293.65828)">
+ <g
+ id="g2922"
+ transform="translate(61.406131,-69.767817)">
+ <rect
+ y="14.17335"
+ x="155.22668"
+ height="44.540539"
+ width="63.630196"
+ id="rect2914"
+ style="fill:#999999;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ x="187.07486"
+ y="38.545128"
+ id="text2920"><tspan
+ sodipodi:role="line"
+ x="187.07486"
+ y="38.545128"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2916">Geocoder API</tspan><tspan
+ sodipodi:role="line"
+ x="187.07486"
+ y="44.313278"
+ style="font-size:4.23333px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ id="tspan2918" /></text>
+ </g>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="81.385109"
+ y="142.78859"
+ id="text3757"><tspan
+ id="tspan3755"
+ sodipodi:role="line"
+ x="81.385109"
+ y="142.78859"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034" /></text>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.479593;stroke-miterlimit:4;stroke-dasharray:0.479593, 1.43879;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect5017"
+ width="149.85744"
+ height="114.09215"
+ x="-29.481873"
+ y="124.32914"
+ ry="1.9475914" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.56545px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="-26.561893"
+ y="236.14894"
+ id="text5057"><tspan
+ sodipodi:role="line"
+ id="tspan5055"
+ x="-26.561893"
+ y="236.14894"
+ style="font-size:2.56545px;stroke-width:0.16034">Front-end Container</tspan></text>
+ <text
+ id="text5061"
+ y="294.35049"
+ x="-29.889734"
+ style="font-style:normal;font-weight:normal;font-size:2.99302px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.99302px;stroke-width:0.16034"
+ y="294.35049"
+ x="-29.889734"
+ id="tspan5059"
+ sodipodi:role="line">Component diagram: Statement Public Affairs Module - Front-end</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4297)"
+ d="M 45.292342,100.69662 45.91044,129.8011"
+ id="path5887" />
+ <text
+ id="text5893"
+ y="119.94596"
+ x="54.139847"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="119.94596"
+ x="54.139847"
+ sodipodi:role="line"
+ id="tspan5891">interacts</tspan></text>
+ <g
+ id="g5940"
+ transform="translate(-49.386206,37.627586)">
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3059)"
+ d="m 113.54688,119.46673 30.87468,10.59568"
+ id="path5934" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="142.93573"
+ y="122.46062"
+ id="text5938"><tspan
+ id="tspan5936"
+ sodipodi:role="line"
+ x="142.93573"
+ y="122.46062"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">subscribes to data, </tspan><tspan
+ id="tspan7021"
+ sodipodi:role="line"
+ x="142.93573"
+ y="125.13296"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">dispatches actions</tspan></text>
+ </g>
+ <g
+ transform="translate(-49.386206,74.993869)"
+ id="g5948">
+ <path
+ id="path5942"
+ d="m 144.32606,119.77171 0.0955,10.2907"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker5946)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text5946"
+ y="125.10642"
+ x="147.69817"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="125.10642"
+ x="147.69817"
+ sodipodi:role="line"
+ id="tspan5944">uses</tspan></text>
+ </g>
+ <path
+ id="path5950"
+ d="M 75.603456,182.22305 14.292826,216.2923"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker2470)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text5954"
+ y="208.56693"
+ x="23.251328"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="208.56693"
+ x="23.251328"
+ sodipodi:role="line"
+ id="tspan5952">uses</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker2353)"
+ d="M 85.79426,232.26251 46.433056,259.92984"
+ id="path6014" />
+ <path
+ id="path6030"
+ d="m 94.939854,232.78512 0.0955,26.62212"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4051)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text6034"
+ y="246.04419"
+ x="100.40237"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ id="tspan6075"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="246.04419"
+ x="100.40237"
+ sodipodi:role="line">imports</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker2253)"
+ d="m 103.82582,233.04642 40.33611,26.36082"
+ id="path6064" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="136.26529"
+ y="244.99898"
+ id="text6081"><tspan
+ id="tspan6077"
+ sodipodi:role="line"
+ x="136.26529"
+ y="244.99898"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan><tspan
+ sodipodi:role="line"
+ x="136.26529"
+ y="247.67131"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ id="tspan6079">[HTTPS/JSON]</tspan></text>
+ <path
+ id="path6115"
+ d="M 25.600058,157.09431 -6.1297446,168.07923"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker5071)"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="8.5741739"
+ y="160.32372"
+ id="text6123"><tspan
+ id="tspan6121"
+ sodipodi:role="line"
+ x="8.5741739"
+ y="160.32372"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ <g
+ transform="translate(143.93437,82.964176)"
+ id="g2242">
+ <path
+ d="m -99.092833,-2.6681325 a 7.11475,7.11475 0 0 0 -7.075647,7.1144827 7.11475,7.11475 0 0 0 2.2313,5.1744269 h -6.67731 c -2.38883,0 -4.31197,1.9231379 -4.31197,4.3119699 v 10.995537 c 0,2.388832 1.92314,4.31197 4.31197,4.31197 h 23.120976 c 2.388836,0 4.31197,-1.923138 4.31197,-4.31197 V 13.932747 c 0,-2.388832 -1.923134,-4.3119699 -4.31197,-4.3119699 h -6.677305 a 7.11475,7.11475 0 0 0 2.231615,-5.1744269 7.11475,7.11475 0 0 0 -7.114797,-7.1144827 7.11475,7.11475 0 0 0 -0.03883,0 z"
+ style="fill:#08427b;fill-opacity:1;fill-rule:evenodd;stroke-width:0.16034"
+ id="rect1768" />
+ <text
+ id="text1777"
+ y="14.252246"
+ x="-99.170914"
+ style="font-style:normal;font-weight:normal;font-size:3.35005px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.0837514"
+ xml:space="preserve"><tspan
+ style="font-size:3.42059px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.0837514"
+ y="14.252246"
+ x="-99.170914"
+ id="tspan1775"
+ sodipodi:role="line">SPA User</tspan><tspan
+ id="tspan1779"
+ style="font-size:2.56545px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.0837514"
+ y="18.463627"
+ x="-99.170914"
+ sodipodi:role="line">[Person]</tspan></text>
+ </g>
+ <text
+ id="text2461"
+ y="244.99898"
+ x="55.831978"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="244.99898"
+ x="55.831978"
+ sodipodi:role="line"
+ id="tspan2457">uses</tspan><tspan
+ id="tspan2459"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="247.67131"
+ x="55.831978"
+ sodipodi:role="line">[HTTPS/JSON]</tspan></text>
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker5299)"
+ d="m 37.346984,156.57003 -23.16044,49.2248"
+ id="path5289" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="33.141308"
+ y="176.799"
+ id="text5293"><tspan
+ id="tspan5291"
+ sodipodi:role="line"
+ x="33.141308"
+ y="176.799"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ <path
+ id="path5632"
+ d="m 50.934723,156.04742 24.900772,49.74742"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker5636)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text5936"
+ y="176.799"
+ x="64.891312"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="176.799"
+ x="64.891312"
+ sodipodi:role="line"
+ id="tspan5934">uses</tspan></text>
+ <g
+ id="g6170"
+ transform="translate(-149.92791,74.993869)">
+ <path
+ sodipodi:nodetypes="cc"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker6174)"
+ d="m 144.32606,119.77171 0.0955,10.2907"
+ id="path6164" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ x="147.69817"
+ y="125.10642"
+ id="text6168"><tspan
+ id="tspan6166"
+ sodipodi:role="line"
+ x="147.69817"
+ y="125.10642"
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034">uses</tspan></text>
+ </g>
+ <g
+ transform="translate(-88.581608,79.95862)"
+ id="g6488">
+ <path
+ id="path6482"
+ d="m 103.04024,103.30964 61.50163,34.59186"
+ style="fill:none;stroke:#000000;stroke-width:0.303006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.909017, 0.909017;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker6492)"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text6486"
+ y="125.10642"
+ x="147.69817"
+ style="font-style:normal;font-weight:normal;font-size:2.13787px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16034"
+ xml:space="preserve"><tspan
+ style="font-size:2.13787px;text-align:center;text-anchor:middle;stroke-width:0.16034"
+ y="125.10642"
+ x="147.69817"
+ sodipodi:role="line"
+ id="tspan6484">uses</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.60601135,0,0,0.60601135,11.70853,25.55155)"
+ id="g5805">
+ <rect
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583"
+ id="rect5795"
+ width="63.630196"
+ height="44.540539"
+ x="105.81809"
+ y="234.97412" />
+ <text
+ id="text5803"
+ y="259.34589"
+ x="137.56567"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ id="tspan5801"
+ style="font-size:5.64444px;text-align:center;text-anchor:middle;fill:#ffffff;stroke-width:0.264583"
+ y="259.34589"
+ x="137.56567"
+ sodipodi:role="line">Store Modules</tspan></text>
+ </g>
+ <g
+ id="g5877"
+ transform="matrix(0.60601135,0,0,0.60601135,-88.501042,70.372197)">
+ <rect
+ y="223.46552"
+ x="105.95727"
+ height="44.540539"
+ width="63.630196"
+ id="rect5867"
+ style="fill:#438dd5;fill-opacity:1;stroke-width:0.264583" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583&quo