diff --git a/rosidl2capella/__main__.py b/rosidl2capella/__main__.py
index 9202995..20331d1 100644
--- a/rosidl2capella/__main__.py
+++ b/rosidl2capella/__main__.py
@@ -4,7 +4,9 @@
 import click
 
 import rosidl2capella
-from rosidl2capella.msg2capella import msg2capella
+from rosidl2capella.capella2msg import capella2msg
+
+# from rosidl2capella.msg2capella import msg2capella
 
 
 @click.command()
@@ -18,4 +20,5 @@ def main():
 
 
 if __name__ == "__main__":
-    msg2capella()
+    # msg2capella()
+    capella2msg()
diff --git a/rosidl2capella/capella2msg.py b/rosidl2capella/capella2msg.py
new file mode 100644
index 0000000..57b0547
--- /dev/null
+++ b/rosidl2capella/capella2msg.py
@@ -0,0 +1,113 @@
+# Copyright DB Netz AG and contributors
+# SPDX-License-Identifier: Apache-2.0
+"""CLI for importing .msg to capella model."""
+import sys
+from pathlib import Path
+
+import click
+
+import rosidl2capella
+from rosidl2capella.modules import BASIC_TYPES, ROS_INTERFACES
+from rosidl2capella.modules.parse_capella import ParseCapella
+from rosidl2capella.modules.serialize_message import (
+    SerializeMessageDef,
+    SerializeMessagesPkg,
+)
+
+
+class Capella2Msg:
+    """Class for converting capella model to .msg files."""
+
+    def __init__(self, path_to_capella_model, layer, overlap) -> None:
+        self.parser = ParseCapella(path_to_capella_model, layer)
+        self.overlap = overlap
+
+    def add_package(self, current_root):
+        """Add package to message package."""
+        out = SerializeMessagesPkg({}, {})
+
+        messages = self.parser.get_classes(current_root)
+        types = self.parser.get_types(current_root)
+
+        out.messages = {
+            msg_name: SerializeMessageDef(msg_name, desc, props)
+            for msg_name, (desc, props) in (messages | types).items()
+        }
+        out.packages = {
+            pkg_name: self.add_package(current_root.packages.by_name(pkg_name))
+            for pkg_name in self.parser.get_packages(current_root)
+        }
+        return out
+
+
+@click.command()
+@click.version_option(
+    version=rosidl2capella.__version__,
+    prog_name="rosidl2capella",
+    message="%(prog)s %(version)s",
+)
+@click.argument(
+    "path-to-msgs-root",
+    type=click.Path(
+        file_okay=False,
+        readable=True,
+        resolve_path=True,
+        path_type=Path,
+    ),
+    required=True,
+)
+@click.argument(
+    "path-to-capella-model",
+    type=click.Path(
+        exists=True,
+        readable=True,
+        resolve_path=True,
+        path_type=str,
+    ),
+    required=True,
+)
+@click.argument(
+    "layer",
+    type=click.Choice(["oa", "sa", "la", "pa"], case_sensitive=False),
+    required=True,
+)
+@click.option(
+    "-o",
+    "--overlap",
+    type=click.Choice(
+        ["keep", "overwrite", "ask", "abort"], case_sensitive=False
+    ),
+    default="ask" if sys.stdin.isatty() else "abort",
+)
+@click.option("--debug", is_flag=True)
+def capella2msg(
+    path_to_msgs_root, path_to_capella_model, layer, overlap, debug
+):
+    """Convert capella model to .msg files."""
+    converter = Capella2Msg(path_to_capella_model, layer, overlap)
+    current_root = converter.parser.data
+
+    messages = converter.parser.get_classes(current_root)
+    types = converter.parser.get_types(current_root)
+
+    packages = converter.parser.get_packages(current_root)
+    packages.discard(BASIC_TYPES)
+    packages.discard(ROS_INTERFACES)
+
+    root = SerializeMessagesPkg({}, {})
+    root.messages = {
+        msg_name: SerializeMessageDef(msg_name, desc, props)
+        for msg_name, (desc, props) in (messages | types).items()
+    }
+
+    root.packages = {
+        pkg_name: converter.add_package(
+            current_root.packages.by_name(pkg_name)
+        )
+        for pkg_name in packages
+    }
+
+    if debug:
+        click.echo(root)
+    else:
+        root.to_msg_folder(path_to_msgs_root)
diff --git a/rosidl2capella/modules/parse_capella.py b/rosidl2capella/modules/parse_capella.py
index aab1ee4..54351c8 100644
--- a/rosidl2capella/modules/parse_capella.py
+++ b/rosidl2capella/modules/parse_capella.py
@@ -3,7 +3,7 @@
 """Class definition for Capella model parser."""
 import typing as t
 
-from . import BaseCapella, EnumValue, MsgProp
+from . import ROS_INTERFACES, BaseCapella, EnumValue, MsgProp
 
 
 class ParseCapella(BaseCapella):
@@ -20,8 +20,12 @@ def get_classes(self, package: t.Any) -> dict[str, t.Any]:
             props = [
                 MsgProp(
                     prop.name,
-                    prop.type.name,
-                    "",
+                    prop.type.name
+                    if prop.type.__class__.__name__ != "Enumeration"
+                    else "uint8",
+                    prop.type.parent.name
+                    if prop.type.parent.parent.name == ROS_INTERFACES
+                    else "",
                     prop.min_card.value,
                     prop.max_card.value,
                     prop.description,
@@ -38,7 +42,7 @@ def get_types(self, package: t.Any) -> dict[str, t.Any]:
             props = [
                 EnumValue(
                     prop.name,
-                    prop.type.name,
+                    prop.value.type.name if prop.value.type else "uint8",
                     prop.value.value,
                     prop.description,
                 )
diff --git a/rosidl2capella/modules/parse_message.py b/rosidl2capella/modules/parse_message.py
index 5de0778..d4c6b26 100644
--- a/rosidl2capella/modules/parse_message.py
+++ b/rosidl2capella/modules/parse_message.py
@@ -7,13 +7,9 @@
 
 from . import EnumValue, MessageDef, MessagesPkg, MsgProp
 
-RE_TNC = re.compile(
-    r"^([A-Za-z0-9\[\]\/_]+).*?([A-Za-z0-9_]+)(?:.*?# ([^\n]+))?"
-)
-RE_ENUM = re.compile(
-    r"^([A-Za-z0-9]+).*?([A-Za-z0-9_]+).*?= ([0-9]+)(?:.*?# ([^\n]+))?"
-)
-RE_COMMENT = re.compile(r"cf. ([a-zA-Z0-9_]+)(?:, ([a-zA-Z0-9_]+))?")
+RE_TNC = re.compile(r"^([A-Za-z0-9\[\]\/_]+)\s+(\w+)(?:\s+#\s*(.+))?$")
+RE_ENUM = re.compile(r"^(\w+)\s+(\w+)\s*=\s*(\d+)\s*(?:#\s*(.+))?$")
+RE_COMMENT = re.compile(r"cf.\s+(\w+)(?:,\s+(\w+))?")
 
 
 class ParseMessageDef(MessageDef):
diff --git a/rosidl2capella/modules/serialize_capella.py b/rosidl2capella/modules/serialize_capella.py
index e8619e3..c6d430f 100644
--- a/rosidl2capella/modules/serialize_capella.py
+++ b/rosidl2capella/modules/serialize_capella.py
@@ -11,6 +11,11 @@
 class SerializeCapella(BaseCapella):
     """Serializer for Capella model."""
 
+    def __init__(self, path_to_capella_model: str, layer: str) -> None:
+        super().__init__(path_to_capella_model, layer)
+        self.create_packages({BASIC_TYPES}, self.data)
+        self.basic_types = self.data.packages.by_name(BASIC_TYPES)
+
     def create_packages(self, packages: set[str], package: t.Any) -> None:
         """Create packages in Capella model."""
         for package_name in packages:
@@ -61,10 +66,13 @@ def create_types(
                     property = type.owned_literals.create(
                         "EnumerationLiteral",
                         name=prop.name,
-                        description=description,
+                        description=prop.comment,
                     )
+                    self.create_basic_types({prop.type})
                     property.value = capellambse.new_object(
-                        "LiteralNumericValue", value=float(prop.value)
+                        "LiteralNumericValue",
+                        value=float(prop.value),
+                        type=self.basic_types.datatypes.by_name(prop.type),
                     )
         return overlap
 
@@ -76,14 +84,12 @@ def delete_types(self, types: list, package: t.Any) -> None:
             except KeyError:
                 pass
 
-    def create_basic_types(
-        self, basic_types: set[str], package: t.Any
-    ) -> list:
+    def create_basic_types(self, basic_types: set[str]) -> list:
         """Create basic types in Capella model."""
         overlap = []
         for basic_type in basic_types:
             try:
-                overlap.append(package.datatypes.by_name(basic_type))
+                overlap.append(self.basic_types.datatypes.by_name(basic_type))
             except KeyError:
                 if basic_type in ["string", "char"]:
                     type = "StringType"
@@ -91,7 +97,7 @@ def create_basic_types(
                     type = "BooleanType"
                 else:
                     type = "NumericType"
-                package.datatypes.create(type, name=basic_type)
+                self.basic_types.datatypes.create(type, name=basic_type)
         return overlap
 
     def create_composition(
@@ -154,9 +160,7 @@ def _find_type(self, type_name: str, package: t.Any) -> t.Any:
         except KeyError:
             pass
         try:
-            return self.data.packages.by_name(BASIC_TYPES).datatypes.by_name(
-                type_name
-            )
+            return self.basic_types.datatypes.by_name(type_name)
         except KeyError:
             return None
 
diff --git a/rosidl2capella/modules/serialize_message.py b/rosidl2capella/modules/serialize_message.py
new file mode 100644
index 0000000..177106e
--- /dev/null
+++ b/rosidl2capella/modules/serialize_message.py
@@ -0,0 +1,51 @@
+# Copyright DB Netz AG and contributors
+# SPDX-License-Identifier: Apache-2.0
+"""Serializer for ROS messages."""
+
+from pathlib import Path
+
+from . import MessageDef, MessagesPkg
+
+
+class SerializeMessageDef(MessageDef):
+    """Serializer for message files."""
+
+    def to_msg_file(self, file: Path) -> None:
+        """Write message definition to message file."""
+        description = "# " + self.description.replace("\n", "\n# ") + "\n"
+        props = "\n".join(
+            f"{p.typedir+'/' if p.typedir else ''}{p.type}"
+            f"{'[]' if p.min != p.max else ''} {p.name}\t"
+            f"{'# ' if p.comment else ''}{p.comment}"
+            for p in self.props
+        )
+        file.write_text(description + "\n" + props)
+
+    def to_type_file(self, file: Path) -> None:
+        """Write message definition to message file."""
+        description = "# " + self.description.replace("\n", "\n# ") + "\n"
+        props = "\n".join(
+            f"{p.type} {file.stem + '_' + p.name}\t= {p.value}\t"
+            f"{'# ' if p.comment else ''}{p.comment}"
+            for p in self.props
+        )
+        file.write_text(description + "\n" + props)
+
+
+class SerializeMessagesPkg(MessagesPkg):
+    """Serializer for message packages."""
+
+    def to_msg_folder(self, path_to_pkg_root: Path) -> None:
+        """Write message package to message package."""
+        path_to_pkg_root.mkdir(parents=True, exist_ok=True)
+        for msg_name, msg in self.messages.items():
+            msg_file = path_to_pkg_root.joinpath(msg_name + ".msg")
+            if path_to_pkg_root.name == "types":
+                msg.to_type_file(msg_file)
+            else:
+                msg.to_msg_file(msg_file)
+
+        for pkg_name, pkg in self.packages.items():
+            new_path = path_to_pkg_root.joinpath(pkg_name)
+            new_path.mkdir(parents=True, exist_ok=True)
+            pkg.to_msg_folder(new_path)
diff --git a/rosidl2capella/msg2capella.py b/rosidl2capella/msg2capella.py
index f1932d2..a0937f0 100644
--- a/rosidl2capella/msg2capella.py
+++ b/rosidl2capella/msg2capella.py
@@ -7,7 +7,7 @@
 import click
 
 import rosidl2capella
-from rosidl2capella.modules import BASIC_TYPES, ROS_INTERFACES
+from rosidl2capella.modules import ROS_INTERFACES
 from rosidl2capella.modules.parse_message import ParseMessagesPkg
 from rosidl2capella.modules.serialize_capella import SerializeCapella
 
@@ -32,7 +32,10 @@ def add_objects(self, messages, packages, current_root):
             )
         )
 
-        overlap = func[0](messages, current_root)
+        overlap = func[0](
+            {msg_name: msg.as_struct for msg_name, msg in messages.items()},
+            current_root,
+        )
 
         if overlap and self.overlap == "abort":
             click.echo(
@@ -47,32 +50,29 @@ def add_objects(self, messages, packages, current_root):
                 )
             ):
                 func[1]([cls], current_root)
-                func[0]({cls.name: messages[cls.name]}, current_root)
+                func[0]({cls.name: messages[cls.name].as_struct}, current_root)
 
-        for pkg_name, (new_messages, new_packages) in packages.items():
-            new_root = self.serializer.data.packages.by_name(pkg_name)
-            self.add_objects(new_messages, new_packages, new_root)
+        for pkg_name, pkg in packages.items():
+            new_root = current_root.packages.by_name(pkg_name)
+            self.add_objects(pkg.messages, pkg.packages, new_root)
 
     def add_relations(self, messages, packages, current_root):
         """Add relations to capella model."""
         if current_root.name == "types":
             return
-        for class_name, (_, props) in messages.items():
-            for prop in props:
+        for class_name, cls in messages.items():
+            for prop in cls.props:
                 if not self.serializer.create_composition(
                     class_name, prop, current_root
                 ):
                     while not self.serializer.create_attribute(
                         class_name, prop, current_root
                     ):
-                        self.serializer.create_basic_types(
-                            {prop.type},
-                            self.serializer.data.packages.by_name(BASIC_TYPES),
-                        )
+                        self.serializer.create_basic_types({prop.type})
 
-        for pkg_name, (new_messages, new_packages) in packages.items():
-            new_root = self.serializer.data.packages.by_name(pkg_name)
-            self.add_relations(new_messages, new_packages, new_root)
+        for pkg_name, pkg in packages.items():
+            new_root = current_root.packages.by_name(pkg_name)
+            self.add_relations(pkg.messages, pkg.packages, new_root)
 
 
 @click.command()
@@ -96,7 +96,6 @@ def add_relations(self, messages, packages, current_root):
     "path-to-capella-model",
     type=click.Path(
         exists=True,
-        file_okay=False,
         readable=True,
         resolve_path=True,
         path_type=str,
@@ -125,18 +124,16 @@ def msg2capella(
 
     ros_interfaces = ParseMessagesPkg.from_pkg_folders(
         Path(__file__).joinpath("ros_interfaces")
-    ).as_structs
+    )
 
-    messages, packages = ParseMessagesPkg.from_msg_folder(
-        path_to_msgs_root
-    ).as_structs
-    packages |= {ROS_INTERFACES: ros_interfaces} | {BASIC_TYPES: ({}, {})}
+    msg = ParseMessagesPkg.from_msg_folder(path_to_msgs_root)
+    msg.packages |= {ROS_INTERFACES: ros_interfaces}
 
     current_root = converter.serializer.data
 
-    converter.add_objects(messages, packages, current_root)
+    converter.add_objects(msg.messages, msg.packages, current_root)
 
-    converter.add_relations(messages, packages, current_root)
+    converter.add_relations(msg.messages, msg.packages, current_root)
 
     if debug:
         click.echo(converter.serializer.data)
diff --git a/tests/data/model/ros_msgs.capella b/tests/data/model/ros_msgs.capella
index 2967327..db4693b 100644
--- a/tests/data/model/ros_msgs.capella
+++ b/tests/data/model/ros_msgs.capella
@@ -202,111 +202,128 @@
           id="bd10fade-2ac9-41bf-a42b-05cbb751d274" name="Interfaces"/>
       <ownedDataPkg xsi:type="org.polarsys.capella.core.data.information:DataPkg"
           id="4ada90cb-13d8-4140-b92f-d8206a56bdae" name="Data">
-        <ownedAssociations id="e59e1d70-33d3-4c39-afc1-0b5e783d2412" navigableMembers="#922be465-af53-42b6-a084-220c5195a449"
+        <ownedAssociations id="c3854a66-ff63-4ea5-a3ee-e254187396a2" navigableMembers=""
             xsi:type="org.polarsys.capella.core.data.information:Association">
-          <ownedMembers id="8c7bb91b-6854-4efd-8f29-41aabafc7a2c" abstractType="#74cad8af-42d6-4018-8cb8-48faa5bd3508"
+          <ownedMembers id="3e9aaa18-fb22-437a-987f-ed2bfaf56490" aggregationKind="ASSOCIATION"
+              xsi:type="org.polarsys.capella.core.data.information:Property">
+            <ownedMinCard id="ba5ff7f6-8313-4623-9408-168d86093076" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            <ownedMaxCard id="e2576427-42db-4c41-8f1c-fdf33d4ccf18" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+          </ownedMembers>
+        </ownedAssociations>
+        <ownedAssociations id="5f59bd8a-1fed-4c38-990d-fc3d1180bc1d" navigableMembers=""
+            xsi:type="org.polarsys.capella.core.data.information:Association">
+          <ownedMembers id="1e411ff7-d07a-40e3-a2a4-505d45b7c82c" aggregationKind="ASSOCIATION"
+              xsi:type="org.polarsys.capella.core.data.information:Property">
+            <ownedMinCard id="94a0959f-8807-4720-a76c-78ae076bf23c" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            <ownedMaxCard id="b7da75d5-fa71-4340-ba82-67a602dfba5b" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+          </ownedMembers>
+        </ownedAssociations>
+        <ownedAssociations id="6ca93ccb-bd99-42a0-b383-467627adf666" navigableMembers="#25306537-c3f9-453a-9f3a-3e826567ca8d"
+            xsi:type="org.polarsys.capella.core.data.information:Association">
+          <ownedMembers id="d7c1f6a7-ddd6-4c0d-8485-ab8c35f25d22" abstractType="#45464dbe-7366-404c-b898-99d85f312a52"
               aggregationKind="ASSOCIATION" xsi:type="org.polarsys.capella.core.data.information:Property">
-            <ownedMinCard id="1f12d3b9-2308-42ba-a5b1-58b0215b8789" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
-            <ownedMaxCard id="678c3377-ac0f-405c-800a-4e9a81536a1d" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            <ownedMinCard id="15d3767e-bf62-4b44-838d-d7c5b26b8500" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            <ownedMaxCard id="8f728903-989a-493e-aa52-152952ee2785" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
           </ownedMembers>
         </ownedAssociations>
-        <ownedAssociations id="4c637540-0efc-4e2d-bb66-1d73d51418b6" navigableMembers="#9be17831-3fef-41b0-9e60-f7f7c9785d24"
+        <ownedAssociations id="c7a443d1-01ee-40c7-ac81-32556c5c9b02" navigableMembers="#69dbdb75-c1cb-49c8-a87f-d69e25a9edb2"
             xsi:type="org.polarsys.capella.core.data.information:Association">
-          <ownedMembers id="c15e9e0d-f31a-4577-a1c4-88ff1baf96a8" abstractType="#50c62fcc-c176-4d58-855d-2a6dbae2ef47"
+          <ownedMembers id="ffe6d110-e857-4b47-8266-d89574aa4564" abstractType="#21a3fbe8-ae95-4c53-8bf5-699a69a43e2c"
               aggregationKind="ASSOCIATION" xsi:type="org.polarsys.capella.core.data.information:Property">
-            <ownedMinCard id="d3dd7861-22c8-4b9d-a965-31228434f383" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
-            <ownedMaxCard id="36fab63e-2b0a-4b64-ba9b-842eba2599ed" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            <ownedMinCard id="4b4bb30a-ffc9-4b98-b07d-9d1a46127d30" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            <ownedMaxCard id="cf6a7962-8681-4b23-bae5-1b798fbaa756" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
           </ownedMembers>
         </ownedAssociations>
-        <ownedClasses id="74cad8af-42d6-4018-8cb8-48faa5bd3508" name="UInt64MultiArray"
+        <ownedClasses id="45464dbe-7366-404c-b898-99d85f312a52" name="UInt64MultiArray"
             description="Copyright DB Netz AG and contributors&#xA;SPDX-License-Identifier: Apache-2.0"
             xsi:type="org.polarsys.capella.core.data.information:Class">
-          <ownedFeatures id="922be465-af53-42b6-a084-220c5195a449" name="layout" abstractType="#50c62fcc-c176-4d58-855d-2a6dbae2ef47"
+          <ownedFeatures id="25306537-c3f9-453a-9f3a-3e826567ca8d" name="layout" abstractType="#21a3fbe8-ae95-4c53-8bf5-699a69a43e2c"
               aggregationKind="COMPOSITION" description="specification of data layout"
               xsi:type="org.polarsys.capella.core.data.information:Property">
-            <ownedMinCard id="73edaf06-abae-4fbe-81fc-96779981060c" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
-            <ownedMaxCard id="77ec61a4-e2be-4310-94f4-4967a0dad114" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            <ownedMinCard id="926b3781-98f6-40af-91de-c11c37612147" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            <ownedMaxCard id="db2bdbe9-eb14-4b55-8040-1a5124b39bfb" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
           </ownedFeatures>
-          <ownedFeatures id="7b05385f-dc24-4926-b19c-679e528bcb89" name="data" abstractType="#80c47907-accf-481e-a5e9-c0b8f66fe463"
+          <ownedFeatures id="6c9dc8f6-75b6-4a42-a500-6d65d0ee4b8c" name="data" abstractType="#458c3c69-6e88-42f0-a852-52eb56cf2382"
               aggregationKind="COMPOSITION" description="array of data" xsi:type="org.polarsys.capella.core.data.information:Property">
-            <ownedMinCard id="2cb52f5d-8df8-403d-9b4a-d35108a02c62" value="0" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
-            <ownedMaxCard id="d54e2fd0-8c56-4646-b414-570c2cd2ada1" value="*" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            <ownedMinCard id="9436a8ba-2133-4b0a-aa21-0195eb71a1a2" value="0" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            <ownedMaxCard id="8d4d10a9-6ca3-42a3-b212-fd9562f6d3ce" value="*" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
           </ownedFeatures>
         </ownedClasses>
-        <ownedClasses id="50c62fcc-c176-4d58-855d-2a6dbae2ef47" name="MultiArrayLayout"
+        <ownedClasses id="21a3fbe8-ae95-4c53-8bf5-699a69a43e2c" name="MultiArrayLayout"
             description="Copyright DB Netz AG and contributors&#xA;SPDX-License-Identifier: Apache-2.0"
             xsi:type="org.polarsys.capella.core.data.information:Class">
-          <ownedFeatures id="9be17831-3fef-41b0-9e60-f7f7c9785d24" name="dim" abstractType="#bad23d52-7a7b-4356-8e14-98297b196f16"
+          <ownedFeatures id="69dbdb75-c1cb-49c8-a87f-d69e25a9edb2" name="dim" abstractType="#ef3b07c4-ae0d-4f42-b5d8-dcecca089479"
               aggregationKind="COMPOSITION" description="Array of dimension properties"
               xsi:type="org.polarsys.capella.core.data.information:Property">
-            <ownedMinCard id="1dee0821-b398-4983-b1a7-3ecc30af3fb2" value="0" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
-            <ownedMaxCard id="1e2aa8ed-c645-41a4-8bcc-c3d6c7c38c6c" value="*" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            <ownedMinCard id="ba86dfac-38c8-40a4-ba3d-970c52f84659" value="0" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            <ownedMaxCard id="7c19ba5f-b72f-410b-8ab9-b95efd326b04" value="*" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
           </ownedFeatures>
-          <ownedFeatures id="c8ee63d4-9f78-4422-97a3-c7b5a9873c6b" name="data_offset"
-              abstractType="#dc69adb1-9a90-4fc7-9cd5-746204dd36b8" aggregationKind="COMPOSITION"
+          <ownedFeatures id="97810d47-0a77-4b88-9fd2-44ca3eac61dd" name="data_offset"
+              abstractType="#958123ef-280b-470a-b0ee-c0cfcfa867b4" aggregationKind="COMPOSITION"
               description="cf. ObjectTypes, OBJECT_MOTION_TYPE_XXX" xsi:type="org.polarsys.capella.core.data.information:Property">
-            <ownedMinCard id="a3984753-5717-4edd-b2a0-b7359cbe67a6" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
-            <ownedMaxCard id="82417d71-f349-4cfa-9838-3afa4f3d4440" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            <ownedMinCard id="ddabd8d6-65c2-413a-a7b5-c86c38168e67" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            <ownedMaxCard id="aef75792-1c3a-4cba-9564-3b38a9613e9d" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
           </ownedFeatures>
         </ownedClasses>
-        <ownedDataPkgs id="ce4f7f9b-0901-4481-83d8-04e255f17687" name="sub_msgs" xsi:type="org.polarsys.capella.core.data.information:DataPkg">
-          <ownedClasses id="bad23d52-7a7b-4356-8e14-98297b196f16" name="MultiArrayDimension"
-              description="Copyright DB Netz AG and contributors&#xA;SPDX-License-Identifier: Apache-2.0"
-              xsi:type="org.polarsys.capella.core.data.information:Class">
-            <ownedFeatures id="339802aa-361d-4abd-9758-676d0e35ae85" name="label"
-                abstractType="#bf2b60f2-40f6-4e4b-8250-2c367e39094b" aggregationKind="COMPOSITION"
-                description="label of given dimension" xsi:type="org.polarsys.capella.core.data.information:Property">
-              <ownedMinCard id="0236c44a-1471-42e5-9f3b-4bb0efce5038" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
-              <ownedMaxCard id="63a50fb5-ad2a-4192-86be-310692b96817" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
-            </ownedFeatures>
-            <ownedFeatures id="11822ae5-ce84-4a68-beb8-be61b22c93f8" name="size" abstractType="#0287566e-0171-438f-8383-57239944e605"
-                aggregationKind="COMPOSITION" description="size of given dimension (in type units)"
-                xsi:type="org.polarsys.capella.core.data.information:Property">
-              <ownedMinCard id="46e621e8-00cd-4a23-a7e0-59b248041754" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
-              <ownedMaxCard id="6b99c9d4-66b4-440b-8736-cc5d6aa1d101" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
-            </ownedFeatures>
-            <ownedFeatures id="b789143c-26f7-4703-b9a8-3c4e020d29e3" name="stride"
-                abstractType="#0287566e-0171-438f-8383-57239944e605" aggregationKind="COMPOSITION"
-                description="stride of given dimension" xsi:type="org.polarsys.capella.core.data.information:Property">
-              <ownedMinCard id="a5585b9a-9e5b-445b-a307-fac3eb5c5a84" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
-              <ownedMaxCard id="c6eb6b04-4c81-4035-a838-cd1a0efa48e5" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
-            </ownedFeatures>
-          </ownedClasses>
-        </ownedDataPkgs>
-        <ownedDataPkgs id="32a19632-30f8-443b-9e30-36ee23726324" name="ros_interfaces"
-            xsi:type="org.polarsys.capella.core.data.information:DataPkg"/>
-        <ownedDataPkgs id="bca4f223-25e5-4163-a7b5-6187ee138563" name="basic_types"
+        <ownedDataPkgs id="99f20875-01e3-4a7b-95bd-a571c1ce963e" name="basic_types"
             xsi:type="org.polarsys.capella.core.data.information:DataPkg">
-          <ownedDataTypes id="80c47907-accf-481e-a5e9-c0b8f66fe463" name="uint64"
+          <ownedDataTypes id="7e259dd9-4176-4399-aaaa-4a17b063d1c2" name="uint8" xsi:type="org.polarsys.capella.core.data.information.datatype:NumericType"/>
+          <ownedDataTypes id="458c3c69-6e88-42f0-a852-52eb56cf2382" name="uint64"
               xsi:type="org.polarsys.capella.core.data.information.datatype:NumericType"/>
-          <ownedDataTypes id="bf2b60f2-40f6-4e4b-8250-2c367e39094b" name="string"
+          <ownedDataTypes id="30da896a-795a-4c48-be7b-7e11e2093281" name="string"
               xsi:type="org.polarsys.capella.core.data.information.datatype:StringType"/>
-          <ownedDataTypes id="0287566e-0171-438f-8383-57239944e605" name="uint32"
+          <ownedDataTypes id="451b29cd-8229-4c0f-ab30-0674aa8959ff" name="uint32"
               xsi:type="org.polarsys.capella.core.data.information.datatype:NumericType"/>
         </ownedDataPkgs>
-        <ownedDataPkgs id="c123006a-d406-4903-84f8-da90cda7417e" name="types" xsi:type="org.polarsys.capella.core.data.information:DataPkg">
-          <ownedDataTypes id="1b962b85-393f-46aa-ae12-e7fb368ecbcd" description="SPDX-FileCopyrightText: Copyright DB Netz AG&#xA;SPDX-License-Identifier: Apache-2.0"
+        <ownedDataPkgs id="70d28569-0e5d-4503-af3f-ab56215e64cc" name="types" xsi:type="org.polarsys.capella.core.data.information:DataPkg">
+          <ownedDataTypes id="d15a2c57-4d8d-4b30-bb1b-00ee0a097938" description="SPDX-FileCopyrightText: Copyright DB Netz AG&#xA;SPDX-License-Identifier: Apache-2.0"
               xsi:type="org.polarsys.capella.core.data.information.datatype:Enumeration"/>
-          <ownedDataTypes id="dc69adb1-9a90-4fc7-9cd5-746204dd36b8" name="OBJECT_MOTION_TYPE"
+          <ownedDataTypes id="958123ef-280b-470a-b0ee-c0cfcfa867b4" name="OBJECT_MOTION_TYPE"
               description="SPDX-FileCopyrightText: Copyright DB Netz AG&#xA;SPDX-License-Identifier: Apache-2.0"
               xsi:type="org.polarsys.capella.core.data.information.datatype:Enumeration">
-            <ownedLiterals id="8962f10f-1a5b-4ea5-a084-b71b92fbdf3d" name="UNDEFINED"
-                description="SPDX-FileCopyrightText: Copyright DB Netz AG&#xA;SPDX-License-Identifier: Apache-2.0"
+            <ownedLiterals id="0b5ba164-a9e2-48ea-b14d-a145402d33bd" name="UNDEFINED"
                 xsi:type="org.polarsys.capella.core.data.information.datavalue:EnumerationLiteral">
-              <domainValue id="c3a89d92-f5ac-45b3-9515-ba3413c1846a" value="0" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+              <domainValue id="0c2ba4bd-3016-401e-a5e8-7deddce01965" value="0" abstractType="#7e259dd9-4176-4399-aaaa-4a17b063d1c2"
+                  xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
             </ownedLiterals>
-            <ownedLiterals id="25222b56-e2ca-4ffa-96c9-b823066564c2" name="STATIC"
-                description="SPDX-FileCopyrightText: Copyright DB Netz AG&#xA;SPDX-License-Identifier: Apache-2.0"
+            <ownedLiterals id="3014c482-7300-47ff-9f55-f4e823ca262f" name="STATIC"
                 xsi:type="org.polarsys.capella.core.data.information.datavalue:EnumerationLiteral">
-              <domainValue id="f9967889-a9ec-417a-a931-f87498c28416" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+              <domainValue id="fd655c30-6bde-4447-8493-d1f840f57379" value="1" abstractType="#7e259dd9-4176-4399-aaaa-4a17b063d1c2"
+                  xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
             </ownedLiterals>
-            <ownedLiterals id="98789413-3750-4217-bba9-79301237590e" name="DYNAMIC"
-                description="SPDX-FileCopyrightText: Copyright DB Netz AG&#xA;SPDX-License-Identifier: Apache-2.0"
+            <ownedLiterals id="182b38d5-bc8a-4c15-bee7-2e59d5dc3386" name="DYNAMIC"
                 xsi:type="org.polarsys.capella.core.data.information.datavalue:EnumerationLiteral">
-              <domainValue id="bd98d138-d752-496b-8356-814fca771443" value="2" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+              <domainValue id="550e6bce-982a-4216-b0f5-c1807c92a166" value="2" abstractType="#7e259dd9-4176-4399-aaaa-4a17b063d1c2"
+                  xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
             </ownedLiterals>
           </ownedDataTypes>
         </ownedDataPkgs>
+        <ownedDataPkgs id="400ad643-97f1-4483-8cf1-294481d8c599" name="ros_interfaces"
+            xsi:type="org.polarsys.capella.core.data.information:DataPkg"/>
+        <ownedDataPkgs id="91c12c9a-0a3e-485d-b597-b18b4cbc809d" name="sub_msgs" xsi:type="org.polarsys.capella.core.data.information:DataPkg">
+          <ownedClasses id="ef3b07c4-ae0d-4f42-b5d8-dcecca089479" name="MultiArrayDimension"
+              description="Copyright DB Netz AG and contributors&#xA;SPDX-License-Identifier: Apache-2.0"
+              xsi:type="org.polarsys.capella.core.data.information:Class">
+            <ownedFeatures id="dd23942b-ac66-4817-af2b-93ef9d648a58" name="label"
+                abstractType="#30da896a-795a-4c48-be7b-7e11e2093281" aggregationKind="COMPOSITION"
+                description="label of given dimension" xsi:type="org.polarsys.capella.core.data.information:Property">
+              <ownedMinCard id="14d5a6e6-eaf5-4c4f-a512-a9ce41ad6107" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+              <ownedMaxCard id="979be9ad-26dd-48b3-98fb-65f32f6d4b91" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            </ownedFeatures>
+            <ownedFeatures id="76636610-4e7a-4c5a-bbfc-22f15dd34d11" name="size" abstractType="#451b29cd-8229-4c0f-ab30-0674aa8959ff"
+                aggregationKind="COMPOSITION" description="size of given dimension (in type units)"
+                xsi:type="org.polarsys.capella.core.data.information:Property">
+              <ownedMinCard id="a9d18bfb-86b3-4bd4-9719-8ca587ee8253" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+              <ownedMaxCard id="98189d64-1bcf-477e-8077-c272d9087afa" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            </ownedFeatures>
+            <ownedFeatures id="3de6c3ba-1440-4602-be37-93d7fb956e27" name="stride"
+                abstractType="#451b29cd-8229-4c0f-ab30-0674aa8959ff" aggregationKind="COMPOSITION"
+                description="stride of given dimension" xsi:type="org.polarsys.capella.core.data.information:Property">
+              <ownedMinCard id="0361995f-81e9-4906-a4d9-88ce7749d016" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+              <ownedMaxCard id="eee85b53-9044-4db0-a92a-e94e86c6d90b" value="1" xsi:type="org.polarsys.capella.core.data.information.datavalue:LiteralNumericValue"/>
+            </ownedFeatures>
+          </ownedClasses>
+        </ownedDataPkgs>
       </ownedDataPkg>
       <ownedLogicalComponentPkg xsi:type="org.polarsys.capella.core.data.la:LogicalComponentPkg"
           id="a4f76d7e-fd81-45a9-9f18-b12272aeccb5" name="Structure">