diff --git a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/api/MqttRequestHandler.java b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/api/MqttRequestHandler.java
index 5804bc8a79206d1535ad428c415ef8afdf9076b2..7bee87cc87332fe77c5cb48f4fa8e4995aab0e2a 100644
--- a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/api/MqttRequestHandler.java
+++ b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/api/MqttRequestHandler.java
@@ -1,23 +1,22 @@
 package ipos.project.DataModellntegration.SimpleSceneIntegration.api;
 
 import com.google.protobuf.InvalidProtocolBufferException;
-import ipos.models.GenericSensor;
 import ipos.models.SimpleScene;
 import ipos.models.SimpleScene.IposMonitoringRequest;
-import ipos.project.DataModellntegration.SimpleSceneIntegration.SimpleSceneIntegration;
 import ipos.project.DataModellntegration.SimpleSceneIntegration.service.SimpleSceneTransformer;
-import ipos.project.DataModellntegration.iPos_Datamodel.MonitoringRequest;
+import ipos.project.DataModellntegration.iPos_Datamodel.*;
+import ipos.project.UseCaseController.Administration;
 import ipos.project.UseCaseController.PositionMonitoring;
 import ipos.project.config.mqtt.Handler;
 import ipos.project.config.mqtt.MqttListener;
 import ipos.project.mapper.ProtoJsonMap;
 import org.apache.logging.log4j.LogManager;
 import org.eclipse.paho.client.mqttv3.MqttMessage;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jms.core.JmsTemplate;
 
+import java.util.List;
+
 
 // subscribe to the topic. It's example
 @MqttListener("usertopic/IposConfigWrapper")
@@ -34,19 +33,70 @@ public class MqttRequestHandler implements Handler {
     // method that handle new message from the topic
     public void handle(MqttMessage message) {
         try {
+            // TODO: Zwischen JSON und Protobuf unterscheiden können
             SimpleScene.IposConfigWrapper iposConfigWrapper = ProtoJsonMap.fromJson(message.toString(), SimpleScene.IposConfigWrapper.class);
             // IposMonitoringRequest monReqProto = IposMonitoringRequest.parseFrom(message.getPayload());
             LOG.info("IposConfigWrapper received: \n"
                     + iposConfigWrapper.toString());
-            for (IposMonitoringRequest monReq : iposConfigWrapper.getMonitoringRequestsList()){
-                MonitoringRequest monReqInternal = SimpleSceneTransformer.monReq_SScene2Internal(monReq);
-                PositionMonitoring.receiveMessage(monReqInternal);
-                // TODO: send request via JMS to MonitoringController
-            }
+            // Annahme: iposConfigWrapper enthält für leere Felder leere Listen und nicht null
+            processMonitoringRequests(iposConfigWrapper);
+            processRefSystems(iposConfigWrapper.getRefSystemsList());
+            processFrameConfigs(iposConfigWrapper.getFramesList()); // should be done not before refSystem-processing, as it might require one of the processed refSystems
+            processObjectConfigs(iposConfigWrapper.getObjectConfigsList());
+            processPois(iposConfigWrapper.getPoisList());
 
             // this.jmsTemplate.convertAndSend("/request123", monReqInternal); // submit request to the internal broker
         } catch (InvalidProtocolBufferException e) {
             e.printStackTrace();
         }
     }
+
+    /*
+    private SimpleScene.IposConfigWrapper replaceNullByEmptyList(SimpleScene.IposConfigWrapper configWrapper) {
+        SimpleScene.IposConfigWrapper.Builder configWrapper_NoNull = SimpleScene.IposConfigWrapper.newBuilder();
+        configWrapper_NoNull.add;
+    }
+    */
+
+    private void processPois(List<SimpleScene.POI> poisList) {
+        for (SimpleScene.POI poi : poisList){
+            POI poi_internal = SimpleSceneTransformer.poi_SScene2Internal(poi);
+            Administration.handlePoi(poi_internal);
+        }
+    }
+
+    private void processRefSystems(List<SimpleScene.RefSystem> refSystemsList) {
+        for (SimpleScene.RefSystem refSystem : refSystemsList){
+            ReferenceSystem refSystem_internal = SimpleSceneTransformer.refSystem_SScene2Internal(refSystem);
+            Administration.handleRefSystem(refSystem_internal);
+        }
+    }
+
+    private void processObjectConfigs(List<SimpleScene.IposObjectConfig> objectConfigsList) {
+        for( SimpleScene.IposObjectConfig objConfig : objectConfigsList){
+            Agent agent = SimpleSceneTransformer.agent_SScene2Internal(objConfig);
+            Administration.handleAgent(agent);
+        }
+    }
+
+    private void processFrameConfigs(List<SimpleScene.IposFrameConfig> frames){
+        /*
+        if (null == frames){
+            LOG.info("ConfigWrapper-message contains no Frame-definitions");
+            return;
+        }
+        */
+        for( SimpleScene.IposFrameConfig frame : frames){
+            Zone zone = SimpleSceneTransformer.zone_SScene2Internal(frame);
+            Administration.handleZone(zone);
+        }
+    }
+
+    private void processMonitoringRequests(SimpleScene.IposConfigWrapper iposConfigWrapper) {
+        for (IposMonitoringRequest monReq : iposConfigWrapper.getMonitoringRequestsList()){
+            MonitoringRequest monReqInternal = SimpleSceneTransformer.monReq_SScene2Internal(monReq);
+            PositionMonitoring.receiveMessage(monReqInternal);
+            // TODO: send request via JMS to MonitoringController
+        }
+    }
 }
diff --git a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/SimpleSceneTransformer.java b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/SimpleSceneTransformer.java
index 1003df2905c5a6fdfdc0e6446754817d099d83e6..43dd1a52552aab190d7c6838f1324bb055c16871 100644
--- a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/SimpleSceneTransformer.java
+++ b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/SimpleSceneTransformer.java
@@ -92,4 +92,99 @@ public class SimpleSceneTransformer {
         protoPoint3D.setX(internalPoint3D.getX()).setY(internalPoint3D.getY()).setZ(internalPoint3D.getZ());
         return protoPoint3D;
     }
+
+    public static Zone zone_SScene2Internal(SimpleScene.IposFrameConfig frame) {
+        Zone zone = modelFactory.createZone();
+        zone.setId(frame.getId());
+        zone.setName(frame.getId());
+        for (SimpleScene.IposSpace space_proto : frame.getSpaceList()){
+            Space space = space_SScene2Internal(space_proto);
+            zone.getSpace().add(space);
+        }
+        return zone;
+    }
+
+    private static Space space_SScene2Internal(SimpleScene.IposSpace space_proto) {
+        Space space = modelFactory.createSpace();
+        space.setX(space_proto.getX());
+        space.setY(space_proto.getY());
+        space.setZ(space_proto.getZ());
+        space.setCentrePoint(placing_SScene2Internal(space_proto.getPosition(),space_proto.getOrientation()));
+        return space;
+    }
+
+    private static Placing placing_SScene2Internal(SimpleScene.IposPosition position, SimpleScene.IposSimpleOrientation orientation) {
+        Placing placing = modelFactory.createPlacing();
+        placing.setPosition(position_SScene2Internal(position));
+        placing.setOrientation(orientation_SScene2Internal(orientation));
+        return placing;
+    }
+
+    private static Orientation orientation_SScene2Internal(SimpleScene.IposSimpleOrientation orientation_proto) {
+    Quaternion orientation = (Quaternion) modelFactory.createOrientation();
+    orientation.setX(orientation_proto.getX());
+    orientation.setY(orientation_proto.getY());
+    orientation.setZ(orientation_proto.getZ());
+    orientation.setW(orientation_proto.getW());
+    return orientation;
+    }
+
+    private static Position position_SScene2Internal(SimpleScene.IposPosition position_proto) {
+        Position position = modelFactory.createPosition();
+        position.setReferenceSystem(PositionMonitoring.getReferenceSystemByIdOrNull(position_proto.getRefSystemId()));
+        position.setPoint(point_SScene2Internal(position_proto.getPoint()));
+        position.setAccuracy(accuracy_SScene2Internal(position_proto.getAccuracy()));
+        return position;
+    }
+
+    private static Accuracy accuracy_SScene2Internal(float accuracy_proto) {
+        Gaussian accuracy = modelFactory.createGaussian();
+        accuracy.setConfidenceInterval(accuracy_proto);
+        return accuracy;
+    }
+
+    private static Point point_SScene2Internal(SimpleScene.IposPoint3D point_proto) {
+        Point3D point = modelFactory.createPoint3D();
+        point.setX(point_proto.getX());
+        point.setY(point_proto.getY());
+        point.setZ(point_proto.getZ());
+        return point;
+    }
+
+    /**
+     * It is the job of this function to create Agent- and LocalizableObject-objects.
+     * If is not the job of this function to checker whether agent/lobject-Objects
+     * do already exist for the respective ids.
+     * @param objConfig
+     * @return
+     */
+    public static Agent agent_SScene2Internal(SimpleScene.IposObjectConfig objConfig) {
+        Agent agent = modelFactory.createAgent();
+        agent.setAgentType(objConfig.getAgentType());
+        agent.setId(objConfig.getAgentId());
+        LocalizableObject lObject = modelFactory.createLocalizableObject();
+        lObject.setSensorType(objConfig.getSensorType());
+        lObject.setId(objConfig.getSensorId());
+        lObject.setAgent(agent);
+        agent.getLObject().add(lObject);
+        return agent;
+    }
+
+    public static ReferenceSystem refSystem_SScene2Internal(SimpleScene.RefSystem refSystem_proto) {
+        ReferenceSystem refSystem = modelFactory.createReferenceSystem();
+        refSystem.setId(refSystem.getId());
+        refSystem.setName(refSystem.getId());
+        if (null != refSystem_proto.getPosition() && null != refSystem_proto.getOrientation()) {
+            refSystem.setOrigin(placing_SScene2Internal(refSystem_proto.getPosition(), refSystem_proto.getOrientation()));
+        }
+        return refSystem;
+    }
+
+    public static POI poi_SScene2Internal(SimpleScene.POI poi_proto) {
+        POI poi = modelFactory.createPOI();
+        poi.setDescription(poi_proto.getDescription());
+        poi.setData(poi_proto.getDataMap());
+        poi.setPosition(position_SScene2Internal(poi_proto.getPosition()));
+        return poi;
+    }
 }
diff --git a/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java b/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java
index 8791d240af1919d00fed6fdd78994282a048239f..4738688fa8b544b65e3be58e081f9784389b9a94 100644
--- a/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java
+++ b/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java
@@ -73,6 +73,15 @@ public class PositionMonitoring {
         return null;
     }
 
+    public static ReferenceSystem getReferenceSystemByIdOrNull(String refSystemId){
+        for (ReferenceSystem refSystem : wm.getReferenceSystem()){
+            if(refSystem.getId().equals(refSystemId)){
+                return refSystem;
+            }
+        }
+        return null;
+    }
+
     private POI createPOI(Position position, String description, Map<String, String> data){
         POI poi = modelFactory.createPOI();
         poi.setPosition(position);
@@ -185,6 +194,7 @@ public class PositionMonitoring {
 
     // @JmsListener(destination = "/PositionEvent", containerFactory = "jmsListenFactory")
     public static void receiveMessage(PositionEvent posEvent) {
+        // TODO: Update currentPlacing attribute of the affected localizableObject
         LOG.info("Received <" + posEvent + ">");
         List<Tuple3<PositionEvent, String, String>> entryNotifications = new LinkedList<>();
         for (eventFilter eFilter : eventFilters){