From fea897778a22a8f2aa0964a6e2084dbbec27a595 Mon Sep 17 00:00:00 2001
From: Frank Rohde <frank.rohde@tu-dresden.de>
Date: Thu, 10 Mar 2022 16:16:52 +0100
Subject: [PATCH] VDA5050 implemented and tested ToozExt implemented and tested

---
 build.gradle                                  |   3 +-
 emf_datamodel/model/iPos_Datamodel.aird       | 698 ++++++++++++++++-
 emf_datamodel/model/iPos_Datamodel.ecore      |  55 ++
 emf_datamodel/model/iPos_Datamodel.genmodel   |  55 ++
 init_Industrierobotik.txt                     |   4 +-
 .../ipos/project/CustomLoggingFilter.java     |   2 +
 .../SimpleSceneIntegration.java               |  11 +-
 .../service/SimpleSceneTransformer.java       |  69 +-
 .../VDA5050Processor/VDA5050Processor.java    |  44 ++
 .../api/MqttRequestHandler.java               | 282 +++++++
 .../service/VDA5050Transformer.java           |  70 ++
 .../IPosDevKit/IPosDevKitFactory.java         |   9 +
 .../IPosDevKit/IPosDevKitPackage.java         | 301 ++++++++
 .../IPosDevKit/IposMsgRcvEvent.java           | 229 ++++++
 .../impl/IPosDevKitFactoryImpl.java           |  12 +
 .../impl/IPosDevKitPackageImpl.java           | 147 ++++
 .../IPosDevKit/impl/IposMsgRcvEventImpl.java  | 623 +++++++++++++++
 .../util/IPosDevKitAdapterFactory.java        |  19 +
 .../IPosDevKit/util/IPosDevKitSwitch.java     |  22 +
 .../iPos_Datamodel/IPos_DatamodelFactory.java |   9 +
 .../iPos_Datamodel/IPos_DatamodelPackage.java | 258 ++++++-
 .../iPos_Datamodel/MessageReceivedEvent.java  | 141 ++++
 .../OFBiz/impl/OFBizPackageImpl.java          |   8 +
 .../iPos_Datamodel/Tooz/DistantEntity.java    |  23 +
 .../iPos_Datamodel/Tooz/ToozPackage.java      |  30 +-
 .../Tooz/impl/DistantEntityImpl.java          |  55 ++
 .../Tooz/impl/ToozPackageImpl.java            |  21 +
 .../iPos_Datamodel/VDA5050/AgvPosition.java   | 115 +++
 .../iPos_Datamodel/VDA5050/AgvState.java      | 189 +++++
 .../iPos_Datamodel/VDA5050/BatteryState.java  |  46 ++
 .../iPos_Datamodel/VDA5050/Error.java         |  46 ++
 .../iPos_Datamodel/VDA5050/Load.java          |  46 ++
 .../VDA5050/VDA5050Factory.java               |  78 ++
 .../VDA5050/VDA5050Package.java               | 725 ++++++++++++++++++
 .../VDA5050/impl/AgvPositionImpl.java         | 327 ++++++++
 .../VDA5050/impl/AgvStateImpl.java            | 538 +++++++++++++
 .../VDA5050/impl/BatteryStateImpl.java        | 165 ++++
 .../VDA5050/impl/ErrorImpl.java               | 165 ++++
 .../iPos_Datamodel/VDA5050/impl/LoadImpl.java | 164 ++++
 .../VDA5050/impl/VDA5050FactoryImpl.java      | 150 ++++
 .../VDA5050/impl/VDA5050PackageImpl.java      | 482 ++++++++++++
 .../VDA5050/util/VDA5050AdapterFactory.java   | 200 +++++
 .../VDA5050/util/VDA5050Switch.java           | 205 +++++
 .../impl/IPos_DatamodelFactoryImpl.java       |  60 ++
 .../impl/IPos_DatamodelPackageImpl.java       | 137 ++++
 .../impl/LocalizableObjectImpl.java           |   3 +-
 .../impl/MessageReceivedEventImpl.java        | 392 ++++++++++
 .../util/IPos_DatamodelAdapterFactory.java    |  19 +
 .../util/IPos_DatamodelSwitch.java            |  22 +
 .../eventfilter/BeaconFilteringResult.java    |  17 +-
 .../eventfilter/MsgRcvFilteringResult.java    |  18 +
 .../eventfilter/eventFilter.java              |  24 +-
 .../Functionality/eventfilter/readConfig.java |   2 +-
 src/main/java/ipos/project/MainApp.java       |  11 +-
 .../GenericSensorValueProcessor.java          |  10 +-
 .../Service/GenericSensorTransformer.java     |  15 +-
 .../UseCaseController/PositionMonitoring.java | 184 ++++-
 .../project/devkit/iposext/IPosExtension.java |  13 +-
 .../devkit/trans/IPos2protoTransformer.java   |   6 +
 .../project/devkit/utility/OtherUtility.java  |  24 +-
 .../ipos/project/iposextension/tooz/Tooz.java |  84 +-
 .../project/iposextension/tooz/ToozArgs.java  |  13 +-
 .../project/iposextension/tooz/ToozExt.java   |  59 +-
 .../iposextension/tooz/ToozExtInputMqtt.java  |   7 +-
 .../iposextension/tooz/ToozExtOutputMqtt.java |   7 +-
 .../tooz/ToozIPosRawdataMqtt.java             |   4 +-
 .../tooz/ToozMonitoringTarget.java            |  89 +++
 testdata_raw_tooz.txt                         |   5 +-
 testdata_raw_tooz_init.txt                    |   2 +-
 testdata_raw_vda5050.txt                      |   3 +
 70 files changed, 7906 insertions(+), 165 deletions(-)
 create mode 100644 src/main/java/ipos/project/DataModellntegration/VDA5050Processor/VDA5050Processor.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/VDA5050Processor/api/MqttRequestHandler.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/VDA5050Processor/service/VDA5050Transformer.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/IposMsgRcvEvent.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/impl/IposMsgRcvEventImpl.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/MessageReceivedEvent.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/AgvPosition.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/AgvState.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/BatteryState.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/Error.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/Load.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/VDA5050Factory.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/VDA5050Package.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/AgvPositionImpl.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/AgvStateImpl.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/BatteryStateImpl.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/ErrorImpl.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/LoadImpl.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/VDA5050FactoryImpl.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/VDA5050PackageImpl.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/util/VDA5050AdapterFactory.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/util/VDA5050Switch.java
 create mode 100644 src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/MessageReceivedEventImpl.java
 create mode 100644 src/main/java/ipos/project/Functionality/eventfilter/MsgRcvFilteringResult.java
 create mode 100644 src/main/java/ipos/project/iposextension/tooz/ToozMonitoringTarget.java
 create mode 100644 testdata_raw_vda5050.txt

diff --git a/build.gradle b/build.gradle
index 6d8286e..2310a89 100644
--- a/build.gradle
+++ b/build.gradle
@@ -84,7 +84,8 @@ sourceSets {
 			srcDirs "models/interfaces/GenericSensor",
 			        "models/interfaces/SimpleScene",
 					"models/interfaces/OFBizOrderpicker",
-					"models/interfaces/Tooz"
+					"models/interfaces/Tooz",
+					"models/interfaces/VDA5050"
 			// srcDir "src/main/resources"
 		}
 		java {
diff --git a/emf_datamodel/model/iPos_Datamodel.aird b/emf_datamodel/model/iPos_Datamodel.aird
index 2c5333e..2c493ea 100644
--- a/emf_datamodel/model/iPos_Datamodel.aird
+++ b/emf_datamodel/model/iPos_Datamodel.aird
@@ -5,7 +5,7 @@
     <semanticResources>iPos_Datamodel.genmodel</semanticResources>
     <ownedViews xmi:type="viewpoint:DView" uid="_EpwecAQNEey-kNQ7esRa_g">
       <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
-      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_Et4wgAQNEey-kNQ7esRa_g" name="iPos_Datamodel" repPath="#_Es-xkAQNEey-kNQ7esRa_g" changeId="0678978b-7913-4092-aa95-af020ffe817b">
+      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_Et4wgAQNEey-kNQ7esRa_g" name="iPos_Datamodel" repPath="#_Es-xkAQNEey-kNQ7esRa_g" changeId="35178b3f-3d7f-425c-b778-889bae2431fb">
         <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
         <target xmi:type="ecore:EPackage" href="iPos_Datamodel.ecore#/"/>
       </ownedRepresentationDescriptors>
@@ -13,14 +13,18 @@
         <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
         <target xmi:type="ecore:EPackage" href="iPos_Datamodel.ecore#//OFBiz"/>
       </ownedRepresentationDescriptors>
-      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_FmM9IDx3EeyWNq6fFfWVSw" name="IPosDevKit" repPath="#_FmLvADx3EeyWNq6fFfWVSw" changeId="e0c6c57f-c57d-4940-9ba8-94cba4d59d54">
+      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_FmM9IDx3EeyWNq6fFfWVSw" name="IPosDevKit" repPath="#_FmLvADx3EeyWNq6fFfWVSw" changeId="c29febc3-272a-4523-bfce-a791886b5899">
         <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
         <target xmi:type="ecore:EPackage" href="iPos_Datamodel.ecore#//IPosDevKit"/>
       </ownedRepresentationDescriptors>
-      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_27WZMIsNEeyJ0bON1VCj7g" name="Tooz" repPath="#_27T88IsNEeyJ0bON1VCj7g" changeId="5e4ba94c-59c7-414d-8cd7-014b3bd38dd7">
+      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_27WZMIsNEeyJ0bON1VCj7g" name="Tooz" repPath="#_27T88IsNEeyJ0bON1VCj7g" changeId="d3c69b19-086f-45f8-ab55-f7de57bffb9a">
         <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
         <target xmi:type="ecore:EPackage" href="iPos_Datamodel.ecore#//Tooz"/>
       </ownedRepresentationDescriptors>
+      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_KUBu0I_UEeyJ0bON1VCj7g" name="VDA5050" repPath="#_KUAgsI_UEeyJ0bON1VCj7g" changeId="c93da314-38a7-4738-ab2b-de17dd609a6b">
+        <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+        <target xmi:type="ecore:EPackage" href="iPos_Datamodel.ecore#//VDA5050"/>
+      </ownedRepresentationDescriptors>
     </ownedViews>
   </viewpoint:DAnalysis>
   <diagram:DSemanticDiagram uid="_Es-xkAQNEey-kNQ7esRa_g">
@@ -649,7 +653,7 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="_1eT4MhFjEeydeasO1RaQEg"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_1eTRIRFjEeydeasO1RaQEg" fontName="Segoe UI" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1eTRIhFjEeydeasO1RaQEg" x="2342" y="751" width="140" height="50"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1eTRIhFjEeydeasO1RaQEg" x="2342" y="751" width="140" height="92"/>
         </children>
         <children xmi:type="notation:Node" xmi:id="_RzygABFkEeydeasO1RaQEg" type="2003" element="_RzioYBFkEeydeasO1RaQEg">
           <children xmi:type="notation:Node" xmi:id="_RzzHEBFkEeydeasO1RaQEg" type="5007"/>
@@ -688,7 +692,7 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="_I2AawxFmEeydeasO1RaQEg"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_I1_zsRFmEeydeasO1RaQEg" fontName="Segoe UI" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I1_zshFmEeydeasO1RaQEg" x="2535" y="751" width="140" height="50"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I1_zshFmEeydeasO1RaQEg" x="2535" y="751" width="140" height="86"/>
         </children>
         <children xmi:type="notation:Node" xmi:id="_Q9NrECxEEeyc2bacnWuMrg" type="2003" element="_Q7S_gCxEEeyc2bacnWuMrg">
           <children xmi:type="notation:Node" xmi:id="_Q9SjkCxEEeyc2bacnWuMrg" type="5007"/>
@@ -705,7 +709,7 @@
             <styles xmi:type="notation:FilteringStyle" xmi:id="_Q9TKoixEEeyc2bacnWuMrg"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_Q9NrESxEEeyc2bacnWuMrg" fontName="Segoe UI" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q9NrEixEEeyc2bacnWuMrg" x="1542" y="852" width="171" height="75"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q9NrEixEEeyc2bacnWuMrg" x="1536" y="564" width="171" height="75"/>
         </children>
         <children xmi:type="notation:Node" xmi:id="_ipaesCxSEeyc2bacnWuMrg" type="2003" element="_ipG8sCxSEeyc2bacnWuMrg">
           <children xmi:type="notation:Node" xmi:id="_ipbFwCxSEeyc2bacnWuMrg" type="5007"/>
@@ -720,6 +724,61 @@
           <styles xmi:type="notation:ShapeStyle" xmi:id="_ipaesSxSEeyc2bacnWuMrg" fontName="Segoe UI" fontHeight="8"/>
           <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ipaesixSEeyc2bacnWuMrg" x="1806" y="714" width="195" height="100"/>
         </children>
+        <children xmi:type="notation:Node" xmi:id="_-3jIcJSJEeyJ0bON1VCj7g" type="2003" element="_-2weQJSJEeyJ0bON1VCj7g">
+          <children xmi:type="notation:Node" xmi:id="_-3jvgJSJEeyJ0bON1VCj7g" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_-3jvgZSJEeyJ0bON1VCj7g" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_E3gfwJSKEeyJ0bON1VCj7g" type="3010" element="_E3M9wJSKEeyJ0bON1VCj7g">
+              <styles xmi:type="notation:FontStyle" xmi:id="_E3gfwZSKEeyJ0bON1VCj7g" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_E3gfwpSKEeyJ0bON1VCj7g"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_gVeQwJSKEeyJ0bON1VCj7g" type="3010" element="_gVMj8JSKEeyJ0bON1VCj7g">
+              <styles xmi:type="notation:FontStyle" xmi:id="_gVeQwZSKEeyJ0bON1VCj7g" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_gVeQwpSKEeyJ0bON1VCj7g"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_R2M8EJSQEeyJ0bON1VCj7g" type="3010" element="_R19rgJSQEeyJ0bON1VCj7g">
+              <styles xmi:type="notation:FontStyle" xmi:id="_R2M8EZSQEeyJ0bON1VCj7g" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_R2M8EpSQEeyJ0bON1VCj7g"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_YXErQJSUEeyJ0bON1VCj7g" type="3010" element="_YW1asJSUEeyJ0bON1VCj7g">
+              <styles xmi:type="notation:FontStyle" xmi:id="_YXErQZSUEeyJ0bON1VCj7g" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_YXErQpSUEeyJ0bON1VCj7g"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_5dKL8JriEeybDM53IXNodQ" type="3010" element="_5c0NsJriEeybDM53IXNodQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_5dKL8ZriEeybDM53IXNodQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_5dKL8priEeybDM53IXNodQ"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_-3jvgpSJEeyJ0bON1VCj7g"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_-3jvg5SJEeyJ0bON1VCj7g"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_-3jIcZSJEeyJ0bON1VCj7g" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-3jIcpSJEeyJ0bON1VCj7g" x="1877" y="954" width="190" height="142"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_swdx1JSKEeyJ0bON1VCj7g" type="2003" element="_swMsEJSKEeyJ0bON1VCj7g">
+          <children xmi:type="notation:Node" xmi:id="_swdx15SKEeyJ0bON1VCj7g" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_sweY4JSKEeyJ0bON1VCj7g" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_sweY45SKEeyJ0bON1VCj7g" type="3010" element="_swUA0pSKEeyJ0bON1VCj7g">
+              <styles xmi:type="notation:FontStyle" xmi:id="_sweY5JSKEeyJ0bON1VCj7g" fontName="Segoe UI" fontHeight="8" italic="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_sweY5ZSKEeyJ0bON1VCj7g"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_sweY4ZSKEeyJ0bON1VCj7g"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_sweY4pSKEeyJ0bON1VCj7g"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_swdx1ZSKEeyJ0bON1VCj7g" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_swdx1pSKEeyJ0bON1VCj7g" x="2406" y="937" width="140" height="62"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_-HZlMJosEeybDM53IXNodQ" type="2003" element="_-GdxEJosEeybDM53IXNodQ">
+          <children xmi:type="notation:Node" xmi:id="_-HfEwJosEeybDM53IXNodQ" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_-Hfr0JosEeybDM53IXNodQ" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_-HhhAJosEeybDM53IXNodQ" type="3010" element="_-G09cJosEeybDM53IXNodQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_-HhhAZosEeybDM53IXNodQ" fontName="Segoe UI" fontHeight="8" italic="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_-HhhAposEeybDM53IXNodQ"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_-Hfr0ZosEeybDM53IXNodQ"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_-Hfr0posEeybDM53IXNodQ"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_-HZlMZosEeybDM53IXNodQ" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-HZlMposEeybDM53IXNodQ" x="2715" y="924" width="276" height="141"/>
+        </children>
         <styles xmi:type="notation:DiagramStyle" xmi:id="_EuqzogQNEey-kNQ7esRa_g"/>
         <edges xmi:type="notation:Edge" xmi:id="_slHHwAQOEey-kNQ7esRa_g" type="4001" element="_sk66gAQOEey-kNQ7esRa_g" source="_OVBp4AQNEey-kNQ7esRa_g" target="_hS0UIAQOEey-kNQ7esRa_g">
           <children xmi:type="notation:Node" xmi:id="_slIV4AQOEey-kNQ7esRa_g" type="6001">
@@ -1165,9 +1224,8 @@
           </children>
           <styles xmi:type="notation:ConnectorStyle" xmi:id="_eXoJkQcoEey-kNQ7esRa_g" routing="Tree"/>
           <styles xmi:type="notation:FontStyle" xmi:id="_eXoJkgcoEey-kNQ7esRa_g" fontName="Segoe UI" fontHeight="8"/>
-          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eXoJkwcoEey-kNQ7esRa_g" points="[0, 0, 113, 0]$[-113, 0, 0, 0]"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eXoJkwcoEey-kNQ7esRa_g" points="[0, 100, 172, 58]$[0, 109, 172, 67]$[-171, 109, 1, 67]$[-171, 91, 1, 49]"/>
           <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eXowoAcoEey-kNQ7esRa_g" id="(0.0,0.06542056074766354)"/>
-          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eXowoQcoEey-kNQ7esRa_g" id="(0.5,0.5)"/>
         </edges>
         <edges xmi:type="notation:Edge" xmi:id="_oMShkAcoEey-kNQ7esRa_g" type="4001" element="_X6rBlgQlEey-kNQ7esRa_g" source="_fodekAQjEey-kNQ7esRa_g" target="_-LbRoAQjEey-kNQ7esRa_g">
           <children xmi:type="notation:Node" xmi:id="_oMShlAcoEey-kNQ7esRa_g" type="6001">
@@ -1378,17 +1436,17 @@
         </edges>
         <edges xmi:type="notation:Edge" xmi:id="_r0eocCxEEeyc2bacnWuMrg" type="4001" element="_rz8c8CxEEeyc2bacnWuMrg" source="_lCMqkAZsEey-kNQ7esRa_g" target="_Q9NrECxEEeyc2bacnWuMrg">
           <children xmi:type="notation:Node" xmi:id="_r0gdoCxEEeyc2bacnWuMrg" type="6001">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r0gdoSxEEeyc2bacnWuMrg" y="-10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r0gdoSxEEeyc2bacnWuMrg" y="10"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_r0gdoixEEeyc2bacnWuMrg" type="6002">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r0gdoyxEEeyc2bacnWuMrg" y="10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r0gdoyxEEeyc2bacnWuMrg" x="1" y="-10"/>
           </children>
           <children xmi:type="notation:Node" xmi:id="_r0hEsCxEEeyc2bacnWuMrg" type="6003">
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r0hEsSxEEeyc2bacnWuMrg" y="10"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r0hEsSxEEeyc2bacnWuMrg" x="1" y="-10"/>
           </children>
           <styles xmi:type="notation:ConnectorStyle" xmi:id="_r0eocSxEEeyc2bacnWuMrg" routing="Rectilinear"/>
           <styles xmi:type="notation:FontStyle" xmi:id="_r0eocixEEeyc2bacnWuMrg" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
-          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_r0eocyxEEeyc2bacnWuMrg" points="[0, 0, 0, -40]$[0, 40, 0, 0]"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_r0eocyxEEeyc2bacnWuMrg" points="[-6, 0, 0, 248]$[-6, -248, 0, 0]"/>
           <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_r0jg8CxEEeyc2bacnWuMrg" id="(0.6779661016949152,1.0)"/>
           <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_r0jg8SxEEeyc2bacnWuMrg" id="(0.47337278106508873,0.0)"/>
         </edges>
@@ -3005,6 +3063,97 @@
       </ownedStyle>
       <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
     </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_-2weQJSJEeyJ0bON1VCj7g" name="MessageReceivedEvent" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//MessageReceivedEvent"/>
+      <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//MessageReceivedEvent"/>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_7_EvF5riEeybDM53IXNodQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_E3M9wJSKEeyJ0bON1VCj7g" name="protocolName : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//MessageReceivedEvent/protocolName"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//MessageReceivedEvent/protocolName"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_H6qux5SKEeyJ0bON1VCj7g" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_gVMj8JSKEeyJ0bON1VCj7g" name="serializedMsg : ByteArray" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//MessageReceivedEvent/serializedMsg"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//MessageReceivedEvent/serializedMsg"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_6Ez8z5SKEeyJ0bON1VCj7g" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_R19rgJSQEeyJ0bON1VCj7g" name="agentId : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//MessageReceivedEvent/agentId"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//MessageReceivedEvent/agentId"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_U5wMo5SQEeyJ0bON1VCj7g" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_YW1asJSUEeyJ0bON1VCj7g" name="extractedAttributes : ListOfStringMaps" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//MessageReceivedEvent/extractedAttributes"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//MessageReceivedEvent/extractedAttributes"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_kF1ERJotEeybDM53IXNodQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_5c0NsJriEeybDM53IXNodQ" name="timestamp : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//MessageReceivedEvent/timestamp"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//MessageReceivedEvent/timestamp"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_7_IZdZriEeybDM53IXNodQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_swMsEJSKEeyJ0bON1VCj7g" name="ByteArray" tooltipText="" width="14" height="5">
+      <target xmi:type="ecore:EDataType" href="iPos_Datamodel.ecore#//ByteArray"/>
+      <semanticElements xmi:type="ecore:EDataType" href="iPos_Datamodel.ecore#//ByteArray"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_swMsEZSKEeyJ0bON1VCj7g" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="255,250,191">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_swUA0pSKEeyJ0bON1VCj7g" name="java.lang.byte[]" tooltipText="">
+        <target xmi:type="ecore:EDataType" href="iPos_Datamodel.ecore#//ByteArray"/>
+        <semanticElements xmi:type="ecore:EDataType" href="iPos_Datamodel.ecore#//ByteArray"/>
+        <decorations xmi:type="viewpoint:Decoration" uid="_swUA05SKEeyJ0bON1VCj7g">
+          <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
+        </decorations>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_swUA1JSKEeyJ0bON1VCj7g" showIcon="false">
+          <labelFormat>italic</labelFormat>
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@subNodeMappings[name='EC_DataType_InstanceClassName']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@subNodeMappings[name='EC_DataType_InstanceClassName']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_-GdxEJosEeybDM53IXNodQ" name="ListOfStringMaps" tooltipText="" width="14" height="5">
+      <target xmi:type="ecore:EDataType" href="iPos_Datamodel.ecore#//ListOfStringMaps"/>
+      <semanticElements xmi:type="ecore:EDataType" href="iPos_Datamodel.ecore#//ListOfStringMaps"/>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_-GeYIJosEeybDM53IXNodQ" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="255,250,191">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_-G09cJosEeybDM53IXNodQ" name="java.util.LinkedList&lt;java.util.HashMap&lt;java.lang.String, java.lang.String>>" tooltipText="">
+        <target xmi:type="ecore:EDataType" href="iPos_Datamodel.ecore#//ListOfStringMaps"/>
+        <semanticElements xmi:type="ecore:EDataType" href="iPos_Datamodel.ecore#//ListOfStringMaps"/>
+        <decorations xmi:type="viewpoint:Decoration" uid="_-G09cZosEeybDM53IXNodQ">
+          <description xmi:type="description:SemanticBasedDecoration" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@decorationDescriptionsSet/@decorationDescriptions[name='External']"/>
+        </decorations>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_-G09cposEeybDM53IXNodQ" showIcon="false">
+          <labelFormat>italic</labelFormat>
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@subNodeMappings[name='EC_DataType_InstanceClassName']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@subNodeMappings[name='EC_DataType_InstanceClassName']"/>
+      </ownedElements>
+    </ownedDiagramElements>
     <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
     <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_EthkIAQNEey-kNQ7esRa_g"/>
     <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
@@ -3514,9 +3663,9 @@
               <styles xmi:type="notation:FontStyle" xmi:id="_E86K4T8cEeyWNq6fFfWVSw" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
               <layoutConstraint xmi:type="notation:Location" xmi:id="_E86K4j8cEeyWNq6fFfWVSw"/>
             </children>
-            <children xmi:type="notation:Node" xmi:id="_mTvzwD8cEeyWNq6fFfWVSw" type="3010" element="_mTJW1j8cEeyWNq6fFfWVSw">
-              <styles xmi:type="notation:FontStyle" xmi:id="_mTvzwT8cEeyWNq6fFfWVSw" fontName="Segoe UI" fontHeight="8" bold="true"/>
-              <layoutConstraint xmi:type="notation:Location" xmi:id="_mTvzwj8cEeyWNq6fFfWVSw"/>
+            <children xmi:type="notation:Node" xmi:id="_wTAkIJSNEeyJ0bON1VCj7g" type="3010" element="_wS9g1pSNEeyJ0bON1VCj7g">
+              <styles xmi:type="notation:FontStyle" xmi:id="_wTAkIZSNEeyJ0bON1VCj7g" fontName="Segoe UI" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_wTAkIpSNEeyJ0bON1VCj7g"/>
             </children>
             <children xmi:type="notation:Node" xmi:id="_mTwa0D8cEeyWNq6fFfWVSw" type="3010" element="_mTLzED8cEeyWNq6fFfWVSw">
               <styles xmi:type="notation:FontStyle" xmi:id="_mTwa0T8cEeyWNq6fFfWVSw" fontName="Segoe UI" fontHeight="8" bold="true"/>
@@ -3670,6 +3819,51 @@
           <styles xmi:type="notation:ShapeStyle" xmi:id="_ZNRYcYqZEeyJ0bON1VCj7g" fontName="Segoe UI" fontHeight="8"/>
           <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZNRYcoqZEeyJ0bON1VCj7g" x="1074" y="516" width="174" height="100"/>
         </children>
+        <children xmi:type="notation:Node" xmi:id="_vsQ_J5SLEeyJ0bON1VCj7g" type="2003" element="_vsCVoJSLEeyJ0bON1VCj7g">
+          <children xmi:type="notation:Node" xmi:id="_vsRmMJSLEeyJ0bON1VCj7g" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_vsRmMZSLEeyJ0bON1VCj7g" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_1WZQYJSLEeyJ0bON1VCj7g" type="3010" element="_1WHjkJSLEeyJ0bON1VCj7g">
+              <styles xmi:type="notation:FontStyle" xmi:id="_1WZQYZSLEeyJ0bON1VCj7g" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_1WZQYpSLEeyJ0bON1VCj7g"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_5AFT4pSLEeyJ0bON1VCj7g" type="3010" element="_4_zAAJSLEeyJ0bON1VCj7g">
+              <styles xmi:type="notation:FontStyle" xmi:id="_5AFT45SLEeyJ0bON1VCj7g" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_5AFT5JSLEeyJ0bON1VCj7g"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_O-8-8JSMEeyJ0bON1VCj7g" type="3010" element="_O-qrEJSMEeyJ0bON1VCj7g">
+              <styles xmi:type="notation:FontStyle" xmi:id="_O-8-8ZSMEeyJ0bON1VCj7g" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_O-8-8pSMEeyJ0bON1VCj7g"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_ZCaEEJSQEeyJ0bON1VCj7g" type="3010" element="_ZCHwMJSQEeyJ0bON1VCj7g">
+              <styles xmi:type="notation:FontStyle" xmi:id="_ZCaEEZSQEeyJ0bON1VCj7g" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_ZCaEEpSQEeyJ0bON1VCj7g"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_VDezl5SUEeyJ0bON1VCj7g" type="3010" element="_VDHnMJSUEeyJ0bON1VCj7g">
+              <styles xmi:type="notation:FontStyle" xmi:id="_VDezmJSUEeyJ0bON1VCj7g" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_VDezmZSUEeyJ0bON1VCj7g"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_2GDGMJriEeybDM53IXNodQ" type="3010" element="_2FmaQJriEeybDM53IXNodQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_2GDGMZriEeybDM53IXNodQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_2GDGMpriEeybDM53IXNodQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_NWceIJSOEeyJ0bON1VCj7g" type="3010" element="_NVZ8VpSOEeyJ0bON1VCj7g">
+              <styles xmi:type="notation:FontStyle" xmi:id="_NWceIZSOEeyJ0bON1VCj7g" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_NWceIpSOEeyJ0bON1VCj7g"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_rkPScJSOEeyJ0bON1VCj7g" type="3010" element="_rjuVG5SOEeyJ0bON1VCj7g">
+              <styles xmi:type="notation:FontStyle" xmi:id="_rkPScZSOEeyJ0bON1VCj7g" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_rkPScpSOEeyJ0bON1VCj7g"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_zvcj4JSPEeyJ0bON1VCj7g" type="3010" element="_zu2uA5SPEeyJ0bON1VCj7g">
+              <styles xmi:type="notation:FontStyle" xmi:id="_zvcj4ZSPEeyJ0bON1VCj7g" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_zvcj4pSPEeyJ0bON1VCj7g"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_vsRmMpSLEeyJ0bON1VCj7g"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_vsRmM5SLEeyJ0bON1VCj7g"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_vsQ_KJSLEeyJ0bON1VCj7g" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vsQ_KZSLEeyJ0bON1VCj7g" x="252" y="367" width="213" height="212"/>
+        </children>
         <styles xmi:type="notation:DiagramStyle" xmi:id="_FmNkMjx3EeyWNq6fFfWVSw"/>
         <edges xmi:type="notation:Edge" xmi:id="_E5KQ8IqXEeyJ0bON1VCj7g" type="4001" element="_E4rIwIqXEeyJ0bON1VCj7g" source="__LdHQIqWEeyJ0bON1VCj7g" target="_KOCgYIqWEeyJ0bON1VCj7g">
           <children xmi:type="notation:Node" xmi:id="_E5x8AIqXEeyJ0bON1VCj7g" type="6001">
@@ -3825,6 +4019,12 @@
           <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
           <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
         </computedStyleDescriptions>
+        <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_eDHIZJSREeyJ0bON1VCj7g" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+          <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <labelFormat>bold</labelFormat>
+          <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+        </computedStyleDescriptions>
       </data>
     </ownedAnnotationEntries>
     <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_GE5EQDx3EeyWNq6fFfWVSw" name="TrackingRequest" tooltipText="" width="12" height="10">
@@ -4042,10 +4242,10 @@
         </ownedStyle>
         <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
       </ownedElements>
-      <ownedElements xmi:type="diagram:DNodeListElement" uid="_mTJW1j8cEeyWNq6fFfWVSw" name=" position : Position" tooltipText="">
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_wS9g1pSNEeyJ0bON1VCj7g" name=" position : Position" tooltipText="">
         <target xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//IPosDevKit/IposPositionEvent/position"/>
         <semanticElements xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//IPosDevKit/IposPositionEvent/position"/>
-        <ownedStyle xmi:type="diagram:BundledImage" uid="_mTLMAT8cEeyWNq6fFfWVSw" labelAlignment="LEFT" description="_mTLMAD8cEeyWNq6fFfWVSw" color="114,159,207">
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_wS9g15SNEeyJ0bON1VCj7g" labelAlignment="LEFT" description="_mTLMAD8cEeyWNq6fFfWVSw" color="114,159,207">
           <labelFormat>bold</labelFormat>
         </ownedStyle>
         <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode']"/>
@@ -4381,6 +4581,89 @@
       </ownedStyle>
       <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
     </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_vsCVoJSLEeyJ0bON1VCj7g" name="IposMsgRcvEvent" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent"/>
+      <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_y4b88p_TEeyjYoAVD5IwbQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_1WHjkJSLEeyJ0bON1VCj7g" name="protocolName : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/protocolName"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/protocolName"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_fzbPdZSREeyJ0bON1VCj7g" labelAlignment="LEFT" description="_eDHIZJSREeyJ0bON1VCj7g">
+          <labelFormat>bold</labelFormat>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_4_zAAJSLEeyJ0bON1VCj7g" name="serializedMsg : ByteArray" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/serializedMsg"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/serializedMsg"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_6rcpkZSLEeyJ0bON1VCj7g" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_O-qrEJSMEeyJ0bON1VCj7g" name="lastPosUpdate : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/lastPosUpdate"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/lastPosUpdate"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_SbNDZJSMEeyJ0bON1VCj7g" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_ZCHwMJSQEeyJ0bON1VCj7g" name="agentId : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/agentId"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/agentId"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_eDHIZpSREeyJ0bON1VCj7g" labelAlignment="LEFT" description="_eDHIZJSREeyJ0bON1VCj7g">
+          <labelFormat>bold</labelFormat>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_VDHnMJSUEeyJ0bON1VCj7g" name="extractedAttributes : ListOfStringMaps" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/extractedAttributes"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/extractedAttributes"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_hgtcJJotEeybDM53IXNodQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_2FmaQJriEeybDM53IXNodQ" name="timestamp : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/timestamp"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/timestamp"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_3eQ2WZriEeybDM53IXNodQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_NVZ8VpSOEeyJ0bON1VCj7g" name=" lastKnownPosition : Position" tooltipText="">
+        <target xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/lastKnownPosition"/>
+        <semanticElements xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/lastKnownPosition"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_NVZ8V5SOEeyJ0bON1VCj7g" labelAlignment="LEFT" color="114,159,207">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_rjuVG5SOEeyJ0bON1VCj7g" name=" lastKnownOrientation : Orientation" tooltipText="">
+        <target xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/lastKnownOrientation"/>
+        <semanticElements xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/lastKnownOrientation"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_rju8IJSOEeyJ0bON1VCj7g" labelAlignment="LEFT" color="114,159,207">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_zu2uA5SPEeyJ0bON1VCj7g" name=" lastKnownZonedescriptors : ZoneDescriptor" tooltipText="">
+        <target xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/lastKnownZonedescriptors"/>
+        <semanticElements xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/lastKnownZonedescriptors"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_zu2uBJSPEeyJ0bON1VCj7g" labelAlignment="LEFT" color="114,159,207">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EReferenceNode']"/>
+      </ownedElements>
+    </ownedDiagramElements>
     <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
     <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_FmMWEDx3EeyWNq6fFfWVSw"/>
     <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
@@ -4431,11 +4714,15 @@
               <styles xmi:type="notation:FontStyle" xmi:id="_syMsAYsaEeyJ0bON1VCj7g" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
               <layoutConstraint xmi:type="notation:Location" xmi:id="_syMsAosaEeyJ0bON1VCj7g"/>
             </children>
+            <children xmi:type="notation:Node" xmi:id="_IBk-4I3CEeyJ0bON1VCj7g" type="3010" element="_IBJhEI3CEeyJ0bON1VCj7g">
+              <styles xmi:type="notation:FontStyle" xmi:id="_IBk-4Y3CEeyJ0bON1VCj7g" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_IBk-4o3CEeyJ0bON1VCj7g"/>
+            </children>
             <styles xmi:type="notation:SortingStyle" xmi:id="_t1IlIosZEeyJ0bON1VCj7g"/>
             <styles xmi:type="notation:FilteringStyle" xmi:id="_t1IlI4sZEeyJ0bON1VCj7g"/>
           </children>
           <styles xmi:type="notation:ShapeStyle" xmi:id="_t1HXAIsZEeyJ0bON1VCj7g" fontName="Segoe UI" fontHeight="8"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t1HXAYsZEeyJ0bON1VCj7g" x="738" y="204" width="189" height="147"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t1HXAYsZEeyJ0bON1VCj7g" x="738" y="204" width="189" height="159"/>
         </children>
         <styles xmi:type="notation:DiagramStyle" xmi:id="_28wHYosNEeyJ0bON1VCj7g"/>
       </data>
@@ -4462,7 +4749,7 @@
     <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_tz4n8IsZEeyJ0bON1VCj7g" name="DistantEntity" tooltipText="" width="12" height="10">
       <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//Tooz/DistantEntity"/>
       <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//Tooz/DistantEntity"/>
-      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_vHE4s4saEeyJ0bON1VCj7g" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Ix8r443CEeyJ0bON1VCj7g" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
         <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
       </ownedStyle>
       <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
@@ -4514,6 +4801,14 @@
         </ownedStyle>
         <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
       </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_IBJhEI3CEeyJ0bON1VCj7g" name="timeStamp : String" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//Tooz/DistantEntity/timeStamp"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//Tooz/DistantEntity/timeStamp"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_Ix8r7Y3CEeyJ0bON1VCj7g" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
     </ownedDiagramElements>
     <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
     <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_27VLEIsNEeyJ0bON1VCj7g"/>
@@ -4522,4 +4817,369 @@
     <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
     <target xmi:type="ecore:EPackage" href="iPos_Datamodel.ecore#//Tooz"/>
   </diagram:DSemanticDiagram>
+  <diagram:DSemanticDiagram uid="_KUAgsI_UEeyJ0bON1VCj7g">
+    <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_KUCV4Y_UEeyJ0bON1VCj7g" source="GMF_DIAGRAMS">
+      <data xmi:type="notation:Diagram" xmi:id="_KUCV4o_UEeyJ0bON1VCj7g" type="Sirius" element="_KUAgsI_UEeyJ0bON1VCj7g" measurementUnit="Pixel">
+        <children xmi:type="notation:Node" xmi:id="_L1KxcI_UEeyJ0bON1VCj7g" type="2003" element="_L0y-AI_UEeyJ0bON1VCj7g">
+          <children xmi:type="notation:Node" xmi:id="_L1Kxc4_UEeyJ0bON1VCj7g" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_L1KxdI_UEeyJ0bON1VCj7g" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_Ob6d0JrjEeybDM53IXNodQ" type="3010" element="_OblGoJrjEeybDM53IXNodQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_Ob6d0ZrjEeybDM53IXNodQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Ob6d0prjEeybDM53IXNodQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_TepX4JrjEeybDM53IXNodQ" type="3010" element="_TeTZoJrjEeybDM53IXNodQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_TepX4ZrjEeybDM53IXNodQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_TepX4prjEeybDM53IXNodQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_fsVcwJrjEeybDM53IXNodQ" type="3010" element="_fsAsoJrjEeybDM53IXNodQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_fsVcwZrjEeybDM53IXNodQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_fsVcwprjEeybDM53IXNodQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_OSwHgJrzEeybDM53IXNodQ" type="3010" element="_OSSNcJrzEeybDM53IXNodQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_OSwHgZrzEeybDM53IXNodQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_OSwHgprzEeybDM53IXNodQ"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_L1KxdY_UEeyJ0bON1VCj7g"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_L1Kxdo_UEeyJ0bON1VCj7g"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_L1KxcY_UEeyJ0bON1VCj7g" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_L1Kxco_UEeyJ0bON1VCj7g" x="258" y="138" width="171" height="105"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_iwcG8JrjEeybDM53IXNodQ" type="2003" element="_iwGvwJrjEeybDM53IXNodQ">
+          <children xmi:type="notation:Node" xmi:id="_iwcG85rjEeybDM53IXNodQ" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_iwcuAJrjEeybDM53IXNodQ" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_pPlUoJrjEeybDM53IXNodQ" type="3010" element="_pPRyoJrjEeybDM53IXNodQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_pPl7sJrjEeybDM53IXNodQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_pPl7sZrjEeybDM53IXNodQ"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_iwcuAZrjEeybDM53IXNodQ"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_iwcuAprjEeybDM53IXNodQ"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_iwcG8ZrjEeybDM53IXNodQ" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iwcG8prjEeybDM53IXNodQ" x="555" y="135" width="120" height="100"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_yQrhsJrjEeybDM53IXNodQ" type="2003" element="_yQXYoJrjEeybDM53IXNodQ">
+          <children xmi:type="notation:Node" xmi:id="_yQrhs5rjEeybDM53IXNodQ" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_yQrhtJrjEeybDM53IXNodQ" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_wkJ5AJrkEeybDM53IXNodQ" type="3010" element="_wj2-EJrkEeybDM53IXNodQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_wkJ5AZrkEeybDM53IXNodQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_wkJ5AprkEeybDM53IXNodQ"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_yQrhtZrjEeybDM53IXNodQ"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_yQrhtprjEeybDM53IXNodQ"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_yQrhsZrjEeybDM53IXNodQ" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yQrhsprjEeybDM53IXNodQ" x="570" y="273" width="120" height="75"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_8kO1IJrjEeybDM53IXNodQ" type="2003" element="_8j7TIJrjEeybDM53IXNodQ">
+          <children xmi:type="notation:Node" xmi:id="_8kO1I5rjEeybDM53IXNodQ" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_8kPcMJrjEeybDM53IXNodQ" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_FHQmIJrkEeybDM53IXNodQ" type="3010" element="_FG9rMJrkEeybDM53IXNodQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_FHQmIZrkEeybDM53IXNodQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_FHQmIprkEeybDM53IXNodQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_Hfu5YJrkEeybDM53IXNodQ" type="3010" element="_HfdzoJrkEeybDM53IXNodQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_Hfu5YZrkEeybDM53IXNodQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Hfu5YprkEeybDM53IXNodQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_JA5xMJrkEeybDM53IXNodQ" type="3010" element="_JAloIJrkEeybDM53IXNodQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_JA5xMZrkEeybDM53IXNodQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_JA5xMprkEeybDM53IXNodQ"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_If9jIJ_NEeyjYoAVD5IwbQ" type="3010" element="_Ic5BAJ_NEeyjYoAVD5IwbQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_If9jIZ_NEeyjYoAVD5IwbQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_If9jIp_NEeyjYoAVD5IwbQ"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_8kPcMZrjEeybDM53IXNodQ"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_8kPcMprjEeybDM53IXNodQ"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_8kO1IZrjEeybDM53IXNodQ" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8kO1IprjEeybDM53IXNodQ" x="-24" y="150" width="162" height="100"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_WP47AJrkEeybDM53IXNodQ" type="2003" element="_WPmnIJrkEeybDM53IXNodQ">
+          <children xmi:type="notation:Node" xmi:id="_WP47A5rkEeybDM53IXNodQ" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_WP5iEJrkEeybDM53IXNodQ" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_o6EiMJrkEeybDM53IXNodQ" type="3010" element="_o50qkJrkEeybDM53IXNodQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_o6EiMZrkEeybDM53IXNodQ" fontColor="2697711" fontName="Segoe UI" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_o6EiMprkEeybDM53IXNodQ"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_WP5iEZrkEeybDM53IXNodQ"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_WP5iEprkEeybDM53IXNodQ"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_WP47AZrkEeybDM53IXNodQ" fontName="Segoe UI" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WP47AprkEeybDM53IXNodQ" x="-24" y="276" width="159" height="69"/>
+        </children>
+        <styles xmi:type="notation:DiagramStyle" xmi:id="_KUCV44_UEeyJ0bON1VCj7g"/>
+        <edges xmi:type="notation:Edge" xmi:id="_k8XzAJrjEeybDM53IXNodQ" type="4001" element="_k7x9IJrjEeybDM53IXNodQ" source="_L1KxcI_UEeyJ0bON1VCj7g" target="_iwcG8JrjEeybDM53IXNodQ">
+          <children xmi:type="notation:Node" xmi:id="_k9HZ4JrjEeybDM53IXNodQ" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k9HZ4ZrjEeybDM53IXNodQ" x="14" y="-14"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_k9IA8JrjEeybDM53IXNodQ" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k9IA8ZrjEeybDM53IXNodQ" x="-6" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_k9IoAJrjEeybDM53IXNodQ" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k9IoAZrjEeybDM53IXNodQ" x="-83" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_k8XzAZrjEeybDM53IXNodQ" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_k8XzAprjEeybDM53IXNodQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_k8XzA5rjEeybDM53IXNodQ" points="[0, -3, -187, 6]$[128, -3, -59, 6]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_k9MSYJrjEeybDM53IXNodQ" id="(1.0,0.05825242718446602)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_k9MSYZrjEeybDM53IXNodQ" id="(0.5,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_zdy1EJrjEeybDM53IXNodQ" type="4001" element="_zdX-VprjEeybDM53IXNodQ" source="_L1KxcI_UEeyJ0bON1VCj7g" target="_yQrhsJrjEeybDM53IXNodQ">
+          <children xmi:type="notation:Node" xmi:id="_zdy1FJrjEeybDM53IXNodQ" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zdy1FZrjEeybDM53IXNodQ" x="121" y="-16"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_zdy1FprjEeybDM53IXNodQ" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zdy1F5rjEeybDM53IXNodQ" x="68" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_zdy1GJrjEeybDM53IXNodQ" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zdy1GZrjEeybDM53IXNodQ" x="16" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_zdy1EZrjEeybDM53IXNodQ" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_zdy1EprjEeybDM53IXNodQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zdy1E5rjEeybDM53IXNodQ" points="[-84, -53, -286, -44]$[-84, 39, -286, 48]$[143, 39, -59, 48]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zdzcIJrjEeybDM53IXNodQ" id="(1.0,1.3980582524271845)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zdzcIZrjEeybDM53IXNodQ" id="(0.5,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_-xQGUJrjEeybDM53IXNodQ" type="4001" element="_-wqQdprjEeybDM53IXNodQ" source="_L1KxcI_UEeyJ0bON1VCj7g" target="_8kO1IJrjEeybDM53IXNodQ">
+          <children xmi:type="notation:Node" xmi:id="_-xQGVJrjEeybDM53IXNodQ" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-xQGVZrjEeybDM53IXNodQ" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_-xQGVprjEeybDM53IXNodQ" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-xQGV5rjEeybDM53IXNodQ" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_-xQGWJrjEeybDM53IXNodQ" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-xQGWZrjEeybDM53IXNodQ" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_-xQGUZrjEeybDM53IXNodQ" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_-xQGUprjEeybDM53IXNodQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-xQGU5rjEeybDM53IXNodQ" points="[0, 0, 122, 0]$[-122, 0, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-xQGWprjEeybDM53IXNodQ" id="(0.0,0.17475728155339806)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-xQGW5rjEeybDM53IXNodQ" id="(1.0,0.061224489795918366)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_XRb3kJrkEeybDM53IXNodQ" type="4001" element="_XQ9WdprkEeybDM53IXNodQ" source="_L1KxcI_UEeyJ0bON1VCj7g" target="_WP47AJrkEeybDM53IXNodQ">
+          <children xmi:type="notation:Node" xmi:id="_XRb3lJrkEeybDM53IXNodQ" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XRb3lZrkEeybDM53IXNodQ" x="90" y="12"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_XRb3lprkEeybDM53IXNodQ" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XRb3l5rkEeybDM53IXNodQ" x="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_XRb3mJrkEeybDM53IXNodQ" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XRb3mZrkEeybDM53IXNodQ" x="-80" y="-10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_XRb3kZrkEeybDM53IXNodQ" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_XRb3kprkEeybDM53IXNodQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XRb3k5rkEeybDM53IXNodQ" points="[30, 79, 242, -47]$[30, 176, 242, 50]$[-164, 176, 48, 50]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XRceoJrkEeybDM53IXNodQ" id="(0.0,0.11650485436893204)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XRceoZrkEeybDM53IXNodQ" id="(0.445859872611465,0.0)"/>
+        </edges>
+      </data>
+    </ownedAnnotationEntries>
+    <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_KUDkAI_UEeyJ0bON1VCj7g" source="DANNOTATION_CUSTOMIZATION_KEY">
+      <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_KUDkAY_UEeyJ0bON1VCj7g"/>
+    </ownedAnnotationEntries>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_L0y-AI_UEeyJ0bON1VCj7g" name="AgvState" tooltipText="" outgoingEdges="_k7x9IJrjEeybDM53IXNodQ _zdX-VprjEeybDM53IXNodQ _-wqQdprjEeybDM53IXNodQ _XQ9WdprkEeybDM53IXNodQ" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//VDA5050/AgvState"/>
+      <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//VDA5050/AgvState"/>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_PlHuUZrzEeybDM53IXNodQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_OblGoJrjEeybDM53IXNodQ" name="timeStamp : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvState/timeStamp"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvState/timeStamp"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_PfGZJZrjEeybDM53IXNodQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_TeTZoJrjEeybDM53IXNodQ" name="serialNumber : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvState/serialNumber"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvState/serialNumber"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_U_ZY9ZrjEeybDM53IXNodQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_fsAsoJrjEeybDM53IXNodQ" name="lastNodeId : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvState/lastNodeId"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvState/lastNodeId"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_gyJORprjEeybDM53IXNodQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_OSSNcJrzEeybDM53IXNodQ" name="manufacturer : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvState/manufacturer"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvState/manufacturer"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_PlHuX5rzEeybDM53IXNodQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_iwGvwJrjEeybDM53IXNodQ" name="BatteryState" tooltipText="" incomingEdges="_k7x9IJrjEeybDM53IXNodQ" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//VDA5050/BatteryState"/>
+      <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//VDA5050/BatteryState"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_qY4fA5rjEeybDM53IXNodQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_pPRyoJrjEeybDM53IXNodQ" name="batteryCharge : EFloat = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/BatteryState/batteryCharge"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/BatteryState/batteryCharge"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_qY5GFJrjEeybDM53IXNodQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_k7x9IJrjEeybDM53IXNodQ" name="[0..1] batteryState" sourceNode="_L0y-AI_UEeyJ0bON1VCj7g" targetNode="_iwGvwJrjEeybDM53IXNodQ">
+      <target xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//VDA5050/AgvState/batteryState"/>
+      <semanticElements xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//VDA5050/AgvState/batteryState"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_k7zyUJrjEeybDM53IXNodQ" routingStyle="manhattan" strokeColor="0,0,0">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_k7zyUprjEeybDM53IXNodQ" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_k7zyUZrjEeybDM53IXNodQ" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_yQXYoJrjEeybDM53IXNodQ" name="Error" tooltipText="" incomingEdges="_zdX-VprjEeybDM53IXNodQ" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//VDA5050/Error"/>
+      <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//VDA5050/Error"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_xdtXNZrkEeybDM53IXNodQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_wj2-EJrkEeybDM53IXNodQ" name="errorType : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/Error/errorType"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/Error/errorType"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_xdt-QprkEeybDM53IXNodQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_zdX-VprjEeybDM53IXNodQ" name="[0..*] errors" sourceNode="_L0y-AI_UEeyJ0bON1VCj7g" targetNode="_yQXYoJrjEeybDM53IXNodQ">
+      <target xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//VDA5050/AgvState/errors"/>
+      <semanticElements xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//VDA5050/AgvState/errors"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_zdYlYJrjEeybDM53IXNodQ" routingStyle="manhattan" strokeColor="0,0,0">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_zdYlYprjEeybDM53IXNodQ" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_zdYlYZrjEeybDM53IXNodQ" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_8j7TIJrjEeybDM53IXNodQ" name="AgvPosition" tooltipText="" incomingEdges="_-wqQdprjEeybDM53IXNodQ" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//VDA5050/AgvPosition"/>
+      <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//VDA5050/AgvPosition"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_KdC655_NEeyjYoAVD5IwbQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_FG9rMJrkEeybDM53IXNodQ" name="x : EFloat = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvPosition/x"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvPosition/x"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_GNywYprkEeybDM53IXNodQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_HfdzoJrkEeybDM53IXNodQ" name="y : EFloat = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvPosition/y"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvPosition/y"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_IgADk5rkEeybDM53IXNodQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_JAloIJrkEeybDM53IXNodQ" name="theta : EFloat = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvPosition/theta"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvPosition/theta"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_KO84wJrkEeybDM53IXNodQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_Ic5BAJ_NEeyjYoAVD5IwbQ" name="mapId : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvPosition/mapId"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/AgvPosition/mapId"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_KdEwFJ_NEeyjYoAVD5IwbQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_-wqQdprjEeybDM53IXNodQ" name="[0..1] agvposition" sourceNode="_L0y-AI_UEeyJ0bON1VCj7g" targetNode="_8j7TIJrjEeybDM53IXNodQ">
+      <target xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//VDA5050/AgvState/agvposition"/>
+      <semanticElements xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//VDA5050/AgvState/agvposition"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_-wrekJrjEeybDM53IXNodQ" routingStyle="manhattan" strokeColor="0,0,0">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_-wrekprjEeybDM53IXNodQ" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_-wrekZrjEeybDM53IXNodQ" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_WPmnIJrkEeybDM53IXNodQ" name="Load" tooltipText="" incomingEdges="_XQ9WdprkEeybDM53IXNodQ" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//VDA5050/Load"/>
+      <semanticElements xmi:type="ecore:EClass" href="iPos_Datamodel.ecore#//VDA5050/Load"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_rmMKOZrkEeybDM53IXNodQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_o50qkJrkEeybDM53IXNodQ" name="loadId : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/Load/loadId"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="iPos_Datamodel.ecore#//VDA5050/Load/loadId"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_rmMxSZrkEeybDM53IXNodQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_XQ9WdprkEeybDM53IXNodQ" name="[0..*] loads" sourceNode="_L0y-AI_UEeyJ0bON1VCj7g" targetNode="_WPmnIJrkEeybDM53IXNodQ">
+      <target xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//VDA5050/AgvState/loads"/>
+      <semanticElements xmi:type="ecore:EReference" href="iPos_Datamodel.ecore#//VDA5050/AgvState/loads"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_XQ99gJrkEeybDM53IXNodQ" routingStyle="manhattan" strokeColor="0,0,0">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_XQ99gprkEeybDM53IXNodQ" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_XQ99gZrkEeybDM53IXNodQ" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+    <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_KUAgsY_UEeyJ0bON1VCj7g"/>
+    <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+    <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+    <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+    <target xmi:type="ecore:EPackage" href="iPos_Datamodel.ecore#//VDA5050"/>
+  </diagram:DSemanticDiagram>
 </xmi:XMI>
diff --git a/emf_datamodel/model/iPos_Datamodel.ecore b/emf_datamodel/model/iPos_Datamodel.ecore
index 3d45ccb..4b05f36 100644
--- a/emf_datamodel/model/iPos_Datamodel.ecore
+++ b/emf_datamodel/model/iPos_Datamodel.ecore
@@ -241,6 +241,15 @@
         eType="#//PositionEvent"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="trackingTaskId" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="MessageReceivedEvent">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="protocolName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="serializedMsg" eType="#//ByteArray"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="agentId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="extractedAttributes" eType="#//ListOfStringMaps"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="timestamp" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="ByteArray" instanceClassName="java.lang.byte[]"/>
+  <eClassifiers xsi:type="ecore:EDataType" name="ListOfStringMaps" instanceClassName="java.util.LinkedList&lt;java.util.HashMap&lt;java.lang.String, java.lang.String>>"/>
   <eSubpackages name="OFBiz" nsURI="ofbiz" nsPrefix="ofbiz">
     <eClassifiers xsi:type="ecore:EClass" name="Picklist">
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="picklistId" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
@@ -362,6 +371,22 @@
         </eGenericType>
       </eStructuralFeatures>
     </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="IposMsgRcvEvent">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="protocolName" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="serializedMsg" eType="#//ByteArray"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="lastPosUpdate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="lastKnownPosition" eType="#//Position"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="lastKnownOrientation"
+          eType="#//Orientation"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="lastKnownZonedescriptors"
+          upperBound="-1" eType="#//ZoneDescriptor"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="agentId" lowerBound="1"
+          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="extractedAttributes"
+          eType="#//ListOfStringMaps"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="timestamp" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eClassifiers>
   </eSubpackages>
   <eSubpackages name="Tooz" nsURI="tooz" nsPrefix="tooz">
     <eClassifiers xsi:type="ecore:EClass" name="MonitoringTarget">
@@ -379,6 +404,36 @@
           <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
         </eGenericType>
       </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="timeStamp" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="VDA5050" nsURI="vda5050" nsPrefix="vda5050">
+    <eClassifiers xsi:type="ecore:EClass" name="AgvState">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="timeStamp" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="serialNumber" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="lastNodeId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="batteryState" eType="#//VDA5050/BatteryState"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="errors" upperBound="-1"
+          eType="#//VDA5050/Error"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="agvposition" eType="#//VDA5050/AgvPosition"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="loads" upperBound="-1"
+          eType="#//VDA5050/Load"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="manufacturer" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="BatteryState">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="batteryCharge" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Error">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="errorType" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="AgvPosition">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="x" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="y" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="theta" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="mapId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Load">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="loadId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     </eClassifiers>
   </eSubpackages>
 </ecore:EPackage>
diff --git a/emf_datamodel/model/iPos_Datamodel.genmodel b/emf_datamodel/model/iPos_Datamodel.genmodel
index 9cc8af5..f526d0d 100644
--- a/emf_datamodel/model/iPos_Datamodel.genmodel
+++ b/emf_datamodel/model/iPos_Datamodel.genmodel
@@ -15,6 +15,8 @@
     <genDataTypes ecoreDataType="iPos_Datamodel.ecore#//FloatArray3d"/>
     <genDataTypes ecoreDataType="iPos_Datamodel.ecore#//BooleanList"/>
     <genDataTypes ecoreDataType="iPos_Datamodel.ecore#//FloatArray"/>
+    <genDataTypes ecoreDataType="iPos_Datamodel.ecore#//ByteArray"/>
+    <genDataTypes ecoreDataType="iPos_Datamodel.ecore#//ListOfStringMaps"/>
     <genClasses ecoreClass="iPos_Datamodel.ecore#//Agent">
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference iPos_Datamodel.ecore#//Agent/lObject"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//Agent/agentType"/>
@@ -174,6 +176,13 @@
       <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference iPos_Datamodel.ecore#//DataStorageQueryResponse/positionEvents"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//DataStorageQueryResponse/trackingTaskId"/>
     </genClasses>
+    <genClasses ecoreClass="iPos_Datamodel.ecore#//MessageReceivedEvent">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//MessageReceivedEvent/protocolName"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//MessageReceivedEvent/serializedMsg"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//MessageReceivedEvent/agentId"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//MessageReceivedEvent/extractedAttributes"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//MessageReceivedEvent/timestamp"/>
+    </genClasses>
     <nestedGenPackages prefix="OFBiz" disposableProviderFactory="true" ecorePackage="iPos_Datamodel.ecore#//OFBiz">
       <genClasses ecoreClass="iPos_Datamodel.ecore#//OFBiz/Picklist">
         <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//OFBiz/Picklist/picklistId"/>
@@ -270,6 +279,20 @@
       <genClasses ecoreClass="iPos_Datamodel.ecore#//IPosDevKit/IPosOtherBeaconEvent">
         <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//IPosDevKit/IPosOtherBeaconEvent/data"/>
       </genClasses>
+      <genClasses ecoreClass="iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/protocolName"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/serializedMsg"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/lastPosUpdate"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/lastKnownPosition"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/lastKnownOrientation"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/lastKnownZonedescriptors"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/agentId"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/extractedAttributes"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//IPosDevKit/IposMsgRcvEvent/timestamp"/>
+      </genClasses>
     </nestedGenPackages>
     <nestedGenPackages prefix="Tooz" disposableProviderFactory="true" ecorePackage="iPos_Datamodel.ecore#//Tooz">
       <genClasses ecoreClass="iPos_Datamodel.ecore#//Tooz/MonitoringTarget">
@@ -282,6 +305,38 @@
         <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//Tooz/DistantEntity/distance"/>
         <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//Tooz/DistantEntity/proximityIndex"/>
         <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//Tooz/DistantEntity/entityData"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//Tooz/DistantEntity/timeStamp"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages prefix="VDA5050" disposableProviderFactory="true" ecorePackage="iPos_Datamodel.ecore#//VDA5050">
+      <genClasses ecoreClass="iPos_Datamodel.ecore#//VDA5050/AgvState">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//VDA5050/AgvState/timeStamp"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//VDA5050/AgvState/serialNumber"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//VDA5050/AgvState/lastNodeId"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference iPos_Datamodel.ecore#//VDA5050/AgvState/batteryState"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference iPos_Datamodel.ecore#//VDA5050/AgvState/errors"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference iPos_Datamodel.ecore#//VDA5050/AgvState/agvposition"/>
+        <genFeatures notify="false" createChild="false" propertySortChoices="true"
+            ecoreFeature="ecore:EReference iPos_Datamodel.ecore#//VDA5050/AgvState/loads"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//VDA5050/AgvState/manufacturer"/>
+      </genClasses>
+      <genClasses ecoreClass="iPos_Datamodel.ecore#//VDA5050/BatteryState">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//VDA5050/BatteryState/batteryCharge"/>
+      </genClasses>
+      <genClasses ecoreClass="iPos_Datamodel.ecore#//VDA5050/Error">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//VDA5050/Error/errorType"/>
+      </genClasses>
+      <genClasses ecoreClass="iPos_Datamodel.ecore#//VDA5050/AgvPosition">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//VDA5050/AgvPosition/x"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//VDA5050/AgvPosition/y"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//VDA5050/AgvPosition/theta"/>
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//VDA5050/AgvPosition/mapId"/>
+      </genClasses>
+      <genClasses ecoreClass="iPos_Datamodel.ecore#//VDA5050/Load">
+        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute iPos_Datamodel.ecore#//VDA5050/Load/loadId"/>
       </genClasses>
     </nestedGenPackages>
   </genPackages>
diff --git a/init_Industrierobotik.txt b/init_Industrierobotik.txt
index 42f77f3..ebec6ac 100644
--- a/init_Industrierobotik.txt
+++ b/init_Industrierobotik.txt
@@ -1,5 +1,5 @@
 {"frames": [{"id": "cobot1_door_zone", "space": [{"position": {"refSystemId": "ROOT", "point": {"x": 2.0,"y": 0.0,"z": 0.0}, "accuracy": 0.0}, "orientation": {"x": 1.0,"y": 0.5,"z": 1.0, "w": 1.5}, "x": 6.0, "y": 4.0, "z":6.0}]}, {"id": "cobot1_window_zone", "space": [{"position": {"refSystemId": "ROOT", "point": {"x": 2.0,"y": 4.0,"z": 0.0}, "accuracy": 0.0}, "orientation": {"x": 1.0,"y": 0.5,"z": 1.0, "w": 1.5}, "x": 6.0, "y": 4.0, "z":6.0}]}, {"id": "robolab_east", "space": [{"position": {"refSystemId": "ROOT", "point": {"x": 4.0,"y": 2.0,"z": 0.0}, "accuracy": 0.0}, "orientation": {"x": 1.0,"y": 0.5,"z": 1.0, "w": 1.5}, "x": 4.0, "y": 4.0, "z":4.0}]}, {"id": "robolab_west", "space": [{"position": {"refSystemId": "ROOT", "point": {"x": -4.0,"y": 2.0,"z": 0.0}, "accuracy": 0.0}, "orientation": {"x": 1.0,"y": 0.5,"z": 1.0, "w": 1.5}, "x": 8.0, "y": 10.0, "z":6.0}]}, {"id": "robolab_armarea", "space": [{"position": {"refSystemId": "CETI_ROBOTARM_CELL", "point": {"x": 0.0,"y": 0.0,"z": 0.0}, "accuracy": 0.0}, "orientation": {"x": 1.0,"y": 0.5,"z": 1.0, "w": 1.5}, "x": 8.0, "y": 10.0, "z":6.0}]} ]}
 {"refSystems": [{"id": "ROOT"}, {"id": "CETI_ROOT", "position": {"refSystemId": "ROOT", "point": {"x": 0.5,"y": 0.75,"z": 1.0}, "accuracy": 1.0}, "orientation": {"x": 0.7071067811865477,"y": 0.0,"z": 0.0, "w": 0.7071067811865477}}, {"id": "CETI_ROBOLAB", "position": {"refSystemId": "CETI_ROOT", "point": {"x": 0.2,"y": 0.2,"z": 0.2}, "accuracy": 1.0}, "orientation": {"x": 0.4082481001180531,"y": 0.4082481001180531,"z": 0.4082481001180531, "w": 0.7071067811865477}}, {"id": "CETI_OFFICE", "position": {"refSystemId": "CETI_ROOT", "point": {"x": 2.0,"y": 2.0,"z": 0.0}, "accuracy": 1.0}, "orientation": {"x": 0.0,"y": 0.0,"z": 0.0, "w": 0.0}}, {"id": "TL_TESTHALL", "position": {"refSystemId": "ROOT", "point": {"x": 40.0,"y": 60.0,"z": 0.0}, "accuracy": 1.0}, "orientation": {"x": 0.0,"y": 0.0,"z": 0.21643961393810285, "w": 0.9762960071199334}}, {"id": "CETI_ROBOTARM_CELL", "position": {"refSystemId": "CETI_ROBOLAB", "point": {"x": 0.0,"y": 1.2,"z": 2.2}, "accuracy": 1.0}, "orientation": {"x": 0.2705992818596786,"y": 0.2705992818596786,"z": 0.0, "w": 0.9238795325112868}}]}
-{"objectConfigs": [{"agentId": "Employee_1", "sensorId": "UWB_2", "agentType": "HUMAN", "sensorType": "UWB"}, {"agentId": "turtlebot", "sensorId": "UWB_1", "agentType": "ROBOT", "sensorType": "UWB"}, {"agentId": "turtlebot", "sensorId": "98:CD:AC:26:2D:18", "agentType": "ROBOT", "sensorType": "RFID_SCANNER"}, {"agentId": "turtlebot", "sensorId": "handy1", "agentType": "ROBOT", "sensorType": "IMU"}, {"agentId": "tooz_employee", "sensorId": "tooz_employee_uwb", "agentType": "HUMAN", "sensorType": "UWB"}]}
+{"objectConfigs": [{"agentId": "Employee_1", "sensorId": "UWB_2", "agentType": "HUMAN", "sensorType": "UWB"}, {"agentId": "turtlebot", "sensorId": "UWB_1", "agentType": "ROBOT", "sensorType": "UWB"}, {"agentId": "turtlebot", "sensorId": "98:CD:AC:26:2D:18", "agentType": "ROBOT", "sensorType": "RFID_SCANNER"}, {"agentId": "turtlebot", "sensorId": "handy1", "agentType": "ROBOT", "sensorType": "IMU"}, {"agentId": "tooz_employee", "sensorId": "tooz_employee_uwb", "agentType": "HUMAN", "sensorType": "UWB"}, {"agentId": "TL_TUD-Virtual_AGV", "sensorId": "TL_TUD-Virtual_AGV", "agentType": "Robot", "sensorType": "virtual"}]}
 {"pois": [{"id": "UWB_BEACON_1", "description": "Beacon_Position", "data": {"type" : "UWB"}, "position": {"refSystemId": "ROOT", "point": {"x": 3.1,"y": 0.5,"z": 0.0}, "accuracy": 1.0}, "orientation": {"x": 0.0,"y": 0.0,"z": 0.0, "w": 0.0} }, {"id": "UWB_BEACON_2", "description": "Beacon_Position", "data": {"type" : "UWB"}, "position": {"refSystemId": "ROOT", "point": {"x": -0.3,"y": 4.5,"z": 0.0}, "accuracy": 1.0}, "orientation": {"x": 0.0,"y": 0.0,"z": 0.0, "w": 0.0}}, {"id": "83221710", "description": "RFID_TAG", "data": {"type" : "NFC"}, "position": {"refSystemId": "ROOT", "point": {"x": 2.1,"y": 0.4,"z": 0.5}, "accuracy": 0.1}, "orientation": {"x": 0.0,"y": 0.0,"z": 0.0, "w": 0.0} }, {"id": "31762128", "description": "RFID_TAG", "data": {"type" : "NFC"}, "position": {"refSystemId": "ROOT", "point": {"x": 2.2,"y": 3.4,"z": 0.5}, "accuracy": 0.1}, "orientation": {"x": 0.0,"y": 0.0,"z": 0.0, "w": 0.0} }, {"id": "885", "description": "Beacon_Position", "data": {"type" : "UWB"}, "position": {"refSystemId": "ROOT", "point": {"x": 0,"y": 0,"z": 0.97}, "accuracy": 0.01}, "orientation": {"x": 0.0,"y": 0.0,"z": 0.0, "w": 0.0} }, {"id": "2934", "description": "Beacon_Position", "data": {"type" : "UWB"}, "position": {"refSystemId": "ROOT", "point": {"x": 4.24,"y": 1.33,"z": 1.0}, "accuracy": 0.01}, "orientation": {"x": 0.0,"y": 0.0,"z": 0.0, "w": 0.0} }, {"id": "3383", "description": "Beacon_Position", "data": {"type" : "UWB"}, "position": {"refSystemId": "ROOT", "point": {"x": 1.25,"y": 5.89,"z": 1.06}, "accuracy": 0.01}, "orientation": {"x": 0.0,"y": 0.0,"z": 0.0, "w": 0.0} }, {"id": "1107", "description": "Beacon_Position", "data": {"type" : "UWB"}, "position": {"refSystemId": "ROOT", "point": {"x": 4.24,"y": 5.83,"z": 1.05}, "accuracy": 0.01}, "orientation": {"x": 0.0,"y": 0.0,"z": 0.0, "w": 0.0} }]}
-{"monitoringRequests": [{"frameIds": ["cobot1_door_zone", "cobot1_window_zone"], "monitoringTaskId": "RobolabMonitoringCeti", "refSystemId": "CETI_ROBOTARM_CELL", "serializationType": "protobuf"}, {"frameIds": ["cobot1_door_zone", "cobot1_window_zone"], "monitoringTaskId": "RobolabMonitoringFrontend", "refSystemId": "ROOT", "serializationType": "json"}, {"id": ["tooz_employee_uwb"], "properties": ["distance"], "monitoringTaskId": "tooz_employee_distances", "refSystemId": "ROOT", "serializationType": "json"}]}
\ No newline at end of file
+{"monitoringRequests": [{"frameIds": ["cobot1_door_zone", "cobot1_window_zone"], "monitoringTaskId": "RobolabMonitoringCeti", "refSystemId": "CETI_ROBOTARM_CELL", "serializationType": "protobuf"}, {"frameIds": ["cobot1_door_zone", "cobot1_window_zone"], "monitoringTaskId": "RobolabMonitoringFrontend", "refSystemId": "ROOT", "serializationType": "json"}, {"properties" : ["VDA5050"], "monitoringTaskId" : "AGVViewer_VDA5050", "refSystemId": "ROOT", "serializationType": "json"}]}
\ No newline at end of file
diff --git a/src/main/java/ipos/project/CustomLoggingFilter.java b/src/main/java/ipos/project/CustomLoggingFilter.java
index 0e068d3..56b94ba 100644
--- a/src/main/java/ipos/project/CustomLoggingFilter.java
+++ b/src/main/java/ipos/project/CustomLoggingFilter.java
@@ -27,6 +27,8 @@ public class CustomLoggingFilter extends Filter<ILoggingEvent> {
         } else if (event.getMessage().contains("OP:")){
             return FilterReply.ACCEPT;
         } else if (event.getMessage().contains("TOOZ:")){
+            return FilterReply.DENY;
+        } else if (event.getMessage().contains("VDA5050:")){
             return FilterReply.ACCEPT;
         }else if (event.getMessage().contains("SHELL:")){
             return FilterReply.ACCEPT;
diff --git a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java
index 45b52f7..c17b57d 100644
--- a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java
+++ b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/SimpleSceneIntegration.java
@@ -5,6 +5,7 @@ import com.google.protobuf.InvalidProtocolBufferException;
 import ipos.models.SimpleScene;
 import ipos.project.DataModellntegration.SimpleSceneIntegration.api.MqttRequestHandler;
 import ipos.project.DataModellntegration.SimpleSceneIntegration.service.SimpleSceneTransformer;
+import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent;
 import ipos.project.devkit.utility.ExternalPubServiceImpl;
 import ipos.project.DataModellntegration.iPos_Datamodel.*;
 import ipos.project.DataModellntegration.iPos_Datamodel.impl.PositionEventImpl;
@@ -104,7 +105,6 @@ public class SimpleSceneIntegration {
             // PositionEvent posEvent_copy = duplicatePositionEvent(positionEvent);
             // scale_position_frontend_app(posEvent_copy, 15);
             SimpleScene.IposPositionEvent posEvent_proto = SimpleSceneTransformer.posEvent_internal2Proto(positionEvent, notificationType);
-            MqttMessage mqttMessage = mqttService.createMqttMsg(posEvent_proto, 0, false);
             logging_sdf(monitoringTaskId, serializationType, posEvent_proto);
             logging_indfro(positionEvent, monitoringTaskId, serializationType);
             logging_op(positionEvent, monitoringTaskId, serializationType);
@@ -115,6 +115,15 @@ public class SimpleSceneIntegration {
         }
     }
 
+    public static void receiveMessage(IposMsgRcvEvent iposMsgRcvEvent, String monitoringTaskId, String serializationType){
+        if (iposMsgRcvEvent != null){
+            SimpleScene.IposMsgRcvEvent iposMsgRcvEvent_proto = SimpleSceneTransformer.iposMsgRcvEvent_internal2proto(iposMsgRcvEvent);
+            OtherUtility.publishRespectingSerializationType(monitoringTaskId, serializationType, iposMsgRcvEvent_proto);
+        }else{
+            LOG.warn("Warning: SimpleScene: Received empty IposMsgRcvEvent");
+        }
+    }
+
     private static void logging_op(PositionEvent positionEvent, String monitoringTaskId, String serializationType) {
         LOG.info("OP: Publishing PositionEvent on topic " + monitoringTaskId + ": ZoneDescriptors:" + logZoneDescr(positionEvent.getZonedescriptors()) + "; serializationType: " + serializationType);
         LOG.info("OP:");
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 50e829f..dcf82d8 100644
--- a/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/SimpleSceneTransformer.java
+++ b/src/main/java/ipos/project/DataModellntegration/SimpleSceneIntegration/service/SimpleSceneTransformer.java
@@ -1,18 +1,20 @@
 package ipos.project.DataModellntegration.SimpleSceneIntegration.service;
 
+import com.google.protobuf.ByteString;
 import ipos.models.SimpleScene;
 import ipos.project.DataModellntegration.iPos_Datamodel.*;
 import com.google.protobuf.ProtocolStringList;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.DataStorageQueryRequest;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosDevKitFactory;
+import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.MonitoringRequest;
 import ipos.project.UseCaseController.PositionMonitoring;
+import ipos.project.devkit.utility.OtherUtility;
 import org.apache.logging.log4j.LogManager;
 import org.eclipse.emf.common.util.EList;
 
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 public class SimpleSceneTransformer {
     private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger();
@@ -73,8 +75,12 @@ public class SimpleSceneTransformer {
     }
 
     private static List<SimpleScene.IposZoneDescriptor.Builder> transformIntoProtoZoneDescriptorList(PositionEvent internalPosEvent) {
+        return transformIntoProtoZoneDescriptorList(internalPosEvent.getZonedescriptors());
+    }
+
+    private static List<SimpleScene.IposZoneDescriptor.Builder> transformIntoProtoZoneDescriptorList(EList<ZoneDescriptor> zoneDescriptors) {
         List<SimpleScene.IposZoneDescriptor.Builder> zoneDescriptorList = new LinkedList<>();
-        for ( ZoneDescriptor zoneDescriptor_internal : internalPosEvent.getZonedescriptors()){
+        for ( ZoneDescriptor zoneDescriptor_internal : zoneDescriptors){
             SimpleScene.IposZoneDescriptor.Builder protoIposZoneDescriptor = SimpleScene.IposZoneDescriptor.newBuilder();
             protoIposZoneDescriptor.setZoneId(zoneDescriptor_internal.getZoneId());
             protoIposZoneDescriptor.setNotificationType(zoneDescriptor_internal.getNotificationType());
@@ -102,23 +108,34 @@ public class SimpleSceneTransformer {
     }
 
     private static SimpleScene.IposSimpleOrientation.Builder transformIntoProtoOrientation(PositionEvent internalPosEvent) {
+        return transformIntoProtoOrientation((Quaternion) internalPosEvent.getPlacing().getOrientation());
+    }
+
+    private static SimpleScene.IposSimpleOrientation.Builder transformIntoProtoOrientation(Quaternion internalOrientation) {
         SimpleScene.IposSimpleOrientation.Builder protoOrientation = SimpleScene.IposSimpleOrientation.newBuilder();
-        Quaternion internalOrientation = (Quaternion) internalPosEvent.getPlacing().getOrientation();
         protoOrientation.setX(internalOrientation.getX()).setY(internalOrientation.getY()).setZ(internalOrientation.getZ()).setW(internalOrientation.getW());
         return protoOrientation;
     }
 
     private static SimpleScene.IposPosition.Builder transformIntoProtoIposPosition(PositionEvent internalPosEvent, SimpleScene.IposPoint3D.Builder protoPoint3D) {
-        float internalAccuracy = ((Gaussian) internalPosEvent.getPlacing().getPosition().getAccuracy()).getConfidenceInterval();
-        String internalRefSystemId = internalPosEvent.getPlacing().getPosition().getReferenceSystem().getId();
+        return transformIntoProtoIposPosition(internalPosEvent.getPlacing().getPosition(), protoPoint3D);
+    }
+
+    private static SimpleScene.IposPosition.Builder transformIntoProtoIposPosition(Position internalPos, SimpleScene.IposPoint3D.Builder protoPoint3D) {
+        float internalAccuracy = ((Gaussian) internalPos.getAccuracy()).getConfidenceInterval();
+        String internalRefSystemId = internalPos.getReferenceSystem().getId();
         SimpleScene.IposPosition.Builder protoIposPosition = SimpleScene.IposPosition.newBuilder();
         protoIposPosition.setAccuracy(internalAccuracy).setRefSystemId(internalRefSystemId).setPoint(protoPoint3D);
         return protoIposPosition;
     }
 
     private static SimpleScene.IposPoint3D.Builder transformIntoProtoPoint3D(PositionEvent internalPosEvent) {
+        return transformIntoProtoPoint3D(internalPosEvent.getPlacing().getPosition());
+    }
+
+    private static SimpleScene.IposPoint3D.Builder transformIntoProtoPoint3D(Position internalPos) {
         SimpleScene.IposPoint3D.Builder protoPoint3D = SimpleScene.IposPoint3D.newBuilder();
-        Point3D internalPoint3D = (Point3D) internalPosEvent.getPlacing().getPosition().getPoint();
+        Point3D internalPoint3D = (Point3D) internalPos.getPoint();
         protoPoint3D.setX(internalPoint3D.getX()).setY(internalPoint3D.getY()).setZ(internalPoint3D.getZ());
         return protoPoint3D;
     }
@@ -245,4 +262,40 @@ public class SimpleSceneTransformer {
         }
         return iposObjectList;
     }
+
+    public static SimpleScene.IposMsgRcvEvent iposMsgRcvEvent_internal2proto(IposMsgRcvEvent iposMsgRcvEvent_internal) {
+        SimpleScene.IposMsgRcvEvent.Builder iposMsgRcvEvent_proto = SimpleScene.IposMsgRcvEvent.newBuilder();
+        iposMsgRcvEvent_proto.setProtocolName(iposMsgRcvEvent_internal.getProtocolName());
+        iposMsgRcvEvent_proto.setSerializedMsg(ByteString.copyFrom(iposMsgRcvEvent_internal.getSerializedMsg()));
+        iposMsgRcvEvent_proto.setAgentId(iposMsgRcvEvent_internal.getAgentId());
+        iposMsgRcvEvent_proto.setLastPosUpdate(Optional.ofNullable(iposMsgRcvEvent_internal.getLastPosUpdate()).orElse(""));
+        List<SimpleScene.Attribute> attributeList = iposMsgRcvEvent_internal.getExtractedAttributes().stream().map(SimpleSceneTransformer::toAttribute_proto).collect(Collectors.toList());
+        attributeList.stream().forEach(attribute -> iposMsgRcvEvent_proto.addExtractedAttributes(attribute));
+        // iposMsgRcvEvent_proto.getExtractedAttributesList().addAll(attributeList);
+        iposMsgRcvEvent_proto.setTimestamp(Optional.ofNullable(iposMsgRcvEvent_internal.getTimestamp()).orElse(""));
+        if (null != iposMsgRcvEvent_internal.getLastKnownPosition()) {
+            SimpleScene.IposPoint3D.Builder protoPoint3D = transformIntoProtoPoint3D(iposMsgRcvEvent_internal.getLastKnownPosition());
+            iposMsgRcvEvent_proto.setLastKnownPosition(transformIntoProtoIposPosition(iposMsgRcvEvent_internal.getLastKnownPosition(), protoPoint3D));
+        }
+        if (null != iposMsgRcvEvent_internal.getLastKnownOrientation()) iposMsgRcvEvent_proto.setLastKnownOrientation(transformIntoProtoOrientation((Quaternion) iposMsgRcvEvent_internal.getLastKnownOrientation()));
+        List<SimpleScene.IposZoneDescriptor> zoneDescriptors_proto = extractZoneDescriptors(iposMsgRcvEvent_internal);
+        zoneDescriptors_proto.stream().forEach(zoneDescriptor -> iposMsgRcvEvent_proto.addLastKnownZoneDescriptors(zoneDescriptor));
+        //iposMsgRcvEvent_proto.getLastKnownZoneDescriptorsList().addAll(extractZoneDescriptors(iposMsgRcvEvent_internal));
+        return iposMsgRcvEvent_proto.build();
+    }
+
+    private static List<SimpleScene.IposZoneDescriptor> extractZoneDescriptors(IposMsgRcvEvent iposMsgRcvEvent_internal) {
+        List<SimpleScene.IposZoneDescriptor.Builder> zoneDescriptorBuilders = transformIntoProtoZoneDescriptorList(iposMsgRcvEvent_internal.getLastKnownZonedescriptors());
+        List<SimpleScene.IposZoneDescriptor> zoneDescriptors = zoneDescriptorBuilders.stream().map(zoneDescriptorBuilder -> zoneDescriptorBuilder.build()).collect(Collectors.toList());
+        return zoneDescriptors;
+    }
+
+    private static SimpleScene.Attribute toAttribute_proto(HashMap<String, String> stringStringHashMap) {
+        SimpleScene.Attribute.Builder attribute_proto = SimpleScene.Attribute.newBuilder();
+        attribute_proto.setName(stringStringHashMap.get(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_NAME));
+        attribute_proto.setType(stringStringHashMap.get(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_TYPE));
+        attribute_proto.setData(stringStringHashMap.get(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_VALUE));
+        return attribute_proto.build();
+    }
+
 }
diff --git a/src/main/java/ipos/project/DataModellntegration/VDA5050Processor/VDA5050Processor.java b/src/main/java/ipos/project/DataModellntegration/VDA5050Processor/VDA5050Processor.java
new file mode 100644
index 0000000..703e334
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/VDA5050Processor/VDA5050Processor.java
@@ -0,0 +1,44 @@
+package ipos.project.DataModellntegration.VDA5050Processor;
+
+import com.google.protobuf.InvalidProtocolBufferException;
+import ipos.models.GenericSensor;
+import ipos.models.VDA5050;
+import ipos.project.DataModellntegration.VDA5050Processor.api.MqttRequestHandler;
+import ipos.project.SensorValueIntegration.api.MqttPositionHandler;
+import ipos.project.devkit.utility.OtherUtility;
+import ipos.project.devkit.utility.ProtoJsonMap;
+import org.apache.logging.log4j.LogManager;
+
+import java.io.File;
+import java.util.Scanner;
+
+import static ipos.project.devkit.utility.OtherUtility.waitUntilUserRequestsReadingNextLine;
+
+public class VDA5050Processor {
+    private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger();
+
+    public static final String TOPIC_AGVSTATE = "VDA5050_AgvState";
+    public static final String PROTOCOL_NAME_VDA5050 = "VDA5050";
+    public static final String AGV_ID_CONNECTOR_CHARACTER = "-";
+    public static final Object TYPE_STRING = "string";
+    public static final String TYPE_FLOAT = "float";
+    public static final String TYPE_LIST_OF_INT = "listOfInt";
+    public static final CharSequence DELIMITER_CSV = ",";
+
+    public static void processTestData(String path_to_test_data_file){
+        File testDataFile = new File(path_to_test_data_file);
+        Scanner scanner = new Scanner(System.in);
+        try {
+            for (String line : OtherUtility.readLines(testDataFile)) {
+                VDA5050.AgvState agvState_proto = ProtoJsonMap.fromJson(line, VDA5050.AgvState.class);
+                OtherUtility.waitUntilUserRequestsReadingNextLine(scanner);
+                MqttRequestHandler.processAgvState(agvState_proto);
+            }
+        }catch (InvalidProtocolBufferException e) {
+            LOG.error("Error trying to read JSON into protobuf-objects: ");
+            e.printStackTrace();
+        }
+    }
+
+
+}
diff --git a/src/main/java/ipos/project/DataModellntegration/VDA5050Processor/api/MqttRequestHandler.java b/src/main/java/ipos/project/DataModellntegration/VDA5050Processor/api/MqttRequestHandler.java
new file mode 100644
index 0000000..1abe06f
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/VDA5050Processor/api/MqttRequestHandler.java
@@ -0,0 +1,282 @@
+package ipos.project.DataModellntegration.VDA5050Processor.api;
+
+import com.google.protobuf.InvalidProtocolBufferException;
+import ipos.models.SimpleScene;
+import ipos.models.SimpleScene.IposMonitoringRequest;
+import ipos.models.VDA5050;
+import ipos.project.DataModellntegration.SimpleSceneIntegration.service.SimpleSceneTransformer;
+import ipos.project.DataModellntegration.VDA5050Processor.VDA5050Processor;
+import ipos.project.DataModellntegration.VDA5050Processor.service.VDA5050Transformer;
+import ipos.project.DataModellntegration.iPos_Datamodel.*;
+import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.DataStorageQueryRequest;
+import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.MonitoringRequest;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load;
+import ipos.project.Functionality.DataServices;
+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.devkit.trans.IPos2protoTransformer;
+import ipos.project.devkit.utility.OtherUtility;
+import ipos.project.devkit.utility.ProtoJsonMap;
+import org.apache.logging.log4j.LogManager;
+import org.eclipse.paho.client.mqttv3.MqttMessage;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jms.core.JmsTemplate;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+
+// subscribe to the topic. It's example
+@MqttListener(VDA5050Processor.TOPIC_AGVSTATE)
+public class MqttRequestHandler implements Handler {
+
+    private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger();
+    JmsTemplate jmsTemplate;
+    private static IPos_DatamodelFactory modelFactory = IPos_DatamodelFactory.eINSTANCE;
+
+    @Autowired
+    public MqttRequestHandler(JmsTemplate jmsTemplate) {
+        this.jmsTemplate = jmsTemplate;
+    }
+
+    // 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);
+            VDA5050.AgvState agvState = ProtoJsonMap.fromJson(message.toString(), VDA5050.AgvState.class);
+            // IposMonitoringRequest monReqProto = IposMonitoringRequest.parseFrom(message.getPayload());
+            processAgvState(agvState);
+        } catch (InvalidProtocolBufferException e) {
+            e.printStackTrace();
+        } catch (NullPointerException e){
+            LOG.info("VDA5050-message could not be read. " + e.getMessage());
+            e.printStackTrace();
+        }
+    }
+
+    public static void processAgvState(VDA5050.AgvState agvState_proto) {
+        LOG.info("VDA5050-AgvState message received: \n" + agvState_proto.toString());
+        AgvState agvState = VDA5050Transformer.agvState_proto2internal(agvState_proto);
+        MessageReceivedEvent messageReceivedEvent = extractMessageReceivedEventFromAgvState(agvState, ProtoJsonMap.toJson(agvState_proto));
+        LOG.info("VDA5050: Corresponding MessageReceivedEvent: " + messageReceivedEvent.toString());
+        attemptToHandleAsPositionEvent(agvState);
+        attemptToEvaluateLastNodeId(agvState, messageReceivedEvent.getAgentId());
+        PositionMonitoring.receiveMessage(messageReceivedEvent);
+        // this.jmsTemplate.convertAndSend("/request123", monReqInternal); // submit request to the internal broker
+    }
+
+    private static void attemptToEvaluateLastNodeId(AgvState agvState, String agentId) {
+        // we prefer current positions over old positions communicated over lastNodeIds
+        boolean noCurrentPositionAvailable = !containsValidAgvPosition(agvState);
+        boolean lastNodeIdIsAvailable = null != agvState.getLastNodeId();
+        if( noCurrentPositionAvailable && lastNodeIdIsAvailable){
+            try {
+                String lastNodeId = agvState.getLastNodeId();
+                POI poi = Optional.ofNullable(DataServices.getPoiByIdOrNull(lastNodeId)).orElseThrow(() -> new NullPointerException("Message contained unknown lastNodeId: " + agvState.getLastNodeId()));
+                LocalizableObject lObject = Optional.ofNullable(DataServices.getLObjectByIdOrNull(agentId)).orElseThrow(() -> new NullPointerException("Message was sent on behalf of an unknown agentId: " + agentId));
+                if (null == lObject.getLastPosUpdate()){ // assumption: if lastPosUpdate is unset, there is no position information that would be more current than the VDA5050-lastNodeId
+                    lObject.setCurrentPlacing(poi.getPlacing());
+                    LOG.info("VDA5050: currentPlacing of localizable object " + lObject.getId() + " has been updated.");
+                    return;
+                }
+            }catch(NullPointerException e){
+                LOG.info("LastNodeId of VDA5050-message (AgvState) could not be processed. " + e.getMessage());
+                return;
+            }
+        }
+    }
+
+    private static void attemptToHandleAsPositionEvent(AgvState agvState) {
+        if(containsValidAgvPosition(agvState)){
+            try {
+                PositionEvent posEvent = extractPositionEvent(agvState);
+                PositionMonitoring.receiveMessage(posEvent);
+            }catch (NullPointerException e){
+                LOG.info("Received message did not receive sufficient information to be handled as PositionEvent. " + e.getMessage());
+            }
+        }
+    }
+
+    private static PositionEvent extractPositionEvent(AgvState agvState) {
+        PositionEvent posEvent = modelFactory.createPositionEvent();
+        Objects.requireNonNull(agvState.getManufacturer(), "Message missed a required information: manufacturer");
+        Objects.requireNonNull(agvState.getSerialNumber(), "Message missed a required information: serialNumber");
+        String extractedRefSystem = Optional.ofNullable(agvState.getAgvposition().getMapId()).orElse(PositionMonitoring.SRS_ID_ROOT);
+        Objects.requireNonNull(DataServices.getReferenceSystemByIdOrNull(extractedRefSystem), "Message contained a position that is associated an unknown reference system: " + extractedRefSystem);
+        posEvent.setTimeStamp(Optional.ofNullable(agvState.getTimeStamp()).orElse(""));
+        posEvent.setLObjectId(agvState.getManufacturer() + VDA5050Processor.AGV_ID_CONNECTOR_CHARACTER + agvState.getSerialNumber());
+        posEvent.setPlacing(
+            IPos2protoTransformer.createPlacing(
+                    IPos2protoTransformer.createPosition(
+                            IPos2protoTransformer.createPoint3D(
+                                    agvState.getAgvposition().getX(),
+                                    agvState.getAgvposition().getY(),
+                                    0),
+                            -1.0f,
+                            DataServices.getReferenceSystemByIdOrNull(extractedRefSystem)),
+                    IPos2protoTransformer.createOrientation(
+                            0,
+                            0,
+                            0,
+                            0
+                    )
+            )
+        );
+        return posEvent;
+    }
+
+    private static boolean containsValidAgvPosition(AgvState agvState) {
+        return null != agvState.getAgvposition();
+    }
+
+    private static MessageReceivedEvent extractMessageReceivedEventFromAgvState(AgvState agvState, String serializedMsg) {
+        Objects.requireNonNull(agvState.getManufacturer(), "Message missed a required information: manufacturer");
+        Objects.requireNonNull(agvState.getSerialNumber(), "Message missed a required information: serialNumber");
+        MessageReceivedEvent messageReceivedEvent = modelFactory.createMessageReceivedEvent();
+        messageReceivedEvent.setProtocolName(VDA5050Processor.PROTOCOL_NAME_VDA5050);
+        messageReceivedEvent.setSerializedMsg(serializedMsg.getBytes());
+        messageReceivedEvent.setAgentId(agvState.getManufacturer() + VDA5050Processor.AGV_ID_CONNECTOR_CHARACTER + agvState.getSerialNumber());
+        messageReceivedEvent.setExtractedAttributes(extractAgvStateAttributes(agvState));
+        messageReceivedEvent.setTimestamp(Optional.ofNullable(agvState.getTimeStamp()).orElse(""));
+        return messageReceivedEvent;
+    }
+
+    private static LinkedList<HashMap<String, String>> extractAgvStateAttributes(AgvState agvState) {
+        LinkedList<HashMap<String, String>> extractedAttributes = new LinkedList<>();
+        extractAgvStateBatteryChargeLevel(agvState, extractedAttributes);
+        extractAgvStateLoads(agvState, extractedAttributes);
+        extractAgvStateErrors(agvState, extractedAttributes);
+        extractAgvStateTheta(agvState, extractedAttributes);
+        extractAgvStateLastNodeId(agvState, extractedAttributes);
+        return extractedAttributes;
+    }
+
+    private static void extractAgvStateLastNodeId(AgvState agvState, LinkedList<HashMap<String, String>> extractedAttributes) {
+        if(null == agvState.getLastNodeId() || agvState.getLastNodeId().equals("")){
+            return;
+        }
+        HashMap agvStateLastNodeId = new HashMap<String, String>();
+        agvStateLastNodeId.put(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_NAME, "lastNodeId");
+        agvStateLastNodeId.put(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_TYPE, VDA5050Processor.TYPE_STRING);
+        agvStateLastNodeId.put(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_VALUE, agvState.getLastNodeId());
+        extractedAttributes.add(agvStateLastNodeId);
+    }
+
+    private static void extractAgvStateErrors(AgvState agvState, LinkedList<HashMap<String, String>> extractedAttributes) {
+        if(null == agvState.getErrors() || agvState.getErrors().size()==0){
+            return;
+        }
+        HashMap agvStateErrors = new HashMap<String, String>();
+        agvStateErrors.put(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_NAME, "errors");
+        agvStateErrors.put(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_TYPE, VDA5050Processor.TYPE_LIST_OF_INT);
+        List<String> errorIdsAsStringList = agvState.getErrors().stream().map(MqttRequestHandler::extractErrorId).collect(Collectors.toList());
+        agvStateErrors.put(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_VALUE, String.join(VDA5050Processor.DELIMITER_CSV, errorIdsAsStringList));
+        extractedAttributes.add(agvStateErrors);
+    }
+
+    private static void extractAgvStateLoads(AgvState agvState, LinkedList<HashMap<String, String>> extractedAttributes) {
+        if(null == agvState.getLoads() || agvState.getLoads().size() == 0){
+            return;
+        }
+        HashMap agvStateLoads = new HashMap<String, String>();
+        agvStateLoads.put(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_NAME, "loads");
+        agvStateLoads.put(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_TYPE, VDA5050Processor.TYPE_LIST_OF_INT);
+        List<String> loadIdsAsStringList = agvState.getLoads().stream().map(MqttRequestHandler::extractLoadId).collect(Collectors.toList());
+        agvStateLoads.put(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_VALUE, String.join(VDA5050Processor.DELIMITER_CSV, loadIdsAsStringList));
+        extractedAttributes.add(agvStateLoads);
+    }
+
+    private static String extractErrorId(Error error) {
+        return error.getErrorType();
+    }
+
+    private static java.lang.String extractLoadId(Load load) {
+        return load.getLoadId();
+    }
+
+    private static void extractAgvStateBatteryChargeLevel(AgvState agvState, LinkedList<HashMap<String, String>> extractedAttributes) {
+        if(null == agvState.getBatteryState()){
+            return;
+        }
+        HashMap agvStateBatteryCharge = new HashMap<String, String>();
+        agvStateBatteryCharge.put(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_NAME, "batteryCharge");
+        agvStateBatteryCharge.put(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_TYPE, VDA5050Processor.TYPE_FLOAT);
+        agvStateBatteryCharge.put(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_VALUE, "" + agvState.getBatteryState().getBatteryCharge());
+        extractedAttributes.add(agvStateBatteryCharge);
+    }
+
+    private static void extractAgvStateTheta(AgvState agvState, LinkedList<HashMap<String, String>> extractedAttributes) {
+        if(null == agvState.getAgvposition()){
+            return;
+        }
+        HashMap agvStateTheta = new HashMap<String, String>();
+        agvStateTheta.put(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_NAME, "theta");
+        agvStateTheta.put(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_TYPE, VDA5050Processor.TYPE_FLOAT);
+        agvStateTheta.put(OtherUtility.KEY_EXTRACTED_ATTRIBUTE_VALUE, "" + agvState.getAgvposition().getTheta());
+        extractedAttributes.add(agvStateTheta);
+    }
+
+    private static void processQueryRequest(List<SimpleScene.IposQueryRequest> queryRequestsList) {
+        for (SimpleScene.IposQueryRequest proto_qReq : queryRequestsList){
+            DataStorageQueryRequest internal_qReq = SimpleSceneTransformer.queryReq_SScene2Internal(proto_qReq);
+            LOG.info("INDFRO:");
+            LOG.info("INDFRO: Received QueryRequest for trackingTaskId " + internal_qReq.getTrackingTaskId());
+            PositionMonitoring.receiveMessage(internal_qReq);
+        }
+    }
+
+    /*
+    private SimpleScene.IposConfigWrapper replaceNullByEmptyList(SimpleScene.IposConfigWrapper configWrapper) {
+        SimpleScene.IposConfigWrapper.Builder configWrapper_NoNull = SimpleScene.IposConfigWrapper.newBuilder();
+        configWrapper_NoNull.add;
+    }
+    */
+
+    private static void processPois(List<SimpleScene.POI> poisList) {
+        for (SimpleScene.POI poi : poisList){
+            POI poi_internal = SimpleSceneTransformer.poi_SScene2Internal(poi);
+            Administration.handlePoi(poi_internal);
+        }
+    }
+
+    private static void processRefSystems(List<SimpleScene.RefSystem> refSystemsList) {
+        for (SimpleScene.RefSystem refSystem : refSystemsList){
+            ReferenceSystem refSystem_internal = SimpleSceneTransformer.refSystem_SScene2Internal(refSystem);
+            Administration.handleRefSystem(refSystem_internal);
+        }
+    }
+
+    private static void processObjectConfigs(List<SimpleScene.IposObjectConfig> objectConfigsList) {
+        for( SimpleScene.IposObjectConfig objConfig : objectConfigsList){
+            Agent agent = SimpleSceneTransformer.agent_SScene2Internal(objConfig);
+            Administration.handleAgent(agent);
+        }
+    }
+
+    private static 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 static 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/VDA5050Processor/service/VDA5050Transformer.java b/src/main/java/ipos/project/DataModellntegration/VDA5050Processor/service/VDA5050Transformer.java
new file mode 100644
index 0000000..44c26e7
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/VDA5050Processor/service/VDA5050Transformer.java
@@ -0,0 +1,70 @@
+package ipos.project.DataModellntegration.VDA5050Processor.service;
+
+import ipos.models.VDA5050;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.*;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error;
+import org.apache.logging.log4j.LogManager;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public class VDA5050Transformer {
+    private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger();
+    private static VDA5050Factory vda5050Factory = VDA5050Factory.eINSTANCE;
+
+    public static AgvState agvState_proto2internal(VDA5050.AgvState agvState_proto) {
+        AgvState agvState_internal = vda5050Factory.createAgvState();
+        agvState_internal.setTimeStamp(agvState_proto.getTimeStamp());
+        agvState_internal.setSerialNumber(agvState_proto.getSerialNumber());
+        agvState_internal.setLastNodeId(agvState_proto.getLastNodeId());
+        agvState_internal.setManufacturer(agvState_proto.getManufacturer());
+        agvState_internal.setBatteryState(extractBatteryStateOrNull(agvState_proto));
+        agvState_internal.getErrors().addAll(extractErrorsOrEmptyList(agvState_proto));
+        agvState_internal.getLoads().addAll(extractLoadsOrEmptyList(agvState_proto));
+        agvState_internal.setAgvposition(extractAgvPositionOrNull(agvState_proto));
+        return agvState_internal;
+    }
+
+    private static AgvPosition extractAgvPositionOrNull(VDA5050.AgvState agvState_proto) {
+        boolean agvPositionNotPresentInMessage = ipos.models.VDA5050.AgvPosition.getDefaultInstance() == agvState_proto.getAgvPosition();
+        if (agvPositionNotPresentInMessage){
+            return null;
+        }else {
+            AgvPosition agvPosition_internal = vda5050Factory.createAgvPosition();
+            agvPosition_internal.setX(agvState_proto.getAgvPosition().getX());
+            agvPosition_internal.setY(agvState_proto.getAgvPosition().getY());
+            agvPosition_internal.setTheta(agvState_proto.getAgvPosition().getTheta());
+            return agvPosition_internal;
+        }
+    }
+
+    private static BatteryState extractBatteryStateOrNull(VDA5050.AgvState agvState_proto) {
+        if (ipos.models.VDA5050.BatteryState.getDefaultInstance() == agvState_proto.getBatteryState()){
+            return null;
+        }else {
+            BatteryState batteryState = vda5050Factory.createBatteryState();
+            batteryState.setBatteryCharge(agvState_proto.getBatteryState().getBatteryCharge());
+            return batteryState;
+        }
+    }
+
+    private static List<ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error> extractErrorsOrEmptyList(VDA5050.AgvState agvState_proto){
+        LinkedList<ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error> errors = new LinkedList<>();
+        for (VDA5050.Error error_proto : agvState_proto.getErrorsList()){
+            Error error_internal = vda5050Factory.createError();
+            error_internal.setErrorType(error_proto.getErrorType());
+            errors.add(error_internal);
+        }
+        return errors;
+    }
+
+    private static List<ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load> extractLoadsOrEmptyList(VDA5050.AgvState agvState_proto){
+        LinkedList<ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load> loads = new LinkedList<>();
+        for (VDA5050.Load load_proto : agvState_proto.getLoadsList()){
+            Load load_internal = vda5050Factory.createLoad();
+            load_internal.setLoadId(load_proto.getLoadId());
+            loads.add(load_internal);
+        }
+        return loads;
+    }
+}
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/IPosDevKitFactory.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/IPosDevKitFactory.java
index 59acd52..ed0faac 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/IPosDevKitFactory.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/IPosDevKitFactory.java
@@ -193,6 +193,15 @@ public interface IPosDevKitFactory extends EFactory {
 	 */
 	IPosOtherBeaconEvent createIPosOtherBeaconEvent();
 
+	/**
+	 * Returns a new object of class '<em>Ipos Msg Rcv Event</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Ipos Msg Rcv Event</em>'.
+	 * @generated
+	 */
+	IposMsgRcvEvent createIposMsgRcvEvent();
+
 	/**
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/IPosDevKitPackage.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/IPosDevKitPackage.java
index 39d9ce3..1214f35 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/IPosDevKitPackage.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/IPosDevKitPackage.java
@@ -1354,6 +1354,115 @@ public interface IPosDevKitPackage extends EPackage {
 	 */
 	int IPOS_OTHER_BEACON_EVENT_OPERATION_COUNT = IPOS_BEACON_EVENT_OPERATION_COUNT + 0;
 
+	/**
+	 * The meta object id for the '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IposMsgRcvEventImpl <em>Ipos Msg Rcv Event</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IposMsgRcvEventImpl
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IPosDevKitPackageImpl#getIposMsgRcvEvent()
+	 * @generated
+	 */
+	int IPOS_MSG_RCV_EVENT = 19;
+
+	/**
+	 * The feature id for the '<em><b>Protocol Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IPOS_MSG_RCV_EVENT__PROTOCOL_NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Serialized Msg</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IPOS_MSG_RCV_EVENT__SERIALIZED_MSG = 1;
+
+	/**
+	 * The feature id for the '<em><b>Last Pos Update</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IPOS_MSG_RCV_EVENT__LAST_POS_UPDATE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Last Known Position</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IPOS_MSG_RCV_EVENT__LAST_KNOWN_POSITION = 3;
+
+	/**
+	 * The feature id for the '<em><b>Last Known Orientation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IPOS_MSG_RCV_EVENT__LAST_KNOWN_ORIENTATION = 4;
+
+	/**
+	 * The feature id for the '<em><b>Last Known Zonedescriptors</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IPOS_MSG_RCV_EVENT__LAST_KNOWN_ZONEDESCRIPTORS = 5;
+
+	/**
+	 * The feature id for the '<em><b>Agent Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IPOS_MSG_RCV_EVENT__AGENT_ID = 6;
+
+	/**
+	 * The feature id for the '<em><b>Extracted Attributes</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IPOS_MSG_RCV_EVENT__EXTRACTED_ATTRIBUTES = 7;
+
+	/**
+	 * The feature id for the '<em><b>Timestamp</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IPOS_MSG_RCV_EVENT__TIMESTAMP = 8;
+
+	/**
+	 * The number of structural features of the '<em>Ipos Msg Rcv Event</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IPOS_MSG_RCV_EVENT_FEATURE_COUNT = 9;
+
+	/**
+	 * The number of operations of the '<em>Ipos Msg Rcv Event</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IPOS_MSG_RCV_EVENT_OPERATION_COUNT = 0;
+
 	/**
 	 * Returns the meta object for class '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.TrackingRequest <em>Tracking Request</em>}'.
 	 * <!-- begin-user-doc -->
@@ -1907,6 +2016,115 @@ public interface IPosDevKitPackage extends EPackage {
 	 */
 	EAttribute getIPosOtherBeaconEvent_Data();
 
+	/**
+	 * Returns the meta object for class '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent <em>Ipos Msg Rcv Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Ipos Msg Rcv Event</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent
+	 * @generated
+	 */
+	EClass getIposMsgRcvEvent();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getProtocolName <em>Protocol Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Protocol Name</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getProtocolName()
+	 * @see #getIposMsgRcvEvent()
+	 * @generated
+	 */
+	EAttribute getIposMsgRcvEvent_ProtocolName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getSerializedMsg <em>Serialized Msg</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Serialized Msg</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getSerializedMsg()
+	 * @see #getIposMsgRcvEvent()
+	 * @generated
+	 */
+	EAttribute getIposMsgRcvEvent_SerializedMsg();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getLastPosUpdate <em>Last Pos Update</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Last Pos Update</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getLastPosUpdate()
+	 * @see #getIposMsgRcvEvent()
+	 * @generated
+	 */
+	EAttribute getIposMsgRcvEvent_LastPosUpdate();
+
+	/**
+	 * Returns the meta object for the reference '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getLastKnownPosition <em>Last Known Position</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Last Known Position</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getLastKnownPosition()
+	 * @see #getIposMsgRcvEvent()
+	 * @generated
+	 */
+	EReference getIposMsgRcvEvent_LastKnownPosition();
+
+	/**
+	 * Returns the meta object for the reference '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getLastKnownOrientation <em>Last Known Orientation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Last Known Orientation</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getLastKnownOrientation()
+	 * @see #getIposMsgRcvEvent()
+	 * @generated
+	 */
+	EReference getIposMsgRcvEvent_LastKnownOrientation();
+
+	/**
+	 * Returns the meta object for the reference list '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getLastKnownZonedescriptors <em>Last Known Zonedescriptors</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Last Known Zonedescriptors</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getLastKnownZonedescriptors()
+	 * @see #getIposMsgRcvEvent()
+	 * @generated
+	 */
+	EReference getIposMsgRcvEvent_LastKnownZonedescriptors();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getAgentId <em>Agent Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Agent Id</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getAgentId()
+	 * @see #getIposMsgRcvEvent()
+	 * @generated
+	 */
+	EAttribute getIposMsgRcvEvent_AgentId();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getExtractedAttributes <em>Extracted Attributes</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Extracted Attributes</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getExtractedAttributes()
+	 * @see #getIposMsgRcvEvent()
+	 * @generated
+	 */
+	EAttribute getIposMsgRcvEvent_ExtractedAttributes();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getTimestamp <em>Timestamp</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Timestamp</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getTimestamp()
+	 * @see #getIposMsgRcvEvent()
+	 * @generated
+	 */
+	EAttribute getIposMsgRcvEvent_Timestamp();
+
 	/**
 	 * Returns the factory that creates the instances of the model.
 	 * <!-- begin-user-doc -->
@@ -2384,6 +2602,89 @@ public interface IPosDevKitPackage extends EPackage {
 		 */
 		EAttribute IPOS_OTHER_BEACON_EVENT__DATA = eINSTANCE.getIPosOtherBeaconEvent_Data();
 
+		/**
+		 * The meta object literal for the '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IposMsgRcvEventImpl <em>Ipos Msg Rcv Event</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IposMsgRcvEventImpl
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IPosDevKitPackageImpl#getIposMsgRcvEvent()
+		 * @generated
+		 */
+		EClass IPOS_MSG_RCV_EVENT = eINSTANCE.getIposMsgRcvEvent();
+
+		/**
+		 * The meta object literal for the '<em><b>Protocol Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute IPOS_MSG_RCV_EVENT__PROTOCOL_NAME = eINSTANCE.getIposMsgRcvEvent_ProtocolName();
+
+		/**
+		 * The meta object literal for the '<em><b>Serialized Msg</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute IPOS_MSG_RCV_EVENT__SERIALIZED_MSG = eINSTANCE.getIposMsgRcvEvent_SerializedMsg();
+
+		/**
+		 * The meta object literal for the '<em><b>Last Pos Update</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute IPOS_MSG_RCV_EVENT__LAST_POS_UPDATE = eINSTANCE.getIposMsgRcvEvent_LastPosUpdate();
+
+		/**
+		 * The meta object literal for the '<em><b>Last Known Position</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference IPOS_MSG_RCV_EVENT__LAST_KNOWN_POSITION = eINSTANCE.getIposMsgRcvEvent_LastKnownPosition();
+
+		/**
+		 * The meta object literal for the '<em><b>Last Known Orientation</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference IPOS_MSG_RCV_EVENT__LAST_KNOWN_ORIENTATION = eINSTANCE.getIposMsgRcvEvent_LastKnownOrientation();
+
+		/**
+		 * The meta object literal for the '<em><b>Last Known Zonedescriptors</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference IPOS_MSG_RCV_EVENT__LAST_KNOWN_ZONEDESCRIPTORS = eINSTANCE
+				.getIposMsgRcvEvent_LastKnownZonedescriptors();
+
+		/**
+		 * The meta object literal for the '<em><b>Agent Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute IPOS_MSG_RCV_EVENT__AGENT_ID = eINSTANCE.getIposMsgRcvEvent_AgentId();
+
+		/**
+		 * The meta object literal for the '<em><b>Extracted Attributes</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute IPOS_MSG_RCV_EVENT__EXTRACTED_ATTRIBUTES = eINSTANCE.getIposMsgRcvEvent_ExtractedAttributes();
+
+		/**
+		 * The meta object literal for the '<em><b>Timestamp</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute IPOS_MSG_RCV_EVENT__TIMESTAMP = eINSTANCE.getIposMsgRcvEvent_Timestamp();
+
 	}
 
 } //IPosDevKitPackage
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/IposMsgRcvEvent.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/IposMsgRcvEvent.java
new file mode 100644
index 0000000..4d674be
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/IposMsgRcvEvent.java
@@ -0,0 +1,229 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.Orientation;
+import ipos.project.DataModellntegration.iPos_Datamodel.Position;
+import ipos.project.DataModellntegration.iPos_Datamodel.ZoneDescriptor;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Ipos Msg Rcv Event</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getProtocolName <em>Protocol Name</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getSerializedMsg <em>Serialized Msg</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getLastPosUpdate <em>Last Pos Update</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getLastKnownPosition <em>Last Known Position</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getLastKnownOrientation <em>Last Known Orientation</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getLastKnownZonedescriptors <em>Last Known Zonedescriptors</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getAgentId <em>Agent Id</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getExtractedAttributes <em>Extracted Attributes</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getTimestamp <em>Timestamp</em>}</li>
+ * </ul>
+ *
+ * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosDevKitPackage#getIposMsgRcvEvent()
+ * @model
+ * @generated
+ */
+public interface IposMsgRcvEvent extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Protocol Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Protocol Name</em>' attribute.
+	 * @see #setProtocolName(String)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosDevKitPackage#getIposMsgRcvEvent_ProtocolName()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getProtocolName();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getProtocolName <em>Protocol Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Protocol Name</em>' attribute.
+	 * @see #getProtocolName()
+	 * @generated
+	 */
+	void setProtocolName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Serialized Msg</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Serialized Msg</em>' attribute.
+	 * @see #setSerializedMsg(byte[])
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosDevKitPackage#getIposMsgRcvEvent_SerializedMsg()
+	 * @model dataType="ipos.project.DataModellntegration.iPos_Datamodel.ByteArray"
+	 * @generated
+	 */
+	byte[] getSerializedMsg();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getSerializedMsg <em>Serialized Msg</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Serialized Msg</em>' attribute.
+	 * @see #getSerializedMsg()
+	 * @generated
+	 */
+	void setSerializedMsg(byte[] value);
+
+	/**
+	 * Returns the value of the '<em><b>Last Pos Update</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Last Pos Update</em>' attribute.
+	 * @see #setLastPosUpdate(String)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosDevKitPackage#getIposMsgRcvEvent_LastPosUpdate()
+	 * @model
+	 * @generated
+	 */
+	String getLastPosUpdate();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getLastPosUpdate <em>Last Pos Update</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Last Pos Update</em>' attribute.
+	 * @see #getLastPosUpdate()
+	 * @generated
+	 */
+	void setLastPosUpdate(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Last Known Position</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Last Known Position</em>' reference.
+	 * @see #setLastKnownPosition(Position)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosDevKitPackage#getIposMsgRcvEvent_LastKnownPosition()
+	 * @model
+	 * @generated
+	 */
+	Position getLastKnownPosition();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getLastKnownPosition <em>Last Known Position</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Last Known Position</em>' reference.
+	 * @see #getLastKnownPosition()
+	 * @generated
+	 */
+	void setLastKnownPosition(Position value);
+
+	/**
+	 * Returns the value of the '<em><b>Last Known Orientation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Last Known Orientation</em>' reference.
+	 * @see #setLastKnownOrientation(Orientation)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosDevKitPackage#getIposMsgRcvEvent_LastKnownOrientation()
+	 * @model
+	 * @generated
+	 */
+	Orientation getLastKnownOrientation();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getLastKnownOrientation <em>Last Known Orientation</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Last Known Orientation</em>' reference.
+	 * @see #getLastKnownOrientation()
+	 * @generated
+	 */
+	void setLastKnownOrientation(Orientation value);
+
+	/**
+	 * Returns the value of the '<em><b>Last Known Zonedescriptors</b></em>' reference list.
+	 * The list contents are of type {@link ipos.project.DataModellntegration.iPos_Datamodel.ZoneDescriptor}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Last Known Zonedescriptors</em>' reference list.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosDevKitPackage#getIposMsgRcvEvent_LastKnownZonedescriptors()
+	 * @model
+	 * @generated
+	 */
+	EList<ZoneDescriptor> getLastKnownZonedescriptors();
+
+	/**
+	 * Returns the value of the '<em><b>Agent Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Agent Id</em>' attribute.
+	 * @see #setAgentId(String)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosDevKitPackage#getIposMsgRcvEvent_AgentId()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getAgentId();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getAgentId <em>Agent Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Agent Id</em>' attribute.
+	 * @see #getAgentId()
+	 * @generated
+	 */
+	void setAgentId(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Extracted Attributes</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Extracted Attributes</em>' attribute.
+	 * @see #setExtractedAttributes(LinkedList)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosDevKitPackage#getIposMsgRcvEvent_ExtractedAttributes()
+	 * @model dataType="ipos.project.DataModellntegration.iPos_Datamodel.ListOfStringMaps"
+	 * @generated
+	 */
+	LinkedList<HashMap<String, String>> getExtractedAttributes();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getExtractedAttributes <em>Extracted Attributes</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Extracted Attributes</em>' attribute.
+	 * @see #getExtractedAttributes()
+	 * @generated
+	 */
+	void setExtractedAttributes(LinkedList<HashMap<String, String>> value);
+
+	/**
+	 * Returns the value of the '<em><b>Timestamp</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Timestamp</em>' attribute.
+	 * @see #setTimestamp(String)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosDevKitPackage#getIposMsgRcvEvent_Timestamp()
+	 * @model
+	 * @generated
+	 */
+	String getTimestamp();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent#getTimestamp <em>Timestamp</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Timestamp</em>' attribute.
+	 * @see #getTimestamp()
+	 * @generated
+	 */
+	void setTimestamp(String value);
+
+} // IposMsgRcvEvent
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/impl/IPosDevKitFactoryImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/impl/IPosDevKitFactoryImpl.java
index f6a00e1..1690ad7 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/impl/IPosDevKitFactoryImpl.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/impl/IPosDevKitFactoryImpl.java
@@ -94,6 +94,8 @@ public class IPosDevKitFactoryImpl extends EFactoryImpl implements IPosDevKitFac
 			return createIPosOtherProxEvent();
 		case IPosDevKitPackage.IPOS_OTHER_BEACON_EVENT:
 			return createIPosOtherBeaconEvent();
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT:
+			return createIposMsgRcvEvent();
 		default:
 			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -289,6 +291,16 @@ public class IPosDevKitFactoryImpl extends EFactoryImpl implements IPosDevKitFac
 		return iPosOtherBeaconEvent;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public IposMsgRcvEvent createIposMsgRcvEvent() {
+		IposMsgRcvEventImpl iposMsgRcvEvent = new IposMsgRcvEventImpl();
+		return iposMsgRcvEvent;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/impl/IPosDevKitPackageImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/impl/IPosDevKitPackageImpl.java
index 4313bfc..457676a 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/impl/IPosDevKitPackageImpl.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/impl/IPosDevKitPackageImpl.java
@@ -17,6 +17,7 @@ import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosProximity
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosRFIDEvent;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosRawdataEvent;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosUWBEvent;
+import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposPositionEvent;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.MonitoringRequest;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.SensorConfigurationRequest;
@@ -32,6 +33,8 @@ import ipos.project.DataModellntegration.iPos_Datamodel.OFBiz.impl.OFBizPackageI
 
 import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.ToozPackage;
 import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.impl.ToozPackageImpl;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050PackageImpl;
 import ipos.project.DataModellntegration.iPos_Datamodel.impl.IPos_DatamodelPackageImpl;
 
 import org.eclipse.emf.ecore.EAttribute;
@@ -184,6 +187,13 @@ public class IPosDevKitPackageImpl extends EPackageImpl implements IPosDevKitPac
 	 */
 	private EClass iPosOtherBeaconEventEClass = null;
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass iposMsgRcvEventEClass = null;
+
 	/**
 	 * Creates an instance of the model <b>Package</b>, registered with
 	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
@@ -250,18 +260,24 @@ public class IPosDevKitPackageImpl extends EPackageImpl implements IPosDevKitPac
 		ToozPackageImpl theToozPackage = (ToozPackageImpl) (registeredPackage instanceof ToozPackageImpl
 				? registeredPackage
 				: ToozPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(VDA5050Package.eNS_URI);
+		VDA5050PackageImpl theVDA5050Package = (VDA5050PackageImpl) (registeredPackage instanceof VDA5050PackageImpl
+				? registeredPackage
+				: VDA5050Package.eINSTANCE);
 
 		// Create package meta-data objects
 		theIPosDevKitPackage.createPackageContents();
 		theIPos_DatamodelPackage.createPackageContents();
 		theOFBizPackage.createPackageContents();
 		theToozPackage.createPackageContents();
+		theVDA5050Package.createPackageContents();
 
 		// Initialize created meta-data
 		theIPosDevKitPackage.initializePackageContents();
 		theIPos_DatamodelPackage.initializePackageContents();
 		theOFBizPackage.initializePackageContents();
 		theToozPackage.initializePackageContents();
+		theVDA5050Package.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theIPosDevKitPackage.freeze();
@@ -739,6 +755,96 @@ public class IPosDevKitPackageImpl extends EPackageImpl implements IPosDevKitPac
 		return (EAttribute) iPosOtherBeaconEventEClass.getEStructuralFeatures().get(0);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getIposMsgRcvEvent() {
+		return iposMsgRcvEventEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getIposMsgRcvEvent_ProtocolName() {
+		return (EAttribute) iposMsgRcvEventEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getIposMsgRcvEvent_SerializedMsg() {
+		return (EAttribute) iposMsgRcvEventEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getIposMsgRcvEvent_LastPosUpdate() {
+		return (EAttribute) iposMsgRcvEventEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getIposMsgRcvEvent_LastKnownPosition() {
+		return (EReference) iposMsgRcvEventEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getIposMsgRcvEvent_LastKnownOrientation() {
+		return (EReference) iposMsgRcvEventEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getIposMsgRcvEvent_LastKnownZonedescriptors() {
+		return (EReference) iposMsgRcvEventEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getIposMsgRcvEvent_AgentId() {
+		return (EAttribute) iposMsgRcvEventEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getIposMsgRcvEvent_ExtractedAttributes() {
+		return (EAttribute) iposMsgRcvEventEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getIposMsgRcvEvent_Timestamp() {
+		return (EAttribute) iposMsgRcvEventEClass.getEStructuralFeatures().get(8);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -838,6 +944,17 @@ public class IPosDevKitPackageImpl extends EPackageImpl implements IPosDevKitPac
 
 		iPosOtherBeaconEventEClass = createEClass(IPOS_OTHER_BEACON_EVENT);
 		createEAttribute(iPosOtherBeaconEventEClass, IPOS_OTHER_BEACON_EVENT__DATA);
+
+		iposMsgRcvEventEClass = createEClass(IPOS_MSG_RCV_EVENT);
+		createEAttribute(iposMsgRcvEventEClass, IPOS_MSG_RCV_EVENT__PROTOCOL_NAME);
+		createEAttribute(iposMsgRcvEventEClass, IPOS_MSG_RCV_EVENT__SERIALIZED_MSG);
+		createEAttribute(iposMsgRcvEventEClass, IPOS_MSG_RCV_EVENT__LAST_POS_UPDATE);
+		createEReference(iposMsgRcvEventEClass, IPOS_MSG_RCV_EVENT__LAST_KNOWN_POSITION);
+		createEReference(iposMsgRcvEventEClass, IPOS_MSG_RCV_EVENT__LAST_KNOWN_ORIENTATION);
+		createEReference(iposMsgRcvEventEClass, IPOS_MSG_RCV_EVENT__LAST_KNOWN_ZONEDESCRIPTORS);
+		createEAttribute(iposMsgRcvEventEClass, IPOS_MSG_RCV_EVENT__AGENT_ID);
+		createEAttribute(iposMsgRcvEventEClass, IPOS_MSG_RCV_EVENT__EXTRACTED_ATTRIBUTES);
+		createEAttribute(iposMsgRcvEventEClass, IPOS_MSG_RCV_EVENT__TIMESTAMP);
 	}
 
 	/**
@@ -1061,6 +1178,36 @@ public class IPosDevKitPackageImpl extends EPackageImpl implements IPosDevKitPac
 		g1.getETypeArguments().add(g2);
 		initEAttribute(getIPosOtherBeaconEvent_Data(), g1, "data", null, 0, 1, IPosOtherBeaconEvent.class, IS_TRANSIENT,
 				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(iposMsgRcvEventEClass, IposMsgRcvEvent.class, "IposMsgRcvEvent", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getIposMsgRcvEvent_ProtocolName(), ecorePackage.getEString(), "protocolName", null, 1, 1,
+				IposMsgRcvEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getIposMsgRcvEvent_SerializedMsg(), theIPos_DatamodelPackage.getByteArray(), "serializedMsg",
+				null, 0, 1, IposMsgRcvEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getIposMsgRcvEvent_LastPosUpdate(), ecorePackage.getEString(), "lastPosUpdate", null, 0, 1,
+				IposMsgRcvEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEReference(getIposMsgRcvEvent_LastKnownPosition(), theIPos_DatamodelPackage.getPosition(), null,
+				"lastKnownPosition", null, 0, 1, IposMsgRcvEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getIposMsgRcvEvent_LastKnownOrientation(), theIPos_DatamodelPackage.getOrientation(), null,
+				"lastKnownOrientation", null, 0, 1, IposMsgRcvEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getIposMsgRcvEvent_LastKnownZonedescriptors(), theIPos_DatamodelPackage.getZoneDescriptor(),
+				null, "lastKnownZonedescriptors", null, 0, -1, IposMsgRcvEvent.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getIposMsgRcvEvent_AgentId(), ecorePackage.getEString(), "agentId", null, 1, 1,
+				IposMsgRcvEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getIposMsgRcvEvent_ExtractedAttributes(), theIPos_DatamodelPackage.getListOfStringMaps(),
+				"extractedAttributes", null, 0, 1, IposMsgRcvEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getIposMsgRcvEvent_Timestamp(), ecorePackage.getEString(), "timestamp", null, 0, 1,
+				IposMsgRcvEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
 	}
 
 } //IPosDevKitPackageImpl
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/impl/IposMsgRcvEventImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/impl/IposMsgRcvEventImpl.java
new file mode 100644
index 0000000..b5a9fd0
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/impl/IposMsgRcvEventImpl.java
@@ -0,0 +1,623 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosDevKitPackage;
+import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.Orientation;
+import ipos.project.DataModellntegration.iPos_Datamodel.Position;
+import ipos.project.DataModellntegration.iPos_Datamodel.ZoneDescriptor;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedList;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Ipos Msg Rcv Event</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IposMsgRcvEventImpl#getProtocolName <em>Protocol Name</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IposMsgRcvEventImpl#getSerializedMsg <em>Serialized Msg</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IposMsgRcvEventImpl#getLastPosUpdate <em>Last Pos Update</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IposMsgRcvEventImpl#getLastKnownPosition <em>Last Known Position</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IposMsgRcvEventImpl#getLastKnownOrientation <em>Last Known Orientation</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IposMsgRcvEventImpl#getLastKnownZonedescriptors <em>Last Known Zonedescriptors</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IposMsgRcvEventImpl#getAgentId <em>Agent Id</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IposMsgRcvEventImpl#getExtractedAttributes <em>Extracted Attributes</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IposMsgRcvEventImpl#getTimestamp <em>Timestamp</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class IposMsgRcvEventImpl extends MinimalEObjectImpl.Container implements IposMsgRcvEvent {
+	/**
+	 * The default value of the '{@link #getProtocolName() <em>Protocol Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProtocolName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PROTOCOL_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getProtocolName() <em>Protocol Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProtocolName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String protocolName = PROTOCOL_NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSerializedMsg() <em>Serialized Msg</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSerializedMsg()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final byte[] SERIALIZED_MSG_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getSerializedMsg() <em>Serialized Msg</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSerializedMsg()
+	 * @generated
+	 * @ordered
+	 */
+	protected byte[] serializedMsg = SERIALIZED_MSG_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLastPosUpdate() <em>Last Pos Update</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLastPosUpdate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LAST_POS_UPDATE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getLastPosUpdate() <em>Last Pos Update</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLastPosUpdate()
+	 * @generated
+	 * @ordered
+	 */
+	protected String lastPosUpdate = LAST_POS_UPDATE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getLastKnownPosition() <em>Last Known Position</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLastKnownPosition()
+	 * @generated
+	 * @ordered
+	 */
+	protected Position lastKnownPosition;
+
+	/**
+	 * The cached value of the '{@link #getLastKnownOrientation() <em>Last Known Orientation</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLastKnownOrientation()
+	 * @generated
+	 * @ordered
+	 */
+	protected Orientation lastKnownOrientation;
+
+	/**
+	 * The cached value of the '{@link #getLastKnownZonedescriptors() <em>Last Known Zonedescriptors</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLastKnownZonedescriptors()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ZoneDescriptor> lastKnownZonedescriptors;
+
+	/**
+	 * The default value of the '{@link #getAgentId() <em>Agent Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAgentId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String AGENT_ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getAgentId() <em>Agent Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAgentId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String agentId = AGENT_ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getExtractedAttributes() <em>Extracted Attributes</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExtractedAttributes()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LinkedList<HashMap<String, String>> EXTRACTED_ATTRIBUTES_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getExtractedAttributes() <em>Extracted Attributes</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExtractedAttributes()
+	 * @generated
+	 * @ordered
+	 */
+	protected LinkedList<HashMap<String, String>> extractedAttributes = EXTRACTED_ATTRIBUTES_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getTimestamp() <em>Timestamp</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTimestamp()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TIMESTAMP_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getTimestamp() <em>Timestamp</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTimestamp()
+	 * @generated
+	 * @ordered
+	 */
+	protected String timestamp = TIMESTAMP_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IposMsgRcvEventImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return IPosDevKitPackage.Literals.IPOS_MSG_RCV_EVENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getProtocolName() {
+		return protocolName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setProtocolName(String newProtocolName) {
+		String oldProtocolName = protocolName;
+		protocolName = newProtocolName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, IPosDevKitPackage.IPOS_MSG_RCV_EVENT__PROTOCOL_NAME,
+					oldProtocolName, protocolName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public byte[] getSerializedMsg() {
+		return serializedMsg;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSerializedMsg(byte[] newSerializedMsg) {
+		byte[] oldSerializedMsg = serializedMsg;
+		serializedMsg = newSerializedMsg;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, IPosDevKitPackage.IPOS_MSG_RCV_EVENT__SERIALIZED_MSG,
+					oldSerializedMsg, serializedMsg));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLastPosUpdate() {
+		return lastPosUpdate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLastPosUpdate(String newLastPosUpdate) {
+		String oldLastPosUpdate = lastPosUpdate;
+		lastPosUpdate = newLastPosUpdate;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_POS_UPDATE,
+					oldLastPosUpdate, lastPosUpdate));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Position getLastKnownPosition() {
+		if (lastKnownPosition != null && lastKnownPosition.eIsProxy()) {
+			InternalEObject oldLastKnownPosition = (InternalEObject) lastKnownPosition;
+			lastKnownPosition = (Position) eResolveProxy(oldLastKnownPosition);
+			if (lastKnownPosition != oldLastKnownPosition) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_POSITION, oldLastKnownPosition,
+							lastKnownPosition));
+			}
+		}
+		return lastKnownPosition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Position basicGetLastKnownPosition() {
+		return lastKnownPosition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLastKnownPosition(Position newLastKnownPosition) {
+		Position oldLastKnownPosition = lastKnownPosition;
+		lastKnownPosition = newLastKnownPosition;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_POSITION, oldLastKnownPosition,
+					lastKnownPosition));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Orientation getLastKnownOrientation() {
+		if (lastKnownOrientation != null && lastKnownOrientation.eIsProxy()) {
+			InternalEObject oldLastKnownOrientation = (InternalEObject) lastKnownOrientation;
+			lastKnownOrientation = (Orientation) eResolveProxy(oldLastKnownOrientation);
+			if (lastKnownOrientation != oldLastKnownOrientation) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_ORIENTATION, oldLastKnownOrientation,
+							lastKnownOrientation));
+			}
+		}
+		return lastKnownOrientation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Orientation basicGetLastKnownOrientation() {
+		return lastKnownOrientation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLastKnownOrientation(Orientation newLastKnownOrientation) {
+		Orientation oldLastKnownOrientation = lastKnownOrientation;
+		lastKnownOrientation = newLastKnownOrientation;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_ORIENTATION, oldLastKnownOrientation,
+					lastKnownOrientation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<ZoneDescriptor> getLastKnownZonedescriptors() {
+		if (lastKnownZonedescriptors == null) {
+			lastKnownZonedescriptors = new EObjectResolvingEList<ZoneDescriptor>(ZoneDescriptor.class, this,
+					IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_ZONEDESCRIPTORS);
+		}
+		return lastKnownZonedescriptors;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getAgentId() {
+		return agentId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAgentId(String newAgentId) {
+		String oldAgentId = agentId;
+		agentId = newAgentId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, IPosDevKitPackage.IPOS_MSG_RCV_EVENT__AGENT_ID,
+					oldAgentId, agentId));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LinkedList<HashMap<String, String>> getExtractedAttributes() {
+		return extractedAttributes;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExtractedAttributes(LinkedList<HashMap<String, String>> newExtractedAttributes) {
+		LinkedList<HashMap<String, String>> oldExtractedAttributes = extractedAttributes;
+		extractedAttributes = newExtractedAttributes;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					IPosDevKitPackage.IPOS_MSG_RCV_EVENT__EXTRACTED_ATTRIBUTES, oldExtractedAttributes,
+					extractedAttributes));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getTimestamp() {
+		return timestamp;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTimestamp(String newTimestamp) {
+		String oldTimestamp = timestamp;
+		timestamp = newTimestamp;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, IPosDevKitPackage.IPOS_MSG_RCV_EVENT__TIMESTAMP,
+					oldTimestamp, timestamp));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__PROTOCOL_NAME:
+			return getProtocolName();
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__SERIALIZED_MSG:
+			return getSerializedMsg();
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_POS_UPDATE:
+			return getLastPosUpdate();
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_POSITION:
+			if (resolve)
+				return getLastKnownPosition();
+			return basicGetLastKnownPosition();
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_ORIENTATION:
+			if (resolve)
+				return getLastKnownOrientation();
+			return basicGetLastKnownOrientation();
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_ZONEDESCRIPTORS:
+			return getLastKnownZonedescriptors();
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__AGENT_ID:
+			return getAgentId();
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__EXTRACTED_ATTRIBUTES:
+			return getExtractedAttributes();
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__TIMESTAMP:
+			return getTimestamp();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__PROTOCOL_NAME:
+			setProtocolName((String) newValue);
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__SERIALIZED_MSG:
+			setSerializedMsg((byte[]) newValue);
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_POS_UPDATE:
+			setLastPosUpdate((String) newValue);
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_POSITION:
+			setLastKnownPosition((Position) newValue);
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_ORIENTATION:
+			setLastKnownOrientation((Orientation) newValue);
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_ZONEDESCRIPTORS:
+			getLastKnownZonedescriptors().clear();
+			getLastKnownZonedescriptors().addAll((Collection<? extends ZoneDescriptor>) newValue);
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__AGENT_ID:
+			setAgentId((String) newValue);
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__EXTRACTED_ATTRIBUTES:
+			setExtractedAttributes((LinkedList<HashMap<String, String>>) newValue);
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__TIMESTAMP:
+			setTimestamp((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__PROTOCOL_NAME:
+			setProtocolName(PROTOCOL_NAME_EDEFAULT);
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__SERIALIZED_MSG:
+			setSerializedMsg(SERIALIZED_MSG_EDEFAULT);
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_POS_UPDATE:
+			setLastPosUpdate(LAST_POS_UPDATE_EDEFAULT);
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_POSITION:
+			setLastKnownPosition((Position) null);
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_ORIENTATION:
+			setLastKnownOrientation((Orientation) null);
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_ZONEDESCRIPTORS:
+			getLastKnownZonedescriptors().clear();
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__AGENT_ID:
+			setAgentId(AGENT_ID_EDEFAULT);
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__EXTRACTED_ATTRIBUTES:
+			setExtractedAttributes(EXTRACTED_ATTRIBUTES_EDEFAULT);
+			return;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__TIMESTAMP:
+			setTimestamp(TIMESTAMP_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__PROTOCOL_NAME:
+			return PROTOCOL_NAME_EDEFAULT == null ? protocolName != null : !PROTOCOL_NAME_EDEFAULT.equals(protocolName);
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__SERIALIZED_MSG:
+			return SERIALIZED_MSG_EDEFAULT == null ? serializedMsg != null
+					: !SERIALIZED_MSG_EDEFAULT.equals(serializedMsg);
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_POS_UPDATE:
+			return LAST_POS_UPDATE_EDEFAULT == null ? lastPosUpdate != null
+					: !LAST_POS_UPDATE_EDEFAULT.equals(lastPosUpdate);
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_POSITION:
+			return lastKnownPosition != null;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_ORIENTATION:
+			return lastKnownOrientation != null;
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__LAST_KNOWN_ZONEDESCRIPTORS:
+			return lastKnownZonedescriptors != null && !lastKnownZonedescriptors.isEmpty();
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__AGENT_ID:
+			return AGENT_ID_EDEFAULT == null ? agentId != null : !AGENT_ID_EDEFAULT.equals(agentId);
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__EXTRACTED_ATTRIBUTES:
+			return EXTRACTED_ATTRIBUTES_EDEFAULT == null ? extractedAttributes != null
+					: !EXTRACTED_ATTRIBUTES_EDEFAULT.equals(extractedAttributes);
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT__TIMESTAMP:
+			return TIMESTAMP_EDEFAULT == null ? timestamp != null : !TIMESTAMP_EDEFAULT.equals(timestamp);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (protocolName: ");
+		result.append(protocolName);
+		result.append(", serializedMsg: ");
+		result.append(serializedMsg);
+		result.append(", lastPosUpdate: ");
+		result.append(lastPosUpdate);
+		result.append(", agentId: ");
+		result.append(agentId);
+		result.append(", extractedAttributes: ");
+		result.append(extractedAttributes);
+		result.append(", timestamp: ");
+		result.append(timestamp);
+		result.append(')');
+		return result.toString();
+	}
+
+} //IposMsgRcvEventImpl
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/util/IPosDevKitAdapterFactory.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/util/IPosDevKitAdapterFactory.java
index 06ebcdd..831419c 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/util/IPosDevKitAdapterFactory.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/util/IPosDevKitAdapterFactory.java
@@ -161,6 +161,11 @@ public class IPosDevKitAdapterFactory extends AdapterFactoryImpl {
 			return createIPosOtherBeaconEventAdapter();
 		}
 
+		@Override
+		public Adapter caseIposMsgRcvEvent(IposMsgRcvEvent object) {
+			return createIposMsgRcvEventAdapter();
+		}
+
 		@Override
 		public Adapter defaultCase(EObject object) {
 			return createEObjectAdapter();
@@ -446,6 +451,20 @@ public class IPosDevKitAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent <em>Ipos Msg Rcv Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent
+	 * @generated
+	 */
+	public Adapter createIposMsgRcvEventAdapter() {
+		return null;
+	}
+
 	/**
 	 * Creates a new adapter for the default case.
 	 * <!-- begin-user-doc -->
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/util/IPosDevKitSwitch.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/util/IPosDevKitSwitch.java
index b0608cc..37c0c80 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/util/IPosDevKitSwitch.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPosDevKit/util/IPosDevKitSwitch.java
@@ -231,6 +231,13 @@ public class IPosDevKitSwitch<T> extends Switch<T> {
 				result = defaultCase(theEObject);
 			return result;
 		}
+		case IPosDevKitPackage.IPOS_MSG_RCV_EVENT: {
+			IposMsgRcvEvent iposMsgRcvEvent = (IposMsgRcvEvent) theEObject;
+			T result = caseIposMsgRcvEvent(iposMsgRcvEvent);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
 		default:
 			return defaultCase(theEObject);
 		}
@@ -521,6 +528,21 @@ public class IPosDevKitSwitch<T> extends Switch<T> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Ipos Msg Rcv Event</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Ipos Msg Rcv Event</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseIposMsgRcvEvent(IposMsgRcvEvent object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
 	 * <!-- begin-user-doc -->
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPos_DatamodelFactory.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPos_DatamodelFactory.java
index b86a194..739eb3b 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPos_DatamodelFactory.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPos_DatamodelFactory.java
@@ -373,6 +373,15 @@ public interface IPos_DatamodelFactory extends EFactory {
 	 */
 	DataStorageQueryResponse createDataStorageQueryResponse();
 
+	/**
+	 * Returns a new object of class '<em>Message Received Event</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Message Received Event</em>'.
+	 * @generated
+	 */
+	MessageReceivedEvent createMessageReceivedEvent();
+
 	/**
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPos_DatamodelPackage.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPos_DatamodelPackage.java
index fd26e45..6610f02 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPos_DatamodelPackage.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/IPos_DatamodelPackage.java
@@ -2230,6 +2230,79 @@ public interface IPos_DatamodelPackage extends EPackage {
 	 */
 	int DATA_STORAGE_QUERY_RESPONSE_OPERATION_COUNT = 0;
 
+	/**
+	 * The meta object id for the '{@link ipos.project.DataModellntegration.iPos_Datamodel.impl.MessageReceivedEventImpl <em>Message Received Event</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.impl.MessageReceivedEventImpl
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.impl.IPos_DatamodelPackageImpl#getMessageReceivedEvent()
+	 * @generated
+	 */
+	int MESSAGE_RECEIVED_EVENT = 39;
+
+	/**
+	 * The feature id for the '<em><b>Protocol Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MESSAGE_RECEIVED_EVENT__PROTOCOL_NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Serialized Msg</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MESSAGE_RECEIVED_EVENT__SERIALIZED_MSG = 1;
+
+	/**
+	 * The feature id for the '<em><b>Agent Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MESSAGE_RECEIVED_EVENT__AGENT_ID = 2;
+
+	/**
+	 * The feature id for the '<em><b>Extracted Attributes</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MESSAGE_RECEIVED_EVENT__EXTRACTED_ATTRIBUTES = 3;
+
+	/**
+	 * The feature id for the '<em><b>Timestamp</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MESSAGE_RECEIVED_EVENT__TIMESTAMP = 4;
+
+	/**
+	 * The number of structural features of the '<em>Message Received Event</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MESSAGE_RECEIVED_EVENT_FEATURE_COUNT = 5;
+
+	/**
+	 * The number of operations of the '<em>Message Received Event</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MESSAGE_RECEIVED_EVENT_OPERATION_COUNT = 0;
+
 	/**
 	 * The meta object id for the '<em>String List</em>' data type.
 	 * <!-- begin-user-doc -->
@@ -2238,7 +2311,7 @@ public interface IPos_DatamodelPackage extends EPackage {
 	 * @see ipos.project.DataModellntegration.iPos_Datamodel.impl.IPos_DatamodelPackageImpl#getStringList()
 	 * @generated
 	 */
-	int STRING_LIST = 39;
+	int STRING_LIST = 40;
 
 	/**
 	 * The meta object id for the '<em>String Array</em>' data type.
@@ -2247,7 +2320,7 @@ public interface IPos_DatamodelPackage extends EPackage {
 	 * @see ipos.project.DataModellntegration.iPos_Datamodel.impl.IPos_DatamodelPackageImpl#getStringArray()
 	 * @generated
 	 */
-	int STRING_ARRAY = 40;
+	int STRING_ARRAY = 41;
 
 	/**
 	 * The meta object id for the '<em>Float Array3d</em>' data type.
@@ -2256,7 +2329,7 @@ public interface IPos_DatamodelPackage extends EPackage {
 	 * @see ipos.project.DataModellntegration.iPos_Datamodel.impl.IPos_DatamodelPackageImpl#getFloatArray3d()
 	 * @generated
 	 */
-	int FLOAT_ARRAY3D = 41;
+	int FLOAT_ARRAY3D = 42;
 
 	/**
 	 * The meta object id for the '<em>Boolean List</em>' data type.
@@ -2265,7 +2338,7 @@ public interface IPos_DatamodelPackage extends EPackage {
 	 * @see ipos.project.DataModellntegration.iPos_Datamodel.impl.IPos_DatamodelPackageImpl#getBooleanList()
 	 * @generated
 	 */
-	int BOOLEAN_LIST = 42;
+	int BOOLEAN_LIST = 43;
 
 	/**
 	 * The meta object id for the '<em>Float Array</em>' data type.
@@ -2274,7 +2347,26 @@ public interface IPos_DatamodelPackage extends EPackage {
 	 * @see ipos.project.DataModellntegration.iPos_Datamodel.impl.IPos_DatamodelPackageImpl#getFloatArray()
 	 * @generated
 	 */
-	int FLOAT_ARRAY = 43;
+	int FLOAT_ARRAY = 44;
+
+	/**
+	 * The meta object id for the '<em>Byte Array</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.impl.IPos_DatamodelPackageImpl#getByteArray()
+	 * @generated
+	 */
+	int BYTE_ARRAY = 45;
+
+	/**
+	 * The meta object id for the '<em>List Of String Maps</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.LinkedList
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.impl.IPos_DatamodelPackageImpl#getListOfStringMaps()
+	 * @generated
+	 */
+	int LIST_OF_STRING_MAPS = 46;
 
 	/**
 	 * Returns the meta object for class '{@link ipos.project.DataModellntegration.iPos_Datamodel.Agent <em>Agent</em>}'.
@@ -3623,6 +3715,71 @@ public interface IPos_DatamodelPackage extends EPackage {
 	 */
 	EAttribute getDataStorageQueryResponse_TrackingTaskId();
 
+	/**
+	 * Returns the meta object for class '{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent <em>Message Received Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Message Received Event</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent
+	 * @generated
+	 */
+	EClass getMessageReceivedEvent();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getProtocolName <em>Protocol Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Protocol Name</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getProtocolName()
+	 * @see #getMessageReceivedEvent()
+	 * @generated
+	 */
+	EAttribute getMessageReceivedEvent_ProtocolName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getSerializedMsg <em>Serialized Msg</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Serialized Msg</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getSerializedMsg()
+	 * @see #getMessageReceivedEvent()
+	 * @generated
+	 */
+	EAttribute getMessageReceivedEvent_SerializedMsg();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getAgentId <em>Agent Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Agent Id</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getAgentId()
+	 * @see #getMessageReceivedEvent()
+	 * @generated
+	 */
+	EAttribute getMessageReceivedEvent_AgentId();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getExtractedAttributes <em>Extracted Attributes</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Extracted Attributes</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getExtractedAttributes()
+	 * @see #getMessageReceivedEvent()
+	 * @generated
+	 */
+	EAttribute getMessageReceivedEvent_ExtractedAttributes();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getTimestamp <em>Timestamp</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Timestamp</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getTimestamp()
+	 * @see #getMessageReceivedEvent()
+	 * @generated
+	 */
+	EAttribute getMessageReceivedEvent_Timestamp();
+
 	/**
 	 * Returns the meta object for data type '{@link java.util.List <em>String List</em>}'.
 	 * <!-- begin-user-doc -->
@@ -3674,6 +3831,27 @@ public interface IPos_DatamodelPackage extends EPackage {
 	 */
 	EDataType getFloatArray();
 
+	/**
+	 * Returns the meta object for data type '<em>Byte Array</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Byte Array</em>'.
+	 * @model instanceClass="java.lang.byte[]"
+	 * @generated
+	 */
+	EDataType getByteArray();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.LinkedList <em>List Of String Maps</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>List Of String Maps</em>'.
+	 * @see java.util.LinkedList
+	 * @model instanceClass="java.util.LinkedList&lt;java.util.HashMap&lt;java.lang.String, java.lang.String&gt;&gt;"
+	 * @generated
+	 */
+	EDataType getListOfStringMaps();
+
 	/**
 	 * Returns the factory that creates the instances of the model.
 	 * <!-- begin-user-doc -->
@@ -4789,6 +4967,57 @@ public interface IPos_DatamodelPackage extends EPackage {
 		EAttribute DATA_STORAGE_QUERY_RESPONSE__TRACKING_TASK_ID = eINSTANCE
 				.getDataStorageQueryResponse_TrackingTaskId();
 
+		/**
+		 * The meta object literal for the '{@link ipos.project.DataModellntegration.iPos_Datamodel.impl.MessageReceivedEventImpl <em>Message Received Event</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.impl.MessageReceivedEventImpl
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.impl.IPos_DatamodelPackageImpl#getMessageReceivedEvent()
+		 * @generated
+		 */
+		EClass MESSAGE_RECEIVED_EVENT = eINSTANCE.getMessageReceivedEvent();
+
+		/**
+		 * The meta object literal for the '<em><b>Protocol Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MESSAGE_RECEIVED_EVENT__PROTOCOL_NAME = eINSTANCE.getMessageReceivedEvent_ProtocolName();
+
+		/**
+		 * The meta object literal for the '<em><b>Serialized Msg</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MESSAGE_RECEIVED_EVENT__SERIALIZED_MSG = eINSTANCE.getMessageReceivedEvent_SerializedMsg();
+
+		/**
+		 * The meta object literal for the '<em><b>Agent Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MESSAGE_RECEIVED_EVENT__AGENT_ID = eINSTANCE.getMessageReceivedEvent_AgentId();
+
+		/**
+		 * The meta object literal for the '<em><b>Extracted Attributes</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MESSAGE_RECEIVED_EVENT__EXTRACTED_ATTRIBUTES = eINSTANCE
+				.getMessageReceivedEvent_ExtractedAttributes();
+
+		/**
+		 * The meta object literal for the '<em><b>Timestamp</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MESSAGE_RECEIVED_EVENT__TIMESTAMP = eINSTANCE.getMessageReceivedEvent_Timestamp();
+
 		/**
 		 * The meta object literal for the '<em>String List</em>' data type.
 		 * <!-- begin-user-doc -->
@@ -4835,6 +5064,25 @@ public interface IPos_DatamodelPackage extends EPackage {
 		 */
 		EDataType FLOAT_ARRAY = eINSTANCE.getFloatArray();
 
+		/**
+		 * The meta object literal for the '<em>Byte Array</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.impl.IPos_DatamodelPackageImpl#getByteArray()
+		 * @generated
+		 */
+		EDataType BYTE_ARRAY = eINSTANCE.getByteArray();
+
+		/**
+		 * The meta object literal for the '<em>List Of String Maps</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.LinkedList
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.impl.IPos_DatamodelPackageImpl#getListOfStringMaps()
+		 * @generated
+		 */
+		EDataType LIST_OF_STRING_MAPS = eINSTANCE.getListOfStringMaps();
+
 	}
 
 } //IPos_DatamodelPackage
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/MessageReceivedEvent.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/MessageReceivedEvent.java
new file mode 100644
index 0000000..3b4bbd2
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/MessageReceivedEvent.java
@@ -0,0 +1,141 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Message Received Event</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getProtocolName <em>Protocol Name</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getSerializedMsg <em>Serialized Msg</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getAgentId <em>Agent Id</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getExtractedAttributes <em>Extracted Attributes</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getTimestamp <em>Timestamp</em>}</li>
+ * </ul>
+ *
+ * @see ipos.project.DataModellntegration.iPos_Datamodel.IPos_DatamodelPackage#getMessageReceivedEvent()
+ * @model
+ * @generated
+ */
+public interface MessageReceivedEvent extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Protocol Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Protocol Name</em>' attribute.
+	 * @see #setProtocolName(String)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPos_DatamodelPackage#getMessageReceivedEvent_ProtocolName()
+	 * @model
+	 * @generated
+	 */
+	String getProtocolName();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getProtocolName <em>Protocol Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Protocol Name</em>' attribute.
+	 * @see #getProtocolName()
+	 * @generated
+	 */
+	void setProtocolName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Serialized Msg</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Serialized Msg</em>' attribute.
+	 * @see #setSerializedMsg(byte[])
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPos_DatamodelPackage#getMessageReceivedEvent_SerializedMsg()
+	 * @model dataType="ipos.project.DataModellntegration.iPos_Datamodel.ByteArray"
+	 * @generated
+	 */
+	byte[] getSerializedMsg();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getSerializedMsg <em>Serialized Msg</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Serialized Msg</em>' attribute.
+	 * @see #getSerializedMsg()
+	 * @generated
+	 */
+	void setSerializedMsg(byte[] value);
+
+	/**
+	 * Returns the value of the '<em><b>Agent Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Agent Id</em>' attribute.
+	 * @see #setAgentId(String)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPos_DatamodelPackage#getMessageReceivedEvent_AgentId()
+	 * @model
+	 * @generated
+	 */
+	String getAgentId();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getAgentId <em>Agent Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Agent Id</em>' attribute.
+	 * @see #getAgentId()
+	 * @generated
+	 */
+	void setAgentId(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Extracted Attributes</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Extracted Attributes</em>' attribute.
+	 * @see #setExtractedAttributes(LinkedList)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPos_DatamodelPackage#getMessageReceivedEvent_ExtractedAttributes()
+	 * @model dataType="ipos.project.DataModellntegration.iPos_Datamodel.ListOfStringMaps"
+	 * @generated
+	 */
+	LinkedList<HashMap<String, String>> getExtractedAttributes();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getExtractedAttributes <em>Extracted Attributes</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Extracted Attributes</em>' attribute.
+	 * @see #getExtractedAttributes()
+	 * @generated
+	 */
+	void setExtractedAttributes(LinkedList<HashMap<String, String>> value);
+
+	/**
+	 * Returns the value of the '<em><b>Timestamp</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Timestamp</em>' attribute.
+	 * @see #setTimestamp(String)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.IPos_DatamodelPackage#getMessageReceivedEvent_Timestamp()
+	 * @model
+	 * @generated
+	 */
+	String getTimestamp();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent#getTimestamp <em>Timestamp</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Timestamp</em>' attribute.
+	 * @see #getTimestamp()
+	 * @generated
+	 */
+	void setTimestamp(String value);
+
+} // MessageReceivedEvent
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/OFBiz/impl/OFBizPackageImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/OFBiz/impl/OFBizPackageImpl.java
index 651d323..09b3089 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/OFBiz/impl/OFBizPackageImpl.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/OFBiz/impl/OFBizPackageImpl.java
@@ -18,6 +18,8 @@ import ipos.project.DataModellntegration.iPos_Datamodel.OFBiz.PicklistRole;
 
 import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.ToozPackage;
 import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.impl.ToozPackageImpl;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050PackageImpl;
 import ipos.project.DataModellntegration.iPos_Datamodel.impl.IPos_DatamodelPackageImpl;
 
 import org.eclipse.emf.ecore.EAttribute;
@@ -137,18 +139,24 @@ public class OFBizPackageImpl extends EPackageImpl implements OFBizPackage {
 		ToozPackageImpl theToozPackage = (ToozPackageImpl) (registeredPackage instanceof ToozPackageImpl
 				? registeredPackage
 				: ToozPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(VDA5050Package.eNS_URI);
+		VDA5050PackageImpl theVDA5050Package = (VDA5050PackageImpl) (registeredPackage instanceof VDA5050PackageImpl
+				? registeredPackage
+				: VDA5050Package.eINSTANCE);
 
 		// Create package meta-data objects
 		theOFBizPackage.createPackageContents();
 		theIPos_DatamodelPackage.createPackageContents();
 		theIPosDevKitPackage.createPackageContents();
 		theToozPackage.createPackageContents();
+		theVDA5050Package.createPackageContents();
 
 		// Initialize created meta-data
 		theOFBizPackage.initializePackageContents();
 		theIPos_DatamodelPackage.initializePackageContents();
 		theIPosDevKitPackage.initializePackageContents();
 		theToozPackage.initializePackageContents();
+		theVDA5050Package.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theOFBizPackage.freeze();
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/DistantEntity.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/DistantEntity.java
index 274e538..1732ed8 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/DistantEntity.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/DistantEntity.java
@@ -21,6 +21,7 @@ import org.eclipse.emf.ecore.EObject;
  *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.Tooz.DistantEntity#getDistance <em>Distance</em>}</li>
  *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.Tooz.DistantEntity#getProximityIndex <em>Proximity Index</em>}</li>
  *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.Tooz.DistantEntity#getEntityData <em>Entity Data</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.Tooz.DistantEntity#getTimeStamp <em>Time Stamp</em>}</li>
  * </ul>
  *
  * @see ipos.project.DataModellntegration.iPos_Datamodel.Tooz.ToozPackage#getDistantEntity()
@@ -160,4 +161,26 @@ public interface DistantEntity extends EObject {
 	 */
 	void setEntityData(Map<String, String> value);
 
+	/**
+	 * Returns the value of the '<em><b>Time Stamp</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Time Stamp</em>' attribute.
+	 * @see #setTimeStamp(String)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.Tooz.ToozPackage#getDistantEntity_TimeStamp()
+	 * @model dataType="org.eclipse.emf.ecore.xml.type.String"
+	 * @generated
+	 */
+	String getTimeStamp();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.Tooz.DistantEntity#getTimeStamp <em>Time Stamp</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Time Stamp</em>' attribute.
+	 * @see #getTimeStamp()
+	 * @generated
+	 */
+	void setTimeStamp(String value);
+
 } // DistantEntity
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/ToozPackage.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/ToozPackage.java
index b829660..2256759 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/ToozPackage.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/ToozPackage.java
@@ -156,6 +156,15 @@ public interface ToozPackage extends EPackage {
 	 */
 	int DISTANT_ENTITY__ENTITY_DATA = 5;
 
+	/**
+	 * The feature id for the '<em><b>Time Stamp</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTANT_ENTITY__TIME_STAMP = 6;
+
 	/**
 	 * The number of structural features of the '<em>Distant Entity</em>' class.
 	 * <!-- begin-user-doc -->
@@ -163,7 +172,7 @@ public interface ToozPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int DISTANT_ENTITY_FEATURE_COUNT = 6;
+	int DISTANT_ENTITY_FEATURE_COUNT = 7;
 
 	/**
 	 * The number of operations of the '<em>Distant Entity</em>' class.
@@ -271,6 +280,17 @@ public interface ToozPackage extends EPackage {
 	 */
 	EAttribute getDistantEntity_EntityData();
 
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.Tooz.DistantEntity#getTimeStamp <em>Time Stamp</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Time Stamp</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.Tooz.DistantEntity#getTimeStamp()
+	 * @see #getDistantEntity()
+	 * @generated
+	 */
+	EAttribute getDistantEntity_TimeStamp();
+
 	/**
 	 * Returns the factory that creates the instances of the model.
 	 * <!-- begin-user-doc -->
@@ -370,6 +390,14 @@ public interface ToozPackage extends EPackage {
 		 */
 		EAttribute DISTANT_ENTITY__ENTITY_DATA = eINSTANCE.getDistantEntity_EntityData();
 
+		/**
+		 * The meta object literal for the '<em><b>Time Stamp</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DISTANT_ENTITY__TIME_STAMP = eINSTANCE.getDistantEntity_TimeStamp();
+
 	}
 
 } //ToozPackage
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/impl/DistantEntityImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/impl/DistantEntityImpl.java
index ef6eb56..08f7116 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/impl/DistantEntityImpl.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/impl/DistantEntityImpl.java
@@ -28,6 +28,7 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.Tooz.impl.DistantEntityImpl#getDistance <em>Distance</em>}</li>
  *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.Tooz.impl.DistantEntityImpl#getProximityIndex <em>Proximity Index</em>}</li>
  *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.Tooz.impl.DistantEntityImpl#getEntityData <em>Entity Data</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.Tooz.impl.DistantEntityImpl#getTimeStamp <em>Time Stamp</em>}</li>
  * </ul>
  *
  * @generated
@@ -143,6 +144,26 @@ public class DistantEntityImpl extends MinimalEObjectImpl.Container implements D
 	 */
 	protected Map<String, String> entityData;
 
+	/**
+	 * The default value of the '{@link #getTimeStamp() <em>Time Stamp</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTimeStamp()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TIME_STAMP_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getTimeStamp() <em>Time Stamp</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTimeStamp()
+	 * @generated
+	 * @ordered
+	 */
+	protected String timeStamp = TIME_STAMP_EDEFAULT;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -294,6 +315,28 @@ public class DistantEntityImpl extends MinimalEObjectImpl.Container implements D
 					oldEntityData, entityData));
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getTimeStamp() {
+		return timeStamp;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTimeStamp(String newTimeStamp) {
+		String oldTimeStamp = timeStamp;
+		timeStamp = newTimeStamp;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ToozPackage.DISTANT_ENTITY__TIME_STAMP, oldTimeStamp,
+					timeStamp));
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -314,6 +357,8 @@ public class DistantEntityImpl extends MinimalEObjectImpl.Container implements D
 			return getProximityIndex();
 		case ToozPackage.DISTANT_ENTITY__ENTITY_DATA:
 			return getEntityData();
+		case ToozPackage.DISTANT_ENTITY__TIME_STAMP:
+			return getTimeStamp();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -345,6 +390,9 @@ public class DistantEntityImpl extends MinimalEObjectImpl.Container implements D
 		case ToozPackage.DISTANT_ENTITY__ENTITY_DATA:
 			setEntityData((Map<String, String>) newValue);
 			return;
+		case ToozPackage.DISTANT_ENTITY__TIME_STAMP:
+			setTimeStamp((String) newValue);
+			return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -375,6 +423,9 @@ public class DistantEntityImpl extends MinimalEObjectImpl.Container implements D
 		case ToozPackage.DISTANT_ENTITY__ENTITY_DATA:
 			setEntityData((Map<String, String>) null);
 			return;
+		case ToozPackage.DISTANT_ENTITY__TIME_STAMP:
+			setTimeStamp(TIME_STAMP_EDEFAULT);
+			return;
 		}
 		super.eUnset(featureID);
 	}
@@ -402,6 +453,8 @@ public class DistantEntityImpl extends MinimalEObjectImpl.Container implements D
 			return proximityIndex != PROXIMITY_INDEX_EDEFAULT;
 		case ToozPackage.DISTANT_ENTITY__ENTITY_DATA:
 			return entityData != null;
+		case ToozPackage.DISTANT_ENTITY__TIME_STAMP:
+			return TIME_STAMP_EDEFAULT == null ? timeStamp != null : !TIME_STAMP_EDEFAULT.equals(timeStamp);
 		}
 		return super.eIsSet(featureID);
 	}
@@ -429,6 +482,8 @@ public class DistantEntityImpl extends MinimalEObjectImpl.Container implements D
 		result.append(proximityIndex);
 		result.append(", entityData: ");
 		result.append(entityData);
+		result.append(", timeStamp: ");
+		result.append(timeStamp);
 		result.append(')');
 		return result.toString();
 	}
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/impl/ToozPackageImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/impl/ToozPackageImpl.java
index 5c825ff..2b559fe 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/impl/ToozPackageImpl.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/Tooz/impl/ToozPackageImpl.java
@@ -17,6 +17,8 @@ import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.MonitoringTarget;
 import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.ToozFactory;
 import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.ToozPackage;
 
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050PackageImpl;
 import ipos.project.DataModellntegration.iPos_Datamodel.impl.IPos_DatamodelPackageImpl;
 
 import org.eclipse.emf.ecore.EAttribute;
@@ -115,18 +117,24 @@ public class ToozPackageImpl extends EPackageImpl implements ToozPackage {
 		IPosDevKitPackageImpl theIPosDevKitPackage = (IPosDevKitPackageImpl) (registeredPackage instanceof IPosDevKitPackageImpl
 				? registeredPackage
 				: IPosDevKitPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(VDA5050Package.eNS_URI);
+		VDA5050PackageImpl theVDA5050Package = (VDA5050PackageImpl) (registeredPackage instanceof VDA5050PackageImpl
+				? registeredPackage
+				: VDA5050Package.eINSTANCE);
 
 		// Create package meta-data objects
 		theToozPackage.createPackageContents();
 		theIPos_DatamodelPackage.createPackageContents();
 		theOFBizPackage.createPackageContents();
 		theIPosDevKitPackage.createPackageContents();
+		theVDA5050Package.createPackageContents();
 
 		// Initialize created meta-data
 		theToozPackage.initializePackageContents();
 		theIPos_DatamodelPackage.initializePackageContents();
 		theOFBizPackage.initializePackageContents();
 		theIPosDevKitPackage.initializePackageContents();
+		theVDA5050Package.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theToozPackage.freeze();
@@ -217,6 +225,15 @@ public class ToozPackageImpl extends EPackageImpl implements ToozPackage {
 		return (EAttribute) distantEntityEClass.getEStructuralFeatures().get(5);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDistantEntity_TimeStamp() {
+		return (EAttribute) distantEntityEClass.getEStructuralFeatures().get(6);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -256,6 +273,7 @@ public class ToozPackageImpl extends EPackageImpl implements ToozPackage {
 		createEAttribute(distantEntityEClass, DISTANT_ENTITY__DISTANCE);
 		createEAttribute(distantEntityEClass, DISTANT_ENTITY__PROXIMITY_INDEX);
 		createEAttribute(distantEntityEClass, DISTANT_ENTITY__ENTITY_DATA);
+		createEAttribute(distantEntityEClass, DISTANT_ENTITY__TIME_STAMP);
 	}
 
 	/**
@@ -323,6 +341,9 @@ public class ToozPackageImpl extends EPackageImpl implements ToozPackage {
 		g1.getETypeArguments().add(g2);
 		initEAttribute(getDistantEntity_EntityData(), g1, "entityData", null, 0, 1, DistantEntity.class, IS_TRANSIENT,
 				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDistantEntity_TimeStamp(), theXMLTypePackage.getString(), "timeStamp", null, 0, 1,
+				DistantEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
 	}
 
 } //ToozPackageImpl
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/AgvPosition.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/AgvPosition.java
new file mode 100644
index 0000000..b8058dc
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/AgvPosition.java
@@ -0,0 +1,115 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Agv Position</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getX <em>X</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getY <em>Y</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getTheta <em>Theta</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getMapId <em>Map Id</em>}</li>
+ * </ul>
+ *
+ * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getAgvPosition()
+ * @model
+ * @generated
+ */
+public interface AgvPosition extends EObject {
+	/**
+	 * Returns the value of the '<em><b>X</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>X</em>' attribute.
+	 * @see #setX(float)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getAgvPosition_X()
+	 * @model
+	 * @generated
+	 */
+	float getX();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getX <em>X</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>X</em>' attribute.
+	 * @see #getX()
+	 * @generated
+	 */
+	void setX(float value);
+
+	/**
+	 * Returns the value of the '<em><b>Y</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Y</em>' attribute.
+	 * @see #setY(float)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getAgvPosition_Y()
+	 * @model
+	 * @generated
+	 */
+	float getY();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getY <em>Y</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Y</em>' attribute.
+	 * @see #getY()
+	 * @generated
+	 */
+	void setY(float value);
+
+	/**
+	 * Returns the value of the '<em><b>Theta</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Theta</em>' attribute.
+	 * @see #setTheta(float)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getAgvPosition_Theta()
+	 * @model
+	 * @generated
+	 */
+	float getTheta();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getTheta <em>Theta</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Theta</em>' attribute.
+	 * @see #getTheta()
+	 * @generated
+	 */
+	void setTheta(float value);
+
+	/**
+	 * Returns the value of the '<em><b>Map Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Map Id</em>' attribute.
+	 * @see #setMapId(String)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getAgvPosition_MapId()
+	 * @model
+	 * @generated
+	 */
+	String getMapId();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getMapId <em>Map Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Map Id</em>' attribute.
+	 * @see #getMapId()
+	 * @generated
+	 */
+	void setMapId(String value);
+
+} // AgvPosition
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/AgvState.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/AgvState.java
new file mode 100644
index 0000000..d8ae2e2
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/AgvState.java
@@ -0,0 +1,189 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Agv State</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getTimeStamp <em>Time Stamp</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getSerialNumber <em>Serial Number</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getLastNodeId <em>Last Node Id</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getBatteryState <em>Battery State</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getErrors <em>Errors</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getAgvposition <em>Agvposition</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getLoads <em>Loads</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getManufacturer <em>Manufacturer</em>}</li>
+ * </ul>
+ *
+ * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getAgvState()
+ * @model
+ * @generated
+ */
+public interface AgvState extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Time Stamp</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Time Stamp</em>' attribute.
+	 * @see #setTimeStamp(String)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getAgvState_TimeStamp()
+	 * @model
+	 * @generated
+	 */
+	String getTimeStamp();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getTimeStamp <em>Time Stamp</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Time Stamp</em>' attribute.
+	 * @see #getTimeStamp()
+	 * @generated
+	 */
+	void setTimeStamp(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Serial Number</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Serial Number</em>' attribute.
+	 * @see #setSerialNumber(String)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getAgvState_SerialNumber()
+	 * @model
+	 * @generated
+	 */
+	String getSerialNumber();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getSerialNumber <em>Serial Number</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Serial Number</em>' attribute.
+	 * @see #getSerialNumber()
+	 * @generated
+	 */
+	void setSerialNumber(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Last Node Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Last Node Id</em>' attribute.
+	 * @see #setLastNodeId(String)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getAgvState_LastNodeId()
+	 * @model
+	 * @generated
+	 */
+	String getLastNodeId();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getLastNodeId <em>Last Node Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Last Node Id</em>' attribute.
+	 * @see #getLastNodeId()
+	 * @generated
+	 */
+	void setLastNodeId(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Battery State</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Battery State</em>' reference.
+	 * @see #setBatteryState(BatteryState)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getAgvState_BatteryState()
+	 * @model
+	 * @generated
+	 */
+	BatteryState getBatteryState();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getBatteryState <em>Battery State</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Battery State</em>' reference.
+	 * @see #getBatteryState()
+	 * @generated
+	 */
+	void setBatteryState(BatteryState value);
+
+	/**
+	 * Returns the value of the '<em><b>Errors</b></em>' reference list.
+	 * The list contents are of type {@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Errors</em>' reference list.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getAgvState_Errors()
+	 * @model
+	 * @generated
+	 */
+	EList<ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error> getErrors();
+
+	/**
+	 * Returns the value of the '<em><b>Agvposition</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Agvposition</em>' reference.
+	 * @see #setAgvposition(AgvPosition)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getAgvState_Agvposition()
+	 * @model
+	 * @generated
+	 */
+	AgvPosition getAgvposition();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getAgvposition <em>Agvposition</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Agvposition</em>' reference.
+	 * @see #getAgvposition()
+	 * @generated
+	 */
+	void setAgvposition(AgvPosition value);
+
+	/**
+	 * Returns the value of the '<em><b>Loads</b></em>' reference list.
+	 * The list contents are of type {@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Loads</em>' reference list.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getAgvState_Loads()
+	 * @model
+	 * @generated
+	 */
+	EList<Load> getLoads();
+
+	/**
+	 * Returns the value of the '<em><b>Manufacturer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Manufacturer</em>' attribute.
+	 * @see #setManufacturer(String)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getAgvState_Manufacturer()
+	 * @model
+	 * @generated
+	 */
+	String getManufacturer();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getManufacturer <em>Manufacturer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Manufacturer</em>' attribute.
+	 * @see #getManufacturer()
+	 * @generated
+	 */
+	void setManufacturer(String value);
+
+} // AgvState
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/BatteryState.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/BatteryState.java
new file mode 100644
index 0000000..1cff3f3
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/BatteryState.java
@@ -0,0 +1,46 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Battery State</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.BatteryState#getBatteryCharge <em>Battery Charge</em>}</li>
+ * </ul>
+ *
+ * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getBatteryState()
+ * @model
+ * @generated
+ */
+public interface BatteryState extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Battery Charge</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Battery Charge</em>' attribute.
+	 * @see #setBatteryCharge(float)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getBatteryState_BatteryCharge()
+	 * @model
+	 * @generated
+	 */
+	float getBatteryCharge();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.BatteryState#getBatteryCharge <em>Battery Charge</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Battery Charge</em>' attribute.
+	 * @see #getBatteryCharge()
+	 * @generated
+	 */
+	void setBatteryCharge(float value);
+
+} // BatteryState
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/Error.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/Error.java
new file mode 100644
index 0000000..f64088e
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/Error.java
@@ -0,0 +1,46 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Error</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error#getErrorType <em>Error Type</em>}</li>
+ * </ul>
+ *
+ * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getError()
+ * @model
+ * @generated
+ */
+public interface Error extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Error Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Error Type</em>' attribute.
+	 * @see #setErrorType(String)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getError_ErrorType()
+	 * @model
+	 * @generated
+	 */
+	String getErrorType();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error#getErrorType <em>Error Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Error Type</em>' attribute.
+	 * @see #getErrorType()
+	 * @generated
+	 */
+	void setErrorType(String value);
+
+} // Error
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/Load.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/Load.java
new file mode 100644
index 0000000..2f5c1dd
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/Load.java
@@ -0,0 +1,46 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Load</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load#getLoadId <em>Load Id</em>}</li>
+ * </ul>
+ *
+ * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getLoad()
+ * @model
+ * @generated
+ */
+public interface Load extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Load Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Load Id</em>' attribute.
+	 * @see #setLoadId(String)
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#getLoad_LoadId()
+	 * @model
+	 * @generated
+	 */
+	String getLoadId();
+
+	/**
+	 * Sets the value of the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load#getLoadId <em>Load Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Load Id</em>' attribute.
+	 * @see #getLoadId()
+	 * @generated
+	 */
+	void setLoadId(String value);
+
+} // Load
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/VDA5050Factory.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/VDA5050Factory.java
new file mode 100644
index 0000000..eaca1b8
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/VDA5050Factory.java
@@ -0,0 +1,78 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package
+ * @generated
+ */
+public interface VDA5050Factory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	VDA5050Factory eINSTANCE = ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050FactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Agv State</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Agv State</em>'.
+	 * @generated
+	 */
+	AgvState createAgvState();
+
+	/**
+	 * Returns a new object of class '<em>Battery State</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Battery State</em>'.
+	 * @generated
+	 */
+	BatteryState createBatteryState();
+
+	/**
+	 * Returns a new object of class '<em>Error</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Error</em>'.
+	 * @generated
+	 */
+	Error createError();
+
+	/**
+	 * Returns a new object of class '<em>Agv Position</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Agv Position</em>'.
+	 * @generated
+	 */
+	AgvPosition createAgvPosition();
+
+	/**
+	 * Returns a new object of class '<em>Load</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Load</em>'.
+	 * @generated
+	 */
+	Load createLoad();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	VDA5050Package getVDA5050Package();
+
+} //VDA5050Factory
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/VDA5050Package.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/VDA5050Package.java
new file mode 100644
index 0000000..3dcb767
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/VDA5050Package.java
@@ -0,0 +1,725 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Factory
+ * @model kind="package"
+ * @generated
+ */
+public interface VDA5050Package extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "VDA5050";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "vda5050";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "vda5050";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	VDA5050Package eINSTANCE = ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050PackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvStateImpl <em>Agv State</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvStateImpl
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050PackageImpl#getAgvState()
+	 * @generated
+	 */
+	int AGV_STATE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Time Stamp</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_STATE__TIME_STAMP = 0;
+
+	/**
+	 * The feature id for the '<em><b>Serial Number</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_STATE__SERIAL_NUMBER = 1;
+
+	/**
+	 * The feature id for the '<em><b>Last Node Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_STATE__LAST_NODE_ID = 2;
+
+	/**
+	 * The feature id for the '<em><b>Battery State</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_STATE__BATTERY_STATE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Errors</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_STATE__ERRORS = 4;
+
+	/**
+	 * The feature id for the '<em><b>Agvposition</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_STATE__AGVPOSITION = 5;
+
+	/**
+	 * The feature id for the '<em><b>Loads</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_STATE__LOADS = 6;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_STATE__MANUFACTURER = 7;
+
+	/**
+	 * The number of structural features of the '<em>Agv State</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_STATE_FEATURE_COUNT = 8;
+
+	/**
+	 * The number of operations of the '<em>Agv State</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_STATE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.BatteryStateImpl <em>Battery State</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.BatteryStateImpl
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050PackageImpl#getBatteryState()
+	 * @generated
+	 */
+	int BATTERY_STATE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Battery Charge</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATTERY_STATE__BATTERY_CHARGE = 0;
+
+	/**
+	 * The number of structural features of the '<em>Battery State</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATTERY_STATE_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Battery State</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATTERY_STATE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.ErrorImpl <em>Error</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.ErrorImpl
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050PackageImpl#getError()
+	 * @generated
+	 */
+	int ERROR = 2;
+
+	/**
+	 * The feature id for the '<em><b>Error Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ERROR__ERROR_TYPE = 0;
+
+	/**
+	 * The number of structural features of the '<em>Error</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ERROR_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Error</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ERROR_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvPositionImpl <em>Agv Position</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvPositionImpl
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050PackageImpl#getAgvPosition()
+	 * @generated
+	 */
+	int AGV_POSITION = 3;
+
+	/**
+	 * The feature id for the '<em><b>X</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_POSITION__X = 0;
+
+	/**
+	 * The feature id for the '<em><b>Y</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_POSITION__Y = 1;
+
+	/**
+	 * The feature id for the '<em><b>Theta</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_POSITION__THETA = 2;
+
+	/**
+	 * The feature id for the '<em><b>Map Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_POSITION__MAP_ID = 3;
+
+	/**
+	 * The number of structural features of the '<em>Agv Position</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_POSITION_FEATURE_COUNT = 4;
+
+	/**
+	 * The number of operations of the '<em>Agv Position</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AGV_POSITION_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.LoadImpl <em>Load</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.LoadImpl
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050PackageImpl#getLoad()
+	 * @generated
+	 */
+	int LOAD = 4;
+
+	/**
+	 * The feature id for the '<em><b>Load Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOAD__LOAD_ID = 0;
+
+	/**
+	 * The number of structural features of the '<em>Load</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOAD_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Load</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOAD_OPERATION_COUNT = 0;
+
+	/**
+	 * Returns the meta object for class '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState <em>Agv State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Agv State</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState
+	 * @generated
+	 */
+	EClass getAgvState();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getTimeStamp <em>Time Stamp</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Time Stamp</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getTimeStamp()
+	 * @see #getAgvState()
+	 * @generated
+	 */
+	EAttribute getAgvState_TimeStamp();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getSerialNumber <em>Serial Number</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Serial Number</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getSerialNumber()
+	 * @see #getAgvState()
+	 * @generated
+	 */
+	EAttribute getAgvState_SerialNumber();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getLastNodeId <em>Last Node Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Last Node Id</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getLastNodeId()
+	 * @see #getAgvState()
+	 * @generated
+	 */
+	EAttribute getAgvState_LastNodeId();
+
+	/**
+	 * Returns the meta object for the reference '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getBatteryState <em>Battery State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Battery State</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getBatteryState()
+	 * @see #getAgvState()
+	 * @generated
+	 */
+	EReference getAgvState_BatteryState();
+
+	/**
+	 * Returns the meta object for the reference list '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getErrors <em>Errors</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Errors</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getErrors()
+	 * @see #getAgvState()
+	 * @generated
+	 */
+	EReference getAgvState_Errors();
+
+	/**
+	 * Returns the meta object for the reference '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getAgvposition <em>Agvposition</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Agvposition</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getAgvposition()
+	 * @see #getAgvState()
+	 * @generated
+	 */
+	EReference getAgvState_Agvposition();
+
+	/**
+	 * Returns the meta object for the reference list '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getLoads <em>Loads</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Loads</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getLoads()
+	 * @see #getAgvState()
+	 * @generated
+	 */
+	EReference getAgvState_Loads();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getManufacturer <em>Manufacturer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Manufacturer</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState#getManufacturer()
+	 * @see #getAgvState()
+	 * @generated
+	 */
+	EAttribute getAgvState_Manufacturer();
+
+	/**
+	 * Returns the meta object for class '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.BatteryState <em>Battery State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Battery State</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.BatteryState
+	 * @generated
+	 */
+	EClass getBatteryState();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.BatteryState#getBatteryCharge <em>Battery Charge</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Battery Charge</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.BatteryState#getBatteryCharge()
+	 * @see #getBatteryState()
+	 * @generated
+	 */
+	EAttribute getBatteryState_BatteryCharge();
+
+	/**
+	 * Returns the meta object for class '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error <em>Error</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Error</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error
+	 * @generated
+	 */
+	EClass getError();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error#getErrorType <em>Error Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Error Type</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error#getErrorType()
+	 * @see #getError()
+	 * @generated
+	 */
+	EAttribute getError_ErrorType();
+
+	/**
+	 * Returns the meta object for class '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition <em>Agv Position</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Agv Position</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition
+	 * @generated
+	 */
+	EClass getAgvPosition();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getX <em>X</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>X</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getX()
+	 * @see #getAgvPosition()
+	 * @generated
+	 */
+	EAttribute getAgvPosition_X();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getY <em>Y</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Y</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getY()
+	 * @see #getAgvPosition()
+	 * @generated
+	 */
+	EAttribute getAgvPosition_Y();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getTheta <em>Theta</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Theta</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getTheta()
+	 * @see #getAgvPosition()
+	 * @generated
+	 */
+	EAttribute getAgvPosition_Theta();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getMapId <em>Map Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Map Id</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition#getMapId()
+	 * @see #getAgvPosition()
+	 * @generated
+	 */
+	EAttribute getAgvPosition_MapId();
+
+	/**
+	 * Returns the meta object for class '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load <em>Load</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Load</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load
+	 * @generated
+	 */
+	EClass getLoad();
+
+	/**
+	 * Returns the meta object for the attribute '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load#getLoadId <em>Load Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Load Id</em>'.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load#getLoadId()
+	 * @see #getLoad()
+	 * @generated
+	 */
+	EAttribute getLoad_LoadId();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	VDA5050Factory getVDA5050Factory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvStateImpl <em>Agv State</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvStateImpl
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050PackageImpl#getAgvState()
+		 * @generated
+		 */
+		EClass AGV_STATE = eINSTANCE.getAgvState();
+		/**
+		 * The meta object literal for the '<em><b>Time Stamp</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute AGV_STATE__TIME_STAMP = eINSTANCE.getAgvState_TimeStamp();
+		/**
+		 * The meta object literal for the '<em><b>Serial Number</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute AGV_STATE__SERIAL_NUMBER = eINSTANCE.getAgvState_SerialNumber();
+		/**
+		 * The meta object literal for the '<em><b>Last Node Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute AGV_STATE__LAST_NODE_ID = eINSTANCE.getAgvState_LastNodeId();
+		/**
+		 * The meta object literal for the '<em><b>Battery State</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference AGV_STATE__BATTERY_STATE = eINSTANCE.getAgvState_BatteryState();
+		/**
+		 * The meta object literal for the '<em><b>Errors</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference AGV_STATE__ERRORS = eINSTANCE.getAgvState_Errors();
+		/**
+		 * The meta object literal for the '<em><b>Agvposition</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference AGV_STATE__AGVPOSITION = eINSTANCE.getAgvState_Agvposition();
+		/**
+		 * The meta object literal for the '<em><b>Loads</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference AGV_STATE__LOADS = eINSTANCE.getAgvState_Loads();
+		/**
+		 * The meta object literal for the '<em><b>Manufacturer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute AGV_STATE__MANUFACTURER = eINSTANCE.getAgvState_Manufacturer();
+		/**
+		 * The meta object literal for the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.BatteryStateImpl <em>Battery State</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.BatteryStateImpl
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050PackageImpl#getBatteryState()
+		 * @generated
+		 */
+		EClass BATTERY_STATE = eINSTANCE.getBatteryState();
+		/**
+		 * The meta object literal for the '<em><b>Battery Charge</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute BATTERY_STATE__BATTERY_CHARGE = eINSTANCE.getBatteryState_BatteryCharge();
+		/**
+		 * The meta object literal for the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.ErrorImpl <em>Error</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.ErrorImpl
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050PackageImpl#getError()
+		 * @generated
+		 */
+		EClass ERROR = eINSTANCE.getError();
+		/**
+		 * The meta object literal for the '<em><b>Error Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ERROR__ERROR_TYPE = eINSTANCE.getError_ErrorType();
+		/**
+		 * The meta object literal for the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvPositionImpl <em>Agv Position</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvPositionImpl
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050PackageImpl#getAgvPosition()
+		 * @generated
+		 */
+		EClass AGV_POSITION = eINSTANCE.getAgvPosition();
+		/**
+		 * The meta object literal for the '<em><b>X</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute AGV_POSITION__X = eINSTANCE.getAgvPosition_X();
+		/**
+		 * The meta object literal for the '<em><b>Y</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute AGV_POSITION__Y = eINSTANCE.getAgvPosition_Y();
+		/**
+		 * The meta object literal for the '<em><b>Theta</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute AGV_POSITION__THETA = eINSTANCE.getAgvPosition_Theta();
+		/**
+		 * The meta object literal for the '<em><b>Map Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute AGV_POSITION__MAP_ID = eINSTANCE.getAgvPosition_MapId();
+		/**
+		 * The meta object literal for the '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.LoadImpl <em>Load</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.LoadImpl
+		 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050PackageImpl#getLoad()
+		 * @generated
+		 */
+		EClass LOAD = eINSTANCE.getLoad();
+		/**
+		 * The meta object literal for the '<em><b>Load Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LOAD__LOAD_ID = eINSTANCE.getLoad_LoadId();
+
+	}
+
+} //VDA5050Package
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/AgvPositionImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/AgvPositionImpl.java
new file mode 100644
index 0000000..a9a32cf
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/AgvPositionImpl.java
@@ -0,0 +1,327 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Agv Position</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvPositionImpl#getX <em>X</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvPositionImpl#getY <em>Y</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvPositionImpl#getTheta <em>Theta</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvPositionImpl#getMapId <em>Map Id</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AgvPositionImpl extends MinimalEObjectImpl.Container implements AgvPosition {
+	/**
+	 * The default value of the '{@link #getX() <em>X</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getX()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final float X_EDEFAULT = 0.0F;
+
+	/**
+	 * The cached value of the '{@link #getX() <em>X</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getX()
+	 * @generated
+	 * @ordered
+	 */
+	protected float x = X_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getY() <em>Y</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getY()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final float Y_EDEFAULT = 0.0F;
+
+	/**
+	 * The cached value of the '{@link #getY() <em>Y</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getY()
+	 * @generated
+	 * @ordered
+	 */
+	protected float y = Y_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getTheta() <em>Theta</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTheta()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final float THETA_EDEFAULT = 0.0F;
+
+	/**
+	 * The cached value of the '{@link #getTheta() <em>Theta</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTheta()
+	 * @generated
+	 * @ordered
+	 */
+	protected float theta = THETA_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMapId() <em>Map Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMapId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MAP_ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMapId() <em>Map Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMapId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String mapId = MAP_ID_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AgvPositionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return VDA5050Package.Literals.AGV_POSITION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public float getX() {
+		return x;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setX(float newX) {
+		float oldX = x;
+		x = newX;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, VDA5050Package.AGV_POSITION__X, oldX, x));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public float getY() {
+		return y;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setY(float newY) {
+		float oldY = y;
+		y = newY;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, VDA5050Package.AGV_POSITION__Y, oldY, y));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public float getTheta() {
+		return theta;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTheta(float newTheta) {
+		float oldTheta = theta;
+		theta = newTheta;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, VDA5050Package.AGV_POSITION__THETA, oldTheta, theta));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMapId() {
+		return mapId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMapId(String newMapId) {
+		String oldMapId = mapId;
+		mapId = newMapId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, VDA5050Package.AGV_POSITION__MAP_ID, oldMapId,
+					mapId));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case VDA5050Package.AGV_POSITION__X:
+			return getX();
+		case VDA5050Package.AGV_POSITION__Y:
+			return getY();
+		case VDA5050Package.AGV_POSITION__THETA:
+			return getTheta();
+		case VDA5050Package.AGV_POSITION__MAP_ID:
+			return getMapId();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case VDA5050Package.AGV_POSITION__X:
+			setX((Float) newValue);
+			return;
+		case VDA5050Package.AGV_POSITION__Y:
+			setY((Float) newValue);
+			return;
+		case VDA5050Package.AGV_POSITION__THETA:
+			setTheta((Float) newValue);
+			return;
+		case VDA5050Package.AGV_POSITION__MAP_ID:
+			setMapId((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case VDA5050Package.AGV_POSITION__X:
+			setX(X_EDEFAULT);
+			return;
+		case VDA5050Package.AGV_POSITION__Y:
+			setY(Y_EDEFAULT);
+			return;
+		case VDA5050Package.AGV_POSITION__THETA:
+			setTheta(THETA_EDEFAULT);
+			return;
+		case VDA5050Package.AGV_POSITION__MAP_ID:
+			setMapId(MAP_ID_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case VDA5050Package.AGV_POSITION__X:
+			return x != X_EDEFAULT;
+		case VDA5050Package.AGV_POSITION__Y:
+			return y != Y_EDEFAULT;
+		case VDA5050Package.AGV_POSITION__THETA:
+			return theta != THETA_EDEFAULT;
+		case VDA5050Package.AGV_POSITION__MAP_ID:
+			return MAP_ID_EDEFAULT == null ? mapId != null : !MAP_ID_EDEFAULT.equals(mapId);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (x: ");
+		result.append(x);
+		result.append(", y: ");
+		result.append(y);
+		result.append(", theta: ");
+		result.append(theta);
+		result.append(", mapId: ");
+		result.append(mapId);
+		result.append(')');
+		return result.toString();
+	}
+
+} //AgvPositionImpl
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/AgvStateImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/AgvStateImpl.java
new file mode 100644
index 0000000..4d93b8e
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/AgvStateImpl.java
@@ -0,0 +1,538 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.BatteryState;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Agv State</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvStateImpl#getTimeStamp <em>Time Stamp</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvStateImpl#getSerialNumber <em>Serial Number</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvStateImpl#getLastNodeId <em>Last Node Id</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvStateImpl#getBatteryState <em>Battery State</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvStateImpl#getErrors <em>Errors</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvStateImpl#getAgvposition <em>Agvposition</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvStateImpl#getLoads <em>Loads</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.AgvStateImpl#getManufacturer <em>Manufacturer</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AgvStateImpl extends MinimalEObjectImpl.Container implements AgvState {
+	/**
+	 * The default value of the '{@link #getTimeStamp() <em>Time Stamp</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTimeStamp()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TIME_STAMP_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getTimeStamp() <em>Time Stamp</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTimeStamp()
+	 * @generated
+	 * @ordered
+	 */
+	protected String timeStamp = TIME_STAMP_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSerialNumber() <em>Serial Number</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSerialNumber()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String SERIAL_NUMBER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getSerialNumber() <em>Serial Number</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSerialNumber()
+	 * @generated
+	 * @ordered
+	 */
+	protected String serialNumber = SERIAL_NUMBER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLastNodeId() <em>Last Node Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLastNodeId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LAST_NODE_ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getLastNodeId() <em>Last Node Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLastNodeId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String lastNodeId = LAST_NODE_ID_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getBatteryState() <em>Battery State</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBatteryState()
+	 * @generated
+	 * @ordered
+	 */
+	protected BatteryState batteryState;
+
+	/**
+	 * The cached value of the '{@link #getErrors() <em>Errors</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getErrors()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error> errors;
+
+	/**
+	 * The cached value of the '{@link #getAgvposition() <em>Agvposition</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAgvposition()
+	 * @generated
+	 * @ordered
+	 */
+	protected AgvPosition agvposition;
+
+	/**
+	 * The cached value of the '{@link #getLoads() <em>Loads</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLoads()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Load> loads;
+
+	/**
+	 * The default value of the '{@link #getManufacturer() <em>Manufacturer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getManufacturer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MANUFACTURER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getManufacturer() <em>Manufacturer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getManufacturer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String manufacturer = MANUFACTURER_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AgvStateImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return VDA5050Package.Literals.AGV_STATE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getTimeStamp() {
+		return timeStamp;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTimeStamp(String newTimeStamp) {
+		String oldTimeStamp = timeStamp;
+		timeStamp = newTimeStamp;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, VDA5050Package.AGV_STATE__TIME_STAMP, oldTimeStamp,
+					timeStamp));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getSerialNumber() {
+		return serialNumber;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSerialNumber(String newSerialNumber) {
+		String oldSerialNumber = serialNumber;
+		serialNumber = newSerialNumber;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, VDA5050Package.AGV_STATE__SERIAL_NUMBER,
+					oldSerialNumber, serialNumber));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLastNodeId() {
+		return lastNodeId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLastNodeId(String newLastNodeId) {
+		String oldLastNodeId = lastNodeId;
+		lastNodeId = newLastNodeId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, VDA5050Package.AGV_STATE__LAST_NODE_ID, oldLastNodeId,
+					lastNodeId));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BatteryState getBatteryState() {
+		if (batteryState != null && batteryState.eIsProxy()) {
+			InternalEObject oldBatteryState = (InternalEObject) batteryState;
+			batteryState = (BatteryState) eResolveProxy(oldBatteryState);
+			if (batteryState != oldBatteryState) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, VDA5050Package.AGV_STATE__BATTERY_STATE,
+							oldBatteryState, batteryState));
+			}
+		}
+		return batteryState;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BatteryState basicGetBatteryState() {
+		return batteryState;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBatteryState(BatteryState newBatteryState) {
+		BatteryState oldBatteryState = batteryState;
+		batteryState = newBatteryState;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, VDA5050Package.AGV_STATE__BATTERY_STATE,
+					oldBatteryState, batteryState));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error> getErrors() {
+		if (errors == null) {
+			errors = new EObjectResolvingEList<ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error>(
+					ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error.class, this,
+					VDA5050Package.AGV_STATE__ERRORS);
+		}
+		return errors;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AgvPosition getAgvposition() {
+		if (agvposition != null && agvposition.eIsProxy()) {
+			InternalEObject oldAgvposition = (InternalEObject) agvposition;
+			agvposition = (AgvPosition) eResolveProxy(oldAgvposition);
+			if (agvposition != oldAgvposition) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, VDA5050Package.AGV_STATE__AGVPOSITION,
+							oldAgvposition, agvposition));
+			}
+		}
+		return agvposition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AgvPosition basicGetAgvposition() {
+		return agvposition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAgvposition(AgvPosition newAgvposition) {
+		AgvPosition oldAgvposition = agvposition;
+		agvposition = newAgvposition;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, VDA5050Package.AGV_STATE__AGVPOSITION, oldAgvposition,
+					agvposition));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Load> getLoads() {
+		if (loads == null) {
+			loads = new EObjectResolvingEList<Load>(Load.class, this, VDA5050Package.AGV_STATE__LOADS);
+		}
+		return loads;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getManufacturer() {
+		return manufacturer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setManufacturer(String newManufacturer) {
+		String oldManufacturer = manufacturer;
+		manufacturer = newManufacturer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, VDA5050Package.AGV_STATE__MANUFACTURER,
+					oldManufacturer, manufacturer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case VDA5050Package.AGV_STATE__TIME_STAMP:
+			return getTimeStamp();
+		case VDA5050Package.AGV_STATE__SERIAL_NUMBER:
+			return getSerialNumber();
+		case VDA5050Package.AGV_STATE__LAST_NODE_ID:
+			return getLastNodeId();
+		case VDA5050Package.AGV_STATE__BATTERY_STATE:
+			if (resolve)
+				return getBatteryState();
+			return basicGetBatteryState();
+		case VDA5050Package.AGV_STATE__ERRORS:
+			return getErrors();
+		case VDA5050Package.AGV_STATE__AGVPOSITION:
+			if (resolve)
+				return getAgvposition();
+			return basicGetAgvposition();
+		case VDA5050Package.AGV_STATE__LOADS:
+			return getLoads();
+		case VDA5050Package.AGV_STATE__MANUFACTURER:
+			return getManufacturer();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case VDA5050Package.AGV_STATE__TIME_STAMP:
+			setTimeStamp((String) newValue);
+			return;
+		case VDA5050Package.AGV_STATE__SERIAL_NUMBER:
+			setSerialNumber((String) newValue);
+			return;
+		case VDA5050Package.AGV_STATE__LAST_NODE_ID:
+			setLastNodeId((String) newValue);
+			return;
+		case VDA5050Package.AGV_STATE__BATTERY_STATE:
+			setBatteryState((BatteryState) newValue);
+			return;
+		case VDA5050Package.AGV_STATE__ERRORS:
+			getErrors().clear();
+			getErrors().addAll(
+					(Collection<? extends ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error>) newValue);
+			return;
+		case VDA5050Package.AGV_STATE__AGVPOSITION:
+			setAgvposition((AgvPosition) newValue);
+			return;
+		case VDA5050Package.AGV_STATE__LOADS:
+			getLoads().clear();
+			getLoads().addAll((Collection<? extends Load>) newValue);
+			return;
+		case VDA5050Package.AGV_STATE__MANUFACTURER:
+			setManufacturer((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case VDA5050Package.AGV_STATE__TIME_STAMP:
+			setTimeStamp(TIME_STAMP_EDEFAULT);
+			return;
+		case VDA5050Package.AGV_STATE__SERIAL_NUMBER:
+			setSerialNumber(SERIAL_NUMBER_EDEFAULT);
+			return;
+		case VDA5050Package.AGV_STATE__LAST_NODE_ID:
+			setLastNodeId(LAST_NODE_ID_EDEFAULT);
+			return;
+		case VDA5050Package.AGV_STATE__BATTERY_STATE:
+			setBatteryState((BatteryState) null);
+			return;
+		case VDA5050Package.AGV_STATE__ERRORS:
+			getErrors().clear();
+			return;
+		case VDA5050Package.AGV_STATE__AGVPOSITION:
+			setAgvposition((AgvPosition) null);
+			return;
+		case VDA5050Package.AGV_STATE__LOADS:
+			getLoads().clear();
+			return;
+		case VDA5050Package.AGV_STATE__MANUFACTURER:
+			setManufacturer(MANUFACTURER_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case VDA5050Package.AGV_STATE__TIME_STAMP:
+			return TIME_STAMP_EDEFAULT == null ? timeStamp != null : !TIME_STAMP_EDEFAULT.equals(timeStamp);
+		case VDA5050Package.AGV_STATE__SERIAL_NUMBER:
+			return SERIAL_NUMBER_EDEFAULT == null ? serialNumber != null : !SERIAL_NUMBER_EDEFAULT.equals(serialNumber);
+		case VDA5050Package.AGV_STATE__LAST_NODE_ID:
+			return LAST_NODE_ID_EDEFAULT == null ? lastNodeId != null : !LAST_NODE_ID_EDEFAULT.equals(lastNodeId);
+		case VDA5050Package.AGV_STATE__BATTERY_STATE:
+			return batteryState != null;
+		case VDA5050Package.AGV_STATE__ERRORS:
+			return errors != null && !errors.isEmpty();
+		case VDA5050Package.AGV_STATE__AGVPOSITION:
+			return agvposition != null;
+		case VDA5050Package.AGV_STATE__LOADS:
+			return loads != null && !loads.isEmpty();
+		case VDA5050Package.AGV_STATE__MANUFACTURER:
+			return MANUFACTURER_EDEFAULT == null ? manufacturer != null : !MANUFACTURER_EDEFAULT.equals(manufacturer);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (timeStamp: ");
+		result.append(timeStamp);
+		result.append(", serialNumber: ");
+		result.append(serialNumber);
+		result.append(", lastNodeId: ");
+		result.append(lastNodeId);
+		result.append(", manufacturer: ");
+		result.append(manufacturer);
+		result.append(')');
+		return result.toString();
+	}
+
+} //AgvStateImpl
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/BatteryStateImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/BatteryStateImpl.java
new file mode 100644
index 0000000..4c9100b
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/BatteryStateImpl.java
@@ -0,0 +1,165 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.BatteryState;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Battery State</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.BatteryStateImpl#getBatteryCharge <em>Battery Charge</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class BatteryStateImpl extends MinimalEObjectImpl.Container implements BatteryState {
+	/**
+	 * The default value of the '{@link #getBatteryCharge() <em>Battery Charge</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBatteryCharge()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final float BATTERY_CHARGE_EDEFAULT = 0.0F;
+
+	/**
+	 * The cached value of the '{@link #getBatteryCharge() <em>Battery Charge</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBatteryCharge()
+	 * @generated
+	 * @ordered
+	 */
+	protected float batteryCharge = BATTERY_CHARGE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BatteryStateImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return VDA5050Package.Literals.BATTERY_STATE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public float getBatteryCharge() {
+		return batteryCharge;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBatteryCharge(float newBatteryCharge) {
+		float oldBatteryCharge = batteryCharge;
+		batteryCharge = newBatteryCharge;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, VDA5050Package.BATTERY_STATE__BATTERY_CHARGE,
+					oldBatteryCharge, batteryCharge));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case VDA5050Package.BATTERY_STATE__BATTERY_CHARGE:
+			return getBatteryCharge();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case VDA5050Package.BATTERY_STATE__BATTERY_CHARGE:
+			setBatteryCharge((Float) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case VDA5050Package.BATTERY_STATE__BATTERY_CHARGE:
+			setBatteryCharge(BATTERY_CHARGE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case VDA5050Package.BATTERY_STATE__BATTERY_CHARGE:
+			return batteryCharge != BATTERY_CHARGE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (batteryCharge: ");
+		result.append(batteryCharge);
+		result.append(')');
+		return result.toString();
+	}
+
+} //BatteryStateImpl
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/ErrorImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/ErrorImpl.java
new file mode 100644
index 0000000..f59ff42
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/ErrorImpl.java
@@ -0,0 +1,165 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Error</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.ErrorImpl#getErrorType <em>Error Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ErrorImpl extends MinimalEObjectImpl.Container
+		implements ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error {
+	/**
+	 * The default value of the '{@link #getErrorType() <em>Error Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getErrorType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ERROR_TYPE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getErrorType() <em>Error Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getErrorType()
+	 * @generated
+	 * @ordered
+	 */
+	protected String errorType = ERROR_TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ErrorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return VDA5050Package.Literals.ERROR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getErrorType() {
+		return errorType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setErrorType(String newErrorType) {
+		String oldErrorType = errorType;
+		errorType = newErrorType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, VDA5050Package.ERROR__ERROR_TYPE, oldErrorType,
+					errorType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case VDA5050Package.ERROR__ERROR_TYPE:
+			return getErrorType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case VDA5050Package.ERROR__ERROR_TYPE:
+			setErrorType((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case VDA5050Package.ERROR__ERROR_TYPE:
+			setErrorType(ERROR_TYPE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case VDA5050Package.ERROR__ERROR_TYPE:
+			return ERROR_TYPE_EDEFAULT == null ? errorType != null : !ERROR_TYPE_EDEFAULT.equals(errorType);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (errorType: ");
+		result.append(errorType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ErrorImpl
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/LoadImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/LoadImpl.java
new file mode 100644
index 0000000..166711a
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/LoadImpl.java
@@ -0,0 +1,164 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Load</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.LoadImpl#getLoadId <em>Load Id</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class LoadImpl extends MinimalEObjectImpl.Container implements Load {
+	/**
+	 * The default value of the '{@link #getLoadId() <em>Load Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLoadId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LOAD_ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getLoadId() <em>Load Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLoadId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String loadId = LOAD_ID_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LoadImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return VDA5050Package.Literals.LOAD;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLoadId() {
+		return loadId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLoadId(String newLoadId) {
+		String oldLoadId = loadId;
+		loadId = newLoadId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, VDA5050Package.LOAD__LOAD_ID, oldLoadId, loadId));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case VDA5050Package.LOAD__LOAD_ID:
+			return getLoadId();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case VDA5050Package.LOAD__LOAD_ID:
+			setLoadId((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case VDA5050Package.LOAD__LOAD_ID:
+			setLoadId(LOAD_ID_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case VDA5050Package.LOAD__LOAD_ID:
+			return LOAD_ID_EDEFAULT == null ? loadId != null : !LOAD_ID_EDEFAULT.equals(loadId);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (loadId: ");
+		result.append(loadId);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LoadImpl
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/VDA5050FactoryImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/VDA5050FactoryImpl.java
new file mode 100644
index 0000000..261fd29
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/VDA5050FactoryImpl.java
@@ -0,0 +1,150 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.BatteryState;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Factory;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.*;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class VDA5050FactoryImpl extends EFactoryImpl implements VDA5050Factory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static VDA5050Factory init() {
+		try {
+			VDA5050Factory theVDA5050Factory = (VDA5050Factory) EPackage.Registry.INSTANCE
+					.getEFactory(VDA5050Package.eNS_URI);
+			if (theVDA5050Factory != null) {
+				return theVDA5050Factory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new VDA5050FactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public VDA5050FactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case VDA5050Package.AGV_STATE:
+			return createAgvState();
+		case VDA5050Package.BATTERY_STATE:
+			return createBatteryState();
+		case VDA5050Package.ERROR:
+			return createError();
+		case VDA5050Package.AGV_POSITION:
+			return createAgvPosition();
+		case VDA5050Package.LOAD:
+			return createLoad();
+		default:
+			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AgvState createAgvState() {
+		AgvStateImpl agvState = new AgvStateImpl();
+		return agvState;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BatteryState createBatteryState() {
+		BatteryStateImpl batteryState = new BatteryStateImpl();
+		return batteryState;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error createError() {
+		ErrorImpl error = new ErrorImpl();
+		return error;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AgvPosition createAgvPosition() {
+		AgvPositionImpl agvPosition = new AgvPositionImpl();
+		return agvPosition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Load createLoad() {
+		LoadImpl load = new LoadImpl();
+		return load;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public VDA5050Package getVDA5050Package() {
+		return (VDA5050Package) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static VDA5050Package getPackage() {
+		return VDA5050Package.eINSTANCE;
+	}
+
+} //VDA5050FactoryImpl
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/VDA5050PackageImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/VDA5050PackageImpl.java
new file mode 100644
index 0000000..09f7cf3
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/impl/VDA5050PackageImpl.java
@@ -0,0 +1,482 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosDevKitPackage;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.impl.IPosDevKitPackageImpl;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.IPos_DatamodelPackage;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.OFBiz.OFBizPackage;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.OFBiz.impl.OFBizPackageImpl;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.ToozPackage;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.impl.ToozPackageImpl;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.BatteryState;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Factory;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.impl.IPos_DatamodelPackageImpl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class VDA5050PackageImpl extends EPackageImpl implements VDA5050Package {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass agvStateEClass = null;
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass batteryStateEClass = null;
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass errorEClass = null;
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass agvPositionEClass = null;
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass loadEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private VDA5050PackageImpl() {
+		super(eNS_URI, VDA5050Factory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link VDA5050Package#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static VDA5050Package init() {
+		if (isInited)
+			return (VDA5050Package) EPackage.Registry.INSTANCE.getEPackage(VDA5050Package.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredVDA5050Package = EPackage.Registry.INSTANCE.get(eNS_URI);
+		VDA5050PackageImpl theVDA5050Package = registeredVDA5050Package instanceof VDA5050PackageImpl
+				? (VDA5050PackageImpl) registeredVDA5050Package
+				: new VDA5050PackageImpl();
+
+		isInited = true;
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(IPos_DatamodelPackage.eNS_URI);
+		IPos_DatamodelPackageImpl theIPos_DatamodelPackage = (IPos_DatamodelPackageImpl) (registeredPackage instanceof IPos_DatamodelPackageImpl
+				? registeredPackage
+				: IPos_DatamodelPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(OFBizPackage.eNS_URI);
+		OFBizPackageImpl theOFBizPackage = (OFBizPackageImpl) (registeredPackage instanceof OFBizPackageImpl
+				? registeredPackage
+				: OFBizPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(IPosDevKitPackage.eNS_URI);
+		IPosDevKitPackageImpl theIPosDevKitPackage = (IPosDevKitPackageImpl) (registeredPackage instanceof IPosDevKitPackageImpl
+				? registeredPackage
+				: IPosDevKitPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ToozPackage.eNS_URI);
+		ToozPackageImpl theToozPackage = (ToozPackageImpl) (registeredPackage instanceof ToozPackageImpl
+				? registeredPackage
+				: ToozPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theVDA5050Package.createPackageContents();
+		theIPos_DatamodelPackage.createPackageContents();
+		theOFBizPackage.createPackageContents();
+		theIPosDevKitPackage.createPackageContents();
+		theToozPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theVDA5050Package.initializePackageContents();
+		theIPos_DatamodelPackage.initializePackageContents();
+		theOFBizPackage.initializePackageContents();
+		theIPosDevKitPackage.initializePackageContents();
+		theToozPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theVDA5050Package.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(VDA5050Package.eNS_URI, theVDA5050Package);
+		return theVDA5050Package;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getAgvState() {
+		return agvStateEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getAgvState_TimeStamp() {
+		return (EAttribute) agvStateEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getAgvState_SerialNumber() {
+		return (EAttribute) agvStateEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getAgvState_LastNodeId() {
+		return (EAttribute) agvStateEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getAgvState_BatteryState() {
+		return (EReference) agvStateEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getAgvState_Errors() {
+		return (EReference) agvStateEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getAgvState_Agvposition() {
+		return (EReference) agvStateEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getAgvState_Loads() {
+		return (EReference) agvStateEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getAgvState_Manufacturer() {
+		return (EAttribute) agvStateEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getBatteryState() {
+		return batteryStateEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getBatteryState_BatteryCharge() {
+		return (EAttribute) batteryStateEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getError() {
+		return errorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getError_ErrorType() {
+		return (EAttribute) errorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getAgvPosition() {
+		return agvPositionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getAgvPosition_X() {
+		return (EAttribute) agvPositionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getAgvPosition_Y() {
+		return (EAttribute) agvPositionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getAgvPosition_Theta() {
+		return (EAttribute) agvPositionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getAgvPosition_MapId() {
+		return (EAttribute) agvPositionEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLoad() {
+		return loadEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLoad_LoadId() {
+		return (EAttribute) loadEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public VDA5050Factory getVDA5050Factory() {
+		return (VDA5050Factory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated)
+			return;
+		isCreated = true;
+
+		// Create classes and their features
+		agvStateEClass = createEClass(AGV_STATE);
+		createEAttribute(agvStateEClass, AGV_STATE__TIME_STAMP);
+		createEAttribute(agvStateEClass, AGV_STATE__SERIAL_NUMBER);
+		createEAttribute(agvStateEClass, AGV_STATE__LAST_NODE_ID);
+		createEReference(agvStateEClass, AGV_STATE__BATTERY_STATE);
+		createEReference(agvStateEClass, AGV_STATE__ERRORS);
+		createEReference(agvStateEClass, AGV_STATE__AGVPOSITION);
+		createEReference(agvStateEClass, AGV_STATE__LOADS);
+		createEAttribute(agvStateEClass, AGV_STATE__MANUFACTURER);
+
+		batteryStateEClass = createEClass(BATTERY_STATE);
+		createEAttribute(batteryStateEClass, BATTERY_STATE__BATTERY_CHARGE);
+
+		errorEClass = createEClass(ERROR);
+		createEAttribute(errorEClass, ERROR__ERROR_TYPE);
+
+		agvPositionEClass = createEClass(AGV_POSITION);
+		createEAttribute(agvPositionEClass, AGV_POSITION__X);
+		createEAttribute(agvPositionEClass, AGV_POSITION__Y);
+		createEAttribute(agvPositionEClass, AGV_POSITION__THETA);
+		createEAttribute(agvPositionEClass, AGV_POSITION__MAP_ID);
+
+		loadEClass = createEClass(LOAD);
+		createEAttribute(loadEClass, LOAD__LOAD_ID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized)
+			return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(agvStateEClass, AgvState.class, "AgvState", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getAgvState_TimeStamp(), ecorePackage.getEString(), "timeStamp", null, 0, 1, AgvState.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getAgvState_SerialNumber(), ecorePackage.getEString(), "serialNumber", null, 0, 1,
+				AgvState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getAgvState_LastNodeId(), ecorePackage.getEString(), "lastNodeId", null, 0, 1, AgvState.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getAgvState_BatteryState(), this.getBatteryState(), null, "batteryState", null, 0, 1,
+				AgvState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getAgvState_Errors(), this.getError(), null, "errors", null, 0, -1, AgvState.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getAgvState_Agvposition(), this.getAgvPosition(), null, "agvposition", null, 0, 1,
+				AgvState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getAgvState_Loads(), this.getLoad(), null, "loads", null, 0, -1, AgvState.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEAttribute(getAgvState_Manufacturer(), ecorePackage.getEString(), "manufacturer", null, 0, 1,
+				AgvState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		initEClass(batteryStateEClass, BatteryState.class, "BatteryState", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getBatteryState_BatteryCharge(), ecorePackage.getEFloat(), "batteryCharge", null, 0, 1,
+				BatteryState.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		initEClass(errorEClass, ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error.class, "Error",
+				!IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getError_ErrorType(), ecorePackage.getEString(), "errorType", null, 0, 1,
+				ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(agvPositionEClass, AgvPosition.class, "AgvPosition", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getAgvPosition_X(), ecorePackage.getEFloat(), "x", null, 0, 1, AgvPosition.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getAgvPosition_Y(), ecorePackage.getEFloat(), "y", null, 0, 1, AgvPosition.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getAgvPosition_Theta(), ecorePackage.getEFloat(), "theta", null, 0, 1, AgvPosition.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getAgvPosition_MapId(), ecorePackage.getEString(), "mapId", null, 0, 1, AgvPosition.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(loadEClass, Load.class, "Load", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLoad_LoadId(), ecorePackage.getEString(), "loadId", null, 0, 1, Load.class, !IS_TRANSIENT,
+				!IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+	}
+
+} //VDA5050PackageImpl
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/util/VDA5050AdapterFactory.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/util/VDA5050AdapterFactory.java
new file mode 100644
index 0000000..85a1c4e
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/util/VDA5050AdapterFactory.java
@@ -0,0 +1,200 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.util;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.BatteryState;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.*;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package
+ * @generated
+ */
+public class VDA5050AdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static VDA5050Package modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public VDA5050AdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = VDA5050Package.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected VDA5050Switch<Adapter> modelSwitch = new VDA5050Switch<Adapter>() {
+		@Override
+		public Adapter caseAgvState(AgvState object) {
+			return createAgvStateAdapter();
+		}
+
+		@Override
+		public Adapter caseBatteryState(BatteryState object) {
+			return createBatteryStateAdapter();
+		}
+
+		@Override
+		public Adapter caseError(ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error object) {
+			return createErrorAdapter();
+		}
+
+		@Override
+		public Adapter caseAgvPosition(AgvPosition object) {
+			return createAgvPositionAdapter();
+		}
+
+		@Override
+		public Adapter caseLoad(Load object) {
+			return createLoadAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState <em>Agv State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState
+	 * @generated
+	 */
+	public Adapter createAgvStateAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.BatteryState <em>Battery State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.BatteryState
+	 * @generated
+	 */
+	public Adapter createBatteryStateAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error <em>Error</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error
+	 * @generated
+	 */
+	public Adapter createErrorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition <em>Agv Position</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition
+	 * @generated
+	 */
+	public Adapter createAgvPositionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load <em>Load</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load
+	 * @generated
+	 */
+	public Adapter createLoadAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //VDA5050AdapterFactory
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/util/VDA5050Switch.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/util/VDA5050Switch.java
new file mode 100644
index 0000000..571ed37
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/VDA5050/util/VDA5050Switch.java
@@ -0,0 +1,205 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.util;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvPosition;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.AgvState;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.BatteryState;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Load;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.*;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package
+ * @generated
+ */
+public class VDA5050Switch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static VDA5050Package modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public VDA5050Switch() {
+		if (modelPackage == null) {
+			modelPackage = VDA5050Package.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case VDA5050Package.AGV_STATE: {
+			AgvState agvState = (AgvState) theEObject;
+			T result = caseAgvState(agvState);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case VDA5050Package.BATTERY_STATE: {
+			BatteryState batteryState = (BatteryState) theEObject;
+			T result = caseBatteryState(batteryState);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case VDA5050Package.ERROR: {
+			ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error error = (ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error) theEObject;
+			T result = caseError(error);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case VDA5050Package.AGV_POSITION: {
+			AgvPosition agvPosition = (AgvPosition) theEObject;
+			T result = caseAgvPosition(agvPosition);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case VDA5050Package.LOAD: {
+			Load load = (Load) theEObject;
+			T result = caseLoad(load);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Agv State</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Agv State</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAgvState(AgvState object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Battery State</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Battery State</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBatteryState(BatteryState object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Error</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Error</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseError(ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.Error object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Agv Position</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Agv Position</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAgvPosition(AgvPosition object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Load</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Load</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLoad(Load object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //VDA5050Switch
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/IPos_DatamodelFactoryImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/IPos_DatamodelFactoryImpl.java
index b4aedf7..98c86bf 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/IPos_DatamodelFactoryImpl.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/IPos_DatamodelFactoryImpl.java
@@ -5,6 +5,8 @@ package ipos.project.DataModellntegration.iPos_Datamodel.impl;
 import ipos.project.DataModellntegration.iPos_Datamodel.*;
 
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 
 import org.eclipse.emf.ecore.EClass;
@@ -138,6 +140,8 @@ public class IPos_DatamodelFactoryImpl extends EFactoryImpl implements IPos_Data
 			return createZoneDescriptor();
 		case IPos_DatamodelPackage.DATA_STORAGE_QUERY_RESPONSE:
 			return createDataStorageQueryResponse();
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT:
+			return createMessageReceivedEvent();
 		default:
 			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -161,6 +165,10 @@ public class IPos_DatamodelFactoryImpl extends EFactoryImpl implements IPos_Data
 			return createBooleanListFromString(eDataType, initialValue);
 		case IPos_DatamodelPackage.FLOAT_ARRAY:
 			return createFloatArrayFromString(eDataType, initialValue);
+		case IPos_DatamodelPackage.BYTE_ARRAY:
+			return createByteArrayFromString(eDataType, initialValue);
+		case IPos_DatamodelPackage.LIST_OF_STRING_MAPS:
+			return createListOfStringMapsFromString(eDataType, initialValue);
 		default:
 			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
 		}
@@ -184,6 +192,10 @@ public class IPos_DatamodelFactoryImpl extends EFactoryImpl implements IPos_Data
 			return convertBooleanListToString(eDataType, instanceValue);
 		case IPos_DatamodelPackage.FLOAT_ARRAY:
 			return convertFloatArrayToString(eDataType, instanceValue);
+		case IPos_DatamodelPackage.BYTE_ARRAY:
+			return convertByteArrayToString(eDataType, instanceValue);
+		case IPos_DatamodelPackage.LIST_OF_STRING_MAPS:
+			return convertListOfStringMapsToString(eDataType, instanceValue);
 		default:
 			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
 		}
@@ -579,6 +591,16 @@ public class IPos_DatamodelFactoryImpl extends EFactoryImpl implements IPos_Data
 		return dataStorageQueryResponse;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MessageReceivedEvent createMessageReceivedEvent() {
+		MessageReceivedEventImpl messageReceivedEvent = new MessageReceivedEventImpl();
+		return messageReceivedEvent;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -673,6 +695,44 @@ public class IPos_DatamodelFactoryImpl extends EFactoryImpl implements IPos_Data
 		return super.convertToString(instanceValue);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public byte[] createByteArrayFromString(EDataType eDataType, String initialValue) {
+		return (byte[]) super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertByteArrayToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public LinkedList<HashMap<String, String>> createListOfStringMapsFromString(EDataType eDataType,
+			String initialValue) {
+		return (LinkedList<HashMap<String, String>>) super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertListOfStringMapsToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/IPos_DatamodelPackageImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/IPos_DatamodelPackageImpl.java
index 8f36dac..349ce94 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/IPos_DatamodelPackageImpl.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/IPos_DatamodelPackageImpl.java
@@ -22,6 +22,7 @@ import ipos.project.DataModellntegration.iPos_Datamodel.IPos_DatamodelFactory;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPos_DatamodelPackage;
 import ipos.project.DataModellntegration.iPos_Datamodel.LocalizableObject;
 import ipos.project.DataModellntegration.iPos_Datamodel.MapType;
+import ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent;
 import ipos.project.DataModellntegration.iPos_Datamodel.MonitoringTask;
 
 import ipos.project.DataModellntegration.iPos_Datamodel.OFBiz.OFBizPackage;
@@ -45,6 +46,8 @@ import ipos.project.DataModellntegration.iPos_Datamodel.Space;
 import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.ToozPackage;
 import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.impl.ToozPackageImpl;
 import ipos.project.DataModellntegration.iPos_Datamodel.TrackingTask;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.VDA5050Package;
+import ipos.project.DataModellntegration.iPos_Datamodel.VDA5050.impl.VDA5050PackageImpl;
 import ipos.project.DataModellntegration.iPos_Datamodel.WGS84Point;
 import ipos.project.DataModellntegration.iPos_Datamodel.WorldModel;
 import ipos.project.DataModellntegration.iPos_Datamodel.Zone;
@@ -52,6 +55,7 @@ import ipos.project.DataModellntegration.iPos_Datamodel.ZoneDescriptor;
 import ipos.project.DataModellntegration.iPos_Datamodel.ZoneMap;
 
 import java.util.ArrayList;
+import java.util.LinkedList;
 import java.util.List;
 
 import org.eclipse.emf.ecore.EAttribute;
@@ -345,6 +349,13 @@ public class IPos_DatamodelPackageImpl extends EPackageImpl implements IPos_Data
 	 */
 	private EClass dataStorageQueryResponseEClass = null;
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass messageReceivedEventEClass = null;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -380,6 +391,20 @@ public class IPos_DatamodelPackageImpl extends EPackageImpl implements IPos_Data
 	 */
 	private EDataType floatArrayEDataType = null;
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType byteArrayEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType listOfStringMapsEDataType = null;
+
 	/**
 	 * Creates an instance of the model <b>Package</b>, registered with
 	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
@@ -446,18 +471,24 @@ public class IPos_DatamodelPackageImpl extends EPackageImpl implements IPos_Data
 		ToozPackageImpl theToozPackage = (ToozPackageImpl) (registeredPackage instanceof ToozPackageImpl
 				? registeredPackage
 				: ToozPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(VDA5050Package.eNS_URI);
+		VDA5050PackageImpl theVDA5050Package = (VDA5050PackageImpl) (registeredPackage instanceof VDA5050PackageImpl
+				? registeredPackage
+				: VDA5050Package.eINSTANCE);
 
 		// Create package meta-data objects
 		theIPos_DatamodelPackage.createPackageContents();
 		theOFBizPackage.createPackageContents();
 		theIPosDevKitPackage.createPackageContents();
 		theToozPackage.createPackageContents();
+		theVDA5050Package.createPackageContents();
 
 		// Initialize created meta-data
 		theIPos_DatamodelPackage.initializePackageContents();
 		theOFBizPackage.initializePackageContents();
 		theIPosDevKitPackage.initializePackageContents();
 		theToozPackage.initializePackageContents();
+		theVDA5050Package.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theIPos_DatamodelPackage.freeze();
@@ -1601,6 +1632,60 @@ public class IPos_DatamodelPackageImpl extends EPackageImpl implements IPos_Data
 		return (EAttribute) dataStorageQueryResponseEClass.getEStructuralFeatures().get(1);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getMessageReceivedEvent() {
+		return messageReceivedEventEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getMessageReceivedEvent_ProtocolName() {
+		return (EAttribute) messageReceivedEventEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getMessageReceivedEvent_SerializedMsg() {
+		return (EAttribute) messageReceivedEventEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getMessageReceivedEvent_AgentId() {
+		return (EAttribute) messageReceivedEventEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getMessageReceivedEvent_ExtractedAttributes() {
+		return (EAttribute) messageReceivedEventEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getMessageReceivedEvent_Timestamp() {
+		return (EAttribute) messageReceivedEventEClass.getEStructuralFeatures().get(4);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1646,6 +1731,24 @@ public class IPos_DatamodelPackageImpl extends EPackageImpl implements IPos_Data
 		return floatArrayEDataType;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getByteArray() {
+		return byteArrayEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getListOfStringMaps() {
+		return listOfStringMapsEDataType;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1840,12 +1943,21 @@ public class IPos_DatamodelPackageImpl extends EPackageImpl implements IPos_Data
 		createEReference(dataStorageQueryResponseEClass, DATA_STORAGE_QUERY_RESPONSE__POSITION_EVENTS);
 		createEAttribute(dataStorageQueryResponseEClass, DATA_STORAGE_QUERY_RESPONSE__TRACKING_TASK_ID);
 
+		messageReceivedEventEClass = createEClass(MESSAGE_RECEIVED_EVENT);
+		createEAttribute(messageReceivedEventEClass, MESSAGE_RECEIVED_EVENT__PROTOCOL_NAME);
+		createEAttribute(messageReceivedEventEClass, MESSAGE_RECEIVED_EVENT__SERIALIZED_MSG);
+		createEAttribute(messageReceivedEventEClass, MESSAGE_RECEIVED_EVENT__AGENT_ID);
+		createEAttribute(messageReceivedEventEClass, MESSAGE_RECEIVED_EVENT__EXTRACTED_ATTRIBUTES);
+		createEAttribute(messageReceivedEventEClass, MESSAGE_RECEIVED_EVENT__TIMESTAMP);
+
 		// Create data types
 		stringListEDataType = createEDataType(STRING_LIST);
 		stringArrayEDataType = createEDataType(STRING_ARRAY);
 		floatArray3dEDataType = createEDataType(FLOAT_ARRAY3D);
 		booleanListEDataType = createEDataType(BOOLEAN_LIST);
 		floatArrayEDataType = createEDataType(FLOAT_ARRAY);
+		byteArrayEDataType = createEDataType(BYTE_ARRAY);
+		listOfStringMapsEDataType = createEDataType(LIST_OF_STRING_MAPS);
 	}
 
 	/**
@@ -1877,6 +1989,8 @@ public class IPos_DatamodelPackageImpl extends EPackageImpl implements IPos_Data
 		IPosDevKitPackage theIPosDevKitPackage = (IPosDevKitPackage) EPackage.Registry.INSTANCE
 				.getEPackage(IPosDevKitPackage.eNS_URI);
 		ToozPackage theToozPackage = (ToozPackage) EPackage.Registry.INSTANCE.getEPackage(ToozPackage.eNS_URI);
+		VDA5050Package theVDA5050Package = (VDA5050Package) EPackage.Registry.INSTANCE
+				.getEPackage(VDA5050Package.eNS_URI);
 		XMLTypePackage theXMLTypePackage = (XMLTypePackage) EPackage.Registry.INSTANCE
 				.getEPackage(XMLTypePackage.eNS_URI);
 
@@ -1884,6 +1998,7 @@ public class IPos_DatamodelPackageImpl extends EPackageImpl implements IPos_Data
 		getESubpackages().add(theOFBizPackage);
 		getESubpackages().add(theIPosDevKitPackage);
 		getESubpackages().add(theToozPackage);
+		getESubpackages().add(theVDA5050Package);
 
 		// Create type parameters
 
@@ -2291,6 +2406,24 @@ public class IPos_DatamodelPackageImpl extends EPackageImpl implements IPos_Data
 				null, 0, 1, DataStorageQueryResponse.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
 				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+		initEClass(messageReceivedEventEClass, MessageReceivedEvent.class, "MessageReceivedEvent", !IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getMessageReceivedEvent_ProtocolName(), ecorePackage.getEString(), "protocolName", null, 0, 1,
+				MessageReceivedEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMessageReceivedEvent_SerializedMsg(), this.getByteArray(), "serializedMsg", null, 0, 1,
+				MessageReceivedEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMessageReceivedEvent_AgentId(), ecorePackage.getEString(), "agentId", null, 0, 1,
+				MessageReceivedEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMessageReceivedEvent_ExtractedAttributes(), this.getListOfStringMaps(), "extractedAttributes",
+				null, 0, 1, MessageReceivedEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+				!IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMessageReceivedEvent_Timestamp(), ecorePackage.getEString(), "timestamp", null, 0, 1,
+				MessageReceivedEvent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
 		// Initialize data types
 		initEDataType(stringListEDataType, List.class, "StringList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS,
 				"java.util.List<java.lang.String>");
@@ -2302,6 +2435,10 @@ public class IPos_DatamodelPackageImpl extends EPackageImpl implements IPos_Data
 				!IS_GENERATED_INSTANCE_CLASS);
 		initEDataType(floatArrayEDataType, ArrayList.class, "FloatArray", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS,
 				"java.util.ArrayList<java.lang.Float[]>");
+		initEDataType(byteArrayEDataType, byte[].class, "ByteArray", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(listOfStringMapsEDataType, LinkedList.class, "ListOfStringMaps", IS_SERIALIZABLE,
+				!IS_GENERATED_INSTANCE_CLASS,
+				"java.util.LinkedList<java.util.HashMap<java.lang.String, java.lang.String>>");
 
 		// Create resource
 		createResource(eNS_URI);
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/LocalizableObjectImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/LocalizableObjectImpl.java
index 21269c5..42ae011 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/LocalizableObjectImpl.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/LocalizableObjectImpl.java
@@ -6,9 +6,7 @@ import ipos.project.DataModellntegration.iPos_Datamodel.Agent;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPos_DatamodelPackage;
 import ipos.project.DataModellntegration.iPos_Datamodel.LocalizableObject;
 import ipos.project.DataModellntegration.iPos_Datamodel.Placing;
-
 import org.eclipse.emf.common.notify.Notification;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -264,6 +262,7 @@ public class LocalizableObjectImpl extends EntityImpl implements LocalizableObje
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/MessageReceivedEventImpl.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/MessageReceivedEventImpl.java
new file mode 100644
index 0000000..971b5cf
--- /dev/null
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/impl/MessageReceivedEventImpl.java
@@ -0,0 +1,392 @@
+/**
+ */
+package ipos.project.DataModellntegration.iPos_Datamodel.impl;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.IPos_DatamodelPackage;
+import ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Message Received Event</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.impl.MessageReceivedEventImpl#getProtocolName <em>Protocol Name</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.impl.MessageReceivedEventImpl#getSerializedMsg <em>Serialized Msg</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.impl.MessageReceivedEventImpl#getAgentId <em>Agent Id</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.impl.MessageReceivedEventImpl#getExtractedAttributes <em>Extracted Attributes</em>}</li>
+ *   <li>{@link ipos.project.DataModellntegration.iPos_Datamodel.impl.MessageReceivedEventImpl#getTimestamp <em>Timestamp</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class MessageReceivedEventImpl extends MinimalEObjectImpl.Container implements MessageReceivedEvent {
+	/**
+	 * The default value of the '{@link #getProtocolName() <em>Protocol Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProtocolName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PROTOCOL_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getProtocolName() <em>Protocol Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProtocolName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String protocolName = PROTOCOL_NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSerializedMsg() <em>Serialized Msg</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSerializedMsg()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final byte[] SERIALIZED_MSG_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getSerializedMsg() <em>Serialized Msg</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSerializedMsg()
+	 * @generated
+	 * @ordered
+	 */
+	protected byte[] serializedMsg = SERIALIZED_MSG_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAgentId() <em>Agent Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAgentId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String AGENT_ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getAgentId() <em>Agent Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAgentId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String agentId = AGENT_ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getExtractedAttributes() <em>Extracted Attributes</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExtractedAttributes()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LinkedList<HashMap<String, String>> EXTRACTED_ATTRIBUTES_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getExtractedAttributes() <em>Extracted Attributes</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExtractedAttributes()
+	 * @generated
+	 * @ordered
+	 */
+	protected LinkedList<HashMap<String, String>> extractedAttributes = EXTRACTED_ATTRIBUTES_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getTimestamp() <em>Timestamp</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTimestamp()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TIMESTAMP_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getTimestamp() <em>Timestamp</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTimestamp()
+	 * @generated
+	 * @ordered
+	 */
+	protected String timestamp = TIMESTAMP_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MessageReceivedEventImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return IPos_DatamodelPackage.Literals.MESSAGE_RECEIVED_EVENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getProtocolName() {
+		return protocolName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setProtocolName(String newProtocolName) {
+		String oldProtocolName = protocolName;
+		protocolName = newProtocolName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__PROTOCOL_NAME, oldProtocolName, protocolName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public byte[] getSerializedMsg() {
+		return serializedMsg;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSerializedMsg(byte[] newSerializedMsg) {
+		byte[] oldSerializedMsg = serializedMsg;
+		serializedMsg = newSerializedMsg;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__SERIALIZED_MSG, oldSerializedMsg, serializedMsg));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getAgentId() {
+		return agentId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAgentId(String newAgentId) {
+		String oldAgentId = agentId;
+		agentId = newAgentId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__AGENT_ID, oldAgentId, agentId));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LinkedList<HashMap<String, String>> getExtractedAttributes() {
+		return extractedAttributes;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExtractedAttributes(LinkedList<HashMap<String, String>> newExtractedAttributes) {
+		LinkedList<HashMap<String, String>> oldExtractedAttributes = extractedAttributes;
+		extractedAttributes = newExtractedAttributes;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__EXTRACTED_ATTRIBUTES, oldExtractedAttributes,
+					extractedAttributes));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getTimestamp() {
+		return timestamp;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTimestamp(String newTimestamp) {
+		String oldTimestamp = timestamp;
+		timestamp = newTimestamp;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__TIMESTAMP, oldTimestamp, timestamp));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__PROTOCOL_NAME:
+			return getProtocolName();
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__SERIALIZED_MSG:
+			return getSerializedMsg();
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__AGENT_ID:
+			return getAgentId();
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__EXTRACTED_ATTRIBUTES:
+			return getExtractedAttributes();
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__TIMESTAMP:
+			return getTimestamp();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__PROTOCOL_NAME:
+			setProtocolName((String) newValue);
+			return;
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__SERIALIZED_MSG:
+			setSerializedMsg((byte[]) newValue);
+			return;
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__AGENT_ID:
+			setAgentId((String) newValue);
+			return;
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__EXTRACTED_ATTRIBUTES:
+			setExtractedAttributes((LinkedList<HashMap<String, String>>) newValue);
+			return;
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__TIMESTAMP:
+			setTimestamp((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__PROTOCOL_NAME:
+			setProtocolName(PROTOCOL_NAME_EDEFAULT);
+			return;
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__SERIALIZED_MSG:
+			setSerializedMsg(SERIALIZED_MSG_EDEFAULT);
+			return;
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__AGENT_ID:
+			setAgentId(AGENT_ID_EDEFAULT);
+			return;
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__EXTRACTED_ATTRIBUTES:
+			setExtractedAttributes(EXTRACTED_ATTRIBUTES_EDEFAULT);
+			return;
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__TIMESTAMP:
+			setTimestamp(TIMESTAMP_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__PROTOCOL_NAME:
+			return PROTOCOL_NAME_EDEFAULT == null ? protocolName != null : !PROTOCOL_NAME_EDEFAULT.equals(protocolName);
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__SERIALIZED_MSG:
+			return SERIALIZED_MSG_EDEFAULT == null ? serializedMsg != null
+					: !SERIALIZED_MSG_EDEFAULT.equals(serializedMsg);
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__AGENT_ID:
+			return AGENT_ID_EDEFAULT == null ? agentId != null : !AGENT_ID_EDEFAULT.equals(agentId);
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__EXTRACTED_ATTRIBUTES:
+			return EXTRACTED_ATTRIBUTES_EDEFAULT == null ? extractedAttributes != null
+					: !EXTRACTED_ATTRIBUTES_EDEFAULT.equals(extractedAttributes);
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT__TIMESTAMP:
+			return TIMESTAMP_EDEFAULT == null ? timestamp != null : !TIMESTAMP_EDEFAULT.equals(timestamp);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (protocolName: ");
+		result.append(protocolName);
+		result.append(", serializedMsg: ");
+		result.append(serializedMsg);
+		result.append(", agentId: ");
+		result.append(agentId);
+		result.append(", extractedAttributes: ");
+		result.append(extractedAttributes);
+		result.append(", timestamp: ");
+		result.append(timestamp);
+		result.append(')');
+		return result.toString();
+	}
+
+} //MessageReceivedEventImpl
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/util/IPos_DatamodelAdapterFactory.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/util/IPos_DatamodelAdapterFactory.java
index b0b0ad3..a32b36e 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/util/IPos_DatamodelAdapterFactory.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/util/IPos_DatamodelAdapterFactory.java
@@ -261,6 +261,11 @@ public class IPos_DatamodelAdapterFactory extends AdapterFactoryImpl {
 			return createDataStorageQueryResponseAdapter();
 		}
 
+		@Override
+		public Adapter caseMessageReceivedEvent(MessageReceivedEvent object) {
+			return createMessageReceivedEventAdapter();
+		}
+
 		@Override
 		public Adapter defaultCase(EObject object) {
 			return createEObjectAdapter();
@@ -826,6 +831,20 @@ public class IPos_DatamodelAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent <em>Message Received Event</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent
+	 * @generated
+	 */
+	public Adapter createMessageReceivedEventAdapter() {
+		return null;
+	}
+
 	/**
 	 * Creates a new adapter for the default case.
 	 * <!-- begin-user-doc -->
diff --git a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/util/IPos_DatamodelSwitch.java b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/util/IPos_DatamodelSwitch.java
index 6beea04..9a47158 100644
--- a/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/util/IPos_DatamodelSwitch.java
+++ b/src/main/java/ipos/project/DataModellntegration/iPos_Datamodel/util/IPos_DatamodelSwitch.java
@@ -389,6 +389,13 @@ public class IPos_DatamodelSwitch<T> extends Switch<T> {
 				result = defaultCase(theEObject);
 			return result;
 		}
+		case IPos_DatamodelPackage.MESSAGE_RECEIVED_EVENT: {
+			MessageReceivedEvent messageReceivedEvent = (MessageReceivedEvent) theEObject;
+			T result = caseMessageReceivedEvent(messageReceivedEvent);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
 		default:
 			return defaultCase(theEObject);
 		}
@@ -979,6 +986,21 @@ public class IPos_DatamodelSwitch<T> extends Switch<T> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Message Received Event</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Message Received Event</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMessageReceivedEvent(MessageReceivedEvent object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
 	 * <!-- begin-user-doc -->
diff --git a/src/main/java/ipos/project/Functionality/eventfilter/BeaconFilteringResult.java b/src/main/java/ipos/project/Functionality/eventfilter/BeaconFilteringResult.java
index f78c359..1e8a1f5 100644
--- a/src/main/java/ipos/project/Functionality/eventfilter/BeaconFilteringResult.java
+++ b/src/main/java/ipos/project/Functionality/eventfilter/BeaconFilteringResult.java
@@ -2,28 +2,17 @@ package ipos.project.Functionality.eventfilter;
 
 import ipos.project.DataModellntegration.iPos_Datamodel.Beacon;
 
-public class BeaconFilteringResult {
+public class BeaconFilteringResult extends FilteringResult {
 
     private Beacon beaconRawdataEvent;
-    private String monitoringTaskId;
-    private boolean isBlocking;
 
     public BeaconFilteringResult(String monitoringTaskId, Beacon beaconRawdataEvent, Boolean isBlocking) {
+        super(monitoringTaskId, isBlocking);
         this.beaconRawdataEvent = beaconRawdataEvent;
-        this.monitoringTaskId = monitoringTaskId;
-        this.isBlocking = isBlocking;
-    }
+     }
 
     public Beacon getBeaconRawdataEvent() {
         return beaconRawdataEvent;
     }
 
-    public String getMonitoringTaskId() {
-        return monitoringTaskId;
-    }
-
-    public boolean hasBlockedEvent(){
-        return this.isBlocking;
-    }
-
 }
diff --git a/src/main/java/ipos/project/Functionality/eventfilter/MsgRcvFilteringResult.java b/src/main/java/ipos/project/Functionality/eventfilter/MsgRcvFilteringResult.java
new file mode 100644
index 0000000..e934fdd
--- /dev/null
+++ b/src/main/java/ipos/project/Functionality/eventfilter/MsgRcvFilteringResult.java
@@ -0,0 +1,18 @@
+package ipos.project.Functionality.eventfilter;
+
+import ipos.project.DataModellntegration.iPos_Datamodel.MessageReceivedEvent;
+
+public class MsgRcvFilteringResult extends FilteringResult {
+
+    private MessageReceivedEvent messageReceivedEvent;
+
+    public MsgRcvFilteringResult(String monitoringTaskId, MessageReceivedEvent messageReceivedEvent, Boolean isBlocking) {
+        super(monitoringTaskId, isBlocking);
+        this.messageReceivedEvent = messageReceivedEvent;
+    }
+
+    public MessageReceivedEvent getMessageReceivedEvent() {
+        return messageReceivedEvent;
+    }
+
+}
diff --git a/src/main/java/ipos/project/Functionality/eventfilter/eventFilter.java b/src/main/java/ipos/project/Functionality/eventfilter/eventFilter.java
index 6b1af87..34f957b 100644
--- a/src/main/java/ipos/project/Functionality/eventfilter/eventFilter.java
+++ b/src/main/java/ipos/project/Functionality/eventfilter/eventFilter.java
@@ -17,7 +17,8 @@ public class eventFilter {
     private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger();
 
     public static final String MONREQ_DISTANCE_PROPERTY = "distance";
-    public static final List<String> MONREQ_ALLOWED_PROPERTIES = Arrays.asList("position", "id", "type", MONREQ_DISTANCE_PROPERTY);
+    public static final String MONREQ_VDA5050_PROPERTY = "VDA5050";
+    public static final List<String> MONREQ_ALLOWED_PROPERTIES = Arrays.asList("position", "id", "type", MONREQ_DISTANCE_PROPERTY, MONREQ_VDA5050_PROPERTY);
 
     private boolean[] filterStructure;
     //
@@ -143,23 +144,23 @@ public class eventFilter {
         return new BeaconFilteringResult(getMonitoringTaskId(), beaconRawdataEvent, isBlocking);
     }
 
-    public FilteringResult process(PositionEvent event) throws ParseException {
+    public PositionFilteringResult process(PositionEvent event) throws ParseException {
         IPos_DatamodelFactory dataModelFactory = IPos_DatamodelFactory.eINSTANCE;
         LocalizableObject lObject = DataServices.getLObjectByIdOrNull(event.getLObjectId());
         boolean flag = false; //false for pass, true for block
         List<String> matchingCells = new LinkedList<>();
         if (null == event.getPlacing() || null == event.getPlacing().getPosition() || null == event.getPlacing().getPosition().getPoint()){
             LOG.info("EventFilter: Warning: Received event with unknown Position. Sensor-id: " + event.getLObjectId());
-            return new FilteringResult(getMonitoringTaskId(), event,true, matchingCells, new ArrayList<>(this.positionConditionCells.keySet()));
+            return new PositionFilteringResult(getMonitoringTaskId(), event,true, matchingCells, new ArrayList<>(this.positionConditionCells.keySet()));
         }
         if (null == lObject){
             LOG.info("EventFilter: Warning: Received event from sensor with unknown sensor-id: " + event.getLObjectId());
-            return new FilteringResult(getMonitoringTaskId(), event,true, matchingCells, new ArrayList<>(this.positionConditionCells.keySet()));
+            return new PositionFilteringResult(getMonitoringTaskId(), event,true, matchingCells, new ArrayList<>(this.positionConditionCells.keySet()));
         }
         Agent agent = lObject.getAgent();
         if (null == agent){
             LOG.info("EventFilter: Warning: Received event for sensor-id with unknown agent. Sensor-id: " + lObject.getId());
-            return new FilteringResult(getMonitoringTaskId(), event,true, matchingCells, new ArrayList<>(this.positionConditionCells.keySet()));
+            return new PositionFilteringResult(getMonitoringTaskId(), event,true, matchingCells, new ArrayList<>(this.positionConditionCells.keySet()));
         }
 
         LOG.info("Eventfilter: Filter structure: " + filterStructure[0] + ", " + filterStructure[1] + ", " + filterStructure[2] + ", " + filterStructure[3] + ", " + filterStructure[4] + ", " + filterStructure[5] + ", " + filterStructure[6] + ", " + filterStructure[7]);
@@ -316,8 +317,8 @@ public class eventFilter {
         if (!flag) {
             last_position_event = event;
         }
-        FilteringResult filteringResult = new FilteringResult(getMonitoringTaskId(), event, flag, matchingCells, new ArrayList<>(this.positionConditionCells.keySet()));
-        return filteringResult;
+        PositionFilteringResult positionFilteringResult = new PositionFilteringResult(getMonitoringTaskId(), event, flag, matchingCells, new ArrayList<>(this.positionConditionCells.keySet()));
+        return positionFilteringResult;
     }
 
     private boolean evaluatePositionConditionCell(Position position, ArrayList<Float[][]> positionConditionCell) {
@@ -336,4 +337,13 @@ public class eventFilter {
     public boolean respectsAccuracySdfForPosEvent(PositionEvent posEvent) {
         return (true || PositionMonitoring.ACCURACY_FUSION_STRATEGY.equals(this.getFusionStrategy())); // sensor data fusion is currently switched on by default, but later it may depend on agent-id
     }
+
+    public MsgRcvFilteringResult processMessageReceivedEvent(MessageReceivedEvent messageReceivedEvent) {
+        boolean isVDA5050Message = MONREQ_VDA5050_PROPERTY.equals(messageReceivedEvent.getProtocolName());
+        boolean eFilterIsAcceptingVDA5050Message = propertyCondition.contains(MONREQ_VDA5050_PROPERTY);
+        boolean isAccepting = isVDA5050Message && eFilterIsAcceptingVDA5050Message;
+        boolean isBlocking =  !isAccepting;
+        MsgRcvFilteringResult msgRcvFilteringResult = new MsgRcvFilteringResult(this.getMonitoringTaskId(), messageReceivedEvent, isBlocking);
+        return msgRcvFilteringResult;
+    }
 }
diff --git a/src/main/java/ipos/project/Functionality/eventfilter/readConfig.java b/src/main/java/ipos/project/Functionality/eventfilter/readConfig.java
index 3fe1a07..f009bf0 100644
--- a/src/main/java/ipos/project/Functionality/eventfilter/readConfig.java
+++ b/src/main/java/ipos/project/Functionality/eventfilter/readConfig.java
@@ -57,7 +57,7 @@ public class readConfig {
         if (eventFilter.MONREQ_ALLOWED_PROPERTIES.contains(property)){
             config.getPropertyCondition().add(property);
         }else{
-            throw new RuntimeException("MonitoringRequest contained an invalid: " + property);
+            throw new RuntimeException("MonitoringRequest contained an invalid property: " + property);
         }
     }
 
diff --git a/src/main/java/ipos/project/MainApp.java b/src/main/java/ipos/project/MainApp.java
index 3c2b5dc..4faf86d 100644
--- a/src/main/java/ipos/project/MainApp.java
+++ b/src/main/java/ipos/project/MainApp.java
@@ -1,6 +1,7 @@
 package ipos.project;
 
 import ipos.project.DataModellntegration.SimpleSceneIntegration.SimpleSceneIntegration;
+import ipos.project.DataModellntegration.VDA5050Processor.VDA5050Processor;
 import ipos.project.SensorValueIntegration.GenericSensorValueProcessor;
 import ipos.project.iposextension.orderpicker.OFBizOrderPicker;
 import ipos.project.iposextension.tooz.Tooz;
@@ -15,6 +16,7 @@ import java.util.Scanner;
 // @EnableJpaRepositories("ipos.project.models.SimpleScene.*")
 @EnableJpaRepositories("ipos.project.DataModellntegration.iPos_Datamodel.impl")
 public class MainApp {
+    public static boolean READY_TO_READ_NEXT_LINE = true; // reading the first line shall not require user actions
     private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger();
 
     // public static final String TESTRAWDATA_FILE = "./testdata_raw.txt";
@@ -29,22 +31,24 @@ public class MainApp {
     public static final String TESTDATA_SDF = "testdata_raw_sdf.txt";
     public static final String TESTDATA_TOOZ = "testdata_raw_tooz.txt";
     public static final String TESTDATA_TOOZ_MONTARGET = "testdata_raw_tooz_init.txt";
+    public static final String TESTDATA_VDA5050 = "testdata_raw_vda5050.txt";
     public static final String COMMAND_INDFRO = "indfro testdata"; // Industrierobotik_Frontend
     public static final String COMMAND_OP = "oppl testdata";
     public static final String COMMAND_OP_EVTS = "opevts testdata";
     public static final String COMMAND_SDF = "sdf testdata";
     public static final String COMMAND_TOOZ_TARGET = "tooz setMonitoringTarget";
     public static final String COMMAND_TOOZ = "tooz testdata";
+    public static final String COMMAND_VDA5050 = "testdata VDA5050";
     public static final String COMMAND_EXIT = "exit";
     public static final String COMMAND_HELP = "help";
     public static final String COMMAND_QUERY = "query";
     public static final String COMMAND_INIT_INDFRO = "init indfro";
     public static final String COMMAND_INIT_SDF = "init sdf";
     public static final String COMMAND_INIT_OP = "init op";
+    public static final String COMMAND_READY_FOR_NEXT_LINE = "next line";
     public static final String UNKNOWN_COMMAND = "SHELL: Unknown command";
     private static boolean proceed = true;
 
-
     public static void main(String[] args){
         SpringApplication.run(MainApp.class, args);
         printCommands();
@@ -64,12 +68,13 @@ public class MainApp {
                     case COMMAND_HELP: printCommands(); break;
                     case COMMAND_INDFRO: GenericSensorValueProcessor.processTestData(TESTDATA_INDFRO); break;
                     case COMMAND_TOOZ_TARGET: Tooz.processMonTargetTestdata(TESTDATA_TOOZ_MONTARGET); break;
+                    case COMMAND_VDA5050: VDA5050Processor.processTestData(TESTDATA_VDA5050); break;
                     case COMMAND_TOOZ: GenericSensorValueProcessor.processTestData(TESTDATA_TOOZ); break;
                     case COMMAND_SDF: GenericSensorValueProcessor.processTestData(TESTDATA_SDF); break;
                     case COMMAND_OP : OFBizOrderPicker.processPicklistTestData(TESTDATA_OP); break;
                     case COMMAND_OP_EVTS: OFBizOrderPicker.processPosEvtTestData(TESTDATA_OP_EVTS); break;
                     case COMMAND_QUERY : SimpleSceneIntegration.handleMessageFile(TESTDATA_QUERY); break;
-                    default: LOG.info(UNKNOWN_COMMAND);
+                    default: LOG.info(UNKNOWN_COMMAND); break;
                 }
             }
         }
@@ -117,6 +122,8 @@ public class MainApp {
         LOG.info("SHELL:" + COMMAND_OP);
         LOG.info("SHELL:" + COMMAND_OP_EVTS);
         LOG.info("SHELL:" + COMMAND_QUERY);
+        LOG.info("SHELL:" + COMMAND_TOOZ);
+        LOG.info("SHELL:" + COMMAND_VDA5050);
         LOG.info("SHELL:---------");
         LOG.info("SHELL:Other:");
         LOG.info("SHELL:---------");
diff --git a/src/main/java/ipos/project/SensorValueIntegration/GenericSensorValueProcessor.java b/src/main/java/ipos/project/SensorValueIntegration/GenericSensorValueProcessor.java
index 6fe03b3..94cb651 100644
--- a/src/main/java/ipos/project/SensorValueIntegration/GenericSensorValueProcessor.java
+++ b/src/main/java/ipos/project/SensorValueIntegration/GenericSensorValueProcessor.java
@@ -2,24 +2,21 @@ package ipos.project.SensorValueIntegration;
 
 import com.google.protobuf.InvalidProtocolBufferException;
 import ipos.models.GenericSensor;
-import ipos.models.SimpleScene;
 import ipos.models.SimpleScene.IposPosition;
-import ipos.project.DataModellntegration.SimpleSceneIntegration.service.SimpleSceneTransformer;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosUWBEvent;
 import ipos.project.DataModellntegration.iPos_Datamodel.UWB;
 import ipos.project.SensorValueIntegration.Service.GenericSensorTransformer;
-import ipos.project.UseCaseController.PositionMonitoring;
 import ipos.project.devkit.utility.ExternalPubServiceImpl;
 import ipos.project.SensorValueIntegration.api.MqttPositionHandler;
 import ipos.project.devkit.utility.OtherUtility;
 import ipos.project.devkit.utility.ProtoJsonMap;
 import org.apache.logging.log4j.LogManager;
-import org.eclipse.paho.client.mqttv3.MqttMessage;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jms.annotation.JmsListener;
 import org.springframework.stereotype.Component;
 
 import java.io.File;
+import java.util.Scanner;
 
 @Component
 public class GenericSensorValueProcessor {
@@ -45,9 +42,11 @@ public class GenericSensorValueProcessor {
 
     public static void processTestData(String path_to_test_data_file){
         File testDataFile = new File(path_to_test_data_file);
+        Scanner scanner = new Scanner(System.in);
         try {
             for (String line : OtherUtility.readLines(testDataFile)) {
                 GenericSensor.SensorEventWrapper sensorEventWrapper = ProtoJsonMap.fromJson(line, GenericSensor.SensorEventWrapper.class);
+                OtherUtility.waitUntilUserRequestsReadingNextLine(scanner);
                 MqttPositionHandler.handleSensorEventWrapper(sensorEventWrapper);
             }
         }catch (InvalidProtocolBufferException e) {
@@ -59,8 +58,9 @@ public class GenericSensorValueProcessor {
     public static void receiveMessage(UWB beaconRawdataEvent, String monitoringTaskId, String serializationType, String agentId, String agentType) {
         IPosUWBEvent iPosUWBEvent_internal = GenericSensorTransformer.uwb_internal2IPosRawdata(beaconRawdataEvent, agentId, agentType);
         GenericSensor.IPosUWBEvent iPosUWBEvent_proto = GenericSensorTransformer.uwb_IPosRawdata2proto(iPosUWBEvent_internal);
+        GenericSensor.IPosRawdataEventWrapper iPosRawdataEventWrapper_proto = GenericSensorTransformer.uwb_wrapIntoRawdataEventWrapper(iPosUWBEvent_proto);
         logging_tooz(iPosUWBEvent_proto, monitoringTaskId, serializationType);
-        OtherUtility.publishRespectingSerializationType(monitoringTaskId, serializationType, iPosUWBEvent_proto);
+        OtherUtility.publishRespectingSerializationType(monitoringTaskId, serializationType, iPosRawdataEventWrapper_proto);
     }
 
     private static void logging_tooz(GenericSensor.IPosUWBEvent event_proto, String monitoringTaskId, String serializationType) {
diff --git a/src/main/java/ipos/project/SensorValueIntegration/Service/GenericSensorTransformer.java b/src/main/java/ipos/project/SensorValueIntegration/Service/GenericSensorTransformer.java
index 5a36e1c..5c9dbd7 100644
--- a/src/main/java/ipos/project/SensorValueIntegration/Service/GenericSensorTransformer.java
+++ b/src/main/java/ipos/project/SensorValueIntegration/Service/GenericSensorTransformer.java
@@ -37,7 +37,7 @@ public class GenericSensorTransformer {
 
         // TODO: Zugriff auf Weltmodell ermöglichen um Bezugssystem-Objekt beschaffen zu können
         positionEvent.setPlacing(
-                createPlacing(
+                IPos2protoTransformer.createPlacing(
                         IPos2protoTransformer.createPosition(
                                 IPos2protoTransformer.createPoint3D(
                                         protoSensPosEvent.getPosition().getPoint().getX(),
@@ -58,13 +58,6 @@ public class GenericSensorTransformer {
         return positionEvent;
     }
 
-    private static Placing createPlacing(Position position, Orientation orientation){
-        Placing placing = modelFactory.createPlacing();
-        placing.setPosition(position);
-        placing.setOrientation(orientation);
-        return placing;
-    }
-
     public static NFC nfc_GSensor2Internal(GenericSensor.NFCRawDataEvent proto_nfcRawdataEvent) {
         NFC internal_nfcRawdataEvent = modelFactory.createNFC();
         // internal_nfcRawdataEvent.setTimeStamp(proto_nfcRawdataEvent.getTimestamp());
@@ -154,6 +147,12 @@ public class GenericSensorTransformer {
         protoIPosUWBEvent.putAllDistances(beaconDistances_internal2GSensor(iPosUWBEvent_internal.getDistances()));
         return protoIPosUWBEvent.build();
    }
+
+    public static GenericSensor.IPosRawdataEventWrapper uwb_wrapIntoRawdataEventWrapper(GenericSensor.IPosUWBEvent iPosUWBEvent_proto) {
+        GenericSensor.IPosRawdataEventWrapper.Builder iPosRawdataEventWrapper_proto = GenericSensor.IPosRawdataEventWrapper.newBuilder();
+        iPosRawdataEventWrapper_proto.addIPosUWBEvent(iPosUWBEvent_proto);
+        return iPosRawdataEventWrapper_proto.build();
+   }
 }
 
 
diff --git a/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java b/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java
index 1d3cbbe..8155400 100644
--- a/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java
+++ b/src/main/java/ipos/project/UseCaseController/PositionMonitoring.java
@@ -4,11 +4,13 @@ import ipos.project.DataModellntegration.SimpleSceneIntegration.SimpleSceneInteg
 import ipos.project.DataModellntegration.iPos_Datamodel.*;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.DataStorageQueryRequest;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosDevKitFactory;
+import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposMsgRcvEvent;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.MonitoringRequest;
 import ipos.project.Functionality.*;
 import ipos.project.Functionality.eventfilter.*;
 import ipos.project.Functionality.eventfilter.BeaconFilteringResult;
 import ipos.project.SensorValueIntegration.GenericSensorValueProcessor;
+import ipos.project.devkit.trans.IPos2protoTransformer;
 import org.apache.logging.log4j.LogManager;
 import org.springframework.jms.annotation.JmsListener;
 import org.springframework.stereotype.Component;
@@ -164,6 +166,7 @@ public class PositionMonitoring {
         // Directly changing this object just works for the current simple case that we only have the object-representation of the world model
         // in general it has to be made sure that both, all links from this object and to this object keep intact
         lObject.setCurrentPlacing(positionEvent.getPlacing());
+        lObject.setLastPosUpdate(positionEvent.getTimeStamp());
     }
 
     private MonitoringRequest createMonitoringRequest(List<String> frameIds, String monitoringTaskId) {
@@ -257,27 +260,107 @@ public class PositionMonitoring {
         LOG.info("Position after transformation to ROOT-coordinates: " + posEvent.getPlacing().getPosition().toString());
 
         boolean posEventMeetsSdfAccuracyCondition = SensorDataFusion.isMostAccuratePositionAvailable(posEvent);
-        List<FilteringResult> filteringResults = new LinkedList<>();
+        List<PositionFilteringResult> positionFilteringResults = new LinkedList<>();
         for (eventFilter eFilter : eventFilters){
            try {
                 if (eFilterMayHandlePosEvent(posEvent, posEventMeetsSdfAccuracyCondition, eFilter)){
-                    filteringResults.add(applyEfilterToPosEvent(posEvent, eFilter));
+                    positionFilteringResults.add(applyEfilterToPosEvent(posEvent, eFilter));
                 }
             } catch (ParseException e) {
-               processFilteringResults(posEvent, filteringResults);
+               processFilteringResults(posEvent, positionFilteringResults);
                e.printStackTrace();
                 return;
             }
         }
-        processFilteringResults(posEvent, filteringResults);
+        processFilteringResults(posEvent, positionFilteringResults);
         LOG.info("INDFRO-DEBUG: zonePopulation after processing filtering results: " + zonePopulation.toString());
     }
 
-    private static void processFilteringResults(PositionEvent posEvent, List<FilteringResult> filteringResults) {
-        Map<String, List<ZoneDescriptor>> eFilterZoneDescriptors = translateResultsIntoZoneDescriptors(filteringResults);;
+    public static void receiveMessage(MessageReceivedEvent messageReceivedEvent) {
+        try {
+            _receiveMessage(messageReceivedEvent);
+        }catch (NullPointerException e){
+            LOG.info("Could not process received message. " + e.getMessage());
+            e.printStackTrace();
+        }
+    }
+
+    private static void _receiveMessage(MessageReceivedEvent messageReceivedEvent) {
+        for (eventFilter eFilter : eventFilters){
+            applyEFilterToMessageReceivedEventAndProcessFilteringResult(messageReceivedEvent, eFilter);
+        }
+    }
+
+    private static void applyEFilterToMessageReceivedEventAndProcessFilteringResult(MessageReceivedEvent messageReceivedEvent, eventFilter eFilter) {
+        MsgRcvFilteringResult msgRcvFilteringResult = eFilter.processMessageReceivedEvent(messageReceivedEvent);
+        if (msgRcvFilteringResult.hasBlockedEvent()){
+            return;
+        }else{
+            IposMsgRcvEvent iposMsgRcvEvent = createIposMsgRcvEvent(msgRcvFilteringResult);
+            LOG.info("VDA5050: Filter accepted MessageReceived event.");
+            LOG.info("VDA5050: Corresponding IposMsgRcvEvent: " + iposMsgRcvEvent.toString());
+            SimpleSceneIntegration.receiveMessage(iposMsgRcvEvent, msgRcvFilteringResult.getMonitoringTaskId(), eFilter.getSerializationType());
+        }
+    }
+
+    private static IposMsgRcvEvent createIposMsgRcvEvent(MsgRcvFilteringResult msgRcvFilteringResult) {
+        LocalizableObject lObject = getLObjectAssociatedToMessageRcvFilteringEvent(msgRcvFilteringResult);
+        IposMsgRcvEvent iposMsgRcvEvent = extendMessageRcvFilteringEventToIposMsgRcvFilteringEvent(msgRcvFilteringResult, lObject);
+        return iposMsgRcvEvent;
+    }
+
+    private static IposMsgRcvEvent extendMessageRcvFilteringEventToIposMsgRcvFilteringEvent(MsgRcvFilteringResult msgRcvFilteringResult, LocalizableObject lObject) {
+        IposMsgRcvEvent iposMsgRcvEvent = devKitFactory.createIposMsgRcvEvent();
+        iposMsgRcvEvent.setProtocolName(msgRcvFilteringResult.getMessageReceivedEvent().getProtocolName());
+        iposMsgRcvEvent.setSerializedMsg(msgRcvFilteringResult.getMessageReceivedEvent().getSerializedMsg());
+        iposMsgRcvEvent.setAgentId(msgRcvFilteringResult.getMessageReceivedEvent().getAgentId());
+        iposMsgRcvEvent.setExtractedAttributes(msgRcvFilteringResult.getMessageReceivedEvent().getExtractedAttributes());
+        iposMsgRcvEvent.setTimestamp(msgRcvFilteringResult.getMessageReceivedEvent().getTimestamp());
+        handleOptionalData(lObject, iposMsgRcvEvent);
+        iposMsgRcvEvent.getLastKnownZonedescriptors().addAll(createDescriptorsForZonesThatAgentIsCurrentlyLocatedIn(msgRcvFilteringResult));
+        return iposMsgRcvEvent;
+    }
+
+    private static void handleOptionalData(LocalizableObject lObject, IposMsgRcvEvent iposMsgRcvEvent) {
+        if (null != lObject.getCurrentPlacing() && null != lObject.getCurrentPlacing().getPosition()){
+            iposMsgRcvEvent.setLastKnownPosition(lObject.getCurrentPlacing().getPosition());
+            iposMsgRcvEvent.setLastPosUpdate(lObject.getLastPosUpdate());
+        }
+        if (null != lObject.getCurrentPlacing() && null != lObject.getCurrentPlacing().getOrientation()){
+            iposMsgRcvEvent.setLastKnownOrientation(lObject.getCurrentPlacing().getOrientation());
+        }
+    }
+
+
+    private static List<ZoneDescriptor> createDescriptorsForZonesThatAgentIsCurrentlyLocatedIn(MsgRcvFilteringResult msgRcvFilteringResult) {
+        List<ZoneDescriptor> zoneDescriptors = new LinkedList<>();
+        eventFilter eFilter = Objects.requireNonNull(getEventFilterByIdOrNull(msgRcvFilteringResult.getMonitoringTaskId()), "unknown monitoring-task-id: " + msgRcvFilteringResult.getMonitoringTaskId());
+        Set<String> zoneIdsThatEFilterIsInterestedIn = eFilter.getFilterConditionConfig().getPositionConditionCells().keySet();
+        for (String zoneId : zoneIdsThatEFilterIsInterestedIn){
+            List<String> idsOfAgentsCurrentlyInZone = zonePopulation.get(zoneId);
+            // Is the AGV that the Message originated from known to be currently located in that zone?
+            if(idsOfAgentsCurrentlyInZone.contains(msgRcvFilteringResult.getMessageReceivedEvent().getAgentId())){
+                ZoneDescriptor zoneDescriptor = modelFactory.createZoneDescriptor();
+                zoneDescriptor.setZoneId(zoneId);
+                zoneDescriptor.setNotificationType(UNDEFINED_TYPE); // notification type: Do we indicate with this message that a zone was left or entered?
+                zoneDescriptors.add(zoneDescriptor);
+            }
+        }
+        return zoneDescriptors;
+    }
+
+    private static LocalizableObject getLObjectAssociatedToMessageRcvFilteringEvent(MsgRcvFilteringResult msgRcvFilteringResult) {
+        String agentId_whichEquals_sensorId = msgRcvFilteringResult.getMessageReceivedEvent().getAgentId();
+        LocalizableObject lObject = getLObjectByIdOrNull(agentId_whichEquals_sensorId);
+        return Objects.requireNonNull(lObject, "Received message is associated to an unknown sensor-id: " + agentId_whichEquals_sensorId);
+    }
+
+    private static void processFilteringResults(PositionEvent posEvent, List<PositionFilteringResult> positionFilteringResults) {
+        Map<String, List<ZoneDescriptor>> eFilterZoneDescriptors = translateResultsIntoZoneDescriptors(positionFilteringResults);
         persistPositionEvent(posEvent, eFilterZoneDescriptors);
         sendPositionEventToRequesters(posEvent, eFilterZoneDescriptors);
         updateZoneAssociations(posEvent, eFilterZoneDescriptors);
+        updateLocalizableObject(posEvent);
     }
 
     /**
@@ -302,7 +385,7 @@ public class PositionMonitoring {
                 LOG.warn("A monitoringTaskId was passed that is not associated to any known eventFilter");
                 continue;
             }
-            PositionEvent posEventCopy = createShallowCopyOfPosEvent(posEvent);
+            PositionEvent posEventCopy = createDeepCopyOfPosEvent(posEvent);
             posEventCopy.getZonedescriptors().addAll(zoneDescriptorsEFilterResult); // ZoneDescriptors-Collection of PositionEvent was empty up until this point of execution
             Administration.transformToRequesterCoordinates(posEventCopy, eFilter.getRefSystemId());
             SimpleSceneIntegration.receiveMessage(posEventCopy, monitoringTaskId, getFirstNotificationTypeOrUndefined(zoneDescriptorsEFilterResult), eFilter.getSerializationType());
@@ -320,7 +403,7 @@ public class PositionMonitoring {
                 continue;
             }
             if( containsExitNotification(zoneDescriptorsEFilterResult)){
-                PositionEvent posEventCopy = createShallowCopyOfPosEvent(posEvent);
+                PositionEvent posEventCopy = createDeepCopyOfPosEvent(posEvent);
                 posEventCopy.getZonedescriptors().addAll(zoneDescriptorsEFilterResult);
                 Administration.transformToRequesterCoordinates(posEventCopy, eFilter.getRefSystemId());
                 SimpleSceneIntegration.receiveMessage(posEventCopy, monitoringTaskId, getFirstNotificationTypeOrUndefined(zoneDescriptorsEFilterResult), eFilter.getSerializationType());
@@ -350,7 +433,7 @@ public class PositionMonitoring {
     private static void persistPositionEvent(PositionEvent posEvent, Map<String, List<ZoneDescriptor>> eFilterZoneDescriptors) {
         for (String monitoringTaskId : eFilterZoneDescriptors.keySet()){
             List<ZoneDescriptor> zoneDescriptorsEFilterResult = eFilterZoneDescriptors.get(monitoringTaskId);
-            PositionEvent posEventCopy = createShallowCopyOfPosEvent(posEvent);
+            PositionEvent posEventCopy = createDeepCopyOfPosEvent(posEvent);
             posEventCopy.getZonedescriptors().addAll(zoneDescriptorsEFilterResult);
             DataServices.persist(posEventCopy, monitoringTaskId + PositionMonitoring.TRACKING_SUFFIX);
         }
@@ -361,12 +444,33 @@ public class PositionMonitoring {
      * @param posEvent
      * @return
      */
-    private static PositionEvent createShallowCopyOfPosEvent(PositionEvent posEvent) {
-        PositionEvent posEventShallowCopy = modelFactory.createPositionEvent();
-        posEventShallowCopy.setPlacing(posEvent.getPlacing());
-        posEventShallowCopy.setTimeStamp(posEvent.getTimeStamp());
-        posEventShallowCopy.setLObjectId(posEvent.getLObjectId());
-        return posEventShallowCopy;
+    private static PositionEvent createDeepCopyOfPosEvent(PositionEvent posEvent) {
+        PositionEvent posEventDeepCopy = modelFactory.createPositionEvent();
+        posEventDeepCopy.setPlacing(createDeepCopyOfPlacing(posEvent.getPlacing()));
+        posEventDeepCopy.setTimeStamp(posEvent.getTimeStamp());
+        posEventDeepCopy.setLObjectId(posEvent.getLObjectId());
+        return posEventDeepCopy;
+    }
+
+    private static Placing createDeepCopyOfPlacing(Placing placingOriginal) {
+        Placing placingCopy = IPos2protoTransformer.createPlacing(
+                IPos2protoTransformer.createPosition(
+                        IPos2protoTransformer.createPoint3D(
+                                ((Point3D) placingOriginal.getPosition().getPoint()).getX(),
+                                ((Point3D) placingOriginal.getPosition().getPoint()).getY(),
+                                ((Point3D) placingOriginal.getPosition().getPoint()).getZ()
+                        ),
+                        ((Gaussian) placingOriginal.getPosition().getAccuracy()).getConfidenceInterval(),
+                        DataServices.getReferenceSystemByIdOrNull(placingOriginal.getPosition().getReferenceSystem().getId())
+                ),
+                IPos2protoTransformer.createOrientation(
+                        ((Quaternion) placingOriginal.getOrientation()).getX(),
+                        ((Quaternion) placingOriginal.getOrientation()).getY(),
+                        ((Quaternion) placingOriginal.getOrientation()).getZ(),
+                        ((Quaternion) placingOriginal.getOrientation()).getW()
+                )
+        );
+        return placingCopy;
     }
 
     private static void updateZoneAssociations(PositionEvent posEvent, Map<String, List<ZoneDescriptor>> eFilterZoneDescriptors) {
@@ -394,15 +498,15 @@ public class PositionMonitoring {
     /**
      * ZoneDescriptors are provided for filteringResults that originated in eventFilters
      * that rejected the event only if those ZoneDescriptors communicate an ExitNotification.
-     * @param filteringResults
+     * @param positionFilteringResults
      * @return
      */
-    private static Map<String, List<ZoneDescriptor>> translateResultsIntoZoneDescriptors(List<FilteringResult> filteringResults) {
+    private static Map<String, List<ZoneDescriptor>> translateResultsIntoZoneDescriptors(List<PositionFilteringResult> positionFilteringResults) {
         Map<String, List<ZoneDescriptor>> eFilterzoneDescriptors = new HashMap<>();
-        for (FilteringResult filteringResult : filteringResults){
-            String monitoringTaskId = filteringResult.getMonitoringTaskId();
-            List<ZoneDescriptor> zoneDescriptors = toZoneDescriptors(filteringResult);
-            if (!filteringResult.hasBlockedEvent()) {
+        for (PositionFilteringResult positionFilteringResult : positionFilteringResults){
+            String monitoringTaskId = positionFilteringResult.getMonitoringTaskId();
+            List<ZoneDescriptor> zoneDescriptors = toZoneDescriptors(positionFilteringResult);
+            if (!positionFilteringResult.hasBlockedEvent()) {
                 eFilterzoneDescriptors.put(monitoringTaskId, zoneDescriptors);
             }else{
                 if (containsExitNotification(zoneDescriptors)){
@@ -414,19 +518,19 @@ public class PositionMonitoring {
         return eFilterzoneDescriptors;
     }
 
-    private static List<ZoneDescriptor> toZoneDescriptors(FilteringResult filteringResult) {
+    private static List<ZoneDescriptor> toZoneDescriptors(PositionFilteringResult positionFilteringResult) {
         List<ZoneDescriptor> zoneDescriptors = new LinkedList<>();
-        zoneDescriptors.addAll(calcDescriptorsForMatchingZones(filteringResult));
-        zoneDescriptors.addAll(calcDescriptorsForNonMatchingZones(filteringResult));
+        zoneDescriptors.addAll(calcDescriptorsForMatchingZones(positionFilteringResult));
+        zoneDescriptors.addAll(calcDescriptorsForNonMatchingZones(positionFilteringResult));
         return zoneDescriptors;
     }
 
-    private static List<ZoneDescriptor> calcDescriptorsForNonMatchingZones(FilteringResult filteringResult) {
+    private static List<ZoneDescriptor> calcDescriptorsForNonMatchingZones(PositionFilteringResult positionFilteringResult) {
         List<ZoneDescriptor> zoneDescriptors = new LinkedList<>();
-        for (String zoneId : filteringResult.getNonMatchingPositionConditionCellIds()){
+        for (String zoneId : positionFilteringResult.getNonMatchingPositionConditionCellIds()){
             ZoneDescriptor zoneDescriptor = modelFactory.createZoneDescriptor();
             zoneDescriptor.setZoneId(zoneId);
-            if(isExitNotification(filteringResult, zoneId)){
+            if(isExitNotification(positionFilteringResult, zoneId)){
                 zoneDescriptor.setNotificationType(PositionMonitoring.EXIT_NOTIFICATION_TYPE);
                 zoneDescriptors.add(zoneDescriptor);
             }
@@ -434,13 +538,13 @@ public class PositionMonitoring {
         return zoneDescriptors;
     }
 
-    private static List<ZoneDescriptor> calcDescriptorsForMatchingZones(FilteringResult filteringResult) {
+    private static List<ZoneDescriptor> calcDescriptorsForMatchingZones(PositionFilteringResult positionFilteringResult) {
         List<ZoneDescriptor> zoneDescriptors = new LinkedList<>();
-        for (String zoneId : filteringResult.getMatchingPositionConditionCellIds()){
+        for (String zoneId : positionFilteringResult.getMatchingPositionConditionCellIds()){
             ZoneDescriptor zoneDescriptor = modelFactory.createZoneDescriptor();
             //LOG.info("OP: zoneId: " + zoneId);
             zoneDescriptor.setZoneId(zoneId);
-            if(isEntryNotification(filteringResult, zoneId)) {
+            if(isEntryNotification(positionFilteringResult, zoneId)) {
                 zoneDescriptor.setNotificationType(PositionMonitoring.ENTRY_NOTIFICATION_TYPE);
             }else {
                 zoneDescriptor.setNotificationType(PositionMonitoring.UNDEFINED_TYPE);
@@ -491,13 +595,13 @@ public class PositionMonitoring {
         return !sdfIsRelevant || (sdfIsRelevant && posEventMeetsSdfAccuracyCondition);
     }
 
-    private static FilteringResult applyEfilterToPosEvent(PositionEvent posEvent, eventFilter eFilter) throws ParseException {
-        FilteringResult filteringResult = eFilter.process(posEvent);
-        boolean posEventMeetsFilterConditions = !filteringResult.hasBlockedEvent();
+    private static PositionFilteringResult applyEfilterToPosEvent(PositionEvent posEvent, eventFilter eFilter) throws ParseException {
+        PositionFilteringResult positionFilteringResult = eFilter.process(posEvent);
+        boolean posEventMeetsFilterConditions = !positionFilteringResult.hasBlockedEvent();
         if(posEventMeetsFilterConditions) {
             LOG.info(eFilter.getMonitoringTaskId() + "-EventFilter accepted the position");
         }
-        return filteringResult;
+        return positionFilteringResult;
         /*
             posEvent = createAndAppendZoneDescriptors(posEvent, filteringResult);
 
@@ -526,12 +630,12 @@ public class PositionMonitoring {
     /**
      *     assumption: An object has been found to be located outside of a zone whose id is zoneId.
      *     This function determines whether it just exited from that zone.
-     * @param filteringResult
+     * @param positionFilteringResult
      * @param zoneId
      * @return
      */
-    private static boolean isExitNotification(FilteringResult filteringResult, String zoneId) {
-        PositionEvent posEvent = filteringResult.getPosEvent();
+    private static boolean isExitNotification(PositionFilteringResult positionFilteringResult, String zoneId) {
+        PositionEvent posEvent = positionFilteringResult.getPosEvent();
         String agentId = DataServices.getAgentForLocalizableObject(posEvent.getLObjectId()).getId();
         if(null == zoneId) return false;
         return isLocatedInsideZone(zoneId, agentId);
@@ -540,12 +644,12 @@ public class PositionMonitoring {
     /**
      * Assumption: zoneId is the id of a zone that the position (contained in filteringResult)
      * is actually located in.
-     * @param filteringResult
+     * @param positionFilteringResult
      * @param zoneId
      * @return
      */
-    private static boolean isEntryNotification(FilteringResult filteringResult, String zoneId) {
-        PositionEvent posEvent = filteringResult.getPosEvent();
+    private static boolean isEntryNotification(PositionFilteringResult positionFilteringResult, String zoneId) {
+        PositionEvent posEvent = positionFilteringResult.getPosEvent();
         String agentId = DataServices.getAgentForLocalizableObject(posEvent.getLObjectId()).getId();
         LOG.info("zoneId: " + zoneId + "; agentId: " + agentId);
         if(null == zoneId) return false;
diff --git a/src/main/java/ipos/project/devkit/iposext/IPosExtension.java b/src/main/java/ipos/project/devkit/iposext/IPosExtension.java
index ee5c496..ed4be34 100644
--- a/src/main/java/ipos/project/devkit/iposext/IPosExtension.java
+++ b/src/main/java/ipos/project/devkit/iposext/IPosExtension.java
@@ -6,8 +6,12 @@ import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosRawdataEv
 import ipos.project.UseCaseController.PositionMonitoring;
 import ipos.project.devkit.utility.ExternalPubServiceImpl;
 import ipos.project.devkit.utility.ProtoJsonMap;
+import org.apache.logging.log4j.LogManager;
+
+import java.util.Objects;
 
 abstract public class IPosExtension {
+    private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger();
 
     public ExternalPubServiceImpl mqttService;
 
@@ -16,8 +20,13 @@ abstract public class IPosExtension {
     }
 
     public void configureIpos(IPosArguments.IPosConfigData iposConfigData) {
-        SimpleScene.IposConfigWrapper configWrapper = prepareConfigWrapper(iposConfigData);
-        sendConfigWrapperToIpos(configWrapper);
+        try{
+            SimpleScene.IposConfigWrapper configWrapper = Objects.requireNonNull(prepareConfigWrapper(iposConfigData), "Warning: An attempt to configure the IPos-IPS has failed");
+            sendConfigWrapperToIpos(configWrapper);
+        } catch(NullPointerException e){
+            LOG.info(e.getMessage());
+            return;
+        }
     }
 
     private void sendConfigWrapperToIpos(SimpleScene.IposConfigWrapper proto_configWrapper) {
diff --git a/src/main/java/ipos/project/devkit/trans/IPos2protoTransformer.java b/src/main/java/ipos/project/devkit/trans/IPos2protoTransformer.java
index f745257..b777367 100644
--- a/src/main/java/ipos/project/devkit/trans/IPos2protoTransformer.java
+++ b/src/main/java/ipos/project/devkit/trans/IPos2protoTransformer.java
@@ -51,6 +51,12 @@ public class IPos2protoTransformer implements IPosTransformer {
         return quaternion;
     }
 
+    public static Placing createPlacing(Position position, Orientation orientation){
+        Placing placing = modelFactory.createPlacing();
+        placing.setPosition(position);
+        placing.setOrientation(orientation);
+        return placing;
+    }
 
     public static class MonReq2ProtoTransformer implements IPosTransformer.MonReqTransformer<SimpleScene.IposMonitoringRequest>{
 
diff --git a/src/main/java/ipos/project/devkit/utility/OtherUtility.java b/src/main/java/ipos/project/devkit/utility/OtherUtility.java
index 02a40fc..cb1171e 100644
--- a/src/main/java/ipos/project/devkit/utility/OtherUtility.java
+++ b/src/main/java/ipos/project/devkit/utility/OtherUtility.java
@@ -3,6 +3,7 @@ package ipos.project.devkit.utility;
 import com.google.protobuf.AbstractMessageLite;
 import com.google.protobuf.MessageOrBuilder;
 import ipos.project.DataModellntegration.SimpleSceneIntegration.SimpleSceneIntegration;
+import ipos.project.MainApp;
 import ipos.project.SensorValueIntegration.GenericSensorValueProcessor;
 import ipos.project.UseCaseController.PositionMonitoring;
 import org.apache.logging.log4j.LogManager;
@@ -14,8 +15,12 @@ import java.io.FileReader;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Scanner;
 
 public class OtherUtility {
+    public static final String KEY_EXTRACTED_ATTRIBUTE_NAME = "name";
+    public static final String KEY_EXTRACTED_ATTRIBUTE_TYPE = "type";
+    public static final String KEY_EXTRACTED_ATTRIBUTE_VALUE = "data";
     private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger();
 
     public static List<String> readLines(File initFile) {
@@ -43,9 +48,26 @@ public class OtherUtility {
 
         // publishes JSON over MQTT
         if (PositionMonitoring.JSON_SERIALIZATION_TYPE.equals(serializationType)){
-            String fakeTopic = "ipos/client/position";
             SimpleSceneIntegration.mqttService.publish(topic, jsonString, 0, false);
             LOG.info("publishing JSON mqttMessage of type " + protoMsg.getClass().getName() + ":" + jsonString + " on topic: " + topic);
         }
     }
+
+    public static void waitUntilUserRequestsReadingNextLine(Scanner scanner) {
+        while (!MainApp.READY_TO_READ_NEXT_LINE){
+            try {
+                Thread.sleep(500);
+                if(scanner.hasNext()) {
+                    String str = scanner.nextLine();
+                    switch(str){
+                        case MainApp.COMMAND_READY_FOR_NEXT_LINE: MainApp.READY_TO_READ_NEXT_LINE = true; break;
+                        default: LOG.info("Waiting for permission to read next line");
+                    }
+                }
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+        }
+        MainApp.READY_TO_READ_NEXT_LINE = false; // make sure that we will also wait before reading the line that comes after the current one
+    }
 }
diff --git a/src/main/java/ipos/project/iposextension/tooz/Tooz.java b/src/main/java/ipos/project/iposextension/tooz/Tooz.java
index 3925d1f..a0bcbd2 100644
--- a/src/main/java/ipos/project/iposextension/tooz/Tooz.java
+++ b/src/main/java/ipos/project/iposextension/tooz/Tooz.java
@@ -1,34 +1,63 @@
 package ipos.project.iposextension.tooz;
 
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosUWBEvent;
+import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.DistantEntity;
 import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.MonitoringTarget;
+import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.ToozFactory;
 import ipos.project.devkit.iposext.IPosArguments;
 import ipos.project.devkit.utility.ExternalPubServiceImpl;
 import ipos.project.devkit.utility.OtherUtility;
+import org.apache.logging.log4j.LogManager;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.io.File;
-import java.util.LinkedList;
+import java.util.*;
 
 @Component
 public class Tooz {
+    private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger();
 
     public static final String TOPIC_TOOZEXT_OUTPUT = "SmartGlassesBackend";
     public static final String SERIALIZATIONTYPE_TOOZEXT_OUTPUT = "json";
+    public static final String TOOZ_MONREQ = "{\"monitoringRequests\": [{\"id\": [\"%s\"], \"properties\": [\"distance\"], \"monitoringTaskId\": \"%s\", \"refSystemId\": \"ROOT\", \"serializationType\": \"json\"}]}";
+    public static final String TOOZ_MONITORINGTASKID = "tooz_distances";
+    // public static final String TOPIC_TOOZ_EXT = "TOOZ_TEST_MONITORING";
+    public static final String TOPIC_TOOZ_ENVIRONMENT = "TOOZ_ENVIRONMENT";
+    public static final String TOPIC_TOOZ_EXT_OUTPUT = "TOOZ_EXT_OUTPUT";
+    public static final String SERIALIZATION_TYPE_JSON = "json";
 
+    private static ToozFactory toozFactory = ToozFactory.eINSTANCE;
+    private Timer timer;
     @Autowired
-    public Tooz(ExternalPubServiceImpl mqttService){
+    public Tooz(ExternalPubServiceImpl mqttService) {
         toozExt.setMqttService(mqttService);
         ToozIPosRawdataMqtt.setMqttService(mqttService);
         ToozExtInputMqtt.setMqttService(mqttService);
         ToozExtOutputMqtt.setMqttService(mqttService);
+        startUpdateTimer();
+    }
+
+//    ich könnte noch machen: gleich die NFC bzw. RFID-Rohdatenübertragung einbauen, dann muss ich mich später nicht erst lange einarbeiten
+
+    private void startUpdateTimer() {
+        timer = new Timer();
+        timer.scheduleAtFixedRate(new TimerTask() {
+            @Override
+            public void run(){
+                updateToozBackend();
+            }
+        }, 0, 3000);
     }
 
     static private ToozExt toozExt = new ToozExt();
 
     public static void handleIPosUWBEvent(IPosUWBEvent iPosUWBEvent_internal) {
-        toozExt.handleRawdataEvent(iPosUWBEvent_internal);
+        try {
+            toozExt.handleRawdataEvent(iPosUWBEvent_internal);
+        } catch (RuntimeException e) {
+            LOG.info(e.getMessage());
+        }
     }
 
     public static void processMonTargetTestdata(String path_to_monTarget_file) {
@@ -39,9 +68,52 @@ public class Tooz {
     }
 
     public static void handleMonitoringTarget(MonitoringTarget monitoringTarget_internal) {
-        LinkedList<MonitoringTarget> monitoringTargets = new LinkedList<>();
-        monitoringTargets.add(monitoringTarget_internal);
-        IPosArguments.IPosConfigData toozConf = new ToozArgs.ToozConf(monitoringTargets);
+        LOG.info("TOOZ: Attempting to configure IPos-IPS for monitoring the location of the sensor with id " + monitoringTarget_internal.getTargetSensorId());
+        IPosArguments.IPosConfigData toozConf = new ToozArgs.ToozConf(monitoringTarget_internal);
         toozExt.configureIpos(toozConf);
+        ToozMonitoringTarget newlyRegisteredTarget = new ToozMonitoringTarget(monitoringTarget_internal.getTargetSensorId());
+        toozExt.getAllCurrentlyMonitoredTargets().add(newlyRegisteredTarget);
+    }
+
+    public static void updateToozBackend() {
+        LOG.info("TOOZ: Updating tooz-backend");
+        List<ToozMonitoringTarget> allCurrentlyMonitoredTargets = toozExt.getAllCurrentlyMonitoredTargets();
+        allCurrentlyMonitoredTargets.stream().forEach(monitoredTarget -> updateToozBackendForTarget(monitoredTarget));
+    }
+
+    private static void updateToozBackendForTarget(ToozMonitoringTarget monitoredTarget) {
+        if (!monitoredTarget.hasChangedSinceLastUpdate()){
+            return;
+        }
+        List<Map.Entry<String, Double>> sortedDistances = extractSortedDistances(monitoredTarget);
+        if (sortedDistances.size() == 0){
+            LOG.info("Could not update Tooz-backend for monitoring Target " + monitoredTarget.getTargetSensorId() + "as no distant entities are known yet.");
+            return;
+        }
+        Map.Entry<String, Double> nearestDistantEntity = sortedDistances.get(0);
+        DistantEntity distantEntity = createDistantEntityFromMonitoredTarget(monitoredTarget, nearestDistantEntity);
+        LOG.info("TOOZ: The closest distant entity of monitoring target " + monitoredTarget.getTargetSensorId() + " has changed. Id of closest entity: " + distantEntity.getDistantEntityId() + "; distance of closest entity: " + distantEntity.getDistance() + "; all known distances for this monitoring target: " + monitoredTarget.getCopyOfDistances().values());
+        ToozExtOutputMqtt.transmitDistantEntity(distantEntity, TOPIC_TOOZ_EXT_OUTPUT, SERIALIZATION_TYPE_JSON);
+        monitoredTarget.setHasChangedSinceLastUpdate(false); // Tooz-backend has been updated and is up-to-date now, so we regard the monitoredTarget as not having changed since last update
+        return;
+    }
+
+    private static DistantEntity createDistantEntityFromMonitoredTarget(ToozMonitoringTarget monitoredTarget, Map.Entry<String, Double> nearestDistantEntity) {
+        DistantEntity distantEntity = toozFactory.createDistantEntity();
+        distantEntity.setLocalSensorId(monitoredTarget.getTargetSensorId());
+        distantEntity.setLocalAgentId(monitoredTarget.getLocalAgentId());
+        distantEntity.setDistantEntityId(nearestDistantEntity.getKey());
+        distantEntity.setDistance(nearestDistantEntity.getValue());
+        distantEntity.setProximityIndex(0);
+        distantEntity.setEntityData(new HashMap<>());
+        distantEntity.setTimeStamp(monitoredTarget.getTimestamp());
+        return distantEntity;
+    }
+
+    private static List<Map.Entry<String, Double>> extractSortedDistances(ToozMonitoringTarget monitoredTarget) {
+        List<Map.Entry<String, Double>> toBeSortedDistancesList = new LinkedList<>();
+        toBeSortedDistancesList.addAll(monitoredTarget.getCopyOfDistances().entrySet());
+        Collections.sort(toBeSortedDistancesList, (e1, e2) -> e1.getValue().compareTo(e2.getValue()));
+        return toBeSortedDistancesList;
     }
 }
diff --git a/src/main/java/ipos/project/iposextension/tooz/ToozArgs.java b/src/main/java/ipos/project/iposextension/tooz/ToozArgs.java
index 6a26278..463ba7c 100644
--- a/src/main/java/ipos/project/iposextension/tooz/ToozArgs.java
+++ b/src/main/java/ipos/project/iposextension/tooz/ToozArgs.java
@@ -3,20 +3,17 @@ package ipos.project.iposextension.tooz;
 import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.MonitoringTarget;
 import ipos.project.devkit.iposext.IPosArguments;
 
-import javax.management.monitor.Monitor;
-import java.util.List;
-
 public class ToozArgs {
 
     public static class ToozConf implements IPosArguments.IPosConfigData {
 
-        List<MonitoringTarget> monitoringTargets;
-        public List<MonitoringTarget> getMonitoringTargets() {
-            return monitoringTargets;
+        MonitoringTarget monitoringTarget;
+        public MonitoringTarget getMonitoringTargets() {
+            return monitoringTarget;
         }
 
-        public ToozConf(List<MonitoringTarget> monitoringTargets) {
-            this.monitoringTargets = monitoringTargets;
+        public ToozConf(MonitoringTarget monitoringTarget) {
+            this.monitoringTarget = monitoringTarget;
         }
 
     }
diff --git a/src/main/java/ipos/project/iposextension/tooz/ToozExt.java b/src/main/java/ipos/project/iposextension/tooz/ToozExt.java
index 7611695..18ab387 100644
--- a/src/main/java/ipos/project/iposextension/tooz/ToozExt.java
+++ b/src/main/java/ipos/project/iposextension/tooz/ToozExt.java
@@ -1,19 +1,30 @@
 package ipos.project.iposextension.tooz;
 
+import com.google.protobuf.InvalidProtocolBufferException;
 import ipos.models.SimpleScene;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosRawdataEvent;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosUWBEvent;
 import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IposPositionEvent;
-import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.DistantEntity;
+import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.MonitoringTarget;
 import ipos.project.devkit.iposext.IPosArguments;
 import ipos.project.devkit.iposext.IPosExtension;
+import ipos.project.devkit.utility.ProtoJsonMap;
+import org.apache.logging.log4j.LogManager;
 
-import static ipos.project.iposextension.tooz.Tooz.TOPIC_TOOZEXT_OUTPUT;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import static ipos.project.iposextension.tooz.Tooz.TOOZ_MONITORINGTASKID;
 
 public class ToozExt extends IPosExtension {
-    public static final String TOPIC_TOOZ_EXT = "TOOZ_TEST_MONITORING";
-    public static final String TOPIC_TOOZ_ENVIRONMENT = "TOOZ_ENVIRONMENT";
-    public static final String TOPIC_TOOZ_EXT_OUTPUT = "TOOZ_EXT_OUTPUT";
+    private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger();
+
+    protected List<ToozMonitoringTarget> getAllCurrentlyMonitoredTargets() {
+        return allCurrentlyMonitoredTargets;
+    }
+
+    private List<ToozMonitoringTarget> allCurrentlyMonitoredTargets = new LinkedList<>();
 
     @Override
     public void handlePositionEvent(IposPositionEvent posEvent) {}
@@ -31,20 +42,36 @@ public class ToozExt extends IPosExtension {
 
     @Override
     public SimpleScene.IposConfigWrapper prepareConfigWrapper(IPosArguments.IPosConfigData iposConfigData) {
-        // ToozArgs.ToozConf toozConf = (ToozArgs.ToozConf) iposConfigData;
-        // toozConf.getMonitoringTargets();
-
+        ToozArgs.ToozConf toozConf = (ToozArgs.ToozConf) iposConfigData;
+        MonitoringTarget monitoringTarget = toozConf.getMonitoringTargets();
+        return createConfigWrapperFromMonitoringTarget(monitoringTarget);
+    }
 
-        // return ProtoJsonMap.fromJson(OFBizOrderPicker.OP_MONITORINGREQUEST, SimpleScene.IposConfigWrapper.class);
-        //     public static final String OP_MONITORINGREQUEST = "{\"monitoringRequests\": [{\"frameIds\": [\"box_1\", \"box_2\", \"box_3\", \"shipmentBin_1\", \"shipmentBin_2\"], \"monitoringTaskId\": \"" + OFBizOrderPicker.TOPIC_POSITION_EVENT + "\", \"serializationType\": \"json\"}]}";
-        return null;
+    private SimpleScene.IposConfigWrapper createConfigWrapperFromMonitoringTarget(MonitoringTarget monitoringTarget) {
+        String monitoringRequest = String.format(Tooz.TOOZ_MONREQ, monitoringTarget.getTargetSensorId(), TOOZ_MONITORINGTASKID);
+        try {
+            return ProtoJsonMap.fromJson(monitoringRequest, SimpleScene.IposConfigWrapper.class);
+        } catch (InvalidProtocolBufferException e) {
+            LOG.info("Warning: IPos-IPS could not be configured properly, as there was a MonitoringTarget that no ConfigWrapper could be created from.");
+            return null;
+        }
     }
 
-    protected static void handleIPosUWBEvent(IPosUWBEvent iPosUWBEvent) {
-        // jetzt die Distanzen richtig sortieren, also UWBEvent in eine map<String, double> (string: beacon-id, double: distance) eintragen und valueSet sortieren und alle beacon-ids mit dem kleinsten rausholen. Alternative: Map sortieren und
-        // siehe https://www.baeldung.com/java-sorting
+    protected void handleIPosUWBEvent(IPosUWBEvent iPosUWBEvent) {
+        LOG.info("TOOZ: Attempting to handle UWB rawdata event");
+        ToozMonitoringTarget toozMonitoringTarget = fetchMonitoringTarget(iPosUWBEvent);
+        toozMonitoringTarget.addOrUpdateDistances(iPosUWBEvent.getDistances());
+        toozMonitoringTarget.setLocalAgentId(iPosUWBEvent.getAgentId());
+        toozMonitoringTarget.setTimestamp(iPosUWBEvent.getTimeStamp()); // the time when the distances to the distant entities have been updated the previous time
+        LOG.info("TOOZ: ToozExt received rawdata event: UWB. Monitoring target (sensorId): " + iPosUWBEvent.getSensorId() + ", agent: " + iPosUWBEvent.getAgentId() + ", timestamp: " + iPosUWBEvent.getTimeStamp());
+    }
 
-        // DistantEntity distantEntity_internal = createDistantEntity(iPosUWBEvent);
-        //ToozExtOutputMqtt.transmitDistantEntity(distantEntity_internal, Tooz.TOPIC_TOOZEXT_OUTPUT, Tooz.SERIALIZATIONTYPE_TOOZEXT_OUTPUT);
+    private ToozMonitoringTarget fetchMonitoringTarget(IPosUWBEvent iPosUWBEvent) {
+        String targetSensorId = iPosUWBEvent.getSensorId();
+        ToozMonitoringTarget monitoringTarget = allCurrentlyMonitoredTargets.stream().filter(
+                monTarget -> monTarget.getTargetSensorId().equals(targetSensorId))
+                .findFirst().
+                orElseThrow(() -> new RuntimeException("Warning: ToozExt received rawdata from a position sensor that no MonitoringTarget was defined for"));
+        return monitoringTarget;
     }
 }
diff --git a/src/main/java/ipos/project/iposextension/tooz/ToozExtInputMqtt.java b/src/main/java/ipos/project/iposextension/tooz/ToozExtInputMqtt.java
index 8e50252..f852b72 100644
--- a/src/main/java/ipos/project/iposextension/tooz/ToozExtInputMqtt.java
+++ b/src/main/java/ipos/project/iposextension/tooz/ToozExtInputMqtt.java
@@ -1,19 +1,15 @@
 package ipos.project.iposextension.tooz;
 
 import com.google.protobuf.InvalidProtocolBufferException;
-import ipos.models.GenericSensor;
-import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosUWBEvent;
-import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.DistantEntity;
 import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.MonitoringTarget;
 import ipos.project.config.mqtt.Handler;
 import ipos.project.config.mqtt.MqttListener;
 import ipos.project.devkit.utility.ExternalPubServiceImpl;
-import ipos.project.devkit.utility.OtherUtility;
 import ipos.project.devkit.utility.ProtoJsonMap;
 import org.apache.logging.log4j.LogManager;
 import org.eclipse.paho.client.mqttv3.MqttMessage;
 
-@MqttListener(ToozExt.TOPIC_TOOZ_ENVIRONMENT)
+@MqttListener(Tooz.TOPIC_TOOZ_ENVIRONMENT)
 public class ToozExtInputMqtt implements Handler {
 
     private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger();
@@ -29,6 +25,7 @@ public class ToozExtInputMqtt implements Handler {
     }
 
     public static void handleToozExtInput(String jsonMsg) {
+        LOG.info("TOOZ: Handling ToozExtInput: " + jsonMsg);
         ipos.models.Tooz.IPosToozExtInputWrapper toozInputWrapper = null;
         try {
             toozInputWrapper = ProtoJsonMap.fromJson(jsonMsg, ipos.models.Tooz.IPosToozExtInputWrapper.class);
diff --git a/src/main/java/ipos/project/iposextension/tooz/ToozExtOutputMqtt.java b/src/main/java/ipos/project/iposextension/tooz/ToozExtOutputMqtt.java
index d5fdd9f..42dbe7a 100644
--- a/src/main/java/ipos/project/iposextension/tooz/ToozExtOutputMqtt.java
+++ b/src/main/java/ipos/project/iposextension/tooz/ToozExtOutputMqtt.java
@@ -1,19 +1,14 @@
 package ipos.project.iposextension.tooz;
 
-import com.google.protobuf.InvalidProtocolBufferException;
-import ipos.models.GenericSensor;
-import ipos.project.DataModellntegration.iPos_Datamodel.IPosDevKit.IPosUWBEvent;
 import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.DistantEntity;
-import ipos.project.DataModellntegration.iPos_Datamodel.Tooz.MonitoringTarget;
 import ipos.project.config.mqtt.Handler;
 import ipos.project.config.mqtt.MqttListener;
 import ipos.project.devkit.utility.ExternalPubServiceImpl;
 import ipos.project.devkit.utility.OtherUtility;
-import ipos.project.devkit.utility.ProtoJsonMap;
 import org.apache.logging.log4j.LogManager;
 import org.eclipse.paho.client.mqttv3.MqttMessage;
 
-@MqttListener(ToozExt.TOPIC_TOOZ_EXT_OUTPUT)
+@MqttListener(Tooz.TOPIC_TOOZ_EXT_OUTPUT)
 public class ToozExtOutputMqtt implements Handler {
 
     private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger();
diff --git a/src/main/java/ipos/project/iposextension/tooz/ToozIPosRawdataMqtt.java b/src/main/java/ipos/project/iposextension/tooz/ToozIPosRawdataMqtt.java
index d05ddea..d840150 100644
--- a/src/main/java/ipos/project/iposextension/tooz/ToozIPosRawdataMqtt.java
+++ b/src/main/java/ipos/project/iposextension/tooz/ToozIPosRawdataMqtt.java
@@ -10,7 +10,7 @@ import ipos.project.devkit.utility.ProtoJsonMap;
 import org.apache.logging.log4j.LogManager;
 import org.eclipse.paho.client.mqttv3.MqttMessage;
 
-@MqttListener(ToozExt.TOPIC_TOOZ_EXT)
+@MqttListener(Tooz.TOOZ_MONITORINGTASKID)
 public class ToozIPosRawdataMqtt implements Handler {
 
     private static org.apache.logging.log4j.Logger LOG = LogManager.getLogger();
@@ -27,6 +27,7 @@ public class ToozIPosRawdataMqtt implements Handler {
     // die Wrapper-Nachrichten überhaupt empfangen werden sollen
     @Override
     public void handle(MqttMessage message) {
+        LOG.info("TOOZ: ToozIPosRawdataMqtt received message: " + message.toString());
         handleIPosRawdataWrapper(message.toString());
     }
 
@@ -42,6 +43,7 @@ public class ToozIPosRawdataMqtt implements Handler {
 
     private void handleIPosUWBEvent(GenericSensor.IPosUWBEvent iPosUWBEvent_proto) {
         IPosUWBEvent iPosUWBEvent_internal = ToozTrans.uwb_proto2IPosRawdata(iPosUWBEvent_proto);
+        LOG.info("TOOZ: UWBEvent was transformed into internal data format: " + iPosUWBEvent_internal.toString());
         Tooz.handleIPosUWBEvent(iPosUWBEvent_internal);
     }
 
diff --git a/src/main/java/ipos/project/iposextension/tooz/ToozMonitoringTarget.java b/src/main/java/ipos/project/iposextension/tooz/ToozMonitoringTarget.java
new file mode 100644
index 0000000..b2c3b6f
--- /dev/null
+++ b/src/main/java/ipos/project/iposextension/tooz/ToozMonitoringTarget.java
@@ -0,0 +1,89 @@
+package ipos.project.iposextension.tooz;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class ToozMonitoringTarget {
+
+    public ToozMonitoringTarget(String targetSensorId) {
+        this.targetSensorId = targetSensorId;
+        this.targetData = new HashMap<>();
+        this.localAgentId = "";
+        this.timestamp = "";
+        this.hasChanged = false;
+    }
+
+    private Map<String, Double> distances = new HashMap<>();
+
+    public String getTimestamp() {
+        return timestamp;
+    }
+
+    public void setTimestamp(String timestamp) {
+        this.timestamp = timestamp;
+    }
+
+    private String timestamp; // the time when the distances to the distant entities have been updated the previous time
+
+    /**
+     * Returns true if this instance of ToozMonitoringTarget has to be regarded as having changed since the last
+     * update of the Tooz-backend, and false otherwise.
+     * @return
+     */
+    public boolean hasChangedSinceLastUpdate() {
+        return hasChanged;
+    }
+
+    /**
+     * Sets the boolean value that defines whether this instance of ToozMonitoringTarget has to be
+     * regarde as having changed since last update of the Tooz-backend
+     * @param hasChanged
+     */
+    public void setHasChangedSinceLastUpdate(boolean hasChanged) {
+        this.hasChanged = hasChanged;
+    }
+
+    private boolean hasChanged;
+
+    private String localAgentId;
+    Map<String, String> targetData;
+
+    protected Map<String, Double> getCopyOfDistances() {
+        HashMap<String, Double> copyOfDistances = new HashMap<>();
+        copyOfDistances.putAll(distances);
+        return copyOfDistances;
+    }
+
+     protected void addDistance(String sensorId, Double distance){
+        distances.put(sensorId, distance);
+    }
+
+    public String getTargetSensorId() {
+        return targetSensorId;
+    }
+
+    private String targetSensorId;
+
+    public void addOrUpdateDistances(Map<String, Double> map){
+        map.entrySet().forEach(entry -> distances.put(entry.getKey(), entry.getValue())); // put-function creates new entry, or updates existing one
+        this.hasChanged = true;
+    }
+
+    public String getLocalAgentId() {
+        return localAgentId;
+    }
+
+    public void setLocalAgentId(String localAgentId) {
+        this.localAgentId = localAgentId;
+    }
+
+
+    public Map<String, String> getTargetData() {
+        return targetData;
+    }
+
+    public void setTargetData(Map<String, String> targetData) {
+        this.targetData = targetData;
+    }
+
+}
diff --git a/testdata_raw_tooz.txt b/testdata_raw_tooz.txt
index 96672a1..02cae32 100644
--- a/testdata_raw_tooz.txt
+++ b/testdata_raw_tooz.txt
@@ -1,4 +1,3 @@
 {"uwbRawDataEvent" : [ {"timestamp" : "2022-02-02T16:03:20+00:00", "sensorId" : "tooz_employee_uwb",  "distances": {"beacon_1" : "2.5", "beacon_2" : "5.5", "beacon_3" : "8.5"}, "type": "UWB"}]}
-{"uwbRawDataEvent" : [ {"timestamp" : "2022-02-02T16:04:20+00:00", "sensorId" : "tooz_employee_uwb", "distances": {"beacon_4" : "2.8"}, "type": "UWB"}]}
-{"uwbRawDataEvent" : [ {"timestamp" : "2022-02-02T16:05:20+00:00", "sensorId" : "tooz_employee_uwb", "distances": {"beacon_5" : "5.8"}, "type": "UWB"}]}
-{"uwbRawDataEvent" : [ {"timestamp" : "2022-02-02T16:06:20+00:00", "sensorId" : "tooz_employee_uwb", "distances": {"beacon_6" : "8.8"}, "type": "UWB"}]}
\ No newline at end of file
+{"uwbRawDataEvent" : [ {"timestamp" : "2022-02-02T16:04:20+00:00", "sensorId" : "tooz_employee_uwb", "distances": {"beacon_1" : "15.0"}, "type": "UWB"}]}
+{"uwbRawDataEvent" : [ {"timestamp" : "2022-02-02T16:05:20+00:00", "sensorId" : "tooz_employee_uwb", "distances": {"beacon_5" : "1.8"}, "type": "UWB"}]}
\ No newline at end of file
diff --git a/testdata_raw_tooz_init.txt b/testdata_raw_tooz_init.txt
index 9481385..0ae4ad5 100644
--- a/testdata_raw_tooz_init.txt
+++ b/testdata_raw_tooz_init.txt
@@ -1 +1 @@
-{"monitoringTarget" : [{"targetSensorId" : "tooz_employee_uwb" }]}
\ No newline at end of file
+{"monitoringTargets" : [{"targetSensorId" : "tooz_employee_uwb" }]}
\ No newline at end of file
diff --git a/testdata_raw_vda5050.txt b/testdata_raw_vda5050.txt
new file mode 100644
index 0000000..94df7e6
--- /dev/null
+++ b/testdata_raw_vda5050.txt
@@ -0,0 +1,3 @@
+{"timeStamp" : "2021-10-14T20:35:33+00:00", "manufacturer" : "TL_TUD", "serialNumber" : "Virtual_AGV"}
+{"timeStamp" : "2021-10-14T20:35:33+00:00", "manufacturer" : "TL_TUD", "serialNumber" : "Virtual_AGV", "lastNodeId" : "31762128", "batteryState" : {"batteryCharge" : 88.0}, "errors" : [{"errorType" : "83", "errorLevel" : "WARNING"}, {"errorType" : "16", "errorLevel" : "FATAL"}], "loads" : [{"loadId" : "47"}, {"loadId" : "23"}]}
+{"timeStamp" : "2021-10-14T19:32:20+00:00", "manufacturer" : "TL_TUD", "serialNumber" : "Virtual_AGV", "lastNodeId" : "31762128", "batteryState" : {"batteryCharge" : 86.0}, "errors" : [{"errorType" : "83", "errorLevel" : "WARNING"}, {"errorType" : "16", "errorLevel" : "FATAL"}], "agvPosition" : {"x" : 4.3, "y" : 2.5, "theta" : 1.0}, "loads" : [{"loadId" : "47"}, {"loadId" : "23"}]}
\ No newline at end of file
-- 
GitLab