Task references: CICA-394
Reason: CIM Cache v2.20.0 - MS 5 - documentation, release and fixes
Rationale: none
Side effects: none

# Conflicts:
#	.gitignore
diff --git a/.gitignore b/.gitignore
index 9ce8af0..11c7b3a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,13 +1,19 @@
-*target/
-*.checkstyle
-*.classpath
-*.eclipse-pmd
-*.idea
-*.iml
-*.project
-*.settings/
-*.springBeans
-*.log
-*.versionsBackup
-*.fbExcludeFilterFile
-*.fbIncludeFilterFile
\ No newline at end of file
+**/*target/
+**/*.checkstyle
+**/*.classpath
+**/*.fbExcludeFilterFile
+**/*.fbIncludeFilterFile
+**/*.idea
+**/*.iml
+**/*.jdbc
+**/*.log
+**/*.project
+**/*.settings/
+**/*.springBeans
+**/*.versionsBackup
+**/launch.json
+**/node_modules/**
+**/package-lock.json
+bin/
+obj/
+.vs/
\ No newline at end of file
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..07b6ef7
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,65 @@
+pipeline {
+    agent any
+    tools { 
+        maven 'apache-maven-latest'
+        jdk 'jdk1.8.0-latest'
+    }
+    
+    stages {
+        stage ('prepare') {
+			steps {
+				cleanWs()
+				checkout scm
+			}
+        }
+        stage ('build') {
+            steps {
+                sh 'mvn -version'
+                sh 'java -version'
+                sh 'mvn -f dev/pom.xml -B clean install site -DskipTests'
+            }			
+        }
+
+        stage ('test') {
+            steps {
+                sh 'mvn -version'
+                sh 'java -version'
+                sh 'mvn -f dev/pom.xml -B test -Dcheckstyle.skip=true -Dfindbugs.skip=true -Dpmd.skip=true'
+                junit allowEmptyResults: true, testResults: '**/surefire-reports/TEST*.xml'
+                jacoco()
+            }			
+        }
+		
+		stage("Publish Checkstyle & PMD & Findbugs Results"){
+			steps {
+				checkstyle canComputeNew: false, defaultEncoding: '', healthy: '', pattern: '**/checkstyle-result*.xml', unHealthy: '', unstableTotalAll:'0'
+				pmd canComputeNew: false, defaultEncoding: '', healthy: '', pattern: '**/target/pmd.xml', unHealthy: ''
+				findbugs canComputeNew: false, defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', pattern: '**/findbugsXml.xml', unHealthy: ''
+			}
+		}
+		
+		stage("Publish Checkstyle & PMD & Findbugs Results"){
+			steps {
+				sh 'mvn -f dev/pom.xml -B clean install site -DskipTests'
+			}
+		}
+		
+		stage ('deploy snapshot') {
+			when {
+				 branch 'develop'
+			}
+			steps {
+                sh 'mvn  -f dev/pom.xml -B deploy -DskipTests -Dcheckstyle.skip=true -Dfindbugs.skip=true -Dpmd.skip=true -DaltDeploymentRepository=repo.eclipse.org::default::https://repo.eclipse.org/content/repositories/openk-platform-snapshots/'
+            }
+		}
+		
+		stage ('deploy release') {
+			when {
+				 branch 'master'
+			}
+			steps {
+                sh 'mvn  -f dev/pom.xml -B deploy -DskipTests -Dcheckstyle.skip=true -Dfindbugs.skip=true -Dpmd.skip=true -DaltDeploymentRepository=repo.eclipse.org::default::https://repo.eclipse.org/content/repositories/openk-platform-release/'
+            }
+		}
+    }
+}
\ No newline at end of file
diff --git a/dev/adapter/pom.xml b/dev/adapter/pom.xml
new file mode 100644
index 0000000..ea76220
--- /dev/null
+++ b/dev/adapter/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.eclipse.openk.domain.dynamic-topology</groupId>
+    <artifactId>dynamic-topology-adapter</artifactId>
+    <version>2.21.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>${project.groupId}.${project.artifactId}</name>
+
+    <parent>
+        <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+        <artifactId>build-parentpom-adapter</artifactId>
+        <version>2.20.0</version>
+        <relativePath></relativePath>
+    </parent>
+
+    <dependencies>
+        <!-- org.eclipse -->
+        <dependency>
+            <groupId>org.eclipse.openk.domain.dynamic-topology</groupId>
+            <artifactId>dynamic-topology-logic</artifactId>
+            <version>2.21.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.openk.domain.static-topology</groupId>
+            <artifactId>static-topology-adapter</artifactId>
+            <version>2.20.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.openk.domain.topology-state</groupId>
+            <artifactId>topology-state-adapter</artifactId>
+            <version>2.20.0</version>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/dev/adapter/src/main/java/.gitignore b/dev/adapter/src/main/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/adapter/src/main/java/.gitignore
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/mapper/Abstract_StaticTopology_OpenKonsequenz_Mapper.java b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/mapper/Abstract_StaticTopology_OpenKonsequenz_Mapper.java
new file mode 100644
index 0000000..2f6138c
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/mapper/Abstract_StaticTopology_OpenKonsequenz_Mapper.java
@@ -0,0 +1,399 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.adapter.mapper;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.Name;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.NameType;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.NameTypeAuthority;
+import org.eclipse.openk.common.key.Key;
+import org.eclipse.openk.common.key.OriginalKey;
+import org.eclipse.openk.common.key.OriginalKeyType;
+import org.eclipse.openk.common.string.StringUtilities;
+import org.eclipse.openk.common.value.MissingValueException;
+import org.eclipse.openk.common.value.parameter.NoParameters;
+import org.eclipse.openk.domain.statictopology.model.core.ConnectivityNode;
+import org.eclipse.openk.domain.statictopology.model.core.IEquipment;
+import org.eclipse.openk.domain.statictopology.model.core.IEquipmentContainer;
+import org.eclipse.openk.domain.statictopology.model.core.Terminal;
+import org.eclipse.openk.domain.statictopology.model.electricity.ConductingEquipment;
+import org.eclipse.openk.domain.statictopology.model.electricity.EquipmentContainer;
+import org.eclipse.openk.domain.statictopology.model.electricity.core.BaseVoltage;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.VoltageLevel;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.powertransformer.PowerTransformerEnd;
+import org.eclipse.openk.service.adapter.mapper.AbstractMapper;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.mapper.IMapper;
+import org.eclipse.openk.service.core.adapter.mapper.MapperConfiguration;
+import org.eclipse.openk.service.model.ModelUtilities;
+
+/**
+ * The base of all static-topology {@link IMapper}.
+ * 
+ * @author 2017-10-31 Felix Korb
+ * 
+ * @param <S>
+ *          the source model type
+ * @param <D>
+ *          the destination model type
+ */
+public abstract class Abstract_StaticTopology_OpenKonsequenz_Mapper<S, D> extends AbstractMapper<MapperConfiguration, S, D, NoParameters> {
+
+  // Constants
+  private static final String NAME = ".name";
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  protected Abstract_StaticTopology_OpenKonsequenz_Mapper(IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  /**
+   * Extract {@link BaseVoltage}.
+   * 
+   * @param <T>
+   *          the type of {@link ConductingEquipment}
+   * @param sourceItem
+   *          the {@link ConductingEquipment}; not <code>null</code>
+   * @return the {@link org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.BaseVoltage}; can be <code>null</code>
+   */
+  protected <T extends ConductingEquipment> org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.BaseVoltage extractBaseVoltage(T sourceItem) {
+
+    BaseVoltage sourceBaseVoltage;
+
+    sourceBaseVoltage = sourceItem.getBaseVoltage();
+
+    return toBaseVoltage(sourceBaseVoltage);
+  }
+
+  /**
+   * Extract {@link BaseVoltage}.
+   *
+   * @param sourceItem
+   *          not <code>null</code>
+   * @return the {@link org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.BaseVoltage}; can be <code>null</code>
+   * 
+   */
+  protected org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.BaseVoltage extractBaseVoltage(PowerTransformerEnd sourceItem) {
+
+    BaseVoltage sourceBaseVoltage;
+
+    sourceBaseVoltage = sourceItem.getBaseVoltage();
+
+    return toBaseVoltage(sourceBaseVoltage);
+  }
+
+  /**
+   * Extract {@link BaseVoltage}.
+   * 
+   * @param sourceItem
+   *          the source item; not <code>null</code>
+   * @return the base voltage; can be <code>null</code>
+   */
+  protected org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.BaseVoltage extractBaseVoltage(VoltageLevel sourceItem) {
+
+    BaseVoltage sourceBaseVoltage;
+
+    sourceBaseVoltage = sourceItem.getBaseVoltage();
+
+    return toBaseVoltage(sourceBaseVoltage);
+  }
+
+  /**
+   * Extract {@link org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.ConnectivityNode}.
+   *
+   * @param source
+   *          the source; can be <code>null</code>
+   * @return the connectivity node; can be <code>null</code>
+   */
+  private org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.ConnectivityNode extractConnectivityNode(Terminal source) {
+
+    ConnectivityNode connectivityNode;
+    org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.ConnectivityNode result;
+
+    if(source != null) {
+      connectivityNode = source.getConnectivityNode();
+      if((connectivityNode != null) && (connectivityNode.hasKey())) {
+        result = new org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.ConnectivityNode();
+        result.setMRID(ModelUtilities.extractIdentifierAsString(connectivityNode));
+        result.setName(connectivityNode.getName());
+      }
+      else
+        result = null;
+    }
+    else
+      result = null;
+
+    return result;
+  }
+
+  /**
+   * Extracts the specified {@link org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.Equipment}s.
+   * 
+   * @param equipments
+   *          the specified map of {@link Key} - {@link IEquipment} pairs; can be <code>null</code> or empty
+   * @return the list of {@link org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.Equipment}s; can be <code>null</code> or empty
+   */
+  protected List<org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.Equipment> extractEquipments(Map<Key, IEquipment> equipments) {
+
+    List<org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.Equipment> result = null;
+
+    if((equipments != null) && !equipments.isEmpty()) {
+      for(IEquipment equipment : equipments.values()) {
+
+        if(result == null)
+          result = new ArrayList<>();
+
+        org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.ConductingEquipment conductingEquipment = new org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.ConductingEquipment();
+        conductingEquipment.setMRID(ModelUtilities.extractIdentifierAsString(equipment));
+
+        result.add(conductingEquipment);
+      }
+    }
+
+    return result;
+  }
+
+  /**
+   * Extracts the original names from the specified <i>CIM 17v07</i> {@link Name}s.
+   * 
+   * @param names
+   *          the <i>CIM 17v07</i> {@link Name}s; can be <code>null</code> or empty
+   * @return the original keys of the source-system; can be <code>null</code> or empty
+   */
+  protected final List<Name> extractNames(Map<OriginalKeyType, OriginalKey> names) {
+
+    List<Name> result = new ArrayList<>();
+
+    if((names != null) && !names.isEmpty()) {
+
+      names.forEach((key, value) -> {
+
+        if((key == null) || (value == null)) {
+          if(key == null)
+            getLogger().warn(new MissingValueException("key"));
+          if(value == null)
+            getLogger().warn(new MissingValueException("value"));
+        }
+        else {
+          Name name = new Name();
+          name.setName(value.toString());
+          NameType nameType = new NameType();
+          nameType.setName(key.getName());
+          name.setNameType(nameType);
+          result.add(name);
+        }
+      });
+    }
+
+    if(result.isEmpty())
+      return null;
+
+    return result;
+  }
+
+  /**
+   * Extract {@link org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.GeographicalRegion}.
+   * 
+   * @param sourceItem
+   *          the {@link EquipmentContainer}; not <code>null</code>
+   * @return the geographical region; can be <code>null</code>
+   */
+  protected org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.GeographicalRegion extractGeographicalRegion(EquipmentContainer sourceItem) {
+
+    org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.GeographicalRegion result;
+    IEquipmentContainer equipmentContainer = sourceItem.getSuperEquipmentContainer();
+
+    if(equipmentContainer != null && equipmentContainer.hasKey()) {
+      result = new org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.GeographicalRegion();
+      result.setMRID(ModelUtilities.extractIdentifierAsString(equipmentContainer));
+    }
+    else
+      result = null;
+
+    return result;
+  }
+
+  /**
+   * Extract {@link org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.SubGeographicalRegion}.
+   * 
+   * @param sourceItem
+   *          the {@link EquipmentContainer}; not <code>null</code>
+   * @return the sub geographical region; can be <code>null</code>
+   */
+  protected org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.SubGeographicalRegion extractSubgeographicalRegion(EquipmentContainer sourceItem) {
+
+    org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.SubGeographicalRegion result;
+    IEquipmentContainer equipmentContainer = sourceItem.getSuperEquipmentContainer();
+
+    if(equipmentContainer != null && equipmentContainer.hasKey()) {
+      result = new org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.SubGeographicalRegion();
+      result.setMRID(ModelUtilities.extractIdentifierAsString(equipmentContainer));
+    }
+    else
+      result = null;
+
+    return result;
+  }
+
+  /**
+   * Extracts the {@link org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.Terminal} from the specified <i>CIM 17v07</i> {@link Terminal}s.
+   * 
+   * @param source
+   *          the <i>CIM 17v07</i> {@link Name}s; can be <code>null</code> or empty
+   * @return the original keys of the source-system; can be <code>null</code> or empty
+   */
+  protected org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.Terminal extractTerminal(Terminal source) {
+
+    org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.Terminal result;
+    if(source != null) {
+
+      result = new org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.Terminal();
+      result.setMRID(ModelUtilities.extractIdentifierAsString(source));
+    }
+    else
+      result = null;
+
+    return result;
+  }
+
+  /**
+   * Extracts the specified {@link Terminal}s.
+   * 
+   * @param terminals
+   *          the specified {@link Terminal}s; can be <code>null</code> or empty
+   * @return the destination {@link Terminal}s; not <code>null</code> but can be empty
+   */
+  protected List<org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.Terminal> extractTerminals(Map<Key, Terminal> terminals) {
+
+    List<org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.Terminal> result = new ArrayList<>();
+
+    if((terminals != null) && !terminals.isEmpty()) {
+
+      for(Terminal terminal : terminals.values()) {
+
+        org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.Terminal destinationTerminal = new org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.Terminal();
+        destinationTerminal.setMRID(ModelUtilities.extractIdentifierAsString(terminal));
+        destinationTerminal.setName(terminal.getName());
+        destinationTerminal.setConnectivityNode(extractConnectivityNode(terminal));
+
+        result.add(destinationTerminal);
+      }
+    }
+
+    return result;
+  }
+
+  /**
+   * Converts the specified {@link org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.BaseVoltage} to {@link BaseVoltage}.
+   *
+   * @param source
+   *          the {@link BaseVoltage}; can be <code>null</code>
+   * @return the {@link org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.BaseVoltage}; can be <code>null</code>
+   */
+  private org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.BaseVoltage toBaseVoltage(BaseVoltage source) {
+
+    org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.BaseVoltage result;
+
+    if(source != null) {
+      if(source.hasKey()) {
+        result = new org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.BaseVoltage();
+        result.setMRID(ModelUtilities.extractIdentifierAsString(source));
+      }
+      else
+        result = null;
+    }
+    else
+      result = null;
+    return result;
+  }
+
+  /**
+   * Converts the specified {@link Name} to an {@link OriginalKey}.
+   * 
+   * @param name
+   *          the {@link Name}; can be <code>null</code>
+   * @return the original key of the source-system; can be <code>null</code>
+   */
+  protected final OriginalKey toOriginalKey(Name name) {
+
+    OriginalKey result = null;
+
+    if((name != null) && StringUtilities.hasContent(name.getName())) {
+      OriginalKeyType originalKeyType;
+
+      originalKeyType = toOriginalKeyType(name.getNameType());
+
+      if(originalKeyType == null)
+        getLogger().warn(new MissingValueException("originalKeyType"));
+      else
+        result = new OriginalKey(originalKeyType, name.getName());
+    }
+
+    return result;
+  }
+
+  /**
+   * Converts the specified {@link NameType} to an {@link OriginalKeyType}.
+   * 
+   * @param nameType
+   *          the {@link NameType}; can be <code>null</code>
+   * @return the original key type of the source-system; can be <code>null</code>
+   */
+  protected final OriginalKeyType toOriginalKeyType(NameType nameType) {
+
+    OriginalKeyType result = null;
+
+    if(nameType != null) {
+      String authority;
+      String name;
+
+      /* authority */
+      if(nameType.getNameTypeAuthority() != null)
+        authority = nameType.getNameTypeAuthority().getName();
+      else
+        authority = null;
+
+      /* name */
+      name = nameType.getName();
+
+      if(!StringUtilities.hasContent(authority) || !StringUtilities.hasContent(name)) {
+        if(!StringUtilities.hasContent(authority))
+          getLogger().warn(new MissingValueException(NameTypeAuthority.class.getSimpleName() + NAME));
+        else
+          getLogger().warn(new MissingValueException(NameType.class.getSimpleName() + NAME));
+
+        result = null;
+      }
+      else
+        result = new OriginalKeyType(name, authority);
+    }
+
+    return result;
+  }
+}
\ No newline at end of file
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/mapper/PowerSystemResourceTypes_StaticTopology_Cim17v07_Mapper.java b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/mapper/PowerSystemResourceTypes_StaticTopology_Cim17v07_Mapper.java
new file mode 100644
index 0000000..e5697a6
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/mapper/PowerSystemResourceTypes_StaticTopology_Cim17v07_Mapper.java
@@ -0,0 +1,106 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.adapter.mapper;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.openk.cim.cim17v07.Cim17v07;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.PSRType;
+import org.eclipse.openk.cim.profile.openkonsequenz.OpenKonsequenz;
+import org.eclipse.openk.common.collection.CollectionUtilities;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.common.string.StringUtilities;
+import org.eclipse.openk.common.value.parameter.NoParameters;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.logic.core.query.StaticTopologyQueryUtilities;
+import org.eclipse.openk.domain.statictopology.model.StaticTopology;
+import org.eclipse.openk.domain.statictopology.model.core.ITopologicalResource;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.mapper.IMapper;
+import org.eclipse.openk.service.core.adapter.mapper.MapperInformation;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The {@link IMapper} for mapping from {@link IEntity}-{@link StaticTopology}-model-definitions to {@link PSRType}-{@link Cim17v07}-model-definitions.
+ * 
+ * @author 2017-11-09 Christian Brunzendorf
+ * @author 2018-07-22 Felix Korb
+ * @author 2017-10-26 Michael Korta
+ */
+@MapperInformation(scope = DynamicTopologyDefaults.SCOPE_POWER_SYSTEM_RESOURCE_TYPES, sourceModelDefinitionType = StaticTopology.class, destinationModelDefinitionType = OpenKonsequenz.class)
+public final class PowerSystemResourceTypes_StaticTopology_Cim17v07_Mapper extends Abstract_StaticTopology_OpenKonsequenz_Mapper<Collection<IEntity>, Collection<PSRType>> {
+
+  // Constants
+  private static final ILogger LOGGER = LoggerFactory.createLogger(PowerSystemResourceTypes_StaticTopology_Cim17v07_Mapper.class);
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public PowerSystemResourceTypes_StaticTopology_Cim17v07_Mapper(IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  public Collection<PSRType> map(Collection<IEntity> sourceModel, NoParameters mappingParameters) throws IllegalArgumentException, IOException {
+
+    Collection<PSRType> result;
+
+    if(!CollectionUtilities.hasContent(sourceModel))
+      result = null;
+    else {
+      PSRType psrType;
+      String psrTypeName;
+
+      result = new ArrayList<>(sourceModel.size());
+
+      for(IEntity entity : sourceModel) {
+        /* determine psr-type-name */
+        if(entity instanceof ITopologicalResource)
+          psrTypeName = StaticTopologyQueryUtilities.getTopologicalResourceTypeName(entity);
+        else
+          psrTypeName = null;
+
+        /* create psr-type & add it to the result */
+        if(StringUtilities.hasContent(psrTypeName)) {
+          psrType = new PSRType();
+          psrType.setName(psrTypeName);
+
+          result.add(psrType);
+        }
+      }
+    }
+
+    return result;
+  }
+
+  // Properties
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+}
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/mapper/PowerSystemResources_StaticTopology_Cim17v07_Mapper.java b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/mapper/PowerSystemResources_StaticTopology_Cim17v07_Mapper.java
new file mode 100644
index 0000000..40551d0
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/mapper/PowerSystemResources_StaticTopology_Cim17v07_Mapper.java
@@ -0,0 +1,208 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.adapter.mapper;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.openk.cim.cim17v07.Cim17v07;
+import org.eclipse.openk.common.dataexchange.cim.ICimEntity;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.common.model.IModelDefinition;
+import org.eclipse.openk.common.string.StringUtilities;
+import org.eclipse.openk.common.value.parameter.NoParameters;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.core.StaticTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.model.StaticTopology;
+import org.eclipse.openk.domain.statictopology.model.electricity.GeographicalRegion;
+import org.eclipse.openk.domain.statictopology.model.electricity.PowerSystemResource;
+import org.eclipse.openk.domain.statictopology.model.electricity.SubGeographicalRegion;
+import org.eclipse.openk.domain.statictopology.model.electricity.consumption.EnergyConsumer;
+import org.eclipse.openk.domain.statictopology.model.electricity.generation.EnergySource;
+import org.eclipse.openk.domain.statictopology.model.electricity.generation.Plant;
+import org.eclipse.openk.domain.statictopology.model.electricity.line.AcLineSegment;
+import org.eclipse.openk.domain.statictopology.model.electricity.line.Junction;
+import org.eclipse.openk.domain.statictopology.model.electricity.line.Line;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.Bay;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.BusbarSection;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.Substation;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.VoltageLevel;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.grounding.EarthFaultCompensator;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.grounding.GroundingImpedance;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.grounding.PetersenCoil;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.powertransformer.PowerTransformer;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.switches.Breaker;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.switches.Disconnector;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.switches.LoadBreakSwitch;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.switches.Switch;
+import org.eclipse.openk.service.adapter.IServiceAdapterController;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.mapper.IMapper;
+import org.eclipse.openk.service.core.adapter.mapper.MapperInformation;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The {@link IMapper} for mapping from {@link IEntity}-{@link StaticTopology}-model-definition to {@link Cim17v07}-model-definition.
+ * 
+ * @author 2017-11-07 Christian Brunzendorf
+ * @author 2017-10-27 Felix Korb
+ * @author 2017-10-26 Frank Jäger
+ * @author 2017-10-26 Michael Korta
+ * @author 2017-10-27 Renko Ortgies
+ */
+@MapperInformation(scope = DynamicTopologyDefaults.SCOPE_POWER_SYSTEM_RESOURCES, sourceModelDefinitionType = StaticTopology.class, destinationModelDefinitionType = Cim17v07.class)
+public final class PowerSystemResources_StaticTopology_Cim17v07_Mapper extends Abstract_StaticTopology_OpenKonsequenz_Mapper<Collection<? extends IEntity>, Collection<? extends ICimEntity>> {
+
+  // Constants
+  private static final ILogger LOGGER = LoggerFactory.createLogger(PowerSystemResources_StaticTopology_Cim17v07_Mapper.class);
+  private static final Map<Class<? extends PowerSystemResource>, MapperInfo> MAPPER_INFOS;
+
+  static {
+    Map<Class<? extends PowerSystemResource>, MapperInfo> result = new HashMap<>();
+
+    result.put(AcLineSegment.class, new MapperInfo(StaticTopologyDefaults.SCOPE_AC_LINE_SEGMENTS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(Breaker.class, new MapperInfo(StaticTopologyDefaults.SCOPE_BREAKERS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(BusbarSection.class, new MapperInfo(StaticTopologyDefaults.SCOPE_BUSBAR_SECTIONS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(Bay.class, new MapperInfo(StaticTopologyDefaults.SCOPE_BAYS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(Disconnector.class, new MapperInfo(StaticTopologyDefaults.SCOPE_DISCONNECTORS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(EarthFaultCompensator.class, new MapperInfo(StaticTopologyDefaults.SCOPE_EARTH_FAULT_COMPENSATORS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(EnergyConsumer.class, new MapperInfo(StaticTopologyDefaults.SCOPE_ENERGY_CONSUMERS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(EnergySource.class, new MapperInfo(StaticTopologyDefaults.SCOPE_ENERGY_SOURCES, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(GeographicalRegion.class, new MapperInfo(StaticTopologyDefaults.SCOPE_GEOGRAPHICAL_REGIONS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(GroundingImpedance.class, new MapperInfo(StaticTopologyDefaults.SCOPE_GROUNDING_IMPEDANCES, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(Junction.class, new MapperInfo(StaticTopologyDefaults.SCOPE_JUNCTIONS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(Line.class, new MapperInfo(StaticTopologyDefaults.SCOPE_LINES, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(LoadBreakSwitch.class, new MapperInfo(StaticTopologyDefaults.SCOPE_LOAD_BREAK_SWITCHES, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(PetersenCoil.class, new MapperInfo(StaticTopologyDefaults.SCOPE_PETERSEN_COILS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(Plant.class, new MapperInfo(StaticTopologyDefaults.SCOPE_PLANTS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(PowerTransformer.class, new MapperInfo(StaticTopologyDefaults.SCOPE_POWER_TRANSFORMERS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(SubGeographicalRegion.class, new MapperInfo(StaticTopologyDefaults.SCOPE_SUB_GEOGRAPHICAL_REGIONS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(Substation.class, new MapperInfo(StaticTopologyDefaults.SCOPE_SUBSTATIONS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(Switch.class, new MapperInfo(StaticTopologyDefaults.SCOPE_SWITCHES, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    result.put(VoltageLevel.class, new MapperInfo(StaticTopologyDefaults.SCOPE_VOLTAGE_LEVELS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+
+    MAPPER_INFOS = result;
+  }
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public PowerSystemResources_StaticTopology_Cim17v07_Mapper(IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  public Collection<? extends ICimEntity> map(Collection<? extends IEntity> source, NoParameters mappingParameters) throws IllegalArgumentException, IOException {
+
+    Collection<ICimEntity> result = null;
+
+    if((source == null) || source.isEmpty())
+      result = null;
+    else {
+      List<ICimEntity> cimEntities;
+      IMapper<?, List<IEntity>, List<ICimEntity>, NoParameters> mapper;
+      MapperInfo mapperInfo;
+
+      result = new ArrayList<>(source.size());
+
+      for(IEntity entity : source) {
+        mapperInfo = MAPPER_INFOS.get(entity.getClass());
+
+        if(mapperInfo != null) {
+          mapper = ((IServiceAdapterController<?>) getContext()).getMapperFactory().create(mapperInfo.scope, mapperInfo.sourceModelDefinition, mapperInfo.destinationModelDefinition);
+
+          if(mapper != null) {
+            cimEntities = mapper.map(Collections.singletonList(entity), mappingParameters);
+
+            result.addAll(cimEntities);
+          }
+        }
+      }
+    }
+
+    return result;
+  }
+
+  // Properties
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+
+  // inner Classes
+  /**
+   * The mapper info.
+   */
+  private static final class MapperInfo {
+
+    // Attributes
+    private IModelDefinition destinationModelDefinition;
+    private IModelDefinition sourceModelDefinition;
+    private String scope;
+
+    // Constructors
+    /**
+     * Instantiates a new mapper info.
+     *
+     * @param scope
+     *          the scope - specifies the application area<br/>
+     *          for example: 'BaseVoltages'
+     * @param sourceModelDefinition
+     *          the source {@link IModelDefinition}
+     * @param destinationModelDefinition
+     *          the destination {@link IModelDefinition}
+     * @throws IllegalArgumentException
+     *           Is thrown in the following cases:
+     *           <ul>
+     *           <li><code>scope</code> is <code>null</code> or <code>""</code></li>
+     *           <li><code>sourceModelDefinition</code> is <code>null</code></li>
+     *           <li><code>destinationModelDefinition</code> is <code>null</code></li>
+     *           </ul>
+     */
+
+    private MapperInfo(String scope, IModelDefinition sourceModelDefinition, IModelDefinition destinationModelDefinition) throws IllegalArgumentException {
+
+      if(!StringUtilities.hasContent(scope) || (sourceModelDefinition == null) || (destinationModelDefinition == null)) {
+        if(sourceModelDefinition == null)
+          throw new IllegalArgumentException("sourceModelDefinition", new NullPointerException());
+        else if(destinationModelDefinition == null)
+          throw new IllegalArgumentException("destinationModelDefinition", new NullPointerException());
+        else
+          throw new IllegalArgumentException("scope", new NullPointerException());
+      }
+      else {
+        this.sourceModelDefinition = sourceModelDefinition;
+        this.destinationModelDefinition = destinationModelDefinition;
+        this.scope = scope;
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/mapper/Topology_StaticTopology_Cim17v07_Mapper.java b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/mapper/Topology_StaticTopology_Cim17v07_Mapper.java
new file mode 100644
index 0000000..95c09ae
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/mapper/Topology_StaticTopology_Cim17v07_Mapper.java
@@ -0,0 +1,284 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.adapter.mapper;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.openk.cim.cim17v07.Cim17v07;
+import org.eclipse.openk.common.dataexchange.cim.ICimEntity;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.common.model.IModelDefinition;
+import org.eclipse.openk.common.string.StringUtilities;
+import org.eclipse.openk.common.value.parameter.NoParameters;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.core.StaticTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.model.StaticTopology;
+import org.eclipse.openk.domain.statictopology.model.core.ITopologicalResource;
+import org.eclipse.openk.domain.statictopology.model.core.TopologicalResourceType;
+import org.eclipse.openk.domain.statictopology.model.electricity.GeographicalRegion;
+import org.eclipse.openk.domain.statictopology.model.electricity.SubGeographicalRegion;
+import org.eclipse.openk.domain.statictopology.model.electricity.consumption.EnergyConsumer;
+import org.eclipse.openk.domain.statictopology.model.electricity.core.BaseVoltage;
+import org.eclipse.openk.domain.statictopology.model.electricity.generation.EnergySource;
+import org.eclipse.openk.domain.statictopology.model.electricity.generation.Plant;
+import org.eclipse.openk.domain.statictopology.model.electricity.line.AcLineSegment;
+import org.eclipse.openk.domain.statictopology.model.electricity.line.Junction;
+import org.eclipse.openk.domain.statictopology.model.electricity.line.Line;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.Bay;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.BusbarSection;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.Substation;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.VoltageLevel;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.grounding.EarthFaultCompensator;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.grounding.GroundingImpedance;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.grounding.PetersenCoil;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.powertransformer.PowerTransformer;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.switches.Breaker;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.switches.Disconnector;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.switches.LoadBreakSwitch;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.switches.Switch;
+import org.eclipse.openk.service.adapter.IServiceAdapterController;
+import org.eclipse.openk.service.adapter.mapper.AbstractMapper;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.mapper.IMapper;
+import org.eclipse.openk.service.core.adapter.mapper.MapperConfiguration;
+import org.eclipse.openk.service.core.adapter.mapper.MapperInformation;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The {@link IMapper} for mapping from {@link StaticTopology}-model-definitions to {@link Cim17v07}-model-definitions.
+ *
+ * @author 2018-07-22 Felix Korb
+ * @author 2018-09-18 Renko Ortgies
+ */
+@MapperInformation(scope = DynamicTopologyDefaults.SCOPE_TOPOLOGY, sourceModelDefinitionType = StaticTopology.class, destinationModelDefinitionType = Cim17v07.class)
+public final class Topology_StaticTopology_Cim17v07_Mapper extends AbstractMapper<MapperConfiguration, Collection<? extends IEntity>, Collection<? extends ICimEntity>, NoParameters> {
+
+  // Constants
+  private static final ILogger LOGGER = LoggerFactory.createLogger(Topology_StaticTopology_Cim17v07_Mapper.class);
+
+  // Attribute
+  private Map<Class<? extends ITopologicalResource>, MapperInfo> mapperInfoMappings;
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public Topology_StaticTopology_Cim17v07_Mapper(IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  /**
+   * Adds the mapping of the {@link ITopologicalResource} to the corresponding {@link MapperInfo}.
+   * 
+   * @param mapperInfoMappings
+   *          the mapper-info-mappings to add; not <code>null</code> but can be empty
+   * 
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <li><code>mapperInfoMappings</code> is <code>null</code>
+   */
+  protected void addMapperInfoMappings(Map<Class<? extends ITopologicalResource>, MapperInfo> mapperInfoMappings) throws IllegalArgumentException {
+
+    if(mapperInfoMappings == null)
+      throw new IllegalArgumentException("mapperInfoMappings", new NullPointerException());
+    else {
+      Map<Class<? extends ITopologicalResource>, MapperInfo> result = getMapperInfoMappings();
+
+      result.putAll(mapperInfoMappings);
+    }
+  }
+
+  /**
+   * Creates the mapping of the {@link ITopologicalResource} to the corresponding {@link MapperInfo}.
+   * 
+   * @return the mapper-info-mappings; not <code>null</code> and not empty
+   */
+  private Map<Class<? extends ITopologicalResource>, MapperInfo> createMapperInfoMappings() {
+
+    Map<Class<? extends ITopologicalResource>, MapperInfo> result = new HashMap<>();
+
+    initMapperInfoMappings(result);
+
+    return result;
+  }
+
+  /**
+   * Initializes the mapping of the {@link ITopologicalResource} to the corresponding {@link MapperInfo}.
+   * This method can be overridden or extended to provide the mapper-info-mappings.
+   * 
+   * @param mapperInfoMappings
+   *          the type-mappings-list that can be extended; not <code>null</code> but can be <code>empty</code>
+   * 
+   */
+  protected void initMapperInfoMappings(Map<Class<? extends ITopologicalResource>, MapperInfo> mapperInfoMappings) {
+
+    mapperInfoMappings.put(AcLineSegment.class, new MapperInfo(StaticTopologyDefaults.SCOPE_AC_LINE_SEGMENTS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(BaseVoltage.class, new MapperInfo(StaticTopologyDefaults.SCOPE_BASE_VOLTAGES, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(Breaker.class, new MapperInfo(StaticTopologyDefaults.SCOPE_BREAKERS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(BusbarSection.class, new MapperInfo(StaticTopologyDefaults.SCOPE_BUSBAR_SECTIONS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(Bay.class, new MapperInfo(StaticTopologyDefaults.SCOPE_BAYS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(Disconnector.class, new MapperInfo(StaticTopologyDefaults.SCOPE_DISCONNECTORS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(EarthFaultCompensator.class, new MapperInfo(StaticTopologyDefaults.SCOPE_EARTH_FAULT_COMPENSATORS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(EnergyConsumer.class, new MapperInfo(StaticTopologyDefaults.SCOPE_ENERGY_CONSUMERS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(EnergySource.class, new MapperInfo(StaticTopologyDefaults.SCOPE_ENERGY_SOURCES, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(GeographicalRegion.class, new MapperInfo(StaticTopologyDefaults.SCOPE_GEOGRAPHICAL_REGIONS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(GroundingImpedance.class, new MapperInfo(StaticTopologyDefaults.SCOPE_GROUNDING_IMPEDANCES, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(Junction.class, new MapperInfo(StaticTopologyDefaults.SCOPE_JUNCTIONS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(Line.class, new MapperInfo(StaticTopologyDefaults.SCOPE_LINES, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(LoadBreakSwitch.class, new MapperInfo(StaticTopologyDefaults.SCOPE_LOAD_BREAK_SWITCHES, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(PetersenCoil.class, new MapperInfo(StaticTopologyDefaults.SCOPE_PETERSEN_COILS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(Plant.class, new MapperInfo(StaticTopologyDefaults.SCOPE_PLANTS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(PowerTransformer.class, new MapperInfo(StaticTopologyDefaults.SCOPE_POWER_TRANSFORMERS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(SubGeographicalRegion.class, new MapperInfo(StaticTopologyDefaults.SCOPE_SUB_GEOGRAPHICAL_REGIONS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(Substation.class, new MapperInfo(StaticTopologyDefaults.SCOPE_SUBSTATIONS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(Switch.class, new MapperInfo(StaticTopologyDefaults.SCOPE_SWITCHES, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(TopologicalResourceType.class, new MapperInfo(StaticTopologyDefaults.SCOPE_TOPOLOGICAL_RESOURCE_TYPES, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+    mapperInfoMappings.put(VoltageLevel.class, new MapperInfo(StaticTopologyDefaults.SCOPE_VOLTAGE_LEVELS, StaticTopology.INSTANCE, Cim17v07.INSTANCE));
+  }
+
+  @Override
+  public Collection<? extends ICimEntity> map(Collection<? extends IEntity> source, NoParameters mappingParameters) throws IllegalArgumentException, IOException {
+
+    Collection<ICimEntity> result = null;
+
+    if((source == null) || source.isEmpty())
+      result = null;
+    else {
+      Collection<ICimEntity> cimEntities;
+      IMapper<?, Collection<IEntity>, Collection<ICimEntity>, NoParameters> mapper;
+      MapperInfo mapperInfo;
+
+      result = new ArrayList<>(source.size());
+
+      for(IEntity entity : source) {
+        mapperInfo = getMapperInfoMappings().get(entity.getClass());
+
+        if(mapperInfo != null) {
+          mapper = ((IServiceAdapterController<?>) getContext()).getMapperFactory().create(mapperInfo.getScope(), mapperInfo.getSourceModelDefinition(), mapperInfo.getDestinationModelDefinition());
+
+          if(mapper != null) {
+            cimEntities = mapper.map(Collections.singletonList(entity), mappingParameters);
+
+            result.addAll(cimEntities);
+          }
+        }
+      }
+    }
+
+    return result;
+  }
+
+  // Properties
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+
+  /**
+   * @return the mapping of the {@link ITopologicalResource} to the corresponding {@link MapperInfo}; not <code>null</code> and not empty
+   */
+  protected synchronized Map<Class<? extends ITopologicalResource>, MapperInfo> getMapperInfoMappings() {
+
+    if(mapperInfoMappings == null)
+      mapperInfoMappings = createMapperInfoMappings();
+
+    return mapperInfoMappings;
+  }
+
+  // inner Classes
+  /**
+   * The mapper info.
+   */
+  protected static final class MapperInfo {
+
+    // Attributes
+    private IModelDefinition destinationModelDefinition;
+    private IModelDefinition sourceModelDefinition;
+    private String scope;
+
+    // Constructors
+    /**
+     * @param scope
+     *          the scope - specifies the application area<br/>
+     *          for example: 'BaseVoltages'
+     * @param sourceModelDefinition
+     *          the source {@link IModelDefinition}
+     * @param destinationModelDefinition
+     *          the destination {@link IModelDefinition}
+     * @throws IllegalArgumentException
+     *           Is thrown in the following cases:
+     *           <ul>
+     *           <li><code>scope</code> is <code>null</code> or <code>""</code></li>
+     *           <li><code>sourceModelDefinition</code> is <code>null</code></li>
+     *           <li><code>destinationModelDefinition</code> is <code>null</code></li>
+     *           </ul>
+     */
+    public MapperInfo(String scope, IModelDefinition sourceModelDefinition, IModelDefinition destinationModelDefinition) throws IllegalArgumentException {
+
+      if(!StringUtilities.hasContent(scope) || (sourceModelDefinition == null) || (destinationModelDefinition == null)) {
+        if(sourceModelDefinition == null)
+          throw new IllegalArgumentException("sourceModelDefinition", new NullPointerException());
+        else if(destinationModelDefinition == null)
+          throw new IllegalArgumentException("destinationModelDefinition", new NullPointerException());
+        else
+          throw new IllegalArgumentException("scope", new NullPointerException());
+      }
+      else {
+        this.sourceModelDefinition = sourceModelDefinition;
+        this.destinationModelDefinition = destinationModelDefinition;
+        this.scope = scope;
+      }
+    }
+
+    /**
+     * @return the destination-{@link IModelDefinition}; not <code>null</code>
+     */
+    private IModelDefinition getDestinationModelDefinition() {
+
+      return destinationModelDefinition;
+    }
+
+    /**
+     * @return the <code>scope</code>; not <code>null</code>
+     */
+    private String getScope() {
+
+      return scope;
+    }
+
+    /**
+     * @return the source-{@link IModelDefinition}; not <code>null</code>
+     */
+    private IModelDefinition getSourceModelDefinition() {
+
+      return sourceModelDefinition;
+    }
+  }
+}
\ No newline at end of file
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/ConnectedConnectingEquipments_1_ApplicationXml_Responder.java b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/ConnectedConnectingEquipments_1_ApplicationXml_Responder.java
new file mode 100644
index 0000000..ddaa293
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/ConnectedConnectingEquipments_1_ApplicationXml_Responder.java
@@ -0,0 +1,81 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.adapter.responder;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.Cim17v07;
+import org.eclipse.openk.common.dataexchange.MediaType;
+import org.eclipse.openk.common.dataexchange.cim.ICimEntity;
+import org.eclipse.openk.common.dataexchange.cim.message.ICimHeaderParameters;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.domain.dynamictopology.adapter.responder.parameters.ConnectedConnectingEquipmentsRequestParameters;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.domain.dynamictopology.logic.view.parameters.IConnectedConnectingEquipmentsQueryParameters;
+import org.eclipse.openk.domain.statictopology.core.StaticTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.model.StaticTopology;
+import org.eclipse.openk.service.adapter.responder.AbstractCimResponder;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.mapper.MapperInformation;
+import org.eclipse.openk.service.core.adapter.responder.ResponderConfiguration;
+import org.eclipse.openk.service.core.adapter.responder.ResponderInformation;
+import org.eclipse.openk.service.core.adapter.serializer.SerializerInformation;
+import org.eclipse.openk.service.core.logic.view.ViewInformation;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The connected-connecting-equipments responder.
+ * 
+ * @author 2018-11-27 Renko Ortgies
+ */
+@MapperInformation(scope = StaticTopologyDefaults.SCOPE_TOPOLOGICAL_RESOURCES, sourceModelDefinitionType = StaticTopology.class, destinationModelDefinitionType = Cim17v07.class)
+@ResponderInformation(scope = DynamicTopologyDefaults.SCOPE_CONNECTED_CONNECTING_EQUIPMENTS, exportModelDefinitionType = Cim17v07.class, exportFormat = MediaType.ApplicationXml, parametersType = ConnectedConnectingEquipmentsRequestParameters.class)
+@SerializerInformation(scope = StaticTopologyDefaults.DOMAIN, outputFormat = MediaType.ApplicationXml, inputModelDefinitionType = Cim17v07.class, parametersType = ICimHeaderParameters.class)
+@ViewInformation(scope = DynamicTopologyDefaults.SCOPE_CONNECTED_CONNECTING_EQUIPMENTS, parametersType = IConnectedConnectingEquipmentsQueryParameters.class)
+public final class ConnectedConnectingEquipments_1_ApplicationXml_Responder extends AbstractCimResponder<ResponderConfiguration, List<? extends IEntity>, List<? extends ICimEntity>, ConnectedConnectingEquipmentsRequestParameters> {
+
+  // Constants
+  private static final ILogger LOGGER = LoggerFactory.createLogger(ConnectedConnectingEquipments_1_ApplicationXml_Responder.class);
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public ConnectedConnectingEquipments_1_ApplicationXml_Responder(IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected Object createQueryParameters(ConnectedConnectingEquipmentsRequestParameters requestParameters) throws IllegalArgumentException {
+
+    return requestParameters;
+  }
+
+  // Properties
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+}
\ No newline at end of file
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/PowerSystemResourceTypes_1_ApplicationXml_Responder.java b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/PowerSystemResourceTypes_1_ApplicationXml_Responder.java
new file mode 100644
index 0000000..2ec53b5
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/PowerSystemResourceTypes_1_ApplicationXml_Responder.java
@@ -0,0 +1,85 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.adapter.responder;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.Cim17v07;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.PowerSystemResource;
+import org.eclipse.openk.cim.profile.openkonsequenz.OpenKonsequenz;
+import org.eclipse.openk.cim.profile.openkonsequenz.api.statictopology.ElementType;
+import org.eclipse.openk.common.dataexchange.MediaType;
+import org.eclipse.openk.common.dataexchange.cim.message.ICimHeaderParameters;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.domain.dynamictopology.adapter.responder.parameters.PowerSystemResourceTypes_1_ApplicationXml_RequestParameters;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.domain.dynamictopology.logic.view.parameters.PowerSystemResourceTypes_1_QueryParameters;
+import org.eclipse.openk.domain.statictopology.core.StaticTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.model.StaticTopology;
+import org.eclipse.openk.service.adapter.responder.AbstractCimResponder;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.mapper.MapperInformation;
+import org.eclipse.openk.service.core.adapter.responder.ResponderConfiguration;
+import org.eclipse.openk.service.core.adapter.responder.ResponderInformation;
+import org.eclipse.openk.service.core.adapter.serializer.SerializerInformation;
+import org.eclipse.openk.service.core.logic.view.ViewInformation;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The {@link PowerSystemResource}s responder.
+ * 
+ * @author 2017-10-24 Christian Brunzendorf
+ * @author 2018-06-24 Felix Korb
+ * @author 2017-11-09 Renko Ortgies
+ */
+@MapperInformation(scope = DynamicTopologyDefaults.SCOPE_POWER_SYSTEM_RESOURCE_TYPES, sourceModelDefinitionType = StaticTopology.class, destinationModelDefinitionType = OpenKonsequenz.class)
+@ResponderInformation(scope = DynamicTopologyDefaults.SCOPE_POWER_SYSTEM_RESOURCE_TYPES, version = 1, exportModelDefinitionType = OpenKonsequenz.class, exportFormat = MediaType.ApplicationXml, parametersType = PowerSystemResourceTypes_1_ApplicationXml_RequestParameters.class)
+@SerializerInformation(scope = StaticTopologyDefaults.DOMAIN, outputFormat = MediaType.ApplicationXml, inputModelDefinitionType = Cim17v07.class, parametersType = ICimHeaderParameters.class)
+@ViewInformation(scope = DynamicTopologyDefaults.SCOPE_POWER_SYSTEM_RESOURCE_TYPES, parametersType = PowerSystemResourceTypes_1_QueryParameters.class)
+public final class PowerSystemResourceTypes_1_ApplicationXml_Responder extends AbstractCimResponder<ResponderConfiguration, List<IEntity>, List<ElementType>, PowerSystemResourceTypes_1_ApplicationXml_RequestParameters> {
+
+  // Constants
+  private static final ILogger LOGGER = LoggerFactory.createLogger(PowerSystemResourceTypes_1_ApplicationXml_Responder.class);
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public PowerSystemResourceTypes_1_ApplicationXml_Responder(IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected Object createQueryParameters(PowerSystemResourceTypes_1_ApplicationXml_RequestParameters requestParameters) throws IllegalArgumentException {
+
+    return requestParameters;
+  }
+
+  // Properties
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+}
\ No newline at end of file
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/PowerSystemResources_1_ApplicationXml_Responder.java b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/PowerSystemResources_1_ApplicationXml_Responder.java
new file mode 100644
index 0000000..fe56d5b
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/PowerSystemResources_1_ApplicationXml_Responder.java
@@ -0,0 +1,84 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.adapter.responder;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.Cim17v07;
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.PowerSystemResource;
+import org.eclipse.openk.common.dataexchange.MediaType;
+import org.eclipse.openk.common.dataexchange.cim.ICimEntity;
+import org.eclipse.openk.common.dataexchange.cim.message.ICimHeaderParameters;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.domain.dynamictopology.adapter.responder.parameters.PowerSystemResources_1_ApplicationXml_RequestParameters;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.domain.dynamictopology.logic.view.parameters.PowerSystemResources_1_QueryParameters;
+import org.eclipse.openk.domain.statictopology.core.StaticTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.model.StaticTopology;
+import org.eclipse.openk.service.adapter.responder.AbstractCimResponder;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.mapper.MapperInformation;
+import org.eclipse.openk.service.core.adapter.responder.ResponderConfiguration;
+import org.eclipse.openk.service.core.adapter.responder.ResponderInformation;
+import org.eclipse.openk.service.core.adapter.serializer.SerializerInformation;
+import org.eclipse.openk.service.core.logic.view.ViewInformation;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The {@link PowerSystemResource} responder.
+ * 
+ * @author 2017-10-24 Christian Brunzendorf
+ * @author 2018-06-24 Felix Korb
+ * @author 2017-11-09 Renko Ortgies
+ */
+@MapperInformation(scope = DynamicTopologyDefaults.SCOPE_POWER_SYSTEM_RESOURCES, sourceModelDefinitionType = StaticTopology.class, destinationModelDefinitionType = Cim17v07.class)
+@ResponderInformation(scope = DynamicTopologyDefaults.SCOPE_POWER_SYSTEM_RESOURCES, version = 1, exportModelDefinitionType = Cim17v07.class, exportFormat = MediaType.ApplicationXml, parametersType = PowerSystemResources_1_ApplicationXml_RequestParameters.class)
+@SerializerInformation(scope = StaticTopologyDefaults.DOMAIN, outputFormat = MediaType.ApplicationXml, inputModelDefinitionType = Cim17v07.class, parametersType = ICimHeaderParameters.class)
+@ViewInformation(scope = DynamicTopologyDefaults.SCOPE_POWER_SYSTEM_RESOURCES, parametersType = PowerSystemResources_1_QueryParameters.class)
+public final class PowerSystemResources_1_ApplicationXml_Responder extends AbstractCimResponder<ResponderConfiguration, List<? extends IEntity>, List<? extends ICimEntity>, PowerSystemResources_1_ApplicationXml_RequestParameters> {
+
+  // Constants
+  private static final ILogger LOGGER = LoggerFactory.createLogger(PowerSystemResources_1_ApplicationXml_Responder.class);
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public PowerSystemResources_1_ApplicationXml_Responder(IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected Object createQueryParameters(PowerSystemResources_1_ApplicationXml_RequestParameters requestParameters) throws IllegalArgumentException {
+
+    return requestParameters;
+  }
+
+  // Properties
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+}
\ No newline at end of file
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/Topology_2_ApplicationRdf_Responder.java b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/Topology_2_ApplicationRdf_Responder.java
new file mode 100644
index 0000000..6530761
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/Topology_2_ApplicationRdf_Responder.java
@@ -0,0 +1,83 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.adapter.responder;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.Cim17v07;
+import org.eclipse.openk.common.dataexchange.MediaType;
+import org.eclipse.openk.common.dataexchange.cim.ICimEntity;
+import org.eclipse.openk.common.dataexchange.cim.message.ICimHeaderParameters;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.domain.dynamictopology.adapter.responder.parameters.Topology_2_ApplicationRdf_RequestParameters;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.domain.dynamictopology.logic.view.parameters.Topology_1_QueryParameters;
+import org.eclipse.openk.domain.statictopology.core.StaticTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.model.StaticTopology;
+import org.eclipse.openk.service.adapter.responder.AbstractCimResponder;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.mapper.MapperInformation;
+import org.eclipse.openk.service.core.adapter.responder.ResponderConfiguration;
+import org.eclipse.openk.service.core.adapter.responder.ResponderInformation;
+import org.eclipse.openk.service.core.adapter.serializer.SerializerInformation;
+import org.eclipse.openk.service.core.logic.view.ViewInformation;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The topology responder.
+ * 
+ * @author 2017-10-24 Christian Brunzendorf
+ * @author 2018-06-24 Felix Korb
+ * @author 2017-11-09 Renko Ortgies
+ */
+@MapperInformation(scope = DynamicTopologyDefaults.SCOPE_TOPOLOGY, sourceModelDefinitionType = StaticTopology.class, destinationModelDefinitionType = Cim17v07.class)
+@ResponderInformation(scope = DynamicTopologyDefaults.SCOPE_TOPOLOGY, version = 2, exportModelDefinitionType = Cim17v07.class, exportFormat = MediaType.ApplicationRdf, parametersType = Topology_2_ApplicationRdf_RequestParameters.class)
+@SerializerInformation(scope = StaticTopologyDefaults.DOMAIN, outputFormat = MediaType.ApplicationRdf, inputModelDefinitionType = Cim17v07.class, parametersType = ICimHeaderParameters.class)
+@ViewInformation(scope = DynamicTopologyDefaults.SCOPE_TOPOLOGY, parametersType = Topology_1_QueryParameters.class)
+public final class Topology_2_ApplicationRdf_Responder extends AbstractCimResponder<ResponderConfiguration, List<? extends IEntity>, List<? extends ICimEntity>, Topology_2_ApplicationRdf_RequestParameters> {
+
+  // Constants
+  private static final ILogger LOGGER = LoggerFactory.createLogger(Topology_2_ApplicationRdf_Responder.class);
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public Topology_2_ApplicationRdf_Responder(IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected Object createQueryParameters(Topology_2_ApplicationRdf_RequestParameters requestParameters) throws IllegalArgumentException {
+
+    return requestParameters;
+  }
+
+  // Properties
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+}
\ No newline at end of file
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/parameters/ConnectedConnectingEquipmentsRequestParameters.java b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/parameters/ConnectedConnectingEquipmentsRequestParameters.java
new file mode 100644
index 0000000..da96535
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/parameters/ConnectedConnectingEquipmentsRequestParameters.java
@@ -0,0 +1,82 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.adapter.responder.parameters;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.eclipse.openk.common.model.attribute.value.annotations.ListValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.Value;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.domain.dynamictopology.logic.view.parameters.IConnectedConnectingEquipmentsQueryParameters;
+import org.eclipse.openk.domain.statictopology.logic.core.query.ConnectionState;
+import org.eclipse.openk.domain.statictopology.logic.core.query.Selector;
+import org.eclipse.openk.service.adapter.responder.TolerantCimRequestParameters;
+
+/**
+ * The parameters that are used to request the {@link DynamicTopologyDefaults#SCOPE_CONNECTED_CONNECTING_EQUIPMENTS}.
+ * 
+ * @author 2018-11-27 Renko Ortgies
+ */
+public final class ConnectedConnectingEquipmentsRequestParameters extends TolerantCimRequestParameters implements IConnectedConnectingEquipmentsQueryParameters {
+
+  // Attributes
+  @Value(name = PARAMETER_CONNECTION_STATE, defaultValue = "Ignore")
+  private ConnectionState connectionState;
+
+  @Value(name = PARAMETER_CONVERTER_ID, optional = false)
+  private UUID converterId;
+
+  @Value(name = PARAMETER_SELECTOR, defaultValue = "Lazy")
+  private Selector selector;
+
+  @ListValidator(itemType = String.class)
+  @Value(name = PARAMETER_TOPOLOGICAL_RESOURCE_TYPES)
+  private List<String> topologicalResourceTypes;
+
+  @Value(name = PARAMETER_TOPOLOGY_ID)
+  private UUID topologyId;
+
+  // Properties
+  @Override
+  public ConnectionState getConnectionState() {
+
+    return connectionState;
+  }
+
+  @Override
+  public UUID getConverterId() {
+
+    return converterId;
+  }
+
+  @Override
+  public Selector getSelector() {
+
+    return selector;
+  }
+
+  @Override
+  public List<String> getTopologicalResourceTypes() {
+
+    return topologicalResourceTypes;
+  }
+
+  @Override
+  public UUID getTopologyId() {
+
+    return topologyId;
+  }
+}
\ No newline at end of file
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/parameters/PowerSystemResourceTypes_1_ApplicationXml_RequestParameters.java b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/parameters/PowerSystemResourceTypes_1_ApplicationXml_RequestParameters.java
new file mode 100644
index 0000000..edec37e
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/parameters/PowerSystemResourceTypes_1_ApplicationXml_RequestParameters.java
@@ -0,0 +1,98 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.adapter.responder.parameters;
+
+import java.time.LocalDateTime;
+import java.util.UUID;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.PowerSystemResource;
+import org.eclipse.openk.common.dataexchange.cim.message.CimMessageDefaults;
+import org.eclipse.openk.common.dataexchange.cim.message.ICimHeaderParameters;
+import org.eclipse.openk.common.date.DateDefaults;
+import org.eclipse.openk.common.model.attribute.value.annotations.IntegerValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.LocalDateTimeValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.StringValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.Value;
+import org.eclipse.openk.domain.dynamictopology.logic.view.parameters.PowerSystemResourceTypes_1_QueryParameters;
+import org.eclipse.openk.domain.statictopology.logic.core.view.parameters.IStaticTopologyQueryParameters;
+
+/**
+ * The {@link PowerSystemResource}-types request parameters.
+ * 
+ * @author 2017-10-24 Christian Brunzendorf
+ * @author 2018-06-24 Felix Korb
+ */
+public final class PowerSystemResourceTypes_1_ApplicationXml_RequestParameters extends PowerSystemResourceTypes_1_QueryParameters implements ICimHeaderParameters, IStaticTopologyQueryParameters {
+
+  // Constants
+  private static final String NOUN = "get";
+
+  // Attributes
+  @Value(name = PARAMETER_MESSAGE_ID)
+  private UUID messageId;
+
+  @IntegerValidator(minValue = 1)
+  @Value(name = PARAMETER_REVISION, optional = false)
+  private int revision;
+
+  @StringValidator(minLength = 1, maxLength = CimMessageDefaults.MAX_SOURCE_LENGTH)
+  @Value(name = PARAMETER_SOURCE)
+  private String source;
+
+  @LocalDateTimeValidator(dateFormat = DateDefaults.DATE_TIME_FORMATTER_PATTERN_UTC_TIMESTAMP)
+  @Value(name = PARAMETER_TIMESTAMP)
+  private LocalDateTime timestamp;
+
+  @StringValidator(minLength = 1, maxLength = CimMessageDefaults.MAX_USER_ID_LENGTH)
+  @Value(name = PARAMETER_USER_ID, optional = true)
+  private String userId;
+
+  // Properties
+  @Override
+  public UUID getMessageId() {
+
+    return messageId;
+  }
+
+  @Override
+  public String getNoun() {
+
+    return NOUN;
+  }
+
+  @Override
+  public int getRevision() {
+
+    return revision;
+  }
+
+  @Override
+  public String getSource() {
+
+    return source;
+  }
+
+  @Override
+  public LocalDateTime getTimestamp() {
+
+    return timestamp;
+  }
+
+  @Override
+  public String getUserId() {
+
+    return userId;
+  }
+}
\ No newline at end of file
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/parameters/PowerSystemResources_1_ApplicationXml_RequestParameters.java b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/parameters/PowerSystemResources_1_ApplicationXml_RequestParameters.java
new file mode 100644
index 0000000..9f6e64b
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/parameters/PowerSystemResources_1_ApplicationXml_RequestParameters.java
@@ -0,0 +1,98 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.adapter.responder.parameters;
+
+import java.time.LocalDateTime;
+import java.util.UUID;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.PowerSystemResource;
+import org.eclipse.openk.common.dataexchange.cim.message.CimMessageDefaults;
+import org.eclipse.openk.common.dataexchange.cim.message.ICimHeaderParameters;
+import org.eclipse.openk.common.date.DateDefaults;
+import org.eclipse.openk.common.model.attribute.value.annotations.IntegerValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.LocalDateTimeValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.StringValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.Value;
+import org.eclipse.openk.domain.dynamictopology.logic.view.parameters.PowerSystemResources_1_QueryParameters;
+import org.eclipse.openk.domain.statictopology.logic.core.view.parameters.IStaticTopologyQueryParameters;
+
+/**
+ * The {@link PowerSystemResource}s request parameters.
+ * 
+ * @author 2017-10-26 Christian Brunzendorf
+ * @author 2018-06-24 Felix Korb
+ */
+public final class PowerSystemResources_1_ApplicationXml_RequestParameters extends PowerSystemResources_1_QueryParameters implements ICimHeaderParameters, IStaticTopologyQueryParameters {
+
+  // Constants
+  private static final String NOUN = "get";
+
+  // Attributes
+  @Value(name = PARAMETER_MESSAGE_ID)
+  private UUID messageId;
+
+  @IntegerValidator(minValue = 1)
+  @Value(name = PARAMETER_REVISION, optional = false)
+  private int revision;
+
+  @StringValidator(minLength = 1, maxLength = CimMessageDefaults.MAX_SOURCE_LENGTH)
+  @Value(name = PARAMETER_SOURCE)
+  private String source;
+
+  @LocalDateTimeValidator(dateFormat = DateDefaults.DATE_TIME_FORMATTER_PATTERN_UTC_TIMESTAMP)
+  @Value(name = PARAMETER_TIMESTAMP)
+  private LocalDateTime timestamp;
+
+  @StringValidator(minLength = 1, maxLength = CimMessageDefaults.MAX_USER_ID_LENGTH)
+  @Value(name = PARAMETER_USER_ID, optional = true)
+  private String userId;
+
+  // Properties
+  @Override
+  public UUID getMessageId() {
+
+    return messageId;
+  }
+
+  @Override
+  public String getNoun() {
+
+    return NOUN;
+  }
+
+  @Override
+  public int getRevision() {
+
+    return revision;
+  }
+
+  @Override
+  public String getSource() {
+
+    return source;
+  }
+
+  @Override
+  public LocalDateTime getTimestamp() {
+
+    return timestamp;
+  }
+
+  @Override
+  public String getUserId() {
+
+    return userId;
+  }
+}
\ No newline at end of file
diff --git a/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/parameters/Topology_2_ApplicationRdf_RequestParameters.java b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/parameters/Topology_2_ApplicationRdf_RequestParameters.java
new file mode 100644
index 0000000..32efdd4
--- /dev/null
+++ b/dev/adapter/src/main/java/org/eclipse/openk/domain/dynamictopology/adapter/responder/parameters/Topology_2_ApplicationRdf_RequestParameters.java
@@ -0,0 +1,97 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.adapter.responder.parameters;
+
+import java.time.LocalDateTime;
+import java.util.UUID;
+
+import org.eclipse.openk.common.dataexchange.cim.message.CimMessageDefaults;
+import org.eclipse.openk.common.dataexchange.cim.message.ICimHeaderParameters;
+import org.eclipse.openk.common.date.DateDefaults;
+import org.eclipse.openk.common.model.attribute.value.annotations.IntegerValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.LocalDateTimeValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.StringValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.Value;
+import org.eclipse.openk.domain.dynamictopology.logic.view.parameters.Topology_1_QueryParameters;
+import org.eclipse.openk.domain.statictopology.logic.core.view.parameters.IStaticTopologyQueryParameters;
+
+/**
+ * The topology request parameters.
+ * 
+ * @author 2017-10-26 Christian Brunzendorf
+ * @author 2018-06-24 Felix Korb
+ */
+public final class Topology_2_ApplicationRdf_RequestParameters extends Topology_1_QueryParameters implements ICimHeaderParameters, IStaticTopologyQueryParameters {
+
+  // Constants
+  private static final String NOUN = "get";
+
+  // Attributes
+  @Value(name = PARAMETER_MESSAGE_ID)
+  private UUID messageId;
+
+  @IntegerValidator(minValue = 1)
+  @Value(name = PARAMETER_REVISION, optional = false)
+  private int revision;
+
+  @StringValidator(minLength = 1, maxLength = CimMessageDefaults.MAX_SOURCE_LENGTH)
+  @Value(name = PARAMETER_SOURCE)
+  private String source;
+
+  @LocalDateTimeValidator(dateFormat = DateDefaults.DATE_TIME_FORMATTER_PATTERN_UTC_TIMESTAMP)
+  @Value(name = PARAMETER_TIMESTAMP)
+  private LocalDateTime timestamp;
+
+  @StringValidator(minLength = 1, maxLength = CimMessageDefaults.MAX_USER_ID_LENGTH)
+  @Value(name = PARAMETER_USER_ID, optional = true)
+  private String userId;
+
+  // Properties
+  @Override
+  public UUID getMessageId() {
+
+    return messageId;
+  }
+
+  @Override
+  public String getNoun() {
+
+    return NOUN;
+  }
+
+  @Override
+  public int getRevision() {
+
+    return revision;
+  }
+
+  @Override
+  public String getSource() {
+
+    return source;
+  }
+
+  @Override
+  public LocalDateTime getTimestamp() {
+
+    return timestamp;
+  }
+
+  @Override
+  public String getUserId() {
+
+    return userId;
+  }
+}
\ No newline at end of file
diff --git a/dev/adapter/src/main/resources/.gitignore b/dev/adapter/src/main/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/adapter/src/main/resources/.gitignore
diff --git a/dev/adapter/src/test/java/.gitignore b/dev/adapter/src/test/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/adapter/src/test/java/.gitignore
diff --git a/dev/adapter/src/test/resources/.gitignore b/dev/adapter/src/test/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/adapter/src/test/resources/.gitignore
diff --git a/dev/core/pom.xml b/dev/core/pom.xml
new file mode 100644
index 0000000..dfbf351
--- /dev/null
+++ b/dev/core/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.eclipse.openk.domain.dynamic-topology</groupId>
+  <artifactId>dynamic-topology-core</artifactId>
+  <version>2.21.0-SNAPSHOT</version>
+
+  <name>${project.groupId}.${project.artifactId}</name>
+
+  <parent>
+    <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+    <artifactId>build-parentpom-core</artifactId>
+    <version>2.20.0</version>
+    <relativePath></relativePath>
+  </parent>
+
+  <dependencies>
+    <!-- org.eclipse -->
+    <dependency>
+      <groupId>org.eclipse.openk.service</groupId>
+      <artifactId>service-core</artifactId>
+      <version>2.20.0</version>
+    </dependency>
+    <!-- scope: test -->
+    <!-- org.eclipse.openk -->
+    <dependency>
+      <groupId>org.eclipse.openk.service</groupId>
+      <artifactId>service-core</artifactId>
+      <version>2.20.0</version>
+      <type>test-jar</type>
+    </dependency>
+  </dependencies>
+
+
+</project>
\ No newline at end of file
diff --git a/dev/core/src/main/java/.gitignore b/dev/core/src/main/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/core/src/main/java/.gitignore
diff --git a/dev/core/src/main/java/org/eclipse/openk/domain/dynamictopology/core/DynamicTopologyDefaults.java b/dev/core/src/main/java/org/eclipse/openk/domain/dynamictopology/core/DynamicTopologyDefaults.java
new file mode 100644
index 0000000..b18a46a
--- /dev/null
+++ b/dev/core/src/main/java/org/eclipse/openk/domain/dynamictopology/core/DynamicTopologyDefaults.java
@@ -0,0 +1,48 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.core;
+
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+
+/**
+ * Defines some dynamic-topology defaults.
+ * 
+ * @author 2017-10-27 Christian Brunzendorf
+ * @author 2018-06-21 Felix Korb
+ * @author 2017-10-24 Frank Jäger
+ * @author 2017-09-24 Michael Korta
+ * @author 2017-10-24 Renko Ortgies
+ */
+public final class DynamicTopologyDefaults {
+
+  // Constants
+  /* domains */
+  public static final String DOMAIN = "dynamic-topology";
+
+  /* scopes */
+  public static final String SCOPE_CONNECTED_CONNECTING_EQUIPMENTS = "connected-connecting-equipments";
+  public static final String SCOPE_POWER_SYSTEM_RESOURCES = "power-system-resources";
+  public static final String SCOPE_POWER_SYSTEM_RESOURCE_TYPES = "power-system-resource-types";
+  public static final String SCOPE_TOPOLOGY = "topology";
+
+  // Constructors
+  @SuppressWarnings("checkstyle:javadocmethod")
+  @SuppressWarningsReason(reasons = Reason.Checkstyle_ConstructorWithoutParameter)
+  private DynamicTopologyDefaults() {
+
+    /* suppresses the instantiation! */
+  }
+}
\ No newline at end of file
diff --git a/dev/core/src/main/resources/.gitignore b/dev/core/src/main/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/core/src/main/resources/.gitignore
diff --git a/dev/core/src/test/java/.gitignore b/dev/core/src/test/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/core/src/test/java/.gitignore
diff --git a/dev/core/src/test/resources/.gitignore b/dev/core/src/test/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/core/src/test/resources/.gitignore
diff --git a/dev/infrastructure/pom.xml b/dev/infrastructure/pom.xml
new file mode 100644
index 0000000..fbe2303
--- /dev/null
+++ b/dev/infrastructure/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.eclipse.openk.domain.dynamic-topology</groupId>
+    <artifactId>dynamic-topology-infrastructure</artifactId>
+    <version>2.21.0-SNAPSHOT</version>
+
+    <name>${project.groupId}.${project.artifactId}</name>
+
+    <parent>
+        <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+        <artifactId>build-parentpom-infrastructure</artifactId>
+        <version>2.20.0</version>
+        <relativePath></relativePath>
+    </parent>
+
+    <build>
+        <finalName>${project.artifactId}-${project.version}</finalName>
+    </build>
+
+    <dependencies>
+        <!-- org.eclipse -->
+        <dependency>
+            <groupId>org.eclipse.openk.domain.dynamic-topology</groupId>
+            <artifactId>dynamic-topology-adapter</artifactId>
+            <version>2.21.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.openk.service</groupId>
+            <artifactId>service-infrastructure</artifactId>
+            <version>2.20.0</version>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/dev/infrastructure/src/main/java/.gitignore b/dev/infrastructure/src/main/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/infrastructure/src/main/java/.gitignore
diff --git a/dev/infrastructure/src/main/java/org/eclipse/openk/domain/dynamictopology/infrastructure/endpoint/ConnectedConnectingEquipments_Get_Rest_EndPoint.java b/dev/infrastructure/src/main/java/org/eclipse/openk/domain/dynamictopology/infrastructure/endpoint/ConnectedConnectingEquipments_Get_Rest_EndPoint.java
new file mode 100644
index 0000000..fc0fb28
--- /dev/null
+++ b/dev/infrastructure/src/main/java/org/eclipse/openk/domain/dynamictopology/infrastructure/endpoint/ConnectedConnectingEquipments_Get_Rest_EndPoint.java
@@ -0,0 +1,80 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.infrastructure.endpoint;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.openk.common.dataexchange.MediaType;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.infrastructure.endpoint.AbstractCimHttpGetRestEndPoint;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * The <i>http-REST</i> end point for connected-connecting-equipments.
+ *
+ * @author 2018-11-27 Renko Ortgies
+ */
+@Configurable
+@CrossOrigin
+@RequestMapping(path = "/domain/electricity/dynamic-topology")
+@RestController(value = "/domain/electricity/dynamic-topology/connected-connecting-equipments")
+public final class ConnectedConnectingEquipments_Get_Rest_EndPoint extends AbstractCimHttpGetRestEndPoint {
+
+  // Constants
+  private static final ILogger LOGGER = LoggerFactory.createLogger(ConnectedConnectingEquipments_Get_Rest_EndPoint.class);
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public ConnectedConnectingEquipments_Get_Rest_EndPoint(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  @GetMapping(path = "/connected-connecting-equipments", produces = "application/xml")
+  public void get(HttpServletRequest request, @PathVariable Map<String, String> pathVars, @RequestParam Map<String, String> requestProperties, HttpServletResponse response) {
+
+    processRequest(DynamicTopologyDefaults.SCOPE_CONNECTED_CONNECTING_EQUIPMENTS, request, pathVars, requestProperties, MediaType.TextPlain, response, MediaType.ApplicationXml);
+  }
+
+  // Properties
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+}
\ No newline at end of file
diff --git a/dev/infrastructure/src/main/java/org/eclipse/openk/domain/dynamictopology/infrastructure/endpoint/PowerSystemResourceTypes_Get_Rest_EndPoint.java b/dev/infrastructure/src/main/java/org/eclipse/openk/domain/dynamictopology/infrastructure/endpoint/PowerSystemResourceTypes_Get_Rest_EndPoint.java
new file mode 100644
index 0000000..2cce29a
--- /dev/null
+++ b/dev/infrastructure/src/main/java/org/eclipse/openk/domain/dynamictopology/infrastructure/endpoint/PowerSystemResourceTypes_Get_Rest_EndPoint.java
@@ -0,0 +1,77 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.infrastructure.endpoint;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.openk.common.dataexchange.MediaType;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.infrastructure.endpoint.AbstractCimHttpGetRestEndPoint;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * The <i>http-REST</i> end point for power-system-resource types.
+ *
+ * @author 2017-10-24 Frank Jäger
+ * @author 2018-09-20 Renko Ortgies
+ */
+@RestController(value = "/domain/electricity/dynamic-topology/power-system-resource-types")
+@RequestMapping(path = "/domain/electricity/dynamic-topology")
+public final class PowerSystemResourceTypes_Get_Rest_EndPoint extends AbstractCimHttpGetRestEndPoint {
+
+  // Constants
+  private static final ILogger LOGGER = LoggerFactory.createLogger(PowerSystemResourceTypes_Get_Rest_EndPoint.class);
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public PowerSystemResourceTypes_Get_Rest_EndPoint(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  @GetMapping(path = "/power-system-resource-types", produces = "application/xml")
+  public void get(HttpServletRequest request, @PathVariable Map<String, String> pathVars, @RequestParam Map<String, String> requestProperties, HttpServletResponse response) {
+
+    processRequest(DynamicTopologyDefaults.SCOPE_POWER_SYSTEM_RESOURCE_TYPES, request, pathVars, requestProperties, MediaType.TextPlain, response, MediaType.ApplicationXml);
+  }
+
+  // Properties
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+}
\ No newline at end of file
diff --git a/dev/infrastructure/src/main/java/org/eclipse/openk/domain/dynamictopology/infrastructure/endpoint/PowerSystemResources_Get_Rest_EndPoint.java b/dev/infrastructure/src/main/java/org/eclipse/openk/domain/dynamictopology/infrastructure/endpoint/PowerSystemResources_Get_Rest_EndPoint.java
new file mode 100644
index 0000000..e286d89
--- /dev/null
+++ b/dev/infrastructure/src/main/java/org/eclipse/openk/domain/dynamictopology/infrastructure/endpoint/PowerSystemResources_Get_Rest_EndPoint.java
@@ -0,0 +1,77 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.infrastructure.endpoint;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.openk.common.dataexchange.MediaType;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.infrastructure.endpoint.AbstractCimHttpGetRestEndPoint;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * The <i>http-REST</i> end point for power-system-resources.
+ *
+ * @author 2017-10-24 Frank Jäger
+ * @author 2018-09-20 Renko Ortgies
+ */
+@RestController(value = "/domain/electricity/dynamic-topology/power-system-resources")
+@RequestMapping(path = "/domain/electricity/dynamic-topology")
+public final class PowerSystemResources_Get_Rest_EndPoint extends AbstractCimHttpGetRestEndPoint {
+
+  // Constants
+  private static final ILogger LOGGER = LoggerFactory.createLogger(PowerSystemResources_Get_Rest_EndPoint.class);
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public PowerSystemResources_Get_Rest_EndPoint(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  @GetMapping(path = "/power-system-resources", produces = "application/xml")
+  public void get(HttpServletRequest request, @PathVariable Map<String, String> pathVars, @RequestParam Map<String, String> requestProperties, HttpServletResponse response) {
+
+    processRequest(DynamicTopologyDefaults.SCOPE_POWER_SYSTEM_RESOURCES, request, pathVars, requestProperties, MediaType.TextPlain, response, MediaType.ApplicationXml);
+  }
+
+  // Properties
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+}
\ No newline at end of file
diff --git a/dev/infrastructure/src/main/java/org/eclipse/openk/domain/dynamictopology/infrastructure/endpoint/Topology_Get_Rest_EndPoint.java b/dev/infrastructure/src/main/java/org/eclipse/openk/domain/dynamictopology/infrastructure/endpoint/Topology_Get_Rest_EndPoint.java
new file mode 100644
index 0000000..55c851d
--- /dev/null
+++ b/dev/infrastructure/src/main/java/org/eclipse/openk/domain/dynamictopology/infrastructure/endpoint/Topology_Get_Rest_EndPoint.java
@@ -0,0 +1,77 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.infrastructure.endpoint;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.openk.common.dataexchange.MediaType;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.infrastructure.endpoint.AbstractCimHttpGetRestEndPoint;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * The <i>http-REST</i> end point for the topology.
+ *
+ * @author 2017-10-24 Frank Jäger
+ * @author 2018-09-20 Renko Ortgies
+ */
+@RestController(value = "/domain/electricity/dynamic-topology/topology")
+@RequestMapping(path = "/domain/electricity/dynamic-topology")
+public final class Topology_Get_Rest_EndPoint extends AbstractCimHttpGetRestEndPoint {
+
+  // Constants
+  private static final ILogger LOGGER = LoggerFactory.createLogger(Topology_Get_Rest_EndPoint.class);
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public Topology_Get_Rest_EndPoint(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  @GetMapping(path = "/topology", produces = "application/xml")
+  public void get(HttpServletRequest request, @PathVariable Map<String, String> pathVars, @RequestParam Map<String, String> requestProperties, HttpServletResponse response) {
+
+    processRequest(DynamicTopologyDefaults.SCOPE_TOPOLOGY, request, pathVars, requestProperties, MediaType.TextPlain, response, MediaType.ApplicationRdf);
+  }
+
+  // Properties
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+}
\ No newline at end of file
diff --git a/dev/infrastructure/src/main/resources/.gitignore b/dev/infrastructure/src/main/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/infrastructure/src/main/resources/.gitignore
diff --git a/dev/infrastructure/src/test/java/.gitignore b/dev/infrastructure/src/test/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/infrastructure/src/test/java/.gitignore
diff --git a/dev/infrastructure/src/test/resources/.gitignore b/dev/infrastructure/src/test/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/infrastructure/src/test/resources/.gitignore
diff --git a/dev/logic/pom.xml b/dev/logic/pom.xml
new file mode 100644
index 0000000..51eea8b
--- /dev/null
+++ b/dev/logic/pom.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.eclipse.openk.domain.dynamic-topology</groupId>
+    <artifactId>dynamic-topology-logic</artifactId>
+    <version>2.21.0-SNAPSHOT</version>
+
+    <name>${project.groupId}.${project.artifactId}</name>
+
+    <parent>
+        <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+        <artifactId>build-parentpom-logic</artifactId>
+        <version>2.20.0</version>
+        <relativePath></relativePath>
+    </parent>
+
+    <dependencies>
+        <!-- org.eclipse -->
+        <dependency>
+            <groupId>org.eclipse.openk.domain.dynamic-topology</groupId>
+            <artifactId>dynamic-topology-model</artifactId>
+            <version>2.21.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.openk.domain.static-topology</groupId>
+            <artifactId>static-topology-logic</artifactId>
+            <version>2.20.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.openk.cim</groupId>
+            <artifactId>cim17v07</artifactId>
+            <version>2.20.0</version>
+        </dependency>
+
+        <!-- scope: test -->
+        <!-- org.eclipse.openk -->
+        <dependency>
+            <groupId>org.eclipse.openk.service</groupId>
+            <artifactId>service-logic</artifactId>
+            <version>2.20.0</version>
+            <type>test-jar</type>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/dev/logic/src/main/java/.gitignore b/dev/logic/src/main/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/logic/src/main/java/.gitignore
diff --git a/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/ConnectedConnectingEquipments_1_View.java b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/ConnectedConnectingEquipments_1_View.java
new file mode 100644
index 0000000..4d9d74d
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/ConnectedConnectingEquipments_1_View.java
@@ -0,0 +1,305 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.logic.view;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
+
+import org.eclipse.openk.common.collection.CollectionUtilities;
+import org.eclipse.openk.common.key.Key;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.common.messaging.messages.InvalidParameterException;
+import org.eclipse.openk.common.system.UnsupportedTypeException;
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+import org.eclipse.openk.common.value.Assertions;
+import org.eclipse.openk.common.value.UnsupportedOptionException;
+import org.eclipse.openk.common.value.parameter.exceptions.InvalidParameterValueException;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.domain.dynamictopology.logic.view.parameters.AbstractDynamicTopologyQueryParameters;
+import org.eclipse.openk.domain.dynamictopology.logic.view.parameters.IConnectedConnectingEquipmentsQueryParameters;
+import org.eclipse.openk.domain.statictopology.core.StaticTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.logic.core.query.AboveConverterTerminalSelector;
+import org.eclipse.openk.domain.statictopology.logic.core.query.BehindConverterTerminalSelector;
+import org.eclipse.openk.domain.statictopology.logic.core.query.ConnectionState;
+import org.eclipse.openk.domain.statictopology.logic.core.query.IInterrupterPositionProvider;
+import org.eclipse.openk.domain.statictopology.logic.core.query.ITerminalsSelector;
+import org.eclipse.openk.domain.statictopology.logic.core.query.IgnoreInterrupterPositionProvider;
+import org.eclipse.openk.domain.statictopology.logic.core.query.NormalInterrupterPositionProvider;
+import org.eclipse.openk.domain.statictopology.logic.core.query.Selector;
+import org.eclipse.openk.domain.statictopology.logic.core.query.TopologyTraveler;
+import org.eclipse.openk.domain.statictopology.logic.core.query.filter.AcceptedTopologicalResourceTypeFilter;
+import org.eclipse.openk.domain.statictopology.model.core.IConnectingEquipment;
+import org.eclipse.openk.domain.statictopology.model.core.IConverter;
+import org.eclipse.openk.domain.statictopology.model.core.IEquipmentContainer;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.logic.view.ViewConfiguration;
+import org.eclipse.openk.service.core.logic.view.ViewInformation;
+import org.eclipse.openk.service.logic.IServiceLogicController;
+import org.eclipse.openk.service.logic.view.AbstractFilterView;
+import org.eclipse.openk.service.logic.view.filter.IEntityFilter;
+import org.eclipse.openk.service.model.repository.IRepository;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The view for connected-connecting-equipments.
+ * 
+ * @author 2018-11-27 Renko Ortgies
+ */
+@ViewInformation(scope = DynamicTopologyDefaults.SCOPE_CONNECTED_CONNECTING_EQUIPMENTS, parametersType = IConnectedConnectingEquipmentsQueryParameters.class)
+public final class ConnectedConnectingEquipments_1_View extends AbstractFilterView<ViewConfiguration, IEquipmentContainer, IConnectedConnectingEquipmentsQueryParameters> {
+
+  // Constants
+  private static final ILogger LOGGER = LoggerFactory.createLogger(ConnectedConnectingEquipments_1_View.class);
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public ConnectedConnectingEquipments_1_View(IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected Collection<IEntityFilter> createFilters(IConnectedConnectingEquipmentsQueryParameters queryParameters) {
+
+    Collection<IEntityFilter> result;
+
+    if(queryParameters == null)
+      result = null;
+    else {
+      Collection<IEntityFilter> filters = new ArrayList<>();
+
+      /* topological-resource-types */
+      if(CollectionUtilities.hasContent(queryParameters.getTopologicalResourceTypes()))
+        filters.add(new AcceptedTopologicalResourceTypeFilter(queryParameters.getTopologicalResourceTypes()));
+
+      result = filters.isEmpty() ? null : filters;
+    }
+
+    return result;
+  }
+
+  /**
+   * Creates the {@link IInterrupterPositionProvider} for the specified {@link ConnectionState}.
+   * <p>
+   * <b>NOTE:</b><br/>
+   * Currently the following connection-states are supported:
+   * <ul>
+   * <li>{@link ConnectionState#Ignore}</li>
+   * <li>{@link ConnectionState#Normal}</li>
+   * </ul>
+   * </p>
+   * 
+   * @param connectionState
+   *          the {@link ConnectionState}
+   * @return the {@link IInterrupterPositionProvider}; not <code>null</code>
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>connectionState</code> is <code>null</code></li>
+   *           </ul>
+   * @throws UnsupportedOptionException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>connectionState</code> has an unsupported value</li>
+   *           </ul>
+   */
+  private IInterrupterPositionProvider createInterrupterPositionProvider(ConnectionState connectionState) throws IllegalArgumentException, UnsupportedOptionException {
+
+    if(connectionState == null)
+      throw new IllegalArgumentException("connectionState", new NullPointerException());
+    else {
+      IInterrupterPositionProvider result;
+
+      switch(connectionState) {
+        case Ignore:
+          result = new IgnoreInterrupterPositionProvider();
+          break;
+        case Normal:
+          result = new NormalInterrupterPositionProvider();
+          break;
+        default:
+          throw new UnsupportedOptionException(connectionState);
+      }
+
+      return result;
+    }
+  }
+
+  /**
+   * Creates the {@link ITerminalsSelector} for the specified {@link Selector}.
+   * <p>
+   * <b>NOTE:</b><br/>
+   * Currently the following selectors are supported:
+   * <ul>
+   * <li>{@link Selector#Above}</li>
+   * <li>{@link Selector#Behind}</li>
+   * </ul>
+   * </p>
+   * 
+   * @param selector
+   *          the {@link Selector}
+   * @param interrupterPositionProvider
+   *          the {@link IInterrupterPositionProvider}
+   * @return the {@link ITerminalsSelector}; not <code>null</code>
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>selector</code> is <code>null</code></li>
+   *           <li><code>interrupterPositionProvider</code> is <code>null</code></li>
+   *           </ul>
+   * @throws UnsupportedOptionException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>selector</code> has an unsupported value</li>
+   *           </ul>
+   */
+  private ITerminalsSelector createTerminalSelector(Selector selector, IInterrupterPositionProvider interrupterPositionProvider) throws IllegalArgumentException, UnsupportedOptionException {
+
+    if(selector == null)
+      throw new IllegalArgumentException("selector", new NullPointerException());
+    else {
+      ITerminalsSelector result;
+
+      switch(selector) {
+        case Above:
+          result = new AboveConverterTerminalSelector(interrupterPositionProvider);
+          break;
+        case Behind:
+          result = new BehindConverterTerminalSelector(interrupterPositionProvider);
+          break;
+        default:
+          throw new UnsupportedOptionException(selector);
+      }
+
+      return result;
+    }
+  }
+
+  /**
+   * Fetches the {@link IConnectingEquipment}s, that connected with the specified {@link IConverter}, using the specified parameters.
+   * 
+   * @param converter
+   *          the { @link IConverter}; can be <code>null</code>
+   * @param queryParameters
+   *          the query-parameters; not <code>null</code>
+   * @return the {@link IConnectingEquipment}s; can be <code>null</code> or empty
+   */
+  @SuppressWarnings("checkstyle:multiplestringliterals")
+  @SuppressWarningsReason(reasons = Reason.Checkstyle_MultipleStringsInNotificationTexts)
+  private Collection<IEntity> fetchConnectedConnectingEquipments(IConverter converter, IConnectedConnectingEquipmentsQueryParameters queryParameters) {
+
+    Collection<IEntity> result;
+
+    if(converter == null)
+      result = null;
+    else {
+      IInterrupterPositionProvider interrupterPositionProvider;
+      ITerminalsSelector terminalSelector;
+
+      /* create interrupter-position-provider */
+      try {
+        interrupterPositionProvider = createInterrupterPositionProvider(queryParameters.getConnectionState());
+      }
+      catch(UnsupportedOptionException exception) {
+        getLogger().debug("The connection-state '" + queryParameters.getConnectionState() + "' is not supported!");
+        throw new InvalidParameterException(AbstractDynamicTopologyQueryParameters.PARAMETER_CONNECTION_STATE, exception);
+      }
+
+      /* create terminal-selector */
+      try {
+        terminalSelector = createTerminalSelector(queryParameters.getSelector(), interrupterPositionProvider);
+      }
+      catch(UnsupportedOptionException exception) {
+        getLogger().debug("The terminal-selector '" + queryParameters.getSelector() + "' is not supported!");
+        throw new InvalidParameterException(AbstractDynamicTopologyQueryParameters.PARAMETER_SELECTOR, exception);
+      }
+
+      /* create result */
+      {
+        Map<Key, IEntity> topologicalResources;
+        TopologyTraveler topologyTraveler = new TopologyTraveler(terminalSelector);
+
+        /* walk through the topology */
+        topologicalResources = topologyTraveler.travel(converter);
+
+        /* set result */
+        if(!CollectionUtilities.hasContent(topologicalResources))
+          result = null;
+        else
+          result = topologicalResources.values();
+      }
+    }
+
+    return result;
+  }
+
+  @Override
+  protected Collection<IEntity> fetchEntitiesToBeSearched(IConnectedConnectingEquipmentsQueryParameters queryParameters) throws IOException {
+
+    /* check preconditions */
+    {
+      Assertions.assertNotNull("queryParameters", queryParameters);
+    }
+
+    IConverter converter;
+    Collection<IEntity> result;
+
+    /* select converter */
+    {
+      /* get the repository */
+      IEntity entity;
+      IRepository<?> repository = ((IServiceLogicController<?>) getContext()).getRepository(StaticTopologyDefaults.REPOSITORY_KEY_STATIC_TOPOLOGY);
+
+      /* select the entity */
+      entity = repository.select(queryParameters.getConverterId());
+
+      if(entity == null)
+        converter = null;
+      else {
+        if(!(entity instanceof IConverter))
+          // REFACTOR 2018-11-28 Felix Korb: Geeignete Ausnahme schmeißen - der fehlerhafte fachliche Parameter muss als HTTP-Code 400 (nicht 500) an den REST-Client zurückgegeben werden!
+          throw new IOException(new InvalidParameterValueException(IConnectedConnectingEquipmentsQueryParameters.PARAMETER_CONVERTER_ID, queryParameters.getConverterId().toString(), new UnsupportedTypeException(entity.getClass())));
+        else
+          converter = (IConverter) entity;
+      }
+    }
+
+    /* fetch connected connection-equipments */
+    result = fetchConnectedConnectingEquipments(converter, queryParameters);
+
+    return result;
+  }
+
+  // Properties
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+
+}
\ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/PowerSystemResourceTypes_1_View.java b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/PowerSystemResourceTypes_1_View.java
new file mode 100644
index 0000000..561289e
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/PowerSystemResourceTypes_1_View.java
@@ -0,0 +1,120 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.logic.view;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Comparator;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.PowerSystemResource;
+import org.eclipse.openk.common.collection.CollectionUtilities;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.common.string.StringUtilities;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.domain.dynamictopology.logic.view.filter.PowerSystemResourceTypeFilter;
+import org.eclipse.openk.domain.dynamictopology.logic.view.parameters.PowerSystemResourceTypes_1_QueryParameters;
+import org.eclipse.openk.domain.statictopology.core.StaticTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.logic.core.query.StaticTopologyQueryUtilities;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.logic.view.ViewConfiguration;
+import org.eclipse.openk.service.core.logic.view.ViewInformation;
+import org.eclipse.openk.service.logic.IServiceLogicController;
+import org.eclipse.openk.service.logic.view.AbstractFilterView;
+import org.eclipse.openk.service.logic.view.filter.IEntityFilter;
+import org.eclipse.openk.service.model.repository.IRepository;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The view for {@link PowerSystemResource}-types.
+ * 
+ * @author 2019-02-06 Christian Brunzendorf
+ * @author 2018-06-24 Felix Korb
+ * @author 2017-10-26 Michael Korta
+ * @author 2017-10-26 Tomke Meyer
+ */
+@ViewInformation(scope = DynamicTopologyDefaults.SCOPE_POWER_SYSTEM_RESOURCE_TYPES, parametersType = PowerSystemResourceTypes_1_QueryParameters.class)
+public final class PowerSystemResourceTypes_1_View extends AbstractFilterView<ViewConfiguration, IEntity, PowerSystemResourceTypes_1_QueryParameters> {
+
+  // Constants
+  private static final ILogger LOGGER = LoggerFactory.createLogger(PowerSystemResourceTypes_1_View.class);
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public PowerSystemResourceTypes_1_View(IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected Comparator<IEntity> createResultDataComparator(PowerSystemResourceTypes_1_QueryParameters queryParameters) {
+
+    Comparator<IEntity> result;
+
+    result = (IEntity value1, IEntity value2) -> {
+      String name1 = StaticTopologyQueryUtilities.getTopologicalResourceTypeName(value1);
+      String name2 = StaticTopologyQueryUtilities.getTopologicalResourceTypeName(value2);
+
+      return StringUtilities.compareIgnoreCase(name1, name2);
+    };
+
+    return result;
+  }
+
+  @Override
+  protected Collection<IEntityFilter> createFilters(PowerSystemResourceTypes_1_QueryParameters queryParameters) {
+
+    Collection<IEntityFilter> result;
+
+    /* create & add filters */
+    result = CollectionUtilities.toList(new PowerSystemResourceTypeFilter());
+
+    return result;
+  }
+
+  @Override
+  protected Collection<IEntity> fetchEntitiesToBeSearched(PowerSystemResourceTypes_1_QueryParameters queryParameters) throws IOException {
+
+    Collection<IEntity> result;
+
+    /* fetch entities from repository */
+    {
+      IRepository<IEntity> repository = (IRepository<IEntity>) ((IServiceLogicController<?>) getContext().getServiceController()).getRepository(StaticTopologyDefaults.REPOSITORY_KEY_STATIC_TOPOLOGY);
+
+      if(repository.isEmpty())
+        result = null;
+      else
+        result = (Collection<IEntity>) repository.findAll();
+    }
+
+    return result;
+  }
+
+  // Properties
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+}
diff --git a/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/PowerSystemResources_1_View.java b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/PowerSystemResources_1_View.java
new file mode 100644
index 0000000..c519648
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/PowerSystemResources_1_View.java
@@ -0,0 +1,134 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.logic.view;
+
+import java.io.IOException;
+import java.util.Collection;
+
+import org.eclipse.openk.common.collection.CollectionUtilities;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.domain.dynamictopology.logic.view.parameters.PowerSystemResources_1_QueryParameters;
+import org.eclipse.openk.domain.statictopology.core.StaticTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.logic.core.query.StaticTopologyQueryUtilities;
+import org.eclipse.openk.domain.statictopology.logic.core.query.filter.AcceptedTopologicalResourceTypeFilter;
+import org.eclipse.openk.domain.statictopology.model.core.IEquipmentContainer;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.logic.view.ViewConfiguration;
+import org.eclipse.openk.service.core.logic.view.ViewInformation;
+import org.eclipse.openk.service.logic.IServiceLogicController;
+import org.eclipse.openk.service.logic.view.AbstractFilterView;
+import org.eclipse.openk.service.logic.view.filter.IEntityFilter;
+import org.eclipse.openk.service.model.repository.IRepository;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The view for PowerSystemResources.
+ * 
+ * @author 2018-03-23 Christian Brunzendorf
+ * @author 2018-06-26 Felix Korb
+ * @author 2017-10-24 Michael Korta
+ * @author 2017-10-26 Tomke Meyer
+ * @author 2017-11-01 Renko Ortgies
+ */
+@ViewInformation(scope = DynamicTopologyDefaults.SCOPE_POWER_SYSTEM_RESOURCES, parametersType = PowerSystemResources_1_QueryParameters.class)
+public final class PowerSystemResources_1_View extends AbstractFilterView<ViewConfiguration, IEntity, PowerSystemResources_1_QueryParameters> {
+
+  // Constants
+  private static final ILogger LOGGER = LoggerFactory.createLogger(PowerSystemResources_1_View.class);
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public PowerSystemResources_1_View(IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected Collection<IEntityFilter> createFilters(PowerSystemResources_1_QueryParameters queryParameters) {
+
+    Collection<IEntityFilter> result;
+
+    result = CollectionUtilities.toList(new AcceptedTopologicalResourceTypeFilter(queryParameters.getPowerSystemResourceTypes()));
+
+    return result;
+  }
+
+  @Override
+  protected Collection<IEntity> fetchEntitiesToBeSearched(PowerSystemResources_1_QueryParameters queryParameters) throws IOException {
+
+    if(queryParameters == null)
+      throw new IllegalArgumentException("queryParameters", new NullPointerException());
+    else {
+      IRepository<IEntity> repository = (IRepository<IEntity>) ((IServiceLogicController<?>) getContext().getServiceController()).getRepository(StaticTopologyDefaults.REPOSITORY_KEY_STATIC_TOPOLOGY);
+      Collection<IEntity> result;
+
+      /* check repository content */
+      if(repository.isEmpty())
+        result = null;
+      else {
+        IEntity entryPoint;
+
+        /* get entry-point */
+        if(queryParameters.getEntryPointId() != null) {
+          entryPoint = repository.select(queryParameters.getEntryPointId());
+
+          /* check the existence of the entry-point */
+          if(entryPoint == null)
+            // REMIND 2018-06-26 Felix Korb: Bei weiteren unterstützen Anwendungsfällen muss die Logik umgebaut werden und die Log-Meldung kann entfallen.
+            getLogger().debug("Unknown entry-point-id '" + queryParameters.getEntryPointId() + "'!");
+        }
+        else
+          entryPoint = null;
+
+        /* fetch entities */
+        if(entryPoint == null)
+          /* return all entities within the topology */
+          result = (Collection<IEntity>) repository.findAll();
+        else {
+          /* ensure that the entry-point is an equipment-container */
+          if(!(entryPoint instanceof IEquipmentContainer)) {
+            result = null;
+
+            // REMIND 2018-06-26 Felix Korb: Bei weiteren unterstützen Anwendungsfällen muss die Logik umgebaut werden und die Log-Meldung kann entfallen.
+            getLogger().debug("The entry-point (id='" + queryParameters.getEntryPointId() + "') is not an instance of an equipment-container!");
+          }
+          else
+            /* fetch entities within the entry-point */
+            result = StaticTopologyQueryUtilities.selectTopologicalResources((IEquipmentContainer) entryPoint, queryParameters.getFetchType());
+        }
+      }
+
+      return result;
+    }
+  }
+
+  // Properties
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+}
diff --git a/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/Topology_1_View.java b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/Topology_1_View.java
new file mode 100644
index 0000000..36ed951
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/Topology_1_View.java
@@ -0,0 +1,303 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.logic.view;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Map;
+
+import org.eclipse.openk.common.collection.CollectionUtilities;
+import org.eclipse.openk.common.key.Key;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.common.messaging.messages.InvalidParameterException;
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+import org.eclipse.openk.common.value.UnsupportedOptionException;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.domain.dynamictopology.logic.view.parameters.AbstractDynamicTopologyQueryParameters;
+import org.eclipse.openk.domain.dynamictopology.logic.view.parameters.Topology_1_QueryParameters;
+import org.eclipse.openk.domain.statictopology.core.StaticTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.logic.core.query.AboveConverterTerminalSelector;
+import org.eclipse.openk.domain.statictopology.logic.core.query.AllTerminalsSelector;
+import org.eclipse.openk.domain.statictopology.logic.core.query.BehindConverterTerminalSelector;
+import org.eclipse.openk.domain.statictopology.logic.core.query.ConnectionState;
+import org.eclipse.openk.domain.statictopology.logic.core.query.IInterrupterPositionProvider;
+import org.eclipse.openk.domain.statictopology.logic.core.query.ITerminalsSelector;
+import org.eclipse.openk.domain.statictopology.logic.core.query.IgnoreInterrupterPositionProvider;
+import org.eclipse.openk.domain.statictopology.logic.core.query.NormalInterrupterPositionProvider;
+import org.eclipse.openk.domain.statictopology.logic.core.query.Selector;
+import org.eclipse.openk.domain.statictopology.logic.core.query.TopologyTraveler;
+import org.eclipse.openk.domain.statictopology.model.core.IConnectingEquipment;
+import org.eclipse.openk.domain.statictopology.model.core.ITopologicalResource;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.powertransformer.PowerTransformer;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.logic.view.ViewConfiguration;
+import org.eclipse.openk.service.core.logic.view.ViewInformation;
+import org.eclipse.openk.service.logic.IServiceLogicController;
+import org.eclipse.openk.service.logic.view.AbstractView;
+import org.eclipse.openk.service.model.repository.IRepository;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The view for topologies.
+ * 
+ * @author 2017-10-23 Christian Brunzendorf
+ * @author 2018-06-26 Felix Korb
+ * @author 2017-10-23 Frank Jäger
+ * @author 2017-10-26 Michael Korta
+ * @author 2017-10-23 Renko Ortgies
+ * @author 2017-10-26 Tomke Meyer
+ */
+@ViewInformation(scope = DynamicTopologyDefaults.SCOPE_TOPOLOGY, parametersType = Topology_1_QueryParameters.class)
+public final class Topology_1_View extends AbstractView<ViewConfiguration, Collection<IEntity>, Topology_1_QueryParameters> {
+
+  // Constants
+  private static final ILogger LOGGER = LoggerFactory.createLogger(Topology_1_View.class);
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public Topology_1_View(IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  /**
+   * Creates the {@link IInterrupterPositionProvider} for the specified {@link ConnectionState}.
+   * <p>
+   * <b>NOTE:</b><br/>
+   * Currently the following connection-states are supported:
+   * <ul>
+   * <li>{@link ConnectionState#Ignore}</li>
+   * <li>{@link ConnectionState#Normal}</li>
+   * </ul>
+   * </p>
+   * 
+   * @param connectionState
+   *          the {@link ConnectionState}
+   * @return the {@link IInterrupterPositionProvider}; not <code>null</code>
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>connectionState</code> is <code>null</code></li>
+   *           </ul>
+   * @throws UnsupportedOptionException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>connectionState</code> has an unsupported value</li>
+   *           </ul>
+   */
+  private IInterrupterPositionProvider createInterrupterPositionProvider(ConnectionState connectionState) throws IllegalArgumentException, UnsupportedOptionException {
+
+    if(connectionState == null)
+      throw new IllegalArgumentException("connectionState", new NullPointerException());
+    else {
+      IInterrupterPositionProvider result;
+
+      switch(connectionState) {
+        case Ignore:
+          result = new IgnoreInterrupterPositionProvider();
+          break;
+        case Normal:
+          result = new NormalInterrupterPositionProvider();
+          break;
+        default:
+          throw new UnsupportedOptionException(connectionState);
+      }
+
+      return result;
+    }
+  }
+
+  /**
+   * Creates the {@link ITerminalsSelector} for the specified {@link Selector}.
+   * <p>
+   * <b>NOTE:</b><br/>
+   * Currently the following selectors are supported:
+   * <ul>
+   * <li>{@link Selector#Above}</li>
+   * <li>{@link Selector#All}</li>
+   * <li>{@link Selector#Behind}</li>
+   * </ul>
+   * </p>
+   * 
+   * @param selector
+   *          the {@link Selector}
+   * @param interrupterPositionProvider
+   *          the {@link IInterrupterPositionProvider}
+   * @return the {@link ITerminalsSelector}; not <code>null</code>
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>selector</code> is <code>null</code></li>
+   *           <li><code>interrupterPositionProvider</code> is <code>null</code></li>
+   *           </ul>
+   * @throws UnsupportedOptionException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>selector</code> has an unsupported value</li>
+   *           </ul>
+   */
+  private ITerminalsSelector createTerminalSelector(Selector selector, IInterrupterPositionProvider interrupterPositionProvider) throws IllegalArgumentException, UnsupportedOptionException {
+
+    if(selector == null)
+      throw new IllegalArgumentException("selector", new NullPointerException());
+    else {
+      ITerminalsSelector result;
+
+      switch(selector) {
+        case Above:
+          result = new AboveConverterTerminalSelector(interrupterPositionProvider);
+          break;
+        case All:
+          result = new AllTerminalsSelector();
+          break;
+        case Behind:
+          result = new BehindConverterTerminalSelector(interrupterPositionProvider);
+          break;
+        default:
+          throw new UnsupportedOptionException(selector);
+      }
+
+      return result;
+    }
+  }
+
+  @Override
+  public Collection<IEntity> executeQuery(Topology_1_QueryParameters queryParameters) throws IllegalArgumentException, IOException {
+
+    if(queryParameters == null)
+      throw new IllegalArgumentException("queryParameters", new NullPointerException());
+    else {
+      IRepository<IEntity> repository = (IRepository<IEntity>) ((IServiceLogicController<?>) getContext().getServiceController()).getRepository(StaticTopologyDefaults.REPOSITORY_KEY_STATIC_TOPOLOGY);
+      Collection<IEntity> result;
+
+      /* check repository content */
+      if(repository.isEmpty())
+        result = null;
+      else {
+        IEntity entryPoint;
+
+        /* get entry-point */
+        if(queryParameters.getEntryPointId() != null) {
+          entryPoint = repository.select(queryParameters.getEntryPointId());
+
+          /* check the existence of the entry-point */
+          if(entryPoint == null)
+            getLogger().debug("Unknown entry-point-id '" + queryParameters.getEntryPointId() + "'!");
+        }
+        else
+          entryPoint = null;
+
+        /* fetch entities */
+        if(entryPoint == null)
+          /* return all entities within the topology */
+          result = (Collection<IEntity>) repository.findAll();
+        else {
+          /* ensure that the entry-point is a power-transformer */
+          if(!(entryPoint instanceof PowerTransformer)) {
+            result = null;
+
+            getLogger().debug("The entry-point (id='" + queryParameters.getEntryPointId() + "') is not an instance of a power-transformer!");
+            throw new InvalidParameterException(AbstractDynamicTopologyQueryParameters.PARAMETER_ENTRY_POINT_ID); // REMIND 2018-06-26 Felix Korb: Bei weiteren unterstützen Anwendungsfällen muss die Logik umgebaut werden und die Log-Meldung kann entfallen.
+          }
+          else
+            /* fetch entities within the entry-point */
+            result = selectConnectedTopologicalResources((PowerTransformer) entryPoint, queryParameters);
+        }
+      }
+
+      return result;
+    }
+  }
+
+  /**
+   * Selects the {@link ITopologicalResource}s that are connected in the topology.
+   * The content of the result-set depends on the specified query-parameters.
+   * <p>
+   * <b><i>NOTE:</i></b><br/>
+   * It is assumed that
+   * <ul>
+   * <li><code>entryPoint</code> is not <code>null</code></li>
+   * <li><code>queryParameters</code> is not <code>null</code></li>
+   * </ul>
+   * </p>
+   * 
+   * @param entryPoint
+   *          the entry-point
+   * @param queryParameters
+   *          the {@link Topology_1_QueryParameters}
+   * @return the {@link ITopologicalResource}s; can be <code>null</code> or empty
+   */
+  @SuppressWarnings("checkstyle:multiplestringliterals")
+  @SuppressWarningsReason(reasons = Reason.Checkstyle_MultipleStringsInNotificationTexts)
+  private Collection<IEntity> selectConnectedTopologicalResources(IConnectingEquipment entryPoint, Topology_1_QueryParameters queryParameters) {
+
+    IInterrupterPositionProvider interrupterPositionProvider;
+    Collection<IEntity> result;
+    ITerminalsSelector terminalSelector;
+
+    /* create interrupter-position-provider */
+    try {
+      interrupterPositionProvider = createInterrupterPositionProvider(queryParameters.getConnectionState());
+    }
+    catch(UnsupportedOptionException exception) {
+      getLogger().debug("The connection-state '" + queryParameters.getConnectionState() + "' is not supported!");
+      throw new InvalidParameterException(AbstractDynamicTopologyQueryParameters.PARAMETER_CONNECTION_STATE, exception);
+    }
+
+    /* create terminal-selector */
+    try {
+      terminalSelector = createTerminalSelector(queryParameters.getSelector(), interrupterPositionProvider);
+    }
+    catch(UnsupportedOptionException exception) {
+      getLogger().debug("The terminal-selector '" + queryParameters.getSelector() + "' is not supported!");
+      throw new InvalidParameterException(AbstractDynamicTopologyQueryParameters.PARAMETER_SELECTOR, exception);
+    }
+
+    /* create result */
+    {
+      Map<Key, IEntity> topologicalResources;
+      TopologyTraveler topologyTraveler = new TopologyTraveler(terminalSelector);
+
+      /* walk through the topology */
+      topologicalResources = topologyTraveler.travel(entryPoint);
+
+      /* set result */
+      if(!CollectionUtilities.hasContent(topologicalResources))
+        result = null;
+      else
+        result = topologicalResources.values();
+    }
+
+    return result;
+  }
+
+  // Properties
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+}
\ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/filter/PowerSystemResourceTypeFilter.java b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/filter/PowerSystemResourceTypeFilter.java
new file mode 100644
index 0000000..9943b2e
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/filter/PowerSystemResourceTypeFilter.java
@@ -0,0 +1,75 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.logic.view.filter;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.openk.common.string.StringUtilities;
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+import org.eclipse.openk.domain.statictopology.model.core.TopologicalResourceType;
+import org.eclipse.openk.domain.statictopology.model.electricity.PowerSystemResource;
+import org.eclipse.openk.service.logic.view.filter.EntityTypeFilter;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+
+/**
+ * The filter for power-system-resource-types.
+ * 
+ * @author 2018-06-24 Felix Korb
+ */
+public final class PowerSystemResourceTypeFilter extends EntityTypeFilter {
+
+  // Constants
+  private Set<String> alreadyConsideredTopologicalResourceTypes;
+
+  // Constructors
+  @SuppressWarnings("checkstyle:javadocmethod")
+  @SuppressWarningsReason(reasons = Reason.Checkstyle_ConstructorWithoutParameter)
+  public PowerSystemResourceTypeFilter() {
+
+    super(PowerSystemResource.class);
+
+    this.alreadyConsideredTopologicalResourceTypes = new HashSet<>();
+  }
+
+  // Methods
+  @Override
+  protected boolean isAlreadyConsidered(IEntity entity) {
+
+    boolean result;
+
+    /* check already considered topological-resource-types */
+    if(TopologicalResourceType.class.equals(entity.getClass())) {
+      String name = ((TopologicalResourceType) entity).getName();
+
+      if(!StringUtilities.hasContent(name))
+        result = false;
+      else {
+        if(alreadyConsideredTopologicalResourceTypes.contains(name))
+          result = true;
+        else {
+          alreadyConsideredTopologicalResourceTypes.add(name);
+          result = false;
+        }
+      }
+    }
+    /* check already considered types */
+    else
+      result = super.isAlreadyConsidered(entity);
+
+    return result;
+  }
+}
\ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/parameters/AbstractDynamicTopologyQueryParameters.java b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/parameters/AbstractDynamicTopologyQueryParameters.java
new file mode 100644
index 0000000..24bd092
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/parameters/AbstractDynamicTopologyQueryParameters.java
@@ -0,0 +1,95 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.logic.view.parameters;
+
+import java.util.UUID;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.PowerSystemResource;
+import org.eclipse.openk.common.model.attribute.value.annotations.Value;
+import org.eclipse.openk.domain.statictopology.logic.core.query.ConnectionState;
+import org.eclipse.openk.domain.statictopology.logic.core.query.FetchType;
+import org.eclipse.openk.domain.statictopology.logic.core.query.Selector;
+
+/**
+ * The base of all {@link PowerSystemResource} query parameters.
+ *
+ * @author 2018-06-24 Felix Korb
+ */
+public abstract class AbstractDynamicTopologyQueryParameters {
+
+  // Constants
+  public static final String PARAMETER_CONNECTION_STATE = "connection-state";
+  public static final String PARAMETER_ENTRY_POINT_ID = "entry-point-id";
+  public static final String PARAMETER_FETCH_TYPE = "fetch-type";
+  public static final String PARAMETER_SELECTOR = "selector";
+  public static final String PARAMETER_TOPOLOGY_ID = "topology-id";
+
+  // Attributes
+  @Value(name = PARAMETER_CONNECTION_STATE, defaultValue = "Ignore")
+  private ConnectionState connectionState;
+
+  @Value(name = PARAMETER_ENTRY_POINT_ID)
+  private UUID entryPointId;
+
+  @Value(name = PARAMETER_FETCH_TYPE, defaultValue = "Lazy")
+  private FetchType fetchType;
+
+  @Value(name = PARAMETER_SELECTOR, defaultValue = "Containing")
+  private Selector selector;
+
+  @Value(name = PARAMETER_TOPOLOGY_ID, optional = true)
+  private UUID topologyId;
+
+  // Properties
+  /**
+   * @return the connection state; not <code>null</code>
+   */
+  public final ConnectionState getConnectionState() {
+
+    return connectionState;
+  }
+
+  /**
+   * @return the entry point id; can be <code>null</code>
+   */
+  public final UUID getEntryPointId() {
+
+    return entryPointId;
+  }
+
+  /**
+   * @return the {@link FetchType}; not <code>null</code>
+   */
+  public final FetchType getFetchType() {
+
+    return fetchType;
+  }
+
+  /**
+   * @return the selector; not <code>null</code>
+   */
+  public final Selector getSelector() {
+
+    return selector;
+  }
+
+  /**
+   * @return the topology-id; can be <code>null</code>
+   */
+  public UUID getTopologyId() {
+
+    return topologyId;
+  }
+}
\ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/parameters/IConnectedConnectingEquipmentsQueryParameters.java b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/parameters/IConnectedConnectingEquipmentsQueryParameters.java
new file mode 100644
index 0000000..c282472
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/parameters/IConnectedConnectingEquipmentsQueryParameters.java
@@ -0,0 +1,59 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.logic.view.parameters;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.logic.core.query.ConnectionState;
+import org.eclipse.openk.domain.statictopology.logic.core.query.Selector;
+import org.eclipse.openk.domain.statictopology.logic.core.view.parameters.IStaticTopologyQueryParameters;
+import org.eclipse.openk.domain.statictopology.model.core.IConverter;
+
+/**
+ * Defines the commonalities of all {@link DynamicTopologyDefaults#SCOPE_CONNECTED_CONNECTING_EQUIPMENTS} query parameters.
+ *
+ * @author 2018-11-27 Felix Korb
+ */
+public interface IConnectedConnectingEquipmentsQueryParameters extends IStaticTopologyQueryParameters {
+
+  // Constants
+  String PARAMETER_CONNECTION_STATE = "connection-state";
+  String PARAMETER_CONVERTER_ID = "converter-id";
+  String PARAMETER_SELECTOR = "selector";
+  String PARAMETER_TOPOLOGICAL_RESOURCE_TYPES = "topological-resource-types";
+
+  // Properties
+  /**
+   * @return the connection state; not <code>null</code>
+   */
+  ConnectionState getConnectionState();
+
+  /**
+   * @return the identifier of the {@link IConverter}; not <code>null</code>
+   */
+  UUID getConverterId();
+
+  /**
+   * @return the selector; not <code>null</code>
+   */
+  Selector getSelector();
+
+  /**
+   * @return the topological-resource types; can be <code>null</code> or empty
+   */
+  List<String> getTopologicalResourceTypes();
+}
\ No newline at end of file
diff --git a/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/parameters/PowerSystemResourceTypes_1_QueryParameters.java b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/parameters/PowerSystemResourceTypes_1_QueryParameters.java
new file mode 100644
index 0000000..c660a44
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/parameters/PowerSystemResourceTypes_1_QueryParameters.java
@@ -0,0 +1,29 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.logic.view.parameters;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.PowerSystemResource;
+
+/**
+ * The {@link PowerSystemResource}-types query parameters.
+ *
+ * @author 2017-11-14 Christian Brunzendorf
+ * @author 2018-06-24 Felix Korb
+ * @author 2017-10-24 Michael Korta
+ */
+public class PowerSystemResourceTypes_1_QueryParameters extends AbstractDynamicTopologyQueryParameters {
+
+  /* NOOP */
+}
diff --git a/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/parameters/PowerSystemResources_1_QueryParameters.java b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/parameters/PowerSystemResources_1_QueryParameters.java
new file mode 100644
index 0000000..2c92be0
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/parameters/PowerSystemResources_1_QueryParameters.java
@@ -0,0 +1,49 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.logic.view.parameters;
+
+import java.util.List;
+
+import org.eclipse.openk.cim.cim17v07.TC57CIM.IEC61970.Base.Core.PowerSystemResource;
+import org.eclipse.openk.common.model.attribute.value.annotations.ListValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.Value;
+
+/**
+ * The {@link PowerSystemResource}s query parameters.
+ *
+ * @author 2017-10-26 Christian Brunzendorf
+ * @author 2018-06-24 Felix Korb
+ * @author 2017-10-24 Michael Korta
+ * @author 2018-11-29 Renko Ortgies
+ */
+public class PowerSystemResources_1_QueryParameters extends AbstractDynamicTopologyQueryParameters {
+
+  // Constants
+  public static final String PARAMETER_POWER_SYSTEM_RESOURCE_TYPES = "power-system-resource-types";
+
+  // Attributes
+  @ListValidator(itemType = String.class)
+  @Value(name = PARAMETER_POWER_SYSTEM_RESOURCE_TYPES, optional = false)
+  private List<String> powerSystemResourceTypes;
+
+  // Properties
+  /**
+   * @return the {@link PowerSystemResource}-types; can be <code>null</code> or empty
+   */
+  public final List<String> getPowerSystemResourceTypes() {
+
+    return powerSystemResourceTypes;
+  }
+}
diff --git a/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/parameters/Topology_1_QueryParameters.java b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/parameters/Topology_1_QueryParameters.java
new file mode 100644
index 0000000..cc4b526
--- /dev/null
+++ b/dev/logic/src/main/java/org/eclipse/openk/domain/dynamictopology/logic/view/parameters/Topology_1_QueryParameters.java
@@ -0,0 +1,28 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.logic.view.parameters;
+
+import org.eclipse.openk.domain.dynamictopology.logic.view.Topology_1_View;
+
+/**
+ * The {@link Topology_1_View} query parameters.
+ *
+ * @author 2018-06-24 Felix Korb
+ * @author 2017-09-27 Renko Ortgies
+ */
+public class Topology_1_QueryParameters extends AbstractDynamicTopologyQueryParameters {
+
+  /* NOOP */
+}
\ No newline at end of file
diff --git a/dev/logic/src/main/resources/.gitignore b/dev/logic/src/main/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/logic/src/main/resources/.gitignore
diff --git a/dev/logic/src/test/java/.gitignore b/dev/logic/src/test/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/logic/src/test/java/.gitignore
diff --git a/dev/logic/src/test/java/org/eclipse/openk/domain/dynamictopology/logic/view/ConnectedConnectingEquipments_1_ViewTest.java b/dev/logic/src/test/java/org/eclipse/openk/domain/dynamictopology/logic/view/ConnectedConnectingEquipments_1_ViewTest.java
new file mode 100644
index 0000000..f195ae2
--- /dev/null
+++ b/dev/logic/src/test/java/org/eclipse/openk/domain/dynamictopology/logic/view/ConnectedConnectingEquipments_1_ViewTest.java
@@ -0,0 +1,656 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.logic.view;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.UUID;
+
+import org.eclipse.openk.common.collection.CollectionUtilities;
+import org.eclipse.openk.common.key.Key;
+import org.eclipse.openk.common.key.OriginalKey;
+import org.eclipse.openk.common.key.OriginalKeyType;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.messages.InvalidParameterException;
+import org.eclipse.openk.common.model.attribute.value.annotations.ListValidator;
+import org.eclipse.openk.common.model.attribute.value.annotations.Value;
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+import org.eclipse.openk.common.test.IUnitTest;
+import org.eclipse.openk.domain.dynamictopology.logic.view.parameters.IConnectedConnectingEquipmentsQueryParameters;
+import org.eclipse.openk.domain.statictopology.core.StaticTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.logic.core.query.ConnectionState;
+import org.eclipse.openk.domain.statictopology.logic.core.query.Selector;
+import org.eclipse.openk.domain.statictopology.logic.core.query.filter.AcceptedTopologicalResourceTypeFilter;
+import org.eclipse.openk.domain.statictopology.model.core.ConnectivityNode;
+import org.eclipse.openk.domain.statictopology.model.core.IConnectingEquipment;
+import org.eclipse.openk.domain.statictopology.model.core.IConverter;
+import org.eclipse.openk.domain.statictopology.model.core.Terminal;
+import org.eclipse.openk.domain.statictopology.model.core.Terminal.TerminalBuilder;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.powertransformer.PowerTransformer;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.powertransformer.PowerTransformer.PowerTransformerBuilder;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.powertransformer.PowerTransformerEnd;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.powertransformer.PowerTransformerEnd.PowerTransformerEndBuilder;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.switches.Breaker;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.switches.Breaker.BreakerBuilder;
+import org.eclipse.openk.domain.statictopology.model.electricity.substation.switches.Switch;
+import org.eclipse.openk.service.logic.IServiceLogicController;
+import org.eclipse.openk.service.logic.view.filter.IEntityFilter;
+import org.eclipse.openk.service.model.repository.IRepository;
+import org.eclipse.openk.service.model.repository.InMemoryRepository;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.mockito.Mockito;
+
+/**
+ * The test for the {@link ConnectedConnectingEquipments_1_View}.
+ * 
+ * @author 2018-11-30 Renko Ortgies
+ */
+@SuppressWarnings({ "checkstyle:multiplestringliterals", "rawtypes" })
+@SuppressWarningsReason(reasons = { Reason.Checkstyle_MultipleStringsInTest, Reason.Java_NecessaryUsageOfRawType })
+public final class ConnectedConnectingEquipments_1_ViewTest implements IUnitTest {
+
+  // Constants
+  private static final UUID EQUIPMENT_CONTAINER_ID = UUID.fromString("89edf801-13c2-4fb6-9fe1-4c01b7b07b21");
+  private static final UUID EQUIPMENT_ID = UUID.fromString("99edf801-13c2-4fb6-9fe1-4c01b7b07b21");
+
+  // Attributes
+  private ConnectedConnectingEquipments_1_View classUnderTest;
+  private IRepository repositoryMock;
+  private IServiceLogicController<?> contextMock;
+
+  // Rules
+  @Rule
+  public ExpectedException thrown = ExpectedException.none();
+
+  // Methods
+  /**
+   * Creates the {@link Breaker}.
+   *
+   * @param mRid
+   *          the {@link Breaker}-mRid; not <code>null</code>
+   * @return the {@link Breaker}; not <code>null</code>
+   */
+  private Switch createBreaker(UUID mRid) {
+
+    return new BreakerBuilder() //
+        .withKey(new Key(Breaker.class, mRid)) //
+        .withDescription("Breaker description") //
+        .withName("Breaker") //
+        .withOriginalKeys(CollectionUtilities.toMap(new OriginalKey(new OriginalKeyType("Breaker", "name"), "mrid1"))) //
+        .build();
+  }
+
+  /**
+   * Creates a {@link ConnectivityNode} with a random key.
+   *
+   * @return the {@link ConnectivityNode}; not <code>null</code>
+   */
+  private ConnectivityNode createConnectivityNode() {
+
+    ConnectivityNode result = new ConnectivityNode();
+    result.setKey(new Key(ConnectivityNode.class, UUID.randomUUID()));
+
+    return result;
+  }
+
+  /**
+   * Creates the {@link PowerTransformer}.
+   *
+   * @param mRid
+   *          the {@link PowerTransformer}-mRid; not <code>null</code>
+   * @return the {@link PowerTransformer}; not <code>null</code>
+   */
+  private PowerTransformer createPowerTransformer(UUID mRid) {
+
+    return new PowerTransformerBuilder() //
+        .withKey(new Key(PowerTransformer.class, mRid)) //
+        .withDescription("PowerTransformer description") //
+        .withName("PowerTransformer") //
+        .withOriginalKeys(CollectionUtilities.toMap(new OriginalKey(new OriginalKeyType("PowerTransformer", "name"), mRid.toString()))) //
+        .build();
+  }
+
+  /**
+   * Creates the {@link PowerTransformerEnd}.
+   *
+   * @param mRid
+   *          the {@link PowerTransformerEnd}-mRid; not <code>null</code>
+   * @param terminal
+   *          the {@link Terminal}; not <code>null</code>
+   * @return the {@link PowerTransformerEnd}; not <code>null</code>
+   */
+  private PowerTransformerEnd createPowerTransformerEnd(UUID mRid, Terminal terminal) {
+
+    return new PowerTransformerEndBuilder() //
+        .withKey(new Key(PowerTransformerEnd.class, mRid)) //
+        .withDescription("PowerTransformerEnd description") //
+        .withName("PowerTransformerEnd") //
+        .withOriginalKeys(CollectionUtilities.toMap(new OriginalKey(new OriginalKeyType("PowerTransformerEnd", "name"), mRid.toString()))) //
+        .withTerminal(terminal) //
+        .build();
+  }
+
+  /**
+   * @return the static-topology-{@link IRepository}; not <code>null</code>
+   * @throws IOException
+   *           {@link IOException}
+   */
+  @SuppressWarnings("checkstyle:illegaltype")
+  @SuppressWarningsReason(reasons = Reason.Checkstyle_SpecificCollectionOrMapTypeIsNecessaryToEnsureASpecificRuntimeBehaviour)
+  private IRepository createStaticTopologyRepository() throws IOException {
+
+    IRepository result = new InMemoryRepository<>();
+
+    /* power-transformer */
+    PowerTransformer powerTransformer = createPowerTransformer(EQUIPMENT_ID);
+
+    /* create connectivity-nodes */
+    ConnectivityNode connectivityNode1 = createConnectivityNode();
+    ConnectivityNode connectivityNode2 = createConnectivityNode();
+
+    /* create terminals */
+    LinkedHashMap<Key, Terminal> terminals = new LinkedHashMap<>();
+
+    Terminal terminal1 = createTerminal(UUID.randomUUID(), powerTransformer, connectivityNode1);
+    terminals.put(terminal1.getKey(), terminal1);
+
+    Terminal terminal2 = createTerminal(UUID.randomUUID(), powerTransformer, connectivityNode2);
+    terminals.put(terminal2.getKey(), terminal2);
+
+    /* set terminals for connectivity-nodes */
+    connectivityNode1.setTerminals(terminals);
+    connectivityNode2.setTerminals(terminals);
+
+    /* set terminals for power-transformer */
+    powerTransformer.setTerminals(terminals);
+
+    /* create power-transformer-ends */
+    PowerTransformerEnd powerTransformerEnd1 = createPowerTransformerEnd(UUID.randomUUID(), terminal1);
+    PowerTransformerEnd powerTransformerEnd2 = createPowerTransformerEnd(UUID.randomUUID(), terminal2);
+
+    /* insert entities into the repository */
+    result.insert(connectivityNode1);
+    result.insert(connectivityNode2);
+    result.insert(powerTransformerEnd1);
+    result.insert(powerTransformerEnd2);
+    result.insert(powerTransformer);
+
+    return result;
+  }
+
+  /**
+   * Creates the {@link Terminal}.
+   *
+   * @param mRid
+   *          the {@link Terminal}-mRid; not <code>null</code>
+   * @param connectingEquipment
+   *          the {@link IConnectingEquipment}; can be <code>null</code>
+   * @param connectivityNode
+   *          the {@link ConnectivityNode}; can be <code>null</code>
+   * @return the {@link Terminal}; not <code>null</code>
+   */
+  private Terminal createTerminal(UUID mRid, IConnectingEquipment connectingEquipment, ConnectivityNode connectivityNode) {
+
+    return new TerminalBuilder() //
+        .withKey(new Key(Terminal.class, mRid)) //
+        .withName("Terminal name " + mRid) //
+        .withDescription("Terminal description" + mRid) //
+        .withConnectingEquipment(connectingEquipment) //
+        .withConnectivityNode(connectivityNode) //
+        .build();
+
+  }
+
+  /**
+   * Creates the {@link Terminal}.
+   *
+   * @param quantity
+   *          the quantity of the {@link Terminal}s to create
+   * @return the {@link Terminal}; not <code>null</code> but can be empty
+   */
+  @SuppressWarnings("checkstyle:illegaltype")
+  @SuppressWarningsReason(reasons = Reason.Checkstyle_SpecificCollectionOrMapTypeIsNecessaryToEnsureASpecificRuntimeBehaviour)
+  private LinkedHashMap<Key, Terminal> createTerminals(int quantity) {
+
+    LinkedHashMap<Key, Terminal> result = new LinkedHashMap<>();
+
+    for(int i = 0; i < quantity; i++) {
+      UUID mRid = UUID.randomUUID();
+      Terminal terminal = createTerminal(mRid, null, null);
+      result.put(terminal.getKey(), terminal);
+    }
+
+    return result;
+  }
+
+  @Before
+  public void setUp() {
+
+    /* spy */
+    {
+      contextMock = Mockito.spy(IServiceLogicController.class);
+      repositoryMock = Mockito.spy(InMemoryRepository.class);
+    }
+
+    /* when/thenReturn */
+    Mockito.when(contextMock.getRepository(StaticTopologyDefaults.REPOSITORY_KEY_STATIC_TOPOLOGY)).thenReturn(repositoryMock);
+
+    /* class under test */
+    classUnderTest = new ConnectedConnectingEquipments_1_View(contextMock);
+  }
+
+  // Tests
+  @Test
+  public void createFilters_whenQueryParametersHasNoTopologicalResourceTypes_thenResultIsNull() {
+
+    /* Given */
+    ConnectedConnectingEquipmentsQueryParameters queryParameters = new ConnectedConnectingEquipmentsQueryParameters();
+
+    Collection<IEntityFilter> result;
+
+    /* When */
+    result = classUnderTest.createFilters(queryParameters);
+
+    /* Then */
+    assertThat(result).isNull();
+  }
+
+  @Test
+  public void createFilters_whenQueryParametersHasTopologicalResourceTypes_thenResultIsAcceptedTopologicalResourceTypeFilter() {
+
+    /* Given */
+    ConnectedConnectingEquipmentsQueryParameters queryParameters = new ConnectedConnectingEquipmentsQueryParameters();
+    queryParameters.setTopologicalResourceTypes(CollectionUtilities.toList("power-transformer"));
+
+    Collection<IEntityFilter> result;
+
+    /* When */
+    result = classUnderTest.createFilters(queryParameters);
+
+    /* Then */
+    result.forEach(filter -> {
+      assertThat(filter).isExactlyInstanceOf(AcceptedTopologicalResourceTypeFilter.class);
+    });
+  }
+
+  @Test
+  public void createFilters_whenQueryParametersIsNull_thenResultNull() {
+
+    /* Given */
+    IConnectedConnectingEquipmentsQueryParameters queryParameters = null;
+
+    Collection<IEntityFilter> result;
+
+    /* When */
+    result = classUnderTest.createFilters(queryParameters);
+
+    /* Then */
+    assertThat(result).isNull();
+  }
+
+  @Test
+  public void fetchEntitiesToBeSearched_whenEquipmentContainerIdIsAnInstanceOfiEquipmentContainerAndConnectionStateIsNull_thenIllegalArgumentException() throws IOException {
+
+    /* Given */
+    ConnectedConnectingEquipmentsQueryParameters queryParameters = new ConnectedConnectingEquipmentsQueryParameters();
+    queryParameters.setConverterId(EQUIPMENT_ID);
+    queryParameters.setConnectionState(null);
+    queryParameters.setTopologicalResourceTypes(CollectionUtilities.toList("power-transformer"));
+    queryParameters.setSelector(Selector.Above);
+
+    IRepository repository = createStaticTopologyRepository();
+
+    Mockito.when(contextMock.getRepository(StaticTopologyDefaults.REPOSITORY_KEY_STATIC_TOPOLOGY)).thenReturn(repository);
+
+    /* Then */
+    thrown.expect(IllegalArgumentException.class);
+
+    /* When */
+    classUnderTest.fetchEntitiesToBeSearched(queryParameters);
+  }
+
+  @Test
+  public void fetchEntitiesToBeSearched_whenEquipmentContainerIdIsAnInstanceOfiEquipmentContainerAndConnectionStateIsUnsupported_thenThrowInvalidParameterException() throws IOException {
+
+    /* Given */
+    ConnectedConnectingEquipmentsQueryParameters queryParameters = new ConnectedConnectingEquipmentsQueryParameters();
+    queryParameters.setConverterId(EQUIPMENT_ID);
+    queryParameters.setConnectionState(ConnectionState.Active);
+    queryParameters.setTopologicalResourceTypes(CollectionUtilities.toList("power-transformer"));
+    queryParameters.setSelector(Selector.Above);
+
+    IRepository repository = createStaticTopologyRepository();
+
+    Mockito.when(contextMock.getRepository(StaticTopologyDefaults.REPOSITORY_KEY_STATIC_TOPOLOGY)).thenReturn(repository);
+
+    /* Then */
+    thrown.expect(InvalidParameterException.class);
+
+    /* When */
+    classUnderTest.fetchEntitiesToBeSearched(queryParameters);
+  }
+
+  @Test
+  public void fetchEntitiesToBeSearched_whenEquipmentContainerIdIsAnInstanceOfiEquipmentContainerAndSelectorAbove_thenResultIsEquipment() throws IOException {
+
+    /* Given */
+    ConnectedConnectingEquipmentsQueryParameters queryParameters = new ConnectedConnectingEquipmentsQueryParameters();
+    queryParameters.setConverterId(EQUIPMENT_ID);
+    queryParameters.setConnectionState(ConnectionState.Normal);
+    queryParameters.setTopologicalResourceTypes(CollectionUtilities.toList("power-transformer"));
+    queryParameters.setSelector(Selector.Above);
+
+    IRepository repository = createStaticTopologyRepository();
+
+    Mockito.when(contextMock.getRepository(StaticTopologyDefaults.REPOSITORY_KEY_STATIC_TOPOLOGY)).thenReturn(repository);
+
+    Collection<IEntity> result;
+
+    /* When */
+    result = classUnderTest.fetchEntitiesToBeSearched(queryParameters);
+
+    /* Then */
+    assertThat(result).isNotNull();
+    assertThat(((PowerTransformer) result.iterator().next()).getKey().getId()).isEqualTo(EQUIPMENT_ID);
+  }
+
+  @Test
+  public void fetchEntitiesToBeSearched_whenEquipmentContainerIdIsAnInstanceOfiEquipmentContainerAndSelectorBehindAndConnectionStateIgnore_thenResultIsEquipment() throws IOException {
+
+    /* Given */
+    ConnectedConnectingEquipmentsQueryParameters queryParameters = new ConnectedConnectingEquipmentsQueryParameters();
+    queryParameters.setConverterId(EQUIPMENT_ID);
+    queryParameters.setConnectionState(ConnectionState.Ignore);
+    queryParameters.setTopologicalResourceTypes(CollectionUtilities.toList("power-transformer"));
+    queryParameters.setSelector(Selector.Behind);
+
+    IRepository repository = createStaticTopologyRepository();
+
+    Mockito.when(contextMock.getRepository(StaticTopologyDefaults.REPOSITORY_KEY_STATIC_TOPOLOGY)).thenReturn(repository);
+
+    Collection<IEntity> result;
+
+    /* When */
+    result = classUnderTest.fetchEntitiesToBeSearched(queryParameters);
+
+    /* Then */
+    assertThat(result).isNotNull();
+    assertThat(((PowerTransformer) result.iterator().next()).getKey().getId()).isEqualTo(EQUIPMENT_ID);
+  }
+
+  @Test
+  public void fetchEntitiesToBeSearched_whenEquipmentContainerIdIsAnInstanceOfiEquipmentContainerAndSelectorBehindAndConnectionStateNormal_thenResultIsEquipment() throws IOException {
+
+    /* Given */
+    ConnectedConnectingEquipmentsQueryParameters queryParameters = new ConnectedConnectingEquipmentsQueryParameters();
+    queryParameters.setConverterId(EQUIPMENT_ID);
+    queryParameters.setConnectionState(ConnectionState.Normal);
+    queryParameters.setTopologicalResourceTypes(CollectionUtilities.toList("power-transformer"));
+    queryParameters.setSelector(Selector.Behind);
+
+    IRepository repository = createStaticTopologyRepository();
+
+    Mockito.when(contextMock.getRepository(StaticTopologyDefaults.REPOSITORY_KEY_STATIC_TOPOLOGY)).thenReturn(repository);
+
+    Collection<IEntity> result;
+
+    /* When */
+    result = classUnderTest.fetchEntitiesToBeSearched(queryParameters);
+
+    /* Then */
+    assertThat(result).isNotNull();
+    assertThat(((PowerTransformer) result.iterator().next()).getKey().getId()).isEqualTo(EQUIPMENT_ID);
+  }
+
+  @Test
+  public void fetchEntitiesToBeSearched_whenEquipmentContainerIdIsAnInstanceOfiEquipmentContainerAndSelectorIsNull_thenThrowIllegalArgumentException() throws IOException {
+
+    /* Given */
+    ConnectedConnectingEquipmentsQueryParameters queryParameters = new ConnectedConnectingEquipmentsQueryParameters();
+    queryParameters.setConverterId(EQUIPMENT_ID);
+    queryParameters.setConnectionState(ConnectionState.Normal);
+    queryParameters.setTopologicalResourceTypes(CollectionUtilities.toList("power-transformer"));
+    queryParameters.setSelector(null);
+
+    IRepository repository = createStaticTopologyRepository();
+
+    Mockito.when(contextMock.getRepository(StaticTopologyDefaults.REPOSITORY_KEY_STATIC_TOPOLOGY)).thenReturn(repository);
+
+    /* Then */
+    thrown.expect(IllegalArgumentException.class);
+
+    /* When */
+    classUnderTest.fetchEntitiesToBeSearched(queryParameters);
+  }
+
+  @Test
+  public void fetchEntitiesToBeSearched_whenEquipmentContainerIdIsAnInstanceOfiEquipmentContainerAndSelectorIsUnsupported_thenThrowInvalidParameterException() throws IOException {
+
+    /* Given */
+    ConnectedConnectingEquipmentsQueryParameters queryParameters = new ConnectedConnectingEquipmentsQueryParameters();
+    queryParameters.setConverterId(EQUIPMENT_ID);
+    queryParameters.setConnectionState(ConnectionState.Normal);
+    queryParameters.setTopologicalResourceTypes(CollectionUtilities.toList("power-transformer"));
+    queryParameters.setSelector(Selector.All);
+
+    IRepository repository = createStaticTopologyRepository();
+
+    Mockito.when(contextMock.getRepository(StaticTopologyDefaults.REPOSITORY_KEY_STATIC_TOPOLOGY)).thenReturn(repository);
+
+    /* Then */
+    thrown.expect(InvalidParameterException.class);
+
+    /* When */
+    classUnderTest.fetchEntitiesToBeSearched(queryParameters);
+  }
+
+  @Test
+  public void fetchEntitiesToBeSearched_whenEquipmentContainerIdIsAnInstanceOfiEquipmentContainerAndTopologyTravelerReturnsNull_thenResultNull() throws IOException {
+
+    /* Given */
+    ConnectedConnectingEquipmentsQueryParameters queryParameters = new ConnectedConnectingEquipmentsQueryParameters();
+    queryParameters.setConverterId(EQUIPMENT_ID);
+    queryParameters.setConnectionState(ConnectionState.Normal);
+    queryParameters.setTopologicalResourceTypes(CollectionUtilities.toList("power-transformer"));
+    queryParameters.setSelector(Selector.Above);
+
+    IRepository repository = new InMemoryRepository<>();
+    PowerTransformer powerTransformer = createPowerTransformer(EQUIPMENT_ID);
+    powerTransformer.setTerminals(createTerminals(1));
+    repository.insert(powerTransformer);
+
+    Mockito.when(contextMock.getRepository(StaticTopologyDefaults.REPOSITORY_KEY_STATIC_TOPOLOGY)).thenReturn(repository);
+
+    Collection<IEntity> result;
+
+    /* When */
+    result = classUnderTest.fetchEntitiesToBeSearched(queryParameters);
+
+    /* Then */
+    assertThat(result).isNull();
+  }
+
+  @Test
+  public void fetchEntitiesToBeSearched_whenEquipmentContainerIdIsNotInstanceOfiConverter_thenThrowIOException() throws IllegalArgumentException, IOException {
+
+    /* Given */
+    ConnectedConnectingEquipmentsQueryParameters queryParameters = new ConnectedConnectingEquipmentsQueryParameters();
+    queryParameters.setConverterId(EQUIPMENT_CONTAINER_ID);
+    queryParameters.setTopologicalResourceTypes(CollectionUtilities.toList("power-transformer"));
+
+    IRepository repository = new InMemoryRepository<>();
+    Breaker breaker = (Breaker) createBreaker(EQUIPMENT_CONTAINER_ID);
+    repository.insert(breaker);
+    Mockito.when(contextMock.getRepository(StaticTopologyDefaults.REPOSITORY_KEY_STATIC_TOPOLOGY)).thenReturn(repository);
+
+    /* Then */
+    thrown.expect(IOException.class);
+
+    /* When */
+    classUnderTest.fetchEntitiesToBeSearched(queryParameters);
+
+  }
+
+  @Test
+  public void fetchEntitiesToBeSearched_whenEquipmentContainerIdNotFound_thenResultIsNull() throws IllegalArgumentException, IOException {
+
+    /* Given */
+    ConnectedConnectingEquipmentsQueryParameters queryParameters = new ConnectedConnectingEquipmentsQueryParameters();
+
+    Collection<IEntity> result;
+
+    /* When */
+    result = classUnderTest.fetchEntitiesToBeSearched(queryParameters);
+
+    /* Then */
+    assertThat(result).isNull();
+  }
+
+  @Test
+  public void fetchEntitiesToBeSearched_whenQueryParametersIsNull_thenThrowIllegalArgumentException() throws IllegalArgumentException, IOException {
+
+    /* Given */
+    ConnectedConnectingEquipmentsQueryParameters queryParameters = null;
+
+    /* Then */
+    thrown.expect(IllegalArgumentException.class);
+
+    /* When */
+    classUnderTest.fetchEntitiesToBeSearched(queryParameters);
+  }
+
+  @Test
+  public void getLogger_shouldNotBeNull() {
+
+    /* When */
+    ILogger logger = classUnderTest.getLogger();
+
+    /* Then */
+    assertThat(logger).isNotNull();
+  }
+
+  @Test
+  public void getLogger_typeShouldBeCorrect() {
+
+    /* When */
+    ILogger logger = classUnderTest.getLogger();
+
+    /* Then */
+    assertThat(logger.getType()).isEqualTo(classUnderTest.getClass());
+  }
+
+  // inner Classes
+  /**
+   * The query parameters for {@link ConnectedConnectingEquipments_1_View}.
+   * 
+   * @author 2018-11-30 Renko Ortgies
+   */
+  private static final class ConnectedConnectingEquipmentsQueryParameters implements IConnectedConnectingEquipmentsQueryParameters {
+
+    // Attributes
+    @Value(name = PARAMETER_CONNECTION_STATE, defaultValue = "Ignore")
+    private ConnectionState connectionState;
+
+    @Value(name = PARAMETER_CONVERTER_ID, optional = false)
+    private UUID converterId;
+
+    @Value(name = PARAMETER_SELECTOR, defaultValue = "Lazy")
+    private Selector selector;
+
+    @ListValidator(itemType = String.class)
+    @Value(name = PARAMETER_TOPOLOGICAL_RESOURCE_TYPES)
+    private List<String> topologicalResourceTypes;
+
+    @Value(name = PARAMETER_TOPOLOGY_ID)
+    private UUID topologyId;
+
+    // Properties
+    @Override
+    public ConnectionState getConnectionState() {
+
+      return connectionState;
+    }
+
+    @Override
+    public UUID getConverterId() {
+
+      return converterId;
+    }
+
+    @Override
+    public Selector getSelector() {
+
+      return selector;
+    }
+
+    @Override
+    public List<String> getTopologicalResourceTypes() {
+
+      return topologicalResourceTypes;
+    }
+
+    @Override
+    public UUID getTopologyId() {
+
+      return topologyId;
+    }
+
+    /**
+     * @param value
+     *          the connection state; not <code>null</code>
+     */
+    public void setConnectionState(ConnectionState value) {
+
+      connectionState = value;
+    }
+
+    /**
+     * @param value
+     *          the identifier of the {@link IConverter}; not <code>null</code>
+     */
+    public void setConverterId(UUID value) {
+
+      converterId = value;
+    }
+
+    /**
+     * @param value
+     *          the selector; not <code>null</code>
+     */
+    public void setSelector(Selector value) {
+
+      selector = value;
+    }
+
+    /**
+     * @param value
+     *          the topological-resource types; can be <code>null</code> or empty
+     */
+    public void setTopologicalResourceTypes(List<String> value) {
+
+      topologicalResourceTypes = value;
+    }
+
+  }
+}
\ No newline at end of file
diff --git a/dev/logic/src/test/resources/.gitignore b/dev/logic/src/test/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/logic/src/test/resources/.gitignore
diff --git a/dev/model/pom.xml b/dev/model/pom.xml
new file mode 100644
index 0000000..1f0ae1a
--- /dev/null
+++ b/dev/model/pom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.eclipse.openk.domain.dynamic-topology</groupId>
+	<artifactId>dynamic-topology-model</artifactId>
+	<version>2.21.0-SNAPSHOT</version>
+
+	<name>${project.groupId}.${project.artifactId}</name>
+
+	<parent>
+		<groupId>org.eclipse.openk.build.build-parentpom</groupId>
+		<artifactId>build-parentpom-model</artifactId>
+		<version>2.20.0</version>
+		<relativePath></relativePath>
+	</parent>
+
+	<dependencies>
+		<!-- org.eclipse -->
+		<dependency>
+			<groupId>org.eclipse.openk.domain.dynamic-topology</groupId>
+			<artifactId>dynamic-topology-core</artifactId>
+			<version>2.21.0-SNAPSHOT</version>
+		</dependency>
+	</dependencies>
+
+</project>
\ No newline at end of file
diff --git a/dev/model/src/main/java/.gitignore b/dev/model/src/main/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/model/src/main/java/.gitignore
diff --git a/dev/model/src/main/resources/.gitignore b/dev/model/src/main/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/model/src/main/resources/.gitignore
diff --git a/dev/model/src/test/java/.gitignore b/dev/model/src/test/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/model/src/test/java/.gitignore
diff --git a/dev/model/src/test/resources/.gitignore b/dev/model/src/test/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/model/src/test/resources/.gitignore
diff --git a/dev/pom.xml b/dev/pom.xml
new file mode 100644
index 0000000..0d3ecf2
--- /dev/null
+++ b/dev/pom.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.eclipse.openk.domain.dynamic-topology</groupId>
+  <artifactId>dynamic-topology</artifactId>
+  <version>2.21.0-SNAPSHOT</version>
+
+  <packaging>pom</packaging>
+
+  <name>${project.groupId}.${project.artifactId}</name>
+  <description>Aggregator POM for the dynamic-topology modules</description>
+
+  <parent>
+    <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+    <artifactId>build-parentpom-aggregator-base</artifactId>
+    <version>2.20.0</version>
+    <relativePath></relativePath>
+  </parent>
+
+  <modules>
+    <!-- Sortierung nach Architektur -->
+    <module>service</module>
+    <module>infrastructure</module>
+    <module>adapter</module>
+    <module>logic</module>
+    <module>model</module>
+    <module>core</module>
+  </modules>
+</project>
diff --git a/dev/service/dynamic-topology-service.config b/dev/service/dynamic-topology-service.config
new file mode 100644
index 0000000..806a63b
--- /dev/null
+++ b/dev/service/dynamic-topology-service.config
@@ -0,0 +1,182 @@
+## This configuration file must be located in the root path for the dynamic-topology-service
+##
+## Configuration for importing the static topology (ac-line-segments, base-voltages, bays, breakers, ..., voltage-levels)
+## from the source system (e.g. mock-up-static-topology at localhost:9518 or PRINS at 10.160.172.211:9518)
+
+# ac-line-segments, V3
+RP|ac-line-segments|3|application-xml.scheme=http
+RP|ac-line-segments|3|application-xml.host=localhost
+RP|ac-line-segments|3|application-xml.port=9518
+RP|ac-line-segments|3|application-xml.base-path=source-system/electricity/static-topology
+
+# base-voltages, V3
+RP|base-voltages|3|application-xml.scheme=http
+RP|base-voltages|3|application-xml.host=localhost
+RP|base-voltages|3|application-xml.port=9518
+RP|base-voltages|3|application-xml.base-path=source-system/electricity/static-topology
+
+# bays, V2
+RP|bays|2|application-xml.scheme=http
+RP|bays|2|application-xml.host=localhost
+RP|bays|2|application-xml.port=9518
+RP|bays|2|application-xml.base-path=source-system/electricity/static-topology
+
+# breakers, V3
+RP|breakers|3|application-xml.scheme=http
+RP|breakers|3|application-xml.host=localhost
+RP|breakers|3|application-xml.port=9518
+RP|breakers|3|application-xml.base-path=source-system/electricity/static-topology
+
+# busbar-sections, V3
+RP|busbar-sections|3|application-xml.scheme=http
+RP|busbar-sections|3|application-xml.host=localhost
+RP|busbar-sections|3|application-xml.port=9518
+RP|busbar-sections|3|application-xml.base-path=source-system/electricity/static-topology
+
+# disconnectors, V3
+RP|disconnectors|3|application-xml.scheme=http
+RP|disconnectors|3|application-xml.host=localhost
+RP|disconnectors|3|application-xml.port=9518
+RP|disconnectors|3|application-xml.base-path=source-system/electricity/static-topology
+
+# earth-fault-compensators, V1
+RP|earth-fault-compensators|1|application-xml.scheme=http
+RP|earth-fault-compensators|1|application-xml.host=localhost
+RP|earth-fault-compensators|1|application-xml.port=9518
+RP|earth-fault-compensators|1|application-xml.base-path=source-system/electricity/static-topology
+
+# energy-consumers, V3
+RP|energy-consumers|3|application-xml.scheme=http
+RP|energy-consumers|3|application-xml.host=localhost
+RP|energy-consumers|3|application-xml.port=9518
+RP|energy-consumers|3|application-xml.base-path=source-system/electricity/static-topology
+
+# energy-sources, V3
+RP|energy-sources|3|application-xml.scheme=http
+RP|energy-sources|3|application-xml.host=localhost
+RP|energy-sources|3|application-xml.port=9518
+RP|energy-sources|3|application-xml.base-path=source-system/electricity/static-topology
+
+# geographical-regions, V3
+RP|geographical-regions|3|application-xml.scheme=http
+RP|geographical-regions|3|application-xml.host=localhost
+RP|geographical-regions|3|application-xml.port=9518
+RP|geographical-regions|3|application-xml.base-path=source-system/electricity/static-topology
+
+# grounds, V1
+RP|grounds|1|application-xml.scheme=http
+RP|grounds|1|application-xml.host=localhost
+RP|grounds|1|application-xml.port=9518
+RP|grounds|1|application-xml.base-path=source-system/electricity/static-topology
+
+# grounding-impedances, V1
+RP|grounding-impedances|1|application-xml.scheme=http
+RP|grounding-impedances|1|application-xml.host=localhost
+RP|grounding-impedances|1|application-xml.port=9518
+RP|grounding-impedances|1|application-xml.base-path=source-system/electricity/static-topology
+
+# junctions, V3
+RP|junctions|3|application-xml.scheme=http
+RP|junctions|3|application-xml.host=localhost
+RP|junctions|3|application-xml.port=9518
+RP|junctions|3|application-xml.base-path=source-system/electricity/static-topology
+
+# lines
+RP|lines|3|application-xml.scheme=http
+RP|lines|3|application-xml.host=localhost
+RP|lines|3|application-xml.port=9518
+RP|lines|3|application-xml.base-path=source-system/electricity/static-topology
+
+# line-types, V2
+RP|line-types|2|application-xml.scheme=http
+RP|line-types|2|application-xml.host=localhost
+RP|line-types|2|application-xml.port=9518
+RP|line-types|2|application-xml.base-path=source-system/electricity/static-topology
+
+# load-break-switches, V3
+RP|load-break-switches|3|application-xml.scheme=http
+RP|load-break-switches|3|application-xml.host=localhost
+RP|load-break-switches|3|application-xml.port=9518
+RP|load-break-switches|3|application-xml.base-path=source-system/electricity/static-topology
+
+# petersen-coils, V1
+RP|petersen-coils|1|application-xml.scheme=http
+RP|petersen-coils|1|application-xml.host=localhost
+RP|petersen-coils|1|application-xml.port=9518
+RP|petersen-coils|1|application-xml.base-path=source-system/electricity/static-topology
+
+# plants, V2
+RP|plants|2|application-xml.scheme=http
+RP|plants|2|application-xml.host=localhost
+RP|plants|2|application-xml.port=9518
+RP|plants|2|application-xml.base-path=source-system/electricity/static-topology
+
+# power-transformers
+RP|power-transformers|3|application-xml.scheme=http
+RP|power-transformers|3|application-xml.host=localhost
+RP|power-transformers|3|application-xml.port=9518
+RP|power-transformers|3|application-xml.base-path=source-system/electricity/static-topology
+
+# sub-geographical-regions, V2
+RP|sub-geographical-regions|2|application-xml.scheme=http
+RP|sub-geographical-regions|2|application-xml.host=localhost
+RP|sub-geographical-regions|2|application-xml.port=9518
+RP|sub-geographical-regions|2|application-xml.base-path=source-system/electricity/static-topology
+
+# substations, V3
+RP|substations|3|application-xml.scheme=http
+RP|substations|3|application-xml.host=localhost
+RP|substations|3|application-xml.port=9518
+RP|substations|3|application-xml.base-path=source-system/electricity/static-topology
+
+# substation-types, V3
+RP|substation-types|3|application-xml.scheme=http
+RP|substation-types|3|application-xml.host=localhost
+RP|substation-types|3|application-xml.port=9518
+RP|substation-types|3|application-xml.base-path=source-system/electricity/static-topology
+
+# switches, V2
+RP|switches|2|application-xml.scheme=http
+RP|switches|2|application-xml.host=localhost
+RP|switches|2|application-xml.port=9518
+RP|switches|2|application-xml.base-path=source-system/electricity/static-topology
+
+# topology-id, V1
+RP|topology-id|1|application-xml.scheme=http
+RP|topology-id|1|application-xml.host=localhost
+RP|topology-id|1|application-xml.port=9518
+RP|topology-id|1|application-xml.base-path=source-system/electricity/static-topology
+
+# voltage-levels, V3
+RP|voltage-levels|3|application-xml.scheme=http
+RP|voltage-levels|3|application-xml.host=localhost
+RP|voltage-levels|3|application-xml.port=9518
+RP|voltage-levels|3|application-xml.base-path=source-system/electricity/static-topology
+
+
+## Configuration for importing the topology state(s) (measurements, measurement-points, switch-states, ...)
+## from the source system (e.g. mock-up-topology-state at localhost:9511 or PRINS at 10.160.172.211:9518)
+
+# measurements
+RP|measurements|2|application-xml.scheme=http
+RP|measurements|2|application-xml.host=localhost
+RP|measurements|2|application-xml.port=9706
+RP|measurements|2|application-xml.base-path=source-system/electricity/topology-state
+
+# measurement-points
+RP|measurement-points|1|application-xml.scheme=http
+RP|measurement-points|1|application-xml.host=localhost
+RP|measurement-points|1|application-xml.port=9706
+RP|measurement-points|1|application-xml.base-path=source-system/electricity/topology-state
+
+# switch-states
+RP|switch-states|3|application-xml.scheme=http
+RP|switch-states|3|application-xml.host=localhost
+RP|switch-states|3|application-xml.port=9511
+RP|switch-states|3|application-xml.base-path=source-system/electricity/topology-state
+
+
+## import-filter for topological entities: import only given types
+
+# ImportTopologicalResources, V1
+#TA|import-topological-resources|1.supported-topological-resource-types=ac-line-segment|base-voltage|bay|breaker|busbar-section|disconnector|load-break-switch|power-transformer|substation|substation-type|voltage-level
diff --git a/dev/service/pom.xml b/dev/service/pom.xml
new file mode 100644
index 0000000..9152304
--- /dev/null
+++ b/dev/service/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.eclipse.openk.domain.dynamic-topology</groupId>
+    <artifactId>dynamic-topology-service</artifactId>
+    <version>2.21.0-SNAPSHOT</version>
+
+    <name>${project.groupId}.${project.artifactId}</name>
+
+    <parent>
+        <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+        <artifactId>build-parentpom-service</artifactId>
+        <version>2.20.0</version>
+        <relativePath></relativePath>
+    </parent>
+
+    <dependencies>
+        <!-- org.eclipse -->
+        <dependency>
+            <groupId>org.eclipse.openk.domain.dynamic-topology</groupId>
+            <artifactId>dynamic-topology-infrastructure</artifactId>
+            <version>2.21.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.openk.domain.measurement</groupId>
+            <artifactId>measurement-infrastructure</artifactId>
+            <version>2.20.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.openk.domain.static-topology</groupId>
+            <artifactId>static-topology-infrastructure</artifactId>
+            <version>2.20.0</version>
+        </dependency>
+        <!-- org.eclipse -->
+        <dependency>
+            <groupId>org.eclipse.openk.service</groupId>
+            <artifactId>service-service</artifactId>
+            <version>2.20.0</version>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/dev/service/src/main/java/.gitignore b/dev/service/src/main/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/service/src/main/java/.gitignore
diff --git a/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/.gitignore b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/.gitignore
diff --git a/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/DynamicTopologyService.java b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/DynamicTopologyService.java
new file mode 100644
index 0000000..ab14215
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/DynamicTopologyService.java
@@ -0,0 +1,232 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.service;
+
+import java.io.IOException;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+
+import org.eclipse.openk.common.Version;
+import org.eclipse.openk.common.command.Command;
+import org.eclipse.openk.common.command.UnknownCommandException;
+import org.eclipse.openk.common.messaging.ILogger;
+import org.eclipse.openk.common.messaging.LoggerFactory;
+import org.eclipse.openk.common.messaging.messages.FailedToImportException;
+import org.eclipse.openk.common.system.codestyle.Reason;
+import org.eclipse.openk.common.system.codestyle.SuppressWarningsReason;
+import org.eclipse.openk.domain.dynamictopology.core.DynamicTopologyDefaults;
+import org.eclipse.openk.domain.statictopology.core.StaticTopologyDefaults;
+import org.eclipse.openk.service.core.ServiceInformation;
+import org.eclipse.openk.service.core.adapter.deserializer.IDeserializerFactory;
+import org.eclipse.openk.service.core.adapter.importer.IImporterFactory;
+import org.eclipse.openk.service.core.adapter.mapper.IMapperFactory;
+import org.eclipse.openk.service.core.adapter.receiver.IReceiverFactory;
+import org.eclipse.openk.service.core.adapter.responder.IResponderFactory;
+import org.eclipse.openk.service.core.adapter.serializer.ISerializerFactory;
+import org.eclipse.openk.service.core.infrastructure.readerprovider.IReaderProviderFactory;
+import org.eclipse.openk.service.core.logic.modifier.IModifierFactory;
+import org.eclipse.openk.service.core.logic.task.ITask;
+import org.eclipse.openk.service.core.logic.task.ITaskFactory;
+import org.eclipse.openk.service.core.logic.view.IViewFactory;
+import org.eclipse.openk.service.infrastructure.AbstractServiceInfrastructureController;
+import org.eclipse.openk.service.infrastructure.ServiceInfrastructureControllerConfiguration;
+import org.eclipse.openk.service.model.repository.IRepository;
+import org.eclipse.openk.service.model.repository.InMemoryRepository;
+import org.eclipse.openk.service.model.repository.model.IEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.stereotype.Service;
+
+/**
+ * The application starts here.
+ * 
+ * @author 2017-07-01 Christian Brunzendorf
+ * @author 2019-02-06 Renko Ortgies
+ */
+@Service
+@ServiceInformation(domain = DynamicTopologyDefaults.DOMAIN)
+@SpringBootApplication(scanBasePackages = { "org.eclipse.openk" })
+public class DynamicTopologyService extends AbstractServiceInfrastructureController<ServiceInfrastructureControllerConfiguration> {
+
+  // Constants
+  public static final String COMMAND_IMPORT = "import";
+  private static final ILogger LOGGER = LoggerFactory.createLogger(DynamicTopologyService.class);
+
+  // Attributes
+  /* injected attributes */
+  @Autowired
+  private IDeserializerFactory deserializerFactory;
+  @Autowired
+  private IImporterFactory importerFactory;
+  @Autowired
+  private IMapperFactory mapperFactory;
+  @Autowired
+  private IModifierFactory modifierFactory;
+  @Autowired
+  private IReaderProviderFactory readerProviderFactory;
+  @Autowired
+  private IReceiverFactory receiverFactory;
+  @Autowired
+  private IResponderFactory responderFactory;
+  @Autowired
+  private ISerializerFactory serializerFactory;
+  @Autowired
+  private ITaskFactory taskFactory;
+  @Autowired
+  private IViewFactory viewFactory;
+
+  // Constructors
+  @SuppressWarnings("checkstyle:javadocmethod")
+  @SuppressWarningsReason(reasons = Reason.Checkstyle_ConstructorWithoutParameter)
+  public DynamicTopologyService() {
+
+    super(DynamicTopologyService.class);
+  }
+
+  // Methods
+  @Override
+  public void executeCommand(Command command) throws IOException {
+
+    if(command != null)
+      switch(command.getType().getName().toLowerCase()) {
+        case COMMAND_IMPORT:
+          getLogger().debug("Start importing the static-topology!");
+
+          try {
+            ITask<?, ?, ?, ?> task = taskFactory.create(StaticTopologyDefaults.TASK_IMPORT_STATIC_TOPOLOGY, Version.valueOf(1));
+
+            task.execute(null, null);
+          }
+          catch(IOException exception) {
+            getLogger().error(new FailedToImportException(StaticTopologyDefaults.SCOPE_TOPOLOGY, "Importing of the static-topology failed!", exception));
+          }
+
+          break;
+        default:
+          getLogger().warn(new UnknownCommandException(command));
+      }
+  }
+
+  @Override
+  @PostConstruct
+  public void initializeService() {
+
+    super.initializeService();
+  }
+
+  @Override
+  protected void initializeRepositories(Map<String, IRepository<? extends IEntity>> repositories) {
+
+    IRepository<IEntity> repository;
+
+    /* create repository for the static-topology */
+    {
+      repository = new InMemoryRepository<>();
+      repositories.put(StaticTopologyDefaults.REPOSITORY_KEY_STATIC_TOPOLOGY, repository);
+    }
+
+    /* create repository for the topology-id */
+    {
+      repository = new InMemoryRepository<>();
+      repositories.put(StaticTopologyDefaults.REPOSITORY_KEY_TOPOLOGY_ID, repository);
+    }
+  }
+
+  /**
+   * Starts the application.
+   * 
+   * @param args
+   *          the application arguments; can be <code>null</code> or empty
+   */
+  public static void main(final String[] args) {
+
+    SpringApplication.run(DynamicTopologyService.class, args);
+  }
+
+  // Properties
+  @Override
+  protected Class<ServiceInfrastructureControllerConfiguration> getConfigurationType() {
+
+    return ServiceInfrastructureControllerConfiguration.class;
+  }
+
+  @Override
+  public ILogger getLogger() {
+
+    return LOGGER;
+  }
+
+  @Override
+  public IDeserializerFactory getDeserializerFactory() {
+
+    return deserializerFactory;
+  }
+
+  @Override
+  public IImporterFactory getImporterFactory() {
+
+    return importerFactory;
+  }
+
+  @Override
+  public IMapperFactory getMapperFactory() {
+
+    return mapperFactory;
+  }
+
+  @Override
+  public IModifierFactory getModifierFactory() {
+
+    return modifierFactory;
+  }
+
+  @Override
+  public IReaderProviderFactory getReaderProviderFactory() {
+
+    return readerProviderFactory;
+  }
+
+  @Override
+  public IReceiverFactory getReceiverFactory() {
+
+    return receiverFactory;
+  }
+
+  @Override
+  public IResponderFactory getResponderFactory() {
+
+    return responderFactory;
+  }
+
+  @Override
+  public ISerializerFactory getSerializerFactory() {
+
+    return serializerFactory;
+  }
+
+  @Override
+  public ITaskFactory getTaskFactory() {
+
+    return taskFactory;
+  }
+
+  @Override
+  public IViewFactory getViewFactory() {
+
+    return viewFactory;
+  }
+}
\ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/DeserializerFactory.java b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/DeserializerFactory.java
new file mode 100644
index 0000000..5decd32
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/DeserializerFactory.java
@@ -0,0 +1,74 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.measurement.adapter.deserializer.Measurement_1_ApplicationXml_Cim17v07_Deserializer;
+import org.eclipse.openk.domain.statictopology.adapter.deserializer.ServiceModel_1_ApplicationRdf_StaticTopology_Deserializer;
+import org.eclipse.openk.domain.statictopology.adapter.deserializer.StaticTopology_1_ApplicationXml_Cim17v07_Deserializer;
+import org.eclipse.openk.domain.statictopology.adapter.deserializer.TopologyId_1_ApplicationXml_Deserializer;
+import org.eclipse.openk.service.adapter.deserializer.AbstractDeserializerFactory;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.deserializer.IDeserializer;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link IDeserializer}s.
+ *
+ * @author 2017-09-27 Christian Brunzendorf
+ * @author 2017-10-10 Frank Jäger
+ */
+@Service
+public final class DeserializerFactory extends AbstractDeserializerFactory {
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public DeserializerFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+    /* service-model */
+    serviceComponentTypes.add(ServiceModel_1_ApplicationRdf_StaticTopology_Deserializer.class);
+
+    /* static-topology */
+    {
+      /* XML */
+      serviceComponentTypes.add(StaticTopology_1_ApplicationXml_Cim17v07_Deserializer.class);
+      /* TopologyId */
+      serviceComponentTypes.add(TopologyId_1_ApplicationXml_Deserializer.class);
+    }
+
+    /* measurement */
+    {
+      /* XML */
+      serviceComponentTypes.add(Measurement_1_ApplicationXml_Cim17v07_Deserializer.class);
+    }
+  }
+}
\ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ImporterFactory.java b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ImporterFactory.java
new file mode 100644
index 0000000..acb7ffc
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ImporterFactory.java
@@ -0,0 +1,157 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.measurement.adapter.importer.MeasurementPoints_1_ApplicationXml_Importer;
+import org.eclipse.openk.domain.measurement.adapter.importer.Measurements_2_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.AcLineSegments_3_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.BaseVoltages_3_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.Bays_2_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.Breakers_3_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.BusbarSections_3_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.Disconnectors_3_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.EarthFaultCompensators_1_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.EnergyConsumers_3_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.EnergySources_3_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.GeographicalRegions_3_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.GroundingImpedances_1_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.Junctions_3_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.LineTypes_2_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.Lines_3_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.LoadBreakSwitches_3_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.PetersenCoils_1_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.Plants_2_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.PowerTransformers_3_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.SubGeographicalRegions_2_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.SubstationTypes_3_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.Substations_3_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.Switches_2_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.TopologyId_1_ApplicationXml_Importer;
+import org.eclipse.openk.domain.statictopology.adapter.importer.VoltageLevels_3_ApplicationXml_Importer;
+import org.eclipse.openk.service.adapter.importer.AbstractImporterFactory;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.importer.IImporter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link IImporter}s.
+ * 
+ * @author 2017-09-22 Christian Brunzendorf
+ * @author 2017-10-09 Frank Jäger
+ */
+@Service
+public final class ImporterFactory extends AbstractImporterFactory {
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public ImporterFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+    /* static-topology importer */
+    initAvailableStaticTopologyImporterTypes(serviceComponentTypes);
+
+    /* topology state importer */
+    initAvailableTopologyStateImporterTypes(serviceComponentTypes);
+  }
+
+  /**
+   * Initializes the specified list with the types of all available {@link IImporter}.
+   * 
+   * @param serviceComponentTypes
+   *          the {@link IImporter} types; not <code>null</code>
+   */
+  private void initAvailableStaticTopologyImporterTypes(List<Class<?>> serviceComponentTypes) {
+
+    /* ac-line-segments */
+    serviceComponentTypes.add(AcLineSegments_3_ApplicationXml_Importer.class);
+    /* base-voltages */
+    serviceComponentTypes.add(BaseVoltages_3_ApplicationXml_Importer.class);
+    /* bays */
+    serviceComponentTypes.add(Bays_2_ApplicationXml_Importer.class);
+    /* breakers */
+    serviceComponentTypes.add(Breakers_3_ApplicationXml_Importer.class);
+    /* busbar-sections */
+    serviceComponentTypes.add(BusbarSections_3_ApplicationXml_Importer.class);
+    /* disconnectors */
+    serviceComponentTypes.add(Disconnectors_3_ApplicationXml_Importer.class);
+    /* earth-fault-compensators */
+    serviceComponentTypes.add(EarthFaultCompensators_1_ApplicationXml_Importer.class);
+    /* energy-consumers */
+    serviceComponentTypes.add(EnergyConsumers_3_ApplicationXml_Importer.class);
+    /* energy-sources */
+    serviceComponentTypes.add(EnergySources_3_ApplicationXml_Importer.class);
+    /* geographical-regions */
+    serviceComponentTypes.add(GeographicalRegions_3_ApplicationXml_Importer.class);
+    /* grounding-impedances */
+    serviceComponentTypes.add(GroundingImpedances_1_ApplicationXml_Importer.class);
+    /* junctions */
+    serviceComponentTypes.add(Junctions_3_ApplicationXml_Importer.class);
+    /* lines */
+    serviceComponentTypes.add(Lines_3_ApplicationXml_Importer.class);
+    /* line-types */
+    serviceComponentTypes.add(LineTypes_2_ApplicationXml_Importer.class);
+    /* load-break-switches */
+    serviceComponentTypes.add(LoadBreakSwitches_3_ApplicationXml_Importer.class);
+    /* petersen-coils */
+    serviceComponentTypes.add(PetersenCoils_1_ApplicationXml_Importer.class);
+    /* plants */
+    serviceComponentTypes.add(Plants_2_ApplicationXml_Importer.class);
+    /* power-transformers */
+    serviceComponentTypes.add(PowerTransformers_3_ApplicationXml_Importer.class);
+    /* sub-geographical-regions */
+    serviceComponentTypes.add(SubGeographicalRegions_2_ApplicationXml_Importer.class);
+    /* substations */
+    serviceComponentTypes.add(Substations_3_ApplicationXml_Importer.class);
+    /* substation-types */
+    serviceComponentTypes.add(SubstationTypes_3_ApplicationXml_Importer.class);
+    /* switches */
+    serviceComponentTypes.add(Switches_2_ApplicationXml_Importer.class);
+    /* TopologyId */
+    serviceComponentTypes.add(TopologyId_1_ApplicationXml_Importer.class);
+    /* voltage-levels */
+    serviceComponentTypes.add(VoltageLevels_3_ApplicationXml_Importer.class);
+  }
+
+  /**
+   * Initializes the specified list with the types of all available {@link IImporter}.
+   * 
+   * @param serviceComponentTypes
+   *          the {@link IImporter} types; not <code>null</code>
+   */
+  private void initAvailableTopologyStateImporterTypes(List<Class<?>> serviceComponentTypes) {
+
+    /* MeasurementPoints */
+    serviceComponentTypes.add(MeasurementPoints_1_ApplicationXml_Importer.class);
+    /* Measurements */
+    serviceComponentTypes.add(Measurements_2_ApplicationXml_Importer.class);
+  }
+}
\ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/MapperFactory.java b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/MapperFactory.java
new file mode 100644
index 0000000..42f33e8
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/MapperFactory.java
@@ -0,0 +1,291 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.dynamictopology.adapter.mapper.PowerSystemResourceTypes_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.dynamictopology.adapter.mapper.PowerSystemResources_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.dynamictopology.adapter.mapper.Topology_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.measurement.adapter.mapper.exportmapper.measurement.Measurements_Measurement_Cim17v07_Mapper;
+import org.eclipse.openk.domain.measurement.adapter.mapper.exportmapper.measurementpoint.MeasurementPoints_MeasurementModel_Cim17v07_Mapper;
+import org.eclipse.openk.domain.measurement.adapter.mapper.importmapper.measurement.MeasurementValues_Cim17v07_Measurement_Mapper;
+import org.eclipse.openk.domain.measurement.adapter.mapper.importmapper.measurementpoint.MeasurementPoints_Cim17v07_MeasurementModel_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.AcLineSegments_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.BaseVoltages_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.Bays_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.Breakers_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.BusbarSections_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.Disconnectors_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.EarthFaultCompensators_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.EnergyConsumers_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.EnergySources_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.GeographicalRegions_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.GroundingImpedances_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.Junctions_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.LineTypes_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.Lines_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.LoadBreakSwitches_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.PetersenCoils_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.Plants_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.PowerTransformers_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.SubGeographicalRegions_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.SubstationTypes_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.Substation_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.Switches_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.TopologicalResourceTypes_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.TopologicalResources_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.cim17v07.VoltageLevels_StaticTopology_Cim17v07_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.exportmapper.openkonsequenz.TopologyId_StaticTopology_OpenKonsequenz_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.AcLineSegments_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.BaseVoltages_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.Bays_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.Breakers_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.BusbarSections_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.Disconnectors_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.EarthFaultCompensators_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.EnergyConsumers_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.EnergySources_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.GeographicalRegions_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.GroundingImpedances_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.Junctions_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.LineTypes_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.Lines_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.LoadBreakSwitches_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.PetersenCoils_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.Plants_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.PowerTransformers_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.SubGeographicalRegions_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.SubstationTypes_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.Substations_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.Switches_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.domain.statictopology.adapter.mapper.importmapper.cim17v07.VoltageLevels_Cim17v07_StaticTopology_Mapper;
+import org.eclipse.openk.service.adapter.mapper.AbstractMapperFactory;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.mapper.IMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link IMapper}s.
+ * 
+ * @author 2017-10-26 Renko Ortgies
+ */
+@Service
+public final class MapperFactory extends AbstractMapperFactory {
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public MapperFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  /**
+   * Initializes the specified list with the types of all available {@link IMapper}.
+   * 
+   * @param serviceComponentTypes
+   *          the {@link IMapper} types; not <code>null</code>
+   */
+  private void initAvailableDynamicTopologyExportMapperTypes(List<Class<?>> serviceComponentTypes) {
+
+    /* elements */
+    serviceComponentTypes.add(PowerSystemResources_StaticTopology_Cim17v07_Mapper.class);
+    /* element-types */
+    serviceComponentTypes.add(PowerSystemResourceTypes_StaticTopology_Cim17v07_Mapper.class);
+    /* topology */
+    serviceComponentTypes.add(Topology_StaticTopology_Cim17v07_Mapper.class);
+  }
+
+  @Override
+  protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+    /* static-topology export mappers */
+    initAvailableStaticToplogyExportMapperTypes(serviceComponentTypes);
+
+    /* static-topology import mappers */
+    initAvailableStaticTopologyImportMapperTypes(serviceComponentTypes);
+
+    /* topology state export mappers */
+    initAvailableTopologyStateExportMapperTypes(serviceComponentTypes);
+
+    /* topology state import mappers */
+    initAvailableTopologyStateImportMapperTypes(serviceComponentTypes);
+
+    /* dynamic topology export mappers */
+    initAvailableDynamicTopologyExportMapperTypes(serviceComponentTypes);
+  }
+
+  /**
+   * Initializes the specified list with the types of all available {@link IMapper}.
+   * 
+   * @param serviceComponentTypes
+   *          the {@link IMapper} types; not <code>null</code>
+   */
+  private void initAvailableStaticToplogyExportMapperTypes(List<Class<?>> serviceComponentTypes) {
+
+    /* ac-line-segments */
+    serviceComponentTypes.add(AcLineSegments_StaticTopology_Cim17v07_Mapper.class);
+    /* base-voltages */
+    serviceComponentTypes.add(BaseVoltages_StaticTopology_Cim17v07_Mapper.class);
+    /* bays */
+    serviceComponentTypes.add(Bays_StaticTopology_Cim17v07_Mapper.class);
+    /* breakers */
+    serviceComponentTypes.add(Breakers_StaticTopology_Cim17v07_Mapper.class);
+    /* busbar-sections */
+    serviceComponentTypes.add(BusbarSections_StaticTopology_Cim17v07_Mapper.class);
+    /* disconnectors */
+    serviceComponentTypes.add(Disconnectors_StaticTopology_Cim17v07_Mapper.class);
+    /* earth-fault-compensators */
+    serviceComponentTypes.add(EarthFaultCompensators_StaticTopology_Cim17v07_Mapper.class);
+    /* energy-consumers */
+    serviceComponentTypes.add(EnergyConsumers_StaticTopology_Cim17v07_Mapper.class);
+    /* energy-sources */
+    serviceComponentTypes.add(EnergySources_StaticTopology_Cim17v07_Mapper.class);
+    /* Elements */
+    serviceComponentTypes.add(PowerSystemResources_StaticTopology_Cim17v07_Mapper.class);
+    /* ElementType */
+    serviceComponentTypes.add(PowerSystemResourceTypes_StaticTopology_Cim17v07_Mapper.class);
+    /* geographical-regions */
+    serviceComponentTypes.add(GeographicalRegions_StaticTopology_Cim17v07_Mapper.class);
+    /* grounding-impedances */
+    serviceComponentTypes.add(GroundingImpedances_StaticTopology_Cim17v07_Mapper.class);
+    /* junctions */
+    serviceComponentTypes.add(Junctions_StaticTopology_Cim17v07_Mapper.class);
+    /* lines */
+    serviceComponentTypes.add(Lines_StaticTopology_Cim17v07_Mapper.class);
+    /* line-types */
+    serviceComponentTypes.add(LineTypes_StaticTopology_Cim17v07_Mapper.class);
+    /* load-break-switches */
+    serviceComponentTypes.add(LoadBreakSwitches_StaticTopology_Cim17v07_Mapper.class);
+    /* petersen-coils */
+    serviceComponentTypes.add(PetersenCoils_StaticTopology_Cim17v07_Mapper.class);
+    /* plants */
+    serviceComponentTypes.add(Plants_StaticTopology_Cim17v07_Mapper.class);
+    /* power-transformers */
+    serviceComponentTypes.add(PowerTransformers_StaticTopology_Cim17v07_Mapper.class);
+    /* sub-geographical-regions */
+    serviceComponentTypes.add(SubGeographicalRegions_StaticTopology_Cim17v07_Mapper.class);
+    /* substations */
+    serviceComponentTypes.add(Substation_StaticTopology_Cim17v07_Mapper.class);
+    /* substation-types */
+    serviceComponentTypes.add(SubstationTypes_StaticTopology_Cim17v07_Mapper.class);
+    /* switches */
+    serviceComponentTypes.add(Switches_StaticTopology_Cim17v07_Mapper.class);
+    /* topology-id */
+    serviceComponentTypes.add(TopologyId_StaticTopology_OpenKonsequenz_Mapper.class);
+    /* topological-resource-types */
+    serviceComponentTypes.add(TopologicalResourceTypes_StaticTopology_Cim17v07_Mapper.class);
+    /* topological-resources */
+    serviceComponentTypes.add(TopologicalResources_StaticTopology_Cim17v07_Mapper.class);
+    /* voltage-levels */
+    serviceComponentTypes.add(VoltageLevels_StaticTopology_Cim17v07_Mapper.class);
+  }
+
+  /**
+   * Initializes the specified list with the types of all available {@link IMapper}.
+   * 
+   * @param serviceComponentTypes
+   *          the {@link IMapper} types; not <code>null</code>
+   */
+  private void initAvailableStaticTopologyImportMapperTypes(List<Class<?>> serviceComponentTypes) {
+
+    /* ac-line-segments */
+    serviceComponentTypes.add(AcLineSegments_Cim17v07_StaticTopology_Mapper.class);
+    /* base-voltages */
+    serviceComponentTypes.add(BaseVoltages_Cim17v07_StaticTopology_Mapper.class);
+    /* bays */
+    serviceComponentTypes.add(Bays_Cim17v07_StaticTopology_Mapper.class);
+    /* breakers */
+    serviceComponentTypes.add(Breakers_Cim17v07_StaticTopology_Mapper.class);
+    /* busbar-sections */
+    serviceComponentTypes.add(BusbarSections_Cim17v07_StaticTopology_Mapper.class);
+    /* disconnectors */
+    serviceComponentTypes.add(Disconnectors_Cim17v07_StaticTopology_Mapper.class);
+    /* earth-fault-compensators */
+    serviceComponentTypes.add(EarthFaultCompensators_Cim17v07_StaticTopology_Mapper.class);
+    /* energy-consumers */
+    serviceComponentTypes.add(EnergyConsumers_Cim17v07_StaticTopology_Mapper.class);
+    /* energy-sources */
+    serviceComponentTypes.add(EnergySources_Cim17v07_StaticTopology_Mapper.class);
+    /* geographical-regions */
+    serviceComponentTypes.add(GeographicalRegions_Cim17v07_StaticTopology_Mapper.class);
+    /* grounding-impedances */
+    serviceComponentTypes.add(GroundingImpedances_Cim17v07_StaticTopology_Mapper.class);
+    /* junctions */
+    serviceComponentTypes.add(Junctions_Cim17v07_StaticTopology_Mapper.class);
+    /* lines */
+    serviceComponentTypes.add(Lines_Cim17v07_StaticTopology_Mapper.class);
+    /* line-types */
+    serviceComponentTypes.add(LineTypes_Cim17v07_StaticTopology_Mapper.class);
+    /* load-break-switches */
+    serviceComponentTypes.add(LoadBreakSwitches_Cim17v07_StaticTopology_Mapper.class);
+    /* petersen-coils */
+    serviceComponentTypes.add(PetersenCoils_Cim17v07_StaticTopology_Mapper.class);
+    /* plants */
+    serviceComponentTypes.add(Plants_Cim17v07_StaticTopology_Mapper.class);
+    /* power-transformers */
+    serviceComponentTypes.add(PowerTransformers_Cim17v07_StaticTopology_Mapper.class);
+    /* sub-geographical-regions */
+    serviceComponentTypes.add(SubGeographicalRegions_Cim17v07_StaticTopology_Mapper.class);
+    /* substations */
+    serviceComponentTypes.add(Substations_Cim17v07_StaticTopology_Mapper.class);
+    /* substation-types */
+    serviceComponentTypes.add(SubstationTypes_Cim17v07_StaticTopology_Mapper.class);
+    /* switches */
+    serviceComponentTypes.add(Switches_Cim17v07_StaticTopology_Mapper.class);
+    /* voltage-levels */
+    serviceComponentTypes.add(VoltageLevels_Cim17v07_StaticTopology_Mapper.class);
+  }
+
+  /**
+   * Initializes the specified list with the types of all available {@link IMapper}.
+   * 
+   * @param serviceComponentTypes
+   *          the {@link IMapper} types; not <code>null</code>
+   */
+  private void initAvailableTopologyStateExportMapperTypes(List<Class<?>> serviceComponentTypes) {
+
+    /* measurement-points */
+    serviceComponentTypes.add(MeasurementPoints_MeasurementModel_Cim17v07_Mapper.class);
+
+    /* measurements */
+    serviceComponentTypes.add(Measurements_Measurement_Cim17v07_Mapper.class);
+  }
+
+  /**
+   * Initializes the specified list with the types of all available {@link IMapper}.
+   * 
+   * @param serviceComponentTypes
+   *          the {@link IMapper} types; not <code>null</code>
+   */
+  private void initAvailableTopologyStateImportMapperTypes(List<Class<?>> serviceComponentTypes) {
+
+    /* measurement-points */
+    serviceComponentTypes.add(MeasurementPoints_Cim17v07_MeasurementModel_Mapper.class);
+
+    /* measurements */
+    serviceComponentTypes.add(MeasurementValues_Cim17v07_Measurement_Mapper.class);
+  }
+}
\ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ModifierFactory.java b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ModifierFactory.java
new file mode 100644
index 0000000..1580490
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ModifierFactory.java
@@ -0,0 +1,55 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.statictopology.logic.core.modifier.StoreStaticTopology_1_Modifier;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.logic.modifier.IModifier;
+import org.eclipse.openk.service.logic.modifier.AbstractModifierFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link IModifier}s.
+ * 
+ * @author 2017-04-12 Felix Korb
+ */
+@Service
+public final class ModifierFactory extends AbstractModifierFactory {
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public ModifierFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+    serviceComponentTypes.add(StoreStaticTopology_1_Modifier.class);
+  }
+}
\ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ReaderProviderFactory.java b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ReaderProviderFactory.java
new file mode 100644
index 0000000..b4c6677
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ReaderProviderFactory.java
@@ -0,0 +1,140 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.measurement.infrastructure.readerprovider.MeasurementPoints_1_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.measurement.infrastructure.readerprovider.MeasurementValues_2_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.AcLineSegments_3_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.BaseVoltages_3_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.Bays_2_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.Breakers_3_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.BusbarSections_3_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.Disconnectors_3_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.EarthFaultCompensators_1_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.EnergyConsumers_3_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.EnergySources_3_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.GeographicalRegions_3_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.GroundingImpedances_1_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.Junctions_3_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.LineTypes_2_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.Lines_3_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.LoadBreakSwitches_3_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.PetersenCoils_1_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.Plants_2_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.PowerTransformers_3_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.SubGeographicalRegions_2_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.SubstationTypes_3_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.Substations_3_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.Switches_2_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.TopologyId_1_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.domain.statictopology.infrastructure.readerprovider.VoltageLevels_3_ApplicationXml_Utf8_Rest_ReaderProvider;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.infrastructure.readerprovider.IReaderProvider;
+import org.eclipse.openk.service.infrastructure.readerprovider.AbstractReaderProviderFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link IReaderProvider}s.
+ * 
+ * @author 2017-09-22 Christian Brunzendorf
+ * @author 2017-10-09 Frank Jäger
+ * @author 2018-02-22 Renko Ortgies
+ */
+@Service
+public final class ReaderProviderFactory extends AbstractReaderProviderFactory {
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public ReaderProviderFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+    /* static-topology */
+    {
+      /* ac-line-segments */
+      serviceComponentTypes.add(AcLineSegments_3_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* base-voltages */
+      serviceComponentTypes.add(BaseVoltages_3_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* bays */
+      serviceComponentTypes.add(Bays_2_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* breakers */
+      serviceComponentTypes.add(Breakers_3_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* busbar-sections */
+      serviceComponentTypes.add(BusbarSections_3_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* disconnectors */
+      serviceComponentTypes.add(Disconnectors_3_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* earth-fault-compensators */
+      serviceComponentTypes.add(EarthFaultCompensators_1_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* energy-consumers */
+      serviceComponentTypes.add(EnergyConsumers_3_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* energy-sources */
+      serviceComponentTypes.add(EnergySources_3_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* geographical-regions */
+      serviceComponentTypes.add(GeographicalRegions_3_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* grounding-impedances */
+      serviceComponentTypes.add(GroundingImpedances_1_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* junctions */
+      serviceComponentTypes.add(Junctions_3_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* lines */
+      serviceComponentTypes.add(Lines_3_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* line-types */
+      serviceComponentTypes.add(LineTypes_2_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* load-break-switches */
+      serviceComponentTypes.add(LoadBreakSwitches_3_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* petersen-coils */
+      serviceComponentTypes.add(PetersenCoils_1_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* plants */
+      serviceComponentTypes.add(Plants_2_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* power-transformers */
+      serviceComponentTypes.add(PowerTransformers_3_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* sub-geographical-regions */
+      serviceComponentTypes.add(SubGeographicalRegions_2_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* substations */
+      serviceComponentTypes.add(Substations_3_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* substation-types */
+      serviceComponentTypes.add(SubstationTypes_3_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* switches */
+      serviceComponentTypes.add(Switches_2_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* TopologyId */
+      serviceComponentTypes.add(TopologyId_1_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* voltage-levels */
+      serviceComponentTypes.add(VoltageLevels_3_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+    }
+
+    /* topology-state */
+    {
+      /* Measurements */
+      serviceComponentTypes.add(MeasurementValues_2_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+      /* MeasurementPoints */
+      serviceComponentTypes.add(MeasurementPoints_1_ApplicationXml_Utf8_Rest_ReaderProvider.class);
+    }
+  }
+}
\ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ReceiverFactory.java b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ReceiverFactory.java
new file mode 100644
index 0000000..cf7498a
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ReceiverFactory.java
@@ -0,0 +1,61 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.statictopology.adapter.receiver.ServiceModel_1_ApplicationRdf_Receiver;
+import org.eclipse.openk.service.adapter.command.Command_1_TextPlain_Receiver;
+import org.eclipse.openk.service.adapter.receiver.AbstractReceiverFactory;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.receiver.IReceiver;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link IReceiver}s.
+ * 
+ * @author 2017-01-01 Felix Korb
+ * @author 2017-11-03 Michael Korta
+ */
+@Service
+public final class ReceiverFactory extends AbstractReceiverFactory {
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public ReceiverFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+    /* command */
+    serviceComponentTypes.add(Command_1_TextPlain_Receiver.class);
+
+    /* service-model */
+    serviceComponentTypes.add(ServiceModel_1_ApplicationRdf_Receiver.class);
+  }
+}
\ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ResponderFactory.java b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ResponderFactory.java
new file mode 100644
index 0000000..206fca7
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ResponderFactory.java
@@ -0,0 +1,87 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.dynamictopology.adapter.responder.ConnectedConnectingEquipments_1_ApplicationXml_Responder;
+import org.eclipse.openk.domain.dynamictopology.adapter.responder.PowerSystemResourceTypes_1_ApplicationXml_Responder;
+import org.eclipse.openk.domain.dynamictopology.adapter.responder.PowerSystemResources_1_ApplicationXml_Responder;
+import org.eclipse.openk.domain.dynamictopology.adapter.responder.Topology_2_ApplicationRdf_Responder;
+import org.eclipse.openk.domain.statictopology.adapter.core.responder.TopologicalResources_1_ApplicationXml_Responder;
+import org.eclipse.openk.domain.statictopology.adapter.core.responder.TopologicalResources_2_ApplicationXml_Responder;
+import org.eclipse.openk.domain.statictopology.adapter.core.responder.TopologyId_1_ApplicationXml_Responder;
+import org.eclipse.openk.domain.statictopology.adapter.electricity.responder.BaseVoltages_2_ApplicationXml_Responder;
+import org.eclipse.openk.domain.statictopology.adapter.electricity.responder.EquipmentContainerContent_1_ApplicationXml_Responder;
+import org.eclipse.openk.service.adapter.responder.AbstractResponderFactory;
+import org.eclipse.openk.service.adapter.responder.ServiceModel_1_ApplicationRdf_Responder;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.responder.IResponder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link IResponder}s.
+ * 
+ * @author 2018-02-12 Renko Ortgies
+ */
+@Service
+public final class ResponderFactory extends AbstractResponderFactory {
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public ResponderFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+    /* service-model */
+    serviceComponentTypes.add(ServiceModel_1_ApplicationRdf_Responder.class);
+
+    /* domain */
+    {
+      /* base-voltages */
+      serviceComponentTypes.add(BaseVoltages_2_ApplicationXml_Responder.class);
+      /* connected-connecting-equipments */
+      serviceComponentTypes.add(ConnectedConnectingEquipments_1_ApplicationXml_Responder.class);
+      /* equipment-container-content */
+      serviceComponentTypes.add(EquipmentContainerContent_1_ApplicationXml_Responder.class);
+      /* power-system-resources */
+      serviceComponentTypes.add(PowerSystemResources_1_ApplicationXml_Responder.class);
+      /* power-system-resource-types */
+      serviceComponentTypes.add(PowerSystemResourceTypes_1_ApplicationXml_Responder.class);
+      /* topological-resources 1 */
+      serviceComponentTypes.add(TopologicalResources_1_ApplicationXml_Responder.class);
+      /* topological-resources 2 */
+      serviceComponentTypes.add(TopologicalResources_2_ApplicationXml_Responder.class);
+      /* topology */
+      serviceComponentTypes.add(Topology_2_ApplicationRdf_Responder.class);
+      /* topology-id */
+      serviceComponentTypes.add(TopologyId_1_ApplicationXml_Responder.class);
+    }
+  }
+}
\ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/SerializerFactory.java b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/SerializerFactory.java
new file mode 100644
index 0000000..13278e2
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/SerializerFactory.java
@@ -0,0 +1,63 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.statictopology.adapter.serializer.StaticTopology_1_Cim17v07_ApplicationRdf_Serializer;
+import org.eclipse.openk.domain.statictopology.adapter.serializer.StaticTopology_1_Cim17v07_ApplicationXml_Serializer;
+import org.eclipse.openk.service.adapter.serializer.AbstractSerializerFactory;
+import org.eclipse.openk.service.adapter.serializer.ServiceModelRdfSerializer;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.adapter.serializer.ISerializer;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link ISerializer}s.
+ * 
+ * @author 2017-10-24 Renko Ortgies
+ */
+@Service
+public final class SerializerFactory extends AbstractSerializerFactory {
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public SerializerFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+    /* service-model */
+    serviceComponentTypes.add(ServiceModelRdfSerializer.class);
+
+    /* RDF */
+    serviceComponentTypes.add(StaticTopology_1_Cim17v07_ApplicationRdf_Serializer.class);
+    /* XML */
+    serviceComponentTypes.add(StaticTopology_1_Cim17v07_ApplicationXml_Serializer.class);
+  }
+}
\ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/TaskFactory.java b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/TaskFactory.java
new file mode 100644
index 0000000..c7fef1a
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/TaskFactory.java
@@ -0,0 +1,73 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.statictopology.logic.core.task.CheckStaticTopologyActuality_1_Task;
+import org.eclipse.openk.domain.statictopology.logic.core.task.ConnectConnectingEquipments_1_Task;
+import org.eclipse.openk.domain.statictopology.logic.core.task.GroupTopologicalResources_1_Task;
+import org.eclipse.openk.domain.statictopology.logic.core.task.ImportTopologicalResources_1_Task;
+import org.eclipse.openk.domain.statictopology.logic.core.task.SolveCommonTopologicalResourceProperties_1_Task;
+import org.eclipse.openk.domain.statictopology.logic.electricity.task.CategorizeEquipmentsAndEquipmentContainers_1_Task;
+import org.eclipse.openk.domain.statictopology.logic.electricity.task.ImportStaticTopology_1_Task;
+import org.eclipse.openk.domain.statictopology.logic.electricity.task.LinkPowerSystemResourcesTogether_1_Task;
+import org.eclipse.openk.domain.statictopology.logic.electricity.task.SolveBaseVoltageReferences_1_Task;
+import org.eclipse.openk.domain.statictopology.logic.electricity.task.SolvePowerTransformerEndTerminalReferences_1_Task;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.logic.task.ITask;
+import org.eclipse.openk.service.logic.task.AbstractTaskFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link ITask}s.
+ * 
+ * @author 2018-04-02 Felix Korb
+ */
+@Service
+public final class TaskFactory extends AbstractTaskFactory {
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public TaskFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+    serviceComponentTypes.add(CategorizeEquipmentsAndEquipmentContainers_1_Task.class);
+    serviceComponentTypes.add(CheckStaticTopologyActuality_1_Task.class);
+    serviceComponentTypes.add(ConnectConnectingEquipments_1_Task.class);
+    serviceComponentTypes.add(GroupTopologicalResources_1_Task.class);
+    serviceComponentTypes.add(ImportStaticTopology_1_Task.class);
+    serviceComponentTypes.add(ImportTopologicalResources_1_Task.class);
+    serviceComponentTypes.add(LinkPowerSystemResourcesTogether_1_Task.class);
+    serviceComponentTypes.add(SolveBaseVoltageReferences_1_Task.class);
+    serviceComponentTypes.add(SolveCommonTopologicalResourceProperties_1_Task.class);
+    serviceComponentTypes.add(SolvePowerTransformerEndTerminalReferences_1_Task.class);
+  }
+}
\ No newline at end of file
diff --git a/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ViewFactory.java b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ViewFactory.java
new file mode 100644
index 0000000..30d9a32
--- /dev/null
+++ b/dev/service/src/main/java/org/eclipse/openk/domain/dynamictopology/service/factories/ViewFactory.java
@@ -0,0 +1,80 @@
+/*
+ *  -----------------------------------------------------------------------------
+ *  
+ *  Copyright © 2015-2019 PSI AG - http://www.psi.de
+ *  
+ *  This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+ *  -----------------------------------------------------------------------------
+ *  
+ */
+package org.eclipse.openk.domain.dynamictopology.service.factories;
+
+import java.util.List;
+
+import org.eclipse.openk.domain.dynamictopology.logic.view.ConnectedConnectingEquipments_1_View;
+import org.eclipse.openk.domain.dynamictopology.logic.view.PowerSystemResourceTypes_1_View;
+import org.eclipse.openk.domain.dynamictopology.logic.view.PowerSystemResources_1_View;
+import org.eclipse.openk.domain.dynamictopology.logic.view.Topology_1_View;
+import org.eclipse.openk.domain.statictopology.logic.core.view.EquipmentContainerContent_1_View;
+import org.eclipse.openk.domain.statictopology.logic.core.view.TopologicalResources_1_View;
+import org.eclipse.openk.domain.statictopology.logic.core.view.TopologicalResources_2_View;
+import org.eclipse.openk.domain.statictopology.logic.core.view.TopologyId_1_View;
+import org.eclipse.openk.domain.statictopology.logic.electricity.view.BaseVoltages_1_View;
+import org.eclipse.openk.service.core.IServiceContext;
+import org.eclipse.openk.service.core.logic.view.IView;
+import org.eclipse.openk.service.logic.view.AbstractViewFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Provides instances of {@link IView} for defined versions and types.
+ * 
+ * @author 2018-02-12 Renko Ortgies
+ */
+@Service
+public final class ViewFactory extends AbstractViewFactory {
+
+  // Constructors
+  /**
+   * @param context
+   *          the context
+   * @throws IllegalArgumentException
+   *           Is thrown in the following cases:
+   *           <ul>
+   *           <li><code>context</code> is <code>null</code></li>
+   *           </ul>
+   */
+  public ViewFactory(@Autowired IServiceContext context) throws IllegalArgumentException {
+
+    super(context);
+  }
+
+  // Methods
+  @Override
+  protected void initAvailableServiceComponentTypes(List<Class<?>> serviceComponentTypes) {
+
+    /* base-voltages */
+    serviceComponentTypes.add(BaseVoltages_1_View.class);
+    /* connected-connecting-equipments */
+    serviceComponentTypes.add(ConnectedConnectingEquipments_1_View.class);
+    /* equipment-container-content */
+    serviceComponentTypes.add(EquipmentContainerContent_1_View.class);
+    /* power-system-resources */
+    serviceComponentTypes.add(PowerSystemResources_1_View.class);
+    /* power-system-resource-types */
+    serviceComponentTypes.add(PowerSystemResourceTypes_1_View.class);
+    /* topological-resources 1 */
+    serviceComponentTypes.add(TopologicalResources_1_View.class);
+    /* topological-resources 2 */
+    serviceComponentTypes.add(TopologicalResources_2_View.class);
+    /* topology */
+    serviceComponentTypes.add(Topology_1_View.class);
+    /* topology-id */
+    serviceComponentTypes.add(TopologyId_1_View.class);
+  }
+}
\ No newline at end of file
diff --git a/dev/service/src/main/resources/.gitignore b/dev/service/src/main/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/service/src/main/resources/.gitignore
diff --git a/dev/service/src/main/resources/application.properties b/dev/service/src/main/resources/application.properties
new file mode 100644
index 0000000..e55c67c
--- /dev/null
+++ b/dev/service/src/main/resources/application.properties
@@ -0,0 +1,27 @@
+## Spring configuration file (will be packed in executable JAR, may be overriden by command line switch
+## --spring.config.location=dynamic-topology-service.properties
+
+# server properties
+server.port=9520
+
+# logger properties (org.slf4j.Logger)
+
+## path of the logger-configuration.xml file
+logging.config=./src/main/resources/logger-configuration.xml
+
+## name of the log-file
+logging.file=dynamic-topology-service
+
+## path for the log-file
+logging.path=${java.io.tmpdir}/logs
+
+## logging.level.root is defined in logging.config-file, but can be overridden here
+# logging.level.root=INFO
+
+## custom log-levels (base path is root, other paths override root settings)
+logging.level.com.btc=DEBUG
+logging.level.org.eclipse.openk=DEBUG
+logging.level.org.hibernate=WARN
+logging.level.org.springframework=WARN
+logging.level.org.springframework.web=INFO
+
diff --git a/dev/service/src/main/resources/favicon.ico b/dev/service/src/main/resources/favicon.ico
new file mode 100644
index 0000000..cf3d1fd
--- /dev/null
+++ b/dev/service/src/main/resources/favicon.ico
Binary files differ
diff --git a/dev/service/src/main/resources/logger-configuration.xml b/dev/service/src/main/resources/logger-configuration.xml
new file mode 100644
index 0000000..7a050bc
--- /dev/null
+++ b/dev/service/src/main/resources/logger-configuration.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- 
+    Copyright © 2015-2019 PSI AG - http://www.psi.de
+    
+    This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    
+    http://www.eclipse.org/legal/epl-v10.html
+-->
+
+<configuration>
+	<!-- Properties -->
+	<property name="LOG_FILE_NAME" value="${LOG_FILE}" /><!-- from application.properties: logging.file -->
+	<property name="LOG_FILE_EXTENSION" value="log" />
+	<property name="LOG_FILE_PATH" value="${LOG_PATH}" /> <!-- from application.properties: logging.path -->
+	<property name="LOG_PATTERN" value="%d{HH:mm:ss.SSS} [%-5level] %logger{10} - %msg%n" /> <!-- logger{10} defines the length of logged package name -->
+
+	<!-- ConsoleAppender -->
+	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>
+				${LOG_PATTERN}
+			</pattern>
+		</encoder>
+	</appender>
+
+	<!-- RollingFileAppender -->
+	<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${LOG_FILE_PATH}/${LOG_FILE_NAME}.${LOG_FILE_EXTENSION}</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+
+			<!-- rollover daily -->
+			<fileNamePattern>${LOG_FILE_PATH}/${LOG_FILE_NAME}-%d{yyyy-MM-dd}.%i.${LOG_FILE_EXTENSION}</fileNamePattern>
+
+			<!-- The maxFileSize option can be specified in bytes, kilobytes, megabytes or gigabytes by suffixing a numeric value with KB, MB and respectively GB. For example, 5000000, 5000KB, 5MB and 2GB are all valid values, with the first three being equivalent. -->
+			 <maxFileSize>1MB</maxFileSize>
+
+			<!-- The optional maxHistory property controls the maximum number of archive files to keep, asynchronously deleting older files. For example, if you specify monthly rollover, and set maxHistory to 6, then 6 months worth of archives files will be kept with files older than 6 months deleted. Note as old archived log files are removed, any folders which were created for the purpose of log file archiving will be removed as appropriate. -->
+			<maxHistory>60</maxHistory>
+
+			<!-- max size for all files: The optional totalSizeCap property controls the total size of all archive files. Oldest archives are deleted asynchronously when the total size cap is exceeded. The totalSizeCap property requires maxHistory property to be set as well. Moreover, the "max history" restriction is always applied first and the "total size cap" restriction applied second. -->
+			<totalSizeCap>5MB</totalSizeCap>
+
+		</rollingPolicy>
+		<encoder>
+			<pattern>${LOG_PATTERN}</pattern>
+		</encoder>
+	</appender>
+
+	<!-- log-level -->
+	<root level="ERROR">
+		<appender-ref ref="CONSOLE" />
+		<appender-ref ref="ROLLING_FILE" />
+	</root>
+
+</configuration>
diff --git a/dev/service/src/test/java/.gitignore b/dev/service/src/test/java/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/service/src/test/java/.gitignore
diff --git a/dev/service/src/test/resources/.gitignore b/dev/service/src/test/resources/.gitignore
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/dev/service/src/test/resources/.gitignore
diff --git a/doc/pom.xml b/doc/pom.xml
new file mode 100644
index 0000000..a2c6842
--- /dev/null
+++ b/doc/pom.xml
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.eclipse.openk.domain.dynamic-topology</groupId>
+  <artifactId>dynamic-topology-documentation</artifactId>
+  <version>2.20.0</version>
+
+  <packaging>pom</packaging>
+
+  <name>dynamic-topology-documentation</name>
+  <description>POM for the dynamic-topology-documentation.</description>
+
+  <properties>
+    <skip.asciidoc>false</skip.asciidoc>
+    <asciidoctor.maven.plugin.version>1.5.6</asciidoctor.maven.plugin.version>
+    <asciidoctorj.pdf.version>1.5.0-alpha.16</asciidoctorj.pdf.version>
+    <asciidoctorj.version>1.5.6</asciidoctorj.version>
+    <asciidoctorj-diagram.version>1.5.4.1</asciidoctorj-diagram.version>
+    <jruby.version>1.7.26</jruby.version>
+    <asciidoc.source.directory>src/main/</asciidoc.source.directory>
+    <asciidoc.test.directory>src/test/</asciidoc.test.directory>
+  </properties>
+
+  <parent>
+    <groupId>org.eclipse.openk.build.build-parentpom</groupId>
+    <artifactId>build-parentpom-aggregator-base</artifactId>
+    <version>2.20.0</version>
+    <relativePath></relativePath>
+  </parent> 
+  
+ <build>
+    <pluginManagement>
+      <plugins>
+        <!-- asciidoc -->
+        <plugin>
+          <groupId>org.asciidoctor</groupId>
+          <artifactId>asciidoctor-maven-plugin</artifactId>
+          <version>${asciidoctor.maven.plugin.version}</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+
+
+    <plugins>
+      <!-- asciidoc -->
+      <plugin>
+        <groupId>org.asciidoctor</groupId>
+        <artifactId>asciidoctor-maven-plugin</artifactId>
+        <dependencies>
+          <dependency>
+            <groupId>org.asciidoctor</groupId>
+            <artifactId>asciidoctorj-pdf</artifactId>
+            <version>${asciidoctorj.pdf.version}</version>
+          </dependency>
+          <dependency>
+            <groupId>org.jruby</groupId>
+            <artifactId>jruby-complete</artifactId>
+            <version>${jruby.version}</version>
+          </dependency>
+          <dependency>
+            <groupId>org.asciidoctor</groupId>
+            <artifactId>asciidoctorj</artifactId>
+            <version>${asciidoctorj.version}</version>
+          </dependency>
+          <dependency>
+            <groupId>org.asciidoctor</groupId>
+            <artifactId>asciidoctorj-diagram</artifactId>
+            <version>${asciidoctorj-diagram.version}</version>
+          </dependency>
+        </dependencies>
+
+        <configuration>
+          <requires>
+            <require>asciidoctor-diagram</require>
+          </requires>
+          <attributes>
+          </attributes>
+
+          <configuration>
+            <imagesDir>images</imagesDir>
+          </configuration>
+        </configuration>
+        <executions>
+
+          <execution>
+            <id>asciidoc-docs-to-html</id>
+            <phase>generate-resources</phase>
+            <goals>
+              <goal>process-asciidoc</goal>
+            </goals>
+            <configuration>
+              <sourceDirectory>${asciidoc.source.directory}/doc</sourceDirectory>
+              <outputDirectory>${project.build.directory}/generated-docs/html/doc</outputDirectory>
+              <skip>${skip.asciidoc}</skip>
+              <preserveDirectories>true</preserveDirectories>
+              <sourceHighlighter>coderay</sourceHighlighter>
+              <backend>html5</backend>
+
+              <requires>
+                <require>asciidoctor-diagram</require>
+              </requires>
+
+              <attributes>
+                <imagesDir>./images</imagesDir>
+                <toc>left</toc>
+                <icons>font</icons>
+                <sectanchors>true</sectanchors>
+                <!-- set the idprefix to blank -->
+                <idprefix />
+                <idseparator>-</idseparator>
+                <docinfo1>true</docinfo1>
+              </attributes>
+            </configuration>
+          </execution>
+
+          <execution>
+            <id>asciidoc-documentation-to-pdf</id>
+            <phase>generate-resources</phase>
+            <goals>
+              <goal>process-asciidoc</goal>
+            </goals>
+            <configuration>
+              <sourceDirectory>${asciidoc.source.directory}/doc</sourceDirectory>
+              <outputDirectory>${project.build.directory}/generated-docs/main/doc</outputDirectory>
+              <skip>${skip.asciidoc}</skip>
+              <preserveDirectories>true</preserveDirectories>
+              <sourceHighlighter>coderay</sourceHighlighter>
+              <backend>pdf</backend>
+
+              <requires>
+                <require>asciidoctor-diagram</require>
+              </requires>
+
+              <attributes>
+                <imagesDir>./images</imagesDir>
+                <icons>font</icons>
+                <pagenums />
+                <toc />
+                <idprefix />
+                <idseparator>-</idseparator>
+              </attributes>
+
+            </configuration>
+          </execution>
+          
+          <execution>
+            <id>asciidoc-test-documentation-to-pdf</id>
+            <phase>generate-resources</phase>
+            <goals>
+              <goal>process-asciidoc</goal>
+            </goals>
+            <configuration>
+              <sourceDirectory>${asciidoc.test.directory}/doc</sourceDirectory>
+              <outputDirectory>${project.build.directory}/generated-docs/test/doc</outputDirectory>
+              <skip>${skip.asciidoc}</skip>
+              <preserveDirectories>true</preserveDirectories>
+              <sourceHighlighter>coderay</sourceHighlighter>
+              <backend>pdf</backend>
+
+              <requires>
+                <require>asciidoctor-diagram</require>
+              </requires>
+
+              <attributes>
+                <imagesDir>./images</imagesDir>
+                <icons>font</icons>
+                <pagenums />
+                <toc />
+                <idprefix />
+                <idseparator>-</idseparator>
+              </attributes>
+
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>  
\ No newline at end of file
diff --git a/doc/src/main/doc/attributes.adoc b/doc/src/main/doc/attributes.adoc
new file mode 100644
index 0000000..9141060
--- /dev/null
+++ b/doc/src/main/doc/attributes.adoc
@@ -0,0 +1,30 @@
+:toc:
+:Author: Christian Brunzendorf; Frank Jäger; Michael Korta; Renko Ortgies
+//:Date: 2019-02-08
+:Email: info@psi.de
+:Company: PSI Software AG
+:ProjectNameID: dynamic-topology-service
+:ProjectVersion: 2.20.0
+:stylesheet: common/html-skin.css
+:icons: font
+:lang: de
+:doctype: article
+:encoding: utf-8
+:source-highlighter: coderay
+:highlightjs-theme: solarized_dark
+:sectnums:
+:srcpath: {docdir}/../../../..
+:imagedir: {docdir}/images
+
+:NoteSeeServiceFramework: Siehe Service-Framework (org-eclipse-openk-service).
+
+// german translation
+ifeval::["{lang}" == "de"]
+:toc-title: Inhaltsverzeichnis
+:ProjectName: dynamic-topology-service
+endif::[]
+
+// english translation
+ifeval::["{lang}" == "en"]
+:ProjectName: dynamic-topology-service
+endif::[]
diff --git a/doc/src/main/doc/common/html-skin.css b/doc/src/main/doc/common/html-skin.css
new file mode 100644
index 0000000..409ddb2
--- /dev/null
+++ b/doc/src/main/doc/common/html-skin.css
@@ -0,0 +1,48 @@
+/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
+
+@import url(https://fonts.googleapis.com/css?family=Ubuntu);
+@import "asciidoctor.css"; /* Default asciidoc style framework - important */
+
+/* CUSTOMISATIONS */
+/* Change the values in root for quick customisation. If you want even more fine grain... venture further. */
+
+:root{
+--maincolor:#FFFFFF;
+--primarycolor:#E95420;
+--secondarycolor:#333333;
+--tertiarycolor: #772953;
+--sidebarbackground:#CCC;
+--linkcolor:#b71c1c;
+--linkcoloralternate:#f44336;
+--white:#FFFFFF;
+--black:#000000;
+}
+
+/* Text styles */
+body{font-family: "Ubuntu",sans-serif;}
+
+h1,h2{color:var(--primarycolor) !important;font-family:"Ubuntu",sans-serif;}
+h3,h4,h5,h6{color:var(--secondarycolor);font-family: "Ubuntu",sans-serif;}
+.title{color:(--primarycolor) !important;font-family:"Ubuntu",sans-serif;font-style: normal; font-weight: normal;}
+p{font-family: "Ubuntu",sans-serif ! important}
+#toc.toc2 a:link{color:white;}
+code{background-color: var(--secondarycolor) !important;color:var(--white)}
+
+
+/* Table styles */
+th{background-color: var(--tertiarycolor);color:var(--white) !important;}
+
+#toc.toc2{background-color:#2C001E;color:white;}
+#toc.toc2.a{color:white;}
+#toctitle{color:#E95420;}
+
+/* Responsiveness fixes */
+video {
+  max-width: 100%;
+}
+
+@media all and (max-width: 600px) {
+table {
+  width: 55vw!important;
+  font-size: 3vw;
+}
diff --git a/doc/src/main/doc/common/toc.adoc b/doc/src/main/doc/common/toc.adoc
new file mode 100644
index 0000000..b7232df
--- /dev/null
+++ b/doc/src/main/doc/common/toc.adoc
@@ -0,0 +1,3 @@
+ifeval::["{context}" == ""]
+include::{docdir}/attributes.adoc[]
+endif::[]
diff --git a/doc/src/main/doc/docs/appendix/appendix-assembly.adoc b/doc/src/main/doc/docs/appendix/appendix-assembly.adoc
new file mode 100644
index 0000000..770c451
--- /dev/null
+++ b/doc/src/main/doc/docs/appendix/appendix-assembly.adoc
@@ -0,0 +1,24 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/appendix
+
+// set document informations
+[id='appendix-{context}']
+:context: appendix
+
+// content
+= Anhang
+
+include::{path}/modules/concept_get_started.adoc[leveloffset=+1]
+
+include::{path}/modules/variations.adoc[leveloffset=+1]
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/appendix/modules/concept_get_started.adoc b/doc/src/main/doc/docs/appendix/modules/concept_get_started.adoc
new file mode 100644
index 0000000..9c9d392
--- /dev/null
+++ b/doc/src/main/doc/docs/appendix/modules/concept_get_started.adoc
@@ -0,0 +1,18 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/appendix/modules
+
+// set document informations
+[id='get-started-concept-{context}']
+= Get Started
+NOTE: {NoteSeeServiceFramework}
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/appendix/modules/variations.adoc b/doc/src/main/doc/docs/appendix/modules/variations.adoc
new file mode 100644
index 0000000..6d1fbae
--- /dev/null
+++ b/doc/src/main/doc/docs/appendix/modules/variations.adoc
@@ -0,0 +1,18 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/appendix/modules
+
+// set document informations
+[id='variations-{context}']
+= Variations
+NOTE: {NoteSeeServiceFramework}
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/architecture/architecture-assembly.adoc b/doc/src/main/doc/docs/architecture/architecture-assembly.adoc
new file mode 100644
index 0000000..380f87f
--- /dev/null
+++ b/doc/src/main/doc/docs/architecture/architecture-assembly.adoc
@@ -0,0 +1,25 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/architecture
+
+// set document informations
+[id='architecture-{context}']
+:context: architecture
+
+// content
+= Architektur Dokumentation
+include::{path}/modules/architecture-concept.adoc[leveloffset=+1]
+
+include::{path}/modules/architecture-reference.adoc[leveloffset=+1]
+
+include::{path}/modules/model-concept.adoc[leveloffset=+1]
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/architecture/modules/architecture-concept.adoc b/doc/src/main/doc/docs/architecture/modules/architecture-concept.adoc
new file mode 100644
index 0000000..85cdb5c
--- /dev/null
+++ b/doc/src/main/doc/docs/architecture/modules/architecture-concept.adoc
@@ -0,0 +1,19 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/architecture/modules
+
+// set document informations
+[id='architecture-concept-{context}']
+= Architektur
+
+NOTE: Die Architektur wird maßgeblich vom Service-Framework (org-eclipse-openk-service) vorgegeben.
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/architecture/modules/architecture-reference.adoc b/doc/src/main/doc/docs/architecture/modules/architecture-reference.adoc
new file mode 100644
index 0000000..61df4c9
--- /dev/null
+++ b/doc/src/main/doc/docs/architecture/modules/architecture-reference.adoc
@@ -0,0 +1,19 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/architecture/modules
+
+// set document informations
+[id='architecture-reference-{context}']
+
+= Architektur-Referenzen
+NOTE: {NoteSeeServiceFramework}
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/architecture/modules/model-concept.adoc b/doc/src/main/doc/docs/architecture/modules/model-concept.adoc
new file mode 100644
index 0000000..ac465f5
--- /dev/null
+++ b/doc/src/main/doc/docs/architecture/modules/model-concept.adoc
@@ -0,0 +1,22 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/architecture/modules
+
+// set document informations
+[id='architecture-procedure-{context}']
+
+= Modell
+
+Das interne Modell ist am CIM-Modell orientiert und benutzt die Klassen "dynamic-topologyPoint" (mit Verweis auf den Ort und einer Liste von Sensoren) und "dynamic-topologyValue" welche von der Basisklasse "Abstractdynamic-topology" abgeleitet ist. Alle Eigenschaften der Messwerte wie Zeitpunkt der Messung, Art der Messung ("dynamic-topologyType"), Genauigkeit sowie die Eigenschaften der Messpunkte wie die Referenz zum Messort und Angaben zu den Sensoren werden durch das vollständige Modell im folgenden UML-Diagramm dargestellt.
+
+.{ProjectNameID} besitzt kein internes Modell
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/admin-assembly.adoc b/doc/src/main/doc/docs/documentation/admin-assembly.adoc
new file mode 100644
index 0000000..6404021
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/admin-assembly.adoc
@@ -0,0 +1,26 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation
+
+// set document informations
+[id='admin-{context}']
+:context: admin
+
+// content
+// = Administrator
+
+include::{path}/modules/admin-concept-de.adoc[leveloffset=+1]
+
+include::{path}/modules/admin-procedure-de.adoc[leveloffset=+1]
+
+include::{path}/modules/admin-reference-de.adoc[leveloffset=+1]
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/documentation-assembly.adoc b/doc/src/main/doc/docs/documentation/documentation-assembly.adoc
new file mode 100644
index 0000000..8f97694
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/documentation-assembly.adoc
@@ -0,0 +1,30 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation
+
+// set document informations
+[id='documentation-{context}']
+:context: documentation
+
+// content
+= Dokumentation
+
+include::{path}/modules/description-concept-de.adoc[leveloffset=+1]
+
+include::{path}/user-assembly.adoc[leveloffset=+1]
+
+include::{path}/admin-assembly.adoc[leveloffset=+1]
+
+include::{path}/modules/interface-concept-de.adoc[leveloffset=+1]
+
+include::{path}/modules/process-concept-de.adoc[leveloffset=+1]
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/admin-concept-de.adoc b/doc/src/main/doc/docs/documentation/modules/admin-concept-de.adoc
new file mode 100644
index 0000000..2db22fd
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/admin-concept-de.adoc
@@ -0,0 +1,19 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+// set document informations
+[id='admin-concept-{context}']
+
+// content
+// = Administration
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/admin-procedure-de.adoc b/doc/src/main/doc/docs/documentation/modules/admin-procedure-de.adoc
new file mode 100644
index 0000000..cf61c02
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/admin-procedure-de.adoc
@@ -0,0 +1,19 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+// set document informations
+[id='admin-procedure-{context}']
+
+// content
+// = Anweisungen zur Administration
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/admin-reference-de.adoc b/doc/src/main/doc/docs/documentation/modules/admin-reference-de.adoc
new file mode 100644
index 0000000..b6bb046
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/admin-reference-de.adoc
@@ -0,0 +1,19 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+// set document informations
+[id='admin-reference-{context}']
+
+// content
+// = Weiterführende Administrations-Dokumentation
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/description-concept-de.adoc b/doc/src/main/doc/docs/documentation/modules/description-concept-de.adoc
new file mode 100644
index 0000000..ea6f9da
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/description-concept-de.adoc
@@ -0,0 +1,23 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+[id='description-concept-{context}']
+= Beschreibung
+
+Über diesen Service wird sowohl die statische Topologie eines Netzgebiets als auch der aktuelle topologische Zustand (z.B. Betriebszustand eines Einspeisers, Auslastung der Anlage in %) bereitgestellt. Die Topologie kann als Ganzes oder Teile davon (z.B. unterhalb eines Transformators) abgefragt werden. Topologische Elemente können nach Typ (z.B. ac-line-segment, substation, bay,...) und Einstiegspunkt gefiltert werden. Aktuelle Messwerte wie z.B. die Wirkleistung der Einspeiser sind unberücksichtigt.
+
+In diesem Dienst werden folgende Funktionalitäten bereitgestellt:
+
+* Import von Daten aus der Topologie, Stammdaten und Messwerten aus Quellsystemen über REST
+* Bereitstellung von REST-Services zum Abrufen der Topologie, Stammdaten und Messwerten
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/interface-concept-de.adoc b/doc/src/main/doc/docs/documentation/modules/interface-concept-de.adoc
new file mode 100644
index 0000000..2b19bb7
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/interface-concept-de.adoc
@@ -0,0 +1,201 @@
+[id='interface-concept-{context}']
+= Schnittstellenbeschreibung
+
+Die Kommunikation mit dem {ProjectName} erfolgt über REST-Schnittstellen, welche
+im http://wiki.openkonsequenz.de/Dom%C3%A4nen-API[OpenKonsequenz-Wiki] veröffentlicht sind.
+
+Von diesem Service angebotene Schnittstellen.
+
+
+
+[%header,cols=1*]
+|===
+|Topologie
+
+|Die Schnittstelle gibt (Teil-)Topologien zurück. Es kann die definierte Topologie abgefragt werden. Dabei kann der Ausschnitt der abgefragten Topologie durch Selektionsparameter eingeschränkt werden. Die Selektion erfolgt über die Wahl eines Ausgangspunkts, der Angabe des Verknüpfungsstatus und einer Selektionsbereichsbegrenzung. Mithilfe des Parameters 'entry-point-id' können alle topologischen Elemente (z. B. Schalter, Transformatoren) oder Element-Container (z. B. Umspannwerke, Teilnetzgebiete) als Ausgangspunkt verwendet werden. Diese werden über die Angabe ihrer eindeutige Kennungen gewählt. Der Parameter 'connection-state' gibt an, wie die Ressourcen, die Teil der Selektion sein sollen, mit dem Ausgangspunkt verknüpft sein sollen (z. B. unter Schalternormalstellung, unter aktueller Schalterstellung). Der Parameter 'selector' gibt an, welche Ressourcen vom Ausgangspunkt aus bei der Selektion mit berücksichtigt werden sollen (z. B. alle Ressourcen innerhalb des gewählten Umspannwerks). Die Grenzen sind in der Regel Netzbereiche mit anderen Nennspannungen. Die Abrufmethode über den Parameter 'fetch-type' definiert, welche Ebenen bei der Abfrage eines Element-Containers berücksichtigt werden. Die Selektion ist optional. Wird sie weggelassen, wird die gesamte Topologie berücksichtigt.
+|===
+
+[%header,cols=2*]
+|===
+|Beschreibung
+|Wert
+
+|http-Methode
+|GET
+
+|Bezeichnung
+|/topology
+
+|aktuelle Version
+|Revision 2 (CIM 17v07)
+
+|Sprache (ISO 639-1)
+|de
+
+|Spezifikation
+|link:resources/api/domain.electricity.dynamic-topology.topology_GET_2_de.open-api.yaml[domain.electricity.dynamic-topology.topology_GET_2_de.open-api.yaml]
+|===
+
+[%header,cols=2*]
+|===
+|Status-Code
+|Beschreibung
+
+|200
+|Die CIM-Antwortnachricht.
+|400
+|Die Schnittstelle wurde mit ungültigen Parametern aufgerufen.
+|410
+|Die Topologie mit der angegebenen Kennung ist nicht mehr gültig.
+|500
+|Es trat ein allgemeiner Fehler bei der Verarbeitung der Anfrage auf.
+
+
+
+|===
+'''
+<<<
+
+[%header,cols=1*]
+|===
+|topologische Ressourcen
+
+|Die Schnittstelle gibt die Ressourcen eines bestimmten Typs aus der Topologie zurück. Es können die Ressourceninstanzen eines bestimmten Typs aus der Topologie abgefragt werden. Dabei kann die Auswahl der Ressourcen durch Selektions- und Filterparameter eingeschränkt werden. Der Parameter 'power-system-resources' schränkt die Abfrage auf die Typen der zu suchenden Ressourcen ein. Diese können über die Schnittstelle <b>domain/electricity/dynamic-topology/power-system-resource-types</b> abgefragt werden. Die Selektion erfolgt über die Wahl eines Ausgangspunkts, der Angabe des Verknüpfungsstatus und einer Selektionsbereichsbegrenzung. Mithilfe des Parameters 'entry-point-id' können alle topologischen Elemente (z. B. Schalter, Transformatoren) oder Element-Container (z. B. Umspannwerke, Teilnetzgebiete) als Ausgangspunkt verwendet werden. Diese werden über die Angabe ihrer eindeutigen Kennungen gewählt. Der Parameter 'connection-state' gibt an, wie die Ressourcen, die Teil der Selektion sein sollen, mit dem Ausgangspunkt verknüpft sein sollen (z. B. unter Schalternormalstellung, unter aktueller Schalterstellung). Der Parameter 'selector' gibt an, welche Ressourcen vom Ausgangspunkt aus bei der Selektion mit berücksichtigt werden sollen (z. B. alle Ressourcen innerhalb des gewählten Umspannwerks). Die Grenzen sind in der Regel Netzbereiche mit anderen Nennspannungen. Die Abrufmethode über den Parameter 'fetch-type' definiert, welche Ebenen bei der Abfrage eines Element-Containers berücksichtigt werden. Die Selektion ist optional. Wird sie weggelassen, wird die gesamte Topologie berücksichtigt.
+|===
+
+[%header,cols=2*]
+|===
+|Beschreibung
+|Wert
+
+|http-Methode
+|GET
+
+|Bezeichnung
+|/power-system-resources
+
+|aktuelle Version
+|Revision 1 (CIM 17v07)
+
+|Sprache (ISO 639-1)
+|de
+
+|Spezifikation
+|link:resources/api/domain.electricity.dynamic-topology.power-system-resources_GET_1_de.open-api.yaml[domain.electricity.dynamic-topology.power-system-resources_GET_1_de.open-api.yaml]
+|===
+
+[%header,cols=2*]
+|===
+|Status-Code
+|Beschreibung
+
+|200
+|Die CIM-Antwortnachricht.
+|400
+|Die Schnittstelle wurde mit ungültigen Parametern aufgerufen.
+|410
+|Die Topologie mit der angegebenen Kennung ist nicht mehr gültig.
+|500
+|Es trat ein allgemeiner Fehler bei der Verarbeitung der Anfrage auf.
+
+
+
+|===
+'''
+<<<
+
+[%header,cols=1*]
+|===
+|topologische Ressourcentypen
+
+|Die Schnittstelle gibt die in der Topologie definierten Ressourcentypen zurück. Es können die Typen der Ressourcen, die in der Topologie definiert sind, abgefragt werden. Dabei kann die Auswahl der Ressourcentypen durch Selektionsparameter eingeschränkt werden. Die Selektion erfolgt über die Wahl eines Ausgangspunkts, der Angabe des Verknüpfungsstatus und einer Selektionsbereichsbegrenzung. Mithilfe des Parameters 'entry-point-id' können alle topologischen Elemente (z. B. Schalter, Transformatoren) oder Element-Container (z. B. Umspannwerke, Teilnetzgebiete) als Ausgangspunkt verwendet werden. Diese werden über die Angabe ihrer eindeutigen Kennungen gewählt. Der Parameter 'connection-state' gibt an, wie die Ressourcen, die Teil der Selektion sein sollen, mit dem Ausgangspunkt verknüpft sein sollen (z. B. unter Schalternormalstellung, unter aktueller Schalterstellung). Der Parameter 'selector' gibt an, welche Ressourcen vom Ausgangspunkt aus bei der Selektion mit berücksichtigt werden sollen (z. B. alle Ressourcen innerhalb des gewählten Umspannwerks). Die Grenzen sind in der Regel Netzbereiche mit anderen Nennspannungen. Die Abrufmethode über den Parameter 'fetch-type' definiert, welche Ebenen bei der Abfrage eines Element-Containers berücksichtigt werden. Die Selektion ist optional. Wird sie weggelassen, wird die gesamte Topologie berücksichtigt.
+|===
+
+[%header,cols=2*]
+|===
+|Beschreibung
+|Wert
+
+|http-Methode
+|GET
+
+|Bezeichnung
+|/power-system-resource-types
+
+|aktuelle Version
+|Revision 1 (CIM 17v07)
+
+|Sprache (ISO 639-1)
+|de
+
+|Spezifikation
+|link:resources/api/domain.electricity.dynamic-topology.power-system-resource-types_GET_1_de.open-api.yaml[domain.electricity.dynamic-topology.power-system-resource-types_GET_1_de.open-api.yaml]
+|===
+
+[%header,cols=2*]
+|===
+|Status-Code
+|Beschreibung
+
+|200
+|Die Antwortnachricht.
+|400
+|Die Schnittstelle wurde mit ungültigen Parametern aufgerufen.
+|410
+|Die Topologie mit der angegebenen Kennung ist nicht mehr gültig.
+|500
+|Es trat ein allgemeiner Fehler bei der Verarbeitung der Anfrage auf.
+
+
+
+|===
+'''
+<<<
+
+[%header,cols=1*]
+|===
+|verbundene topologische Verbindungselemente
+
+|Die Schnittstelle gibt, die mit einem Wandler verbundenen topologische Verbindungselemente zurück. Es können die topologischen Verbindungselemente aus der Topologie, die mit einem Wandler verbunden sind, abgefragt werden. Als Wandler wir in diesem Context eine topologische Ressource bezeichnet, die bestimmte Größen innerhalb der Topologie transformieren kann. In elektrischen Netzen sind dies beispielsweise Transformatoren, in Gasnetzen sind dies Druckminderungs- oder Druckerhöhungsanlagen. Die Auswahl der zurückgegebenen topologischen Verbindungselemente kann durch Filterparameter eingeschränkt werden. Mithilfe des Parameters 'converter-id' kann die Abfrage auf die eindeutige Kennung eines Wandlers eingeschränkt werden. Unbekannte Kennungen werden ignoriert. Der Parameter 'topological-resource-types' schränkt die benutzerspezifischen Typen von topologischen Ressourcen ein, die zurückgegeben werden sollen. Verschiedene Kennungen können mit Hilfe des Zeichens '|' getrennt werden. Wird ein benutzerspezifischer Typ angegeben, werden alle topologischen Ressourcen dieses Typs zurückgegeben. Wird keine Kennung angegeben, werden alle topologischen Ressourcen zurückgegeben. Unbekannte Kennungen werden ignoriert. Der Parameter 'connection-state' gibt an, wie die Ressourcen, die Teil der Selektion sein sollen, mit dem Ausgangspunkt verknüpft sein sollen (z. B. unter Schalternormalstellung, unter aktueller Schalterstellung). Der Parameter 'selector' gibt an, welche Ressourcen vom Ausgangspunkt aus bei der Selektion mit berücksichtigt werden sollen (z. B. alle Ressourcen innerhalb des gewählten Umspannwerks). Die Grenzen sind in der Regel Netzbereiche mit anderen Nennspannungen.
+|===
+
+[%header,cols=2*]
+|===
+|Beschreibung
+|Wert
+
+|http-Methode
+|GET
+
+|Bezeichnung
+|/connected-connecting-equipments
+
+|aktuelle Version
+|Revision 1 (CIM 17v07)
+
+|Sprache (ISO 639-1)
+|de
+
+|Spezifikation
+|link:resources/api/domain.electricity.dynamic-topology.connected-connecting-equipments_GET_1_de.open-api.yaml[domain.electricity.dynamic-topology.connected-connecting-equipments_GET_1_de.open-api.yaml]
+|===
+
+[%header,cols=2*]
+|===
+|Status-Code
+|Beschreibung
+
+|200
+|Die CIM-Antwortnachricht.
+|400
+|Die Schnittstelle wurde mit ungültigen Parametern aufgerufen.
+|410
+|Die Topologie mit der angegebenen Kennung ist nicht mehr gültig.
+|500
+|Es trat ein allgemeiner Fehler bei der Verarbeitung der Anfrage auf.
+
+
+
+|===
+'''
+<<<
diff --git a/doc/src/main/doc/docs/documentation/modules/process-concept-de.adoc b/doc/src/main/doc/docs/documentation/modules/process-concept-de.adoc
new file mode 100644
index 0000000..4f60510
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/process-concept-de.adoc
@@ -0,0 +1,34 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+// set document informations
+[id='process-concept-{context}']
+
+// content
+= Prozessbeschreibung
+
+Im Prozess 01 kann die gesamte Topologie des Netzgebiets abgefragt werden. Der Prozess 02 fragt topologische Ressourcen in Abhängigkeit des Ressourcen-Typs oder des Einstiegspunkts ab. Alle Ressourcen-Typen eines Netzgebiets können im Prozess 03 nachgefragt werden. Schließlich können verbundenen leitende Elemente z.B. an einem Transformator im Prozess 04 adressiert werden.
+
+
+.01_Topologie_abfragen
+image::process/01_Topologie_abfragen.png[Figure 1]
+
+.02_topologische_Ressourcen_abfragen
+image::process/02_topologische_Ressourcen_abfragen.png[Figure 2]
+
+.03_topologische Ressourcentypen_abfragen
+image::process/03_topologische Ressourcentypen_abfragen.png[Figure 3]
+
+.04_verbundene_topologische_Verbindungselemente_abfragen
+image::process/04_verbundene_topologische_Verbindungselemente_abfragen.png[Figure 4]
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/user-concept-de.adoc b/doc/src/main/doc/docs/documentation/modules/user-concept-de.adoc
new file mode 100644
index 0000000..d0c57e8
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/user-concept-de.adoc
@@ -0,0 +1,21 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+// set document informations
+[id='user-concept-{context}']
+
+// content
+= Benutzung
+NOTE: {NoteSeeServiceFramework}
+
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/user-procedure-de.adoc b/doc/src/main/doc/docs/documentation/modules/user-procedure-de.adoc
new file mode 100644
index 0000000..a40e74d
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/user-procedure-de.adoc
@@ -0,0 +1,19 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+// set document informations
+[id='user-procedure-{context}']
+
+// content
+// = Benutzungsanweisungen
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/modules/user-reference-de.adoc b/doc/src/main/doc/docs/documentation/modules/user-reference-de.adoc
new file mode 100644
index 0000000..07414b4
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/modules/user-reference-de.adoc
@@ -0,0 +1,19 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation/modules
+
+// set document informations
+[id='user-reference-{context}']
+
+// content
+// = Weiterführende Benutzungs-Dokumentation
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/documentation/user-assembly.adoc b/doc/src/main/doc/docs/documentation/user-assembly.adoc
new file mode 100644
index 0000000..66886fa
--- /dev/null
+++ b/doc/src/main/doc/docs/documentation/user-assembly.adoc
@@ -0,0 +1,25 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/documentation
+
+// set document informations
+[id='user-{context}']
+:context: user
+
+// content
+
+include::{path}/modules/user-concept-de.adoc[leveloffset=+1]
+
+include::{path}/modules/user-procedure-de.adoc[leveloffset=+1]
+
+include::{path}/modules/user-reference-de.adoc[leveloffset=+1]
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/howto/howto-assembly.adoc b/doc/src/main/doc/docs/howto/howto-assembly.adoc
new file mode 100644
index 0000000..ce1ee93
--- /dev/null
+++ b/doc/src/main/doc/docs/howto/howto-assembly.adoc
@@ -0,0 +1,28 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/howto
+
+// set document informations
+[id='howto-{context}']
+:context: howto
+
+// content
+= HowTo
+
+ifeval::["{lang}" == "de"]
+include::{path}/modules/build-procedure-de.adoc[leveloffset=+1]
+include::{path}/modules/config-procedure-de.adoc[leveloffset=+1]
+include::{path}/modules/run-procedure-de.adoc[leveloffset=+1]
+include::{path}/modules/code-procedure-de.adoc[leveloffset=+1]
+include::{path}/modules/test-procedure-de.adoc[leveloffset=+1]
+endif::[]
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/howto/modules/build-procedure-de.adoc b/doc/src/main/doc/docs/howto/modules/build-procedure-de.adoc
new file mode 100644
index 0000000..f1209dc
--- /dev/null
+++ b/doc/src/main/doc/docs/howto/modules/build-procedure-de.adoc
@@ -0,0 +1,18 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/howto/modules
+
+[id='build-procedure-{context}']
+= Erstellen
+
+NOTE: {NoteSeeServiceFramework}
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/howto/modules/code-procedure-de.adoc b/doc/src/main/doc/docs/howto/modules/code-procedure-de.adoc
new file mode 100644
index 0000000..ea985c8
--- /dev/null
+++ b/doc/src/main/doc/docs/howto/modules/code-procedure-de.adoc
@@ -0,0 +1,20 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/howto/modules
+
+[id='code-procedure-{context}']
+:parent-image-dir: {imagesdir}
+
+= Code
+
+NOTE: {NoteSeeServiceFramework}
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/howto/modules/config-procedure-de.adoc b/doc/src/main/doc/docs/howto/modules/config-procedure-de.adoc
new file mode 100644
index 0000000..b7e4fa1
--- /dev/null
+++ b/doc/src/main/doc/docs/howto/modules/config-procedure-de.adoc
@@ -0,0 +1,27 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/howto/modules
+
+[id='config-procedure-{context}']
+
+= Konfiguration
+
+//.Ordnerstruktur erstellen
+// tbd
+
+NOTE: {NoteSeeServiceFramework}
+
+* Schnittstellen und Parameter: dynamic-topology-service.config
+----
+include::{srcpath}/dev/service/dynamic-topology-service.config[]
+----
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/howto/modules/run-procedure-de.adoc b/doc/src/main/doc/docs/howto/modules/run-procedure-de.adoc
new file mode 100644
index 0000000..2903dd3
--- /dev/null
+++ b/doc/src/main/doc/docs/howto/modules/run-procedure-de.adoc
@@ -0,0 +1,18 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/howto/modules
+
+[id='run-procedure-{context}']
+= Starten
+
+NOTE: {NoteSeeServiceFramework}
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/howto/modules/test-procedure-de.adoc b/doc/src/main/doc/docs/howto/modules/test-procedure-de.adoc
new file mode 100644
index 0000000..dca0b10
--- /dev/null
+++ b/doc/src/main/doc/docs/howto/modules/test-procedure-de.adoc
@@ -0,0 +1,18 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/howto/modules
+
+[id='test-procedure-{context}']
+//= Test
+
+//.Vorbereitung
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/test/modules/test-cases-report.csv b/doc/src/main/doc/docs/test/modules/test-cases-report.csv
new file mode 100644
index 0000000..790f360
--- /dev/null
+++ b/doc/src/main/doc/docs/test/modules/test-cases-report.csv
@@ -0,0 +1,4 @@
+;Offen;In Ausführung;Erfolgreich;Fehlerhaft;Nicht ausführbar;Gestrichen;Testfälle
+Initialer Test;0;20;1;
+Regressionstest;1;0;0;
+Gesamt;1;20;0;19
diff --git a/doc/src/main/doc/docs/test/modules/test-scripts-concept.adoc b/doc/src/main/doc/docs/test/modules/test-scripts-concept.adoc
new file mode 100644
index 0000000..63c110a
--- /dev/null
+++ b/doc/src/main/doc/docs/test/modules/test-scripts-concept.adoc
@@ -0,0 +1,15 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/test/modules
+
+//= Testdrehbücher
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/docs/test/test-assembly.adoc b/doc/src/main/doc/docs/test/test-assembly.adoc
new file mode 100644
index 0000000..9a1b321
--- /dev/null
+++ b/doc/src/main/doc/docs/test/test-assembly.adoc
@@ -0,0 +1,36 @@
+// include commons
+include::{docdir}/common/toc.adoc[]
+
+// save parent informations
+:parent-context: {context}
+:parent-path: {path}
+
+// local path behind docdir
+:path: {docdir}/docs/test
+
+// set document informations
+[id='test-{context}']
+:context: test
+
+= Test
+
+include::{path}/modules/test-scripts-concept.adoc[leveloffset=+1]
+
+== Auswertung Testdrehbuch
+
+.Ergebnis
+[%rotate, format="csv", separator=";", options="header"]
+|===
+include::{path}/modules/test-cases-report.csv[]
+|===
+
+
+== Testdrehbuch
+
+link:resources/test/test.ods[Link zu test.ods]
+
+NOTE: ODS-Format = Open Document Format for Office Applications
+
+// tear down document and reset parent informations
+:context: {parent-context}
+:path: {parent-path}
diff --git a/doc/src/main/doc/images/process/01_Topologie_abfragen.png b/doc/src/main/doc/images/process/01_Topologie_abfragen.png
new file mode 100644
index 0000000..43dd3c2
--- /dev/null
+++ b/doc/src/main/doc/images/process/01_Topologie_abfragen.png
Binary files differ
diff --git a/doc/src/main/doc/images/process/02_topologische_Ressourcen_abfragen.png b/doc/src/main/doc/images/process/02_topologische_Ressourcen_abfragen.png
new file mode 100644
index 0000000..f787dc0
--- /dev/null
+++ b/doc/src/main/doc/images/process/02_topologische_Ressourcen_abfragen.png
Binary files differ
diff --git a/doc/src/main/doc/images/process/03_topologische Ressourcentypen_abfragen.png b/doc/src/main/doc/images/process/03_topologische Ressourcentypen_abfragen.png
new file mode 100644
index 0000000..5c0e2cd
--- /dev/null
+++ b/doc/src/main/doc/images/process/03_topologische Ressourcentypen_abfragen.png
Binary files differ
diff --git a/doc/src/main/doc/images/process/04_verbundene_topologische_Verbindungselemente_abfragen.png b/doc/src/main/doc/images/process/04_verbundene_topologische_Verbindungselemente_abfragen.png
new file mode 100644
index 0000000..2716f57
--- /dev/null
+++ b/doc/src/main/doc/images/process/04_verbundene_topologische_Verbindungselemente_abfragen.png
Binary files differ
diff --git a/doc/src/main/doc/resources/api/domain.electricity.dynamic-topology.connected-connecting-equipments_GET_1_de.open-api.yaml b/doc/src/main/doc/resources/api/domain.electricity.dynamic-topology.connected-connecting-equipments_GET_1_de.open-api.yaml
new file mode 100644
index 0000000..4a50705
--- /dev/null
+++ b/doc/src/main/doc/resources/api/domain.electricity.dynamic-topology.connected-connecting-equipments_GET_1_de.open-api.yaml
@@ -0,0 +1,345 @@
+swagger: '2.0'
+info:
+  title: verbundene topologische Verbindungselemente
+  description: Diese Schnittstelle ist Teil der [oK](http://www.openkonsequenz.de) Domänen API.
+  version: Revision 1 (CIM 17v07)
+  contact:
+    name: BTC AG
+    url: http://www.btc-ag.com
+    email: openk@btc-ag.com
+  license:
+    name: Eclipse Public License 1.0
+    url: https://www.eclipse.org/legal/epl-v10.html
+host: api.openk.de
+schemes:
+- http
+basePath: /domain/electricity/dynamic-topology
+produces:
+- application/xml
+paths:
+  /connected-connecting-equipments:
+    get:
+      summary: Die Schnittstelle gibt, die mit einem Wandler verbundenen topologische Verbindungselemente zurück. Es können die topologischen Verbindungselemente aus der Topologie, die mit einem Wandler verbunden sind, abgefragt werden. Als Wandler wir in diesem Context eine topologische Ressource bezeichnet, die bestimmte Größen innerhalb der Topologie transformieren kann. In elektrischen Netzen sind dies beispielsweise Transformatoren, in Gasnetzen sind dies Druckminderungs- oder Druckerhöhungsanlagen. Die Auswahl der zurückgegebenen topologischen Verbindungselemente kann durch Filterparameter eingeschränkt werden. Mithilfe des Parameters 'converter-id' kann die Abfrage auf die eindeutige Kennung eines Wandlers eingeschränkt werden. Unbekannte Kennungen werden ignoriert. Der Parameter 'topological-resource-types' schränkt die benutzerspezifischen Typen von topologischen Ressourcen ein, die zurückgegeben werden sollen. Verschiedene Kennungen können mit Hilfe des Zeichens '|' getrennt werden. Wird ein benutzerspezifischer Typ angegeben, werden alle topologischen Ressourcen dieses Typs zurückgegeben. Wird keine Kennung angegeben, werden alle topologischen Ressourcen zurückgegeben. Unbekannte Kennungen werden ignoriert. Der Parameter 'connection-state' gibt an, wie die Ressourcen, die Teil der Selektion sein sollen, mit dem Ausgangspunkt verknüpft sein sollen (z. B. unter Schalternormalstellung, unter aktueller Schalterstellung). Der Parameter 'selector' gibt an, welche Ressourcen vom Ausgangspunkt aus bei der Selektion mit berücksichtigt werden sollen (z. B. alle Ressourcen innerhalb des gewählten Umspannwerks). Die Grenzen sind in der Regel Netzbereiche mit anderen Nennspannungen.
+      description: |
+                Mit Hilfe dieser Schnittstelle können die topologischen Verbindungselemente aus der Topologie, die mit einem Wandler verbunden sind, abgefragt werden. Als Wandler wir in diesem Context eine topologische Ressource bezeichnet, die bestimmte Größen innerhalb der Topologie transformieren kann. In elektrischen Netzen sind dies beispielsweise Transformatoren, in Gasnetzen sind dies Druckminderungs- oder Druckerhöhungsanlagen. Die Auswahl der zurückgegebenen topologischen Verbindungselemente kann durch Filterparameter eingeschränkt werden.
+                \
+                Mit dieser Schnittstelle zum Beispiel folgende Abfragen realisert werden:
+                  - alle Einspeiser unterhalb (auf der Sekundärseite) eines Transformators
+      parameters:
+      - name: revision
+        in: query
+        description: Version, die den Nachrichtenaustausch definiert. Dies ist nicht die CIM-Version.
+        required: true
+        type: integer
+        format: int32
+        minimum: 1
+        maximum: 1
+      - name: timestamp
+        in: query
+        description: Zeitpunkt, an dem die Nachricht versendet wurde (in UTC gemäß ISO-8601-Format YYYY-MM-DDTHH:mm:ss.SSSZ).
+        required: false
+        type: string 
+        format: date-time
+        pattern: '^([0-9]{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|30|31)T(([0-1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{3}Z)$'
+      - name: source
+        in: query
+        description: Eindeutige Bezeichnung des Senders der Nachricht.
+        required: false
+        type: string
+      - name: user-id
+        in: query
+        description: Eindeutige Kennung des angemeldeten Nutzers (Sender).
+        required: false
+        type: string
+      - name: message-id
+        in: query
+        description: Eindeutige Kennung dieser Nachricht. Generiert vom Sender der Nachricht.
+        required: false
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      - name: topology-id
+        in: query
+        description: Eindeutige Kennung der Topologie, für die der aktuelle Aufruf erfolgt. Wird der Parameter nicht angegeben, bezieht sich die Abfrage auf die aktuelle Topologie.
+        required: false
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      - name: converter-id
+        in: query
+        description: Eindeutige Kennung des Wandlers. Unbekannte Kennungen werden ignoriert.
+        required: true
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      - name: topological-resource-types
+        in: query
+        description: Die Typen der zu suchenden topologischen Ressourcen. Verschiedene Typen  können mit Hilfe des Zeichens '|' getrennt werden. Diese Typen können über die Schnittstelle <b>domain/electricity/dynamic-topology/power-system-resource-types</b> abgefragt werden. Unbekannte Typen werden ignoriert. Wird keine Kennung angegeben, werden alle Typen berücksichtigt.
+        required: false
+        type: string
+      - name: connection-state
+        in: query
+        description: >
+          Der Verknüpfungsstatus:
+           * `Active` - verknüpfte topologische Ressourcen unter Berücksichtigung der aktuellen Unterbrecherstellung (z. B. Schalterstellung, Schieberstellung)
+           * `Ignore (default)` - verknüpfte topologische Ressourcen unter Vernachlässigung der Unterbrecherstellung (z. B. Schalterstellung, Schieberstellung)
+           * `Normal` - verknüpfte topologische Ressourcen unter Berücksichtigung der Unterbrechernormalstellung (z. B. Schalterstellung, Schieberstellung)
+        required: false
+        type: string
+        default: Ignore
+        enum: [Active, Ignore, Normal]
+      - name: selector
+        in: query
+        description: >
+          Die Selektionsbereichsbegrenzung:
+           * `Above` - die topologischen Ressourcen auf der höherwertigen Seite des Wandlers (z. B. Primärseite des Transformators, höhere Druckebene)
+           * `Behind` - die topologischen Ressourcen auf den niederwertigen Seite des Wandlers (z. B. Sekundärseiten des Transformators, niedrigere Druckebene)
+        required: false
+        type: string
+        default: Behind
+        enum: [Above, Behind]
+      responses:
+        200:
+          description: Die CIM-Antwortnachricht.
+          schema:
+            $ref: '#/definitions/ResponseMessage'
+        400:
+          description: Die Schnittstelle wurde mit ungültigen Parametern aufgerufen.
+        410:
+          description: Die Topologie mit der angegebenen Kennung ist nicht mehr gültig.
+        500:
+          description: Es trat ein allgemeiner Fehler bei der Verarbeitung der Anfrage auf.
+definitions:
+### specific definitions ######################################################
+  Payload:
+    description: Der Inhalt der CIM-Antwortnachricht.
+    type: object
+    properties:
+      TopologicalResources:
+        $ref: '#/definitions/PowerSystemResources'
+    required:
+    - PowerSystemResources
+  PowerSystemResources:
+    description: Auflistung der topologischen Ressourcen
+    type: object
+    properties:
+      ACLineSegment:
+        description: optionale Auflistung der Leitungsabschnitte (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.ac-line-segments_GET_3_de.open-api.yaml#/definitions/ACLineSegment'
+      BaseVoltages:
+        description: optionale Auflistung der Nennspannungen (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.base-voltages_GET_3_de.open-api.yaml#/definitions/BaseVoltage'
+      Bays:
+        description: optionale Auflistung der Felder (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.bays_GET_2_de.open-api.yaml#/definitions/Bay'
+      Breakers:
+        description: optionale Auflistung der Leistungsschalter (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.breakers_GET_3_de.open-api.yaml#/definitions/Breaker'
+      BusbarSection:
+        description: optionale Auflistung der Sammelschienen (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.busbar-sections_GET_3_de.open-api.yaml#/definitions/BusbarSection'
+      Disconnectors:
+        description: optionale Auflistung der Trennschalter (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.disconnectors_GET_3_de.open-api.yaml#/definitions/Disconnector'
+      EarthFaultCompensators:
+        description: optionale Auflistung der Erdungswiderstände (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.earth-fault-compensators_GET_1_de.open-api.yaml#/definitions/EarthFaultCompensator'
+      EnergyConsumer:
+        description: optionale Auflistung der Verbraucher (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.energy-consumers_GET_3_de.open-api.yaml#/definitions/EnergyConsumer'
+      EnergySources:
+        description: optionale Auflistung der Einspeiser (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.energy-sources_GET_3_de.open-api.yaml#/definitions/EnergySource'
+      GeographicalRegions:
+        description: optionale Auflistung der Netzgebiete (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.geographical-regions_GET_3_de.open-api.yaml#/definitions/GeographicalRegion'
+      GroundingImpedances:
+        description: optionale Auflistung der Erdschlussdrossel (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.grounding-impedances_GET_1_de.open-api.yaml#/definitions/GroundingImpedance'
+      Grounds:
+        description: optionale Auflistung der Erdung (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.grounds_GET_1_de.open-api.yaml#/definitions/Ground'
+      Junctions:
+        description: optionale Auflistung der Muffen (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.junctions_GET_3_de.open-api.yaml#/definitions/Junction'
+      Lines:
+        description: optionale Auflistung der Leitungen (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.lines_GET_3_de.open-api.yaml#/definitions/Line'
+      LineTypes:
+        description: optionale Auflistung der Leitungsarten (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.line-types_GET_2_de.open-api.yaml#/definitions/PSRType'
+      LoadBreakSwitches:
+        description: optionale Auflistung der Lastgangschalter (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.load-break-switches_GET_3_de.open-api.yaml#/definitions/LoadBreakSwitch'
+      PetersenCoils:
+        description: optionale Auflistung der Petersenspulen (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.petersen-coils_GET_1_de.open-api.yaml#/definitions/PetersenCoil'
+      Plants:
+        description: optionale Auflistung der Kraftwerke (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.plants_GET_2_de.open-api.yaml#/definitions/Plant'
+      PowerTransformers:
+        description: optionale Auflistung der Transformatoren (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.power-transformers_GET_3_de.open-api.yaml#/definitions/PowerTransformer'
+      SubGeographicalRegions:
+        description: optionale Auflistung der Teilnetzgebiete (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.sub-geographical-regions_GET_2_de.open-api.yaml#/definitions/SubGeographicalRegion'
+      Substations:
+        description: optionale Auflistung der Stationen (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.substations_GET_3_de.open-api.yaml#/definitions/Substation'
+      SubstationTypes:
+        description: optionale Auflistung der Stationsarten (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.substation-types_GET_3_de.open-api.yaml#/definitions/PSRType'
+      Switches:
+        description: optionale Auflistung der Schalter (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.switches_GET_2_de.open-api.yaml#/definitions/Switch'
+      VoltageLevels:
+        description: optionale Auflistung der Spannungsebenen (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '../../../source-system/electricity/static-topology/source-system.electricity.static-topology.voltage-levels_GET_3_de.open-api.yaml#/definitions/VoltageLevel'
+### common definitions ########################################################
+  Header_Reply:
+    description: Der Kopf der CIM-Nachricht.
+    type: object
+    properties:
+      Verb:
+        description: Hinweis, um welche Art von Nachricht es sich handelt.
+        type: string
+        default: reply
+      Noun:
+        description: Hinweis auf den Nachrichteninhalt.
+        type: string
+      Revision:
+        description: Version, die den Nachrichtenaustausch definiert. Dies ist nicht die CIM-Version.
+        type: integer
+        format: int32
+        minimum: 1
+        maximum: 1
+      Timestamp:
+        description: Zeitpunkt, an dem die Nachricht versendet wurde (in UTC gemäß ISO-8601-Format YYYY-MM-DDThh:mm:ss.sssZ).
+        type: string
+        format: date-time
+        pattern: '^([0-9]{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|30|31)T(([0-1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{3}Z)$'
+      Source:
+        description: Eindeutige Bezeichnung des Senders der Nachricht.
+        type: string
+      MessageID:
+        description: Eindeutige Kennung dieser Nachricht. Generiert vom Sender der Nachricht.
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      User:
+        $ref: '#/definitions/UserID'
+    required:
+    - Verb
+    - Noun
+    - Revision
+    - Timestamp
+    - Source
+    - MessageID
+    - User
+    xml:
+      name: Header
+  Reply_OK:
+    description: Die Antwort der CIM-Nachricht.
+    type: object
+    properties:
+      Result:
+        description: Antworttext
+        type: string
+        default: OK
+    required:
+    - Result
+    xml:
+      name: Reply
+  ResponseMessage:
+    description: Die CIM-Antwortnachricht.
+    type: object
+    properties:
+      Header:
+        $ref: '#/definitions/Header_Reply'
+      Reply:
+        $ref: '#/definitions/Reply_OK'
+      Payload:
+        $ref: '#/definitions/Payload'
+    required:
+    - Header
+    - Reply
+    - Payload
+  UserID:
+    properties:
+      id:
+        description: Eindeutige Kennung des angemeldeten Nutzers (Empfänger).
+        type: string
+        xml:
+          name: UserID
\ No newline at end of file
diff --git a/doc/src/main/doc/resources/api/domain.electricity.dynamic-topology.power-system-resource-types_GET_1_de.open-api.yaml b/doc/src/main/doc/resources/api/domain.electricity.dynamic-topology.power-system-resource-types_GET_1_de.open-api.yaml
new file mode 100644
index 0000000..30e6e4b
--- /dev/null
+++ b/doc/src/main/doc/resources/api/domain.electricity.dynamic-topology.power-system-resource-types_GET_1_de.open-api.yaml
@@ -0,0 +1,231 @@
+swagger: '2.0'
+info:
+  title: topologische Ressourcentypen
+  description: Diese Schnittstelle ist Teil der [oK](http://www.openkonsequenz.de) Domänen API.
+  version: Revision 1 (CIM 17v07)
+  contact:
+    name: BTC AG
+    url: http://www.btc-ag.com
+    email: openk@btc-ag.com
+  license:
+    name: Eclipse Public License 1.0
+    url: https://www.eclipse.org/legal/epl-v10.html
+host: api.openk.de
+schemes:
+- http
+basePath: /domain/electricity/dynamic-topology
+produces:
+- application/xml
+paths:
+  /power-system-resource-types:
+    get:
+      summary: Die Schnittstelle gibt die in der Topologie definierten Ressourcentypen zurück. Es können die Typen der Ressourcen, die in der Topologie definiert sind, abgefragt werden. Dabei kann die Auswahl der Ressourcentypen durch Selektionsparameter eingeschränkt werden. Die Selektion erfolgt über die Wahl eines Ausgangspunkts, der Angabe des Verknüpfungsstatus und einer Selektionsbereichsbegrenzung. Mithilfe des Parameters 'entry-point-id' können alle topologischen Elemente (z. B. Schalter, Transformatoren) oder Element-Container (z. B. Umspannwerke, Teilnetzgebiete) als Ausgangspunkt verwendet werden. Diese werden über die Angabe ihrer eindeutigen Kennungen gewählt. Der Parameter 'connection-state' gibt an, wie die Ressourcen, die Teil der Selektion sein sollen, mit dem Ausgangspunkt verknüpft sein sollen (z. B. unter Schalternormalstellung, unter aktueller Schalterstellung). Der Parameter 'selector' gibt an, welche Ressourcen vom Ausgangspunkt aus bei der Selektion mit berücksichtigt werden sollen (z. B. alle Ressourcen innerhalb des gewählten Umspannwerks). Die Grenzen sind in der Regel Netzbereiche mit anderen Nennspannungen. Die Abrufmethode über den Parameter 'fetch-type' definiert, welche Ebenen bei der Abfrage eines Element-Containers berücksichtigt werden. Die Selektion ist optional. Wird sie weggelassen, wird die gesamte Topologie berücksichtigt.
+      description: |
+                Mit Hilfe dieser Schnittstelle können die Typen der Ressourcen, die in der Topologie definiert sind, abgefragt werden. Dabei kann die Auswahl der Ressourcentypen durch Selektionsparameter eingeschränkt werden.
+                \
+                Die Selektion erfolgt über die Wahl eines Ausgangspunkts, der Angabe des Verknüpfungsstatus und einer Selektionsbereichsbegrenzung:
+                - Als Ausgangspunkt können alle topologischen Elemente (z. B. Schalter, Transformatoren) oder Element-Container (z. B. Umspannwerke, Teilnetzgebiete) verwendet werden. Diese werden über die Angabe ihrer eindeutige Kennungen gewählt.
+                - Der Verknüpfungsstatus gibt an, wie die Ressourcen, die Teil der Selektion sein sollen, mit dem Ausgangspunkt verknüpft sein sollen (z. B. unter Schalternormalstellung, unter aktueller Schalterstellung)
+                - Die Selektionsbereichsbegrenzung gibt an, welche Ressourcen vom Ausgangspunkt aus bei der Selektion mit berücksichtigt werden sollen (z. B. alle Ressourcen innerhalb des gewählten Umspannwerks). Die Grenzen sind in der Regel Netzbereiche mit anderen Nennspannungen.
+                - Die Abrufmethode definiert, welche Ebenen bei der Abfrage eines Element-Containers berücksichtigt werden.
+                  
+                Die Selektion ist optional. Wird sie weggelassen, wird die gesamte Topologie berücksichtigt.
+      parameters:
+      - name: revision
+        in: query
+        description: Version, die den Nachrichtenaustausch definiert. Dies ist nicht die CIM-Version.
+        required: true
+        type: integer
+        format: int32
+        minimum: 1
+        maximum: 1
+      - name: timestamp
+        in: query
+        description: Zeitpunkt, an dem die Nachricht versendet wurde (in UTC gemäß ISO-8601-Format YYYY-MM-DDTHH:mm:ss.SSSZ).
+        required: false
+        type: string 
+        format: date-time
+        pattern: '^([0-9]{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|30|31)T(([0-1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{3}Z)$'
+      - name: source
+        in: query
+        description: Eindeutige Bezeichnung des Senders der Nachricht.
+        required: false
+        type: string
+      - name: user-id
+        in: query
+        description: Eindeutige Kennung des angemeldeten Nutzers (Sender).
+        required: false
+        type: string
+      - name: message-id
+        in: query
+        description: Eindeutige Kennung dieser Nachricht. Generiert vom Sender der Nachricht.
+        required: false
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      - name: topology-id
+        in: query
+        description: Eindeutige Kennung der Topologie, für die der aktuelle Aufruf erfolgt. Wird der Parameter nicht angegeben, bezieht sich die Abfrage auf die aktuelle Topologie.
+        required: false
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      - name: entry-point-id
+        in: query
+        description: Die eindeutige Kennung des Ausgangspunkts.
+        required: false
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      - name: connection-state
+        in: query
+        description: >
+          Der Verknüpfungsstatus:
+           * `Active` - elektrisch verknüpfte Topologie unter Berücksichtigung der aktuellen Schalterstellung
+           * `Ignore (default)` - verknüpfte Topologie unter Vernachlässigung der Schalterstellungen
+           * `Normal` - elektrisch verknüpfte Topologie unter Berücksichtigung der Schalternormalstellung
+           * `NormalWithSwitchState` - elektrisch verknüpfte Topologie unter Berücksichtigung der Schalterstellung zum Zeitpunkt t
+        required: false
+        type: string
+        default: Ignore
+        enum: [Active, Ignore, Normal, NormalWithSwitchState]
+      - name: selector
+        in: query
+        description: >
+          Die Selektionsbereichsbegrenzung:
+           * `Above` - die Topologie auf der Primärseite des Transformators
+           * `All` - die gesamte Topologie
+           * `Behind` - die Topologie auf den Sekundärseiten des Transformators
+           * `Containing (default)` - die Topologie innerhalb des Element-Containers
+           * `ContainingAndAbove` - die Topologie innerhalb des Element-Containers und auf der Primärseite des Transformators
+           * `ContainingAndBehind` - die Topologie innerhalb des Element-Containers und auf den Sekundärseiten des Transformators
+        required: false
+        type: string
+        default: Containing
+        enum: [All, Above, ContainingAndAbove, Containing, ContainingAndBehind, Behind]
+      - name: fetch-type
+        in: query
+        description: >
+          Die Abrufmethode:
+           * `Eager` - alle Ressourcen aller untergeordneten Ebenen des angegebenen Element-Containers werden geladen. Beinhaltet der angegebene Element-Containers also selbst Element-Container, wird deren Inhalt mit berücksichtigt.
+           * `Lazy (default)` - alle Ressourcen der nächsten untergeordneten Ebene des angegebenen Element-Containers werden geladen. Beinhaltet der angegebene Element-Containers also selbst Element-Container, wird deren Inhalt nicht berücksichtigt.
+        required: false
+        type: string
+        default: Lazy
+        enum: [Eager, Lazy]
+      responses:
+        200:
+          description: Die Antwortnachricht.
+          schema:
+            $ref: '#/definitions/ResponseMessage'
+        400:
+          description: Die Schnittstelle wurde mit ungültigen Parametern aufgerufen.
+        410:
+          description: Die Topologie mit der angegebenen Kennung ist nicht mehr gültig.
+        500:
+          description: Es trat ein allgemeiner Fehler bei der Verarbeitung der Anfrage auf.
+definitions:
+### specific definitions ######################################################
+  PSRType:
+    description: der Ressourcentyp
+    type: object
+    properties:
+      name:
+        description: die Bezeichnung des Ressourcentyps
+        type: string
+        pattern: '^[a-z]+([-]{1}[a-z0-9]+)*$'
+    required:
+    - name
+    xml:
+      name: PSRType
+  PowerSystemResourceTypes:
+    description: Die Auflistung der Ressourcentypen.
+    type: array
+    items:
+      $ref: '#/definitions/PSRType'
+    xml:
+      wrapped: true
+  Payload:
+    description: Der Inhalt der CIM-Antwortnachricht.
+    type: object
+    properties:
+      PowerSystemResourceTypes:
+        $ref: '#/definitions/PowerSystemResourceTypes'
+    required:
+    - PowerSystemResourceTypes
+### common definitions ########################################################
+  Header_Reply:
+    description: Der Kopf der CIM-Nachricht.
+    type: object
+    properties:
+      Verb:
+        description: Hinweis, um welche Art von Nachricht es sich handelt.
+        type: string
+        default: reply
+      Noun:
+        description: Hinweis auf den Nachrichteninhalt.
+        type: string
+      Revision:
+        description: Version, die den Nachrichtenaustausch definiert. Dies ist nicht die CIM-Version.
+        type: integer
+        format: int32
+        minimum: 1
+        maximum: 1
+      Timestamp:
+        description: Zeitpunkt, an dem die Nachricht versendet wurde (in UTC gemäß ISO-8601-Format YYYY-MM-DDThh:mm:ss.sssZ).
+        type: string
+        format: date-time
+        pattern: '^([0-9]{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|30|31)T(([0-1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{3}Z)$'
+      Source:
+        description: Eindeutige Bezeichnung des Senders der Nachricht.
+        type: string
+      MessageID:
+        description: Eindeutige Kennung dieser Nachricht. Generiert vom Sender der Nachricht.
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      User:
+        $ref: '#/definitions/UserID'
+    required:
+    - Verb
+    - Noun
+    - Revision
+    - Timestamp
+    - Source
+    - MessageID
+    - User
+    xml:
+      name: Header
+  Reply_OK:
+    description: Die Antwort der CIM-Nachricht.
+    type: object
+    properties:
+      Result:
+        description: Antworttext
+        type: string
+        default: OK
+    required:
+    - Result
+    xml:
+      name: Reply
+  ResponseMessage:
+    description: Die CIM-Antwortnachricht.
+    type: object
+    properties:
+      Header:
+        $ref: '#/definitions/Header_Reply'
+      Reply:
+        $ref: '#/definitions/Reply_OK'
+      Payload:
+        $ref: '#/definitions/Payload'
+    required:
+    - Header
+    - Reply
+    - Payload
+  UserID:
+    properties:
+      id:
+        description: Eindeutige Kennung des angemeldeten Nutzers (Empfänger).
+        type: string
+        xml:
+          name: UserID
\ No newline at end of file
diff --git a/doc/src/main/doc/resources/api/domain.electricity.dynamic-topology.power-system-resources_GET_1_de.open-api.yaml b/doc/src/main/doc/resources/api/domain.electricity.dynamic-topology.power-system-resources_GET_1_de.open-api.yaml
new file mode 100644
index 0000000..c32df32
--- /dev/null
+++ b/doc/src/main/doc/resources/api/domain.electricity.dynamic-topology.power-system-resources_GET_1_de.open-api.yaml
@@ -0,0 +1,415 @@
+swagger: '2.0'
+info:
+  title: topologische Ressourcen
+  description: Diese Schnittstelle ist Teil der [oK](http://www.openkonsequenz.de) Domänen API.
+  version: Revision 1 (CIM 17v07)
+  contact:
+    name: BTC AG
+    url: http://www.btc-ag.com
+    email: openk@btc-ag.com
+  license:
+    name: Eclipse Public License 1.0
+    url: https://www.eclipse.org/legal/epl-v10.html
+host: api.openk.de
+schemes:
+- http
+basePath: /domain/electricity/dynamic-topology
+produces:
+- application/xml
+paths:
+  /power-system-resources:
+    get:
+      summary: Die Schnittstelle gibt die Ressourcen eines bestimmten Typs aus der Topologie zurück. Es können die Ressourceninstanzen eines bestimmten Typs aus der Topologie abgefragt werden. Dabei kann die Auswahl der Ressourcen durch Selektions- und Filterparameter eingeschränkt werden. Der Parameter 'power-system-resources' schränkt die Abfrage auf die Typen der zu suchenden Ressourcen ein. Diese können über die Schnittstelle <b>domain/electricity/dynamic-topology/power-system-resource-types</b> abgefragt werden. Die Selektion erfolgt über die Wahl eines Ausgangspunkts, der Angabe des Verknüpfungsstatus und einer Selektionsbereichsbegrenzung. Mithilfe des Parameters 'entry-point-id' können alle topologischen Elemente (z. B. Schalter, Transformatoren) oder Element-Container (z. B. Umspannwerke, Teilnetzgebiete) als Ausgangspunkt verwendet werden. Diese werden über die Angabe ihrer eindeutigen Kennungen gewählt. Der Parameter 'connection-state' gibt an, wie die Ressourcen, die Teil der Selektion sein sollen, mit dem Ausgangspunkt verknüpft sein sollen (z. B. unter Schalternormalstellung, unter aktueller Schalterstellung). Der Parameter 'selector' gibt an, welche Ressourcen vom Ausgangspunkt aus bei der Selektion mit berücksichtigt werden sollen (z. B. alle Ressourcen innerhalb des gewählten Umspannwerks). Die Grenzen sind in der Regel Netzbereiche mit anderen Nennspannungen. Die Abrufmethode über den Parameter 'fetch-type' definiert, welche Ebenen bei der Abfrage eines Element-Containers berücksichtigt werden. Die Selektion ist optional. Wird sie weggelassen, wird die gesamte Topologie berücksichtigt.
+      description: |
+                Mit Hilfe dieser Schnittstelle können die Ressourceninstanzen eines bestimmten Typs aus der Topologie abgefragt werden. Dabei kann die Auswahl der Ressourcen durch Selektions- und Filterparameter eingeschränkt werden.
+                \
+                Die Selektion erfolgt über die Wahl eines Ausgangspunkts, der Angabe des Verknüpfungsstatus und einer Selektionsbereichsbegrenzung:
+                - Als Ausgangspunkt können alle topologischen Elemente (z. B. Schalter, Transformatoren) oder Element-Container (z. B. Umspannwerke, Teilnetzgebiete) verwendet werden. Diese werden über die Angabe ihrer eindeutigen Kennungen gewählt.
+                - Der Verknüpfungsstatus gibt an, wie die Ressourcen, die Teil der Selektion sein sollen, mit dem Ausgangspunkt verknüpft sein sollen (z. B. unter Schalternormalstellung, unter aktueller Schalterstellung)
+                - Die Selektionsbereichsbegrenzung gibt an, welche Ressourcen vom Ausgangspunkt aus bei der Selektion mit berücksichtigt werden sollen (z. B. alle Ressourcen innerhalb des gewählten Umspannwerks). Die Grenzen sind in der Regel Netzbereiche mit anderen Nennspannungen. 
+                - Die Abrufmethode definiert, welche Ebenen bei der Abfrage eines Element-Containers berücksichtigt werden.
+                  
+                Die Selektion ist optional. Wird sie weggelassen, wird die gesamte Topologie berücksichtigt.
+                \
+                Zur Ressourcenfilterung müssen die gewünschten Ressourcentypen mit angegeben werden.
+      parameters:
+      - name: revision
+        in: query
+        description: Version, die den Nachrichtenaustausch definiert. Dies ist nicht die CIM-Version.
+        required: true
+        type: integer
+        format: int32
+        minimum: 1
+        maximum: 1
+      - name: timestamp
+        in: query
+        description: Zeitpunkt, an dem die Nachricht versendet wurde (in UTC gemäß ISO-8601-Format YYYY-MM-DDTHH:mm:ss.SSSZ).
+        required: false
+        type: string 
+        format: date-time
+        pattern: '^([0-9]{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|30|31)T(([0-1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{3}Z)$'
+      - name: source
+        in: query
+        description: Eindeutige Bezeichnung des Senders der Nachricht.
+        required: false
+        type: string
+      - name: user-id
+        in: query
+        description: Eindeutige Kennung des angemeldeten Nutzers (Sender).
+        required: false
+        type: string
+      - name: message-id
+        in: query
+        description: Eindeutige Kennung dieser Nachricht. Generiert vom Sender der Nachricht.
+        required: false
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      - name: topology-id
+        in: query
+        description: Eindeutige Kennung der Topologie, für die der aktuelle Aufruf erfolgt. Wird der Parameter nicht angegeben, bezieht sich die Abfrage auf die aktuelle Topologie.
+        required: false
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      - name: power-system-resource-types
+        in: query
+        description: Der Typ der zu suchenden Ressourcen. Diese können über die Schnittstelle <b>domain/electricity/dynamic-topology/power-system-resource-types</b> abgefragt werden.
+        required: true
+        type: string
+      - name: entry-point-id
+        in: query
+        description: Die eindeutige Kennung des Ausgangspunkts.
+        required: false
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      - name: connection-state
+        in: query
+        description: >
+          Der Verknüpfungsstatus:
+           * `Active` - elektrisch verknüpfte Topologie unter Berücksichtigung der aktuellen Schalterstellung
+           * `Ignore (default)` - verknüpfte Topologie unter Vernachlässigung der Schalterstellungen
+           * `Normal` - elektrisch verknüpfte Topologie unter Berücksichtigung der Schalternormalstellung
+           * `NormalWithSwitchState` - elektrisch verknüpfte Topologie unter Berücksichtigung der Schalterstellung zum Zeitpunkt t
+        required: false
+        type: string
+        default: Ignore
+        enum: [Active, Ignore, Normal, NormalWithSwitchState]
+      - name: selector
+        in: query
+        description: >
+          Die Selektionsbereichsbegrenzung:
+           * `Above` - die Topologie auf der Primärseite des Transformators
+           * `All` - die gesamte Topologie
+           * `Behind` - die Topologie auf den Sekundärseiten des Transformators
+           * `Containing (default)` - die Topologie innerhalb des Element-Containers
+           * `ContainingAndAbove` - die Topologie innerhalb des Element-Containers und auf der Primärseite des Transformators
+           * `ContainingAndBehind` - die Topologie innerhalb des Element-Containers und auf den Sekundärseiten des Transformators
+        required: false
+        type: string
+        default: Containing
+        enum: [All, Above, ContainingAndAbove, Containing, ContainingAndBehind, Behind]
+      - name: fetch-type
+        in: query
+        description: >
+          Die Abrufmethode:
+           * `Eager` - alle Ressourcen aller untergeordneten Ebenen des angegebenen Element-Containers werden geladen. Beinhaltet der angegebene Element-Containers also selbst Element-Container, wird deren Inhalt mit berücksichtigt.
+           * `Lazy (default)` - alle Ressourcen der nächsten untergeordneten Ebene des angegebenen Element-Containers werden geladen. Beinhaltet der angegebene Element-Containers also selbst Element-Container, wird deren Inhalt nicht berücksichtigt.
+        required: false
+        type: string
+        default: Lazy
+        enum: [Eager, Lazy]
+      responses:
+        200:
+          description: Die CIM-Antwortnachricht.
+          schema:
+            $ref: '#/definitions/ResponseMessage'
+        400:
+          description: Die Schnittstelle wurde mit ungültigen Parametern aufgerufen.
+        410:
+          description: Die Topologie mit der angegebenen Kennung ist nicht mehr gültig.
+        500:
+          description: Es trat ein allgemeiner Fehler bei der Verarbeitung der Anfrage auf.
+definitions:
+### specific definitions ######################################################
+  Payload:
+    description: Der Inhalt der CIM-Antwortnachricht.
+    type: object
+    properties:
+      PowerSystemResources:
+        $ref: '#/definitions/PowerSystemResources'
+    required:
+    - PowerSystemResources
+  PowerSystemResources:
+    description: Auflistung der Ressourcen
+    type: object
+    properties:
+      Substation:
+        description: optionale Auflistung der Stationen (falls abgefragt)
+        type: array
+        minItems: 0
+        items:
+          $ref: '#/definitions/Substation'
+  Substation:
+    description: Station
+    type: object
+    properties:
+      mRID:
+        description: Die eindeutige Kennung der Station.
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      name:
+        description: Der Name der Station.
+        type: string
+        minLength: 1
+        maxLength: 64
+      description:
+        description: Die Beschreibung der Station.
+        type: string
+        minLength: 1
+        maxLength: 2048
+      Names:
+        description: Referenzen auf alternative Namen.
+        type: array
+        minItems: 0
+        items:
+          $ref: '#/definitions/Name'
+        xml:
+          wrapped: true
+      PSRType:    
+        $ref: '#/definitions/Substation.PSRType'
+      Equipments:
+        description: Referenz auf das elektrische leitende Equipment, das zur Station gehört.
+        type: array
+        minItems: 1
+        items:
+          $ref: '#/definitions/ConductingEquipment_Reference'
+        xml:
+          wrapped: true
+      VoltageLevels:
+        description: Referenz auf die Spannungsebenen, die zur Station gehören.
+        type: array
+        minItems: 0
+        items:
+          $ref: '#/definitions/VoltageLevel_Reference'
+        xml:
+          wrapped: true
+      Bays:
+        description: Referenz auf die Felder, die zur Station gehören.
+        type: array
+        minItems: 0
+        items:
+          $ref: '#/definitions/Bay_Reference'
+        xml:
+          wrapped: true
+    required:
+    - mRID
+    - Equipments
+    xml:
+      name: Substation
+  Substation.PSRType:
+    description: die Typ-Beschreibung
+    properties:
+      PSRType:
+        $ref: '#/definitions/PSRType_Reference'
+    required:
+    - PSRType
+    xml:
+      name: PSRType
+### common definitions ########################################################
+  Bay_Reference:
+    description: Referenz auf das Feld
+    type: object
+    properties:
+      mRID:
+        description: eindeutige Kennung des Feldes
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+    required:
+    - mRID
+    xml:
+      name: Bay
+  ConductingEquipment_Reference:
+    description: Referenz auf elektrisch leitendes Equipment
+    type: object
+    properties:
+      mRID:
+        description: eindeutige Kennung des elektrisch leitenden Equipments
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+    required:
+    - mRID
+    xml:
+      name: ConductingEquipment
+  Header_Reply:
+    description: Der Kopf der CIM-Nachricht.
+    type: object
+    properties:
+      Verb:
+        description: Hinweis, um welche Art von Nachricht es sich handelt.
+        type: string
+        default: reply
+      Noun:
+        description: Hinweis auf den Nachrichteninhalt.
+        type: string
+      Revision:
+        description: Version, die den Nachrichtenaustausch definiert. Dies ist nicht die CIM-Version.
+        type: integer
+        format: int32
+        minimum: 1
+        maximum: 1
+      Timestamp:
+        description: Zeitpunkt, an dem die Nachricht versendet wurde (in UTC gemäß ISO-8601-Format YYYY-MM-DDThh:mm:ss.sssZ).
+        type: string
+        format: date-time
+        pattern: '^([0-9]{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|30|31)T(([0-1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{3}Z)$'
+      Source:
+        description: Eindeutige Bezeichnung des Senders der Nachricht.
+        type: string
+      MessageID:
+        description: Eindeutige Kennung dieser Nachricht. Generiert vom Sender der Nachricht.
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      User:
+        $ref: '#/definitions/UserID'
+    required:
+    - Verb
+    - Noun
+    - Revision
+    - Timestamp
+    - Source
+    - MessageID
+    - User
+    xml:
+      name: Header
+  Name:
+    description: alternativer Name
+    type: object
+    properties:
+      name:
+        description: ein alternativer Name (z. B. Kennung aus dem Quellsystem)
+        type: string
+        minLength: 1
+        maxLength: 256
+      NameType:
+        $ref: '#/definitions/Name.NameType'
+    required:
+    - name
+    - NameType
+    xml:
+      name: Name
+  Name.NameType:
+    properties:
+      NameType:
+        $ref: '#/definitions/NameType'
+    xml:
+      name: NameType
+  NameType:
+    description: Namenstyp
+    type: object
+    properties:
+      name:
+        description: Name des Namestyps
+        type: string
+        minLength: 1
+        maxLength: 256
+      description:
+        description: Beschreibung des Namestyps
+        type: string
+        minLength: 1
+        maxLength: 2048
+      NameTypeAuthority:
+        $ref: '#/definitions/NameType.NameTypeAuthority'
+    required:
+    - name
+    - NameTypeAuthority
+    xml:
+      name: NameType
+  NameType.NameTypeAuthority:
+    properties:
+      NameTypeAuthority:
+        $ref: '#/definitions/NameTypeAuthority'
+    xml:
+      name: NameTypeAuthority
+  NameTypeAuthority:
+    description: Vergabestelle des Namestyps
+    type: object
+    properties:
+      name:
+        description: Name der Vergabestelle des Namestyps
+        type: string
+        minLength: 1
+        maxLength: 256
+      description:
+        description: Beschreibung des Namestyps
+        type: string
+        minLength: 1
+        maxLength: 2048
+    required:
+    - name
+    xml:
+      name: NameTypeAuthority
+  PSRType_Reference:
+    description: Referenz auf die Typ-Beschreibung
+    type: object
+    properties:
+      mRID:
+        description: eindeutige Kennung der Typ-Beschreibung
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+    required:
+    - mRID
+    xml:
+      name: PSRType
+  Reply_OK:
+    description: Die Antwort der CIM-Nachricht.
+    type: object
+    properties:
+      Result:
+        description: Antworttext
+        type: string
+        default: OK
+    required:
+    - Result
+    xml:
+      name: Reply
+  ResponseMessage:
+    description: Die CIM-Antwortnachricht.
+    type: object
+    properties:
+      Header:
+        $ref: '#/definitions/Header_Reply'
+      Reply:
+        $ref: '#/definitions/Reply_OK'
+      Payload:
+        $ref: '#/definitions/Payload'
+    required:
+    - Header
+    - Reply
+    - Payload
+  UserID:
+    properties:
+      id:
+        description: Eindeutige Kennung des angemeldeten Nutzers (Empfänger).
+        type: string
+        xml:
+          name: UserID
+  VoltageLevel_Reference:
+    description: Referenz auf die Spannungsebene
+    type: object
+    properties:
+      mRID:
+        description: eindeutige Kennung der Spannungsebene
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+    required:
+    - mRID
+    xml:
+      name: VoltageLevel
\ No newline at end of file
diff --git a/doc/src/main/doc/resources/api/domain.electricity.dynamic-topology.topology_GET_2_de.open-api.yaml b/doc/src/main/doc/resources/api/domain.electricity.dynamic-topology.topology_GET_2_de.open-api.yaml
new file mode 100644
index 0000000..8291a48
--- /dev/null
+++ b/doc/src/main/doc/resources/api/domain.electricity.dynamic-topology.topology_GET_2_de.open-api.yaml
@@ -0,0 +1,203 @@
+swagger: '2.0'
+info:
+  title: Topologie
+  description: Diese Schnittstelle ist Teil der [oK](http://www.openkonsequenz.de) Domänen API.
+  version: Revision 2 (CIM 17v07)
+  contact:
+    name: BTC AG
+    url: http://www.btc-ag.com
+    email: openk@btc-ag.com
+  license:
+    name: Eclipse Public License 1.0
+    url: https://www.eclipse.org/legal/epl-v10.html
+host: api.openk.de
+schemes:
+- http
+basePath: /domain/electricity/dynamic-topology
+produces:
+- application/xml
+paths:
+  /topology:
+    get:
+      summary: Die Schnittstelle gibt (Teil-)Topologien zurück. Es kann die definierte Topologie abgefragt werden. Dabei kann der Ausschnitt der abgefragten Topologie durch Selektionsparameter eingeschränkt werden. Die Selektion erfolgt über die Wahl eines Ausgangspunkts, der Angabe des Verknüpfungsstatus und einer Selektionsbereichsbegrenzung. Mithilfe des Parameters 'entry-point-id' können alle topologischen Elemente (z. B. Schalter, Transformatoren) oder Element-Container (z. B. Umspannwerke, Teilnetzgebiete) als Ausgangspunkt verwendet werden. Diese werden über die Angabe ihrer eindeutige Kennungen gewählt. Der Parameter 'connection-state' gibt an, wie die Ressourcen, die Teil der Selektion sein sollen, mit dem Ausgangspunkt verknüpft sein sollen (z. B. unter Schalternormalstellung, unter aktueller Schalterstellung). Der Parameter 'selector' gibt an, welche Ressourcen vom Ausgangspunkt aus bei der Selektion mit berücksichtigt werden sollen (z. B. alle Ressourcen innerhalb des gewählten Umspannwerks). Die Grenzen sind in der Regel Netzbereiche mit anderen Nennspannungen. Die Abrufmethode über den Parameter 'fetch-type' definiert, welche Ebenen bei der Abfrage eines Element-Containers berücksichtigt werden. Die Selektion ist optional. Wird sie weggelassen, wird die gesamte Topologie berücksichtigt.
+      description: |
+                Mit Hilfe dieser Schnittstelle kann die definierte Topologie abgefragt werden. Dabei kann der Ausschnitt der abgefragten Topologie durch Selektionsparameter eingeschränkt werden.
+                \
+                Die Selektion erfolgt über die Wahl eines Ausgangspunkts, der Angabe des Verknüpfungsstatus und einer Selektionsbereichsbegrenzung:
+                - Als Ausgangspunkt können alle topologischen Elemente (z. B. Schalter, Transformatoren) oder Element-Container (z. B. Umspannwerke, Teilnetzgebiete) verwendet werden. Diese werden über die Angabe ihrer eindeutige Kennungen gewählt.
+                - Der Verknüpfungsstatus gibt an, wie die Ressourcen, die Teil der Selektion sein sollen, mit dem Ausgangspunkt verknüpft sein sollen (z. B. unter Schalternormalstellung, unter aktueller Schalterstellung)
+                - Die Selektionsbereichsbegrenzung gibt an, welche Ressourcen vom Ausgangspunkt aus bei der Selektion mit berücksichtigt werden sollen (z. B. alle Ressourcen innerhalb des gewählten Umspannwerks). Die Grenzen sind in der Regel Netzbereiche mit anderen Nennspannungen. 
+                - Die Abrufmethode definiert, welche Ebenen bei der Abfrage eines Element-Containers berücksichtigt werden. 
+                  
+                Die Selektion ist optional. Wird sie weggelassen, wird die gesamte Topologie berücksichtigt.
+      parameters:
+      - name: revision
+        in: query
+        description: Version, die den Nachrichtenaustausch definiert. Dies ist nicht die CIM-Version.
+        required: true
+        type: integer
+        format: int32
+        minimum: 2
+        maximum: 2
+      - name: timestamp
+        in: query
+        description: Zeitpunkt, an dem die Nachricht versendet wurde (in UTC gemäß ISO-8601-Format YYYY-MM-DDTHH:mm:ss.SSSZ).
+        required: false
+        type: string 
+        format: date-time
+        pattern: '^([0-9]{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|30|31)T(([0-1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{3}Z)$'
+      - name: source
+        in: query
+        description: Eindeutige Bezeichnung des Senders der Nachricht.
+        required: false
+        type: string
+      - name: user-id
+        in: query
+        description: Eindeutige Kennung des angemeldeten Nutzers (Sender).
+        required: false
+        type: string
+      - name: message-id
+        in: query
+        description: Eindeutige Kennung dieser Nachricht. Generiert vom Sender der Nachricht.
+        required: false
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      - name: topology-id
+        in: query
+        description: Eindeutige Kennung der Topologie, für die der aktuelle Aufruf erfolgt. Wird der Parameter nicht angegeben, bezieht sich die Abfrage auf die aktuelle Topologie.
+        required: false
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      - name: entry-point-id
+        in: query
+        description: Die eindeutige Kennung des Ausgangspunkts.
+        required: false
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      - name: connection-state
+        in: query
+        description: >
+          Der Verknüpfungsstatus:
+           * `Active` - elektrisch verknüpfte Topologie unter Berücksichtigung der aktuellen Schalterstellung
+           * `Ignore (default)` - verknüpfte Topologie unter Vernachlässigung der Schalterstellungen
+           * `Normal` - elektrisch verknüpfte Topologie unter Berücksichtigung der Schalternormalstellung
+           * `NormalWithSwitchState` - elektrisch verknüpfte Topologie unter Berücksichtigung der Schalterstellung zum Zeitpunkt t
+        required: false
+        type: string
+        default: Ignore
+        enum: [Active, Ignore, Normal, NormalWithSwitchState]
+      - name: selector
+        in: query
+        description: >
+          Die Selektionsbereichsbegrenzung:
+           * `Above` - die Topologie auf der Primärseite des Transformators
+           * `All` - die gesamte Topologie
+           * `Behind` - die Topologie auf den Sekundärseiten des Transformators
+           * `Containing (default)` - die Topologie innerhalb des Element-Containers
+           * `ContainingAndAbove` - die Topologie innerhalb des Element-Containers und auf der Primärseite des Transformators
+           * `ContainingAndBehind` - die Topologie innerhalb des Element-Containers und auf den Sekundärseiten des Transformators
+        required: false
+        type: string
+        default: Containing
+        enum: [All, Above, ContainingAndAbove, Containing, ContainingAndBehind, Behind]
+      - name: fetch-type
+        in: query
+        description: >
+          Die Abrufmethode:
+           * `Eager` - alle Ressourcen aller untergeordneten Ebenen des angegebenen Element-Containers werden geladen. Beinhaltet der angegebene Element-Containers also selbst Element-Container, wird deren Inhalt mit berücksichtigt.
+           * `Lazy (default)` - alle Ressourcen der nächsten untergeordneten Ebene des angegebenen Element-Containers werden geladen. Beinhaltet der angegebene Element-Containers also selbst Element-Container, wird deren Inhalt nicht berücksichtigt.
+        required: false
+        type: string
+        default: Lazy
+        enum: [Eager, Lazy]
+      responses:
+        200:
+          description: Die CIM-Antwortnachricht.
+          schema:
+            $ref: '#/definitions/ResponseMessage'
+        400:
+          description: Die Schnittstelle wurde mit ungültigen Parametern aufgerufen.
+        410:
+          description: Die Topologie mit der angegebenen Kennung ist nicht mehr gültig.
+        500:
+          description: Es trat ein allgemeiner Fehler bei der Verarbeitung der Anfrage auf.
+definitions:
+### common definitions ########################################################
+  Header_Reply:
+    description: Der Kopf der CIM-Nachricht.
+    type: object
+    properties:
+      Verb:
+        description: Hinweis, um welche Art von Nachricht es sich handelt.
+        type: string
+        default: reply
+      Noun:
+        description: Hinweis auf den Nachrichteninhalt.
+        type: string
+      Revision:
+        description: Version, die den Nachrichtenaustausch definiert. Dies ist nicht die CIM-Version.
+        type: integer
+        format: int32
+        minimum: 2
+        maximum: 2
+      Timestamp:
+        description: Zeitpunkt, an dem die Nachricht versendet wurde (in UTC gemäß ISO-8601-Format YYYY-MM-DDThh:mm:ss.sssZ).
+        type: string
+        format: date-time
+        pattern: '^([0-9]{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|30|31)T(([0-1][0-9])|(2[0-3]))(:[0-5][0-9]){2}\.[0-9]{3}Z)$'
+      Source:
+        description: Eindeutige Bezeichnung des Senders der Nachricht.
+        type: string
+      MessageID:
+        description: Eindeutige Kennung dieser Nachricht. Generiert vom Sender der Nachricht.
+        type: string
+        format: uuid
+        pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
+      User:
+        $ref: '#/definitions/UserID'
+    required:
+    - Verb
+    - Noun
+    - Revision
+    - Timestamp
+    - Source
+    - MessageID
+    - User
+    xml:
+      name: Header
+  Reply_OK:
+    description: Die Antwort der CIM-Nachricht.
+    type: object
+    properties:
+      Result:
+        description: Antworttext
+        type: string
+        default: OK
+    required:
+    - Result
+    xml:
+      name: Reply
+  ResponseMessage:
+    description: Die CIM-Antwortnachricht.
+    type: object
+    properties:
+      Header:
+        $ref: '#/definitions/Header_Reply'
+      Reply:
+        $ref: '#/definitions/Reply_OK'
+      # Payload:
+        # $ref: '#/definitions/Payload'
+    required:
+    - Header
+    - Reply
+    # - Payload
+  UserID:
+    properties:
+      id:
+        description: Eindeutige Kennung des angemeldeten Nutzers (Empfänger).
+        type: string
+        xml:
+          name: UserID
\ No newline at end of file
diff --git a/doc/src/main/doc/resources/process/01_Topologie_abfragen.bpmn b/doc/src/main/doc/resources/process/01_Topologie_abfragen.bpmn
new file mode 100644
index 0000000..3eb7da8
--- /dev/null
+++ b/doc/src/main/doc/resources/process/01_Topologie_abfragen.bpmn
@@ -0,0 +1,550 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_0deedg3" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.0.3">
+  <bpmn:collaboration id="Collaboration_0joqp0s">
+    <bpmn:participant id="Participant_0ru0snc" name="nutzendes System" processRef="Process_04uvgkj" />
+    <bpmn:participant id="Participant_1y1o92i" name="dynamic-topology" processRef="Process_0l881g4" />
+    <bpmn:messageFlow id="MessageFlow_0xybizg" name="" sourceRef="SendTask_0xvv6ys" targetRef="IntermediateCatchEvent_1qvwsps" />
+    <bpmn:messageFlow id="MessageFlow_06rblkd" name="" sourceRef="SendTask_1aqsod6" targetRef="StartEvent_0pdpn6v" />
+    <bpmn:messageFlow id="MessageFlow_1t1pkfy" sourceRef="SendTask_1ppgc3w" targetRef="IntermediateCatchEvent_01jgmxq" />
+    <bpmn:messageFlow id="MessageFlow_06fsrzq" name="" sourceRef="SendTask_1rq0tql" targetRef="IntermediateCatchEvent_1uo7ts7" />
+  </bpmn:collaboration>
+  <bpmn:process id="Process_04uvgkj" isExecutable="false">
+    <bpmn:sequenceFlow id="SequenceFlow_0qerq2c" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1qvwsps" />
+    <bpmn:sequenceFlow id="SequenceFlow_18gank5" sourceRef="IntermediateCatchEvent_1qvwsps" targetRef="ExclusiveGateway_1m42ue4" />
+    <bpmn:sequenceFlow id="SequenceFlow_0knug4f" sourceRef="StartEvent_0fp8w8o" targetRef="SendTask_1aqsod6" />
+    <bpmn:sequenceFlow id="SequenceFlow_05n3vpz" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1q59ol0" />
+    <bpmn:sequenceFlow id="SequenceFlow_11lghfk" sourceRef="SendTask_1aqsod6" targetRef="EventBasedGateway_0i1bam8" />
+    <bpmn:sequenceFlow id="SequenceFlow_1t1jnhl" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_01jgmxq" />
+    <bpmn:sequenceFlow id="SequenceFlow_0ob8om2" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1uo7ts7" />
+    <bpmn:sequenceFlow id="SequenceFlow_09zdna4" sourceRef="IntermediateCatchEvent_1q59ol0" targetRef="ExclusiveGateway_1m42ue4" />
+    <bpmn:sequenceFlow id="SequenceFlow_1jyvnwc" sourceRef="ExclusiveGateway_1m42ue4" targetRef="Task_03zzd93" />
+    <bpmn:sequenceFlow id="SequenceFlow_1fhomia" sourceRef="Task_03zzd93" targetRef="EndEvent_1yxgs4z" />
+    <bpmn:sequenceFlow id="SequenceFlow_1h003t8" sourceRef="IntermediateCatchEvent_01jgmxq" targetRef="EndEvent_0d9oh1l" />
+    <bpmn:sequenceFlow id="SequenceFlow_1989n8w" sourceRef="IntermediateCatchEvent_1uo7ts7" targetRef="ExclusiveGateway_1m42ue4" />
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1qvwsps">
+      <bpmn:incoming>SequenceFlow_0qerq2c</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_18gank5</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:startEvent id="StartEvent_0fp8w8o">
+      <bpmn:outgoing>SequenceFlow_0knug4f</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:eventBasedGateway id="EventBasedGateway_0i1bam8">
+      <bpmn:incoming>SequenceFlow_11lghfk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0qerq2c</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_05n3vpz</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1t1jnhl</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0ob8om2</bpmn:outgoing>
+    </bpmn:eventBasedGateway>
+    <bpmn:sendTask id="SendTask_1aqsod6" name="Topologie des gesamten Netzes abfragen">
+      <bpmn:incoming>SequenceFlow_0knug4f</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11lghfk</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1q59ol0" name="Timeout&#10;01-E1">
+      <bpmn:incoming>SequenceFlow_05n3vpz</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_09zdna4</bpmn:outgoing>
+      <bpmn:timerEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:task id="Task_03zzd93" name="Fehler auslösen">
+      <bpmn:incoming>SequenceFlow_1jyvnwc</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1fhomia</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:dataObjectReference id="DataObjectReference_09m8tpv" name="Topologie" dataObjectRef="DataObject_08tipr2" />
+    <bpmn:dataObject id="DataObject_08tipr2" />
+    <bpmn:endEvent id="EndEvent_0d9oh1l">
+      <bpmn:incoming>SequenceFlow_1h003t8</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_01jgmxq">
+      <bpmn:incoming>SequenceFlow_1t1jnhl</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1h003t8</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1uo7ts7">
+      <bpmn:incoming>SequenceFlow_0ob8om2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1989n8w</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1m42ue4">
+      <bpmn:incoming>SequenceFlow_18gank5</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_09zdna4</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1989n8w</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1jyvnwc</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_1yxgs4z" name="">
+      <bpmn:incoming>SequenceFlow_1fhomia</bpmn:incoming>
+      <bpmn:errorEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:association id="Association_152nrvv" sourceRef="SendTask_1aqsod6" targetRef="TextAnnotation_05j86bx" />
+    <bpmn:textAnnotation id="TextAnnotation_05j86bx">
+      <bpmn:text>domain.electricity.dynamic-topology.topology_GET_2_de.open-api.yaml
+</bpmn:text>
+    </bpmn:textAnnotation>
+  </bpmn:process>
+  <bpmn:process id="Process_0l881g4" isExecutable="false">
+    <bpmn:sequenceFlow id="SequenceFlow_0jh0ukt" sourceRef="SendTask_0xvv6ys" targetRef="EndEvent_1ds1wq2" />
+    <bpmn:sequenceFlow id="SequenceFlow_0s423p9" sourceRef="Task_1wn1rf0" targetRef="SendTask_0xvv6ys" />
+    <bpmn:sequenceFlow id="SequenceFlow_1bvdk9t" sourceRef="StartEvent_0pdpn6v" targetRef="Task_0x9cdxx" />
+    <bpmn:sequenceFlow id="SequenceFlow_13txgld" name="[01-T1.2 Abfrage unzulässig]" sourceRef="ExclusiveGateway_0hz34e9" targetRef="Task_1wn1rf0" />
+    <bpmn:sequenceFlow id="SequenceFlow_0yv4x43" sourceRef="Task_0x9cdxx" targetRef="ExclusiveGateway_0hz34e9" />
+    <bpmn:sendTask id="SendTask_0xvv6ys" name="Fehler versenden&#10;(01-E2)">
+      <bpmn:incoming>SequenceFlow_0s423p9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0jh0ukt</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:endEvent id="EndEvent_1ds1wq2">
+      <bpmn:incoming>SequenceFlow_0jh0ukt</bpmn:incoming>
+      <bpmn:errorEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:dataStoreReference id="DataStoreReference_1lft3mu" name="Log" />
+    <bpmn:task id="Task_1wn1rf0" name="Fehler protokollieren&#10;(Warnung)">
+      <bpmn:incoming>SequenceFlow_13txgld</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0s423p9</bpmn:outgoing>
+      <bpmn:dataOutputAssociation />
+      <bpmn:dataOutputAssociation id="DataOutputAssociation_16nt68n">
+        <bpmn:targetRef>DataStoreReference_1lft3mu</bpmn:targetRef>
+      </bpmn:dataOutputAssociation>
+    </bpmn:task>
+    <bpmn:task id="Task_0x9cdxx" name="Abfrage prüfen (01-T1)">
+      <bpmn:incoming>SequenceFlow_1bvdk9t</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0yv4x43</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:startEvent id="StartEvent_0pdpn6v">
+      <bpmn:outgoing>SequenceFlow_1bvdk9t</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:startEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0hz34e9">
+      <bpmn:incoming>SequenceFlow_0yv4x43</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_13txgld</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1l3iovs</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1l3iovs" name="[01-T1.1 Abfrage zulässig]" sourceRef="ExclusiveGateway_0hz34e9" targetRef="Task_06czalg" />
+    <bpmn:dataStoreReference id="DataStoreReference_1lmfcdf" name="Log" />
+    <bpmn:sendTask id="SendTask_1rq0tql" name="Fehler versenden&#10;(01-E3)">
+      <bpmn:incoming>SequenceFlow_04x4myr</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0r3t0qt</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:task id="Task_0dcs0n6" name="Fehler protokollieren&#10;(Fehler)">
+      <bpmn:incoming>SequenceFlow_01qqibk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_04x4myr</bpmn:outgoing>
+      <bpmn:dataOutputAssociation />
+      <bpmn:dataOutputAssociation id="DataOutputAssociation_0gsk5pr">
+        <bpmn:targetRef>DataStoreReference_1lmfcdf</bpmn:targetRef>
+      </bpmn:dataOutputAssociation>
+    </bpmn:task>
+    <bpmn:endEvent id="EndEvent_1ejqdvq">
+      <bpmn:incoming>SequenceFlow_1bm4k7w</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_0ijxku7">
+      <bpmn:incoming>SequenceFlow_0r3t0qt</bpmn:incoming>
+      <bpmn:errorEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_04x4myr" sourceRef="Task_0dcs0n6" targetRef="SendTask_1rq0tql" />
+    <bpmn:sequenceFlow id="SequenceFlow_0r3t0qt" sourceRef="SendTask_1rq0tql" targetRef="EndEvent_0ijxku7" />
+    <bpmn:sequenceFlow id="SequenceFlow_01qqibk" sourceRef="BoundaryEvent_0omkth5" targetRef="Task_0dcs0n6" />
+    <bpmn:sequenceFlow id="SequenceFlow_0n06oz6" sourceRef="Task_06czalg" targetRef="SendTask_1ppgc3w" />
+    <bpmn:sequenceFlow id="SequenceFlow_1bm4k7w" sourceRef="SendTask_1ppgc3w" targetRef="EndEvent_1ejqdvq" />
+    <bpmn:task id="Task_06czalg" name="Topologie ermitteln">
+      <bpmn:incoming>SequenceFlow_1l3iovs</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0n06oz6</bpmn:outgoing>
+      <bpmn:property id="Property_0qw2zgf" name="__targetRef_placeholder" />
+      <bpmn:dataInputAssociation id="DataInputAssociation_0h48n1c">
+        <bpmn:sourceRef>DataStoreReference_0p5l3xx</bpmn:sourceRef>
+        <bpmn:targetRef>Property_0qw2zgf</bpmn:targetRef>
+      </bpmn:dataInputAssociation>
+    </bpmn:task>
+    <bpmn:boundaryEvent id="BoundaryEvent_0omkth5" attachedToRef="Task_06czalg">
+      <bpmn:outgoing>SequenceFlow_01qqibk</bpmn:outgoing>
+      <bpmn:errorEventDefinition id="ErrorEventDefinition_11olaoy" />
+    </bpmn:boundaryEvent>
+    <bpmn:dataStoreReference id="DataStoreReference_0p5l3xx" name="Datenquelle" />
+    <bpmn:sendTask id="SendTask_1ppgc3w" name="Topologie versenden">
+      <bpmn:incoming>SequenceFlow_0n06oz6</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1bm4k7w</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:association id="Association_0jstqgh" sourceRef="SendTask_0xvv6ys" targetRef="TextAnnotation_0x17maz" />
+    <bpmn:textAnnotation id="TextAnnotation_0x17maz">
+      <bpmn:text>http-Status: 400</bpmn:text>
+    </bpmn:textAnnotation>
+    <bpmn:textAnnotation id="TextAnnotation_1nlozdn">
+      <bpmn:text>http-Status: 500</bpmn:text>
+    </bpmn:textAnnotation>
+    <bpmn:association id="Association_1wojxqf" sourceRef="SendTask_1rq0tql" targetRef="TextAnnotation_1nlozdn" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_0joqp0s">
+      <bpmndi:BPMNShape id="Participant_0ru0snc_di" bpmnElement="Participant_0ru0snc">
+        <dc:Bounds x="-948" y="-802" width="1762" height="417" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_1y1o92i_di" bpmnElement="Participant_1y1o92i">
+        <dc:Bounds x="-948" y="-317" width="1766" height="515" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1qvwsps_di" bpmnElement="IntermediateCatchEvent_1qvwsps" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="-401" y="-453" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-428" y="-440" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0fp8w8o_di" bpmnElement="StartEvent_0fp8w8o" bioc:stroke="#43A047" bioc:fill="#C8E6C9">
+        <dc:Bounds x="-871" y="-628" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-898" y="-592" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1q59ol0_di" bpmnElement="IntermediateCatchEvent_1q59ol0" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="-216" y="-628" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-218" y="-588" width="41" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EventBasedGateway_0i1bam8_di" bpmnElement="EventBasedGateway_0i1bam8">
+        <dc:Bounds x="-577" y="-635" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-597" y="-581" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_1aqsod6_di" bpmnElement="SendTask_1aqsod6" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-755" y="-650" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_03zzd93_di" bpmnElement="Task_03zzd93" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="394" y="-560" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1yxgs4z_di" bpmnElement="EndEvent_1yxgs4z" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+        <dc:Bounds x="533" y="-538" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="898" y="-498" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataObjectReference_09m8tpv_di" bpmnElement="DataObjectReference_09m8tpv">
+        <dc:Bounds x="710" y="-660" width="36" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="704" y="-604" width="48" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0d9oh1l_di" bpmnElement="EndEvent_0d9oh1l" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="710" y="-719" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1071" y="-679" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_01jgmxq_di" bpmnElement="IntermediateCatchEvent_01jgmxq" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="584" y="-719" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="945" y="-679" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1uo7ts7_di" bpmnElement="IntermediateCatchEvent_1uo7ts7" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="135" y="-538" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="496" y="-498" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1m42ue4_di" bpmnElement="ExclusiveGateway_1m42ue4" isMarkerVisible="true">
+        <dc:Bounds x="315" y="-545" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="683" y="-491" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_05j86bx_di" bpmnElement="TextAnnotation_05j86bx">
+        <dc:Bounds x="-889" y="-771" width="505" height="26" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hz34e9_di" bpmnElement="ExclusiveGateway_0hz34e9" isMarkerVisible="true">
+        <dc:Bounds x="-411" y="11" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-431" y="65" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0pdpn6v_di" bpmnElement="StartEvent_0pdpn6v" bioc:stroke="#43A047" bioc:fill="#C8E6C9">
+        <dc:Bounds x="-724" y="18" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-751" y="58" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_0x9cdxx_di" bpmnElement="Task_0x9cdxx" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-589" y="-4" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0ijxku7_di" bpmnElement="EndEvent_0ijxku7" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="286" y="-219" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="647" y="-179" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1ejqdvq_di" bpmnElement="EndEvent_1ejqdvq" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="710" y="18" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1071" y="58" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_1ppgc3w_di" bpmnElement="SendTask_1ppgc3w" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="552" y="-4" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_0dcs0n6_di" bpmnElement="Task_0dcs0n6" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-60" y="-241" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_1wn1rf0_di" bpmnElement="Task_1wn1rf0" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-436" y="-126" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataStoreReference_1lft3mu_di" bpmnElement="DataStoreReference_1lft3mu">
+        <dc:Bounds x="-297" y="-111" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-280" y="-57" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1ds1wq2_di" bpmnElement="EndEvent_1ds1wq2" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="-290" y="-219" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-318" y="-179" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_1rq0tql_di" bpmnElement="SendTask_1rq0tql" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="103" y="-241" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_0xvv6ys_di" bpmnElement="SendTask_0xvv6ys" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-436" y="-241" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataStoreReference_1lmfcdf_di" bpmnElement="DataStoreReference_1lmfcdf">
+        <dc:Bounds x="-35" y="-137" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-18" y="-83" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_1nlozdn_di" bpmnElement="TextAnnotation_1nlozdn">
+        <dc:Bounds x="211" y="-303" width="100" height="30" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_0x17maz_di" bpmnElement="TextAnnotation_0x17maz">
+        <dc:Bounds x="-322" y="-293" width="100" height="30" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0qerq2c_di" bpmnElement="SequenceFlow_0qerq2c">
+        <di:waypoint x="-552" y="-585" />
+        <di:waypoint x="-552" y="-435" />
+        <di:waypoint x="-401" y="-435" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-582" y="-516" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0xybizg_di" bpmnElement="MessageFlow_0xybizg">
+        <di:waypoint x="-385" y="-241" />
+        <di:waypoint x="-385" y="-329" />
+        <di:waypoint x="-385" y="-329" />
+        <di:waypoint x="-385" y="-418" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-477" y="-285" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18gank5_di" bpmnElement="SequenceFlow_18gank5">
+        <di:waypoint x="-365" y="-435" />
+        <di:waypoint x="340" y="-435" />
+        <di:waypoint x="340" y="-495" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="137.5" y="-456" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0knug4f_di" bpmnElement="SequenceFlow_0knug4f">
+        <di:waypoint x="-835" y="-610" />
+        <di:waypoint x="-755" y="-610" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-840" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_05n3vpz_di" bpmnElement="SequenceFlow_05n3vpz">
+        <di:waypoint x="-527" y="-610" />
+        <di:waypoint x="-216" y="-610" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-275.5" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_09zdna4_di" bpmnElement="SequenceFlow_09zdna4">
+        <di:waypoint x="-180" y="-610" />
+        <di:waypoint x="340" y="-610" />
+        <di:waypoint x="340" y="-545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="369" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11lghfk_di" bpmnElement="SequenceFlow_11lghfk">
+        <di:waypoint x="-655" y="-610" />
+        <di:waypoint x="-577" y="-610" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-661" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t1jnhl_di" bpmnElement="SequenceFlow_1t1jnhl">
+        <di:waypoint x="-552" y="-635" />
+        <di:waypoint x="-552" y="-701" />
+        <di:waypoint x="584" y="-701" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-582" y="-674" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ob8om2_di" bpmnElement="SequenceFlow_0ob8om2">
+        <di:waypoint x="-552" y="-585" />
+        <di:waypoint x="-552" y="-520" />
+        <di:waypoint x="135" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-582" y="-557.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Association_152nrvv_di" bpmnElement="Association_152nrvv">
+        <di:waypoint x="-674" y="-650" />
+        <di:waypoint x="-640" y="-745" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_06rblkd_di" bpmnElement="MessageFlow_06rblkd">
+        <di:waypoint x="-705" y="-570" />
+        <di:waypoint x="-706" y="18" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-710.5" y="-198" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jyvnwc_di" bpmnElement="SequenceFlow_1jyvnwc">
+        <di:waypoint x="365" y="-520" />
+        <di:waypoint x="394" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="723.5" y="-541" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fhomia_di" bpmnElement="SequenceFlow_1fhomia">
+        <di:waypoint x="494" y="-520" />
+        <di:waypoint x="533" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="901.5" y="-541" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h003t8_di" bpmnElement="SequenceFlow_1h003t8">
+        <di:waypoint x="620" y="-701" />
+        <di:waypoint x="710" y="-701" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1008" y="-722" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_1t1pkfy_di" bpmnElement="MessageFlow_1t1pkfy">
+        <di:waypoint x="602" y="-4" />
+        <di:waypoint x="603" y="-683" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="946.5" y="-363.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_06fsrzq_di" bpmnElement="MessageFlow_06fsrzq">
+        <di:waypoint x="153" y="-241" />
+        <di:waypoint x="153" y="-502" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="546" y="-282.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1989n8w_di" bpmnElement="SequenceFlow_1989n8w">
+        <di:waypoint x="171" y="-520" />
+        <di:waypoint x="315" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="586" y="-541" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yv4x43_di" bpmnElement="SequenceFlow_0yv4x43">
+        <di:waypoint x="-489" y="36" />
+        <di:waypoint x="-411" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-495" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_13txgld_di" bpmnElement="SequenceFlow_13txgld">
+        <di:waypoint x="-386" y="11" />
+        <di:waypoint x="-386" y="-46" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-377" y="-11" width="83" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bvdk9t_di" bpmnElement="SequenceFlow_1bvdk9t">
+        <di:waypoint x="-688" y="36" />
+        <di:waypoint x="-589" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-682.5" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0r3t0qt_di" bpmnElement="SequenceFlow_0r3t0qt">
+        <di:waypoint x="203" y="-201" />
+        <di:waypoint x="286" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="588.5" y="-222" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bm4k7w_di" bpmnElement="SequenceFlow_1bm4k7w">
+        <di:waypoint x="652" y="36" />
+        <di:waypoint x="710" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1024" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04x4myr_di" bpmnElement="SequenceFlow_04x4myr">
+        <di:waypoint x="40" y="-201" />
+        <di:waypoint x="103" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="415.5" y="-222" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="DataOutputAssociation_0gsk5pr_di" bpmnElement="DataOutputAssociation_0gsk5pr">
+        <di:waypoint x="-10" y="-161" />
+        <di:waypoint x="-9" y="-137" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="DataOutputAssociation_16nt68n_di" bpmnElement="DataOutputAssociation_16nt68n">
+        <di:waypoint x="-336" y="-83" />
+        <di:waypoint x="-297" y="-81" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s423p9_di" bpmnElement="SequenceFlow_0s423p9">
+        <di:waypoint x="-386" y="-126" />
+        <di:waypoint x="-386" y="-161" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-416" y="-148.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jh0ukt_di" bpmnElement="SequenceFlow_0jh0ukt">
+        <di:waypoint x="-336" y="-201" />
+        <di:waypoint x="-290" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-358" y="-222" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Association_1wojxqf_di" bpmnElement="Association_1wojxqf">
+        <di:waypoint x="197" y="-237" />
+        <di:waypoint x="242" y="-273" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Association_0jstqgh_di" bpmnElement="Association_0jstqgh">
+        <di:waypoint x="-338" y="-233" />
+        <di:waypoint x="-294" y="-263" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1l3iovs_di" bpmnElement="SequenceFlow_1l3iovs">
+        <di:waypoint x="-361" y="36" />
+        <di:waypoint x="-192" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-351" y="48" width="83" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_01qqibk_di" bpmnElement="SequenceFlow_01qqibk">
+        <di:waypoint x="-142" y="-22" />
+        <di:waypoint x="-142" y="-201" />
+        <di:waypoint x="-60" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="261" y="-108.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n06oz6_di" bpmnElement="SequenceFlow_0n06oz6">
+        <di:waypoint x="-92" y="36" />
+        <di:waypoint x="552" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="618" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_06czalg_di" bpmnElement="Task_06czalg" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-192" y="-4" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataStoreReference_0p5l3xx_di" bpmnElement="DataStoreReference_0p5l3xx">
+        <dc:Bounds x="-167" y="103" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-171" y="157" width="59" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="BoundaryEvent_0omkth5_di" bpmnElement="BoundaryEvent_0omkth5" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+        <dc:Bounds x="-160" y="-22" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="DataInputAssociation_0h48n1c_di" bpmnElement="DataInputAssociation_0h48n1c">
+        <di:waypoint x="-143" y="103" />
+        <di:waypoint x="-144" y="76" />
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/doc/src/main/doc/resources/process/02_topologische_Ressourcen_abfragen.bpmn b/doc/src/main/doc/resources/process/02_topologische_Ressourcen_abfragen.bpmn
new file mode 100644
index 0000000..9558536
--- /dev/null
+++ b/doc/src/main/doc/resources/process/02_topologische_Ressourcen_abfragen.bpmn
@@ -0,0 +1,549 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_0deedg3" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.0.3">
+  <bpmn:collaboration id="Collaboration_0joqp0s">
+    <bpmn:participant id="Participant_0ru0snc" name="nutzendes System" processRef="Process_04uvgkj" />
+    <bpmn:participant id="Participant_1y1o92i" name="dynamic-topology" processRef="Process_0l881g4" />
+    <bpmn:messageFlow id="MessageFlow_0xybizg" name="" sourceRef="SendTask_0xvv6ys" targetRef="IntermediateCatchEvent_1qvwsps" />
+    <bpmn:messageFlow id="MessageFlow_06rblkd" name="" sourceRef="SendTask_1aqsod6" targetRef="StartEvent_0pdpn6v" />
+    <bpmn:messageFlow id="MessageFlow_1t1pkfy" sourceRef="SendTask_1ppgc3w" targetRef="IntermediateCatchEvent_01jgmxq" />
+    <bpmn:messageFlow id="MessageFlow_06fsrzq" name="" sourceRef="SendTask_1rq0tql" targetRef="IntermediateCatchEvent_1uo7ts7" />
+  </bpmn:collaboration>
+  <bpmn:process id="Process_04uvgkj" isExecutable="false">
+    <bpmn:sequenceFlow id="SequenceFlow_0qerq2c" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1qvwsps" />
+    <bpmn:sequenceFlow id="SequenceFlow_18gank5" sourceRef="IntermediateCatchEvent_1qvwsps" targetRef="ExclusiveGateway_1m42ue4" />
+    <bpmn:sequenceFlow id="SequenceFlow_0knug4f" sourceRef="StartEvent_0fp8w8o" targetRef="SendTask_1aqsod6" />
+    <bpmn:sequenceFlow id="SequenceFlow_05n3vpz" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1q59ol0" />
+    <bpmn:sequenceFlow id="SequenceFlow_11lghfk" sourceRef="SendTask_1aqsod6" targetRef="EventBasedGateway_0i1bam8" />
+    <bpmn:sequenceFlow id="SequenceFlow_1t1jnhl" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_01jgmxq" />
+    <bpmn:sequenceFlow id="SequenceFlow_0ob8om2" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1uo7ts7" />
+    <bpmn:sequenceFlow id="SequenceFlow_09zdna4" sourceRef="IntermediateCatchEvent_1q59ol0" targetRef="ExclusiveGateway_1m42ue4" />
+    <bpmn:sequenceFlow id="SequenceFlow_1jyvnwc" sourceRef="ExclusiveGateway_1m42ue4" targetRef="Task_03zzd93" />
+    <bpmn:sequenceFlow id="SequenceFlow_1fhomia" sourceRef="Task_03zzd93" targetRef="EndEvent_1yxgs4z" />
+    <bpmn:sequenceFlow id="SequenceFlow_1h003t8" sourceRef="IntermediateCatchEvent_01jgmxq" targetRef="EndEvent_0d9oh1l" />
+    <bpmn:sequenceFlow id="SequenceFlow_1989n8w" sourceRef="IntermediateCatchEvent_1uo7ts7" targetRef="ExclusiveGateway_1m42ue4" />
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1qvwsps">
+      <bpmn:incoming>SequenceFlow_0qerq2c</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_18gank5</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:startEvent id="StartEvent_0fp8w8o">
+      <bpmn:outgoing>SequenceFlow_0knug4f</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:eventBasedGateway id="EventBasedGateway_0i1bam8">
+      <bpmn:incoming>SequenceFlow_11lghfk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0qerq2c</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_05n3vpz</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1t1jnhl</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0ob8om2</bpmn:outgoing>
+    </bpmn:eventBasedGateway>
+    <bpmn:sendTask id="SendTask_1aqsod6" name="Topologische Ressourcen abfragen">
+      <bpmn:incoming>SequenceFlow_0knug4f</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11lghfk</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1q59ol0" name="Timeout&#10;02-E1">
+      <bpmn:incoming>SequenceFlow_05n3vpz</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_09zdna4</bpmn:outgoing>
+      <bpmn:timerEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:task id="Task_03zzd93" name="Fehler auslösen">
+      <bpmn:incoming>SequenceFlow_1jyvnwc</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1fhomia</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:dataObjectReference id="DataObjectReference_09m8tpv" name="Topologische Ressourcen" dataObjectRef="DataObject_08tipr2" />
+    <bpmn:dataObject id="DataObject_08tipr2" />
+    <bpmn:endEvent id="EndEvent_0d9oh1l">
+      <bpmn:incoming>SequenceFlow_1h003t8</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_01jgmxq">
+      <bpmn:incoming>SequenceFlow_1t1jnhl</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1h003t8</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1uo7ts7">
+      <bpmn:incoming>SequenceFlow_0ob8om2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1989n8w</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1m42ue4">
+      <bpmn:incoming>SequenceFlow_18gank5</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_09zdna4</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1989n8w</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1jyvnwc</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_1yxgs4z" name="">
+      <bpmn:incoming>SequenceFlow_1fhomia</bpmn:incoming>
+      <bpmn:errorEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:association id="Association_152nrvv" sourceRef="SendTask_1aqsod6" targetRef="TextAnnotation_05j86bx" />
+    <bpmn:textAnnotation id="TextAnnotation_05j86bx">
+      <bpmn:text>domain.electricity.dynamic-topology.power-system-resources_GET_1_de.open-api.yaml</bpmn:text>
+    </bpmn:textAnnotation>
+  </bpmn:process>
+  <bpmn:process id="Process_0l881g4" isExecutable="false">
+    <bpmn:sequenceFlow id="SequenceFlow_0jh0ukt" sourceRef="SendTask_0xvv6ys" targetRef="EndEvent_1ds1wq2" />
+    <bpmn:sequenceFlow id="SequenceFlow_0s423p9" sourceRef="Task_1wn1rf0" targetRef="SendTask_0xvv6ys" />
+    <bpmn:sequenceFlow id="SequenceFlow_1bvdk9t" sourceRef="StartEvent_0pdpn6v" targetRef="Task_0x9cdxx" />
+    <bpmn:sequenceFlow id="SequenceFlow_13txgld" name="[02-T1.2 Abfrage unzulässig]" sourceRef="ExclusiveGateway_0hz34e9" targetRef="Task_1wn1rf0" />
+    <bpmn:sequenceFlow id="SequenceFlow_0yv4x43" sourceRef="Task_0x9cdxx" targetRef="ExclusiveGateway_0hz34e9" />
+    <bpmn:sendTask id="SendTask_0xvv6ys" name="Fehler versenden&#10;(02-E2)">
+      <bpmn:incoming>SequenceFlow_0s423p9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0jh0ukt</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:endEvent id="EndEvent_1ds1wq2">
+      <bpmn:incoming>SequenceFlow_0jh0ukt</bpmn:incoming>
+      <bpmn:errorEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:dataStoreReference id="DataStoreReference_1lft3mu" name="Log" />
+    <bpmn:task id="Task_1wn1rf0" name="Fehler protokollieren&#10;(Warnung)">
+      <bpmn:incoming>SequenceFlow_13txgld</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0s423p9</bpmn:outgoing>
+      <bpmn:dataOutputAssociation />
+      <bpmn:dataOutputAssociation id="DataOutputAssociation_16nt68n">
+        <bpmn:targetRef>DataStoreReference_1lft3mu</bpmn:targetRef>
+      </bpmn:dataOutputAssociation>
+    </bpmn:task>
+    <bpmn:task id="Task_0x9cdxx" name="Abfrage prüfen (02-T1)">
+      <bpmn:incoming>SequenceFlow_1bvdk9t</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0yv4x43</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:startEvent id="StartEvent_0pdpn6v">
+      <bpmn:outgoing>SequenceFlow_1bvdk9t</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:startEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0hz34e9">
+      <bpmn:incoming>SequenceFlow_0yv4x43</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_13txgld</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1l3iovs</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1l3iovs" name="[02-T1.1 Abfrage zulässig]" sourceRef="ExclusiveGateway_0hz34e9" targetRef="Task_06czalg" />
+    <bpmn:dataStoreReference id="DataStoreReference_1lmfcdf" name="Log" />
+    <bpmn:sendTask id="SendTask_1rq0tql" name="Fehler versenden&#10;(02-E3)">
+      <bpmn:incoming>SequenceFlow_04x4myr</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0r3t0qt</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:task id="Task_0dcs0n6" name="Fehler protokollieren&#10;(Fehler)">
+      <bpmn:incoming>SequenceFlow_01qqibk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_04x4myr</bpmn:outgoing>
+      <bpmn:dataOutputAssociation />
+      <bpmn:dataOutputAssociation id="DataOutputAssociation_0gsk5pr">
+        <bpmn:targetRef>DataStoreReference_1lmfcdf</bpmn:targetRef>
+      </bpmn:dataOutputAssociation>
+    </bpmn:task>
+    <bpmn:endEvent id="EndEvent_1ejqdvq">
+      <bpmn:incoming>SequenceFlow_1bm4k7w</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_0ijxku7">
+      <bpmn:incoming>SequenceFlow_0r3t0qt</bpmn:incoming>
+      <bpmn:errorEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_04x4myr" sourceRef="Task_0dcs0n6" targetRef="SendTask_1rq0tql" />
+    <bpmn:sequenceFlow id="SequenceFlow_0r3t0qt" sourceRef="SendTask_1rq0tql" targetRef="EndEvent_0ijxku7" />
+    <bpmn:sequenceFlow id="SequenceFlow_01qqibk" sourceRef="BoundaryEvent_0omkth5" targetRef="Task_0dcs0n6" />
+    <bpmn:sequenceFlow id="SequenceFlow_0n06oz6" sourceRef="Task_06czalg" targetRef="SendTask_1ppgc3w" />
+    <bpmn:sequenceFlow id="SequenceFlow_1bm4k7w" sourceRef="SendTask_1ppgc3w" targetRef="EndEvent_1ejqdvq" />
+    <bpmn:task id="Task_06czalg" name="Topologische Ressourcen ermitteln">
+      <bpmn:incoming>SequenceFlow_1l3iovs</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0n06oz6</bpmn:outgoing>
+      <bpmn:property id="Property_0qw2zgf" name="__targetRef_placeholder" />
+      <bpmn:dataInputAssociation id="DataInputAssociation_0h48n1c">
+        <bpmn:sourceRef>DataStoreReference_0p5l3xx</bpmn:sourceRef>
+        <bpmn:targetRef>Property_0qw2zgf</bpmn:targetRef>
+      </bpmn:dataInputAssociation>
+    </bpmn:task>
+    <bpmn:boundaryEvent id="BoundaryEvent_0omkth5" attachedToRef="Task_06czalg">
+      <bpmn:outgoing>SequenceFlow_01qqibk</bpmn:outgoing>
+      <bpmn:errorEventDefinition id="ErrorEventDefinition_11olaoy" />
+    </bpmn:boundaryEvent>
+    <bpmn:dataStoreReference id="DataStoreReference_0p5l3xx" name="Datenquelle" />
+    <bpmn:sendTask id="SendTask_1ppgc3w" name="Topologische Ressourcen versenden">
+      <bpmn:incoming>SequenceFlow_0n06oz6</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1bm4k7w</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:association id="Association_0jstqgh" sourceRef="SendTask_0xvv6ys" targetRef="TextAnnotation_0x17maz" />
+    <bpmn:textAnnotation id="TextAnnotation_0x17maz">
+      <bpmn:text>http-Status: 400</bpmn:text>
+    </bpmn:textAnnotation>
+    <bpmn:textAnnotation id="TextAnnotation_1nlozdn">
+      <bpmn:text>http-Status: 500</bpmn:text>
+    </bpmn:textAnnotation>
+    <bpmn:association id="Association_1wojxqf" sourceRef="SendTask_1rq0tql" targetRef="TextAnnotation_1nlozdn" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_0joqp0s">
+      <bpmndi:BPMNShape id="Participant_0ru0snc_di" bpmnElement="Participant_0ru0snc">
+        <dc:Bounds x="-948" y="-802" width="1762" height="417" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_1y1o92i_di" bpmnElement="Participant_1y1o92i">
+        <dc:Bounds x="-948" y="-317" width="1766" height="515" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1qvwsps_di" bpmnElement="IntermediateCatchEvent_1qvwsps" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="-401" y="-453" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-428" y="-440" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0fp8w8o_di" bpmnElement="StartEvent_0fp8w8o" bioc:stroke="#43A047" bioc:fill="#C8E6C9">
+        <dc:Bounds x="-871" y="-628" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-898" y="-592" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1q59ol0_di" bpmnElement="IntermediateCatchEvent_1q59ol0" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="-216" y="-628" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-218" y="-588" width="41" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EventBasedGateway_0i1bam8_di" bpmnElement="EventBasedGateway_0i1bam8">
+        <dc:Bounds x="-577" y="-635" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-597" y="-581" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_1aqsod6_di" bpmnElement="SendTask_1aqsod6" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-755" y="-650" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_03zzd93_di" bpmnElement="Task_03zzd93" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="394" y="-560" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1yxgs4z_di" bpmnElement="EndEvent_1yxgs4z" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+        <dc:Bounds x="533" y="-538" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="898" y="-498" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataObjectReference_09m8tpv_di" bpmnElement="DataObjectReference_09m8tpv">
+        <dc:Bounds x="710" y="-660" width="36" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="696" y="-604" width="65" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0d9oh1l_di" bpmnElement="EndEvent_0d9oh1l" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="710" y="-719" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1071" y="-679" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_01jgmxq_di" bpmnElement="IntermediateCatchEvent_01jgmxq" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="584" y="-719" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="945" y="-679" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1uo7ts7_di" bpmnElement="IntermediateCatchEvent_1uo7ts7" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="135" y="-538" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="496" y="-498" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1m42ue4_di" bpmnElement="ExclusiveGateway_1m42ue4" isMarkerVisible="true">
+        <dc:Bounds x="315" y="-545" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="683" y="-491" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_05j86bx_di" bpmnElement="TextAnnotation_05j86bx">
+        <dc:Bounds x="-889" y="-771" width="505" height="26" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hz34e9_di" bpmnElement="ExclusiveGateway_0hz34e9" isMarkerVisible="true">
+        <dc:Bounds x="-411" y="11" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-431" y="65" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0pdpn6v_di" bpmnElement="StartEvent_0pdpn6v" bioc:stroke="#43A047" bioc:fill="#C8E6C9">
+        <dc:Bounds x="-724" y="18" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-751" y="58" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_0x9cdxx_di" bpmnElement="Task_0x9cdxx" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-589" y="-4" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0ijxku7_di" bpmnElement="EndEvent_0ijxku7" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="286" y="-219" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="647" y="-179" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1ejqdvq_di" bpmnElement="EndEvent_1ejqdvq" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="710" y="18" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1071" y="58" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_1ppgc3w_di" bpmnElement="SendTask_1ppgc3w" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="552" y="-4" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_0dcs0n6_di" bpmnElement="Task_0dcs0n6" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-60" y="-241" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_1wn1rf0_di" bpmnElement="Task_1wn1rf0" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-436" y="-126" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataStoreReference_1lft3mu_di" bpmnElement="DataStoreReference_1lft3mu">
+        <dc:Bounds x="-297" y="-111" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-280" y="-57" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1ds1wq2_di" bpmnElement="EndEvent_1ds1wq2" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="-290" y="-219" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-318" y="-179" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_1rq0tql_di" bpmnElement="SendTask_1rq0tql" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="103" y="-241" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_0xvv6ys_di" bpmnElement="SendTask_0xvv6ys" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-436" y="-241" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataStoreReference_1lmfcdf_di" bpmnElement="DataStoreReference_1lmfcdf">
+        <dc:Bounds x="-35" y="-137" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-18" y="-83" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_1nlozdn_di" bpmnElement="TextAnnotation_1nlozdn">
+        <dc:Bounds x="211" y="-303" width="100" height="30" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_0x17maz_di" bpmnElement="TextAnnotation_0x17maz">
+        <dc:Bounds x="-322" y="-293" width="100" height="30" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0qerq2c_di" bpmnElement="SequenceFlow_0qerq2c">
+        <di:waypoint x="-552" y="-585" />
+        <di:waypoint x="-552" y="-435" />
+        <di:waypoint x="-401" y="-435" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-582" y="-516" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0xybizg_di" bpmnElement="MessageFlow_0xybizg">
+        <di:waypoint x="-385" y="-241" />
+        <di:waypoint x="-385" y="-329" />
+        <di:waypoint x="-385" y="-329" />
+        <di:waypoint x="-385" y="-418" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-477" y="-285" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18gank5_di" bpmnElement="SequenceFlow_18gank5">
+        <di:waypoint x="-365" y="-435" />
+        <di:waypoint x="340" y="-435" />
+        <di:waypoint x="340" y="-495" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="137.5" y="-456" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0knug4f_di" bpmnElement="SequenceFlow_0knug4f">
+        <di:waypoint x="-835" y="-610" />
+        <di:waypoint x="-755" y="-610" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-840" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_05n3vpz_di" bpmnElement="SequenceFlow_05n3vpz">
+        <di:waypoint x="-527" y="-610" />
+        <di:waypoint x="-216" y="-610" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-275.5" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_09zdna4_di" bpmnElement="SequenceFlow_09zdna4">
+        <di:waypoint x="-180" y="-610" />
+        <di:waypoint x="340" y="-610" />
+        <di:waypoint x="340" y="-545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="369" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11lghfk_di" bpmnElement="SequenceFlow_11lghfk">
+        <di:waypoint x="-655" y="-610" />
+        <di:waypoint x="-577" y="-610" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-661" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t1jnhl_di" bpmnElement="SequenceFlow_1t1jnhl">
+        <di:waypoint x="-552" y="-635" />
+        <di:waypoint x="-552" y="-701" />
+        <di:waypoint x="584" y="-701" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-582" y="-674" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ob8om2_di" bpmnElement="SequenceFlow_0ob8om2">
+        <di:waypoint x="-552" y="-585" />
+        <di:waypoint x="-552" y="-520" />
+        <di:waypoint x="135" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-582" y="-557.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Association_152nrvv_di" bpmnElement="Association_152nrvv">
+        <di:waypoint x="-674" y="-650" />
+        <di:waypoint x="-640" y="-745" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_06rblkd_di" bpmnElement="MessageFlow_06rblkd">
+        <di:waypoint x="-705" y="-570" />
+        <di:waypoint x="-706" y="18" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-710.5" y="-198" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jyvnwc_di" bpmnElement="SequenceFlow_1jyvnwc">
+        <di:waypoint x="365" y="-520" />
+        <di:waypoint x="394" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="723.5" y="-541" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fhomia_di" bpmnElement="SequenceFlow_1fhomia">
+        <di:waypoint x="494" y="-520" />
+        <di:waypoint x="533" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="901.5" y="-541" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h003t8_di" bpmnElement="SequenceFlow_1h003t8">
+        <di:waypoint x="620" y="-701" />
+        <di:waypoint x="710" y="-701" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1008" y="-722" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_1t1pkfy_di" bpmnElement="MessageFlow_1t1pkfy">
+        <di:waypoint x="602" y="-4" />
+        <di:waypoint x="603" y="-683" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="946.5" y="-363.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_06fsrzq_di" bpmnElement="MessageFlow_06fsrzq">
+        <di:waypoint x="153" y="-241" />
+        <di:waypoint x="153" y="-502" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="546" y="-282.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1989n8w_di" bpmnElement="SequenceFlow_1989n8w">
+        <di:waypoint x="171" y="-520" />
+        <di:waypoint x="315" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="586" y="-541" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yv4x43_di" bpmnElement="SequenceFlow_0yv4x43">
+        <di:waypoint x="-489" y="36" />
+        <di:waypoint x="-411" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-495" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_13txgld_di" bpmnElement="SequenceFlow_13txgld">
+        <di:waypoint x="-386" y="11" />
+        <di:waypoint x="-386" y="-46" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-377" y="-11" width="83" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bvdk9t_di" bpmnElement="SequenceFlow_1bvdk9t">
+        <di:waypoint x="-688" y="36" />
+        <di:waypoint x="-589" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-682.5" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0r3t0qt_di" bpmnElement="SequenceFlow_0r3t0qt">
+        <di:waypoint x="203" y="-201" />
+        <di:waypoint x="286" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="588.5" y="-222" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bm4k7w_di" bpmnElement="SequenceFlow_1bm4k7w">
+        <di:waypoint x="652" y="36" />
+        <di:waypoint x="710" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1024" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04x4myr_di" bpmnElement="SequenceFlow_04x4myr">
+        <di:waypoint x="40" y="-201" />
+        <di:waypoint x="103" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="415.5" y="-222" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="DataOutputAssociation_0gsk5pr_di" bpmnElement="DataOutputAssociation_0gsk5pr">
+        <di:waypoint x="-10" y="-161" />
+        <di:waypoint x="-9" y="-137" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="DataOutputAssociation_16nt68n_di" bpmnElement="DataOutputAssociation_16nt68n">
+        <di:waypoint x="-336" y="-83" />
+        <di:waypoint x="-297" y="-81" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s423p9_di" bpmnElement="SequenceFlow_0s423p9">
+        <di:waypoint x="-386" y="-126" />
+        <di:waypoint x="-386" y="-161" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-416" y="-148.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jh0ukt_di" bpmnElement="SequenceFlow_0jh0ukt">
+        <di:waypoint x="-336" y="-201" />
+        <di:waypoint x="-290" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-358" y="-222" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Association_1wojxqf_di" bpmnElement="Association_1wojxqf">
+        <di:waypoint x="197" y="-237" />
+        <di:waypoint x="242" y="-273" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Association_0jstqgh_di" bpmnElement="Association_0jstqgh">
+        <di:waypoint x="-338" y="-233" />
+        <di:waypoint x="-294" y="-263" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1l3iovs_di" bpmnElement="SequenceFlow_1l3iovs">
+        <di:waypoint x="-361" y="36" />
+        <di:waypoint x="-192" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-351" y="48" width="83" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_01qqibk_di" bpmnElement="SequenceFlow_01qqibk">
+        <di:waypoint x="-142" y="-22" />
+        <di:waypoint x="-142" y="-201" />
+        <di:waypoint x="-60" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="261" y="-108.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n06oz6_di" bpmnElement="SequenceFlow_0n06oz6">
+        <di:waypoint x="-92" y="36" />
+        <di:waypoint x="552" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="618" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_06czalg_di" bpmnElement="Task_06czalg" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-192" y="-4" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataStoreReference_0p5l3xx_di" bpmnElement="DataStoreReference_0p5l3xx">
+        <dc:Bounds x="-167" y="103" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-171" y="157" width="59" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="BoundaryEvent_0omkth5_di" bpmnElement="BoundaryEvent_0omkth5" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+        <dc:Bounds x="-160" y="-22" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="DataInputAssociation_0h48n1c_di" bpmnElement="DataInputAssociation_0h48n1c">
+        <di:waypoint x="-143" y="103" />
+        <di:waypoint x="-144" y="76" />
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/doc/src/main/doc/resources/process/03_topologische Ressourcentypen_abfragen.bpmn b/doc/src/main/doc/resources/process/03_topologische Ressourcentypen_abfragen.bpmn
new file mode 100644
index 0000000..0afc5ef
--- /dev/null
+++ b/doc/src/main/doc/resources/process/03_topologische Ressourcentypen_abfragen.bpmn
@@ -0,0 +1,549 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_0deedg3" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.0.3">
+  <bpmn:collaboration id="Collaboration_0joqp0s">
+    <bpmn:participant id="Participant_0ru0snc" name="nutzendes System" processRef="Process_04uvgkj" />
+    <bpmn:participant id="Participant_1y1o92i" name="dynamic-topology" processRef="Process_0l881g4" />
+    <bpmn:messageFlow id="MessageFlow_0xybizg" name="" sourceRef="SendTask_0xvv6ys" targetRef="IntermediateCatchEvent_1qvwsps" />
+    <bpmn:messageFlow id="MessageFlow_06rblkd" name="" sourceRef="SendTask_1aqsod6" targetRef="StartEvent_0pdpn6v" />
+    <bpmn:messageFlow id="MessageFlow_1t1pkfy" sourceRef="SendTask_1ppgc3w" targetRef="IntermediateCatchEvent_01jgmxq" />
+    <bpmn:messageFlow id="MessageFlow_06fsrzq" name="" sourceRef="SendTask_1rq0tql" targetRef="IntermediateCatchEvent_1uo7ts7" />
+  </bpmn:collaboration>
+  <bpmn:process id="Process_04uvgkj" isExecutable="false">
+    <bpmn:sequenceFlow id="SequenceFlow_0qerq2c" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1qvwsps" />
+    <bpmn:sequenceFlow id="SequenceFlow_18gank5" sourceRef="IntermediateCatchEvent_1qvwsps" targetRef="ExclusiveGateway_1m42ue4" />
+    <bpmn:sequenceFlow id="SequenceFlow_0knug4f" sourceRef="StartEvent_0fp8w8o" targetRef="SendTask_1aqsod6" />
+    <bpmn:sequenceFlow id="SequenceFlow_05n3vpz" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1q59ol0" />
+    <bpmn:sequenceFlow id="SequenceFlow_11lghfk" sourceRef="SendTask_1aqsod6" targetRef="EventBasedGateway_0i1bam8" />
+    <bpmn:sequenceFlow id="SequenceFlow_1t1jnhl" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_01jgmxq" />
+    <bpmn:sequenceFlow id="SequenceFlow_0ob8om2" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1uo7ts7" />
+    <bpmn:sequenceFlow id="SequenceFlow_09zdna4" sourceRef="IntermediateCatchEvent_1q59ol0" targetRef="ExclusiveGateway_1m42ue4" />
+    <bpmn:sequenceFlow id="SequenceFlow_1jyvnwc" sourceRef="ExclusiveGateway_1m42ue4" targetRef="Task_03zzd93" />
+    <bpmn:sequenceFlow id="SequenceFlow_1fhomia" sourceRef="Task_03zzd93" targetRef="EndEvent_1yxgs4z" />
+    <bpmn:sequenceFlow id="SequenceFlow_1h003t8" sourceRef="IntermediateCatchEvent_01jgmxq" targetRef="EndEvent_0d9oh1l" />
+    <bpmn:sequenceFlow id="SequenceFlow_1989n8w" sourceRef="IntermediateCatchEvent_1uo7ts7" targetRef="ExclusiveGateway_1m42ue4" />
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1qvwsps">
+      <bpmn:incoming>SequenceFlow_0qerq2c</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_18gank5</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:startEvent id="StartEvent_0fp8w8o">
+      <bpmn:outgoing>SequenceFlow_0knug4f</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:eventBasedGateway id="EventBasedGateway_0i1bam8">
+      <bpmn:incoming>SequenceFlow_11lghfk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0qerq2c</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_05n3vpz</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1t1jnhl</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0ob8om2</bpmn:outgoing>
+    </bpmn:eventBasedGateway>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1q59ol0" name="Timeout&#10;03-E1">
+      <bpmn:incoming>SequenceFlow_05n3vpz</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_09zdna4</bpmn:outgoing>
+      <bpmn:timerEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:task id="Task_03zzd93" name="Fehler auslösen">
+      <bpmn:incoming>SequenceFlow_1jyvnwc</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1fhomia</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:dataObjectReference id="DataObjectReference_09m8tpv" name="Topologische Ressourcentypen" dataObjectRef="DataObject_08tipr2" />
+    <bpmn:dataObject id="DataObject_08tipr2" />
+    <bpmn:endEvent id="EndEvent_0d9oh1l">
+      <bpmn:incoming>SequenceFlow_1h003t8</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_01jgmxq">
+      <bpmn:incoming>SequenceFlow_1t1jnhl</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1h003t8</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1uo7ts7">
+      <bpmn:incoming>SequenceFlow_0ob8om2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1989n8w</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1m42ue4">
+      <bpmn:incoming>SequenceFlow_18gank5</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_09zdna4</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1989n8w</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1jyvnwc</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_1yxgs4z" name="">
+      <bpmn:incoming>SequenceFlow_1fhomia</bpmn:incoming>
+      <bpmn:errorEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:sendTask id="SendTask_1aqsod6" name="Topologische Ressourcentypen abfragen">
+      <bpmn:incoming>SequenceFlow_0knug4f</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11lghfk</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:association id="Association_152nrvv" sourceRef="SendTask_1aqsod6" targetRef="TextAnnotation_05j86bx" />
+    <bpmn:textAnnotation id="TextAnnotation_05j86bx">
+      <bpmn:text>domain.electricity.dynamic-topology.power-system-resource-types_GET_1_de.open-api.yaml</bpmn:text>
+    </bpmn:textAnnotation>
+  </bpmn:process>
+  <bpmn:process id="Process_0l881g4" isExecutable="false">
+    <bpmn:sequenceFlow id="SequenceFlow_0jh0ukt" sourceRef="SendTask_0xvv6ys" targetRef="EndEvent_1ds1wq2" />
+    <bpmn:sequenceFlow id="SequenceFlow_0s423p9" sourceRef="Task_1wn1rf0" targetRef="SendTask_0xvv6ys" />
+    <bpmn:sequenceFlow id="SequenceFlow_1bvdk9t" sourceRef="StartEvent_0pdpn6v" targetRef="Task_0x9cdxx" />
+    <bpmn:sequenceFlow id="SequenceFlow_13txgld" name="[03-T1.2 Abfrage unzulässig]" sourceRef="ExclusiveGateway_0hz34e9" targetRef="Task_1wn1rf0" />
+    <bpmn:sequenceFlow id="SequenceFlow_0yv4x43" sourceRef="Task_0x9cdxx" targetRef="ExclusiveGateway_0hz34e9" />
+    <bpmn:sendTask id="SendTask_0xvv6ys" name="Fehler versenden&#10;(03-E2)">
+      <bpmn:incoming>SequenceFlow_0s423p9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0jh0ukt</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:endEvent id="EndEvent_1ds1wq2">
+      <bpmn:incoming>SequenceFlow_0jh0ukt</bpmn:incoming>
+      <bpmn:errorEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:dataStoreReference id="DataStoreReference_1lft3mu" name="Log" />
+    <bpmn:task id="Task_1wn1rf0" name="Fehler protokollieren&#10;(Warnung)">
+      <bpmn:incoming>SequenceFlow_13txgld</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0s423p9</bpmn:outgoing>
+      <bpmn:dataOutputAssociation />
+      <bpmn:dataOutputAssociation id="DataOutputAssociation_16nt68n">
+        <bpmn:targetRef>DataStoreReference_1lft3mu</bpmn:targetRef>
+      </bpmn:dataOutputAssociation>
+    </bpmn:task>
+    <bpmn:task id="Task_0x9cdxx" name="Abfrage prüfen (03-T1)">
+      <bpmn:incoming>SequenceFlow_1bvdk9t</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0yv4x43</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:startEvent id="StartEvent_0pdpn6v">
+      <bpmn:outgoing>SequenceFlow_1bvdk9t</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:startEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0hz34e9">
+      <bpmn:incoming>SequenceFlow_0yv4x43</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_13txgld</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1l3iovs</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1l3iovs" name="[03-T1.1 Abfrage zulässig]" sourceRef="ExclusiveGateway_0hz34e9" targetRef="Task_06czalg" />
+    <bpmn:dataStoreReference id="DataStoreReference_1lmfcdf" name="Log" />
+    <bpmn:sendTask id="SendTask_1rq0tql" name="Fehler versenden&#10;(03-E3)">
+      <bpmn:incoming>SequenceFlow_04x4myr</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0r3t0qt</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:task id="Task_0dcs0n6" name="Fehler protokollieren&#10;(Fehler)">
+      <bpmn:incoming>SequenceFlow_01qqibk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_04x4myr</bpmn:outgoing>
+      <bpmn:dataOutputAssociation />
+      <bpmn:dataOutputAssociation id="DataOutputAssociation_0gsk5pr">
+        <bpmn:targetRef>DataStoreReference_1lmfcdf</bpmn:targetRef>
+      </bpmn:dataOutputAssociation>
+    </bpmn:task>
+    <bpmn:endEvent id="EndEvent_1ejqdvq">
+      <bpmn:incoming>SequenceFlow_1bm4k7w</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_0ijxku7">
+      <bpmn:incoming>SequenceFlow_0r3t0qt</bpmn:incoming>
+      <bpmn:errorEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_04x4myr" sourceRef="Task_0dcs0n6" targetRef="SendTask_1rq0tql" />
+    <bpmn:sequenceFlow id="SequenceFlow_0r3t0qt" sourceRef="SendTask_1rq0tql" targetRef="EndEvent_0ijxku7" />
+    <bpmn:sequenceFlow id="SequenceFlow_01qqibk" sourceRef="BoundaryEvent_0omkth5" targetRef="Task_0dcs0n6" />
+    <bpmn:sequenceFlow id="SequenceFlow_0n06oz6" sourceRef="Task_06czalg" targetRef="SendTask_1ppgc3w" />
+    <bpmn:sequenceFlow id="SequenceFlow_1bm4k7w" sourceRef="SendTask_1ppgc3w" targetRef="EndEvent_1ejqdvq" />
+    <bpmn:task id="Task_06czalg" name="Topologische Ressourcentypen ermitteln">
+      <bpmn:incoming>SequenceFlow_1l3iovs</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0n06oz6</bpmn:outgoing>
+      <bpmn:property id="Property_0qw2zgf" name="__targetRef_placeholder" />
+      <bpmn:dataInputAssociation id="DataInputAssociation_0h48n1c">
+        <bpmn:sourceRef>DataStoreReference_0p5l3xx</bpmn:sourceRef>
+        <bpmn:targetRef>Property_0qw2zgf</bpmn:targetRef>
+      </bpmn:dataInputAssociation>
+    </bpmn:task>
+    <bpmn:boundaryEvent id="BoundaryEvent_0omkth5" attachedToRef="Task_06czalg">
+      <bpmn:outgoing>SequenceFlow_01qqibk</bpmn:outgoing>
+      <bpmn:errorEventDefinition id="ErrorEventDefinition_11olaoy" />
+    </bpmn:boundaryEvent>
+    <bpmn:dataStoreReference id="DataStoreReference_0p5l3xx" name="Datenquelle" />
+    <bpmn:sendTask id="SendTask_1ppgc3w" name="Topologische Ressourcentypen versenden">
+      <bpmn:incoming>SequenceFlow_0n06oz6</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1bm4k7w</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:association id="Association_0jstqgh" sourceRef="SendTask_0xvv6ys" targetRef="TextAnnotation_0x17maz" />
+    <bpmn:textAnnotation id="TextAnnotation_0x17maz">
+      <bpmn:text>http-Status: 400</bpmn:text>
+    </bpmn:textAnnotation>
+    <bpmn:textAnnotation id="TextAnnotation_1nlozdn">
+      <bpmn:text>http-Status: 500</bpmn:text>
+    </bpmn:textAnnotation>
+    <bpmn:association id="Association_1wojxqf" sourceRef="SendTask_1rq0tql" targetRef="TextAnnotation_1nlozdn" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_0joqp0s">
+      <bpmndi:BPMNShape id="Participant_0ru0snc_di" bpmnElement="Participant_0ru0snc">
+        <dc:Bounds x="-948" y="-802" width="1762" height="417" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_1y1o92i_di" bpmnElement="Participant_1y1o92i">
+        <dc:Bounds x="-948" y="-317" width="1766" height="515" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1qvwsps_di" bpmnElement="IntermediateCatchEvent_1qvwsps" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="-401" y="-453" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-428" y="-440" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0fp8w8o_di" bpmnElement="StartEvent_0fp8w8o" bioc:stroke="#43A047" bioc:fill="#C8E6C9">
+        <dc:Bounds x="-871" y="-628" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-898" y="-592" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1q59ol0_di" bpmnElement="IntermediateCatchEvent_1q59ol0" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="-216" y="-628" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-218" y="-588" width="41" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EventBasedGateway_0i1bam8_di" bpmnElement="EventBasedGateway_0i1bam8">
+        <dc:Bounds x="-577" y="-635" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-597" y="-581" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_1aqsod6_di" bpmnElement="SendTask_1aqsod6" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-755" y="-650" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_03zzd93_di" bpmnElement="Task_03zzd93" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="394" y="-560" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1yxgs4z_di" bpmnElement="EndEvent_1yxgs4z" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+        <dc:Bounds x="533" y="-538" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="898" y="-498" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataObjectReference_09m8tpv_di" bpmnElement="DataObjectReference_09m8tpv">
+        <dc:Bounds x="710" y="-660" width="36" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="685" y="-604" width="86" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0d9oh1l_di" bpmnElement="EndEvent_0d9oh1l" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="710" y="-719" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1071" y="-679" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_01jgmxq_di" bpmnElement="IntermediateCatchEvent_01jgmxq" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="584" y="-719" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="945" y="-679" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1uo7ts7_di" bpmnElement="IntermediateCatchEvent_1uo7ts7" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="135" y="-538" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="496" y="-498" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1m42ue4_di" bpmnElement="ExclusiveGateway_1m42ue4" isMarkerVisible="true">
+        <dc:Bounds x="315" y="-545" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="683" y="-491" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_05j86bx_di" bpmnElement="TextAnnotation_05j86bx">
+        <dc:Bounds x="-889" y="-771" width="505" height="41" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hz34e9_di" bpmnElement="ExclusiveGateway_0hz34e9" isMarkerVisible="true">
+        <dc:Bounds x="-411" y="11" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-431" y="65" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0pdpn6v_di" bpmnElement="StartEvent_0pdpn6v" bioc:stroke="#43A047" bioc:fill="#C8E6C9">
+        <dc:Bounds x="-724" y="18" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-751" y="58" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_0x9cdxx_di" bpmnElement="Task_0x9cdxx" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-589" y="-4" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0ijxku7_di" bpmnElement="EndEvent_0ijxku7" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="286" y="-219" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="647" y="-179" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1ejqdvq_di" bpmnElement="EndEvent_1ejqdvq" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="710" y="18" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1071" y="58" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_1ppgc3w_di" bpmnElement="SendTask_1ppgc3w" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="552" y="-4" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_0dcs0n6_di" bpmnElement="Task_0dcs0n6" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-60" y="-241" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_1wn1rf0_di" bpmnElement="Task_1wn1rf0" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-436" y="-126" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataStoreReference_1lft3mu_di" bpmnElement="DataStoreReference_1lft3mu">
+        <dc:Bounds x="-297" y="-111" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-280" y="-57" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1ds1wq2_di" bpmnElement="EndEvent_1ds1wq2" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="-290" y="-219" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-318" y="-179" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_1rq0tql_di" bpmnElement="SendTask_1rq0tql" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="103" y="-241" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_0xvv6ys_di" bpmnElement="SendTask_0xvv6ys" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-436" y="-241" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataStoreReference_1lmfcdf_di" bpmnElement="DataStoreReference_1lmfcdf">
+        <dc:Bounds x="-35" y="-137" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-18" y="-83" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_1nlozdn_di" bpmnElement="TextAnnotation_1nlozdn">
+        <dc:Bounds x="211" y="-303" width="100" height="30" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_0x17maz_di" bpmnElement="TextAnnotation_0x17maz">
+        <dc:Bounds x="-322" y="-293" width="100" height="30" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0qerq2c_di" bpmnElement="SequenceFlow_0qerq2c">
+        <di:waypoint x="-552" y="-585" />
+        <di:waypoint x="-552" y="-435" />
+        <di:waypoint x="-401" y="-435" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-582" y="-516" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0xybizg_di" bpmnElement="MessageFlow_0xybizg">
+        <di:waypoint x="-385" y="-241" />
+        <di:waypoint x="-385" y="-329" />
+        <di:waypoint x="-385" y="-329" />
+        <di:waypoint x="-385" y="-418" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-477" y="-285" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18gank5_di" bpmnElement="SequenceFlow_18gank5">
+        <di:waypoint x="-365" y="-435" />
+        <di:waypoint x="340" y="-435" />
+        <di:waypoint x="340" y="-495" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="137.5" y="-456" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0knug4f_di" bpmnElement="SequenceFlow_0knug4f">
+        <di:waypoint x="-835" y="-610" />
+        <di:waypoint x="-755" y="-610" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-840" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_05n3vpz_di" bpmnElement="SequenceFlow_05n3vpz">
+        <di:waypoint x="-527" y="-610" />
+        <di:waypoint x="-216" y="-610" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-275.5" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_09zdna4_di" bpmnElement="SequenceFlow_09zdna4">
+        <di:waypoint x="-180" y="-610" />
+        <di:waypoint x="340" y="-610" />
+        <di:waypoint x="340" y="-545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="369" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11lghfk_di" bpmnElement="SequenceFlow_11lghfk">
+        <di:waypoint x="-655" y="-610" />
+        <di:waypoint x="-577" y="-610" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-661" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t1jnhl_di" bpmnElement="SequenceFlow_1t1jnhl">
+        <di:waypoint x="-552" y="-635" />
+        <di:waypoint x="-552" y="-701" />
+        <di:waypoint x="584" y="-701" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-582" y="-674" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ob8om2_di" bpmnElement="SequenceFlow_0ob8om2">
+        <di:waypoint x="-552" y="-585" />
+        <di:waypoint x="-552" y="-520" />
+        <di:waypoint x="135" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-582" y="-557.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Association_152nrvv_di" bpmnElement="Association_152nrvv">
+        <di:waypoint x="-673" y="-650" />
+        <di:waypoint x="-643" y="-730" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_06rblkd_di" bpmnElement="MessageFlow_06rblkd">
+        <di:waypoint x="-705" y="-570" />
+        <di:waypoint x="-706" y="18" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-710.5" y="-198" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jyvnwc_di" bpmnElement="SequenceFlow_1jyvnwc">
+        <di:waypoint x="365" y="-520" />
+        <di:waypoint x="394" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="723.5" y="-541" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fhomia_di" bpmnElement="SequenceFlow_1fhomia">
+        <di:waypoint x="494" y="-520" />
+        <di:waypoint x="533" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="901.5" y="-541" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h003t8_di" bpmnElement="SequenceFlow_1h003t8">
+        <di:waypoint x="620" y="-701" />
+        <di:waypoint x="710" y="-701" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1008" y="-722" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_1t1pkfy_di" bpmnElement="MessageFlow_1t1pkfy">
+        <di:waypoint x="602" y="-4" />
+        <di:waypoint x="603" y="-683" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="946.5" y="-363.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_06fsrzq_di" bpmnElement="MessageFlow_06fsrzq">
+        <di:waypoint x="153" y="-241" />
+        <di:waypoint x="153" y="-502" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="546" y="-282.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1989n8w_di" bpmnElement="SequenceFlow_1989n8w">
+        <di:waypoint x="171" y="-520" />
+        <di:waypoint x="315" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="586" y="-541" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yv4x43_di" bpmnElement="SequenceFlow_0yv4x43">
+        <di:waypoint x="-489" y="36" />
+        <di:waypoint x="-411" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-495" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_13txgld_di" bpmnElement="SequenceFlow_13txgld">
+        <di:waypoint x="-386" y="11" />
+        <di:waypoint x="-386" y="-46" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-377" y="-11" width="83" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bvdk9t_di" bpmnElement="SequenceFlow_1bvdk9t">
+        <di:waypoint x="-688" y="36" />
+        <di:waypoint x="-589" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-682.5" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0r3t0qt_di" bpmnElement="SequenceFlow_0r3t0qt">
+        <di:waypoint x="203" y="-201" />
+        <di:waypoint x="286" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="588.5" y="-222" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bm4k7w_di" bpmnElement="SequenceFlow_1bm4k7w">
+        <di:waypoint x="652" y="36" />
+        <di:waypoint x="710" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1024" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04x4myr_di" bpmnElement="SequenceFlow_04x4myr">
+        <di:waypoint x="40" y="-201" />
+        <di:waypoint x="103" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="415.5" y="-222" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="DataOutputAssociation_0gsk5pr_di" bpmnElement="DataOutputAssociation_0gsk5pr">
+        <di:waypoint x="-10" y="-161" />
+        <di:waypoint x="-9" y="-137" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="DataOutputAssociation_16nt68n_di" bpmnElement="DataOutputAssociation_16nt68n">
+        <di:waypoint x="-336" y="-83" />
+        <di:waypoint x="-297" y="-81" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s423p9_di" bpmnElement="SequenceFlow_0s423p9">
+        <di:waypoint x="-386" y="-126" />
+        <di:waypoint x="-386" y="-161" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-416" y="-148.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jh0ukt_di" bpmnElement="SequenceFlow_0jh0ukt">
+        <di:waypoint x="-336" y="-201" />
+        <di:waypoint x="-290" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-358" y="-222" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Association_1wojxqf_di" bpmnElement="Association_1wojxqf">
+        <di:waypoint x="197" y="-237" />
+        <di:waypoint x="242" y="-273" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Association_0jstqgh_di" bpmnElement="Association_0jstqgh">
+        <di:waypoint x="-338" y="-233" />
+        <di:waypoint x="-294" y="-263" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1l3iovs_di" bpmnElement="SequenceFlow_1l3iovs">
+        <di:waypoint x="-361" y="36" />
+        <di:waypoint x="-192" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-351" y="48" width="83" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_01qqibk_di" bpmnElement="SequenceFlow_01qqibk">
+        <di:waypoint x="-142" y="-22" />
+        <di:waypoint x="-142" y="-201" />
+        <di:waypoint x="-60" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="261" y="-108.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n06oz6_di" bpmnElement="SequenceFlow_0n06oz6">
+        <di:waypoint x="-92" y="36" />
+        <di:waypoint x="552" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="618" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_06czalg_di" bpmnElement="Task_06czalg" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-192" y="-4" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataStoreReference_0p5l3xx_di" bpmnElement="DataStoreReference_0p5l3xx">
+        <dc:Bounds x="-167" y="103" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-171" y="157" width="59" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="BoundaryEvent_0omkth5_di" bpmnElement="BoundaryEvent_0omkth5" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+        <dc:Bounds x="-160" y="-22" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="DataInputAssociation_0h48n1c_di" bpmnElement="DataInputAssociation_0h48n1c">
+        <di:waypoint x="-143" y="103" />
+        <di:waypoint x="-144" y="76" />
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/doc/src/main/doc/resources/process/04_verbundene_topologische_Verbindungselemente_abfragen.bpmn b/doc/src/main/doc/resources/process/04_verbundene_topologische_Verbindungselemente_abfragen.bpmn
new file mode 100644
index 0000000..d3b9183
--- /dev/null
+++ b/doc/src/main/doc/resources/process/04_verbundene_topologische_Verbindungselemente_abfragen.bpmn
@@ -0,0 +1,549 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_0deedg3" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.0.3">
+  <bpmn:collaboration id="Collaboration_0joqp0s">
+    <bpmn:participant id="Participant_0ru0snc" name="nutzendes System" processRef="Process_04uvgkj" />
+    <bpmn:participant id="Participant_1y1o92i" name="dynamic-topology" processRef="Process_0l881g4" />
+    <bpmn:messageFlow id="MessageFlow_0xybizg" name="" sourceRef="SendTask_0xvv6ys" targetRef="IntermediateCatchEvent_1qvwsps" />
+    <bpmn:messageFlow id="MessageFlow_06rblkd" name="" sourceRef="SendTask_1aqsod6" targetRef="StartEvent_0pdpn6v" />
+    <bpmn:messageFlow id="MessageFlow_1t1pkfy" sourceRef="SendTask_1ppgc3w" targetRef="IntermediateCatchEvent_01jgmxq" />
+    <bpmn:messageFlow id="MessageFlow_06fsrzq" name="" sourceRef="SendTask_1rq0tql" targetRef="IntermediateCatchEvent_1uo7ts7" />
+  </bpmn:collaboration>
+  <bpmn:process id="Process_04uvgkj" isExecutable="false">
+    <bpmn:sequenceFlow id="SequenceFlow_0qerq2c" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1qvwsps" />
+    <bpmn:sequenceFlow id="SequenceFlow_18gank5" sourceRef="IntermediateCatchEvent_1qvwsps" targetRef="ExclusiveGateway_1m42ue4" />
+    <bpmn:sequenceFlow id="SequenceFlow_0knug4f" sourceRef="StartEvent_0fp8w8o" targetRef="SendTask_1aqsod6" />
+    <bpmn:sequenceFlow id="SequenceFlow_05n3vpz" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1q59ol0" />
+    <bpmn:sequenceFlow id="SequenceFlow_11lghfk" sourceRef="SendTask_1aqsod6" targetRef="EventBasedGateway_0i1bam8" />
+    <bpmn:sequenceFlow id="SequenceFlow_1t1jnhl" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_01jgmxq" />
+    <bpmn:sequenceFlow id="SequenceFlow_0ob8om2" sourceRef="EventBasedGateway_0i1bam8" targetRef="IntermediateCatchEvent_1uo7ts7" />
+    <bpmn:sequenceFlow id="SequenceFlow_09zdna4" sourceRef="IntermediateCatchEvent_1q59ol0" targetRef="ExclusiveGateway_1m42ue4" />
+    <bpmn:sequenceFlow id="SequenceFlow_1jyvnwc" sourceRef="ExclusiveGateway_1m42ue4" targetRef="Task_03zzd93" />
+    <bpmn:sequenceFlow id="SequenceFlow_1fhomia" sourceRef="Task_03zzd93" targetRef="EndEvent_1yxgs4z" />
+    <bpmn:sequenceFlow id="SequenceFlow_1h003t8" sourceRef="IntermediateCatchEvent_01jgmxq" targetRef="EndEvent_0d9oh1l" />
+    <bpmn:sequenceFlow id="SequenceFlow_1989n8w" sourceRef="IntermediateCatchEvent_1uo7ts7" targetRef="ExclusiveGateway_1m42ue4" />
+    <bpmn:endEvent id="EndEvent_1yxgs4z" name="">
+      <bpmn:incoming>SequenceFlow_1fhomia</bpmn:incoming>
+      <bpmn:errorEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1m42ue4">
+      <bpmn:incoming>SequenceFlow_18gank5</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_09zdna4</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1989n8w</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1jyvnwc</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1uo7ts7">
+      <bpmn:incoming>SequenceFlow_0ob8om2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1989n8w</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_01jgmxq">
+      <bpmn:incoming>SequenceFlow_1t1jnhl</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1h003t8</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:endEvent id="EndEvent_0d9oh1l">
+      <bpmn:incoming>SequenceFlow_1h003t8</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:dataObjectReference id="DataObjectReference_09m8tpv" name="verbundene Topologische Verbindungselemente" dataObjectRef="DataObject_08tipr2" />
+    <bpmn:dataObject id="DataObject_08tipr2" />
+    <bpmn:task id="Task_03zzd93" name="Fehler auslösen">
+      <bpmn:incoming>SequenceFlow_1jyvnwc</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1fhomia</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1q59ol0" name="Timeout&#10;04-E1">
+      <bpmn:incoming>SequenceFlow_05n3vpz</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_09zdna4</bpmn:outgoing>
+      <bpmn:timerEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sendTask id="SendTask_1aqsod6" name="verbundene Topologische Verbindungselemente abfragen">
+      <bpmn:incoming>SequenceFlow_0knug4f</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11lghfk</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:eventBasedGateway id="EventBasedGateway_0i1bam8">
+      <bpmn:incoming>SequenceFlow_11lghfk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0qerq2c</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_05n3vpz</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1t1jnhl</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0ob8om2</bpmn:outgoing>
+    </bpmn:eventBasedGateway>
+    <bpmn:startEvent id="StartEvent_0fp8w8o">
+      <bpmn:outgoing>SequenceFlow_0knug4f</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1qvwsps">
+      <bpmn:incoming>SequenceFlow_0qerq2c</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_18gank5</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:association id="Association_152nrvv" sourceRef="SendTask_1aqsod6" targetRef="TextAnnotation_05j86bx" />
+    <bpmn:textAnnotation id="TextAnnotation_05j86bx">
+      <bpmn:text>domain.electricity.dynamic-topology.connected-connecting-equipments_GET_1_de.open-api.yaml</bpmn:text>
+    </bpmn:textAnnotation>
+  </bpmn:process>
+  <bpmn:process id="Process_0l881g4" isExecutable="false">
+    <bpmn:sequenceFlow id="SequenceFlow_0jh0ukt" sourceRef="SendTask_0xvv6ys" targetRef="EndEvent_1ds1wq2" />
+    <bpmn:sequenceFlow id="SequenceFlow_0s423p9" sourceRef="Task_1wn1rf0" targetRef="SendTask_0xvv6ys" />
+    <bpmn:sequenceFlow id="SequenceFlow_1bvdk9t" sourceRef="StartEvent_0pdpn6v" targetRef="Task_0x9cdxx" />
+    <bpmn:sequenceFlow id="SequenceFlow_13txgld" name="[04-T1.2 Abfrage unzulässig]" sourceRef="ExclusiveGateway_0hz34e9" targetRef="Task_1wn1rf0" />
+    <bpmn:sequenceFlow id="SequenceFlow_0yv4x43" sourceRef="Task_0x9cdxx" targetRef="ExclusiveGateway_0hz34e9" />
+    <bpmn:sendTask id="SendTask_0xvv6ys" name="Fehler versenden&#10;(04-E2)">
+      <bpmn:incoming>SequenceFlow_0s423p9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0jh0ukt</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:endEvent id="EndEvent_1ds1wq2">
+      <bpmn:incoming>SequenceFlow_0jh0ukt</bpmn:incoming>
+      <bpmn:errorEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:dataStoreReference id="DataStoreReference_1lft3mu" name="Log" />
+    <bpmn:task id="Task_1wn1rf0" name="Fehler protokollieren&#10;(Warnung)">
+      <bpmn:incoming>SequenceFlow_13txgld</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0s423p9</bpmn:outgoing>
+      <bpmn:dataOutputAssociation />
+      <bpmn:dataOutputAssociation id="DataOutputAssociation_16nt68n">
+        <bpmn:targetRef>DataStoreReference_1lft3mu</bpmn:targetRef>
+      </bpmn:dataOutputAssociation>
+    </bpmn:task>
+    <bpmn:task id="Task_0x9cdxx" name="Abfrage prüfen (04-T1)">
+      <bpmn:incoming>SequenceFlow_1bvdk9t</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0yv4x43</bpmn:outgoing>
+    </bpmn:task>
+    <bpmn:startEvent id="StartEvent_0pdpn6v">
+      <bpmn:outgoing>SequenceFlow_1bvdk9t</bpmn:outgoing>
+      <bpmn:messageEventDefinition />
+    </bpmn:startEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0hz34e9">
+      <bpmn:incoming>SequenceFlow_0yv4x43</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_13txgld</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1l3iovs</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1l3iovs" name="[04-T1.1 Abfrage zulässig]" sourceRef="ExclusiveGateway_0hz34e9" targetRef="Task_06czalg" />
+    <bpmn:dataStoreReference id="DataStoreReference_1lmfcdf" name="Log" />
+    <bpmn:sendTask id="SendTask_1rq0tql" name="Fehler versenden&#10;(04-E3)">
+      <bpmn:incoming>SequenceFlow_04x4myr</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0r3t0qt</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:task id="Task_0dcs0n6" name="Fehler protokollieren&#10;(Fehler)">
+      <bpmn:incoming>SequenceFlow_01qqibk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_04x4myr</bpmn:outgoing>
+      <bpmn:dataOutputAssociation />
+      <bpmn:dataOutputAssociation id="DataOutputAssociation_0gsk5pr">
+        <bpmn:targetRef>DataStoreReference_1lmfcdf</bpmn:targetRef>
+      </bpmn:dataOutputAssociation>
+    </bpmn:task>
+    <bpmn:endEvent id="EndEvent_1ejqdvq">
+      <bpmn:incoming>SequenceFlow_1bm4k7w</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_0ijxku7">
+      <bpmn:incoming>SequenceFlow_0r3t0qt</bpmn:incoming>
+      <bpmn:errorEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_04x4myr" sourceRef="Task_0dcs0n6" targetRef="SendTask_1rq0tql" />
+    <bpmn:sequenceFlow id="SequenceFlow_0r3t0qt" sourceRef="SendTask_1rq0tql" targetRef="EndEvent_0ijxku7" />
+    <bpmn:sequenceFlow id="SequenceFlow_01qqibk" sourceRef="BoundaryEvent_0omkth5" targetRef="Task_0dcs0n6" />
+    <bpmn:sequenceFlow id="SequenceFlow_0n06oz6" sourceRef="Task_06czalg" targetRef="SendTask_1ppgc3w" />
+    <bpmn:sequenceFlow id="SequenceFlow_1bm4k7w" sourceRef="SendTask_1ppgc3w" targetRef="EndEvent_1ejqdvq" />
+    <bpmn:task id="Task_06czalg" name="verbundene Topologische Verbindungselemente ermitteln">
+      <bpmn:incoming>SequenceFlow_1l3iovs</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0n06oz6</bpmn:outgoing>
+      <bpmn:property id="Property_0qw2zgf" name="__targetRef_placeholder" />
+      <bpmn:dataInputAssociation id="DataInputAssociation_0h48n1c">
+        <bpmn:sourceRef>DataStoreReference_0p5l3xx</bpmn:sourceRef>
+        <bpmn:targetRef>Property_0qw2zgf</bpmn:targetRef>
+      </bpmn:dataInputAssociation>
+    </bpmn:task>
+    <bpmn:boundaryEvent id="BoundaryEvent_0omkth5" attachedToRef="Task_06czalg">
+      <bpmn:outgoing>SequenceFlow_01qqibk</bpmn:outgoing>
+      <bpmn:errorEventDefinition id="ErrorEventDefinition_11olaoy" />
+    </bpmn:boundaryEvent>
+    <bpmn:dataStoreReference id="DataStoreReference_0p5l3xx" name="Datenquelle" />
+    <bpmn:sendTask id="SendTask_1ppgc3w" name="verbundene Topologische Verbindungselemente versenden">
+      <bpmn:incoming>SequenceFlow_0n06oz6</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1bm4k7w</bpmn:outgoing>
+    </bpmn:sendTask>
+    <bpmn:association id="Association_0jstqgh" sourceRef="SendTask_0xvv6ys" targetRef="TextAnnotation_0x17maz" />
+    <bpmn:textAnnotation id="TextAnnotation_0x17maz">
+      <bpmn:text>http-Status: 400</bpmn:text>
+    </bpmn:textAnnotation>
+    <bpmn:textAnnotation id="TextAnnotation_1nlozdn">
+      <bpmn:text>http-Status: 500</bpmn:text>
+    </bpmn:textAnnotation>
+    <bpmn:association id="Association_1wojxqf" sourceRef="SendTask_1rq0tql" targetRef="TextAnnotation_1nlozdn" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_0joqp0s">
+      <bpmndi:BPMNShape id="Participant_0ru0snc_di" bpmnElement="Participant_0ru0snc">
+        <dc:Bounds x="-948" y="-802" width="1762" height="417" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Participant_1y1o92i_di" bpmnElement="Participant_1y1o92i">
+        <dc:Bounds x="-948" y="-317" width="1766" height="515" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1qvwsps_di" bpmnElement="IntermediateCatchEvent_1qvwsps" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="-401" y="-453" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-428" y="-440" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0fp8w8o_di" bpmnElement="StartEvent_0fp8w8o" bioc:stroke="#43A047" bioc:fill="#C8E6C9">
+        <dc:Bounds x="-871" y="-628" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-898" y="-592" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1q59ol0_di" bpmnElement="IntermediateCatchEvent_1q59ol0" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="-216" y="-628" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-218" y="-588" width="41" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EventBasedGateway_0i1bam8_di" bpmnElement="EventBasedGateway_0i1bam8">
+        <dc:Bounds x="-577" y="-635" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-597" y="-581" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_1aqsod6_di" bpmnElement="SendTask_1aqsod6" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-755" y="-650" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_03zzd93_di" bpmnElement="Task_03zzd93" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="394" y="-560" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1yxgs4z_di" bpmnElement="EndEvent_1yxgs4z" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+        <dc:Bounds x="533" y="-538" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="898" y="-498" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataObjectReference_09m8tpv_di" bpmnElement="DataObjectReference_09m8tpv">
+        <dc:Bounds x="710" y="-660" width="36" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="686" y="-604" width="85" height="53" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0d9oh1l_di" bpmnElement="EndEvent_0d9oh1l" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="710" y="-719" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1071" y="-679" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_01jgmxq_di" bpmnElement="IntermediateCatchEvent_01jgmxq" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="584" y="-719" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="945" y="-679" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1uo7ts7_di" bpmnElement="IntermediateCatchEvent_1uo7ts7" bioc:stroke="#FB8C00" bioc:fill="#FFE0B2">
+        <dc:Bounds x="135" y="-538" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="496" y="-498" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1m42ue4_di" bpmnElement="ExclusiveGateway_1m42ue4" isMarkerVisible="true">
+        <dc:Bounds x="315" y="-545" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="683" y="-491" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_05j86bx_di" bpmnElement="TextAnnotation_05j86bx">
+        <dc:Bounds x="-889" y="-771" width="567" height="41" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hz34e9_di" bpmnElement="ExclusiveGateway_0hz34e9" isMarkerVisible="true">
+        <dc:Bounds x="-411" y="11" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-431" y="65" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0pdpn6v_di" bpmnElement="StartEvent_0pdpn6v" bioc:stroke="#43A047" bioc:fill="#C8E6C9">
+        <dc:Bounds x="-724" y="18" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-751" y="58" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_0x9cdxx_di" bpmnElement="Task_0x9cdxx" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-589" y="-4" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0ijxku7_di" bpmnElement="EndEvent_0ijxku7" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="286" y="-219" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="647" y="-179" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1ejqdvq_di" bpmnElement="EndEvent_1ejqdvq" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="710" y="18" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1071" y="58" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_1ppgc3w_di" bpmnElement="SendTask_1ppgc3w" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="552" y="-4" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_0dcs0n6_di" bpmnElement="Task_0dcs0n6" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-60" y="-241" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Task_1wn1rf0_di" bpmnElement="Task_1wn1rf0" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-436" y="-126" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataStoreReference_1lft3mu_di" bpmnElement="DataStoreReference_1lft3mu">
+        <dc:Bounds x="-297" y="-111" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-280" y="-57" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1ds1wq2_di" bpmnElement="EndEvent_1ds1wq2" bioc:stroke="#E53935" bioc:fill="#FFCDD2">
+        <dc:Bounds x="-290" y="-219" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-318" y="-179" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_1rq0tql_di" bpmnElement="SendTask_1rq0tql" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="103" y="-241" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SendTask_0xvv6ys_di" bpmnElement="SendTask_0xvv6ys" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-436" y="-241" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataStoreReference_1lmfcdf_di" bpmnElement="DataStoreReference_1lmfcdf">
+        <dc:Bounds x="-35" y="-137" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-18" y="-83" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_1nlozdn_di" bpmnElement="TextAnnotation_1nlozdn">
+        <dc:Bounds x="211" y="-303" width="100" height="30" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_0x17maz_di" bpmnElement="TextAnnotation_0x17maz">
+        <dc:Bounds x="-322" y="-293" width="100" height="30" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0qerq2c_di" bpmnElement="SequenceFlow_0qerq2c">
+        <di:waypoint x="-552" y="-585" />
+        <di:waypoint x="-552" y="-435" />
+        <di:waypoint x="-401" y="-435" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-582" y="-516" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0xybizg_di" bpmnElement="MessageFlow_0xybizg">
+        <di:waypoint x="-385" y="-241" />
+        <di:waypoint x="-385" y="-329" />
+        <di:waypoint x="-385" y="-329" />
+        <di:waypoint x="-385" y="-418" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-477" y="-285" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18gank5_di" bpmnElement="SequenceFlow_18gank5">
+        <di:waypoint x="-365" y="-435" />
+        <di:waypoint x="340" y="-435" />
+        <di:waypoint x="340" y="-495" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="137.5" y="-456" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0knug4f_di" bpmnElement="SequenceFlow_0knug4f">
+        <di:waypoint x="-835" y="-610" />
+        <di:waypoint x="-755" y="-610" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-840" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_05n3vpz_di" bpmnElement="SequenceFlow_05n3vpz">
+        <di:waypoint x="-527" y="-610" />
+        <di:waypoint x="-216" y="-610" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-275.5" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_09zdna4_di" bpmnElement="SequenceFlow_09zdna4">
+        <di:waypoint x="-180" y="-610" />
+        <di:waypoint x="340" y="-610" />
+        <di:waypoint x="340" y="-545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="369" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11lghfk_di" bpmnElement="SequenceFlow_11lghfk">
+        <di:waypoint x="-655" y="-610" />
+        <di:waypoint x="-577" y="-610" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-661" y="-631" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t1jnhl_di" bpmnElement="SequenceFlow_1t1jnhl">
+        <di:waypoint x="-552" y="-635" />
+        <di:waypoint x="-552" y="-701" />
+        <di:waypoint x="584" y="-701" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-582" y="-674" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ob8om2_di" bpmnElement="SequenceFlow_0ob8om2">
+        <di:waypoint x="-552" y="-585" />
+        <di:waypoint x="-552" y="-520" />
+        <di:waypoint x="135" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-582" y="-557.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Association_152nrvv_di" bpmnElement="Association_152nrvv">
+        <di:waypoint x="-664" y="-650" />
+        <di:waypoint x="-616" y="-730" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_06rblkd_di" bpmnElement="MessageFlow_06rblkd">
+        <di:waypoint x="-705" y="-570" />
+        <di:waypoint x="-706" y="18" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-710.5" y="-198" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jyvnwc_di" bpmnElement="SequenceFlow_1jyvnwc">
+        <di:waypoint x="365" y="-520" />
+        <di:waypoint x="394" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="723.5" y="-541" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fhomia_di" bpmnElement="SequenceFlow_1fhomia">
+        <di:waypoint x="494" y="-520" />
+        <di:waypoint x="533" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="901.5" y="-541" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h003t8_di" bpmnElement="SequenceFlow_1h003t8">
+        <di:waypoint x="620" y="-701" />
+        <di:waypoint x="710" y="-701" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1008" y="-722" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_1t1pkfy_di" bpmnElement="MessageFlow_1t1pkfy">
+        <di:waypoint x="602" y="-4" />
+        <di:waypoint x="603" y="-683" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="946.5" y="-363.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_06fsrzq_di" bpmnElement="MessageFlow_06fsrzq">
+        <di:waypoint x="153" y="-241" />
+        <di:waypoint x="153" y="-502" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="546" y="-282.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1989n8w_di" bpmnElement="SequenceFlow_1989n8w">
+        <di:waypoint x="171" y="-520" />
+        <di:waypoint x="315" y="-520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="586" y="-541" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yv4x43_di" bpmnElement="SequenceFlow_0yv4x43">
+        <di:waypoint x="-489" y="36" />
+        <di:waypoint x="-411" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-495" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_13txgld_di" bpmnElement="SequenceFlow_13txgld">
+        <di:waypoint x="-386" y="11" />
+        <di:waypoint x="-386" y="-46" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-377" y="-11" width="83" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bvdk9t_di" bpmnElement="SequenceFlow_1bvdk9t">
+        <di:waypoint x="-688" y="36" />
+        <di:waypoint x="-589" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-682.5" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0r3t0qt_di" bpmnElement="SequenceFlow_0r3t0qt">
+        <di:waypoint x="203" y="-201" />
+        <di:waypoint x="286" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="588.5" y="-222" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bm4k7w_di" bpmnElement="SequenceFlow_1bm4k7w">
+        <di:waypoint x="652" y="36" />
+        <di:waypoint x="710" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1024" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04x4myr_di" bpmnElement="SequenceFlow_04x4myr">
+        <di:waypoint x="40" y="-201" />
+        <di:waypoint x="103" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="415.5" y="-222" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="DataOutputAssociation_0gsk5pr_di" bpmnElement="DataOutputAssociation_0gsk5pr">
+        <di:waypoint x="-10" y="-161" />
+        <di:waypoint x="-9" y="-137" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="DataOutputAssociation_16nt68n_di" bpmnElement="DataOutputAssociation_16nt68n">
+        <di:waypoint x="-336" y="-83" />
+        <di:waypoint x="-297" y="-81" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s423p9_di" bpmnElement="SequenceFlow_0s423p9">
+        <di:waypoint x="-386" y="-126" />
+        <di:waypoint x="-386" y="-161" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-416" y="-148.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jh0ukt_di" bpmnElement="SequenceFlow_0jh0ukt">
+        <di:waypoint x="-336" y="-201" />
+        <di:waypoint x="-290" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-358" y="-222" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Association_1wojxqf_di" bpmnElement="Association_1wojxqf">
+        <di:waypoint x="197" y="-237" />
+        <di:waypoint x="242" y="-273" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Association_0jstqgh_di" bpmnElement="Association_0jstqgh">
+        <di:waypoint x="-338" y="-233" />
+        <di:waypoint x="-294" y="-263" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1l3iovs_di" bpmnElement="SequenceFlow_1l3iovs">
+        <di:waypoint x="-361" y="36" />
+        <di:waypoint x="-192" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-351" y="48" width="83" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_01qqibk_di" bpmnElement="SequenceFlow_01qqibk">
+        <di:waypoint x="-142" y="-22" />
+        <di:waypoint x="-142" y="-201" />
+        <di:waypoint x="-60" y="-201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="261" y="-108.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n06oz6_di" bpmnElement="SequenceFlow_0n06oz6">
+        <di:waypoint x="-92" y="36" />
+        <di:waypoint x="552" y="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="618" y="15" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_06czalg_di" bpmnElement="Task_06czalg" bioc:stroke="#1E88E5" bioc:fill="#BBDEFB">
+        <dc:Bounds x="-192" y="-4" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="DataStoreReference_0p5l3xx_di" bpmnElement="DataStoreReference_0p5l3xx">
+        <dc:Bounds x="-167" y="103" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-171" y="157" width="59" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="BoundaryEvent_0omkth5_di" bpmnElement="BoundaryEvent_0omkth5" bioc:stroke="#8E24AA" bioc:fill="#E1BEE7">
+        <dc:Bounds x="-160" y="-22" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="DataInputAssociation_0h48n1c_di" bpmnElement="DataInputAssociation_0h48n1c">
+        <di:waypoint x="-143" y="103" />
+        <di:waypoint x="-144" y="76" />
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/doc/src/main/doc/resources/test/test.ods b/doc/src/main/doc/resources/test/test.ods
new file mode 100644
index 0000000..dc690cd
--- /dev/null
+++ b/doc/src/main/doc/resources/test/test.ods
Binary files differ
diff --git a/doc/src/main/doc/service-doc.adoc b/doc/src/main/doc/service-doc.adoc
new file mode 100644
index 0000000..cd58f02
--- /dev/null
+++ b/doc/src/main/doc/service-doc.adoc
@@ -0,0 +1,23 @@
+include::common/toc.adoc[]
+
+= {ProjectName} Dokumentation
+:context: {ProjectNameID}
+
+[options="footer,autowidth"]
+|====================
+| Firma | {Company}
+| Autoren | {Author}
+| E-Mail | {Email}
+| Datum | {docdate}
+| Version |  {ProjectVersion}
+|====================
+
+include::docs/documentation/documentation-assembly.adoc[leveloffset=+1]
+
+include::docs/architecture/architecture-assembly.adoc[leveloffset=+1]
+
+include::docs/howto/howto-assembly.adoc[leveloffset=+1]
+
+include::docs/test/test-assembly.adoc[leveloffset=+1]
+
+include::docs/appendix/appendix-assembly.adoc[leveloffset=+1]
diff --git a/doc/src/test/doc/test/test.adoc b/doc/src/test/doc/test/test.adoc
new file mode 100644
index 0000000..854988d
--- /dev/null
+++ b/doc/src/test/doc/test/test.adoc
@@ -0,0 +1,20 @@
+= openKonsequenz - Testkonzept
+:Author: Renko Ortgies
+:Date: 2019-02-12
+:Email:  info@psi.de
+:Company: PSI Software AG
+:ProjectNameID: CIM Cache
+:stylesheet: common/html-skin.css
+:icons: font
+:lang: de
+:doctype: article
+:encoding: utf-8
+:source-highlighter: coderay
+:highlightjs-theme: solarized_dark
+:sectnums:
+:toc-title: Inhaltsverzeichnis
+:toc:
+
+== Testkonzept
+
+NOTE: Siehe Service-Framework (org-eclipse-openk-service).