diff --git a/demos/demo2/demo2_dzwald.py b/demos/demo2/demo2_dzwald.py
index 675907d166504ec0b3528f258d86d7238e41c341..50305af51703a1185497ffc894b3d6adafd4651b 100644
--- a/demos/demo2/demo2_dzwald.py
+++ b/demos/demo2/demo2_dzwald.py
@@ -5,14 +5,10 @@ from typing import List
 import basyx
 from basyx.aas import model
 from basyx.aas.adapter.json import json_serialization
-from s3i import IdentityProvider, TokenType, Directory
 import asyncio
 import logging
 import datetime
 
-import api
-import broker_api
-import helpers
 
 currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
 parentdir = os.path.dirname(currentdir)
@@ -33,14 +29,6 @@ forestmanager_hmi_id = "s3i:e8ef672c-109b-4c36-8999-f4ababa0bffc"
 forstify_hmi_id = "s3i:8a8ee1ab-63d2-42ea-92d1-1ae682a55e7a"
 
 
-def authenticate():
-    idp = IdentityProvider(
-        grant_type="client_credentials",
-        client_id=dzwald_id,
-        client_secret=dzwald_secret,
-    )
-    return idp
-
 
 def create_sortiment():
     sortiment = models.Sortiment(
@@ -440,41 +428,7 @@ def write_aas():
         json_serialization.write_aas_json_file(file, objstore)
 
 
-def main():
-    # obtain access token
-    idp = authenticate()
-    access_token = idp.get_token(TokenType.ACCESS_TOKEN)
-
-    # update policy for other things to read the S3I-Directory entry of your thing
-    # view helpers.py for a better insight
-    # function call is commented because it needs to be done a single time
-    s3i_dir = Directory("https://dir.s3i.vswf.dev/api/2/", access_token)
-    # helpers.grant_entry_read_permissions(s3i_dir, dzwald_id, [forestmanager_hmi_id, forstify_hmi_id])
-
-    # create AAS
-    aas, submodels = create_aas()
-
-    # update S3I-Directory entry to include a short description of your AAS
-    helpers.add_aas_to_dir_entry(aas, s3i_dir, dzwald_id)
-
-    # wrap them into a ModelProvider to expose an Interface of type 2
-    provider = api.ModelProvider(aas, submodels)
-
-    # now the REST API definded in DAAS-2 can be used
-    # the following example will print all submodel references to the console
-    # corrosponding to GetAllSubmodelReferences:
-    print(provider.getValue("/aas/submodels"))
-
-    # now create a server instance that will translate incoming S3I-B messages
-    # to methods exposed by the ModelProvider
-    loop = asyncio.get_event_loop()
-    server = broker_api.S3IBServer(access_token, provider, dzwald_id, loop)
-
-    try:
-        server.run()
-    except KeyboardInterrupt:
-        loop.stop()
-
 
 if __name__ == "__main__":
-    main()
+    write_aas()
+    # main()
diff --git a/demos/demo2/demo2_dzwald_example.json b/demos/demo2/demo2_dzwald_example.json
index b3849e7819a0039b06fa3fea475766e0d684653a..40a737e6bc80a07436ddb78e0293bcc8abe60ebb 100644
--- a/demos/demo2/demo2_dzwald_example.json
+++ b/demos/demo2/demo2_dzwald_example.json
@@ -313,7 +313,7 @@
                   },
                   "qualifiers": [
                     {
-                      "value": "One",
+                      "value": "ZeroToOne",
                       "kind": "ConceptQualifier",
                       "valueType": "xs:string",
                       "type": "Cardinality"
@@ -382,7 +382,7 @@
                   },
                   "qualifiers": [
                     {
-                      "value": "One",
+                      "value": "ZeroToOne",
                       "kind": "ConceptQualifier",
                       "valueType": "xs:string",
                       "type": "Cardinality"
@@ -405,7 +405,7 @@
                   },
                   "qualifiers": [
                     {
-                      "value": "One",
+                      "value": "ZeroToOne",
                       "kind": "ConceptQualifier",
                       "valueType": "xs:string",
                       "type": "Cardinality"
@@ -1957,6 +1957,14 @@
               }
             ]
           },
+          "qualifiers": [
+            {
+              "value": "ZeroToOne",
+              "kind": "ConceptQualifier",
+              "valueType": "xs:string",
+              "type": "Cardinality"
+            }
+          ],
           "value": [
             {
               "idShort": "Name",
@@ -2557,6 +2565,14 @@
               }
             ]
           },
+          "qualifiers": [
+            {
+              "value": "ZeroToOne",
+              "kind": "ConceptQualifier",
+              "valueType": "xs:string",
+              "type": "Cardinality"
+            }
+          ],
           "value": [
             {
               "idShort": "Name",
@@ -4408,7 +4424,7 @@
           },
           "qualifiers": [
             {
-              "value": "One",
+              "value": "ZeroToOne",
               "kind": "ConceptQualifier",
               "valueType": "xs:string",
               "type": "Cardinality"
@@ -4477,7 +4493,7 @@
           },
           "qualifiers": [
             {
-              "value": "One",
+              "value": "ZeroToOne",
               "kind": "ConceptQualifier",
               "valueType": "xs:string",
               "type": "Cardinality"
@@ -5677,7 +5693,7 @@
                   },
                   "qualifiers": [
                     {
-                      "value": "One",
+                      "value": "ZeroToOne",
                       "kind": "ConceptQualifier",
                       "valueType": "xs:string",
                       "type": "Cardinality"
@@ -5700,7 +5716,7 @@
                   },
                   "qualifiers": [
                     {
-                      "value": "One",
+                      "value": "ZeroToOne",
                       "kind": "ConceptQualifier",
                       "valueType": "xs:string",
                       "type": "Cardinality"
@@ -5708,6 +5724,50 @@
                   ],
                   "value": "in",
                   "valueType": "xs:string"
+                },
+                {
+                  "idShort": "Sortimentstyp",
+                  "modelType": "Property",
+                  "semanticId": {
+                    "type": "GlobalReference",
+                    "keys": [
+                      {
+                        "type": "GlobalReference",
+                        "value": "https://admin-shell.io/kwh40/forestml40/Holzliste/0/1/Preismatrix/Preismatrixeintrag/Sortimentstyp"
+                      }
+                    ]
+                  },
+                  "qualifiers": [
+                    {
+                      "value": "ZeroToOne",
+                      "kind": "ConceptQualifier",
+                      "valueType": "xs:string",
+                      "type": "Cardinality"
+                    }
+                  ],
+                  "valueType": "xs:string"
+                },
+                {
+                  "idShort": "Sorte",
+                  "modelType": "Property",
+                  "semanticId": {
+                    "type": "GlobalReference",
+                    "keys": [
+                      {
+                        "type": "GlobalReference",
+                        "value": "https://admin-shell.io/kwh40/forestml40/Holzliste/0/1/Preismatrix/Preismatrixeintrag/Sorte"
+                      }
+                    ]
+                  },
+                  "qualifiers": [
+                    {
+                      "value": "One",
+                      "kind": "ConceptQualifier",
+                      "valueType": "xs:string",
+                      "type": "Cardinality"
+                    }
+                  ],
+                  "valueType": "xs:string"
                 }
               ]
             },
@@ -5815,7 +5875,7 @@
                   },
                   "qualifiers": [
                     {
-                      "value": "One",
+                      "value": "ZeroToOne",
                       "kind": "ConceptQualifier",
                       "valueType": "xs:string",
                       "type": "Cardinality"
@@ -5838,7 +5898,7 @@
                   },
                   "qualifiers": [
                     {
-                      "value": "One",
+                      "value": "ZeroToOne",
                       "kind": "ConceptQualifier",
                       "valueType": "xs:string",
                       "type": "Cardinality"
@@ -5846,6 +5906,50 @@
                   ],
                   "value": "a",
                   "valueType": "xs:string"
+                },
+                {
+                  "idShort": "Sortimentstyp",
+                  "modelType": "Property",
+                  "semanticId": {
+                    "type": "GlobalReference",
+                    "keys": [
+                      {
+                        "type": "GlobalReference",
+                        "value": "https://admin-shell.io/kwh40/forestml40/Holzliste/0/1/Preismatrix/Preismatrixeintrag/Sortimentstyp"
+                      }
+                    ]
+                  },
+                  "qualifiers": [
+                    {
+                      "value": "ZeroToOne",
+                      "kind": "ConceptQualifier",
+                      "valueType": "xs:string",
+                      "type": "Cardinality"
+                    }
+                  ],
+                  "valueType": "xs:string"
+                },
+                {
+                  "idShort": "Sorte",
+                  "modelType": "Property",
+                  "semanticId": {
+                    "type": "GlobalReference",
+                    "keys": [
+                      {
+                        "type": "GlobalReference",
+                        "value": "https://admin-shell.io/kwh40/forestml40/Holzliste/0/1/Preismatrix/Preismatrixeintrag/Sorte"
+                      }
+                    ]
+                  },
+                  "qualifiers": [
+                    {
+                      "value": "One",
+                      "kind": "ConceptQualifier",
+                      "valueType": "xs:string",
+                      "type": "Cardinality"
+                    }
+                  ],
+                  "valueType": "xs:string"
                 }
               ]
             }
@@ -6791,7 +6895,7 @@
                   },
                   "qualifiers": [
                     {
-                      "value": "One",
+                      "value": "ZeroToOne",
                       "kind": "ConceptQualifier",
                       "valueType": "xs:string",
                       "type": "Cardinality"
@@ -6814,7 +6918,7 @@
                   },
                   "qualifiers": [
                     {
-                      "value": "One",
+                      "value": "ZeroToOne",
                       "kind": "ConceptQualifier",
                       "valueType": "xs:string",
                       "type": "Cardinality"
@@ -6822,6 +6926,50 @@
                   ],
                   "value": "in",
                   "valueType": "xs:string"
+                },
+                {
+                  "idShort": "Sortimentstyp",
+                  "modelType": "Property",
+                  "semanticId": {
+                    "type": "GlobalReference",
+                    "keys": [
+                      {
+                        "type": "GlobalReference",
+                        "value": "https://admin-shell.io/kwh40/forestml40/Verkaufslos/0/1/Preismatrix/Preismatrixeintrag/Sortimentstyp"
+                      }
+                    ]
+                  },
+                  "qualifiers": [
+                    {
+                      "value": "ZeroToOne",
+                      "kind": "ConceptQualifier",
+                      "valueType": "xs:string",
+                      "type": "Cardinality"
+                    }
+                  ],
+                  "valueType": "xs:string"
+                },
+                {
+                  "idShort": "Sorte",
+                  "modelType": "Property",
+                  "semanticId": {
+                    "type": "GlobalReference",
+                    "keys": [
+                      {
+                        "type": "GlobalReference",
+                        "value": "https://admin-shell.io/kwh40/forestml40/Verkaufslos/0/1/Preismatrix/Preismatrixeintrag/Sorte"
+                      }
+                    ]
+                  },
+                  "qualifiers": [
+                    {
+                      "value": "One",
+                      "kind": "ConceptQualifier",
+                      "valueType": "xs:string",
+                      "type": "Cardinality"
+                    }
+                  ],
+                  "valueType": "xs:string"
                 }
               ]
             },
@@ -6929,7 +7077,7 @@
                   },
                   "qualifiers": [
                     {
-                      "value": "One",
+                      "value": "ZeroToOne",
                       "kind": "ConceptQualifier",
                       "valueType": "xs:string",
                       "type": "Cardinality"
@@ -6952,7 +7100,7 @@
                   },
                   "qualifiers": [
                     {
-                      "value": "One",
+                      "value": "ZeroToOne",
                       "kind": "ConceptQualifier",
                       "valueType": "xs:string",
                       "type": "Cardinality"
@@ -6960,6 +7108,50 @@
                   ],
                   "value": "a",
                   "valueType": "xs:string"
+                },
+                {
+                  "idShort": "Sortimentstyp",
+                  "modelType": "Property",
+                  "semanticId": {
+                    "type": "GlobalReference",
+                    "keys": [
+                      {
+                        "type": "GlobalReference",
+                        "value": "https://admin-shell.io/kwh40/forestml40/Verkaufslos/0/1/Preismatrix/Preismatrixeintrag/Sortimentstyp"
+                      }
+                    ]
+                  },
+                  "qualifiers": [
+                    {
+                      "value": "ZeroToOne",
+                      "kind": "ConceptQualifier",
+                      "valueType": "xs:string",
+                      "type": "Cardinality"
+                    }
+                  ],
+                  "valueType": "xs:string"
+                },
+                {
+                  "idShort": "Sorte",
+                  "modelType": "Property",
+                  "semanticId": {
+                    "type": "GlobalReference",
+                    "keys": [
+                      {
+                        "type": "GlobalReference",
+                        "value": "https://admin-shell.io/kwh40/forestml40/Verkaufslos/0/1/Preismatrix/Preismatrixeintrag/Sorte"
+                      }
+                    ]
+                  },
+                  "qualifiers": [
+                    {
+                      "value": "One",
+                      "kind": "ConceptQualifier",
+                      "valueType": "xs:string",
+                      "type": "Cardinality"
+                    }
+                  ],
+                  "valueType": "xs:string"
                 }
               ]
             }
@@ -7490,6 +7682,14 @@
               }
             ]
           },
+          "qualifiers": [
+            {
+              "value": "ZeroToOne",
+              "kind": "ConceptQualifier",
+              "valueType": "xs:string",
+              "type": "Cardinality"
+            }
+          ],
           "value": [
             {
               "idShort": "Name",
diff --git a/model/configs.py b/model/configs.py
index 89a096c6420ebd366e06e89ebd1ffaeec3ce1bf3..44c7b25a2cafdcf330c268d2e21c54c8a431de73 100644
--- a/model/configs.py
+++ b/model/configs.py
@@ -82,6 +82,7 @@ STEHENDER_BAUM = "StehenderBaum"
 BHD = "bhd"
 HOEHE = "Hoehe"
 SORTIMENTSTYP = "Sortimentstyp"
+SORTIMENTSTYP_OPTIONAL = "Sortimentstyp"
 STEHENDER_BAUM_BAUMART = "StehenderBaumBaumart"
 
 BAUMART = "Baumart"
@@ -90,6 +91,7 @@ BAUMART = "Baumart"
 HOLZLISTE = "Holzliste"
 HOLZART = "Holzart"
 SORTE = "Sorte"
+SORTE_OPTIONAL = "Sorte"
 
 # Verkaufslos
 HOLZLISTEN = "Holzlisten"
@@ -210,34 +212,34 @@ KWARGS = {
         # ID_SHORT will be that of the provided KONTAKTROLLE
         # ID_SHORT: KONTAKT,
         DESCRIPTION: None,
-        SEMANTIC_ID: b4f_semantic_id_ref("Kontakt"),
+        SEMANTIC_ID: None,
         QUALIFIER: tuple([]),
     },
     FIRMENNAME: {
         ID_SHORT: FIRMENNAME,
         DESCRIPTION: None,
-        SEMANTIC_ID: eclass_semantic_id_ref("0173-1#02-AAW001#001"),
+        SEMANTIC_ID: None,
         VALUE_TYPE: str,
         QUALIFIER: tuple([optional_qualifier()]),
     },
     ANREDE: {
         ID_SHORT: ANREDE,
         DESCRIPTION: None,
-        SEMANTIC_ID: eclass_semantic_id_ref("0173-1#02-AAO208#003"),
+        SEMANTIC_ID: None,
         VALUE_TYPE: str,
         QUALIFIER: tuple([optional_qualifier()]),
     },
     VORNAME: {
         ID_SHORT: VORNAME,
         DESCRIPTION: None,
-        SEMANTIC_ID: eclass_semantic_id_ref("0173-1#02-AAO206#002"),
+        SEMANTIC_ID: None,
         VALUE_TYPE: str,
         QUALIFIER: tuple([optional_qualifier()]),
     },
     NACHNAME: {
         ID_SHORT: NACHNAME,
         DESCRIPTION: None,
-        SEMANTIC_ID: eclass_semantic_id_ref("0173-1#02-AAO205#002"),
+        SEMANTIC_ID: None,
         VALUE_TYPE: str,
         QUALIFIER: tuple([optional_qualifier()]),
     },
@@ -256,7 +258,7 @@ KWARGS = {
     TELEFON: {
         ID_SHORT: TELEFON,
         DESCRIPTION: None,
-        SEMANTIC_ID: eclass_semantic_id_ref("0173-1#02-AAO136#002"),
+        SEMANTIC_ID: None,
         VALUE_TYPE: str,
         QUALIFIER: tuple([iterable_optional_qualifier()]),
     },
@@ -268,7 +270,7 @@ KWARGS = {
     EMAIL: {
         ID_SHORT: EMAIL,
         DESCRIPTION: None,
-        SEMANTIC_ID: eclass_semantic_id_ref("0173-1#02-AAO198#002"),
+        SEMANTIC_ID: None,
         VALUE_TYPE: str,
         QUALIFIER: tuple([iterable_optional_qualifier()]),
     },
@@ -299,7 +301,7 @@ KWARGS = {
         ID_SHORT: UMRING,
         DESCRIPTION: None,
         SEMANTIC_ID: None,
-        QUALIFIER: tuple([]),
+        QUALIFIER: tuple([optional_qualifier()]),
     },
     NAME: {
         ID_SHORT: NAME,
@@ -463,19 +465,19 @@ KWARGS = {
     LIEFERANT: {
         ID_SHORT: LIEFERANT,
         DESCRIPTION: None,
-        SEMANTIC_ID: b4f_semantic_id_ref("Kontakt"),
+        SEMANTIC_ID: None,
         QUALIFIER: tuple([optional_qualifier()]),
     },
     KAEUFER: {
         ID_SHORT: KAEUFER,
         DESCRIPTION: None,
-        SEMANTIC_ID: b4f_semantic_id_ref("Kontakt"),
+        SEMANTIC_ID: None,
         QUALIFIER: tuple([optional_qualifier()]),
     },
     FUHRMANN: {
         ID_SHORT: FUHRMANN,
         DESCRIPTION: None,
-        SEMANTIC_ID: b4f_semantic_id_ref("Kontakt"),
+        SEMANTIC_ID: None,
         QUALIFIER: tuple([optional_qualifier()]),
     },
 
@@ -558,7 +560,7 @@ KWARGS = {
         ID_SHORT: POLTER_LISTE,
         DESCRIPTION: None,
         SEMANTIC_ID: None,
-        QUALIFIER: tuple([mandatory_qualifier()]),
+        QUALIFIER: tuple([optional_qualifier()]),
     },
     POLTER: {
         ID_SHORT: POLTER,
@@ -649,6 +651,13 @@ KWARGS = {
         VALUE_TYPE: str,
         QUALIFIER: tuple([mandatory_qualifier()]),
     },
+    SORTIMENTSTYP_OPTIONAL: {
+        ID_SHORT: SORTIMENTSTYP,
+        DESCRIPTION: None,
+        SEMANTIC_ID: None,
+        VALUE_TYPE: str,
+        QUALIFIER: tuple([optional_qualifier()]),
+    },
 
     # Holzliste
     HOLZLISTE: {
@@ -670,6 +679,13 @@ KWARGS = {
         VALUE_TYPE: str,
         QUALIFIER: tuple([mandatory_qualifier()]),
     },
+    SORTE_OPTIONAL: {
+        ID_SHORT: SORTE,
+        DESCRIPTION: None,
+        SEMANTIC_ID: None,
+        VALUE_TYPE: str,
+        QUALIFIER: tuple([mandatory_qualifier()]),
+    },
     HOLZPREISBEREICH_BAUMART: {
         ID_SHORT: BAUMART,
         DESCRIPTION: None,
@@ -807,14 +823,14 @@ KWARGS = {
         DESCRIPTION: None,
         SEMANTIC_ID: None,
         VALUE_TYPE: str,
-        QUALIFIER: tuple([mandatory_qualifier()]),
+        QUALIFIER: tuple([optional_qualifier()]),
     },
     GUETEKLASSE_BIS: {
         ID_SHORT: GUETEKLASSE_BIS,
         DESCRIPTION: None,
         SEMANTIC_ID: None,
         VALUE_TYPE: str,
-        QUALIFIER: tuple([mandatory_qualifier()]),
+        QUALIFIER: tuple([optional_qualifier()]),
     },
     LAENGE_VON: {
         ID_SHORT: LAENGE_VON,
diff --git a/model/generic_model.py b/model/generic_model.py
index cbb3f8ed6e3eb5c45fe42ce8e177b3b9feaf7f40..d41b97645090aac9a1cfb8a8e205dce3650ce57a 100644
--- a/model/generic_model.py
+++ b/model/generic_model.py
@@ -440,7 +440,7 @@ class Arbeitsauftrag(Submodel):
                             Qualifier(
                                 type_="Cardinality",
                                 value_type=str,
-                                value="One",
+                                value="ZeroToOne",
                                 value_id=None,
                                 kind=QualifierKind.CONCEPT_QUALIFIER,
                                 semantic_id=None,
@@ -617,7 +617,7 @@ class Arbeitsauftrag(Submodel):
                             Qualifier(
                                 type_="Cardinality",
                                 value_type=str,
-                                value="One",
+                                value="ZeroToOne",
                                 value_id=None,
                                 kind=QualifierKind.CONCEPT_QUALIFIER,
                                 semantic_id=None,
@@ -676,7 +676,7 @@ class Arbeitsauftrag(Submodel):
                             Qualifier(
                                 type_="Cardinality",
                                 value_type=str,
-                                value="One",
+                                value="ZeroToOne",
                                 value_id=None,
                                 kind=QualifierKind.CONCEPT_QUALIFIER,
                                 semantic_id=None,
@@ -2156,17 +2156,17 @@ class Arbeitsauftrag(Submodel):
             def __init__(
                 self,
                 nummer: Union[int, Nummer],
-                sortimentstyp: Union[str, Sortimentstyp],
                 sorte: Union[str, Sorte],
                 holzart: Union[str, Holzart],
-                gueteklasseVon: Union[str, GueteklasseVon],
-                gueteklasseBis: Union[str, GueteklasseBis],
                 laengeVon: Union[float, LaengeVon],
                 laengeBis: Union[float, LaengeBis],
                 mindestzopf: Union[float, Mindestzopf],
                 maxDurchmesser: Union[float, MaxDurchmesser],
                 laengenzugabe: Union[float, Laengenzugabe],
                 mengenschaetzung: Union[float, Mengenschaetzung],
+                sortimentstyp: Optional[Union[str, Sortimentstyp]] = None,
+                gueteklasseVon: Optional[Union[str, GueteklasseVon]] = None,
+                gueteklasseBis: Optional[Union[str, GueteklasseBis]] = None,
                 bemerkung: Optional[Union[str, Bemerkung]] = None,
                 ergebnis: Optional[Ergebnis] = None,
                 kaeufer: Optional[Kaeufer] = None,
@@ -5868,7 +5868,17 @@ class Beobachtung(Submodel):
             embedded_data_specifications: Iterable[EmbeddedDataSpecification] = None,
         ):
             if qualifier is None:
-                qualifier = ()
+                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 = []
@@ -6375,7 +6385,7 @@ class Beobachtung(Submodel):
         id_: str,
         name: Union[str, Name],
         beschreibung: Union[str, Beschreibung],
-        umring: Umring,
+        umring: Optional[Umring] = None,
         position: Optional[Position] = None,
         id_short: str = "Beobachtung",
         display_name: Optional[LangStringSet] = None,
@@ -6994,7 +7004,17 @@ class Bestandesdaten(Submodel):
             embedded_data_specifications: Iterable[EmbeddedDataSpecification] = None,
         ):
             if qualifier is None:
-                qualifier = ()
+                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 = []
@@ -8065,7 +8085,7 @@ class Bestandesdaten(Submodel):
     def __init__(
         self,
         id_: str,
-        umring: Umring,
+        umring: Optional[Umring] = None,
         waldbesitzer: Optional[Waldbesitzer] = None,
         baumarten: Optional[Union[Iterable[str], Baumarten]] = None,
         id_short: str = "Bestandesdaten",
@@ -11156,7 +11176,7 @@ class Holzliste(Submodel):
                     Qualifier(
                         type_="Cardinality",
                         value_type=str,
-                        value="One",
+                        value="ZeroToOne",
                         value_id=None,
                         kind=QualifierKind.CONCEPT_QUALIFIER,
                         semantic_id=None,
@@ -12031,7 +12051,7 @@ class Holzliste(Submodel):
                                         Qualifier(
                                             type_="Cardinality",
                                             value_type=str,
-                                            value="ZeroToOne",
+                                            value="One",
                                             value_id=None,
                                             kind=QualifierKind.CONCEPT_QUALIFIER,
                                             semantic_id=None,
@@ -12991,7 +13011,7 @@ class Holzliste(Submodel):
                     Qualifier(
                         type_="Cardinality",
                         value_type=str,
-                        value="One",
+                        value="ZeroToOne",
                         value_id=None,
                         kind=QualifierKind.CONCEPT_QUALIFIER,
                         semantic_id=None,
@@ -13247,7 +13267,7 @@ class Holzliste(Submodel):
                             Qualifier(
                                 type_="Cardinality",
                                 value_type=str,
-                                value="One",
+                                value="ZeroToOne",
                                 value_id=None,
                                 kind=QualifierKind.CONCEPT_QUALIFIER,
                                 semantic_id=None,
@@ -13300,6 +13320,124 @@ class Holzliste(Submodel):
                     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 Sortimentstyp(Property):
+                def __init__(
+                    self,
+                    value: str,
+                    id_short: str = "Sortimentstyp",
+                    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/Sortimentstyp",
+                            ),
+                        ),
+                        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 Sorte(Property):
+                def __init__(
+                    self,
+                    value: str,
+                    id_short: str = "Sorte",
+                    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/Sorte",
+                            ),
+                        ),
+                        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 = (
@@ -13336,14 +13474,16 @@ class Holzliste(Submodel):
             def __init__(
                 self,
                 preis: Union[float, Preis],
-                gueteklasseVon: Union[str, GueteklasseVon],
-                gueteklasseBis: Union[str, GueteklasseBis],
+                sorte: Union[str, Sorte],
                 mittendurchmesserVon: Optional[
                     Union[float, MittendurchmesserVon]
                 ] = None,
                 mittendurchmesserBis: Optional[
                     Union[float, MittendurchmesserBis]
                 ] = None,
+                gueteklasseVon: Optional[Union[str, GueteklasseVon]] = None,
+                gueteklasseBis: Optional[Union[str, GueteklasseBis]] = None,
+                sortimentstyp: Optional[Union[str, Sortimentstyp]] = None,
                 id_short: str = "Preismatrixeintrag",
                 display_name: Optional[LangStringSet] = None,
                 category: Optional[str] = None,
@@ -13409,6 +13549,14 @@ class Holzliste(Submodel):
                 if gueteklasseBis and not isinstance(gueteklasseBis, SubmodelElement):
                     gueteklasseBis = self.GueteklasseBis(gueteklasseBis)
 
+                # 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)
+
                 # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [
@@ -13417,6 +13565,8 @@ class Holzliste(Submodel):
                     mittendurchmesserBis,
                     gueteklasseVon,
                     gueteklasseBis,
+                    sortimentstyp,
+                    sorte,
                 ]:
                     if se_arg is None:
                         continue
@@ -13525,10 +13675,10 @@ class Holzliste(Submodel):
         self,
         id_: str,
         kopfdaten: Kopfdaten,
-        sortimentstyp: Union[str, Sortimentstyp],
         sorte: Union[str, Sorte],
         holzart: Union[str, Holzart],
-        polterListe: PolterListe,
+        sortimentstyp: Optional[Union[str, Sortimentstyp]] = None,
+        polterListe: Optional[PolterListe] = None,
         preismatrix: Optional[Preismatrix] = None,
         id_short: str = "Holzliste",
         display_name: Optional[LangStringSet] = None,
@@ -15974,7 +16124,7 @@ class Verkaufslos(Submodel):
                             Qualifier(
                                 type_="Cardinality",
                                 value_type=str,
-                                value="One",
+                                value="ZeroToOne",
                                 value_id=None,
                                 kind=QualifierKind.CONCEPT_QUALIFIER,
                                 semantic_id=None,
@@ -16027,6 +16177,124 @@ class Verkaufslos(Submodel):
                     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 Sortimentstyp(Property):
+                def __init__(
+                    self,
+                    value: str,
+                    id_short: str = "Sortimentstyp",
+                    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/Verkaufslos/0/1/Preismatrix/Preismatrixeintrag/Sortimentstyp",
+                            ),
+                        ),
+                        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 Sorte(Property):
+                def __init__(
+                    self,
+                    value: str,
+                    id_short: str = "Sorte",
+                    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/Verkaufslos/0/1/Preismatrix/Preismatrixeintrag/Sorte",
+                            ),
+                        ),
+                        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 = (
@@ -16063,14 +16331,16 @@ class Verkaufslos(Submodel):
             def __init__(
                 self,
                 preis: Union[float, Preis],
-                gueteklasseVon: Union[str, GueteklasseVon],
-                gueteklasseBis: Union[str, GueteklasseBis],
+                sorte: Union[str, Sorte],
                 mittendurchmesserVon: Optional[
                     Union[float, MittendurchmesserVon]
                 ] = None,
                 mittendurchmesserBis: Optional[
                     Union[float, MittendurchmesserBis]
                 ] = None,
+                gueteklasseVon: Optional[Union[str, GueteklasseVon]] = None,
+                gueteklasseBis: Optional[Union[str, GueteklasseBis]] = None,
+                sortimentstyp: Optional[Union[str, Sortimentstyp]] = None,
                 id_short: str = "Preismatrixeintrag",
                 display_name: Optional[LangStringSet] = None,
                 category: Optional[str] = None,
@@ -16136,6 +16406,14 @@ class Verkaufslos(Submodel):
                 if gueteklasseBis and not isinstance(gueteklasseBis, SubmodelElement):
                     gueteklasseBis = self.GueteklasseBis(gueteklasseBis)
 
+                # 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)
+
                 # Add all passed/initialized submodel elements to a single list
                 embedded_submodel_elements = []
                 for se_arg in [
@@ -16144,6 +16422,8 @@ class Verkaufslos(Submodel):
                     mittendurchmesserBis,
                     gueteklasseVon,
                     gueteklasseBis,
+                    sortimentstyp,
+                    sorte,
                 ]:
                     if se_arg is None:
                         continue
@@ -18358,7 +18638,17 @@ class ZuFaellendeBaeume(Submodel):
             embedded_data_specifications: Iterable[EmbeddedDataSpecification] = None,
         ):
             if qualifier is None:
-                qualifier = ()
+                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 = []
@@ -19665,7 +19955,7 @@ class ZuFaellendeBaeume(Submodel):
         self,
         id_: str,
         beschreibung: Union[str, Beschreibung],
-        umring: Umring,
+        umring: Optional[Umring] = None,
         position: Optional[Position] = None,
         baumliste: Optional[Baumliste] = None,
         id_short: str = "ZuFaellendeBaeume",
diff --git a/model/models.py b/model/models.py
index ca01fe1481048756ebcd65997204a1b40f2a85da..8d6947b870e4e9772c0433b2daf75a8f55484b09 100644
--- a/model/models.py
+++ b/model/models.py
@@ -117,7 +117,9 @@ class Preismatrixeintrag(SubmodelElementCollection):
                  mittendurchmesser_von: Optional[float] = None,
                  mittendurchmesser_bis: Optional[float] = None,
                  gueteklasse_von: Optional[enums.Gueteklasse] = enums.OptionalEnum,
-                 gueteklasse_bis: Optional[enums.Gueteklasse] = enums.OptionalEnum
+                 gueteklasse_bis: Optional[enums.Gueteklasse] = enums.OptionalEnum,
+                 sortimentstyp: Optional[enums.Sortimentstyp] = enums.OptionalEnum,
+                 sorte: Optional[enums.Sorte] = enums.OptionalEnum
                  ):
         super().__init__(**deepcopy(KWARGS[PREISMATRIXEINTRAG]))
         self.add_referable(Property(value=preis, **deepcopy(KWARGS[PREIS])))
@@ -125,6 +127,8 @@ class Preismatrixeintrag(SubmodelElementCollection):
         self.add_referable(Property(value=mittendurchmesser_bis, **deepcopy(KWARGS[MITTENDURCHMESSER_BIS])))
         self.add_referable(Property(value=gueteklasse_von.value, **deepcopy(KWARGS[GUETEKLASSE_VON_PREISMATRIX])))
         self.add_referable(Property(value=gueteklasse_bis.value, **deepcopy(KWARGS[GUETEKLASSE_BIS_PREISMATRIX])))
+        self.add_referable(Property(value=sortimentstyp.value, **deepcopy(KWARGS[SORTIMENTSTYP_OPTIONAL])))
+        self.add_referable(Property(value=sorte.value, **deepcopy(KWARGS[SORTE_OPTIONAL])))
 
 
 class Kopfdaten(SubmodelElementCollection):
diff --git a/modellierung/holzliste.puml b/modellierung/holzliste.puml
index a549c84c5240fda6a24cbb6b07e2ce6cd3fcc6f4..bf80956aa79cf3c747410abba6193d88d5cb8f73 100644
--- a/modellierung/holzliste.puml
+++ b/modellierung/holzliste.puml
@@ -59,7 +59,7 @@ class Beobachtung <<Submodel>>{
 
 class ZuFaellendeBaeume <<Submodel>>{
     Beschreibung: String [1]
-    Umring: SEC.Umring [1]
+    Umring: SEC.Umring [0..1]
     Position: SEC.Standort [0..1]
     Baumliste: SEList.SEC.StehenderBaum [0..*]
 }