diff --git a/model/generic_model.py b/model/generic_model.py
index c4f782df2a6b7c86b70da5b7209749eec4a3b726..027f51c730893f01b2a24ae6e7902c95cf7a7096 100644
--- a/model/generic_model.py
+++ b/model/generic_model.py
@@ -1218,7 +1218,7 @@ class Arbeitsauftrag(Submodel):
                     if embedded_data_specifications is None:
                         embedded_data_specifications = []
 
-                    # Build a submodel element if a raw value was passed in the argument
+                    # Build a list of submodel elements if a raw values were passed in the argument
                     if holzlisteReference and all(
                         [isinstance(i, Reference) for i in holzlisteReference]
                     ):
@@ -1226,6 +1226,7 @@ class Arbeitsauftrag(Submodel):
                             self.HolzlisteReference(i) for i in holzlisteReference
                         ]
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [holzlisteReference]:
                         if se_arg is None:
@@ -1260,65 +1261,6 @@ class Arbeitsauftrag(Submodel):
                     )
 
             class Kaeufer(SubmodelElementCollection):
-                class Kontaktrolle(Property):
-                    def __init__(
-                        self,
-                        value: str,
-                        id_short: str = "Kontaktrolle",
-                        value_type: DataTypeDefXsd = str,
-                        value_id: Optional[Reference] = None,
-                        display_name: Optional[LangStringSet] = None,
-                        category: Optional[str] = None,
-                        description: Optional[LangStringSet] = None,
-                        semantic_id: Optional[Reference] = GlobalReference(
-                            key=(
-                                Key(
-                                    type_=KeyTypes.GLOBAL_REFERENCE,
-                                    value="https://admin-shell.io/kwh40/forestml40/Arbeitsauftrag/0/1/Sortimente/Sortiment/Kaeufer/Kontaktrolle",
-                                ),
-                            ),
-                            referred_semantic_id=None,
-                        ),
-                        qualifier: Iterable[Qualifier] = None,
-                        kind: ModelingKind = ModelingKind.INSTANCE,
-                        extension: Iterable[Extension] = (),
-                        supplemental_semantic_id: Iterable[Reference] = (),
-                        embedded_data_specifications: Iterable[
-                            EmbeddedDataSpecification
-                        ] = None,
-                    ):
-                        if qualifier is None:
-                            qualifier = (
-                                Qualifier(
-                                    type_="Cardinality",
-                                    value_type=str,
-                                    value="One",
-                                    value_id=None,
-                                    kind=QualifierKind.CONCEPT_QUALIFIER,
-                                    semantic_id=None,
-                                    supplemental_semantic_id=(),
-                                ),
-                            )
-
-                        if embedded_data_specifications is None:
-                            embedded_data_specifications = []
-
-                        super().__init__(
-                            value=value,
-                            id_short=id_short,
-                            value_type=value_type,
-                            value_id=value_id,
-                            display_name=display_name,
-                            category=category,
-                            description=description,
-                            semantic_id=semantic_id,
-                            qualifier=qualifier,
-                            kind=kind,
-                            extension=extension,
-                            supplemental_semantic_id=supplemental_semantic_id,
-                            embedded_data_specifications=embedded_data_specifications,
-                        )
-
                 class Firmenname(Property):
                     def __init__(
                         self,
@@ -1895,10 +1837,11 @@ class Arbeitsauftrag(Submodel):
                         if embedded_data_specifications is None:
                             embedded_data_specifications = []
 
-                        # Build a submodel element if a raw value was passed in the argument
+                        # Build a list of submodel elements if a raw values were passed in the argument
                         if telefon and all([isinstance(i, str) for i in telefon]):
                             telefon = [self.Telefon(i) for i in telefon]
 
+                        # Add all passed/initialized submodel elements to a single list
                         embedded_submodel_elements = []
                         for se_arg in [telefon]:
                             if se_arg is None:
@@ -2036,10 +1979,11 @@ class Arbeitsauftrag(Submodel):
                         if embedded_data_specifications is None:
                             embedded_data_specifications = []
 
-                        # Build a submodel element if a raw value was passed in the argument
+                        # Build a list of submodel elements if a raw values were passed in the argument
                         if email and all([isinstance(i, str) for i in email]):
                             email = [self.Email(i) for i in email]
 
+                        # Add all passed/initialized submodel elements to a single list
                         embedded_submodel_elements = []
                         for se_arg in [email]:
                             if se_arg is None:
@@ -2075,7 +2019,6 @@ class Arbeitsauftrag(Submodel):
 
                 def __init__(
                     self,
-                    kontaktrolle: Union[str, Kontaktrolle],
                     firmenname: Optional[Union[str, Firmenname]] = None,
                     anrede: Optional[Union[str, Anrede]] = None,
                     vorname: Optional[Union[str, Vorname]] = None,
@@ -2125,10 +2068,6 @@ class Arbeitsauftrag(Submodel):
                     if embedded_data_specifications is None:
                         embedded_data_specifications = []
 
-                    # Build a submodel element if a raw value was passed in the argument
-                    if kontaktrolle and not isinstance(kontaktrolle, SubmodelElement):
-                        kontaktrolle = self.Kontaktrolle(kontaktrolle)
-
                     # Build a submodel element if a raw value was passed in the argument
                     if firmenname and not isinstance(firmenname, SubmodelElement):
                         firmenname = self.Firmenname(firmenname)
@@ -2173,9 +2112,9 @@ class Arbeitsauftrag(Submodel):
                     if emailadressen and not isinstance(emailadressen, SubmodelElement):
                         emailadressen = self.Emailadressen(emailadressen)
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [
-                        kontaktrolle,
                         firmenname,
                         anrede,
                         vorname,
@@ -2322,6 +2261,7 @@ class Arbeitsauftrag(Submodel):
                 if bemerkung and not isinstance(bemerkung, SubmodelElement):
                     bemerkung = self.Bemerkung(bemerkung)
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [
                     nummer,
@@ -2409,6 +2349,7 @@ class Arbeitsauftrag(Submodel):
             if embedded_data_specifications is None:
                 embedded_data_specifications = []
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [sortiment]:
                 if se_arg is None:
@@ -3019,10 +2960,11 @@ class Arbeitsauftrag(Submodel):
                 if embedded_data_specifications is None:
                     embedded_data_specifications = []
 
-                # Build a submodel element if a raw value was passed in the argument
+                # Build a list of submodel elements if a raw values were passed in the argument
                 if telefon and all([isinstance(i, str) for i in telefon]):
                     telefon = [self.Telefon(i) for i in telefon]
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [telefon]:
                     if se_arg is None:
@@ -3160,10 +3102,11 @@ class Arbeitsauftrag(Submodel):
                 if embedded_data_specifications is None:
                     embedded_data_specifications = []
 
-                # Build a submodel element if a raw value was passed in the argument
+                # Build a list of submodel elements if a raw values were passed in the argument
                 if email and all([isinstance(i, str) for i in email]):
                     email = [self.Email(i) for i in email]
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [email]:
                     if se_arg is None:
@@ -3284,6 +3227,7 @@ class Arbeitsauftrag(Submodel):
             if emailadressen and not isinstance(emailadressen, SubmodelElement):
                 emailadressen = self.Emailadressen(emailadressen)
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [
                 firmenname,
@@ -3901,10 +3845,11 @@ class Arbeitsauftrag(Submodel):
                 if embedded_data_specifications is None:
                     embedded_data_specifications = []
 
-                # Build a submodel element if a raw value was passed in the argument
+                # Build a list of submodel elements if a raw values were passed in the argument
                 if telefon and all([isinstance(i, str) for i in telefon]):
                     telefon = [self.Telefon(i) for i in telefon]
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [telefon]:
                     if se_arg is None:
@@ -4042,10 +3987,11 @@ class Arbeitsauftrag(Submodel):
                 if embedded_data_specifications is None:
                     embedded_data_specifications = []
 
-                # Build a submodel element if a raw value was passed in the argument
+                # Build a list of submodel elements if a raw values were passed in the argument
                 if email and all([isinstance(i, str) for i in email]):
                     email = [self.Email(i) for i in email]
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [email]:
                     if se_arg is None:
@@ -4166,6 +4112,7 @@ class Arbeitsauftrag(Submodel):
             if emailadressen and not isinstance(emailadressen, SubmodelElement):
                 emailadressen = self.Emailadressen(emailadressen)
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [
                 firmenname,
@@ -4783,10 +4730,11 @@ class Arbeitsauftrag(Submodel):
                 if embedded_data_specifications is None:
                     embedded_data_specifications = []
 
-                # Build a submodel element if a raw value was passed in the argument
+                # Build a list of submodel elements if a raw values were passed in the argument
                 if telefon and all([isinstance(i, str) for i in telefon]):
                     telefon = [self.Telefon(i) for i in telefon]
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [telefon]:
                     if se_arg is None:
@@ -4924,10 +4872,11 @@ class Arbeitsauftrag(Submodel):
                 if embedded_data_specifications is None:
                     embedded_data_specifications = []
 
-                # Build a submodel element if a raw value was passed in the argument
+                # Build a list of submodel elements if a raw values were passed in the argument
                 if email and all([isinstance(i, str) for i in email]):
                     email = [self.Email(i) for i in email]
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [email]:
                     if se_arg is None:
@@ -5048,6 +4997,7 @@ class Arbeitsauftrag(Submodel):
             if emailadressen and not isinstance(emailadressen, SubmodelElement):
                 emailadressen = self.Emailadressen(emailadressen)
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [
                 firmenname,
@@ -5209,6 +5159,7 @@ class Arbeitsauftrag(Submodel):
         if zuFaellendeBaeume and not isinstance(zuFaellendeBaeume, SubmodelElement):
             zuFaellendeBaeume = self.ZuFaellendeBaeume(zuFaellendeBaeume)
 
+        # Add all passed/initialized submodel elements to a single list
         embedded_submodel_elements = []
         for se_arg in [
             hiebsnummer,
@@ -5669,9 +5620,9 @@ class Beobachtung(Submodel):
                 class Crs(Property):
                     def __init__(
                         self,
-                        value: float,
+                        value: str,
                         id_short: str = "crs",
-                        value_type: DataTypeDefXsd = float,
+                        value_type: DataTypeDefXsd = str,
                         value_id: Optional[Reference] = None,
                         display_name: Optional[LangStringSet] = None,
                         category: Optional[str] = None,
@@ -5730,7 +5681,7 @@ class Beobachtung(Submodel):
                     x: Optional[Union[float, X]] = None,
                     y: Optional[Union[float, Y]] = None,
                     alt: Optional[Union[float, Alt]] = None,
-                    crs: Optional[Union[float, Crs]] = None,
+                    crs: Optional[Union[str, Crs]] = None,
                     id_short: str = "Koordinate",
                     display_name: Optional[LangStringSet] = None,
                     category: Optional[str] = None,
@@ -5784,6 +5735,7 @@ class Beobachtung(Submodel):
                     if crs and not isinstance(crs, SubmodelElement):
                         crs = self.Crs(crs)
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [x, y, alt, crs]:
                         if se_arg is None:
@@ -5857,6 +5809,7 @@ class Beobachtung(Submodel):
                 if embedded_data_specifications is None:
                     embedded_data_specifications = []
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [koordinate]:
                     if se_arg is None:
@@ -5928,6 +5881,7 @@ class Beobachtung(Submodel):
             if beschreibung and not isinstance(beschreibung, SubmodelElement):
                 beschreibung = self.Beschreibung(beschreibung)
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [name, beschreibung, koordinaten]:
                 if se_arg is None:
@@ -6139,9 +6093,9 @@ class Beobachtung(Submodel):
             class Crs(Property):
                 def __init__(
                     self,
-                    value: float,
+                    value: str,
                     id_short: str = "crs",
-                    value_type: DataTypeDefXsd = float,
+                    value_type: DataTypeDefXsd = str,
                     value_id: Optional[Reference] = None,
                     display_name: Optional[LangStringSet] = None,
                     category: Optional[str] = None,
@@ -6200,7 +6154,7 @@ class Beobachtung(Submodel):
                 x: Optional[Union[float, X]] = None,
                 y: Optional[Union[float, Y]] = None,
                 alt: Optional[Union[float, Alt]] = None,
-                crs: Optional[Union[float, Crs]] = None,
+                crs: Optional[Union[str, Crs]] = None,
                 id_short: str = "Koordinate",
                 display_name: Optional[LangStringSet] = None,
                 category: Optional[str] = None,
@@ -6254,6 +6208,7 @@ class Beobachtung(Submodel):
                 if crs and not isinstance(crs, SubmodelElement):
                     crs = self.Crs(crs)
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [x, y, alt, crs]:
                     if se_arg is None:
@@ -6385,6 +6340,7 @@ class Beobachtung(Submodel):
             if notiz and not isinstance(notiz, SubmodelElement):
                 notiz = self.Notiz(notiz)
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [koordinate, notiz]:
                 if se_arg is None:
@@ -6455,6 +6411,7 @@ class Beobachtung(Submodel):
         if beschreibung and not isinstance(beschreibung, SubmodelElement):
             beschreibung = self.Beschreibung(beschreibung)
 
+        # Add all passed/initialized submodel elements to a single list
         embedded_submodel_elements = []
         for se_arg in [name, beschreibung, umring, position]:
             if se_arg is None:
@@ -6789,9 +6746,9 @@ class Bestandesdaten(Submodel):
                 class Crs(Property):
                     def __init__(
                         self,
-                        value: float,
+                        value: str,
                         id_short: str = "crs",
-                        value_type: DataTypeDefXsd = float,
+                        value_type: DataTypeDefXsd = str,
                         value_id: Optional[Reference] = None,
                         display_name: Optional[LangStringSet] = None,
                         category: Optional[str] = None,
@@ -6850,7 +6807,7 @@ class Bestandesdaten(Submodel):
                     x: Optional[Union[float, X]] = None,
                     y: Optional[Union[float, Y]] = None,
                     alt: Optional[Union[float, Alt]] = None,
-                    crs: Optional[Union[float, Crs]] = None,
+                    crs: Optional[Union[str, Crs]] = None,
                     id_short: str = "Koordinate",
                     display_name: Optional[LangStringSet] = None,
                     category: Optional[str] = None,
@@ -6904,6 +6861,7 @@ class Bestandesdaten(Submodel):
                     if crs and not isinstance(crs, SubmodelElement):
                         crs = self.Crs(crs)
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [x, y, alt, crs]:
                         if se_arg is None:
@@ -6977,6 +6935,7 @@ class Bestandesdaten(Submodel):
                 if embedded_data_specifications is None:
                     embedded_data_specifications = []
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [koordinate]:
                     if se_arg is None:
@@ -7048,6 +7007,7 @@ class Bestandesdaten(Submodel):
             if beschreibung and not isinstance(beschreibung, SubmodelElement):
                 beschreibung = self.Beschreibung(beschreibung)
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [name, beschreibung, koordinaten]:
                 if se_arg is None:
@@ -7078,65 +7038,6 @@ class Bestandesdaten(Submodel):
             )
 
     class Waldbesitzer(SubmodelElementCollection):
-        class Kontaktrolle(Property):
-            def __init__(
-                self,
-                value: str,
-                id_short: str = "Kontaktrolle",
-                value_type: DataTypeDefXsd = str,
-                value_id: Optional[Reference] = None,
-                display_name: Optional[LangStringSet] = None,
-                category: Optional[str] = None,
-                description: Optional[LangStringSet] = None,
-                semantic_id: Optional[Reference] = GlobalReference(
-                    key=(
-                        Key(
-                            type_=KeyTypes.GLOBAL_REFERENCE,
-                            value="https://admin-shell.io/kwh40/forestml40/Bestandesdaten/0/1/Waldbesitzer/Kontaktrolle",
-                        ),
-                    ),
-                    referred_semantic_id=None,
-                ),
-                qualifier: Iterable[Qualifier] = None,
-                kind: ModelingKind = ModelingKind.INSTANCE,
-                extension: Iterable[Extension] = (),
-                supplemental_semantic_id: Iterable[Reference] = (),
-                embedded_data_specifications: Iterable[
-                    EmbeddedDataSpecification
-                ] = None,
-            ):
-                if qualifier is None:
-                    qualifier = (
-                        Qualifier(
-                            type_="Cardinality",
-                            value_type=str,
-                            value="One",
-                            value_id=None,
-                            kind=QualifierKind.CONCEPT_QUALIFIER,
-                            semantic_id=None,
-                            supplemental_semantic_id=(),
-                        ),
-                    )
-
-                if embedded_data_specifications is None:
-                    embedded_data_specifications = []
-
-                super().__init__(
-                    value=value,
-                    id_short=id_short,
-                    value_type=value_type,
-                    value_id=value_id,
-                    display_name=display_name,
-                    category=category,
-                    description=description,
-                    semantic_id=semantic_id,
-                    qualifier=qualifier,
-                    kind=kind,
-                    extension=extension,
-                    supplemental_semantic_id=supplemental_semantic_id,
-                    embedded_data_specifications=embedded_data_specifications,
-                )
-
         class Firmenname(Property):
             def __init__(
                 self,
@@ -7713,10 +7614,11 @@ class Bestandesdaten(Submodel):
                 if embedded_data_specifications is None:
                     embedded_data_specifications = []
 
-                # Build a submodel element if a raw value was passed in the argument
+                # Build a list of submodel elements if a raw values were passed in the argument
                 if telefon and all([isinstance(i, str) for i in telefon]):
                     telefon = [self.Telefon(i) for i in telefon]
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [telefon]:
                     if se_arg is None:
@@ -7854,10 +7756,11 @@ class Bestandesdaten(Submodel):
                 if embedded_data_specifications is None:
                     embedded_data_specifications = []
 
-                # Build a submodel element if a raw value was passed in the argument
+                # Build a list of submodel elements if a raw values were passed in the argument
                 if email and all([isinstance(i, str) for i in email]):
                     email = [self.Email(i) for i in email]
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [email]:
                     if se_arg is None:
@@ -7893,7 +7796,6 @@ class Bestandesdaten(Submodel):
 
         def __init__(
             self,
-            kontaktrolle: Union[str, Kontaktrolle],
             firmenname: Optional[Union[str, Firmenname]] = None,
             anrede: Optional[Union[str, Anrede]] = None,
             vorname: Optional[Union[str, Vorname]] = None,
@@ -7939,10 +7841,6 @@ class Bestandesdaten(Submodel):
             if embedded_data_specifications is None:
                 embedded_data_specifications = []
 
-            # Build a submodel element if a raw value was passed in the argument
-            if kontaktrolle and not isinstance(kontaktrolle, SubmodelElement):
-                kontaktrolle = self.Kontaktrolle(kontaktrolle)
-
             # Build a submodel element if a raw value was passed in the argument
             if firmenname and not isinstance(firmenname, SubmodelElement):
                 firmenname = self.Firmenname(firmenname)
@@ -7983,9 +7881,9 @@ class Bestandesdaten(Submodel):
             if emailadressen and not isinstance(emailadressen, SubmodelElement):
                 emailadressen = self.Emailadressen(emailadressen)
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [
-                kontaktrolle,
                 firmenname,
                 anrede,
                 vorname,
@@ -8126,10 +8024,11 @@ class Bestandesdaten(Submodel):
             if embedded_data_specifications is None:
                 embedded_data_specifications = []
 
-            # Build a submodel element if a raw value was passed in the argument
+            # Build a list of submodel elements if a raw values were passed in the argument
             if baumart and all([isinstance(i, str) for i in baumart]):
                 baumart = [self.Baumart(i) for i in baumart]
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [baumart]:
                 if se_arg is None:
@@ -8199,6 +8098,7 @@ class Bestandesdaten(Submodel):
         if baumarten and not isinstance(baumarten, SubmodelElement):
             baumarten = self.Baumarten(baumarten)
 
+        # Add all passed/initialized submodel elements to a single list
         embedded_submodel_elements = []
         for se_arg in [umring, waldbesitzer, baumarten]:
             if se_arg is None:
@@ -8236,10 +8136,10 @@ class Holzliste(Submodel):
         class Ernte(Range):
             def __init__(
                 self,
+                min: Date,
+                max: Date,
                 id_short: str = "Ernte",
                 value_type: DataTypeDefXsd = Date,
-                min: Optional[ValueDataType] = Date(),
-                max: Optional[ValueDataType] = Date(),
                 display_name: Optional[LangStringSet] = None,
                 category: Optional[str] = None,
                 description: Optional[LangStringSet] = None,
@@ -8277,10 +8177,10 @@ class Holzliste(Submodel):
                     embedded_data_specifications = []
 
                 super().__init__(
-                    id_short=id_short,
-                    value_type=value_type,
                     min=min,
                     max=max,
+                    id_short=id_short,
+                    value_type=value_type,
                     display_name=display_name,
                     category=category,
                     description=description,
@@ -8869,10 +8769,11 @@ class Holzliste(Submodel):
                     if embedded_data_specifications is None:
                         embedded_data_specifications = []
 
-                    # Build a submodel element if a raw value was passed in the argument
+                    # Build a list of submodel elements if a raw values were passed in the argument
                     if telefon and all([isinstance(i, str) for i in telefon]):
                         telefon = [self.Telefon(i) for i in telefon]
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [telefon]:
                         if se_arg is None:
@@ -9010,10 +8911,11 @@ class Holzliste(Submodel):
                     if embedded_data_specifications is None:
                         embedded_data_specifications = []
 
-                    # Build a submodel element if a raw value was passed in the argument
+                    # Build a list of submodel elements if a raw values were passed in the argument
                     if email and all([isinstance(i, str) for i in email]):
                         email = [self.Email(i) for i in email]
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [email]:
                         if se_arg is None:
@@ -9138,6 +9040,7 @@ class Holzliste(Submodel):
                 if emailadressen and not isinstance(emailadressen, SubmodelElement):
                     emailadressen = self.Emailadressen(emailadressen)
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [
                     firmenname,
@@ -9755,10 +9658,11 @@ class Holzliste(Submodel):
                     if embedded_data_specifications is None:
                         embedded_data_specifications = []
 
-                    # Build a submodel element if a raw value was passed in the argument
+                    # Build a list of submodel elements if a raw values were passed in the argument
                     if telefon and all([isinstance(i, str) for i in telefon]):
                         telefon = [self.Telefon(i) for i in telefon]
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [telefon]:
                         if se_arg is None:
@@ -9896,10 +9800,11 @@ class Holzliste(Submodel):
                     if embedded_data_specifications is None:
                         embedded_data_specifications = []
 
-                    # Build a submodel element if a raw value was passed in the argument
+                    # Build a list of submodel elements if a raw values were passed in the argument
                     if email and all([isinstance(i, str) for i in email]):
                         email = [self.Email(i) for i in email]
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [email]:
                         if se_arg is None:
@@ -10024,6 +9929,7 @@ class Holzliste(Submodel):
                 if emailadressen and not isinstance(emailadressen, SubmodelElement):
                     emailadressen = self.Emailadressen(emailadressen)
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [
                     firmenname,
@@ -10641,10 +10547,11 @@ class Holzliste(Submodel):
                     if embedded_data_specifications is None:
                         embedded_data_specifications = []
 
-                    # Build a submodel element if a raw value was passed in the argument
+                    # Build a list of submodel elements if a raw values were passed in the argument
                     if telefon and all([isinstance(i, str) for i in telefon]):
                         telefon = [self.Telefon(i) for i in telefon]
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [telefon]:
                         if se_arg is None:
@@ -10782,10 +10689,11 @@ class Holzliste(Submodel):
                     if embedded_data_specifications is None:
                         embedded_data_specifications = []
 
-                    # Build a submodel element if a raw value was passed in the argument
+                    # Build a list of submodel elements if a raw values were passed in the argument
                     if email and all([isinstance(i, str) for i in email]):
                         email = [self.Email(i) for i in email]
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [email]:
                         if se_arg is None:
@@ -10910,6 +10818,7 @@ class Holzliste(Submodel):
                 if emailadressen and not isinstance(emailadressen, SubmodelElement):
                     emailadressen = self.Emailadressen(emailadressen)
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [
                     firmenname,
@@ -11129,7 +11038,7 @@ class Holzliste(Submodel):
 
         def __init__(
             self,
-            ernte: Optional[Ernte] = None,
+            ernte: Optional[Union[Tuple[Date, Date], Ernte]] = None,
             lieferant: Optional[Lieferant] = None,
             kaeufer: Optional[Kaeufer] = None,
             fuhrmann: Optional[Fuhrmann] = None,
@@ -11171,6 +11080,10 @@ class Holzliste(Submodel):
             if embedded_data_specifications is None:
                 embedded_data_specifications = []
 
+            # Build a submodel element if a raw value was passed in the argument
+            if ernte and not isinstance(ernte, SubmodelElement):
+                ernte = self.Ernte(ernte)
+
             # Build a submodel element if a raw value was passed in the argument
             if projekt and not isinstance(projekt, SubmodelElement):
                 projekt = self.Projekt(projekt)
@@ -11183,6 +11096,7 @@ class Holzliste(Submodel):
             if notiz and not isinstance(notiz, SubmodelElement):
                 notiz = self.Notiz(notiz)
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [ernte, lieferant, kaeufer, fuhrmann, projekt, hieb, notiz]:
                 if se_arg is None:
@@ -11666,10 +11580,11 @@ class Holzliste(Submodel):
                     if embedded_data_specifications is None:
                         embedded_data_specifications = []
 
-                    # Build a submodel element if a raw value was passed in the argument
+                    # Build a list of submodel elements if a raw values were passed in the argument
                     if foto and all([isinstance(i, str) for i in foto]):
                         foto = [self.Foto(i) for i in foto]
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [foto]:
                         if se_arg is None:
@@ -11807,10 +11722,11 @@ class Holzliste(Submodel):
                     if embedded_data_specifications is None:
                         embedded_data_specifications = []
 
-                    # Build a submodel element if a raw value was passed in the argument
+                    # Build a list of submodel elements if a raw values were passed in the argument
                     if video and all([isinstance(i, str) for i in video]):
                         video = [self.Video(i) for i in video]
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [video]:
                         if se_arg is None:
@@ -12288,6 +12204,7 @@ class Holzliste(Submodel):
                                     )
                                 )
 
+                            # Add all passed/initialized submodel elements to a single list
                             embedded_submodel_elements = []
                             for se_arg in [
                                 menge,
@@ -12368,6 +12285,7 @@ class Holzliste(Submodel):
                         if embedded_data_specifications is None:
                             embedded_data_specifications = []
 
+                        # Add all passed/initialized submodel elements to a single list
                         embedded_submodel_elements = []
                         for se_arg in [einzelstamm]:
                             if se_arg is None:
@@ -12441,6 +12359,7 @@ class Holzliste(Submodel):
                     if embedded_data_specifications is None:
                         embedded_data_specifications = []
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [einzelstaemme]:
                         if se_arg is None:
@@ -12652,9 +12571,9 @@ class Holzliste(Submodel):
                     class Crs(Property):
                         def __init__(
                             self,
-                            value: float,
+                            value: str,
                             id_short: str = "crs",
-                            value_type: DataTypeDefXsd = float,
+                            value_type: DataTypeDefXsd = str,
                             value_id: Optional[Reference] = None,
                             display_name: Optional[LangStringSet] = None,
                             category: Optional[str] = None,
@@ -12713,7 +12632,7 @@ class Holzliste(Submodel):
                         x: Optional[Union[float, X]] = None,
                         y: Optional[Union[float, Y]] = None,
                         alt: Optional[Union[float, Alt]] = None,
-                        crs: Optional[Union[float, Crs]] = None,
+                        crs: Optional[Union[str, Crs]] = None,
                         id_short: str = "Koordinate",
                         display_name: Optional[LangStringSet] = None,
                         category: Optional[str] = None,
@@ -12767,6 +12686,7 @@ class Holzliste(Submodel):
                         if crs and not isinstance(crs, SubmodelElement):
                             crs = self.Crs(crs)
 
+                        # Add all passed/initialized submodel elements to a single list
                         embedded_submodel_elements = []
                         for se_arg in [x, y, alt, crs]:
                             if se_arg is None:
@@ -12900,6 +12820,7 @@ class Holzliste(Submodel):
                     if notiz and not isinstance(notiz, SubmodelElement):
                         notiz = self.Notiz(notiz)
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [koordinate, notiz]:
                         if se_arg is None:
@@ -13001,6 +12922,7 @@ class Holzliste(Submodel):
                 if videos and not isinstance(videos, SubmodelElement):
                     videos = self.Videos(videos)
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [
                     polternummer,
@@ -13080,6 +13002,7 @@ class Holzliste(Submodel):
             if embedded_data_specifications is None:
                 embedded_data_specifications = []
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [polter]:
                 if se_arg is None:
@@ -13113,54 +13036,548 @@ class Holzliste(Submodel):
                 embedded_data_specifications=embedded_data_specifications,
             )
 
-    def __init__(
-        self,
-        id_: str,
-        kopfdaten: Kopfdaten,
-        sortimentstyp: Union[str, Sortimentstyp],
-        sorte: Union[str, Sorte],
-        holzart: Union[str, Holzart],
-        polterListe: PolterListe,
-        id_short: str = "Holzliste",
-        display_name: Optional[LangStringSet] = None,
-        category: Optional[str] = None,
-        description: Optional[LangStringSet] = None,
-        administration: Optional[AdministrativeInformation] = None,
-        semantic_id: Optional[Reference] = GlobalReference(
-            key=(
-                Key(
-                    type_=KeyTypes.GLOBAL_REFERENCE,
-                    value="https://admin-shell.io/kwh40/forestml40/Holzliste/0/1",
-                ),
-            ),
-            referred_semantic_id=None,
-        ),
-        qualifier: Iterable[Qualifier] = None,
-        kind: ModelingKind = ModelingKind.INSTANCE,
-        extension: Iterable[Extension] = (),
-        supplemental_semantic_id: Iterable[Reference] = (),
-        embedded_data_specifications: Iterable[EmbeddedDataSpecification] = None,
-    ):
-        if qualifier is None:
-            qualifier = ()
-
-        if embedded_data_specifications is None:
-            embedded_data_specifications = []
+    class Preismatrix(SubmodelElementList):
+        class Preismatrixeintrag(SubmodelElementCollection):
+            class Preis(Property):
+                def __init__(
+                    self,
+                    value: float,
+                    id_short: str = "Preis",
+                    value_type: DataTypeDefXsd = float,
+                    value_id: Optional[Reference] = None,
+                    display_name: Optional[LangStringSet] = None,
+                    category: Optional[str] = None,
+                    description: Optional[LangStringSet] = None,
+                    semantic_id: Optional[Reference] = GlobalReference(
+                        key=(
+                            Key(
+                                type_=KeyTypes.GLOBAL_REFERENCE,
+                                value="https://admin-shell.io/kwh40/forestml40/Holzliste/0/1/Preismatrix/Preismatrixeintrag/Preis",
+                            ),
+                        ),
+                        referred_semantic_id=None,
+                    ),
+                    qualifier: Iterable[Qualifier] = None,
+                    kind: ModelingKind = ModelingKind.INSTANCE,
+                    extension: Iterable[Extension] = (),
+                    supplemental_semantic_id: Iterable[Reference] = (),
+                    embedded_data_specifications: Iterable[
+                        EmbeddedDataSpecification
+                    ] = None,
+                ):
+                    if qualifier is None:
+                        qualifier = (
+                            Qualifier(
+                                type_="Cardinality",
+                                value_type=str,
+                                value="One",
+                                value_id=None,
+                                kind=QualifierKind.CONCEPT_QUALIFIER,
+                                semantic_id=None,
+                                supplemental_semantic_id=(),
+                            ),
+                        )
 
-        # Build a submodel element if a raw value was passed in the argument
-        if sortimentstyp and not isinstance(sortimentstyp, SubmodelElement):
-            sortimentstyp = self.Sortimentstyp(sortimentstyp)
+                    if embedded_data_specifications is None:
+                        embedded_data_specifications = []
 
-        # Build a submodel element if a raw value was passed in the argument
-        if sorte and not isinstance(sorte, SubmodelElement):
-            sorte = self.Sorte(sorte)
+                    super().__init__(
+                        value=value,
+                        id_short=id_short,
+                        value_type=value_type,
+                        value_id=value_id,
+                        display_name=display_name,
+                        category=category,
+                        description=description,
+                        semantic_id=semantic_id,
+                        qualifier=qualifier,
+                        kind=kind,
+                        extension=extension,
+                        supplemental_semantic_id=supplemental_semantic_id,
+                        embedded_data_specifications=embedded_data_specifications,
+                    )
 
-        # Build a submodel element if a raw value was passed in the argument
-        if holzart and not isinstance(holzart, SubmodelElement):
+            class MittendurchmesserVon(Property):
+                def __init__(
+                    self,
+                    value: float,
+                    id_short: str = "MittendurchmesserVon",
+                    value_type: DataTypeDefXsd = float,
+                    value_id: Optional[Reference] = None,
+                    display_name: Optional[LangStringSet] = None,
+                    category: Optional[str] = None,
+                    description: Optional[LangStringSet] = None,
+                    semantic_id: Optional[Reference] = GlobalReference(
+                        key=(
+                            Key(
+                                type_=KeyTypes.GLOBAL_REFERENCE,
+                                value="https://admin-shell.io/kwh40/forestml40/Holzliste/0/1/Preismatrix/Preismatrixeintrag/MittendurchmesserVon",
+                            ),
+                        ),
+                        referred_semantic_id=None,
+                    ),
+                    qualifier: Iterable[Qualifier] = None,
+                    kind: ModelingKind = ModelingKind.INSTANCE,
+                    extension: Iterable[Extension] = (),
+                    supplemental_semantic_id: Iterable[Reference] = (),
+                    embedded_data_specifications: Iterable[
+                        EmbeddedDataSpecification
+                    ] = None,
+                ):
+                    if qualifier is None:
+                        qualifier = (
+                            Qualifier(
+                                type_="Cardinality",
+                                value_type=str,
+                                value="ZeroToOne",
+                                value_id=None,
+                                kind=QualifierKind.CONCEPT_QUALIFIER,
+                                semantic_id=None,
+                                supplemental_semantic_id=(),
+                            ),
+                        )
+
+                    if embedded_data_specifications is None:
+                        embedded_data_specifications = []
+
+                    super().__init__(
+                        value=value,
+                        id_short=id_short,
+                        value_type=value_type,
+                        value_id=value_id,
+                        display_name=display_name,
+                        category=category,
+                        description=description,
+                        semantic_id=semantic_id,
+                        qualifier=qualifier,
+                        kind=kind,
+                        extension=extension,
+                        supplemental_semantic_id=supplemental_semantic_id,
+                        embedded_data_specifications=embedded_data_specifications,
+                    )
+
+            class MittendurchmesserBis(Property):
+                def __init__(
+                    self,
+                    value: float,
+                    id_short: str = "MittendurchmesserBis",
+                    value_type: DataTypeDefXsd = float,
+                    value_id: Optional[Reference] = None,
+                    display_name: Optional[LangStringSet] = None,
+                    category: Optional[str] = None,
+                    description: Optional[LangStringSet] = None,
+                    semantic_id: Optional[Reference] = GlobalReference(
+                        key=(
+                            Key(
+                                type_=KeyTypes.GLOBAL_REFERENCE,
+                                value="https://admin-shell.io/kwh40/forestml40/Holzliste/0/1/Preismatrix/Preismatrixeintrag/MittendurchmesserBis",
+                            ),
+                        ),
+                        referred_semantic_id=None,
+                    ),
+                    qualifier: Iterable[Qualifier] = None,
+                    kind: ModelingKind = ModelingKind.INSTANCE,
+                    extension: Iterable[Extension] = (),
+                    supplemental_semantic_id: Iterable[Reference] = (),
+                    embedded_data_specifications: Iterable[
+                        EmbeddedDataSpecification
+                    ] = None,
+                ):
+                    if qualifier is None:
+                        qualifier = (
+                            Qualifier(
+                                type_="Cardinality",
+                                value_type=str,
+                                value="ZeroToOne",
+                                value_id=None,
+                                kind=QualifierKind.CONCEPT_QUALIFIER,
+                                semantic_id=None,
+                                supplemental_semantic_id=(),
+                            ),
+                        )
+
+                    if embedded_data_specifications is None:
+                        embedded_data_specifications = []
+
+                    super().__init__(
+                        value=value,
+                        id_short=id_short,
+                        value_type=value_type,
+                        value_id=value_id,
+                        display_name=display_name,
+                        category=category,
+                        description=description,
+                        semantic_id=semantic_id,
+                        qualifier=qualifier,
+                        kind=kind,
+                        extension=extension,
+                        supplemental_semantic_id=supplemental_semantic_id,
+                        embedded_data_specifications=embedded_data_specifications,
+                    )
+
+            class GueteklasseVon(Property):
+                def __init__(
+                    self,
+                    value: str,
+                    id_short: str = "GueteklasseVon",
+                    value_type: DataTypeDefXsd = str,
+                    value_id: Optional[Reference] = None,
+                    display_name: Optional[LangStringSet] = None,
+                    category: Optional[str] = None,
+                    description: Optional[LangStringSet] = None,
+                    semantic_id: Optional[Reference] = GlobalReference(
+                        key=(
+                            Key(
+                                type_=KeyTypes.GLOBAL_REFERENCE,
+                                value="https://admin-shell.io/kwh40/forestml40/Holzliste/0/1/Preismatrix/Preismatrixeintrag/GueteklasseVon",
+                            ),
+                        ),
+                        referred_semantic_id=None,
+                    ),
+                    qualifier: Iterable[Qualifier] = None,
+                    kind: ModelingKind = ModelingKind.INSTANCE,
+                    extension: Iterable[Extension] = (),
+                    supplemental_semantic_id: Iterable[Reference] = (),
+                    embedded_data_specifications: Iterable[
+                        EmbeddedDataSpecification
+                    ] = None,
+                ):
+                    if qualifier is None:
+                        qualifier = (
+                            Qualifier(
+                                type_="Cardinality",
+                                value_type=str,
+                                value="One",
+                                value_id=None,
+                                kind=QualifierKind.CONCEPT_QUALIFIER,
+                                semantic_id=None,
+                                supplemental_semantic_id=(),
+                            ),
+                        )
+
+                    if embedded_data_specifications is None:
+                        embedded_data_specifications = []
+
+                    super().__init__(
+                        value=value,
+                        id_short=id_short,
+                        value_type=value_type,
+                        value_id=value_id,
+                        display_name=display_name,
+                        category=category,
+                        description=description,
+                        semantic_id=semantic_id,
+                        qualifier=qualifier,
+                        kind=kind,
+                        extension=extension,
+                        supplemental_semantic_id=supplemental_semantic_id,
+                        embedded_data_specifications=embedded_data_specifications,
+                    )
+
+            class GueteklasseBis(Property):
+                def __init__(
+                    self,
+                    value: str,
+                    id_short: str = "GueteklasseBis",
+                    value_type: DataTypeDefXsd = str,
+                    value_id: Optional[Reference] = None,
+                    display_name: Optional[LangStringSet] = None,
+                    category: Optional[str] = None,
+                    description: Optional[LangStringSet] = None,
+                    semantic_id: Optional[Reference] = GlobalReference(
+                        key=(
+                            Key(
+                                type_=KeyTypes.GLOBAL_REFERENCE,
+                                value="https://admin-shell.io/kwh40/forestml40/Holzliste/0/1/Preismatrix/Preismatrixeintrag/GueteklasseBis",
+                            ),
+                        ),
+                        referred_semantic_id=None,
+                    ),
+                    qualifier: Iterable[Qualifier] = None,
+                    kind: ModelingKind = ModelingKind.INSTANCE,
+                    extension: Iterable[Extension] = (),
+                    supplemental_semantic_id: Iterable[Reference] = (),
+                    embedded_data_specifications: Iterable[
+                        EmbeddedDataSpecification
+                    ] = None,
+                ):
+                    if qualifier is None:
+                        qualifier = (
+                            Qualifier(
+                                type_="Cardinality",
+                                value_type=str,
+                                value="One",
+                                value_id=None,
+                                kind=QualifierKind.CONCEPT_QUALIFIER,
+                                semantic_id=None,
+                                supplemental_semantic_id=(),
+                            ),
+                        )
+
+                    if embedded_data_specifications is None:
+                        embedded_data_specifications = []
+
+                    super().__init__(
+                        value=value,
+                        id_short=id_short,
+                        value_type=value_type,
+                        value_id=value_id,
+                        display_name=display_name,
+                        category=category,
+                        description=description,
+                        semantic_id=semantic_id,
+                        qualifier=qualifier,
+                        kind=kind,
+                        extension=extension,
+                        supplemental_semantic_id=supplemental_semantic_id,
+                        embedded_data_specifications=embedded_data_specifications,
+                    )
+
+            def __init__(
+                self,
+                preis: Union[float, Preis],
+                gueteklasseVon: Union[str, GueteklasseVon],
+                gueteklasseBis: Union[str, GueteklasseBis],
+                mittendurchmesserVon: Optional[
+                    Union[float, MittendurchmesserVon]
+                ] = None,
+                mittendurchmesserBis: Optional[
+                    Union[float, MittendurchmesserBis]
+                ] = None,
+                id_short: str = "Preismatrixeintrag",
+                display_name: Optional[LangStringSet] = None,
+                category: Optional[str] = None,
+                description: Optional[LangStringSet] = None,
+                semantic_id: Optional[Reference] = GlobalReference(
+                    key=(
+                        Key(
+                            type_=KeyTypes.GLOBAL_REFERENCE,
+                            value="https://admin-shell.io/kwh40/forestml40/Holzliste/0/1/Preismatrix/Preismatrixeintrag",
+                        ),
+                    ),
+                    referred_semantic_id=None,
+                ),
+                qualifier: Iterable[Qualifier] = None,
+                kind: ModelingKind = ModelingKind.INSTANCE,
+                extension: Iterable[Extension] = (),
+                supplemental_semantic_id: Iterable[Reference] = (),
+                embedded_data_specifications: Iterable[
+                    EmbeddedDataSpecification
+                ] = None,
+            ):
+                if qualifier is None:
+                    qualifier = (
+                        Qualifier(
+                            type_="Cardinality",
+                            value_type=str,
+                            value="ZeroToMany",
+                            value_id=None,
+                            kind=QualifierKind.CONCEPT_QUALIFIER,
+                            semantic_id=None,
+                            supplemental_semantic_id=(),
+                        ),
+                    )
+
+                if embedded_data_specifications is None:
+                    embedded_data_specifications = []
+
+                # Build a submodel element if a raw value was passed in the argument
+                if preis and not isinstance(preis, SubmodelElement):
+                    preis = self.Preis(preis)
+
+                # Build a submodel element if a raw value was passed in the argument
+                if mittendurchmesserVon and not isinstance(
+                    mittendurchmesserVon, SubmodelElement
+                ):
+                    mittendurchmesserVon = self.MittendurchmesserVon(
+                        mittendurchmesserVon
+                    )
+
+                # Build a submodel element if a raw value was passed in the argument
+                if mittendurchmesserBis and not isinstance(
+                    mittendurchmesserBis, SubmodelElement
+                ):
+                    mittendurchmesserBis = self.MittendurchmesserBis(
+                        mittendurchmesserBis
+                    )
+
+                # Build a submodel element if a raw value was passed in the argument
+                if gueteklasseVon and not isinstance(gueteklasseVon, SubmodelElement):
+                    gueteklasseVon = self.GueteklasseVon(gueteklasseVon)
+
+                # Build a submodel element if a raw value was passed in the argument
+                if gueteklasseBis and not isinstance(gueteklasseBis, SubmodelElement):
+                    gueteklasseBis = self.GueteklasseBis(gueteklasseBis)
+
+                # Add all passed/initialized submodel elements to a single list
+                embedded_submodel_elements = []
+                for se_arg in [
+                    preis,
+                    mittendurchmesserVon,
+                    mittendurchmesserBis,
+                    gueteklasseVon,
+                    gueteklasseBis,
+                ]:
+                    if se_arg is None:
+                        continue
+                    elif isinstance(se_arg, SubmodelElement):
+                        embedded_submodel_elements.append(se_arg)
+                    elif isinstance(se_arg, Iterable):
+                        for n, element in enumerate(se_arg):
+                            element.id_short = f"{element.id_short}{n}"
+                            embedded_submodel_elements.append(element)
+                    else:
+                        raise TypeError(
+                            f"Unknown type of value in submodel_element_args: {type(se_arg)}"
+                        )
+
+                super().__init__(
+                    value=embedded_submodel_elements,
+                    id_short=id_short,
+                    display_name=display_name,
+                    category=category,
+                    description=description,
+                    semantic_id=semantic_id,
+                    qualifier=qualifier,
+                    kind=kind,
+                    extension=extension,
+                    supplemental_semantic_id=supplemental_semantic_id,
+                    embedded_data_specifications=embedded_data_specifications,
+                )
+
+        def __init__(
+            self,
+            preismatrixeintrag: Optional[Iterable[Preismatrixeintrag]] = None,
+            id_short: str = "Preismatrix",
+            type_value_list_element: SubmodelElement = SubmodelElementCollection,
+            semantic_id_list_element: Optional[Reference] = None,
+            value_type_list_element: Optional[DataTypeDefXsd] = None,
+            order_relevant: bool = True,
+            display_name: Optional[LangStringSet] = None,
+            category: Optional[str] = None,
+            description: Optional[LangStringSet] = None,
+            semantic_id: Optional[Reference] = GlobalReference(
+                key=(
+                    Key(
+                        type_=KeyTypes.GLOBAL_REFERENCE,
+                        value="https://admin-shell.io/kwh40/forestml40/Holzliste/0/1/Preismatrix",
+                    ),
+                ),
+                referred_semantic_id=None,
+            ),
+            qualifier: Iterable[Qualifier] = None,
+            kind: ModelingKind = ModelingKind.INSTANCE,
+            extension: Iterable[Extension] = (),
+            supplemental_semantic_id: Iterable[Reference] = (),
+            embedded_data_specifications: Iterable[EmbeddedDataSpecification] = None,
+        ):
+            if qualifier is None:
+                qualifier = (
+                    Qualifier(
+                        type_="Cardinality",
+                        value_type=str,
+                        value="ZeroToOne",
+                        value_id=None,
+                        kind=QualifierKind.CONCEPT_QUALIFIER,
+                        semantic_id=None,
+                        supplemental_semantic_id=(),
+                    ),
+                )
+
+            if embedded_data_specifications is None:
+                embedded_data_specifications = []
+
+            # Add all passed/initialized submodel elements to a single list
+            embedded_submodel_elements = []
+            for se_arg in [preismatrixeintrag]:
+                if se_arg is None:
+                    continue
+                elif isinstance(se_arg, SubmodelElement):
+                    embedded_submodel_elements.append(se_arg)
+                elif isinstance(se_arg, Iterable):
+                    for n, element in enumerate(se_arg):
+                        element.id_short = f"{element.id_short}{n}"
+                        embedded_submodel_elements.append(element)
+                else:
+                    raise TypeError(
+                        f"Unknown type of value in submodel_element_args: {type(se_arg)}"
+                    )
+
+            super().__init__(
+                value=embedded_submodel_elements,
+                id_short=id_short,
+                type_value_list_element=type_value_list_element,
+                semantic_id_list_element=semantic_id_list_element,
+                value_type_list_element=value_type_list_element,
+                order_relevant=order_relevant,
+                display_name=display_name,
+                category=category,
+                description=description,
+                semantic_id=semantic_id,
+                qualifier=qualifier,
+                kind=kind,
+                extension=extension,
+                supplemental_semantic_id=supplemental_semantic_id,
+                embedded_data_specifications=embedded_data_specifications,
+            )
+
+    def __init__(
+        self,
+        id_: str,
+        kopfdaten: Kopfdaten,
+        sortimentstyp: Union[str, Sortimentstyp],
+        sorte: Union[str, Sorte],
+        holzart: Union[str, Holzart],
+        polterListe: PolterListe,
+        preismatrix: Optional[Preismatrix] = None,
+        id_short: str = "Holzliste",
+        display_name: Optional[LangStringSet] = None,
+        category: Optional[str] = None,
+        description: Optional[LangStringSet] = None,
+        administration: Optional[AdministrativeInformation] = None,
+        semantic_id: Optional[Reference] = GlobalReference(
+            key=(
+                Key(
+                    type_=KeyTypes.GLOBAL_REFERENCE,
+                    value="https://admin-shell.io/kwh40/forestml40/Holzliste/0/1",
+                ),
+            ),
+            referred_semantic_id=None,
+        ),
+        qualifier: Iterable[Qualifier] = None,
+        kind: ModelingKind = ModelingKind.INSTANCE,
+        extension: Iterable[Extension] = (),
+        supplemental_semantic_id: Iterable[Reference] = (),
+        embedded_data_specifications: Iterable[EmbeddedDataSpecification] = None,
+    ):
+        if qualifier is None:
+            qualifier = ()
+
+        if embedded_data_specifications is None:
+            embedded_data_specifications = []
+
+        # Build a submodel element if a raw value was passed in the argument
+        if sortimentstyp and not isinstance(sortimentstyp, SubmodelElement):
+            sortimentstyp = self.Sortimentstyp(sortimentstyp)
+
+        # Build a submodel element if a raw value was passed in the argument
+        if sorte and not isinstance(sorte, SubmodelElement):
+            sorte = self.Sorte(sorte)
+
+        # Build a submodel element if a raw value was passed in the argument
+        if holzart and not isinstance(holzart, SubmodelElement):
             holzart = self.Holzart(holzart)
 
+        # Add all passed/initialized submodel elements to a single list
         embedded_submodel_elements = []
-        for se_arg in [kopfdaten, sortimentstyp, sorte, holzart, polterListe]:
+        for se_arg in [
+            kopfdaten,
+            sortimentstyp,
+            sorte,
+            holzart,
+            polterListe,
+            preismatrix,
+        ]:
             if se_arg is None:
                 continue
             elif isinstance(se_arg, SubmodelElement):
@@ -13872,6 +14289,7 @@ class Holzpreisbereiche(Submodel):
             if quelle and not isinstance(quelle, SubmodelElement):
                 quelle = self.Quelle(quelle)
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [
                 baumart,
@@ -13942,6 +14360,7 @@ class Holzpreisbereiche(Submodel):
         if embedded_data_specifications is None:
             embedded_data_specifications = []
 
+        # Add all passed/initialized submodel elements to a single list
         embedded_submodel_elements = []
         for se_arg in [holzpreisbereich]:
             if se_arg is None:
@@ -14837,10 +15256,11 @@ class Verkaufslos(Submodel):
                 if embedded_data_specifications is None:
                     embedded_data_specifications = []
 
-                # Build a submodel element if a raw value was passed in the argument
+                # Build a list of submodel elements if a raw values were passed in the argument
                 if telefon and all([isinstance(i, str) for i in telefon]):
                     telefon = [self.Telefon(i) for i in telefon]
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [telefon]:
                     if se_arg is None:
@@ -14978,10 +15398,11 @@ class Verkaufslos(Submodel):
                 if embedded_data_specifications is None:
                     embedded_data_specifications = []
 
-                # Build a submodel element if a raw value was passed in the argument
+                # Build a list of submodel elements if a raw values were passed in the argument
                 if email and all([isinstance(i, str) for i in email]):
                     email = [self.Email(i) for i in email]
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [email]:
                     if se_arg is None:
@@ -15102,6 +15523,7 @@ class Verkaufslos(Submodel):
             if emailadressen and not isinstance(emailadressen, SubmodelElement):
                 emailadressen = self.Emailadressen(emailadressen)
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [
                 firmenname,
@@ -15299,7 +15721,7 @@ class Verkaufslos(Submodel):
             if embedded_data_specifications is None:
                 embedded_data_specifications = []
 
-            # Build a submodel element if a raw value was passed in the argument
+            # Build a list of submodel elements if a raw values were passed in the argument
             if holzlisteReference and all(
                 [isinstance(i, Reference) for i in holzlisteReference]
             ):
@@ -15307,6 +15729,7 @@ class Verkaufslos(Submodel):
                     self.HolzlisteReference(i) for i in holzlisteReference
                 ]
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [holzlisteReference]:
                 if se_arg is None:
@@ -15551,7 +15974,7 @@ class Verkaufslos(Submodel):
                             Qualifier(
                                 type_="Cardinality",
                                 value_type=str,
-                                value="ZeroToOne",
+                                value="One",
                                 value_id=None,
                                 kind=QualifierKind.CONCEPT_QUALIFIER,
                                 semantic_id=None,
@@ -15610,7 +16033,7 @@ class Verkaufslos(Submodel):
                             Qualifier(
                                 type_="Cardinality",
                                 value_type=str,
-                                value="ZeroToOne",
+                                value="One",
                                 value_id=None,
                                 kind=QualifierKind.CONCEPT_QUALIFIER,
                                 semantic_id=None,
@@ -15640,14 +16063,14 @@ class Verkaufslos(Submodel):
             def __init__(
                 self,
                 preis: Union[float, Preis],
+                gueteklasseVon: Union[str, GueteklasseVon],
+                gueteklasseBis: Union[str, GueteklasseBis],
                 mittendurchmesserVon: Optional[
                     Union[float, MittendurchmesserVon]
                 ] = None,
                 mittendurchmesserBis: Optional[
                     Union[float, MittendurchmesserBis]
                 ] = None,
-                gueteklasseVon: Optional[Union[str, GueteklasseVon]] = None,
-                gueteklasseBis: Optional[Union[str, GueteklasseBis]] = None,
                 id_short: str = "Preismatrixeintrag",
                 display_name: Optional[LangStringSet] = None,
                 category: Optional[str] = None,
@@ -15713,6 +16136,7 @@ class Verkaufslos(Submodel):
                 if gueteklasseBis and not isinstance(gueteklasseBis, SubmodelElement):
                     gueteklasseBis = self.GueteklasseBis(gueteklasseBis)
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [
                     preis,
@@ -15790,6 +16214,7 @@ class Verkaufslos(Submodel):
             if embedded_data_specifications is None:
                 embedded_data_specifications = []
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [preismatrixeintrag]:
                 if se_arg is None:
@@ -15885,6 +16310,7 @@ class Verkaufslos(Submodel):
         if notiz and not isinstance(notiz, SubmodelElement):
             notiz = self.Notiz(notiz)
 
+        # Add all passed/initialized submodel elements to a single list
         embedded_submodel_elements = []
         for se_arg in [
             verkaufsstatus,
@@ -16339,9 +16765,9 @@ class Waldweg(Submodel):
                 class Crs(Property):
                     def __init__(
                         self,
-                        value: float,
+                        value: str,
                         id_short: str = "crs",
-                        value_type: DataTypeDefXsd = float,
+                        value_type: DataTypeDefXsd = str,
                         value_id: Optional[Reference] = None,
                         display_name: Optional[LangStringSet] = None,
                         category: Optional[str] = None,
@@ -16400,7 +16826,7 @@ class Waldweg(Submodel):
                     x: Optional[Union[float, X]] = None,
                     y: Optional[Union[float, Y]] = None,
                     alt: Optional[Union[float, Alt]] = None,
-                    crs: Optional[Union[float, Crs]] = None,
+                    crs: Optional[Union[str, Crs]] = None,
                     id_short: str = "Koordinate",
                     display_name: Optional[LangStringSet] = None,
                     category: Optional[str] = None,
@@ -16454,6 +16880,7 @@ class Waldweg(Submodel):
                     if crs and not isinstance(crs, SubmodelElement):
                         crs = self.Crs(crs)
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [x, y, alt, crs]:
                         if se_arg is None:
@@ -16587,6 +17014,7 @@ class Waldweg(Submodel):
                 if notiz and not isinstance(notiz, SubmodelElement):
                     notiz = self.Notiz(notiz)
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [koordinate, notiz]:
                     if se_arg is None:
@@ -16658,6 +17086,7 @@ class Waldweg(Submodel):
             if embedded_data_specifications is None:
                 embedded_data_specifications = []
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [standort]:
                 if se_arg is None:
@@ -16874,9 +17303,9 @@ class Waldweg(Submodel):
                 class Crs(Property):
                     def __init__(
                         self,
-                        value: float,
+                        value: str,
                         id_short: str = "crs",
-                        value_type: DataTypeDefXsd = float,
+                        value_type: DataTypeDefXsd = str,
                         value_id: Optional[Reference] = None,
                         display_name: Optional[LangStringSet] = None,
                         category: Optional[str] = None,
@@ -16935,7 +17364,7 @@ class Waldweg(Submodel):
                     x: Optional[Union[float, X]] = None,
                     y: Optional[Union[float, Y]] = None,
                     alt: Optional[Union[float, Alt]] = None,
-                    crs: Optional[Union[float, Crs]] = None,
+                    crs: Optional[Union[str, Crs]] = None,
                     id_short: str = "Koordinate",
                     display_name: Optional[LangStringSet] = None,
                     category: Optional[str] = None,
@@ -16989,6 +17418,7 @@ class Waldweg(Submodel):
                     if crs and not isinstance(crs, SubmodelElement):
                         crs = self.Crs(crs)
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [x, y, alt, crs]:
                         if se_arg is None:
@@ -17122,6 +17552,7 @@ class Waldweg(Submodel):
                 if notiz and not isinstance(notiz, SubmodelElement):
                     notiz = self.Notiz(notiz)
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [koordinate, notiz]:
                     if se_arg is None:
@@ -17193,6 +17624,7 @@ class Waldweg(Submodel):
             if embedded_data_specifications is None:
                 embedded_data_specifications = []
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [standort]:
                 if se_arg is None:
@@ -17279,6 +17711,7 @@ class Waldweg(Submodel):
         if breite and not isinstance(breite, SubmodelElement):
             breite = self.Breite(breite)
 
+        # Add all passed/initialized submodel elements to a single list
         embedded_submodel_elements = []
         for se_arg in [
             beschreibung,
@@ -17677,9 +18110,9 @@ class ZuFaellendeBaeume(Submodel):
                 class Crs(Property):
                     def __init__(
                         self,
-                        value: float,
+                        value: str,
                         id_short: str = "crs",
-                        value_type: DataTypeDefXsd = float,
+                        value_type: DataTypeDefXsd = str,
                         value_id: Optional[Reference] = None,
                         display_name: Optional[LangStringSet] = None,
                         category: Optional[str] = None,
@@ -17738,7 +18171,7 @@ class ZuFaellendeBaeume(Submodel):
                     x: Optional[Union[float, X]] = None,
                     y: Optional[Union[float, Y]] = None,
                     alt: Optional[Union[float, Alt]] = None,
-                    crs: Optional[Union[float, Crs]] = None,
+                    crs: Optional[Union[str, Crs]] = None,
                     id_short: str = "Koordinate",
                     display_name: Optional[LangStringSet] = None,
                     category: Optional[str] = None,
@@ -17792,6 +18225,7 @@ class ZuFaellendeBaeume(Submodel):
                     if crs and not isinstance(crs, SubmodelElement):
                         crs = self.Crs(crs)
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [x, y, alt, crs]:
                         if se_arg is None:
@@ -17865,6 +18299,7 @@ class ZuFaellendeBaeume(Submodel):
                 if embedded_data_specifications is None:
                     embedded_data_specifications = []
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [koordinate]:
                     if se_arg is None:
@@ -17936,6 +18371,7 @@ class ZuFaellendeBaeume(Submodel):
             if beschreibung and not isinstance(beschreibung, SubmodelElement):
                 beschreibung = self.Beschreibung(beschreibung)
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [name, beschreibung, koordinaten]:
                 if se_arg is None:
@@ -18147,9 +18583,9 @@ class ZuFaellendeBaeume(Submodel):
             class Crs(Property):
                 def __init__(
                     self,
-                    value: float,
+                    value: str,
                     id_short: str = "crs",
-                    value_type: DataTypeDefXsd = float,
+                    value_type: DataTypeDefXsd = str,
                     value_id: Optional[Reference] = None,
                     display_name: Optional[LangStringSet] = None,
                     category: Optional[str] = None,
@@ -18208,7 +18644,7 @@ class ZuFaellendeBaeume(Submodel):
                 x: Optional[Union[float, X]] = None,
                 y: Optional[Union[float, Y]] = None,
                 alt: Optional[Union[float, Alt]] = None,
-                crs: Optional[Union[float, Crs]] = None,
+                crs: Optional[Union[str, Crs]] = None,
                 id_short: str = "Koordinate",
                 display_name: Optional[LangStringSet] = None,
                 category: Optional[str] = None,
@@ -18262,6 +18698,7 @@ class ZuFaellendeBaeume(Submodel):
                 if crs and not isinstance(crs, SubmodelElement):
                     crs = self.Crs(crs)
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [x, y, alt, crs]:
                     if se_arg is None:
@@ -18393,6 +18830,7 @@ class ZuFaellendeBaeume(Submodel):
             if notiz and not isinstance(notiz, SubmodelElement):
                 notiz = self.Notiz(notiz)
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [koordinate, notiz]:
                 if se_arg is None:
@@ -18783,9 +19221,9 @@ class ZuFaellendeBaeume(Submodel):
                     class Crs(Property):
                         def __init__(
                             self,
-                            value: float,
+                            value: str,
                             id_short: str = "crs",
-                            value_type: DataTypeDefXsd = float,
+                            value_type: DataTypeDefXsd = str,
                             value_id: Optional[Reference] = None,
                             display_name: Optional[LangStringSet] = None,
                             category: Optional[str] = None,
@@ -18844,7 +19282,7 @@ class ZuFaellendeBaeume(Submodel):
                         x: Optional[Union[float, X]] = None,
                         y: Optional[Union[float, Y]] = None,
                         alt: Optional[Union[float, Alt]] = None,
-                        crs: Optional[Union[float, Crs]] = None,
+                        crs: Optional[Union[str, Crs]] = None,
                         id_short: str = "Koordinate",
                         display_name: Optional[LangStringSet] = None,
                         category: Optional[str] = None,
@@ -18898,6 +19336,7 @@ class ZuFaellendeBaeume(Submodel):
                         if crs and not isinstance(crs, SubmodelElement):
                             crs = self.Crs(crs)
 
+                        # Add all passed/initialized submodel elements to a single list
                         embedded_submodel_elements = []
                         for se_arg in [x, y, alt, crs]:
                             if se_arg is None:
@@ -19031,6 +19470,7 @@ class ZuFaellendeBaeume(Submodel):
                     if notiz and not isinstance(notiz, SubmodelElement):
                         notiz = self.Notiz(notiz)
 
+                    # Add all passed/initialized submodel elements to a single list
                     embedded_submodel_elements = []
                     for se_arg in [koordinate, notiz]:
                         if se_arg is None:
@@ -19115,6 +19555,7 @@ class ZuFaellendeBaeume(Submodel):
                 if baumart and not isinstance(baumart, SubmodelElement):
                     baumart = self.Baumart(baumart)
 
+                # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [hoehe, bhd, baumart, position]:
                     if se_arg is None:
@@ -19186,6 +19627,7 @@ class ZuFaellendeBaeume(Submodel):
             if embedded_data_specifications is None:
                 embedded_data_specifications = []
 
+            # Add all passed/initialized submodel elements to a single list
             embedded_submodel_elements = []
             for se_arg in [stehenderBaum]:
                 if se_arg is None:
@@ -19256,6 +19698,7 @@ class ZuFaellendeBaeume(Submodel):
         if beschreibung and not isinstance(beschreibung, SubmodelElement):
             beschreibung = self.Beschreibung(beschreibung)
 
+        # Add all passed/initialized submodel elements to a single list
         embedded_submodel_elements = []
         for se_arg in [beschreibung, umring, position, baumliste]:
             if se_arg is None: