diff --git a/.github/.wordlist.txt b/.github/.wordlist.txt
index 18c1581..2061c3a 100644
--- a/.github/.wordlist.txt
+++ b/.github/.wordlist.txt
@@ -125,6 +125,7 @@
 BallastConfiguration
 BarrierControl
 BasicCHIPRegression
+BasicInformation
 baudrate
 BD
 BDX
diff --git a/.github/workflows/zap_regeneration.yaml b/.github/workflows/zap_regeneration.yaml
index 106911c..b329059 100644
--- a/.github/workflows/zap_regeneration.yaml
+++ b/.github/workflows/zap_regeneration.yaml
@@ -28,7 +28,7 @@
 
         runs-on: ubuntu-20.04
         container:
-            image: connectedhomeip/chip-build:0.6.22
+            image: connectedhomeip/chip-build:0.6.23
         defaults:
             run:
                 shell: sh
diff --git a/.github/workflows/zap_templates.yaml b/.github/workflows/zap_templates.yaml
index e9c5b14..d6367a9 100644
--- a/.github/workflows/zap_templates.yaml
+++ b/.github/workflows/zap_templates.yaml
@@ -29,7 +29,7 @@
 
         runs-on: ubuntu-20.04
         container:
-            image: connectedhomeip/chip-build:0.6.22
+            image: connectedhomeip/chip-build:0.6.23
         defaults:
             run:
                 shell: sh
diff --git a/docs/guides/access-control-guide.md b/docs/guides/access-control-guide.md
index 8d81b32..53275f6 100644
--- a/docs/guides/access-control-guide.md
+++ b/docs/guides/access-control-guide.md
@@ -395,7 +395,7 @@
 -   Clusters.Descriptor.id
 -   Clusters.Binding.id
 -   Clusters.AccessControl.id
--   Clusters.Basic.id
+-   Clusters.BasicInformation.id
 
 ### Examples
 
diff --git a/docs/guides/python_chip_controller_building.md b/docs/guides/python_chip_controller_building.md
index 2d6ad82..661072f 100644
--- a/docs/guides/python_chip_controller_building.md
+++ b/docs/guides/python_chip_controller_building.md
@@ -287,24 +287,25 @@
 
 ### Step 7: Read basic information out of the accessory.
 
-Every Matter accessory device supports a Basic Cluster, which maintains
-collection of attributes that a controller can obtain from a device, such as the
-vendor name, the product name, or software version. Use `zclread` command to
-read those values from the device:
+Every Matter accessory device supports a Basic Information Cluster, which
+maintains collection of attributes that a controller can obtain from a device,
+such as the vendor name, the product name, or software version. Use `zclread`
+command to read those values from the device:
 
 ```
-chip-device-ctrl > zclread Basic VendorName 1234 1 0
-chip-device-ctrl > zclread Basic ProductName 1234 1 0
-chip-device-ctrl > zclread Basic SoftwareVersion 1234 1 0
+chip-device-ctrl > zclread BasicInformation VendorName 1234 1 0
+chip-device-ctrl > zclread BasicInformation ProductName 1234 1 0
+chip-device-ctrl > zclread BasicInformation SoftwareVersion 1234 1 0
 ```
 
 **REPL Command:**
-`await devCtrl.ReadAttribute(1234, [(1, Clusters.Basic.Attributes.VendorName)])`
+`await devCtrl.ReadAttribute(1234, [(1, Clusters.BasicInformation.Attributes.VendorName)])`
 
-> Use the `zcl ? Basic` command to list all available commands for Basic
-> Cluster.
+> Use the `zcl ? BasicInformation` command to list all available commands for
+> Basic Information Cluster.
 >
-> In REPL, you can type `Clusters.Basic.Attributes.` and then use the TAB key.
+> In REPL, you can type `Clusters.BasicInformation.Attributes.` and then use the
+> TAB key.
 
 <hr>
 
@@ -524,7 +525,7 @@
 ApplicationLauncher
 AudioOutput
 BarrierControl
-Basic
+BasicInformation
 Binding
 BridgedDeviceBasic
 ColorControl
@@ -567,10 +568,11 @@
 
 ### `zcl ? <Cluster>`
 
-List available commands in cluster. For example, for _Basic_ cluster:
+List available commands in cluster. For example, for _Basic Information_
+cluster:
 
 ```
-chip-device-ctrl > zcl ? Basic
+chip-device-ctrl > zcl ? BasicInformation
 DataModelRevision
 VendorName
 VendorID
@@ -600,7 +602,7 @@
 Read the value of ZCL attribute. For example:
 
 ```
-chip-device-ctrl > zclread Basic VendorName 1234 1 0
+chip-device-ctrl > zclread BasicInformation VendorName 1234 1 0
 ```
 
 **REPL Commands**
@@ -608,7 +610,7 @@
 ```python
 # devCtrl.ReadAttribute(<nodeid>, [(<endpoint id>, Clusters.<cluster>.Attributes.<attribute>)])
 # e.g.
-await devCtrl.ReadAttribute(1234, [(1, Clusters.Basic.Attributes.VendorName)])
+await devCtrl.ReadAttribute(1234, [(1, Clusters.BasicInformation.Attributes.VendorName)])
 ```
 
 ### `zclwrite <cluster> <attribute> <nodeid> <endpoint> <groupid> <value>`
diff --git a/docs/guides/repl/Matter_REPL_Intro.ipynb b/docs/guides/repl/Matter_REPL_Intro.ipynb
index 2960cba..69e0a6c 100644
--- a/docs/guides/repl/Matter_REPL_Intro.ipynb
+++ b/docs/guides/repl/Matter_REPL_Intro.ipynb
@@ -559,10 +559,10 @@
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">    e.g.</span>                                      <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">        </span><span style=\"color: #bf7fbf; text-decoration-color: #bf7fbf; font-weight: bold\">ReadAttribute</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">(</span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">1</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">, </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">[</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">1</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">]</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">)</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> -- case </span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">4</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span>   <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">above.</span>                                        <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
-       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">        </span><span style=\"color: #bf7fbf; text-decoration-color: #bf7fbf; font-weight: bold\">ReadAttribute</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">(</span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">1</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">, </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">[</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> Clusters.Basic </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">]</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">)</span> <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
+       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">        </span><span style=\"color: #bf7fbf; text-decoration-color: #bf7fbf; font-weight: bold\">ReadAttribute</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">(</span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">1</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">, </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">[</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> Clusters.BasicInformation </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">]</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">)</span> <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">-- case </span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">5</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> above.</span>                              <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">        </span><span style=\"color: #bf7fbf; text-decoration-color: #bf7fbf; font-weight: bold\">ReadAttribute</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">(</span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">1</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">, </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">[</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">(</span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">1</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">, </span>               <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
-       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">Clusters.Basic.Attributes.Location </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">]</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">)</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> -- </span>    <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
+       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">Clusters.BasicInformation.Attributes.Location </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">]</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">)</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> -- </span>    <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">case </span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">1</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> above.</span>                                 <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                                                                           <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">returnClusterObject: This returns the data as</span> <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
@@ -616,10 +616,10 @@
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                                                                           <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">e.g.</span>                                          <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">    </span><span style=\"color: #bf7fbf; text-decoration-color: #bf7fbf; font-weight: bold\">ReadEvent</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">(</span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">1</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">, </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">[</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">1</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">]</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">)</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> -- case </span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">4</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> above.</span>     <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
-       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">    </span><span style=\"color: #bf7fbf; text-decoration-color: #bf7fbf; font-weight: bold\">ReadEvent</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">(</span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">1</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">, </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">[</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> Clusters.Basic </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">]</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">)</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> -- case</span> <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
+       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">    </span><span style=\"color: #bf7fbf; text-decoration-color: #bf7fbf; font-weight: bold\">ReadEvent</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">(</span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">1</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">, </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">[</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> Clusters.BasicInformation </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">]</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">)</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> -- case</span> <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">5</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> above.</span>                                      <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">    </span><span style=\"color: #bf7fbf; text-decoration-color: #bf7fbf; font-weight: bold\">ReadEvent</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">(</span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">1</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">, </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">[</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">(</span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">1</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">, </span>                       <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
-       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">Clusters.Basic.Events.Location </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">]</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">)</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> -- case </span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">1</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span> <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
+       "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">Clusters.BasicInformation.Events.Location </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">]</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f; font-weight: bold\">)</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> -- case </span><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf; font-weight: bold\">1</span><span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\"> </span> <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">above.</span>                                        <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                                                                           <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
        "<span style=\"color: #000080; text-decoration-color: #000080\">│</span>                                             <span style=\"color: #7f7f7f; text-decoration-color: #7f7f7f\">reportInterval: A tuple of two int-s for </span>     <span style=\"color: #000080; text-decoration-color: #000080\">│</span>\n",
@@ -782,10 +782,10 @@
        "\u001b[34m│\u001b[0m                                             \u001b[2m    e.g.\u001b[0m                                      \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[2m        \u001b[0m\u001b[1;2;35mReadAttribute\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- case \u001b[0m\u001b[1;2;36m4\u001b[0m\u001b[2m \u001b[0m   \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[2mabove.\u001b[0m                                        \u001b[34m│\u001b[0m\n",
-       "\u001b[34m│\u001b[0m                                             \u001b[2m        \u001b[0m\u001b[1;2;35mReadAttribute\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m Clusters.Basic \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m \u001b[34m│\u001b[0m\n",
+       "\u001b[34m│\u001b[0m                                             \u001b[2m        \u001b[0m\u001b[1;2;35mReadAttribute\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m Clusters.BasicInformation \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[2m-- case \u001b[0m\u001b[1;2;36m5\u001b[0m\u001b[2m above.\u001b[0m                              \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[2m        \u001b[0m\u001b[1;2;35mReadAttribute\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m               \u001b[34m│\u001b[0m\n",
-       "\u001b[34m│\u001b[0m                                             \u001b[2mClusters.Basic.Attributes.Location \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- \u001b[0m    \u001b[34m│\u001b[0m\n",
+       "\u001b[34m│\u001b[0m                                             \u001b[2mClusters.BasicInformation.Attributes.Location \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- \u001b[0m    \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[2mcase \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m above.\u001b[0m                                 \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                                                                           \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[2mreturnClusterObject: This returns the data as\u001b[0m \u001b[34m│\u001b[0m\n",
@@ -839,10 +839,10 @@
        "\u001b[34m│\u001b[0m                                                                                           \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[2me.g.\u001b[0m                                          \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[2m    \u001b[0m\u001b[1;2;35mReadEvent\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- case \u001b[0m\u001b[1;2;36m4\u001b[0m\u001b[2m above.\u001b[0m     \u001b[34m│\u001b[0m\n",
-       "\u001b[34m│\u001b[0m                                             \u001b[2m    \u001b[0m\u001b[1;2;35mReadEvent\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m Clusters.Basic \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- case\u001b[0m \u001b[34m│\u001b[0m\n",
+       "\u001b[34m│\u001b[0m                                             \u001b[2m    \u001b[0m\u001b[1;2;35mReadEvent\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m Clusters.BasicInformation \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- case\u001b[0m \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[1;2;36m5\u001b[0m\u001b[2m above.\u001b[0m                                      \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[2m    \u001b[0m\u001b[1;2;35mReadEvent\u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m\u001b[1;2m[\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m(\u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m, \u001b[0m                       \u001b[34m│\u001b[0m\n",
-       "\u001b[34m│\u001b[0m                                             \u001b[2mClusters.Basic.Events.Location \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- case \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m \u001b[0m \u001b[34m│\u001b[0m\n",
+       "\u001b[34m│\u001b[0m                                             \u001b[2mClusters.BasicInformation.Events.Location \u001b[0m\u001b[1;2m]\u001b[0m\u001b[2m \u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m -- case \u001b[0m\u001b[1;2;36m1\u001b[0m\u001b[2m \u001b[0m \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[2mabove.\u001b[0m                                        \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                                                                           \u001b[34m│\u001b[0m\n",
        "\u001b[34m│\u001b[0m                                             \u001b[2mreportInterval: A tuple of two int-s for \u001b[0m     \u001b[34m│\u001b[0m\n",
diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
index 7de2619..e5781c2 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
@@ -567,7 +567,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -3921,7 +3921,7 @@
     callback attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
index ed35bec..cd24d15 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 87,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -18,17 +18,17 @@
   "package": [
     {
       "pathRelativity": "relativeToZap",
+      "path": "../../../src/app/zap-templates/app-templates.json",
+      "type": "gen-templates-json",
+      "version": "chip-v1"
+    },
+    {
+      "pathRelativity": "relativeToZap",
       "path": "../../../src/app/zap-templates/zcl/zcl-with-test-extensions.json",
       "type": "zcl-properties",
       "category": "matter",
       "version": 1,
       "description": "Matter SDK ZCL data with some extensions"
-    },
-    {
-      "pathRelativity": "relativeToZap",
-      "path": "../../../src/app/zap-templates/app-templates.json",
-      "type": "gen-templates-json",
-      "version": "chip-v1"
     }
   ],
   "endpointTypes": [
@@ -1139,10 +1139,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1165,10 +1165,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -10395,10 +10395,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -10421,10 +10421,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
@@ -21701,10 +21701,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -21727,10 +21727,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
@@ -24740,6 +24740,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 61442
     }
-  ],
-  "log": []
+  ]
 }
\ No newline at end of file
diff --git a/examples/all-clusters-app/esp32/main/CMakeLists.txt b/examples/all-clusters-app/esp32/main/CMakeLists.txt
index 3293a83..ee4b063 100644
--- a/examples/all-clusters-app/esp32/main/CMakeLists.txt
+++ b/examples/all-clusters-app/esp32/main/CMakeLists.txt
@@ -78,7 +78,7 @@
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/switch-server"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/general-diagnostics-server"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/group-key-mgmt-server"
-                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic"
+                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic-information"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/bindings"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/diagnostic-logs-server"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/door-lock-server"
diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
index 225bc9b..288a32d 100644
--- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
+++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
@@ -510,7 +510,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -3310,7 +3310,7 @@
     callback attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap
index c79516f..775df03 100644
--- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap
+++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 87,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -18,17 +18,17 @@
   "package": [
     {
       "pathRelativity": "relativeToZap",
-      "path": "../../../src/app/zap-templates/app-templates.json",
-      "type": "gen-templates-json",
-      "version": "chip-v1"
-    },
-    {
-      "pathRelativity": "relativeToZap",
       "path": "../../../src/app/zap-templates/zcl/zcl.json",
       "type": "zcl-properties",
       "category": "matter",
       "version": 1,
       "description": "Matter SDK ZCL data"
+    },
+    {
+      "pathRelativity": "relativeToZap",
+      "path": "../../../src/app/zap-templates/app-templates.json",
+      "type": "gen-templates-json",
+      "version": "chip-v1"
     }
   ],
   "endpointTypes": [
@@ -1139,10 +1139,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1165,10 +1165,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -10245,10 +10245,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -10271,10 +10271,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
@@ -21477,10 +21477,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -21503,10 +21503,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
@@ -24516,6 +24516,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 61442
     }
-  ],
-  "log": []
+  ]
 }
\ No newline at end of file
diff --git a/examples/all-clusters-minimal-app/esp32/main/CMakeLists.txt b/examples/all-clusters-minimal-app/esp32/main/CMakeLists.txt
index 6b0dc3f..c0fafc5 100644
--- a/examples/all-clusters-minimal-app/esp32/main/CMakeLists.txt
+++ b/examples/all-clusters-minimal-app/esp32/main/CMakeLists.txt
@@ -75,7 +75,7 @@
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/switch-server"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/general-diagnostics-server"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/group-key-mgmt-server"
-                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic"
+                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic-information"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/bindings"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/diagnostic-logs-server"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/door-lock-server"
diff --git a/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/clusterclient/BasicClientFragment.kt b/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/clusterclient/BasicClientFragment.kt
index 28b59ce..37c7fa7 100644
--- a/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/clusterclient/BasicClientFragment.kt
+++ b/examples/android/CHIPTool/app/src/main/java/com/google/chip/chiptool/clusterclient/BasicClientFragment.kt
@@ -10,7 +10,7 @@
 import androidx.fragment.app.Fragment
 import androidx.lifecycle.lifecycleScope
 import chip.devicecontroller.ChipClusters
-import chip.devicecontroller.ChipClusters.BasicCluster
+import chip.devicecontroller.ChipClusters.BasicInformationCluster
 import chip.devicecontroller.ChipDeviceController
 import com.google.chip.chiptool.ChipClient
 import com.google.chip.chiptool.GenericChipDeviceListener
@@ -179,7 +179,7 @@
   }
 
   private suspend fun sendReadVendorIDAttribute() {
-    getBasicClusterForDevice().readVendorIDAttribute(object : ChipClusters.BasicCluster.VendorIDAttributeCallback {
+    getBasicClusterForDevice().readVendorIDAttribute(object : ChipClusters.BasicInformationCluster.VendorIDAttributeCallback {
       override fun onSuccess(value: Int) {
         Log.i(TAG,"[Read Success] VendorID: $value")
         showMessage("[Read Success] VendorID: $value")
@@ -461,8 +461,8 @@
     }
   }
 
-  private suspend fun getBasicClusterForDevice(): BasicCluster {
-    return BasicCluster(
+  private suspend fun getBasicClusterForDevice(): BasicInformationCluster {
+    return BasicInformationCluster(
       ChipClient.getConnectedDevicePointer(requireContext(), addressUpdateFragment.deviceId), ENDPOINT
     )
   }
diff --git a/examples/bridge-app/bridge-common/bridge-app.matter b/examples/bridge-app/bridge-common/bridge-app.matter
index 1d162d6..7a6bea2 100644
--- a/examples/bridge-app/bridge-common/bridge-app.matter
+++ b/examples/bridge-app/bridge-common/bridge-app.matter
@@ -451,7 +451,7 @@
   command InstantAction(InstantActionRequest): DefaultSuccess = 0;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -1481,7 +1481,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/bridge-app/bridge-common/bridge-app.zap b/examples/bridge-app/bridge-common/bridge-app.zap
index c8ea2b9..47d9102 100644
--- a/examples/bridge-app/bridge-common/bridge-app.zap
+++ b/examples/bridge-app/bridge-common/bridge-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -447,10 +447,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -489,10 +489,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6471,7 +6471,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 1,
               "storageOption": "RAM",
               "singleton": 0,
@@ -6745,10 +6745,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -6771,10 +6771,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
diff --git a/examples/bridge-app/esp32/main/CMakeLists.txt b/examples/bridge-app/esp32/main/CMakeLists.txt
index 9ed6f0f..6dee91a 100644
--- a/examples/bridge-app/esp32/main/CMakeLists.txt
+++ b/examples/bridge-app/esp32/main/CMakeLists.txt
@@ -28,7 +28,7 @@
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/reporting"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/access-control-server"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/administrator-commissioning-server"
-                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic"
+                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic-information"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/bridged-device-basic-information-server"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/level-control"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/identify-server"
diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter
index 8d429ea..4dd2570 100644
--- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter
+++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.matter
@@ -347,7 +347,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1324,7 +1324,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap
index 47e3750..edf180b 100644
--- a/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap
+++ b/examples/chef/devices/noip_rootnode_dimmablelight_bCwGYSDpoe.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6413,7 +6413,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 1,
               "storageOption": "RAM",
               "singleton": 0,
@@ -7292,6 +7292,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 257
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter
index 574d439..8ea6225 100644
--- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter
+++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter
@@ -352,7 +352,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -1400,7 +1400,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap
index dedd809..f4cd517 100644
--- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap
+++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1133,10 +1133,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1159,10 +1159,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6573,7 +6573,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 1,
               "storageOption": "RAM",
               "singleton": 0,
@@ -8098,6 +8098,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 268
     }
-  ],
-  "log": []
+  ]
 }
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter
index 855cea4..7515f90 100644
--- a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter
+++ b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.matter
@@ -198,7 +198,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1062,7 +1062,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap
index 9e29e9e..2ff3308 100644
--- a/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap
+++ b/examples/chef/devices/rootnode_contactsensor_lFAGG1bfRO.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6120,6 +6120,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 21
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter
index 3a49ba7..220c349 100644
--- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter
+++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.matter
@@ -347,7 +347,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1208,7 +1208,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap
index bc11f60..0642130 100644
--- a/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap
+++ b/examples/chef/devices/rootnode_dimmablelight_bCwGYSDpoe.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6413,7 +6413,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 1,
               "storageOption": "RAM",
               "singleton": 0,
@@ -7292,6 +7292,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 257
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
index a7215a3..fc1f5da 100644
--- a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
+++ b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
@@ -198,7 +198,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1447,7 +1447,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap
index 688b51a..68cde1f 100644
--- a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap
+++ b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6413,7 +6413,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 0,
               "storageOption": "RAM",
               "singleton": 0,
@@ -8992,6 +8992,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 10
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter
index 0c2da0d..774e706 100644
--- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter
+++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter
@@ -347,7 +347,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1463,7 +1463,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap
index 6654567..e0eae00 100644
--- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap
+++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6413,7 +6413,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 1,
               "storageOption": "RAM",
               "singleton": 0,
@@ -8410,6 +8410,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 269
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter
index b015773..59b42de 100644
--- a/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter
+++ b/examples/chef/devices/rootnode_fan_7N2TobIlOX.matter
@@ -191,7 +191,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -1117,7 +1117,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap b/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap
index b1ad604..55cde99 100644
--- a/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap
+++ b/examples/chef/devices/rootnode_fan_7N2TobIlOX.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1133,10 +1133,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1159,10 +1159,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6316,6 +6316,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 43
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter
index 71251a9..665d072 100644
--- a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter
+++ b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.matter
@@ -211,7 +211,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1074,7 +1074,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap
index c02cddf..08e484e 100644
--- a/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap
+++ b/examples/chef/devices/rootnode_flowsensor_1zVxHedlaV.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6168,6 +6168,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 774
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter
index c2f732c..eee4e47 100644
--- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter
+++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter
@@ -340,7 +340,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1316,7 +1316,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap
index 5eed8a8..9fd12c9 100644
--- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap
+++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6345,7 +6345,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 0,
               "storageOption": "RAM",
               "singleton": 0,
@@ -7471,7 +7471,7 @@
               "code": 50,
               "mfgCode": null,
               "side": "server",
-              "type": "utc",
+              "type": "epoch_s",
               "included": 0,
               "storageOption": "RAM",
               "singleton": 0,
@@ -7988,6 +7988,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 768
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter
index 2465a58..4f0c7c0 100644
--- a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter
+++ b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.matter
@@ -211,7 +211,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1074,7 +1074,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap
index 5401943..b40907a 100644
--- a/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap
+++ b/examples/chef/devices/rootnode_humiditysensor_Xyj4gda6Hb.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6168,6 +6168,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 775
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter
index 6dbbbc8..993e09d 100644
--- a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter
+++ b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.matter
@@ -211,7 +211,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1078,7 +1078,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap
index 7a42a45..a8960bd 100644
--- a/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap
+++ b/examples/chef/devices/rootnode_lightsensor_lZQycTFcJK.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6184,6 +6184,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 262
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter
index 43f0dc4..aecd711 100644
--- a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter
+++ b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.matter
@@ -211,7 +211,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1073,7 +1073,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap
index 3413421..c6ff45d 100644
--- a/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap
+++ b/examples/chef/devices/rootnode_occupancysensor_iHyVgifZuo.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6296,6 +6296,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 263
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter
index 0cb0145..45a58c4 100644
--- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter
+++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.matter
@@ -347,7 +347,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1198,7 +1198,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap
index 2b9c494..db66e16 100644
--- a/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap
+++ b/examples/chef/devices/rootnode_onofflight_bbs1b7IaOV.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6413,7 +6413,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 1,
               "storageOption": "RAM",
               "singleton": 0,
@@ -7292,6 +7292,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 256
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter
index d82e6d9..d6420b0 100644
--- a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter
+++ b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.matter
@@ -290,7 +290,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1141,7 +1141,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap
index ee7c5ff..7b63664 100644
--- a/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap
+++ b/examples/chef/devices/rootnode_onofflightswitch_FsPlMr090Q.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6413,7 +6413,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 0,
               "storageOption": "RAM",
               "singleton": 0,
@@ -7292,6 +7292,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 259
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter
index 90161aa..5558267 100644
--- a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter
+++ b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.matter
@@ -248,7 +248,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1099,7 +1099,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap
index 9b09c58..896114c 100644
--- a/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap
+++ b/examples/chef/devices/rootnode_onoffpluginunit_Wtf8ss5EBY.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6413,7 +6413,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 0,
               "storageOption": "RAM",
               "singleton": 0,
@@ -6968,6 +6968,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 266
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter
index 8d42299..c6ebe07 100644
--- a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter
+++ b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.matter
@@ -216,7 +216,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1083,7 +1083,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap
index 7d48e7f..5862b26 100644
--- a/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap
+++ b/examples/chef/devices/rootnode_pressuresensor_s0qC9wLH4k.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6248,6 +6248,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 773
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter
index 4bd96a0..218f76f 100644
--- a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter
+++ b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.matter
@@ -338,7 +338,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1189,7 +1189,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap
index 0512c45..ff9e37a 100644
--- a/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap
+++ b/examples/chef/devices/rootnode_speaker_RpzeXdimqA.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -5845,7 +5845,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 1,
               "storageOption": "RAM",
               "singleton": 0,
@@ -6400,6 +6400,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 34
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter
index 01536ea..614cce0 100644
--- a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter
+++ b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.matter
@@ -211,7 +211,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1073,7 +1073,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap
index 324c56e..1fc5fd0 100644
--- a/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap
+++ b/examples/chef/devices/rootnode_temperaturesensor_Qy1zkNW7c3.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6168,6 +6168,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 770
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter
index dcec562..99cef50 100644
--- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter
+++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter
@@ -198,7 +198,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1211,7 +1211,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap
index d0278af..ecc339f 100644
--- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap
+++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -7059,7 +7059,7 @@
               "code": 50,
               "mfgCode": null,
               "side": "server",
-              "type": "utc",
+              "type": "epoch_s",
               "included": 0,
               "storageOption": "RAM",
               "singleton": 0,
@@ -7648,6 +7648,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 769
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter
index f61138c..637104a 100644
--- a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter
+++ b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.matter
@@ -198,7 +198,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   critical event StartUp = 0 {
     INT32U softwareVersion = 0;
   }
@@ -1191,7 +1191,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap
index 70eba61..b2e73a9 100644
--- a/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap
+++ b/examples/chef/devices/rootnode_windowcovering_RLCxaGi9Yx.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 82,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1085,10 +1085,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1111,10 +1111,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6850,6 +6850,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 514
     }
-  ],
-  "log": []
-}
+  ]
+}
\ No newline at end of file
diff --git a/examples/chef/sample_app_util/test_files/sample_zap_file.zap b/examples/chef/sample_app_util/test_files/sample_zap_file.zap
index 0d24e4a..4ae4707 100644
--- a/examples/chef/sample_app_util/test_files/sample_zap_file.zap
+++ b/examples/chef/sample_app_util/test_files/sample_zap_file.zap
@@ -1140,7 +1140,7 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
           "define": "BASIC_CLUSTER",
@@ -1167,7 +1167,7 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
           "define": "BASIC_CLUSTER",
@@ -6590,7 +6590,7 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
           "define": "BASIC_CLUSTER",
@@ -6617,7 +6617,7 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
           "define": "BASIC_CLUSTER",
diff --git a/examples/chef/sample_app_util/test_files/sample_zap_file_hashmeta.yaml b/examples/chef/sample_app_util/test_files/sample_zap_file_hashmeta.yaml
index b42a98e..bb39542 100644
--- a/examples/chef/sample_app_util/test_files/sample_zap_file_hashmeta.yaml
+++ b/examples/chef/sample_app_util/test_files/sample_zap_file_hashmeta.yaml
@@ -10,7 +10,7 @@
             AdministratorCommissioning/60:
                 attributes:
                     FeatureMap/65532: '0'
-            Basic/40:
+            BasicInformation/40:
                 attributes:
                     FeatureMap/65532: '0'
             Descriptor/29:
diff --git a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter
index 10d4a96..07f78d8 100644
--- a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter
+++ b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.matter
@@ -193,7 +193,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -1284,7 +1284,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap
index 56dd9d1..bac7da6 100644
--- a/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap
+++ b/examples/contact-sensor-app/contact-sensor-common/contact-sensor-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1133,10 +1133,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1159,10 +1159,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6389,7 +6389,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 1,
               "storageOption": "RAM",
               "singleton": 0,
@@ -6923,10 +6923,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -6949,10 +6949,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
diff --git a/examples/dynamic-bridge-app/bridge-common/bridge-app.matter b/examples/dynamic-bridge-app/bridge-common/bridge-app.matter
index 1d162d6..7a6bea2 100644
--- a/examples/dynamic-bridge-app/bridge-common/bridge-app.matter
+++ b/examples/dynamic-bridge-app/bridge-common/bridge-app.matter
@@ -451,7 +451,7 @@
   command InstantAction(InstantActionRequest): DefaultSuccess = 0;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -1481,7 +1481,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/dynamic-bridge-app/bridge-common/bridge-app.zap b/examples/dynamic-bridge-app/bridge-common/bridge-app.zap
index c8ea2b9..47d9102 100644
--- a/examples/dynamic-bridge-app/bridge-common/bridge-app.zap
+++ b/examples/dynamic-bridge-app/bridge-common/bridge-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -447,10 +447,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -489,10 +489,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6471,7 +6471,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 1,
               "storageOption": "RAM",
               "singleton": 0,
@@ -6745,10 +6745,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -6771,10 +6771,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
diff --git a/examples/light-switch-app/esp32/main/CMakeLists.txt b/examples/light-switch-app/esp32/main/CMakeLists.txt
index 5d4e4db..bca86c5 100644
--- a/examples/light-switch-app/esp32/main/CMakeLists.txt
+++ b/examples/light-switch-app/esp32/main/CMakeLists.txt
@@ -36,7 +36,7 @@
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/reporting"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/access-control-server"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/administrator-commissioning-server"
-                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic"
+                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic-information"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/bindings"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/descriptor"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/diagnostic-logs-server"
diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.matter b/examples/light-switch-app/light-switch-common/light-switch-app.matter
index 176bb91..f6d8f6b 100644
--- a/examples/light-switch-app/light-switch-common/light-switch-app.matter
+++ b/examples/light-switch-app/light-switch-common/light-switch-app.matter
@@ -395,7 +395,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -1748,7 +1748,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.zap b/examples/light-switch-app/light-switch-common/light-switch-app.zap
index d28695f..3559d6a 100644
--- a/examples/light-switch-app/light-switch-common/light-switch-app.zap
+++ b/examples/light-switch-app/light-switch-common/light-switch-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1181,10 +1181,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1207,10 +1207,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6435,7 +6435,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 1,
               "storageOption": "RAM",
               "singleton": 0,
@@ -6857,10 +6857,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -6883,10 +6883,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
diff --git a/examples/lighting-app/esp32/main/CMakeLists.txt b/examples/lighting-app/esp32/main/CMakeLists.txt
index 1e25058..7b2f185 100644
--- a/examples/lighting-app/esp32/main/CMakeLists.txt
+++ b/examples/lighting-app/esp32/main/CMakeLists.txt
@@ -40,7 +40,7 @@
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/reporting"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/access-control-server"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/administrator-commissioning-server"
-                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic"
+                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic-information"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/bindings"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/descriptor"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/diagnostic-logs-server"
diff --git a/examples/lighting-app/infineon/cyw30739/src/ZclCallbacks.cpp b/examples/lighting-app/infineon/cyw30739/src/ZclCallbacks.cpp
index ba9eb40..fc07d13 100644
--- a/examples/lighting-app/infineon/cyw30739/src/ZclCallbacks.cpp
+++ b/examples/lighting-app/infineon/cyw30739/src/ZclCallbacks.cpp
@@ -26,7 +26,7 @@
 using namespace chip::app::Clusters;
 using namespace chip::DeviceLayer;
 
-void emberAfBasicClusterInitCallback(EndpointId endpoint)
+void emberAfBasicInformationClusterInitCallback(EndpointId endpoint)
 {
     uint16_t year;
     uint8_t month;
@@ -37,7 +37,7 @@
     {
         snprintf(cString, sizeof(cString), "%04u%02u%02u", year, month, dayOfMonth);
     }
-    Basic::Attributes::ManufacturingDate::Set(endpoint, CharSpan(cString));
+    BasicInformation::Attributes::ManufacturingDate::Set(endpoint, CharSpan(cString));
 }
 
 void MatterPostAttributeChangeCallback(const app::ConcreteAttributePath & attributePath, uint8_t type, uint16_t size,
diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter
index c834980..2c2635d 100644
--- a/examples/lighting-app/lighting-common/lighting-app.matter
+++ b/examples/lighting-app/lighting-common/lighting-app.matter
@@ -351,7 +351,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -1735,7 +1735,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/lighting-app/lighting-common/lighting-app.zap b/examples/lighting-app/lighting-common/lighting-app.zap
index d42c364..5a366ae 100644
--- a/examples/lighting-app/lighting-common/lighting-app.zap
+++ b/examples/lighting-app/lighting-common/lighting-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1133,10 +1133,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1159,10 +1159,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6261,7 +6261,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 1,
               "storageOption": "RAM",
               "singleton": 0,
@@ -6583,10 +6583,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -6609,10 +6609,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
diff --git a/examples/lighting-app/nxp/zap/lighting-on-off.matter b/examples/lighting-app/nxp/zap/lighting-on-off.matter
index a26c5db..af2b51c 100644
--- a/examples/lighting-app/nxp/zap/lighting-on-off.matter
+++ b/examples/lighting-app/nxp/zap/lighting-on-off.matter
@@ -348,7 +348,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -1211,7 +1211,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/lighting-app/nxp/zap/lighting-on-off.zap b/examples/lighting-app/nxp/zap/lighting-on-off.zap
index 5f82ebb..edbc585 100644
--- a/examples/lighting-app/nxp/zap/lighting-on-off.zap
+++ b/examples/lighting-app/nxp/zap/lighting-on-off.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1149,10 +1149,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1175,10 +1175,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6760,7 +6760,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 1,
               "storageOption": "RAM",
               "singleton": 0,
@@ -7294,10 +7294,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -7320,10 +7320,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
diff --git a/examples/lock-app/esp32/main/CMakeLists.txt b/examples/lock-app/esp32/main/CMakeLists.txt
index 2ba9539..1bf3401 100644
--- a/examples/lock-app/esp32/main/CMakeLists.txt
+++ b/examples/lock-app/esp32/main/CMakeLists.txt
@@ -46,7 +46,7 @@
                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/reporting"
                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/access-control-server"
                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/administrator-commissioning-server"
-                     "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic"
+                     "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic-information"
                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/bindings"
                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/descriptor"
                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/fixed-label-server"
@@ -161,7 +161,7 @@
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/reporting"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/access-control-server"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/administrator-commissioning-server"
-                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic"
+                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic-information"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/bindings"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/descriptor"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/diagnostic-logs-server"
diff --git a/examples/lock-app/infineon/cyw30739/src/ZclCallbacks.cpp b/examples/lock-app/infineon/cyw30739/src/ZclCallbacks.cpp
index d092def..1607c9e 100644
--- a/examples/lock-app/infineon/cyw30739/src/ZclCallbacks.cpp
+++ b/examples/lock-app/infineon/cyw30739/src/ZclCallbacks.cpp
@@ -27,7 +27,7 @@
 using namespace chip::app::Clusters;
 using namespace chip::DeviceLayer;
 
-void emberAfBasicClusterInitCallback(EndpointId endpoint)
+void emberAfBasicInformationClusterInitCallback(EndpointId endpoint)
 {
     uint16_t year;
     uint8_t month;
@@ -38,7 +38,7 @@
     {
         snprintf(cString, sizeof(cString), "%04u%02u%02u", year, month, dayOfMonth);
     }
-    Basic::Attributes::ManufacturingDate::Set(endpoint, CharSpan(cString));
+    BasicInformation::Attributes::ManufacturingDate::Set(endpoint, CharSpan(cString));
 }
 
 void MatterPostAttributeChangeCallback(const chip::app::ConcreteAttributePath & attributePath, uint8_t type, uint16_t size,
diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter
index dd2071e..f325a5b 100644
--- a/examples/lock-app/lock-common/lock-app.matter
+++ b/examples/lock-app/lock-common/lock-app.matter
@@ -168,7 +168,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -1891,7 +1891,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/lock-app/lock-common/lock-app.zap b/examples/lock-app/lock-common/lock-app.zap
index 0b66ed6..a4ab26a 100644
--- a/examples/lock-app/lock-common/lock-app.zap
+++ b/examples/lock-app/lock-common/lock-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -881,10 +881,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -907,10 +907,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6199,10 +6199,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -6225,10 +6225,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
diff --git a/examples/log-source-app/log-source-common/log-source-app.zap b/examples/log-source-app/log-source-common/log-source-app.zap
index ba9ef1e..20f81f4 100644
--- a/examples/log-source-app/log-source-common/log-source-app.zap
+++ b/examples/log-source-app/log-source-common/log-source-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -883,10 +883,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -909,10 +909,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
diff --git a/examples/ota-provider-app/esp32/main/CMakeLists.txt b/examples/ota-provider-app/esp32/main/CMakeLists.txt
index e5a6cf7..01b8c67 100644
--- a/examples/ota-provider-app/esp32/main/CMakeLists.txt
+++ b/examples/ota-provider-app/esp32/main/CMakeLists.txt
@@ -31,7 +31,7 @@
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/reporting"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/access-control-server"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/administrator-commissioning-server"
-                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic"
+                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic-information"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/bindings"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/descriptor"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/diagnostic-logs-server"
diff --git a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter
index 892c5c6..d7326bb 100644
--- a/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter
+++ b/examples/ota-provider-app/ota-provider-common/ota-provider-app.matter
@@ -138,7 +138,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -813,7 +813,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap b/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap
index f317dbe..d49c800 100644
--- a/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap
+++ b/examples/ota-provider-app/ota-provider-common/ota-provider-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -901,10 +901,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -927,10 +927,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
diff --git a/examples/ota-requestor-app/esp32/main/CMakeLists.txt b/examples/ota-requestor-app/esp32/main/CMakeLists.txt
index c711b84..bcb8d19 100644
--- a/examples/ota-requestor-app/esp32/main/CMakeLists.txt
+++ b/examples/ota-requestor-app/esp32/main/CMakeLists.txt
@@ -36,7 +36,7 @@
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/reporting"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/access-control-server"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/administrator-commissioning-server"
-                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic"
+                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic-information"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/bindings"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/descriptor"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/diagnostic-logs-server"
diff --git a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter
index 52ef6e1..5e7c219 100644
--- a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter
+++ b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.matter
@@ -251,7 +251,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -1004,7 +1004,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap
index 06cdae7..34fd76c 100644
--- a/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap
+++ b/examples/ota-requestor-app/ota-requestor-common/ota-requestor-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1079,10 +1079,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1105,10 +1105,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6293,7 +6293,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 1,
               "storageOption": "RAM",
               "singleton": 0,
diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter
index c2fa5f0..7f0d172 100644
--- a/examples/placeholder/linux/apps/app1/config.matter
+++ b/examples/placeholder/linux/apps/app1/config.matter
@@ -510,7 +510,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -2681,7 +2681,7 @@
     callback attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
@@ -3098,7 +3098,7 @@
     ram      attribute clusterRevision default = 5;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/placeholder/linux/apps/app1/config.zap b/examples/placeholder/linux/apps/app1/config.zap
index 18b4834..b19559d 100644
--- a/examples/placeholder/linux/apps/app1/config.zap
+++ b/examples/placeholder/linux/apps/app1/config.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -533,10 +533,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -559,10 +559,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -7627,10 +7627,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -7653,10 +7653,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -8015,6 +8015,74 @@
           ]
         },
         {
+          "name": "Fixed Label",
+          "code": 64,
+          "mfgCode": null,
+          "define": "FIXED_LABEL_CLUSTER",
+          "side": "client",
+          "enabled": 1,
+          "attributes": [
+            {
+              "name": "ClusterRevision",
+              "code": 65533,
+              "mfgCode": null,
+              "side": "client",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "1",
+              "reportable": 1,
+              "minInterval": 0,
+              "maxInterval": 65344,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "Fixed Label",
+          "code": 64,
+          "mfgCode": null,
+          "define": "FIXED_LABEL_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "attributes": [
+            {
+              "name": "label list",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 0,
+              "maxInterval": 65344,
+              "reportableChange": 0
+            },
+            {
+              "name": "ClusterRevision",
+              "code": 65533,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "1",
+              "reportable": 1,
+              "minInterval": 0,
+              "maxInterval": 65344,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
           "name": "Color Control",
           "code": 768,
           "mfgCode": null,
@@ -8235,90 +8303,6 @@
               "reportableChange": 0
             }
           ]
-        },
-        {
-          "name": "Fixed Label",
-          "code": 64,
-          "mfgCode": null,
-          "define": "FIXED_LABEL_CLUSTER",
-          "side": "client",
-          "enabled": 1,
-          "attributes": [
-            {
-              "name": "LabelList",
-              "code": 0,
-              "mfgCode": null,
-              "side": "client",
-              "type": "array",
-              "included": 1,
-              "storageOption": "RAM",
-              "singleton": 0,
-              "bounded": 0,
-              "defaultValue": "",
-              "reportable": 1,
-              "minInterval": 0,
-              "maxInterval": 65344,
-              "reportableChange": 0
-            },
-            {
-              "name": "ClusterRevision",
-              "code": 65533,
-              "mfgCode": null,
-              "side": "client",
-              "type": "int16u",
-              "included": 1,
-              "storageOption": "RAM",
-              "singleton": 0,
-              "bounded": 0,
-              "defaultValue": "1",
-              "reportable": 1,
-              "minInterval": 0,
-              "maxInterval": 65344,
-              "reportableChange": 0
-            }
-          ]
-        },
-        {
-          "name": "Fixed Label",
-          "code": 64,
-          "mfgCode": null,
-          "define": "FIXED_LABEL_CLUSTER",
-          "side": "server",
-          "enabled": 1,
-          "attributes": [
-            {
-              "name": "LabelList",
-              "code": 0,
-              "mfgCode": null,
-              "side": "server",
-              "type": "array",
-              "included": 1,
-              "storageOption": "RAM",
-              "singleton": 0,
-              "bounded": 0,
-              "defaultValue": "",
-              "reportable": 1,
-              "minInterval": 0,
-              "maxInterval": 65344,
-              "reportableChange": 0
-            },
-            {
-              "name": "ClusterRevision",
-              "code": 65533,
-              "mfgCode": null,
-              "side": "server",
-              "type": "int16u",
-              "included": 1,
-              "storageOption": "RAM",
-              "singleton": 0,
-              "bounded": 0,
-              "defaultValue": "1",
-              "reportable": 1,
-              "minInterval": 0,
-              "maxInterval": 65344,
-              "reportableChange": 0
-            }
-          ]
         }
       ]
     }
diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter
index c2fa5f0..7f0d172 100644
--- a/examples/placeholder/linux/apps/app2/config.matter
+++ b/examples/placeholder/linux/apps/app2/config.matter
@@ -510,7 +510,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -2681,7 +2681,7 @@
     callback attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
@@ -3098,7 +3098,7 @@
     ram      attribute clusterRevision default = 5;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/placeholder/linux/apps/app2/config.zap b/examples/placeholder/linux/apps/app2/config.zap
index a85e66c..ff3ba11 100644
--- a/examples/placeholder/linux/apps/app2/config.zap
+++ b/examples/placeholder/linux/apps/app2/config.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -533,10 +533,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -559,10 +559,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -7627,10 +7627,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -7653,10 +7653,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -8015,6 +8015,74 @@
           ]
         },
         {
+          "name": "Fixed Label",
+          "code": 64,
+          "mfgCode": null,
+          "define": "FIXED_LABEL_CLUSTER",
+          "side": "client",
+          "enabled": 1,
+          "attributes": [
+            {
+              "name": "ClusterRevision",
+              "code": 65533,
+              "mfgCode": null,
+              "side": "client",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "1",
+              "reportable": 1,
+              "minInterval": 0,
+              "maxInterval": 65344,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "Fixed Label",
+          "code": 64,
+          "mfgCode": null,
+          "define": "FIXED_LABEL_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "attributes": [
+            {
+              "name": "label list",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 0,
+              "maxInterval": 65344,
+              "reportableChange": 0
+            },
+            {
+              "name": "ClusterRevision",
+              "code": 65533,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "1",
+              "reportable": 1,
+              "minInterval": 0,
+              "maxInterval": 65344,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
           "name": "Color Control",
           "code": 768,
           "mfgCode": null,
@@ -8067,90 +8135,6 @@
           ]
         },
         {
-          "name": "Fixed Label",
-          "code": 64,
-          "mfgCode": null,
-          "define": "FIXED_LABEL_CLUSTER",
-          "side": "client",
-          "enabled": 1,
-          "attributes": [
-            {
-              "name": "LabelList",
-              "code": 0,
-              "mfgCode": null,
-              "side": "client",
-              "type": "array",
-              "included": 1,
-              "storageOption": "RAM",
-              "singleton": 0,
-              "bounded": 0,
-              "defaultValue": "",
-              "reportable": 1,
-              "minInterval": 0,
-              "maxInterval": 65344,
-              "reportableChange": 0
-            },
-            {
-              "name": "ClusterRevision",
-              "code": 65533,
-              "mfgCode": null,
-              "side": "client",
-              "type": "int16u",
-              "included": 1,
-              "storageOption": "RAM",
-              "singleton": 0,
-              "bounded": 0,
-              "defaultValue": "1",
-              "reportable": 1,
-              "minInterval": 0,
-              "maxInterval": 65344,
-              "reportableChange": 0
-            }
-          ]
-        },
-        {
-          "name": "Fixed Label",
-          "code": 64,
-          "mfgCode": null,
-          "define": "FIXED_LABEL_CLUSTER",
-          "side": "server",
-          "enabled": 1,
-          "attributes": [
-            {
-              "name": "LabelList",
-              "code": 0,
-              "mfgCode": null,
-              "side": "server",
-              "type": "array",
-              "included": 1,
-              "storageOption": "RAM",
-              "singleton": 0,
-              "bounded": 0,
-              "defaultValue": "",
-              "reportable": 1,
-              "minInterval": 0,
-              "maxInterval": 65344,
-              "reportableChange": 0
-            },
-            {
-              "name": "ClusterRevision",
-              "code": 65533,
-              "mfgCode": null,
-              "side": "server",
-              "type": "int16u",
-              "included": 1,
-              "storageOption": "RAM",
-              "singleton": 0,
-              "bounded": 0,
-              "defaultValue": "1",
-              "reportable": 1,
-              "minInterval": 0,
-              "maxInterval": 65344,
-              "reportableChange": 0
-            }
-          ]
-        },
-        {
           "name": "Color Control",
           "code": 768,
           "mfgCode": null,
diff --git a/examples/pump-app/pump-common/pump-app.matter b/examples/pump-app/pump-common/pump-app.matter
index 8d670ca..f48ce24 100644
--- a/examples/pump-app/pump-common/pump-app.matter
+++ b/examples/pump-app/pump-common/pump-app.matter
@@ -284,7 +284,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -1275,7 +1275,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/pump-app/pump-common/pump-app.zap b/examples/pump-app/pump-common/pump-app.zap
index 47b1c82..e74ae94 100644
--- a/examples/pump-app/pump-common/pump-app.zap
+++ b/examples/pump-app/pump-common/pump-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1143,10 +1143,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "commands": [
@@ -1195,10 +1195,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -6207,7 +6207,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 1,
               "storageOption": "RAM",
               "singleton": 0,
diff --git a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter
index 3fda421..b5e2093 100644
--- a/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter
+++ b/examples/pump-controller-app/pump-controller-common/pump-controller-app.matter
@@ -183,7 +183,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -1131,7 +1131,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap b/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap
index 7902e94..a8eec31 100644
--- a/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap
+++ b/examples/pump-controller-app/pump-controller-common/pump-controller-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1101,10 +1101,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1143,10 +1143,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
diff --git a/examples/temperature-measurement-app/esp32/main/CMakeLists.txt b/examples/temperature-measurement-app/esp32/main/CMakeLists.txt
index dbf518f..0f138ab 100644
--- a/examples/temperature-measurement-app/esp32/main/CMakeLists.txt
+++ b/examples/temperature-measurement-app/esp32/main/CMakeLists.txt
@@ -34,7 +34,7 @@
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/reporting"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/access-control-server"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/administrator-commissioning-server"
-                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic"
+                      "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/basic-information"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/bindings"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/descriptor"
                       "${CMAKE_SOURCE_DIR}/third_party/connectedhomeip/src/app/clusters/diagnostic-logs-server"
diff --git a/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter b/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter
index 99fee8e..52b56ed 100644
--- a/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter
+++ b/examples/temperature-measurement-app/esp32/main/temperature-measurement.matter
@@ -86,7 +86,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -859,7 +859,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap b/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap
index 397a94a..42b4b65 100644
--- a/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap
+++ b/examples/temperature-measurement-app/esp32/main/temperature-measurement.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -547,10 +547,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -573,10 +573,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -3611,10 +3611,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -3637,10 +3637,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter
index 03f3b42..60a9c70 100644
--- a/examples/thermostat/thermostat-common/thermostat.matter
+++ b/examples/thermostat/thermostat-common/thermostat.matter
@@ -338,7 +338,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -1524,7 +1524,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/thermostat/thermostat-common/thermostat.zap b/examples/thermostat/thermostat-common/thermostat.zap
index 376f877..ba937d1 100644
--- a/examples/thermostat/thermostat-common/thermostat.zap
+++ b/examples/thermostat/thermostat-common/thermostat.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 87,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -18,17 +18,17 @@
   "package": [
     {
       "pathRelativity": "relativeToZap",
-      "path": "../../../src/app/zap-templates/app-templates.json",
-      "type": "gen-templates-json",
-      "version": "chip-v1"
-    },
-    {
-      "pathRelativity": "relativeToZap",
       "path": "../../../src/app/zap-templates/zcl/zcl.json",
       "type": "zcl-properties",
       "category": "matter",
       "version": 1,
       "description": "Matter SDK ZCL data"
+    },
+    {
+      "pathRelativity": "relativeToZap",
+      "path": "../../../src/app/zap-templates/app-templates.json",
+      "type": "gen-templates-json",
+      "version": "chip-v1"
     }
   ],
   "endpointTypes": [
@@ -1115,10 +1115,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1141,10 +1141,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -8845,10 +8845,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -8871,10 +8871,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
@@ -14634,6 +14634,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 769
     }
-  ],
-  "log": []
+  ]
 }
\ No newline at end of file
diff --git a/examples/tv-app/tv-common/tv-app.matter b/examples/tv-app/tv-common/tv-app.matter
index afec0ee..904b841 100644
--- a/examples/tv-app/tv-common/tv-app.matter
+++ b/examples/tv-app/tv-common/tv-app.matter
@@ -260,7 +260,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -2163,7 +2163,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/tv-app/tv-common/tv-app.zap b/examples/tv-app/tv-common/tv-app.zap
index 72f8bfe..bb3e587 100644
--- a/examples/tv-app/tv-common/tv-app.zap
+++ b/examples/tv-app/tv-common/tv-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 87,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -18,17 +18,17 @@
   "package": [
     {
       "pathRelativity": "relativeToZap",
-      "path": "../../../src/app/zap-templates/app-templates.json",
-      "type": "gen-templates-json",
-      "version": "chip-v1"
-    },
-    {
-      "pathRelativity": "relativeToZap",
       "path": "../../../src/app/zap-templates/zcl/zcl.json",
       "type": "zcl-properties",
       "category": "matter",
       "version": 1,
       "description": "Matter SDK ZCL data"
+    },
+    {
+      "pathRelativity": "relativeToZap",
+      "path": "../../../src/app/zap-templates/app-templates.json",
+      "type": "gen-templates-json",
+      "version": "chip-v1"
     }
   ],
   "endpointTypes": [
@@ -1099,10 +1099,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1125,10 +1125,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -12364,6 +12364,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 36
     }
-  ],
-  "log": []
+  ]
 }
\ No newline at end of file
diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter
index b94bac4..90e17e0 100644
--- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter
+++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.matter
@@ -625,7 +625,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -2177,7 +2177,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap b/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap
index f5b9081..3b7aa95 100644
--- a/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap
+++ b/examples/tv-casting-app/tv-casting-common/tv-casting-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1081,10 +1081,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1107,10 +1107,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -7689,7 +7689,7 @@
               "code": 15,
               "mfgCode": null,
               "side": "server",
-              "type": "bitmap8",
+              "type": "LevelControlOptions",
               "included": 1,
               "storageOption": "RAM",
               "singleton": 0,
@@ -8163,10 +8163,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -8189,10 +8189,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
@@ -14345,10 +14345,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -14371,10 +14371,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
diff --git a/examples/window-app/common/window-app.matter b/examples/window-app/common/window-app.matter
index 84b0828..8f21770 100644
--- a/examples/window-app/common/window-app.matter
+++ b/examples/window-app/common/window-app.matter
@@ -309,7 +309,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -1608,7 +1608,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/examples/window-app/common/window-app.zap b/examples/window-app/common/window-app.zap
index 57c6ded..a9a56ff 100644
--- a/examples/window-app/common/window-app.zap
+++ b/examples/window-app/common/window-app.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 81,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -1149,10 +1149,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 0,
           "attributes": [
@@ -1191,10 +1191,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 1,
           "attributes": [
@@ -9241,6 +9241,5 @@
       "endpointVersion": 2,
       "deviceIdentifier": 514
     }
-  ],
-  "log": []
+  ]
 }
\ No newline at end of file
diff --git a/scripts/idl/tests/inputs/large_all_clusters_app.matter b/scripts/idl/tests/inputs/large_all_clusters_app.matter
index 6cadd62..4781028 100644
--- a/scripts/idl/tests/inputs/large_all_clusters_app.matter
+++ b/scripts/idl/tests/inputs/large_all_clusters_app.matter
@@ -562,7 +562,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -3916,7 +3916,7 @@
     callback attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/scripts/idl/tests/inputs/large_lighting_app.matter b/scripts/idl/tests/inputs/large_lighting_app.matter
index b409798..67b2390 100644
--- a/scripts/idl/tests/inputs/large_lighting_app.matter
+++ b/scripts/idl/tests/inputs/large_lighting_app.matter
@@ -346,7 +346,7 @@
   readonly attribute int16u clusterRevision = 65533;
 }
 
-server cluster Basic = 40 {
+server cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -1730,7 +1730,7 @@
     ram      attribute clusterRevision default = 1;
   }
 
-  server cluster Basic {
+  server cluster BasicInformation {
     callback attribute dataModelRevision default = 10;
     callback attribute vendorName;
     callback attribute vendorID;
diff --git a/scripts/idl/tests/outputs/large_all_clusters_app/cpp-app/PluginApplicationCallbacks.h b/scripts/idl/tests/outputs/large_all_clusters_app/cpp-app/PluginApplicationCallbacks.h
index c1f45b2..713ef6e 100644
--- a/scripts/idl/tests/outputs/large_all_clusters_app/cpp-app/PluginApplicationCallbacks.h
+++ b/scripts/idl/tests/outputs/large_all_clusters_app/cpp-app/PluginApplicationCallbacks.h
@@ -7,7 +7,7 @@
 void MatterApplicationLauncherPluginServerInitCallback();
 void MatterAudioOutputPluginServerInitCallback();
 void MatterBarrierControlPluginServerInitCallback();
-void MatterBasicPluginServerInitCallback();
+void MatterBasicInformationPluginServerInitCallback();
 void MatterBinaryInputBasicPluginServerInitCallback();
 void MatterBindingPluginServerInitCallback();
 void MatterBooleanStatePluginServerInitCallback();
@@ -72,7 +72,7 @@
     MatterApplicationLauncherPluginServerInitCallback(); \
     MatterAudioOutputPluginServerInitCallback(); \
     MatterBarrierControlPluginServerInitCallback(); \
-    MatterBasicPluginServerInitCallback(); \
+    MatterBasicInformationPluginServerInitCallback(); \
     MatterBinaryInputBasicPluginServerInitCallback(); \
     MatterBindingPluginServerInitCallback(); \
     MatterBooleanStatePluginServerInitCallback(); \
diff --git a/scripts/idl/tests/outputs/large_all_clusters_app/cpp-app/callback-stub.cpp b/scripts/idl/tests/outputs/large_all_clusters_app/cpp-app/callback-stub.cpp
index a0bc3f3..3ca1051 100644
--- a/scripts/idl/tests/outputs/large_all_clusters_app/cpp-app/callback-stub.cpp
+++ b/scripts/idl/tests/outputs/large_all_clusters_app/cpp-app/callback-stub.cpp
@@ -34,8 +34,8 @@
     case app::Clusters::BarrierControl::Id:
         emberAfBarrierControlClusterInitCallback(endpoint);
         break;
-    case app::Clusters::Basic::Id:
-        emberAfBasicClusterInitCallback(endpoint);
+    case app::Clusters::BasicInformation::Id:
+        emberAfBasicInformationClusterInitCallback(endpoint);
         break;
     case app::Clusters::BinaryInputBasic::Id:
         emberAfBinaryInputBasicClusterInitCallback(endpoint);
@@ -247,7 +247,7 @@
     // To prevent warning
     (void) endpoint;
 }
-void __attribute__((weak)) emberAfBasicClusterInitCallback(EndpointId endpoint)
+void __attribute__((weak)) emberAfBasicInformationClusterInitCallback(EndpointId endpoint)
 {
     // To prevent warning
     (void) endpoint;
diff --git a/scripts/idl/tests/outputs/large_lighting_app/cpp-app/PluginApplicationCallbacks.h b/scripts/idl/tests/outputs/large_lighting_app/cpp-app/PluginApplicationCallbacks.h
index cab97ff..de27155 100644
--- a/scripts/idl/tests/outputs/large_lighting_app/cpp-app/PluginApplicationCallbacks.h
+++ b/scripts/idl/tests/outputs/large_lighting_app/cpp-app/PluginApplicationCallbacks.h
@@ -1,7 +1,7 @@
 #pragma once
 void MatterAccessControlPluginServerInitCallback();
 void MatterAdministratorCommissioningPluginServerInitCallback();
-void MatterBasicPluginServerInitCallback();
+void MatterBasicInformationPluginServerInitCallback();
 void MatterColorControlPluginServerInitCallback();
 void MatterDescriptorPluginServerInitCallback();
 void MatterDiagnosticLogsPluginServerInitCallback();
@@ -29,7 +29,7 @@
 #define MATTER_PLUGINS_INIT \
     MatterAccessControlPluginServerInitCallback(); \
     MatterAdministratorCommissioningPluginServerInitCallback(); \
-    MatterBasicPluginServerInitCallback(); \
+    MatterBasicInformationPluginServerInitCallback(); \
     MatterColorControlPluginServerInitCallback(); \
     MatterDescriptorPluginServerInitCallback(); \
     MatterDiagnosticLogsPluginServerInitCallback(); \
diff --git a/scripts/idl/tests/outputs/large_lighting_app/cpp-app/callback-stub.cpp b/scripts/idl/tests/outputs/large_lighting_app/cpp-app/callback-stub.cpp
index 54955e5..edaf1f2 100644
--- a/scripts/idl/tests/outputs/large_lighting_app/cpp-app/callback-stub.cpp
+++ b/scripts/idl/tests/outputs/large_lighting_app/cpp-app/callback-stub.cpp
@@ -16,8 +16,8 @@
     case app::Clusters::AdministratorCommissioning::Id:
         emberAfAdministratorCommissioningClusterInitCallback(endpoint);
         break;
-    case app::Clusters::Basic::Id:
-        emberAfBasicClusterInitCallback(endpoint);
+    case app::Clusters::BasicInformation::Id:
+        emberAfBasicInformationClusterInitCallback(endpoint);
         break;
     case app::Clusters::ColorControl::Id:
         emberAfColorControlClusterInitCallback(endpoint);
@@ -106,7 +106,7 @@
     // To prevent warning
     (void) endpoint;
 }
-void __attribute__((weak)) emberAfBasicClusterInitCallback(EndpointId endpoint)
+void __attribute__((weak)) emberAfBasicInformationClusterInitCallback(EndpointId endpoint)
 {
     // To prevent warning
     (void) endpoint;
diff --git a/src/app/chip_data_model.gni b/src/app/chip_data_model.gni
index a7627cb..3430cb1 100644
--- a/src/app/chip_data_model.gni
+++ b/src/app/chip_data_model.gni
@@ -99,7 +99,7 @@
 
     sources += [
       "${_app_root}/clusters/barrier-control-server/barrier-control-server.h",
-      "${_app_root}/clusters/basic/basic.h",
+      "${_app_root}/clusters/basic-information/basic-information.h",
       "${_app_root}/clusters/client-monitoring-server/client-monitoring-server.h",
       "${_app_root}/clusters/color-control-server/color-control-server.h",
       "${_app_root}/clusters/door-lock-server/door-lock-server.h",
diff --git a/src/app/clusters/basic/basic.cpp b/src/app/clusters/basic-information/basic-information.cpp
similarity index 95%
rename from src/app/clusters/basic/basic.cpp
rename to src/app/clusters/basic-information/basic-information.cpp
index fb43a7e..d280c41 100644
--- a/src/app/clusters/basic/basic.cpp
+++ b/src/app/clusters/basic-information/basic-information.cpp
@@ -16,7 +16,7 @@
  *
  */
 
-#include "basic.h"
+#include "basic-information.h"
 
 #include <app-common/zap-generated/attributes/Accessors.h>
 #include <app-common/zap-generated/cluster-objects.h>
@@ -35,8 +35,8 @@
 using namespace chip;
 using namespace chip::app;
 using namespace chip::app::Clusters;
-using namespace chip::app::Clusters::Basic;
-using namespace chip::app::Clusters::Basic::Attributes;
+using namespace chip::app::Clusters::BasicInformation;
+using namespace chip::app::Clusters::BasicInformation::Attributes;
 using namespace chip::DeviceLayer;
 
 namespace {
@@ -49,7 +49,7 @@
 {
 public:
     // Register for the Basic cluster on all endpoints.
-    BasicAttrAccess() : AttributeAccessInterface(Optional<EndpointId>::Missing(), Basic::Id) {}
+    BasicAttrAccess() : AttributeAccessInterface(Optional<EndpointId>::Missing(), BasicInformation::Id) {}
 
     CHIP_ERROR Read(const ConcreteReadAttributePath & aPath, AttributeValueEncoder & aEncoder) override;
     CHIP_ERROR Write(const ConcreteDataAttributePath & aPath, AttributeValueDecoder & aDecoder) override;
@@ -70,7 +70,7 @@
 
 CHIP_ERROR BasicAttrAccess::Read(const ConcreteReadAttributePath & aPath, AttributeValueEncoder & aEncoder)
 {
-    if (aPath.mClusterId != Basic::Id)
+    if (aPath.mClusterId != BasicInformation::Id)
     {
         // We shouldn't have been called at all.
         return CHIP_ERROR_INVALID_ARGUMENT;
@@ -269,7 +269,7 @@
     }
 
     case CapabilityMinima::Id: {
-        Basic::Structs::CapabilityMinimaStruct::Type capabilityMinima;
+        BasicInformation::Structs::CapabilityMinimaStruct::Type capabilityMinima;
 
         // TODO: These values must be set from something based on the SDK impl, but there are no such constants today.
         constexpr uint16_t kMinCaseSessionsPerFabricMandatedBySpec = 3;
@@ -315,7 +315,7 @@
 
 CHIP_ERROR BasicAttrAccess::Write(const ConcreteDataAttributePath & aPath, AttributeValueDecoder & aDecoder)
 {
-    VerifyOrDie(aPath.mClusterId == Basic::Id);
+    VerifyOrDie(aPath.mClusterId == BasicInformation::Id);
 
     switch (aPath.mAttributeId)
     {
@@ -350,7 +350,7 @@
         // The StartUp event SHALL be emitted by a Node after completing a boot or reboot process
         ChipLogDetail(Zcl, "Emitting StartUp event");
 
-        for (auto endpoint : EnabledEndpointsWithServerCluster(Basic::Id))
+        for (auto endpoint : EnabledEndpointsWithServerCluster(BasicInformation::Id))
         {
             // If Basic cluster is implemented on this endpoint
             Events::StartUp::Type event{ softwareVersion };
@@ -369,7 +369,7 @@
         // The ShutDown event SHOULD be emitted on a best-effort basis by a Node prior to any orderly shutdown sequence.
         ChipLogDetail(Zcl, "Emitting ShutDown event");
 
-        for (auto endpoint : EnabledEndpointsWithServerCluster(Basic::Id))
+        for (auto endpoint : EnabledEndpointsWithServerCluster(BasicInformation::Id))
         {
             // If Basic cluster is implemented on this endpoint
             Events::ShutDown::Type event;
@@ -394,21 +394,21 @@
 namespace chip {
 namespace app {
 namespace Clusters {
-namespace Basic {
+namespace BasicInformation {
 bool IsLocalConfigDisabled()
 {
     bool disabled        = false;
     EmberAfStatus status = LocalConfigDisabled::Get(0, &disabled);
     return status == EMBER_ZCL_STATUS_SUCCESS && disabled;
 }
-} // namespace Basic
+} // namespace BasicInformation
 } // namespace Clusters
 } // namespace app
 } // namespace chip
 
 void emberAfBasicClusterServerInitCallback(chip::EndpointId endpoint) {}
 
-void MatterBasicPluginServerInitCallback()
+void MatterBasicInformationPluginServerInitCallback()
 {
     registerAttributeAccessOverride(&gAttrAccess);
     PlatformMgr().SetDelegate(&gPlatformMgrDelegate);
diff --git a/src/app/clusters/basic/basic.h b/src/app/clusters/basic-information/basic-information.h
similarity index 94%
rename from src/app/clusters/basic/basic.h
rename to src/app/clusters/basic-information/basic-information.h
index 16d1f1e..4639c1c 100644
--- a/src/app/clusters/basic/basic.h
+++ b/src/app/clusters/basic-information/basic-information.h
@@ -22,14 +22,14 @@
 namespace chip {
 namespace app {
 namespace Clusters {
-namespace Basic {
+namespace BasicInformation {
 /**
  * Check whether LocalConfigDisabled is set (on endpoint 0, which is the only
  * place the Basic Information cluster exists and can have the attribute be
  * set).
  */
 bool IsLocalConfigDisabled();
-} // namespace Basic
+} // namespace BasicInformation
 } // namespace Clusters
 } // namespace app
 } // namespace chip
diff --git a/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp b/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp
index bfcdc9c..7b6bf7f 100644
--- a/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp
+++ b/src/app/clusters/operational-credentials-server/operational-credentials-server.cpp
@@ -330,10 +330,10 @@
     void FabricWillBeRemoved(const FabricTable & fabricTable, FabricIndex fabricIndex) override
     {
         // The Leave event SHOULD be emitted by a Node prior to permanently leaving the Fabric.
-        for (auto endpoint : EnabledEndpointsWithServerCluster(Basic::Id))
+        for (auto endpoint : EnabledEndpointsWithServerCluster(BasicInformation::Id))
         {
             // If Basic cluster is implemented on this endpoint
-            Basic::Events::Leave::Type event;
+            BasicInformation::Events::Leave::Type event;
             event.fabricIndex = fabricIndex;
             EventNumber eventNumber;
 
diff --git a/src/app/clusters/ota-requestor/DefaultOTARequestor.cpp b/src/app/clusters/ota-requestor/DefaultOTARequestor.cpp
index a46f51f..e339659 100644
--- a/src/app/clusters/ota-requestor/DefaultOTARequestor.cpp
+++ b/src/app/clusters/ota-requestor/DefaultOTARequestor.cpp
@@ -20,7 +20,7 @@
  * OTA Requestor logic is contained in this class.
  */
 
-#include <app/clusters/basic/basic.h>
+#include <app/clusters/basic-information/basic-information.h>
 #include <app/clusters/ota-requestor/ota-requestor-server.h>
 #include <lib/core/CHIPEncoding.h>
 #include <platform/CHIPDeviceLayer.h>
@@ -744,7 +744,7 @@
     ReturnErrorOnFailure(DeviceLayer::ConfigurationMgr().GetSoftwareVersion(args.softwareVersion));
 
     args.protocolsSupported = kProtocolsSupported;
-    args.requestorCanConsent.SetValue(!Basic::IsLocalConfigDisabled() && mOtaRequestorDriver->CanConsent());
+    args.requestorCanConsent.SetValue(!BasicInformation::IsLocalConfigDisabled() && mOtaRequestorDriver->CanConsent());
 
     uint16_t hardwareVersion;
     if (DeviceLayer::GetDeviceInstanceInfoProvider()->GetHardwareVersion(hardwareVersion) == CHIP_NO_ERROR)
diff --git a/src/app/tests/suites/TestArmFailSafe.yaml b/src/app/tests/suites/TestArmFailSafe.yaml
index 245788f..599164d 100644
--- a/src/app/tests/suites/TestArmFailSafe.yaml
+++ b/src/app/tests/suites/TestArmFailSafe.yaml
@@ -56,7 +56,7 @@
 
     - label: "Reads NodeLabel mandatory attribute of target device"
       command: "readAttribute"
-      cluster: "Basic"
+      cluster: "Basic Information"
       attribute: "NodeLabel"
       response:
           value: ""
diff --git a/src/app/tests/suites/TestBasicInformation.yaml b/src/app/tests/suites/TestBasicInformation.yaml
index 64fc0cc..340d6dd 100644
--- a/src/app/tests/suites/TestBasicInformation.yaml
+++ b/src/app/tests/suites/TestBasicInformation.yaml
@@ -16,7 +16,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/TestCASERecovery.yaml b/src/app/tests/suites/TestCASERecovery.yaml
index efd0e80..69ecf23 100644
--- a/src/app/tests/suites/TestCASERecovery.yaml
+++ b/src/app/tests/suites/TestCASERecovery.yaml
@@ -16,7 +16,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/TestGroupDemoCommand.yaml b/src/app/tests/suites/TestGroupDemoCommand.yaml
index 5db2446..950e0dc 100644
--- a/src/app/tests/suites/TestGroupDemoCommand.yaml
+++ b/src/app/tests/suites/TestGroupDemoCommand.yaml
@@ -28,7 +28,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/TestGroupMessaging.yaml b/src/app/tests/suites/TestGroupMessaging.yaml
index df73554..1cd3fc9 100644
--- a/src/app/tests/suites/TestGroupMessaging.yaml
+++ b/src/app/tests/suites/TestGroupMessaging.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
     nodeId2:
         type: node_id
diff --git a/src/app/tests/suites/TestMultiAdmin.yaml b/src/app/tests/suites/TestMultiAdmin.yaml
index b26e0b2..e815628 100644
--- a/src/app/tests/suites/TestMultiAdmin.yaml
+++ b/src/app/tests/suites/TestMultiAdmin.yaml
@@ -166,7 +166,7 @@
 
     - label: "read the mandatory attribute: NodeLabel from alpha"
       identity: "alpha"
-      cluster: "Basic"
+      cluster: "Basic Information"
       command: "readAttribute"
       attribute: "NodeLabel"
       response:
@@ -175,7 +175,7 @@
 
     - label: "write the mandatory attribute NodeLabel from beta"
       identity: "beta"
-      cluster: "Basic"
+      cluster: "Basic Information"
       command: "writeAttribute"
       attribute: "NodeLabel"
       arguments:
@@ -183,7 +183,7 @@
 
     - label: "read the mandatory attribute: NodeLabel from gamma"
       identity: "gamma"
-      cluster: "Basic"
+      cluster: "Basic Information"
       command: "readAttribute"
       attribute: "NodeLabel"
       response:
@@ -192,7 +192,7 @@
 
     - label: "write the mandatory attribute NodeLabel back to default"
       identity: "alpha"
-      cluster: "Basic"
+      cluster: "Basic Information"
       command: "writeAttribute"
       attribute: "NodeLabel"
       arguments:
diff --git a/src/app/tests/suites/certification/Test_TC_ACE_1_1.yaml b/src/app/tests/suites/certification/Test_TC_ACE_1_1.yaml
index 13eb032..42ebf30 100644
--- a/src/app/tests/suites/certification/Test_TC_ACE_1_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ACE_1_1.yaml
@@ -17,7 +17,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_ACE_1_2.yaml b/src/app/tests/suites/certification/Test_TC_ACE_1_2.yaml
index 2617632..c110707 100644
--- a/src/app/tests/suites/certification/Test_TC_ACE_1_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ACE_1_2.yaml
@@ -17,7 +17,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml
index 159e03c..37480af 100644
--- a/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ACL_2_10.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml
index 1d7aad8..7867035 100644
--- a/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ACL_2_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_5.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_5.yaml
index 60f9e27..04f3ef6 100644
--- a/src/app/tests/suites/certification/Test_TC_ACL_2_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ACL_2_5.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_6.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_6.yaml
index 29f6c02..ff419fe 100644
--- a/src/app/tests/suites/certification/Test_TC_ACL_2_6.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ACL_2_6.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml
index dac6858..cd5ef68 100644
--- a/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ACL_2_7.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml
index 80d0e91..cad730f 100644
--- a/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ACL_2_8.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml b/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml
index bd2a994..0b0fee2 100644
--- a/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ACL_2_9.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_ACT_2_1.yaml b/src/app/tests/suites/certification/Test_TC_ACT_2_1.yaml
index bd6efc3..b15a166 100644
--- a/src/app/tests/suites/certification/Test_TC_ACT_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ACT_2_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_ACT_2_2.yaml b/src/app/tests/suites/certification/Test_TC_ACT_2_2.yaml
index 659c95c..be15c23 100644
--- a/src/app/tests/suites/certification/Test_TC_ACT_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ACT_2_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_ACT_3_2.yaml b/src/app/tests/suites/certification/Test_TC_ACT_3_2.yaml
index d5bcb1a..6803e94 100644
--- a/src/app/tests/suites/certification/Test_TC_ACT_3_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ACT_3_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_ALOGIN_12_2.yaml b/src/app/tests/suites/certification/Test_TC_ALOGIN_12_2.yaml
index 759afca..df2723d 100644
--- a/src/app/tests/suites/certification/Test_TC_ALOGIN_12_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ALOGIN_12_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_7_1.yaml b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_7_1.yaml
index d07860f..e98a7d9 100644
--- a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_7_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_7_1.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8_1.yaml b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8_1.yaml
index 2e8d999e..c111c22 100644
--- a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_8_1.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_9_1.yaml b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_9_1.yaml
index ab3748b..a7bbf93 100644
--- a/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_9_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_APPLAUNCHER_3_9_1.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_7_3.yaml b/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_7_3.yaml
index acc4746..0ce9582 100644
--- a/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_7_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_7_3.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_7_4.yaml b/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_7_4.yaml
index 19b8f2f..6a75b32 100644
--- a/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_7_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_AUDIOOUTPUT_7_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BDX_1_1.yaml b/src/app/tests/suites/certification/Test_TC_BDX_1_1.yaml
index 0f23c46..d9f18a7 100644
--- a/src/app/tests/suites/certification/Test_TC_BDX_1_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BDX_1_1.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BDX_1_2.yaml b/src/app/tests/suites/certification/Test_TC_BDX_1_2.yaml
index 3c755cd..a32ae8b 100644
--- a/src/app/tests/suites/certification/Test_TC_BDX_1_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BDX_1_2.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BDX_1_3.yaml b/src/app/tests/suites/certification/Test_TC_BDX_1_3.yaml
index 40612c83..3f28c87 100644
--- a/src/app/tests/suites/certification/Test_TC_BDX_1_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BDX_1_3.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BDX_1_4.yaml b/src/app/tests/suites/certification/Test_TC_BDX_1_4.yaml
index 992be63..e05c31c 100644
--- a/src/app/tests/suites/certification/Test_TC_BDX_1_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BDX_1_4.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BDX_1_5.yaml b/src/app/tests/suites/certification/Test_TC_BDX_1_5.yaml
index b74f837..fdcd642 100644
--- a/src/app/tests/suites/certification/Test_TC_BDX_1_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BDX_1_5.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BDX_1_6.yaml b/src/app/tests/suites/certification/Test_TC_BDX_1_6.yaml
index 2c58ce4..cf7f45b 100644
--- a/src/app/tests/suites/certification/Test_TC_BDX_1_6.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BDX_1_6.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BDX_2_1.yaml b/src/app/tests/suites/certification/Test_TC_BDX_2_1.yaml
index 4492158..4ae671a 100644
--- a/src/app/tests/suites/certification/Test_TC_BDX_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BDX_2_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BDX_2_2.yaml b/src/app/tests/suites/certification/Test_TC_BDX_2_2.yaml
index 21a032b..c55f47c 100644
--- a/src/app/tests/suites/certification/Test_TC_BDX_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BDX_2_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BDX_2_3.yaml b/src/app/tests/suites/certification/Test_TC_BDX_2_3.yaml
index 8b192ba..e6aa547 100644
--- a/src/app/tests/suites/certification/Test_TC_BDX_2_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BDX_2_3.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BDX_2_4.yaml b/src/app/tests/suites/certification/Test_TC_BDX_2_4.yaml
index 627c4ec..63ef402 100644
--- a/src/app/tests/suites/certification/Test_TC_BDX_2_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BDX_2_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BDX_2_5.yaml b/src/app/tests/suites/certification/Test_TC_BDX_2_5.yaml
index aa33eb1..625e9da 100644
--- a/src/app/tests/suites/certification/Test_TC_BDX_2_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BDX_2_5.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BIND_2_1.yaml b/src/app/tests/suites/certification/Test_TC_BIND_2_1.yaml
index 273a4d3..344f6b9 100644
--- a/src/app/tests/suites/certification/Test_TC_BIND_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BIND_2_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BIND_2_2.yaml b/src/app/tests/suites/certification/Test_TC_BIND_2_2.yaml
index 7f579e1..07db427 100644
--- a/src/app/tests/suites/certification/Test_TC_BIND_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BIND_2_2.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BIND_2_3.yaml b/src/app/tests/suites/certification/Test_TC_BIND_2_3.yaml
index 4425224..c6b9bd6 100644
--- a/src/app/tests/suites/certification/Test_TC_BIND_2_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BIND_2_3.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BINFO_1_1.yaml b/src/app/tests/suites/certification/Test_TC_BINFO_1_1.yaml
index b515d49..c21058c 100644
--- a/src/app/tests/suites/certification/Test_TC_BINFO_1_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BINFO_1_1.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml b/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml
index 56996da..e50c768 100644
--- a/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BINFO_2_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BINFO_2_2.yaml b/src/app/tests/suites/certification/Test_TC_BINFO_2_2.yaml
index 5a50439..8969d6a 100644
--- a/src/app/tests/suites/certification/Test_TC_BINFO_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BINFO_2_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BINFO_2_3_Simulated.yaml b/src/app/tests/suites/certification/Test_TC_BINFO_2_3_Simulated.yaml
index efb10ea..47c37b2 100644
--- a/src/app/tests/suites/certification/Test_TC_BINFO_2_3_Simulated.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BINFO_2_3_Simulated.yaml
@@ -19,7 +19,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BINFO_2_4.yaml b/src/app/tests/suites/certification/Test_TC_BINFO_2_4.yaml
index 0b89e54..cb4a57f 100644
--- a/src/app/tests/suites/certification/Test_TC_BINFO_2_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BINFO_2_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml b/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml
index 27166db..35c115c 100644
--- a/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BOOL_2_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_2.yaml b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_2.yaml
index 8f9c01c..2cfd64b 100644
--- a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_2.yaml
@@ -17,7 +17,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml
index 6ef05a6..c2058fb 100644
--- a/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BRBINFO_2_3.yaml
@@ -17,7 +17,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BR_1.yaml b/src/app/tests/suites/certification/Test_TC_BR_1.yaml
index a48b1f6..cca2869 100644
--- a/src/app/tests/suites/certification/Test_TC_BR_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BR_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BR_2.yaml b/src/app/tests/suites/certification/Test_TC_BR_2.yaml
index 2c13bfd..23a7ddd 100644
--- a/src/app/tests/suites/certification/Test_TC_BR_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BR_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BR_3.yaml b/src/app/tests/suites/certification/Test_TC_BR_3.yaml
index 52dcf84..ba0c715 100644
--- a/src/app/tests/suites/certification/Test_TC_BR_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BR_3.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_BR_4.yaml b/src/app/tests/suites/certification/Test_TC_BR_4.yaml
index 9c1bfb0..bc063c3 100644
--- a/src/app/tests/suites/certification/Test_TC_BR_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_BR_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml
index e89160b..7f032ff 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_1.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_12.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_12.yaml
index c1e46ed..30600c1 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_12.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_12.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml
index ea68982..deab406 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_14.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_15.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_15.yaml
index 211fc13..d26e0c6 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_15.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_15.yaml
@@ -183,7 +183,7 @@
       PICS: BINFO.S.A0005
       identity: "beta"
       command: "writeAttribute"
-      cluster: "Basic"
+      cluster: "Basic Information"
       attribute: "NodeLabel"
       arguments:
           value: "chiptest"
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_16.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_16.yaml
index 92f1e4c..9e2a503 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_16.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_16.yaml
@@ -169,7 +169,7 @@
       PICS: BINFO.S.A0005
       identity: "beta"
       command: "writeAttribute"
-      cluster: "Basic"
+      cluster: "Basic Information"
       attribute: "NodeLabel"
       arguments:
           value: "chiptest"
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml
index 7e3f09d..33a6319 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_17.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml
index 5189b69..87733c7 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_18.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml
index 5458b1b..2bb39f7 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_19.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml
index 7b9b854..26a2a91 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_2.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml
index f61c2d4..f2ddeda 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_20.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_3.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_3.yaml
index c2bd4f4..ee32c44 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_3.yaml
@@ -108,7 +108,7 @@
           attribute of DUT_CE"
       command: "writeAttribute"
       PICS: BINFO.S.A0005
-      cluster: "Basic"
+      cluster: "Basic Information"
       attribute: "NodeLabel"
       arguments:
           value: "chiptest"
@@ -118,7 +118,7 @@
           attribute of DUT_CE"
       command: "readAttribute"
       PICS: BINFO.S.A0005
-      cluster: "Basic"
+      cluster: "Basic Information"
       attribute: "NodeLabel"
       response:
           value: "chiptest"
@@ -207,7 +207,7 @@
           "TH_CR1 writes the Basic Information Clusters NodeLabel mandatory
           attribute of DUT_CE"
       command: "writeAttribute"
-      cluster: "Basic"
+      cluster: "Basic Information"
       PICS: OPCREDS.S.A0001
       attribute: "NodeLabel"
       arguments:
@@ -217,7 +217,7 @@
           "TH_CR1 reads the Basic Information Clusters NodeLabel mandatory
           attribute of DUT_CE"
       command: "readAttribute"
-      cluster: "Basic"
+      cluster: "Basic Information"
       PICS: OPCREDS.S.A0001
       attribute: "NodeLabel"
       response:
@@ -231,7 +231,7 @@
           attribute of DUT_CE"
       identity: "beta"
       command: "writeAttribute"
-      cluster: "Basic"
+      cluster: "Basic Information"
       PICS: OPCREDS.S.A0001
       attribute: "NodeLabel"
       arguments:
@@ -242,7 +242,7 @@
           attribute of DUT_CE"
       identity: "beta"
       command: "readAttribute"
-      cluster: "Basic"
+      cluster: "Basic Information"
       PICS: OPCREDS.S.A0001
       attribute: "NodeLabel"
       response:
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_4.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_4.yaml
index abcb354..5dfc34a 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_4.yaml
@@ -98,7 +98,7 @@
           "TH_CR1 writes the Basic Information Clusters NodeLabel mandatory
           attribute of DUT_CE"
       command: "writeAttribute"
-      cluster: "Basic"
+      cluster: "Basic Information"
       attribute: "NodeLabel"
       PICS: BINFO.S.A0005
       arguments:
@@ -108,7 +108,7 @@
           "TH_CR1 reads the Basic Information Clusters NodeLabel mandatory
           attribute of DUT_CE"
       command: "readAttribute"
-      cluster: "Basic"
+      cluster: "Basic Information"
       attribute: "NodeLabel"
       PICS: BINFO.S.A0005
       response:
@@ -196,7 +196,7 @@
           "TH_CR1 writes the Basic Information Clusters NodeLabel mandatory
           attribute of DUT_CE"
       command: "writeAttribute"
-      cluster: "Basic"
+      cluster: "Basic Information"
       attribute: "NodeLabel"
       PICS: BINFO.S.A0005
       arguments:
@@ -206,7 +206,7 @@
           "TH_CR1 reads the Basic Information Clusters NodeLabel mandatory
           attribute of DUT_CE"
       command: "readAttribute"
-      cluster: "Basic"
+      cluster: "Basic Information"
       attribute: "NodeLabel"
       PICS: BINFO.S.A0005
       response:
@@ -220,7 +220,7 @@
           attribute of DUT_CE"
       identity: "beta"
       command: "writeAttribute"
-      cluster: "Basic"
+      cluster: "Basic Information"
       attribute: "NodeLabel"
       PICS: BINFO.S.A0005
       arguments:
@@ -231,7 +231,7 @@
           attribute of DUT_CE"
       identity: "beta"
       command: "readAttribute"
-      cluster: "Basic"
+      cluster: "Basic Information"
       attribute: "NodeLabel"
       PICS: BINFO.S.A0005
       response:
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_5.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_5.yaml
index 240b0ea..b44ec1e 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_5.yaml
@@ -182,7 +182,7 @@
           error: FAILURE
 
     - label: "TH_CR1 writes the mandatory attribute NodeLabel of DUT_CE"
-      cluster: "Basic"
+      cluster: "Basic Information"
       command: "writeAttribute"
       attribute: "NodeLabel"
       PICS: BINFO.S.A0005
@@ -190,7 +190,7 @@
           value: "chiptest"
 
     - label: "TH_CR1 read the mandatory attribute NodeLabel of DUT_CE"
-      cluster: "Basic"
+      cluster: "Basic Information"
       command: "readAttribute"
       attribute: "NodeLabel"
       PICS: BINFO.S.A0005
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_6.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_6.yaml
index f7b1df9..d0b35b4 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_6.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_6.yaml
@@ -168,7 +168,7 @@
 
     - label: "TH_CR1 writes the mandatory attribute NodeLabel of DUT_CE"
       identity: "alpha"
-      cluster: "Basic"
+      cluster: "Basic Information"
       command: "writeAttribute"
       attribute: "NodeLabel"
       PICS: BINFO.S.A0005
@@ -177,7 +177,7 @@
 
     - label: "TH_CR1 read the mandatory attribute NodeLabel of DUT_CE"
       identity: "alpha"
-      cluster: "Basic"
+      cluster: "Basic Information"
       command: "readAttribute"
       attribute: "NodeLabel"
       PICS: BINFO.S.A0005
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml
index 78d0cdc..792216c 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_7.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml b/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml
index 88151ea..487c425 100644
--- a/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CADMIN_1_8.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CC_2_2.yaml b/src/app/tests/suites/certification/Test_TC_CC_2_2.yaml
index 17ba93d..d7a57ff 100644
--- a/src/app/tests/suites/certification/Test_TC_CC_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CC_2_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CC_3_4.yaml b/src/app/tests/suites/certification/Test_TC_CC_3_4.yaml
index 2ecdbaf..1bf9728 100644
--- a/src/app/tests/suites/certification/Test_TC_CC_3_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CC_3_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CC_4_5.yaml b/src/app/tests/suites/certification/Test_TC_CC_4_5.yaml
index 9846bd5..997e084 100644
--- a/src/app/tests/suites/certification/Test_TC_CC_4_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CC_4_5.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CC_5_4.yaml b/src/app/tests/suites/certification/Test_TC_CC_5_4.yaml
index f4df770..6988f6a 100644
--- a/src/app/tests/suites/certification/Test_TC_CC_5_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CC_5_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CC_6_4.yaml b/src/app/tests/suites/certification/Test_TC_CC_6_4.yaml
index beeb124..550f818 100644
--- a/src/app/tests/suites/certification/Test_TC_CC_6_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CC_6_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CC_7_5.yaml b/src/app/tests/suites/certification/Test_TC_CC_7_5.yaml
index ccbdc1c..06ec82f 100644
--- a/src/app/tests/suites/certification/Test_TC_CC_7_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CC_7_5.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CC_9_4.yaml b/src/app/tests/suites/certification/Test_TC_CC_9_4.yaml
index c490980..36dbce7 100644
--- a/src/app/tests/suites/certification/Test_TC_CC_9_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CC_9_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CGEN_2_2.yaml b/src/app/tests/suites/certification/Test_TC_CGEN_2_2.yaml
index 7b1c329..32a9a17 100644
--- a/src/app/tests/suites/certification/Test_TC_CGEN_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CGEN_2_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CGEN_2_4.yaml b/src/app/tests/suites/certification/Test_TC_CGEN_2_4.yaml
index 7cfc6e6..221a1b3 100644
--- a/src/app/tests/suites/certification/Test_TC_CGEN_2_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CGEN_2_4.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CHANNEL_5_4.yaml b/src/app/tests/suites/certification/Test_TC_CHANNEL_5_4.yaml
index 733be0e..868c18f 100644
--- a/src/app/tests/suites/certification/Test_TC_CHANNEL_5_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CHANNEL_5_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CHANNEL_5_5.yaml b/src/app/tests/suites/certification/Test_TC_CHANNEL_5_5.yaml
index 6b15fad..144148f 100644
--- a/src/app/tests/suites/certification/Test_TC_CHANNEL_5_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CHANNEL_5_5.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CHANNEL_5_6.yaml b/src/app/tests/suites/certification/Test_TC_CHANNEL_5_6.yaml
index 0deb325..ae894ba 100644
--- a/src/app/tests/suites/certification/Test_TC_CHANNEL_5_6.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CHANNEL_5_6.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_1.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_1.yaml
index 8316b09..61a3aad 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_1.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_10.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_10.yaml
index c79d8b6..c5e242c 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_10.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_10.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_11.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_11.yaml
index dc946e5..5d0d7b6 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_11.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_11.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_12.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_12.yaml
index 8804927..f68e201 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_12.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_12.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_13.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_13.yaml
index 68bbd8f..6b0ab50 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_13.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_13.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_14.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_14.yaml
index 4ef2f85..3d7938b 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_14.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_14.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_15.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_15.yaml
index 69655ea..7ba0cc0 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_15.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_15.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_16.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_16.yaml
index fc8874e..7242621 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_16.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_16.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml
index 6ee0bd0..9bf7849 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_17.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml
index bb52c4a..922c48c 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_18.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml
index 9c4cf9f..ed841c4 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_19.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_2.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_2.yaml
index d1f001c..73041a0 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_2.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_20.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_20.yaml
index 12fa028..40282f1 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_20.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_20.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_21.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_21.yaml
index d1f7dd4..08aca0e 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_21.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_21.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_22.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_22.yaml
index 7be01ff..2dfd734 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_22.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_22.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_3.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_3.yaml
index 86ebd9f..bcdf7c3 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_3.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_4.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_4.yaml
index ae7d031..36f26b1 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_4.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_5.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_5.yaml
index f74c55e..a5a8c6c 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_5.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_6.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_6.yaml
index 7bada37..083b086 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_6.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_6.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml b/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml
index 7f814d4..18aae25 100644
--- a/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CNET_4_9.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_3.yaml b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_3.yaml
index 32312c8..d3e48a1 100644
--- a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_3.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_4.yaml b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_4.yaml
index 55d2371..399c7cc 100644
--- a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_4.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_5.yaml b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_5.yaml
index aa6bd9c..ff9eed7 100644
--- a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_5.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_6.yaml b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_6.yaml
index a9e2290..7e35b0e 100644
--- a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_6.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_6.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_7.yaml b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_7.yaml
index 78f2d2f..ea38cb5 100644
--- a/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_7.yaml
+++ b/src/app/tests/suites/certification/Test_TC_CONTENTLAUNCHER_10_7.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DA_1_1.yaml b/src/app/tests/suites/certification/Test_TC_DA_1_1.yaml
index e4f6da9..2cf5143 100644
--- a/src/app/tests/suites/certification/Test_TC_DA_1_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DA_1_1.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DA_1_2.yaml b/src/app/tests/suites/certification/Test_TC_DA_1_2.yaml
index 81cadd4..37975ee 100644
--- a/src/app/tests/suites/certification/Test_TC_DA_1_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DA_1_2.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DA_1_3.yaml b/src/app/tests/suites/certification/Test_TC_DA_1_3.yaml
index 7eff4aa..2bda1bd 100644
--- a/src/app/tests/suites/certification/Test_TC_DA_1_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DA_1_3.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DA_1_4.yaml b/src/app/tests/suites/certification/Test_TC_DA_1_4.yaml
index 1162ec1..bb3520a 100644
--- a/src/app/tests/suites/certification/Test_TC_DA_1_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DA_1_4.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DA_1_5.yaml b/src/app/tests/suites/certification/Test_TC_DA_1_5.yaml
index 19cb85a..c10edf8 100644
--- a/src/app/tests/suites/certification/Test_TC_DA_1_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DA_1_5.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DA_1_6.yaml b/src/app/tests/suites/certification/Test_TC_DA_1_6.yaml
index 2f721a0..92a7379 100644
--- a/src/app/tests/suites/certification/Test_TC_DA_1_6.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DA_1_6.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DA_1_7.yaml b/src/app/tests/suites/certification/Test_TC_DA_1_7.yaml
index 3fe14d1..15996dd 100644
--- a/src/app/tests/suites/certification/Test_TC_DA_1_7.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DA_1_7.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_10.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_10.yaml
index e8db3af..c63da86 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_1_10.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_1_10.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_11.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_11.yaml
index fbc3594..34cd262 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_1_11.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_1_11.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml
index a71ae7c..cf0efa8 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_1_12.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml
index 0c0cd89..316ea54 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_1_13.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml
index 37dea4c..4f52b0e 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_1_14.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml
index 35e8f4f..fbb5e55 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_1_15.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_5.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_5.yaml
index c0163ac..a0b48db 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_1_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_1_5.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_6.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_6.yaml
index 721c334..9e4d463 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_1_6.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_1_6.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml
index 9f2689f..70227d3 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_1_7.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml
index 0cdf778..09f0f2a 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_1_8.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_1_9.yaml b/src/app/tests/suites/certification/Test_TC_DD_1_9.yaml
index 4da2369..a0fd5ed 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_1_9.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_1_9.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DD_2_1.yaml
index da46bd9..2dd5001 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_2_1.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_2_2.yaml b/src/app/tests/suites/certification/Test_TC_DD_2_2.yaml
index 9a48e35..d56e226 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_2_2.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml
index 4aaf3a0..083130a 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml
index b81143c..c47f3e1 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_10.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml
index 82ab752..45b8eb1 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_11.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml
index 9adbd5d..cdbf7d5 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_12.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml
index 462dce0..f0fef16 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_13.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml
index e09184f..17d5e59 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_14.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml
index 30475e9..21fd142 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_15.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml
index 6e9dd0f..aea7315 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_16.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml
index 7461970..10f8031 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_17.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml
index 2531691..7810bb5 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_18.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml
index 601cc49..a7e1b57 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_19.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml
index 27b21af..f49d4b5 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_2.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml
index d78e3ff..8011c52 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_20.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_21.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_21.yaml
index a860d0d..a343865 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_21.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_21.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml
index d57af20..a815634 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_3.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml
index de3bb35..803e555 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_4.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml
index 8a5a2bc..cc5e8b4 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_5.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml
index 8a641bd..3e260e8 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_6.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml
index b6ba6b2..621918a 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_7.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml
index b6c7ac7..28844d8 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_8.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml b/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml
index a1095fc..83d530c 100644
--- a/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DD_3_9.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml
index 5430d2d..3a96132 100644
--- a/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DESC_2_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DGGEN_2_2.yaml b/src/app/tests/suites/certification/Test_TC_DGGEN_2_2.yaml
index f48c381..fced361 100644
--- a/src/app/tests/suites/certification/Test_TC_DGGEN_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DGGEN_2_2.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DGGEN_2_3.yaml b/src/app/tests/suites/certification/Test_TC_DGGEN_2_3.yaml
index 081735d..6284642 100644
--- a/src/app/tests/suites/certification/Test_TC_DGGEN_2_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DGGEN_2_3.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DGGEN_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DGGEN_3_1.yaml
index 68b21c0..9a6ad83 100644
--- a/src/app/tests/suites/certification/Test_TC_DGGEN_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DGGEN_3_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DGSW_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DGSW_2_1.yaml
index 733aa65..9f68342 100644
--- a/src/app/tests/suites/certification/Test_TC_DGSW_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DGSW_2_1.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DGSW_2_2.yaml b/src/app/tests/suites/certification/Test_TC_DGSW_2_2.yaml
index d3b65e4..11630fa 100644
--- a/src/app/tests/suites/certification/Test_TC_DGSW_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DGSW_2_2.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DGSW_2_3.yaml b/src/app/tests/suites/certification/Test_TC_DGSW_2_3.yaml
index 00e8b1a..25ed283 100644
--- a/src/app/tests/suites/certification/Test_TC_DGSW_2_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DGSW_2_3.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DGTHREAD_2_5.yaml b/src/app/tests/suites/certification/Test_TC_DGTHREAD_2_5.yaml
index eab7dae..b880e77 100644
--- a/src/app/tests/suites/certification/Test_TC_DGTHREAD_2_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DGTHREAD_2_5.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1.yaml
index 3ac2871..ad3eeb2 100644
--- a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_2.yaml b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_2.yaml
index 3cf1813..6513817 100644
--- a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_3.yaml b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_3.yaml
index d4f3d9a..bf4d50a 100644
--- a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_3.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_4.yaml b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_4.yaml
index 10119cf..6f53631 100644
--- a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_5.yaml b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_5.yaml
index 95fb489..5515eb5 100644
--- a/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DGTHREAD_3_5.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DGWIFI_2_2.yaml b/src/app/tests/suites/certification/Test_TC_DGWIFI_2_2.yaml
index facee9e..3e22d65 100644
--- a/src/app/tests/suites/certification/Test_TC_DGWIFI_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DGWIFI_2_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DLOG_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DLOG_2_1.yaml
index 036ecfb..c2e5fab 100644
--- a/src/app/tests/suites/certification/Test_TC_DLOG_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DLOG_2_1.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DLOG_2_2.yaml b/src/app/tests/suites/certification/Test_TC_DLOG_2_2.yaml
index f96ff70..e5c9771 100644
--- a/src/app/tests/suites/certification/Test_TC_DLOG_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DLOG_2_2.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DLOG_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DLOG_3_1.yaml
index 3cec819..bad81da 100644
--- a/src/app/tests/suites/certification/Test_TC_DLOG_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DLOG_3_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml
index 9903e4b..37f3d7d 100644
--- a/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_10.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_10.yaml
index ce52697..c091349 100644
--- a/src/app/tests/suites/certification/Test_TC_DRLK_2_10.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_10.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_2_8.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_2_8.yaml
index 70b507e..40aa427 100644
--- a/src/app/tests/suites/certification/Test_TC_DRLK_2_8.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DRLK_2_8.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml
index e0dba94..4da62b0 100644
--- a/src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DRLK_3_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_3_2.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_3_2.yaml
index eae707c..d0580ec 100644
--- a/src/app/tests/suites/certification/Test_TC_DRLK_3_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DRLK_3_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml b/src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml
index 3b55dea..28fc524 100644
--- a/src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_DRLK_3_3.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_G_2_2.yaml b/src/app/tests/suites/certification/Test_TC_G_2_2.yaml
index 60870da..1ff8701 100644
--- a/src/app/tests/suites/certification/Test_TC_G_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_G_2_2.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_G_2_3.yaml b/src/app/tests/suites/certification/Test_TC_G_2_3.yaml
index f25cd52..9564198 100644
--- a/src/app/tests/suites/certification/Test_TC_G_2_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_G_2_3.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_G_3_2.yaml b/src/app/tests/suites/certification/Test_TC_G_3_2.yaml
index 3a3180a..c143a1f 100644
--- a/src/app/tests/suites/certification/Test_TC_G_3_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_G_3_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_1_1.yaml b/src/app/tests/suites/certification/Test_TC_IDM_1_1.yaml
index f437d4b..0374645 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_1_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_1_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_1_2.yaml b/src/app/tests/suites/certification/Test_TC_IDM_1_2.yaml
index 3f891d2..3cc08c4 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_1_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_1_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_2_1.yaml b/src/app/tests/suites/certification/Test_TC_IDM_2_1.yaml
index ee60cf3..1283e50 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_2_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_2_2.yaml b/src/app/tests/suites/certification/Test_TC_IDM_2_2.yaml
index 3271a4a..a12f684 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_2_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_3_1.yaml b/src/app/tests/suites/certification/Test_TC_IDM_3_1.yaml
index be72e71..b313ce7 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_3_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_3_2.yaml b/src/app/tests/suites/certification/Test_TC_IDM_3_2.yaml
index 213433a..5bddeb0 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_3_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_3_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_4_1.yaml b/src/app/tests/suites/certification/Test_TC_IDM_4_1.yaml
index b954264..7c34d06 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_4_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_4_1.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_4_2.yaml b/src/app/tests/suites/certification/Test_TC_IDM_4_2.yaml
index 7161818..60de3ec 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_4_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_4_2.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_4_3.yaml b/src/app/tests/suites/certification/Test_TC_IDM_4_3.yaml
index d6b9386..13fa875 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_4_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_4_3.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_5_1.yaml b/src/app/tests/suites/certification/Test_TC_IDM_5_1.yaml
index a0ea2ea..0216605 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_5_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_5_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_5_2.yaml b/src/app/tests/suites/certification/Test_TC_IDM_5_2.yaml
index c2f6ed8..b40be55 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_5_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_5_2.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_6_1.yaml b/src/app/tests/suites/certification/Test_TC_IDM_6_1.yaml
index 2e7542d..a99fef6 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_6_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_6_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_6_2.yaml b/src/app/tests/suites/certification/Test_TC_IDM_6_2.yaml
index 53dbe35..3d32506 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_6_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_6_2.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_6_3.yaml b/src/app/tests/suites/certification/Test_TC_IDM_6_3.yaml
index bf3ebdf..e192d02 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_6_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_6_3.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_6_4.yaml b/src/app/tests/suites/certification/Test_TC_IDM_6_4.yaml
index d61cab1..17a4302 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_6_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_6_4.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_7_1.yaml b/src/app/tests/suites/certification/Test_TC_IDM_7_1.yaml
index b48bfba..5ea29d8 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_7_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_7_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_IDM_8_1.yaml b/src/app/tests/suites/certification/Test_TC_IDM_8_1.yaml
index 1ea5fb7..9411aab 100644
--- a/src/app/tests/suites/certification/Test_TC_IDM_8_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_IDM_8_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_ILL_3_1.yaml b/src/app/tests/suites/certification/Test_TC_ILL_3_1.yaml
index 6fab329..c112cf0 100644
--- a/src/app/tests/suites/certification/Test_TC_ILL_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ILL_3_1.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_I_3_2.yaml b/src/app/tests/suites/certification/Test_TC_I_3_2.yaml
index 69b14fa..4018989 100644
--- a/src/app/tests/suites/certification/Test_TC_I_3_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_I_3_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_3_1.yaml b/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_3_1.yaml
index edfa5fb..b6312f3 100644
--- a/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_KEYPADINPUT_3_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_LCFG_2_1.yaml b/src/app/tests/suites/certification/Test_TC_LCFG_2_1.yaml
index 67facdb..d31de71 100644
--- a/src/app/tests/suites/certification/Test_TC_LCFG_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_LCFG_2_1.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_LCFG_3_1.yaml b/src/app/tests/suites/certification/Test_TC_LCFG_3_1.yaml
index 59008c4..f7b73b3 100644
--- a/src/app/tests/suites/certification/Test_TC_LCFG_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_LCFG_3_1.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_LOWPOWER_2_2.yaml b/src/app/tests/suites/certification/Test_TC_LOWPOWER_2_2.yaml
index d4bd33d..0d11e5d 100644
--- a/src/app/tests/suites/certification/Test_TC_LOWPOWER_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_LOWPOWER_2_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_LTIME_1_1.yaml b/src/app/tests/suites/certification/Test_TC_LTIME_1_1.yaml
index ffa3ddb..af365fe 100644
--- a/src/app/tests/suites/certification/Test_TC_LTIME_1_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_LTIME_1_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_LTIME_2_1.yaml b/src/app/tests/suites/certification/Test_TC_LTIME_2_1.yaml
index 461fcd7..02322cf 100644
--- a/src/app/tests/suites/certification/Test_TC_LTIME_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_LTIME_2_1.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_LTIME_3_1.yaml b/src/app/tests/suites/certification/Test_TC_LTIME_3_1.yaml
index 267c5c1..e367af4 100644
--- a/src/app/tests/suites/certification/Test_TC_LTIME_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_LTIME_3_1.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_LUNIT_1_1.yaml b/src/app/tests/suites/certification/Test_TC_LUNIT_1_1.yaml
index ee79e7e..31cac94 100644
--- a/src/app/tests/suites/certification/Test_TC_LUNIT_1_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_LUNIT_1_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_LUNIT_2_1.yaml b/src/app/tests/suites/certification/Test_TC_LUNIT_2_1.yaml
index d3ceb77..9c37cc3 100644
--- a/src/app/tests/suites/certification/Test_TC_LUNIT_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_LUNIT_2_1.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_LVL_2_3.yaml b/src/app/tests/suites/certification/Test_TC_LVL_2_3.yaml
index 0ef22f6..2a58840 100644
--- a/src/app/tests/suites/certification/Test_TC_LVL_2_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_LVL_2_3.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_LVL_7_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_7_1.yaml
index 18bc441..05694ff 100644
--- a/src/app/tests/suites/certification/Test_TC_LVL_7_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_LVL_7_1.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_LVL_8_1.yaml b/src/app/tests/suites/certification/Test_TC_LVL_8_1.yaml
index c82402f..c5df0cd 100644
--- a/src/app/tests/suites/certification/Test_TC_LVL_8_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_LVL_8_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MC_11_1.yaml b/src/app/tests/suites/certification/Test_TC_MC_11_1.yaml
index 0395ba6..9a1319b 100644
--- a/src/app/tests/suites/certification/Test_TC_MC_11_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MC_11_1.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MC_11_2.yaml b/src/app/tests/suites/certification/Test_TC_MC_11_2.yaml
index ee30cdb..f397a7f 100644
--- a/src/app/tests/suites/certification/Test_TC_MC_11_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MC_11_2.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_14.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_14.yaml
index b712c49..ce5cf4f 100644
--- a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_14.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_14.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_15.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_15.yaml
index 9750a32..10a47a6 100644
--- a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_15.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_15.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_16.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_16.yaml
index 066cf95..5d15189 100644
--- a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_16.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_16.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_17.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_17.yaml
index adbc51b..01b132d 100644
--- a/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_17.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MEDIAINPUT_3_17.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_5.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_5.yaml
index 487ec25..192778c 100644
--- a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_5.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_7.yaml b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_7.yaml
index 270b231..5428423 100644
--- a/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_7.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MEDIAPLAYBACK_6_7.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MOD_1_2.yaml b/src/app/tests/suites/certification/Test_TC_MOD_1_2.yaml
index 2ea667d..aba5a3b 100644
--- a/src/app/tests/suites/certification/Test_TC_MOD_1_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MOD_1_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml b/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml
index 5a92a02..f61e28a 100644
--- a/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MOD_1_3.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MOD_2_1.yaml b/src/app/tests/suites/certification/Test_TC_MOD_2_1.yaml
index a4fb3db..5f60542 100644
--- a/src/app/tests/suites/certification/Test_TC_MOD_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MOD_2_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml b/src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml
index 806b9c0..e18b8e9 100644
--- a/src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MOD_2_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MOD_3_1.yaml b/src/app/tests/suites/certification/Test_TC_MOD_3_1.yaml
index 92d237f..bad0e5b 100644
--- a/src/app/tests/suites/certification/Test_TC_MOD_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MOD_3_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MOD_3_2.yaml b/src/app/tests/suites/certification/Test_TC_MOD_3_2.yaml
index 6b91261..c51be16 100644
--- a/src/app/tests/suites/certification/Test_TC_MOD_3_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MOD_3_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml b/src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml
index 63288a4..b85a1ef 100644
--- a/src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MOD_3_3.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml b/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml
index c4fa7a4..9c55369 100644
--- a/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_MOD_3_4.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml b/src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml
index 94f483c..4d8279b 100644
--- a/src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_OCC_2_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_OO_3_1.yaml b/src/app/tests/suites/certification/Test_TC_OO_3_1.yaml
index efea15f..5639c9c 100644
--- a/src/app/tests/suites/certification/Test_TC_OO_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_OO_3_1.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_OO_3_2.yaml b/src/app/tests/suites/certification/Test_TC_OO_3_2.yaml
index d52e358..9c92550 100644
--- a/src/app/tests/suites/certification/Test_TC_OO_3_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_OO_3_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_1.yaml b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_1.yaml
index 3184231..785e80f 100644
--- a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_1.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_2.yaml b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_2.yaml
index e8a8c3d..0e04ecc 100644
--- a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_2.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml
index fe5d51a..7fb60b5 100644
--- a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_3.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_4.yaml b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_4.yaml
index 8a7b21b..b8d24ee 100644
--- a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_5.yaml b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_5.yaml
index b23a32f..c68da89 100644
--- a/src/app/tests/suites/certification/Test_TC_OPCREDS_3_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_OPCREDS_3_5.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_PCC_3_1.yaml b/src/app/tests/suites/certification/Test_TC_PCC_3_1.yaml
index 31976c4..6293380 100644
--- a/src/app/tests/suites/certification/Test_TC_PCC_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_PCC_3_1.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_PSCFG_2_2.yaml b/src/app/tests/suites/certification/Test_TC_PSCFG_2_2.yaml
index 9c2669a..d1f57e6 100644
--- a/src/app/tests/suites/certification/Test_TC_PSCFG_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_PSCFG_2_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_PS_2_2.yaml b/src/app/tests/suites/certification/Test_TC_PS_2_2.yaml
index 05c6493..321d911 100644
--- a/src/app/tests/suites/certification/Test_TC_PS_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_PS_2_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_1_1.yaml b/src/app/tests/suites/certification/Test_TC_SC_1_1.yaml
index 7f6bbfc..462e9e3 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_1_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_1_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_1_2.yaml b/src/app/tests/suites/certification/Test_TC_SC_1_2.yaml
index af73d7f..f0b3aac 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_1_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_1_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_1_3.yaml b/src/app/tests/suites/certification/Test_TC_SC_1_3.yaml
index bcbd8ad..69becee 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_1_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_1_3.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_1_4.yaml b/src/app/tests/suites/certification/Test_TC_SC_1_4.yaml
index 41e1454..17161a7 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_1_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_1_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_2_1.yaml b/src/app/tests/suites/certification/Test_TC_SC_2_1.yaml
index eeac3a0..f29673a 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_2_1.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_2_2.yaml b/src/app/tests/suites/certification/Test_TC_SC_2_2.yaml
index bd51a12..1809191 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_2_2.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_2_3.yaml b/src/app/tests/suites/certification/Test_TC_SC_2_3.yaml
index aab3515..73ed501 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_2_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_2_3.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_2_4.yaml b/src/app/tests/suites/certification/Test_TC_SC_2_4.yaml
index 2e39bb5..04aca5d 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_2_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_2_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_3_1.yaml b/src/app/tests/suites/certification/Test_TC_SC_3_1.yaml
index 15b64d4..fbf3a8e 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_3_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_3_2.yaml b/src/app/tests/suites/certification/Test_TC_SC_3_2.yaml
index 94037e0..b075887 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_3_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_3_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_3_3.yaml b/src/app/tests/suites/certification/Test_TC_SC_3_3.yaml
index c43e62d..91b9918 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_3_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_3_3.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_3_4.yaml b/src/app/tests/suites/certification/Test_TC_SC_3_4.yaml
index 36525ba..76cd519 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_3_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_3_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_3_6.yaml b/src/app/tests/suites/certification/Test_TC_SC_3_6.yaml
index 5a978d9..2a5634b 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_3_6.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_3_6.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_1.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_1.yaml
index e92cba6..a5f1865 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_4_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_4_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_10.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_10.yaml
index 5398b18..6373d60 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_4_10.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_4_10.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_2.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_2.yaml
index e05fd23..a60ebf2 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_4_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_4_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_3.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_3.yaml
index c137d70..708d123 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_4_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_4_3.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_4.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_4.yaml
index 0703e6c..84a493a 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_4_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_4_4.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_5.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_5.yaml
index 8692896..fc47635 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_4_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_4_5.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_6.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_6.yaml
index 0062e1c..912a59f 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_4_6.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_4_6.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_7.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_7.yaml
index c15b290..bb50c99 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_4_7.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_4_7.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_8.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_8.yaml
index 2f1f014..9780c59 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_4_8.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_4_8.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_4_9.yaml b/src/app/tests/suites/certification/Test_TC_SC_4_9.yaml
index 4d56dd2..242cdde 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_4_9.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_4_9.yaml
@@ -23,7 +23,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_5_1.yaml b/src/app/tests/suites/certification/Test_TC_SC_5_1.yaml
index 0160403..91fcdcf 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_5_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_5_1.yaml
@@ -19,7 +19,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_5_2.yaml b/src/app/tests/suites/certification/Test_TC_SC_5_2.yaml
index b18c883..bae5304 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_5_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_5_2.yaml
@@ -17,7 +17,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_5_3.yaml b/src/app/tests/suites/certification/Test_TC_SC_5_3.yaml
index ce108cc..85b0c41 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_5_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_5_3.yaml
@@ -17,7 +17,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SC_6_1.yaml b/src/app/tests/suites/certification/Test_TC_SC_6_1.yaml
index ef8f913..95835a0 100644
--- a/src/app/tests/suites/certification/Test_TC_SC_6_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SC_6_1.yaml
@@ -19,7 +19,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SU_1_1.yaml b/src/app/tests/suites/certification/Test_TC_SU_1_1.yaml
index 2d8008f..48e7c25 100644
--- a/src/app/tests/suites/certification/Test_TC_SU_1_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SU_1_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SU_2_1.yaml b/src/app/tests/suites/certification/Test_TC_SU_2_1.yaml
index d8adbc2..3b52754 100644
--- a/src/app/tests/suites/certification/Test_TC_SU_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SU_2_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SU_2_2.yaml b/src/app/tests/suites/certification/Test_TC_SU_2_2.yaml
index 60c480a..93bdacd 100644
--- a/src/app/tests/suites/certification/Test_TC_SU_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SU_2_2.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SU_2_3.yaml b/src/app/tests/suites/certification/Test_TC_SU_2_3.yaml
index c8cc4bf..50eff91 100644
--- a/src/app/tests/suites/certification/Test_TC_SU_2_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SU_2_3.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SU_2_4.yaml b/src/app/tests/suites/certification/Test_TC_SU_2_4.yaml
index 46135eb..47964c2 100644
--- a/src/app/tests/suites/certification/Test_TC_SU_2_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SU_2_4.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SU_2_5.yaml b/src/app/tests/suites/certification/Test_TC_SU_2_5.yaml
index 27ae788..5f54d5f 100644
--- a/src/app/tests/suites/certification/Test_TC_SU_2_5.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SU_2_5.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SU_2_6.yaml b/src/app/tests/suites/certification/Test_TC_SU_2_6.yaml
index f42599b..c51e372 100644
--- a/src/app/tests/suites/certification/Test_TC_SU_2_6.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SU_2_6.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SU_2_7.yaml b/src/app/tests/suites/certification/Test_TC_SU_2_7.yaml
index 4b161cf..bc175d2 100644
--- a/src/app/tests/suites/certification/Test_TC_SU_2_7.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SU_2_7.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SU_2_8.yaml b/src/app/tests/suites/certification/Test_TC_SU_2_8.yaml
index 076710a..d2ee5d7 100644
--- a/src/app/tests/suites/certification/Test_TC_SU_2_8.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SU_2_8.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SU_3_1.yaml b/src/app/tests/suites/certification/Test_TC_SU_3_1.yaml
index ca23a13..77adccd 100644
--- a/src/app/tests/suites/certification/Test_TC_SU_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SU_3_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SU_3_2.yaml b/src/app/tests/suites/certification/Test_TC_SU_3_2.yaml
index 57df1b8..659ae9c 100644
--- a/src/app/tests/suites/certification/Test_TC_SU_3_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SU_3_2.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SU_3_3.yaml b/src/app/tests/suites/certification/Test_TC_SU_3_3.yaml
index 372cb6b..c022c60 100644
--- a/src/app/tests/suites/certification/Test_TC_SU_3_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SU_3_3.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SU_3_4.yaml b/src/app/tests/suites/certification/Test_TC_SU_3_4.yaml
index ce5efd9..8153852 100644
--- a/src/app/tests/suites/certification/Test_TC_SU_3_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SU_3_4.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SU_4_1.yaml b/src/app/tests/suites/certification/Test_TC_SU_4_1.yaml
index e86f7dc..b3d5cf3 100644
--- a/src/app/tests/suites/certification/Test_TC_SU_4_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SU_4_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SU_4_2.yaml b/src/app/tests/suites/certification/Test_TC_SU_4_2.yaml
index 6735b49..fb59af3 100644
--- a/src/app/tests/suites/certification/Test_TC_SU_4_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SU_4_2.yaml
@@ -21,7 +21,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SWTCH_2_2.yaml b/src/app/tests/suites/certification/Test_TC_SWTCH_2_2.yaml
index 9dc41af..a4e0e16 100644
--- a/src/app/tests/suites/certification/Test_TC_SWTCH_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SWTCH_2_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SWTCH_3_1.yaml b/src/app/tests/suites/certification/Test_TC_SWTCH_3_1.yaml
index fb54ddd..b35dd23 100644
--- a/src/app/tests/suites/certification/Test_TC_SWTCH_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SWTCH_3_1.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_SWTCH_3_2.yaml b/src/app/tests/suites/certification/Test_TC_SWTCH_3_2.yaml
index 732419b..8ae5d01 100644
--- a/src/app/tests/suites/certification/Test_TC_SWTCH_3_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_SWTCH_3_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_S_1_1.yaml b/src/app/tests/suites/certification/Test_TC_S_1_1.yaml
index 6cafd4e..625d937 100644
--- a/src/app/tests/suites/certification/Test_TC_S_1_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_S_1_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_S_2_1.yaml b/src/app/tests/suites/certification/Test_TC_S_2_1.yaml
index d056618..950ccb3 100644
--- a/src/app/tests/suites/certification/Test_TC_S_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_S_2_1.yaml
@@ -22,7 +22,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_S_2_2.yaml b/src/app/tests/suites/certification/Test_TC_S_2_2.yaml
index 5f66c76..651a61c 100644
--- a/src/app/tests/suites/certification/Test_TC_S_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_S_2_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_S_2_3.yaml b/src/app/tests/suites/certification/Test_TC_S_2_3.yaml
index bc6dde0..6abe854 100644
--- a/src/app/tests/suites/certification/Test_TC_S_2_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_S_2_3.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_S_3_1.yaml b/src/app/tests/suites/certification/Test_TC_S_3_1.yaml
index 4b49684..7523eb6 100644
--- a/src/app/tests/suites/certification/Test_TC_S_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_S_3_1.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_TGTNAV_8_2.yaml b/src/app/tests/suites/certification/Test_TC_TGTNAV_8_2.yaml
index f65c215..8993dab 100644
--- a/src/app/tests/suites/certification/Test_TC_TGTNAV_8_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_TGTNAV_8_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_TMP_3_1.yaml b/src/app/tests/suites/certification/Test_TC_TMP_3_1.yaml
index f2dc3a0..38a6b38 100644
--- a/src/app/tests/suites/certification/Test_TC_TMP_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_TMP_3_1.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml
index 9098926..5d75393 100644
--- a/src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_TSTAT_3_1.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_3_2.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_3_2.yaml
index ab6f0e5..8d4bd01 100644
--- a/src/app/tests/suites/certification/Test_TC_TSTAT_3_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_TSTAT_3_2.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_TSUIC_3_1.yaml b/src/app/tests/suites/certification/Test_TC_TSUIC_3_1.yaml
index efb786c..4b9d1bb 100644
--- a/src/app/tests/suites/certification/Test_TC_TSUIC_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_TSUIC_3_1.yaml
@@ -24,7 +24,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml b/src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml
index 6dd8050..be6d0a8 100644
--- a/src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_ULABEL_3_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_WNCV_6_1.yaml b/src/app/tests/suites/certification/Test_TC_WNCV_6_1.yaml
index 2abc47a..d78f30c 100644
--- a/src/app/tests/suites/certification/Test_TC_WNCV_6_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_WNCV_6_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/certification/Test_TC_WNCV_7_1.yaml b/src/app/tests/suites/certification/Test_TC_WNCV_7_1.yaml
index ed819bf..6b80516 100644
--- a/src/app/tests/suites/certification/Test_TC_WNCV_7_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_WNCV_7_1.yaml
@@ -20,7 +20,7 @@
 
 config:
     nodeId: 0x12344321
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
 
 tests:
diff --git a/src/app/tests/suites/examples/Test_Example_1.yaml b/src/app/tests/suites/examples/Test_Example_1.yaml
index fd8994e..2306854 100644
--- a/src/app/tests/suites/examples/Test_Example_1.yaml
+++ b/src/app/tests/suites/examples/Test_Example_1.yaml
@@ -1,5 +1,5 @@
 config:
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
     testOneVariable:
         type: INT16U
diff --git a/src/app/tests/suites/examples/Test_Example_2.yaml b/src/app/tests/suites/examples/Test_Example_2.yaml
index 6d23a57..cc987ca 100644
--- a/src/app/tests/suites/examples/Test_Example_2.yaml
+++ b/src/app/tests/suites/examples/Test_Example_2.yaml
@@ -1,5 +1,5 @@
 config:
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
     testTwoVariable:
         type: INT16U
diff --git a/src/app/tests/suites/examples/Test_Example_3.yaml b/src/app/tests/suites/examples/Test_Example_3.yaml
index 3ebfe6e..f2ca0a0 100644
--- a/src/app/tests/suites/examples/Test_Example_3.yaml
+++ b/src/app/tests/suites/examples/Test_Example_3.yaml
@@ -1,5 +1,5 @@
 config:
-    cluster: "Basic"
+    cluster: "Basic Information"
     endpoint: 0
     testThreeVariable:
         type: INT16U
diff --git a/src/app/util/debug-printing-test.h b/src/app/util/debug-printing-test.h
index e399b24..da6ab7f 100644
--- a/src/app/util/debug-printing-test.h
+++ b/src/app/util/debug-printing-test.h
@@ -149,7 +149,7 @@
 
 #define EMBER_AF_PRINT_NAMES                                                                                                       \
     {                                                                                                                              \
-        "Basic", "Power Configuration", "Device Temperature Configuration", "Identify", "Groups", "Scenes", "On/off",              \
+        "Basic Information", "Power Configuration", "Device Temperature Configuration", "Identify", "Groups", "Scenes", "On/off",  \
             "On/off Switch Configuration", "Level Control", "Alarms", "Time", "RSSI Location", "Binary Input (Basic)",             \
             "Commissioning", "Partition", "Over the Air Bootloading", "Power Profile", "Appliance Control", "Poll Control",        \
             "Green Power", "Keep-Alive", "Shade Configuration", "Door Lock", "Window Covering", "Barrier Control",                 \
diff --git a/src/app/zap-templates/zcl/data-model/chip/basic-information-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/basic-information-cluster.xml
index b111eaa..f86bb84 100644
--- a/src/app/zap-templates/zcl/data-model/chip/basic-information-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/basic-information-cluster.xml
@@ -24,10 +24,10 @@
   </struct>
 
   <cluster singleton="true">
-    <name>Basic</name>
+    <name>Basic Information</name>
     <domain>CHIP</domain>
     <code>0x0028</code>
-    <define>BASIC_CLUSTER</define>
+    <define>BASIC_INFORMATION_CLUSTER</define>
     <description>This cluster provides attributes and events for determining basic information about Nodes, which supports both
       Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number,
       which apply to the whole Node. Also allows setting user device information such as location.</description>
diff --git a/src/app/zap-templates/zcl/data-model/chip/matter-devices.xml b/src/app/zap-templates/zcl/data-model/chip/matter-devices.xml
index 1dfe3d5..be554e8 100644
--- a/src/app/zap-templates/zcl/data-model/chip/matter-devices.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/matter-devices.xml
@@ -40,7 +40,7 @@
                 <requireAttribute>ACL</requireAttribute>
                 <requireAttribute>EXTENSION</requireAttribute>
             </include>
-            <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+            <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
                 <requireAttribute>DATA_MODEL_REVISION</requireAttribute>
                 <requireAttribute>VENDOR_NAME</requireAttribute>
                 <requireAttribute>VENDOR_ID</requireAttribute>
diff --git a/src/app/zap-templates/zcl/data-model/silabs/lo-devices.xml b/src/app/zap-templates/zcl/data-model/silabs/lo-devices.xml
index 5a7b8a7..c85f001 100644
--- a/src/app/zap-templates/zcl/data-model/silabs/lo-devices.xml
+++ b/src/app/zap-templates/zcl/data-model/silabs/lo-devices.xml
@@ -23,7 +23,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0100</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -96,7 +96,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0101</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -182,7 +182,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0102</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -320,7 +320,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0103</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -361,7 +361,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0104</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -404,7 +404,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0105</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -449,7 +449,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0106</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -489,7 +489,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0107</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -528,7 +528,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0108</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -628,7 +628,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0109</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -728,7 +728,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x010A</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -814,7 +814,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x010B</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -900,7 +900,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x010C</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -1035,7 +1035,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x010D</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -1180,7 +1180,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x010E</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -1219,7 +1219,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0800</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -1259,7 +1259,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0810</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -1301,7 +1301,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0820</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -1339,7 +1339,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0830</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -1379,7 +1379,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0840</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -1427,7 +1427,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0850</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
diff --git a/src/app/zap-templates/zcl/data-model/silabs/zll-devices.xml b/src/app/zap-templates/zcl/data-model/silabs/zll-devices.xml
index 9a947ce..cc85510 100644
--- a/src/app/zap-templates/zcl/data-model/silabs/zll-devices.xml
+++ b/src/app/zap-templates/zcl/data-model/silabs/zll-devices.xml
@@ -23,7 +23,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0000</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -101,7 +101,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0010</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -179,7 +179,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0100</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -257,7 +257,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0110</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -335,7 +335,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0200</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -470,7 +470,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0210</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -605,7 +605,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0220</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -740,7 +740,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0800</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -774,7 +774,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0810</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -819,7 +819,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0820</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -852,7 +852,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0830</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -896,7 +896,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0840</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
@@ -941,7 +941,7 @@
     <profileId editable="false">0x0104</profileId>
     <deviceId editable="false">0x0850</deviceId>
     <clusters lockOthers="true">
-      <include cluster="Basic" client="false" server="true" clientLocked="true" serverLocked="true">
+      <include cluster="Basic Information" client="false" server="true" clientLocked="true" serverLocked="true">
         <requireAttribute>VERSION</requireAttribute>
         <requireAttribute>APPLICATION_VERSION</requireAttribute>
         <requireAttribute>STACK_VERSION</requireAttribute>
diff --git a/src/app/zap-templates/zcl/zcl-with-test-extensions.json b/src/app/zap-templates/zcl/zcl-with-test-extensions.json
index 51f9acc..3fc6613 100644
--- a/src/app/zap-templates/zcl/zcl-with-test-extensions.json
+++ b/src/app/zap-templates/zcl/zcl-with-test-extensions.json
@@ -113,7 +113,7 @@
             "AdminFabricIndex",
             "AdminVendorId"
         ],
-        "Basic": [
+        "Basic Information": [
             "DataModelRevision",
             "VendorName",
             "VendorID",
diff --git a/src/app/zap-templates/zcl/zcl.json b/src/app/zap-templates/zcl/zcl.json
index 52f482a..8634aae 100644
--- a/src/app/zap-templates/zcl/zcl.json
+++ b/src/app/zap-templates/zcl/zcl.json
@@ -107,7 +107,7 @@
             "AdminFabricIndex",
             "AdminVendorId"
         ],
-        "Basic": [
+        "Basic Information": [
             "DataModelRevision",
             "VendorName",
             "VendorID",
diff --git a/src/app/zap_cluster_list.py b/src/app/zap_cluster_list.py
index 1515eee..9c420b9 100755
--- a/src/app/zap_cluster_list.py
+++ b/src/app/zap_cluster_list.py
@@ -18,7 +18,7 @@
     'AUDIO_OUTPUT_CLUSTER': ['audio-output-server'],
     'BALLAST_CONFIGURATION_CLUSTER': [],
     'BARRIER_CONTROL_CLUSTER': ['barrier-control-server'],
-    'BASIC_CLUSTER': ['basic'],
+    'BASIC_INFORMATION_CLUSTER': ['basic-information'],
     'BINARY_INPUT_BASIC_CLUSTER': [],
     'BINDING_CLUSTER': ['bindings'],
     'BOOLEAN_STATE_CLUSTER': [],
@@ -104,7 +104,7 @@
     'AUDIO_OUTPUT_CLUSTER': [],
     'BALLAST_CONFIGURATION_CLUSTER': [],
     'BARRIER_CONTROL_CLUSTER': [],
-    'BASIC_CLUSTER': [],
+    'BASIC_INFORMATION_CLUSTER': [],
     'BINARY_INPUT_BASIC_CLUSTER': [],
     'BINDING_CLUSTER': [],
     'BOOLEAN_STATE_CLUSTER': [],
diff --git a/src/controller/CHIPDeviceController.cpp b/src/controller/CHIPDeviceController.cpp
index 49bd984..201cb22 100644
--- a/src/controller/CHIPDeviceController.cpp
+++ b/src/controller/CHIPDeviceController.cpp
@@ -1782,24 +1782,27 @@
     // Try to parse as much as we can here before returning, even if this is an error.
     return_err = err == CHIP_NO_ERROR ? return_err : err;
 
-    err = mAttributeCache->ForEachAttribute(app::Clusters::Basic::Id, [this, &info](const app::ConcreteAttributePath & path) {
-        if (path.mAttributeId != app::Clusters::Basic::Attributes::VendorID::Id &&
-            path.mAttributeId != app::Clusters::Basic::Attributes::ProductID::Id)
-        {
-            // Continue on
-            return CHIP_NO_ERROR;
-        }
+    err = mAttributeCache->ForEachAttribute(
+        app::Clusters::BasicInformation::Id, [this, &info](const app::ConcreteAttributePath & path) {
+            if (path.mAttributeId != app::Clusters::BasicInformation::Attributes::VendorID::Id &&
+                path.mAttributeId != app::Clusters::BasicInformation::Attributes::ProductID::Id)
+            {
+                // Continue on
+                return CHIP_NO_ERROR;
+            }
 
-        switch (path.mAttributeId)
-        {
-        case app::Clusters::Basic::Attributes::VendorID::Id:
-            return this->mAttributeCache->Get<app::Clusters::Basic::Attributes::VendorID::TypeInfo>(path, info.basic.vendorId);
-        case app::Clusters::Basic::Attributes::ProductID::Id:
-            return this->mAttributeCache->Get<app::Clusters::Basic::Attributes::ProductID::TypeInfo>(path, info.basic.productId);
-        default:
-            return CHIP_NO_ERROR;
-        }
-    });
+            switch (path.mAttributeId)
+            {
+            case app::Clusters::BasicInformation::Attributes::VendorID::Id:
+                return this->mAttributeCache->Get<app::Clusters::BasicInformation::Attributes::VendorID::TypeInfo>(
+                    path, info.basic.vendorId);
+            case app::Clusters::BasicInformation::Attributes::ProductID::Id:
+                return this->mAttributeCache->Get<app::Clusters::BasicInformation::Attributes::ProductID::TypeInfo>(
+                    path, info.basic.productId);
+            default:
+                return CHIP_NO_ERROR;
+            }
+        });
 
     // Try to parse as much as we can here before returning, even if this is an error.
     return_err = (err == CHIP_NO_ERROR) ? return_err : err;
@@ -2136,9 +2139,10 @@
         readPaths[4] = app::AttributePathParams(endpoint, app::Clusters::GeneralCommissioning::Id,
                                                 app::Clusters::GeneralCommissioning::Attributes::LocationCapability::Id);
         // Read attributes from the basic info cluster (vendor id / product id / software version)
-        readPaths[5] = app::AttributePathParams(endpoint, app::Clusters::Basic::Id, app::Clusters::Basic::Attributes::VendorID::Id);
-        readPaths[6] =
-            app::AttributePathParams(endpoint, app::Clusters::Basic::Id, app::Clusters::Basic::Attributes::ProductID::Id);
+        readPaths[5] = app::AttributePathParams(endpoint, app::Clusters::BasicInformation::Id,
+                                                app::Clusters::BasicInformation::Attributes::VendorID::Id);
+        readPaths[6] = app::AttributePathParams(endpoint, app::Clusters::BasicInformation::Id,
+                                                app::Clusters::BasicInformation::Attributes::ProductID::Id);
         // Read the requested minimum connection times from all network commissioning clusters
         readPaths[7] = app::AttributePathParams(app::Clusters::NetworkCommissioning::Id,
                                                 app::Clusters::NetworkCommissioning::Attributes::ConnectMaxTimeSeconds::Id);
diff --git a/src/controller/CommissioningWindowOpener.cpp b/src/controller/CommissioningWindowOpener.cpp
index f2beabc..99f7a09 100644
--- a/src/controller/CommissioningWindowOpener.cpp
+++ b/src/controller/CommissioningWindowOpener.cpp
@@ -271,20 +271,18 @@
     switch (self->mNextStep)
     {
     case Step::kReadVID: {
-        constexpr EndpointId kBasicClusterEndpoint = 0;
-        BasicCluster cluster(exchangeMgr, sessionHandle, kBasicClusterEndpoint);
-        err = cluster.ReadAttribute<app::Clusters::Basic::Attributes::VendorID::TypeInfo>(context, OnVIDReadResponse,
-                                                                                          OnVIDPIDReadFailureResponse);
+        BasicInformationCluster cluster(exchangeMgr, sessionHandle, kRootEndpointId);
+        err = cluster.ReadAttribute<app::Clusters::BasicInformation::Attributes::VendorID::TypeInfo>(context, OnVIDReadResponse,
+                                                                                                     OnVIDPIDReadFailureResponse);
 #if CHIP_ERROR_LOGGING
         messageIfError = "Could not read VID for opening commissioning window";
 #endif // CHIP_ERROR_LOGGING
         break;
     }
     case Step::kReadPID: {
-        constexpr EndpointId kBasicClusterEndpoint = 0;
-        BasicCluster cluster(exchangeMgr, sessionHandle, kBasicClusterEndpoint);
-        err = cluster.ReadAttribute<app::Clusters::Basic::Attributes::ProductID::TypeInfo>(context, OnPIDReadResponse,
-                                                                                           OnVIDPIDReadFailureResponse);
+        BasicInformationCluster cluster(exchangeMgr, sessionHandle, kRootEndpointId);
+        err = cluster.ReadAttribute<app::Clusters::BasicInformation::Attributes::ProductID::TypeInfo>(context, OnPIDReadResponse,
+                                                                                                      OnVIDPIDReadFailureResponse);
 #if CHIP_ERROR_LOGGING
         messageIfError = "Could not read PID for opening commissioning window";
 #endif // CHIP_ERROR_LOGGING
diff --git a/src/controller/data_model/BUILD.gn b/src/controller/data_model/BUILD.gn
index 95b0e6c..7e7aafc 100644
--- a/src/controller/data_model/BUILD.gn
+++ b/src/controller/data_model/BUILD.gn
@@ -64,8 +64,8 @@
       "jni/AccessControlClient-InvokeSubscribeImpl.cpp",
       "jni/ActionsClient-ReadImpl.cpp",
       "jni/ActionsClient-InvokeSubscribeImpl.cpp",
-      "jni/BasicClient-ReadImpl.cpp",
-      "jni/BasicClient-InvokeSubscribeImpl.cpp",
+      "jni/BasicInformationClient-ReadImpl.cpp",
+      "jni/BasicInformationClient-InvokeSubscribeImpl.cpp",
       "jni/OtaSoftwareUpdateProviderClient-ReadImpl.cpp",
       "jni/OtaSoftwareUpdateProviderClient-InvokeSubscribeImpl.cpp",
       "jni/OtaSoftwareUpdateRequestorClient-ReadImpl.cpp",
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index 7b448f4..2b37fb7 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -678,7 +678,7 @@
   command DisableActionWithDuration(DisableActionWithDurationRequest): DefaultSuccess = 11;
 }
 
-client cluster Basic = 40 {
+client cluster BasicInformation = 40 {
   struct CapabilityMinimaStruct {
     int16u caseSessionsPerFabric = 0;
     int16u subscriptionsPerFabric = 1;
@@ -4418,7 +4418,7 @@
   binding cluster Binding;
   binding cluster AccessControl;
   binding cluster Actions;
-  binding cluster Basic;
+  binding cluster BasicInformation;
   binding cluster OtaSoftwareUpdateProvider;
   binding cluster OtaSoftwareUpdateRequestor;
   binding cluster LocalizationConfiguration;
diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap
index 217d7ae..6a6e911 100644
--- a/src/controller/data_model/controller-clusters.zap
+++ b/src/controller/data_model/controller-clusters.zap
@@ -1,5 +1,5 @@
 {
-  "featureLevel": 87,
+  "featureLevel": 89,
   "creator": "zap",
   "keyValuePairs": [
     {
@@ -18,17 +18,17 @@
   "package": [
     {
       "pathRelativity": "relativeToZap",
-      "path": "../../app/zap-templates/app-templates.json",
-      "type": "gen-templates-json",
-      "version": "chip-v1"
-    },
-    {
-      "pathRelativity": "relativeToZap",
       "path": "../../app/zap-templates/zcl/zcl.json",
       "type": "zcl-properties",
       "category": "matter",
       "version": 1,
       "description": "Matter SDK ZCL data"
+    },
+    {
+      "pathRelativity": "relativeToZap",
+      "path": "../../app/zap-templates/app-templates.json",
+      "type": "gen-templates-json",
+      "version": "chip-v1"
     }
   ],
   "endpointTypes": [
@@ -2603,10 +2603,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "client",
           "enabled": 1,
           "attributes": [
@@ -2629,10 +2629,10 @@
           ]
         },
         {
-          "name": "Basic",
+          "name": "Basic Information",
           "code": 40,
           "mfgCode": null,
-          "define": "BASIC_CLUSTER",
+          "define": "BASIC_INFORMATION_CLUSTER",
           "side": "server",
           "enabled": 0,
           "attributes": [
@@ -19557,6 +19557,5 @@
       "endpointVersion": 1,
       "deviceIdentifier": 22
     }
-  ],
-  "log": []
+  ]
 }
\ No newline at end of file
diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
index 3e375f9..b497ca9 100644
--- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
@@ -2435,8 +2435,8 @@
         }
         break;
     }
-    case app::Clusters::Basic::Id: {
-        using namespace app::Clusters::Basic;
+    case app::Clusters::BasicInformation::Id: {
+        using namespace app::Clusters::BasicInformation;
         switch (aPath.mAttributeId)
         {
         case Attributes::DataModelRevision::Id: {
@@ -2712,17 +2712,18 @@
 
             jclass capabilityMinimaStructStructClass_0;
             err = chip::JniReferences::GetInstance().GetClassRef(
-                env, "chip/devicecontroller/ChipStructs$BasicClusterCapabilityMinimaStruct", capabilityMinimaStructStructClass_0);
+                env, "chip/devicecontroller/ChipStructs$BasicInformationClusterCapabilityMinimaStruct",
+                capabilityMinimaStructStructClass_0);
             if (err != CHIP_NO_ERROR)
             {
-                ChipLogError(Zcl, "Could not find class ChipStructs$BasicClusterCapabilityMinimaStruct");
+                ChipLogError(Zcl, "Could not find class ChipStructs$BasicInformationClusterCapabilityMinimaStruct");
                 return nullptr;
             }
             jmethodID capabilityMinimaStructStructCtor_0 =
                 env->GetMethodID(capabilityMinimaStructStructClass_0, "<init>", "(Ljava/lang/Integer;Ljava/lang/Integer;)V");
             if (capabilityMinimaStructStructCtor_0 == nullptr)
             {
-                ChipLogError(Zcl, "Could not find ChipStructs$BasicClusterCapabilityMinimaStruct constructor");
+                ChipLogError(Zcl, "Could not find ChipStructs$BasicInformationClusterCapabilityMinimaStruct constructor");
                 return nullptr;
             }
 
diff --git a/src/controller/java/zap-generated/CHIPCallbackTypes.h b/src/controller/java/zap-generated/CHIPCallbackTypes.h
index 2a1d813..660ddda 100644
--- a/src/controller/java/zap-generated/CHIPCallbackTypes.h
+++ b/src/controller/java/zap-generated/CHIPCallbackTypes.h
@@ -254,56 +254,56 @@
 typedef void (*CHIPActionsClusterClusterRevisionAttributeCallbackType)(
     void *, chip::app::Clusters::Actions::Attributes::ClusterRevision::TypeInfo::DecodableArgType);
 
-typedef void (*CHIPBasicClusterDataModelRevisionAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::DataModelRevision::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterVendorNameAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::VendorName::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterVendorIDAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::VendorID::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterProductNameAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::ProductName::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterProductIDAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::ProductID::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterNodeLabelAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::NodeLabel::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterLocationAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::Location::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterHardwareVersionAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::HardwareVersion::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterHardwareVersionStringAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::HardwareVersionString::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterSoftwareVersionAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::SoftwareVersion::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterSoftwareVersionStringAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::SoftwareVersionString::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterManufacturingDateAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::ManufacturingDate::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterPartNumberAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::PartNumber::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterProductURLAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::ProductURL::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterProductLabelAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::ProductLabel::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterSerialNumberAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::SerialNumber::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterLocalConfigDisabledAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::LocalConfigDisabled::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterReachableAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::Reachable::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterUniqueIDAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::UniqueID::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterCapabilityMinimaAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::CapabilityMinima::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterGeneratedCommandListAttributeCallbackType)(
-    void *, const chip::app::Clusters::Basic::Attributes::GeneratedCommandList::TypeInfo::DecodableType &);
-typedef void (*CHIPBasicClusterAcceptedCommandListAttributeCallbackType)(
-    void *, const chip::app::Clusters::Basic::Attributes::AcceptedCommandList::TypeInfo::DecodableType &);
-typedef void (*CHIPBasicClusterAttributeListAttributeCallbackType)(
-    void *, const chip::app::Clusters::Basic::Attributes::AttributeList::TypeInfo::DecodableType &);
-typedef void (*CHIPBasicClusterFeatureMapAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::FeatureMap::TypeInfo::DecodableArgType);
-typedef void (*CHIPBasicClusterClusterRevisionAttributeCallbackType)(
-    void *, chip::app::Clusters::Basic::Attributes::ClusterRevision::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterDataModelRevisionAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::DataModelRevision::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterVendorNameAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::VendorName::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterVendorIDAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::VendorID::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterProductNameAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::ProductName::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterProductIDAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::ProductID::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterNodeLabelAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::NodeLabel::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterLocationAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::Location::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterHardwareVersionAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::HardwareVersion::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterHardwareVersionStringAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::HardwareVersionString::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterSoftwareVersionAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::SoftwareVersion::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterSoftwareVersionStringAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::SoftwareVersionString::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterManufacturingDateAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::ManufacturingDate::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterPartNumberAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::PartNumber::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterProductURLAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::ProductURL::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterProductLabelAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::ProductLabel::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterSerialNumberAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::SerialNumber::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterLocalConfigDisabledAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::LocalConfigDisabled::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterReachableAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::Reachable::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterUniqueIDAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::UniqueID::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterCapabilityMinimaAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::CapabilityMinima::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterGeneratedCommandListAttributeCallbackType)(
+    void *, const chip::app::Clusters::BasicInformation::Attributes::GeneratedCommandList::TypeInfo::DecodableType &);
+typedef void (*CHIPBasicInformationClusterAcceptedCommandListAttributeCallbackType)(
+    void *, const chip::app::Clusters::BasicInformation::Attributes::AcceptedCommandList::TypeInfo::DecodableType &);
+typedef void (*CHIPBasicInformationClusterAttributeListAttributeCallbackType)(
+    void *, const chip::app::Clusters::BasicInformation::Attributes::AttributeList::TypeInfo::DecodableType &);
+typedef void (*CHIPBasicInformationClusterFeatureMapAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::FeatureMap::TypeInfo::DecodableArgType);
+typedef void (*CHIPBasicInformationClusterClusterRevisionAttributeCallbackType)(
+    void *, chip::app::Clusters::BasicInformation::Attributes::ClusterRevision::TypeInfo::DecodableArgType);
 typedef void (*CHIPOtaSoftwareUpdateProviderClusterQueryImageResponseCallbackType)(
     void *, const chip::app::Clusters::OtaSoftwareUpdateProvider::Commands::QueryImageResponse::DecodableType &);
 typedef void (*CHIPOtaSoftwareUpdateProviderClusterApplyUpdateResponseCallbackType)(
diff --git a/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp b/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp
index 8fa0e3d..265a532 100644
--- a/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp
+++ b/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp
@@ -1234,12 +1234,12 @@
     onFailure.release();
 }
 
-JNI_METHOD(void, BasicCluster, writeNodeLabelAttribute)
+JNI_METHOD(void, BasicInformationCluster, writeNodeLabelAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jstring value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::Basic::Attributes::NodeLabel::TypeInfo;
+    using TypeInfo = chip::app::Clusters::BasicInformation::Attributes::NodeLabel::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector<Platform::UniquePtr<JniByteArray>> cleanupByteArrays;
@@ -1260,8 +1260,8 @@
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
-    CHIP_ERROR err            = CHIP_NO_ERROR;
-    BasicCluster * cppCluster = reinterpret_cast<BasicCluster *>(clusterPtr);
+    CHIP_ERROR err                       = CHIP_NO_ERROR;
+    BasicInformationCluster * cppCluster = reinterpret_cast<BasicInformationCluster *>(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -1286,12 +1286,12 @@
     onFailure.release();
 }
 
-JNI_METHOD(void, BasicCluster, writeLocationAttribute)
+JNI_METHOD(void, BasicInformationCluster, writeLocationAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jstring value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::Basic::Attributes::Location::TypeInfo;
+    using TypeInfo = chip::app::Clusters::BasicInformation::Attributes::Location::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector<Platform::UniquePtr<JniByteArray>> cleanupByteArrays;
@@ -1312,8 +1312,8 @@
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
-    CHIP_ERROR err            = CHIP_NO_ERROR;
-    BasicCluster * cppCluster = reinterpret_cast<BasicCluster *>(clusterPtr);
+    CHIP_ERROR err                       = CHIP_NO_ERROR;
+    BasicInformationCluster * cppCluster = reinterpret_cast<BasicInformationCluster *>(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -1338,12 +1338,12 @@
     onFailure.release();
 }
 
-JNI_METHOD(void, BasicCluster, writeLocalConfigDisabledAttribute)
+JNI_METHOD(void, BasicInformationCluster, writeLocalConfigDisabledAttribute)
 (JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
 {
     chip::DeviceLayer::StackLock lock;
     ListFreer listFreer;
-    using TypeInfo = chip::app::Clusters::Basic::Attributes::LocalConfigDisabled::TypeInfo;
+    using TypeInfo = chip::app::Clusters::BasicInformation::Attributes::LocalConfigDisabled::TypeInfo;
     TypeInfo::Type cppValue;
 
     std::vector<Platform::UniquePtr<JniByteArray>> cleanupByteArrays;
@@ -1364,8 +1364,8 @@
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
 
-    CHIP_ERROR err            = CHIP_NO_ERROR;
-    BasicCluster * cppCluster = reinterpret_cast<BasicCluster *>(clusterPtr);
+    CHIP_ERROR err                       = CHIP_NO_ERROR;
+    BasicInformationCluster * cppCluster = reinterpret_cast<BasicInformationCluster *>(clusterPtr);
     VerifyOrReturn(cppCluster != nullptr,
                    chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
                        env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
diff --git a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
index eb53f82..3b71620 100644
--- a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
@@ -583,8 +583,8 @@
         }
         break;
     }
-    case app::Clusters::Basic::Id: {
-        using namespace app::Clusters::Basic;
+    case app::Clusters::BasicInformation::Id: {
+        using namespace app::Clusters::BasicInformation;
         switch (aPath.mEventId)
         {
         case Events::StartUp::Id: {
@@ -603,16 +603,16 @@
 
             jclass startUpStructClass;
             err = chip::JniReferences::GetInstance().GetClassRef(
-                env, "chip/devicecontroller/ChipEventStructs$BasicClusterStartUpEvent", startUpStructClass);
+                env, "chip/devicecontroller/ChipEventStructs$BasicInformationClusterStartUpEvent", startUpStructClass);
             if (err != CHIP_NO_ERROR)
             {
-                ChipLogError(Zcl, "Could not find class ChipEventStructs$BasicClusterStartUpEvent");
+                ChipLogError(Zcl, "Could not find class ChipEventStructs$BasicInformationClusterStartUpEvent");
                 return nullptr;
             }
             jmethodID startUpStructCtor = env->GetMethodID(startUpStructClass, "<init>", "(Ljava/lang/Long;)V");
             if (startUpStructCtor == nullptr)
             {
-                ChipLogError(Zcl, "Could not find ChipEventStructs$BasicClusterStartUpEvent constructor");
+                ChipLogError(Zcl, "Could not find ChipEventStructs$BasicInformationClusterStartUpEvent constructor");
                 return nullptr;
             }
 
@@ -629,16 +629,16 @@
             }
             jclass shutDownStructClass;
             err = chip::JniReferences::GetInstance().GetClassRef(
-                env, "chip/devicecontroller/ChipEventStructs$BasicClusterShutDownEvent", shutDownStructClass);
+                env, "chip/devicecontroller/ChipEventStructs$BasicInformationClusterShutDownEvent", shutDownStructClass);
             if (err != CHIP_NO_ERROR)
             {
-                ChipLogError(Zcl, "Could not find class ChipEventStructs$BasicClusterShutDownEvent");
+                ChipLogError(Zcl, "Could not find class ChipEventStructs$BasicInformationClusterShutDownEvent");
                 return nullptr;
             }
             jmethodID shutDownStructCtor = env->GetMethodID(shutDownStructClass, "<init>", "()V");
             if (shutDownStructCtor == nullptr)
             {
-                ChipLogError(Zcl, "Could not find ChipEventStructs$BasicClusterShutDownEvent constructor");
+                ChipLogError(Zcl, "Could not find ChipEventStructs$BasicInformationClusterShutDownEvent constructor");
                 return nullptr;
             }
 
@@ -662,16 +662,16 @@
 
             jclass leaveStructClass;
             err = chip::JniReferences::GetInstance().GetClassRef(
-                env, "chip/devicecontroller/ChipEventStructs$BasicClusterLeaveEvent", leaveStructClass);
+                env, "chip/devicecontroller/ChipEventStructs$BasicInformationClusterLeaveEvent", leaveStructClass);
             if (err != CHIP_NO_ERROR)
             {
-                ChipLogError(Zcl, "Could not find class ChipEventStructs$BasicClusterLeaveEvent");
+                ChipLogError(Zcl, "Could not find class ChipEventStructs$BasicInformationClusterLeaveEvent");
                 return nullptr;
             }
             jmethodID leaveStructCtor = env->GetMethodID(leaveStructClass, "<init>", "(Ljava/lang/Integer;)V");
             if (leaveStructCtor == nullptr)
             {
-                ChipLogError(Zcl, "Could not find ChipEventStructs$BasicClusterLeaveEvent constructor");
+                ChipLogError(Zcl, "Could not find ChipEventStructs$BasicInformationClusterLeaveEvent constructor");
                 return nullptr;
             }
 
@@ -695,17 +695,18 @@
 
             jclass reachableChangedStructClass;
             err = chip::JniReferences::GetInstance().GetClassRef(
-                env, "chip/devicecontroller/ChipEventStructs$BasicClusterReachableChangedEvent", reachableChangedStructClass);
+                env, "chip/devicecontroller/ChipEventStructs$BasicInformationClusterReachableChangedEvent",
+                reachableChangedStructClass);
             if (err != CHIP_NO_ERROR)
             {
-                ChipLogError(Zcl, "Could not find class ChipEventStructs$BasicClusterReachableChangedEvent");
+                ChipLogError(Zcl, "Could not find class ChipEventStructs$BasicInformationClusterReachableChangedEvent");
                 return nullptr;
             }
             jmethodID reachableChangedStructCtor =
                 env->GetMethodID(reachableChangedStructClass, "<init>", "(Ljava/lang/Boolean;)V");
             if (reachableChangedStructCtor == nullptr)
             {
-                ChipLogError(Zcl, "Could not find ChipEventStructs$BasicClusterReachableChangedEvent constructor");
+                ChipLogError(Zcl, "Could not find ChipEventStructs$BasicInformationClusterReachableChangedEvent constructor");
                 return nullptr;
             }
 
diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
index 65e9a42..4e87497 100644
--- a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
+++ b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
@@ -4506,8 +4506,8 @@
     env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
 }
 
-CHIPBasicVendorIDAttributeCallback::CHIPBasicVendorIDAttributeCallback(jobject javaCallback, bool keepAlive) :
-    chip::Callback::Callback<CHIPBasicClusterVendorIDAttributeCallbackType>(CallbackFn, this), keepAlive(keepAlive)
+CHIPBasicInformationVendorIDAttributeCallback::CHIPBasicInformationVendorIDAttributeCallback(jobject javaCallback, bool keepAlive) :
+    chip::Callback::Callback<CHIPBasicInformationClusterVendorIDAttributeCallbackType>(CallbackFn, this), keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -4523,7 +4523,7 @@
     }
 }
 
-CHIPBasicVendorIDAttributeCallback::~CHIPBasicVendorIDAttributeCallback()
+CHIPBasicInformationVendorIDAttributeCallback::~CHIPBasicInformationVendorIDAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -4534,7 +4534,7 @@
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPBasicVendorIDAttributeCallback::CallbackFn(void * context, chip::VendorId value)
+void CHIPBasicInformationVendorIDAttributeCallback::CallbackFn(void * context, chip::VendorId value)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -4542,8 +4542,8 @@
     jobject javaCallbackRef;
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
-    std::unique_ptr<CHIPBasicVendorIDAttributeCallback, decltype(&maybeDestroy)> cppCallback(
-        reinterpret_cast<CHIPBasicVendorIDAttributeCallback *>(context), maybeDestroy);
+    std::unique_ptr<CHIPBasicInformationVendorIDAttributeCallback, decltype(&maybeDestroy)> cppCallback(
+        reinterpret_cast<CHIPBasicInformationVendorIDAttributeCallback *>(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -4563,9 +4563,9 @@
     env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
 }
 
-CHIPBasicGeneratedCommandListAttributeCallback::CHIPBasicGeneratedCommandListAttributeCallback(jobject javaCallback,
-                                                                                               bool keepAlive) :
-    chip::Callback::Callback<CHIPBasicClusterGeneratedCommandListAttributeCallbackType>(CallbackFn, this),
+CHIPBasicInformationGeneratedCommandListAttributeCallback::CHIPBasicInformationGeneratedCommandListAttributeCallback(
+    jobject javaCallback, bool keepAlive) :
+    chip::Callback::Callback<CHIPBasicInformationClusterGeneratedCommandListAttributeCallbackType>(CallbackFn, this),
     keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -4582,7 +4582,7 @@
     }
 }
 
-CHIPBasicGeneratedCommandListAttributeCallback::~CHIPBasicGeneratedCommandListAttributeCallback()
+CHIPBasicInformationGeneratedCommandListAttributeCallback::~CHIPBasicInformationGeneratedCommandListAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -4593,8 +4593,8 @@
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPBasicGeneratedCommandListAttributeCallback::CallbackFn(void * context,
-                                                                const chip::app::DataModel::DecodableList<chip::CommandId> & list)
+void CHIPBasicInformationGeneratedCommandListAttributeCallback::CallbackFn(
+    void * context, const chip::app::DataModel::DecodableList<chip::CommandId> & list)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -4603,8 +4603,8 @@
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
 
-    std::unique_ptr<CHIPBasicGeneratedCommandListAttributeCallback, decltype(&maybeDestroy)> cppCallback(
-        reinterpret_cast<CHIPBasicGeneratedCommandListAttributeCallback *>(context), maybeDestroy);
+    std::unique_ptr<CHIPBasicInformationGeneratedCommandListAttributeCallback, decltype(&maybeDestroy)> cppCallback(
+        reinterpret_cast<CHIPBasicInformationGeneratedCommandListAttributeCallback *>(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -4634,8 +4634,10 @@
     env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
 }
 
-CHIPBasicAcceptedCommandListAttributeCallback::CHIPBasicAcceptedCommandListAttributeCallback(jobject javaCallback, bool keepAlive) :
-    chip::Callback::Callback<CHIPBasicClusterAcceptedCommandListAttributeCallbackType>(CallbackFn, this), keepAlive(keepAlive)
+CHIPBasicInformationAcceptedCommandListAttributeCallback::CHIPBasicInformationAcceptedCommandListAttributeCallback(
+    jobject javaCallback, bool keepAlive) :
+    chip::Callback::Callback<CHIPBasicInformationClusterAcceptedCommandListAttributeCallbackType>(CallbackFn, this),
+    keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -4651,7 +4653,7 @@
     }
 }
 
-CHIPBasicAcceptedCommandListAttributeCallback::~CHIPBasicAcceptedCommandListAttributeCallback()
+CHIPBasicInformationAcceptedCommandListAttributeCallback::~CHIPBasicInformationAcceptedCommandListAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -4662,8 +4664,8 @@
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPBasicAcceptedCommandListAttributeCallback::CallbackFn(void * context,
-                                                               const chip::app::DataModel::DecodableList<chip::CommandId> & list)
+void CHIPBasicInformationAcceptedCommandListAttributeCallback::CallbackFn(
+    void * context, const chip::app::DataModel::DecodableList<chip::CommandId> & list)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -4672,8 +4674,8 @@
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
 
-    std::unique_ptr<CHIPBasicAcceptedCommandListAttributeCallback, decltype(&maybeDestroy)> cppCallback(
-        reinterpret_cast<CHIPBasicAcceptedCommandListAttributeCallback *>(context), maybeDestroy);
+    std::unique_ptr<CHIPBasicInformationAcceptedCommandListAttributeCallback, decltype(&maybeDestroy)> cppCallback(
+        reinterpret_cast<CHIPBasicInformationAcceptedCommandListAttributeCallback *>(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
@@ -4703,8 +4705,10 @@
     env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
 }
 
-CHIPBasicAttributeListAttributeCallback::CHIPBasicAttributeListAttributeCallback(jobject javaCallback, bool keepAlive) :
-    chip::Callback::Callback<CHIPBasicClusterAttributeListAttributeCallbackType>(CallbackFn, this), keepAlive(keepAlive)
+CHIPBasicInformationAttributeListAttributeCallback::CHIPBasicInformationAttributeListAttributeCallback(jobject javaCallback,
+                                                                                                       bool keepAlive) :
+    chip::Callback::Callback<CHIPBasicInformationClusterAttributeListAttributeCallbackType>(CallbackFn, this),
+    keepAlive(keepAlive)
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -4720,7 +4724,7 @@
     }
 }
 
-CHIPBasicAttributeListAttributeCallback::~CHIPBasicAttributeListAttributeCallback()
+CHIPBasicInformationAttributeListAttributeCallback::~CHIPBasicInformationAttributeListAttributeCallback()
 {
     JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
     if (env == nullptr)
@@ -4731,8 +4735,8 @@
     env->DeleteGlobalRef(javaCallbackRef);
 }
 
-void CHIPBasicAttributeListAttributeCallback::CallbackFn(void * context,
-                                                         const chip::app::DataModel::DecodableList<chip::AttributeId> & list)
+void CHIPBasicInformationAttributeListAttributeCallback::CallbackFn(
+    void * context, const chip::app::DataModel::DecodableList<chip::AttributeId> & list)
 {
     chip::DeviceLayer::StackUnlock unlock;
     CHIP_ERROR err = CHIP_NO_ERROR;
@@ -4741,8 +4745,8 @@
 
     VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
 
-    std::unique_ptr<CHIPBasicAttributeListAttributeCallback, decltype(&maybeDestroy)> cppCallback(
-        reinterpret_cast<CHIPBasicAttributeListAttributeCallback *>(context), maybeDestroy);
+    std::unique_ptr<CHIPBasicInformationAttributeListAttributeCallback, decltype(&maybeDestroy)> cppCallback(
+        reinterpret_cast<CHIPBasicInformationAttributeListAttributeCallback *>(context), maybeDestroy);
 
     // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
     javaCallbackRef = cppCallback.get()->javaCallbackRef;
diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.h b/src/controller/java/zap-generated/CHIPReadCallbacks.h
index c3787ec..aa4dc9c 100644
--- a/src/controller/java/zap-generated/CHIPReadCallbacks.h
+++ b/src/controller/java/zap-generated/CHIPReadCallbacks.h
@@ -1899,19 +1899,20 @@
     bool keepAlive;
 };
 
-class CHIPBasicVendorIDAttributeCallback : public chip::Callback::Callback<CHIPBasicClusterVendorIDAttributeCallbackType>
+class CHIPBasicInformationVendorIDAttributeCallback
+    : public chip::Callback::Callback<CHIPBasicInformationClusterVendorIDAttributeCallbackType>
 {
 public:
-    CHIPBasicVendorIDAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPBasicInformationVendorIDAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPBasicVendorIDAttributeCallback();
+    ~CHIPBasicInformationVendorIDAttributeCallback();
 
-    static void maybeDestroy(CHIPBasicVendorIDAttributeCallback * callback)
+    static void maybeDestroy(CHIPBasicInformationVendorIDAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete<CHIPBasicVendorIDAttributeCallback>(callback);
+            chip::Platform::Delete<CHIPBasicInformationVendorIDAttributeCallback>(callback);
         }
     }
 
@@ -1919,7 +1920,7 @@
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast<CHIPBasicVendorIDAttributeCallback *>(context)->javaCallbackRef);
+            reinterpret_cast<CHIPBasicInformationVendorIDAttributeCallback *>(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -1928,20 +1929,20 @@
     bool keepAlive;
 };
 
-class CHIPBasicGeneratedCommandListAttributeCallback
-    : public chip::Callback::Callback<CHIPBasicClusterGeneratedCommandListAttributeCallbackType>
+class CHIPBasicInformationGeneratedCommandListAttributeCallback
+    : public chip::Callback::Callback<CHIPBasicInformationClusterGeneratedCommandListAttributeCallbackType>
 {
 public:
-    CHIPBasicGeneratedCommandListAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPBasicInformationGeneratedCommandListAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPBasicGeneratedCommandListAttributeCallback();
+    ~CHIPBasicInformationGeneratedCommandListAttributeCallback();
 
-    static void maybeDestroy(CHIPBasicGeneratedCommandListAttributeCallback * callback)
+    static void maybeDestroy(CHIPBasicInformationGeneratedCommandListAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete<CHIPBasicGeneratedCommandListAttributeCallback>(callback);
+            chip::Platform::Delete<CHIPBasicInformationGeneratedCommandListAttributeCallback>(callback);
         }
     }
 
@@ -1949,7 +1950,7 @@
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast<CHIPBasicGeneratedCommandListAttributeCallback *>(context)->javaCallbackRef);
+            reinterpret_cast<CHIPBasicInformationGeneratedCommandListAttributeCallback *>(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -1958,20 +1959,20 @@
     bool keepAlive;
 };
 
-class CHIPBasicAcceptedCommandListAttributeCallback
-    : public chip::Callback::Callback<CHIPBasicClusterAcceptedCommandListAttributeCallbackType>
+class CHIPBasicInformationAcceptedCommandListAttributeCallback
+    : public chip::Callback::Callback<CHIPBasicInformationClusterAcceptedCommandListAttributeCallbackType>
 {
 public:
-    CHIPBasicAcceptedCommandListAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPBasicInformationAcceptedCommandListAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPBasicAcceptedCommandListAttributeCallback();
+    ~CHIPBasicInformationAcceptedCommandListAttributeCallback();
 
-    static void maybeDestroy(CHIPBasicAcceptedCommandListAttributeCallback * callback)
+    static void maybeDestroy(CHIPBasicInformationAcceptedCommandListAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete<CHIPBasicAcceptedCommandListAttributeCallback>(callback);
+            chip::Platform::Delete<CHIPBasicInformationAcceptedCommandListAttributeCallback>(callback);
         }
     }
 
@@ -1979,7 +1980,7 @@
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast<CHIPBasicAcceptedCommandListAttributeCallback *>(context)->javaCallbackRef);
+            reinterpret_cast<CHIPBasicInformationAcceptedCommandListAttributeCallback *>(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
@@ -1988,19 +1989,20 @@
     bool keepAlive;
 };
 
-class CHIPBasicAttributeListAttributeCallback : public chip::Callback::Callback<CHIPBasicClusterAttributeListAttributeCallbackType>
+class CHIPBasicInformationAttributeListAttributeCallback
+    : public chip::Callback::Callback<CHIPBasicInformationClusterAttributeListAttributeCallbackType>
 {
 public:
-    CHIPBasicAttributeListAttributeCallback(jobject javaCallback, bool keepAlive = false);
+    CHIPBasicInformationAttributeListAttributeCallback(jobject javaCallback, bool keepAlive = false);
 
-    ~CHIPBasicAttributeListAttributeCallback();
+    ~CHIPBasicInformationAttributeListAttributeCallback();
 
-    static void maybeDestroy(CHIPBasicAttributeListAttributeCallback * callback)
+    static void maybeDestroy(CHIPBasicInformationAttributeListAttributeCallback * callback)
     {
         if (!callback->keepAlive)
         {
             callback->Cancel();
-            chip::Platform::Delete<CHIPBasicAttributeListAttributeCallback>(callback);
+            chip::Platform::Delete<CHIPBasicInformationAttributeListAttributeCallback>(callback);
         }
     }
 
@@ -2008,7 +2010,7 @@
     static void OnSubscriptionEstablished(void * context)
     {
         CHIP_ERROR err = chip::JniReferences::GetInstance().CallSubscriptionEstablished(
-            reinterpret_cast<CHIPBasicAttributeListAttributeCallback *>(context)->javaCallbackRef);
+            reinterpret_cast<CHIPBasicInformationAttributeListAttributeCallback *>(context)->javaCallbackRef);
         VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error calling onSubscriptionEstablished: %s", ErrorStr(err)));
     };
 
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
index a6200f3..817a5ba 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
@@ -3560,10 +3560,10 @@
         long chipClusterPtr, IntegerAttributeCallback callback, int minInterval, int maxInterval);
   }
 
-  public static class BasicCluster extends BaseChipCluster {
+  public static class BasicInformationCluster extends BaseChipCluster {
     public static final long CLUSTER_ID = 40L;
 
-    public BasicCluster(long devicePtr, int endpointId) {
+    public BasicInformationCluster(long devicePtr, int endpointId) {
       super(devicePtr, endpointId);
     }
 
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java
index c306841..e9c60d7 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java
@@ -176,17 +176,17 @@
     }
   }
 
-  public static class BasicClusterStartUpEvent {
+  public static class BasicInformationClusterStartUpEvent {
     public Long softwareVersion;
 
-    public BasicClusterStartUpEvent(Long softwareVersion) {
+    public BasicInformationClusterStartUpEvent(Long softwareVersion) {
       this.softwareVersion = softwareVersion;
     }
 
     @Override
     public String toString() {
       StringBuilder output = new StringBuilder();
-      output.append("BasicClusterStartUpEvent {\n");
+      output.append("BasicInformationClusterStartUpEvent {\n");
       output.append("\tsoftwareVersion: ");
       output.append(softwareVersion);
       output.append("\n");
@@ -195,30 +195,30 @@
     }
   }
 
-  public static class BasicClusterShutDownEvent {
+  public static class BasicInformationClusterShutDownEvent {
 
-    public BasicClusterShutDownEvent() {}
+    public BasicInformationClusterShutDownEvent() {}
 
     @Override
     public String toString() {
       StringBuilder output = new StringBuilder();
-      output.append("BasicClusterShutDownEvent {\n");
+      output.append("BasicInformationClusterShutDownEvent {\n");
       output.append("}\n");
       return output.toString();
     }
   }
 
-  public static class BasicClusterLeaveEvent {
+  public static class BasicInformationClusterLeaveEvent {
     public Integer fabricIndex;
 
-    public BasicClusterLeaveEvent(Integer fabricIndex) {
+    public BasicInformationClusterLeaveEvent(Integer fabricIndex) {
       this.fabricIndex = fabricIndex;
     }
 
     @Override
     public String toString() {
       StringBuilder output = new StringBuilder();
-      output.append("BasicClusterLeaveEvent {\n");
+      output.append("BasicInformationClusterLeaveEvent {\n");
       output.append("\tfabricIndex: ");
       output.append(fabricIndex);
       output.append("\n");
@@ -227,17 +227,17 @@
     }
   }
 
-  public static class BasicClusterReachableChangedEvent {
+  public static class BasicInformationClusterReachableChangedEvent {
     public Boolean reachableNewValue;
 
-    public BasicClusterReachableChangedEvent(Boolean reachableNewValue) {
+    public BasicInformationClusterReachableChangedEvent(Boolean reachableNewValue) {
       this.reachableNewValue = reachableNewValue;
     }
 
     @Override
     public String toString() {
       StringBuilder output = new StringBuilder();
-      output.append("BasicClusterReachableChangedEvent {\n");
+      output.append("BasicInformationClusterReachableChangedEvent {\n");
       output.append("\treachableNewValue: ");
       output.append(reachableNewValue);
       output.append("\n");
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java
index 46be764..8538488 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java
@@ -59,7 +59,7 @@
       return "Actions";
     }
     if (clusterId == 40L) {
-      return "Basic";
+      return "BasicInformation";
     }
     if (clusterId == 41L) {
       return "OtaSoftwareUpdateProvider";
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java
index 19873b0..5c721f6 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java
@@ -325,11 +325,11 @@
     }
   }
 
-  public static class BasicClusterCapabilityMinimaStruct {
+  public static class BasicInformationClusterCapabilityMinimaStruct {
     public Integer caseSessionsPerFabric;
     public Integer subscriptionsPerFabric;
 
-    public BasicClusterCapabilityMinimaStruct(
+    public BasicInformationClusterCapabilityMinimaStruct(
         Integer caseSessionsPerFabric, Integer subscriptionsPerFabric) {
       this.caseSessionsPerFabric = caseSessionsPerFabric;
       this.subscriptionsPerFabric = subscriptionsPerFabric;
@@ -338,7 +338,7 @@
     @Override
     public String toString() {
       StringBuilder output = new StringBuilder();
-      output.append("BasicClusterCapabilityMinimaStruct {\n");
+      output.append("BasicInformationClusterCapabilityMinimaStruct {\n");
       output.append("\tcaseSessionsPerFabric: ");
       output.append(caseSessionsPerFabric);
       output.append("\n");
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
index 9a357cb..c3a06e9 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
@@ -1523,8 +1523,8 @@
     }
   }
 
-  public static class DelegatedBasicClusterGeneratedCommandListAttributeCallback
-      implements ChipClusters.BasicCluster.GeneratedCommandListAttributeCallback,
+  public static class DelegatedBasicInformationClusterGeneratedCommandListAttributeCallback
+      implements ChipClusters.BasicInformationCluster.GeneratedCommandListAttributeCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -1547,8 +1547,8 @@
     }
   }
 
-  public static class DelegatedBasicClusterAcceptedCommandListAttributeCallback
-      implements ChipClusters.BasicCluster.AcceptedCommandListAttributeCallback,
+  public static class DelegatedBasicInformationClusterAcceptedCommandListAttributeCallback
+      implements ChipClusters.BasicInformationCluster.AcceptedCommandListAttributeCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -1571,8 +1571,8 @@
     }
   }
 
-  public static class DelegatedBasicClusterAttributeListAttributeCallback
-      implements ChipClusters.BasicCluster.AttributeListAttributeCallback,
+  public static class DelegatedBasicInformationClusterAttributeListAttributeCallback
+      implements ChipClusters.BasicInformationCluster.AttributeListAttributeCallback,
           DelegatedClusterCallback {
     private ClusterCommandCallback callback;
 
@@ -7197,10 +7197,11 @@
         new ClusterInfo(
             (ptr, endpointId) -> new ChipClusters.ActionsCluster(ptr, endpointId), new HashMap<>());
     clusterMap.put("actions", actionsClusterInfo);
-    ClusterInfo basicClusterInfo =
+    ClusterInfo basicInformationClusterInfo =
         new ClusterInfo(
-            (ptr, endpointId) -> new ChipClusters.BasicCluster(ptr, endpointId), new HashMap<>());
-    clusterMap.put("basic", basicClusterInfo);
+            (ptr, endpointId) -> new ChipClusters.BasicInformationCluster(ptr, endpointId),
+            new HashMap<>());
+    clusterMap.put("basicInformation", basicInformationClusterInfo);
     ClusterInfo otaSoftwareUpdateProviderClusterInfo =
         new ClusterInfo(
             (ptr, endpointId) -> new ChipClusters.OtaSoftwareUpdateProviderCluster(ptr, endpointId),
@@ -7489,7 +7490,7 @@
     destination.get("binding").combineCommands(source.get("binding"));
     destination.get("accessControl").combineCommands(source.get("accessControl"));
     destination.get("actions").combineCommands(source.get("actions"));
-    destination.get("basic").combineCommands(source.get("basic"));
+    destination.get("basicInformation").combineCommands(source.get("basicInformation"));
     destination
         .get("otaSoftwareUpdateProvider")
         .combineCommands(source.get("otaSoftwareUpdateProvider"));
@@ -8598,8 +8599,8 @@
     actionsClusterInteractionInfoMap.put(
         "disableActionWithDuration", actionsdisableActionWithDurationInteractionInfo);
     commandMap.put("actions", actionsClusterInteractionInfoMap);
-    Map<String, InteractionInfo> basicClusterInteractionInfoMap = new LinkedHashMap<>();
-    commandMap.put("basic", basicClusterInteractionInfoMap);
+    Map<String, InteractionInfo> basicInformationClusterInteractionInfoMap = new LinkedHashMap<>();
+    commandMap.put("basicInformation", basicInformationClusterInteractionInfoMap);
     Map<String, InteractionInfo> otaSoftwareUpdateProviderClusterInteractionInfoMap =
         new LinkedHashMap<>();
     Map<String, CommandParameterInfo> otaSoftwareUpdateProviderqueryImageCommandParams =
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java
index 49837fd..679955f 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterReadMapping.java
@@ -1398,308 +1398,323 @@
     readActionsInteractionInfo.put(
         "readClusterRevisionAttribute", readActionsClusterRevisionAttributeInteractionInfo);
     readAttributeMap.put("actions", readActionsInteractionInfo);
-    Map<String, InteractionInfo> readBasicInteractionInfo = new LinkedHashMap<>();
-    Map<String, CommandParameterInfo> readBasicDataModelRevisionCommandParams =
+    Map<String, InteractionInfo> readBasicInformationInteractionInfo = new LinkedHashMap<>();
+    Map<String, CommandParameterInfo> readBasicInformationDataModelRevisionCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicDataModelRevisionAttributeInteractionInfo =
+    InteractionInfo readBasicInformationDataModelRevisionAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readDataModelRevisionAttribute((ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readBasicDataModelRevisionCommandParams);
-    readBasicInteractionInfo.put(
-        "readDataModelRevisionAttribute", readBasicDataModelRevisionAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicVendorNameCommandParams =
+            readBasicInformationDataModelRevisionCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readDataModelRevisionAttribute",
+        readBasicInformationDataModelRevisionAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationVendorNameCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicVendorNameAttributeInteractionInfo =
+    InteractionInfo readBasicInformationVendorNameAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readVendorNameAttribute((ChipClusters.CharStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
-            readBasicVendorNameCommandParams);
-    readBasicInteractionInfo.put(
-        "readVendorNameAttribute", readBasicVendorNameAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicVendorIDCommandParams =
+            readBasicInformationVendorNameCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readVendorNameAttribute", readBasicInformationVendorNameAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationVendorIDCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicVendorIDAttributeInteractionInfo =
+    InteractionInfo readBasicInformationVendorIDAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readVendorIDAttribute(
-                      (ChipClusters.BasicCluster.VendorIDAttributeCallback) callback);
+                      (ChipClusters.BasicInformationCluster.VendorIDAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readBasicVendorIDCommandParams);
-    readBasicInteractionInfo.put(
-        "readVendorIDAttribute", readBasicVendorIDAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicProductNameCommandParams =
+            readBasicInformationVendorIDCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readVendorIDAttribute", readBasicInformationVendorIDAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationProductNameCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicProductNameAttributeInteractionInfo =
+    InteractionInfo readBasicInformationProductNameAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readProductNameAttribute((ChipClusters.CharStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
-            readBasicProductNameCommandParams);
-    readBasicInteractionInfo.put(
-        "readProductNameAttribute", readBasicProductNameAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicProductIDCommandParams =
+            readBasicInformationProductNameCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readProductNameAttribute", readBasicInformationProductNameAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationProductIDCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicProductIDAttributeInteractionInfo =
+    InteractionInfo readBasicInformationProductIDAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readProductIDAttribute((ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readBasicProductIDCommandParams);
-    readBasicInteractionInfo.put(
-        "readProductIDAttribute", readBasicProductIDAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicNodeLabelCommandParams =
+            readBasicInformationProductIDCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readProductIDAttribute", readBasicInformationProductIDAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationNodeLabelCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicNodeLabelAttributeInteractionInfo =
+    InteractionInfo readBasicInformationNodeLabelAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readNodeLabelAttribute((ChipClusters.CharStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
-            readBasicNodeLabelCommandParams);
-    readBasicInteractionInfo.put(
-        "readNodeLabelAttribute", readBasicNodeLabelAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicLocationCommandParams =
+            readBasicInformationNodeLabelCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readNodeLabelAttribute", readBasicInformationNodeLabelAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationLocationCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicLocationAttributeInteractionInfo =
+    InteractionInfo readBasicInformationLocationAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readLocationAttribute((ChipClusters.CharStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
-            readBasicLocationCommandParams);
-    readBasicInteractionInfo.put(
-        "readLocationAttribute", readBasicLocationAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicHardwareVersionCommandParams =
+            readBasicInformationLocationCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readLocationAttribute", readBasicInformationLocationAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationHardwareVersionCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicHardwareVersionAttributeInteractionInfo =
+    InteractionInfo readBasicInformationHardwareVersionAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readHardwareVersionAttribute((ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readBasicHardwareVersionCommandParams);
-    readBasicInteractionInfo.put(
-        "readHardwareVersionAttribute", readBasicHardwareVersionAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicHardwareVersionStringCommandParams =
+            readBasicInformationHardwareVersionCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readHardwareVersionAttribute",
+        readBasicInformationHardwareVersionAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationHardwareVersionStringCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicHardwareVersionStringAttributeInteractionInfo =
+    InteractionInfo readBasicInformationHardwareVersionStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readHardwareVersionStringAttribute(
                       (ChipClusters.CharStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
-            readBasicHardwareVersionStringCommandParams);
-    readBasicInteractionInfo.put(
+            readBasicInformationHardwareVersionStringCommandParams);
+    readBasicInformationInteractionInfo.put(
         "readHardwareVersionStringAttribute",
-        readBasicHardwareVersionStringAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicSoftwareVersionCommandParams =
+        readBasicInformationHardwareVersionStringAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationSoftwareVersionCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicSoftwareVersionAttributeInteractionInfo =
+    InteractionInfo readBasicInformationSoftwareVersionAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readSoftwareVersionAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readBasicSoftwareVersionCommandParams);
-    readBasicInteractionInfo.put(
-        "readSoftwareVersionAttribute", readBasicSoftwareVersionAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicSoftwareVersionStringCommandParams =
+            readBasicInformationSoftwareVersionCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readSoftwareVersionAttribute",
+        readBasicInformationSoftwareVersionAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationSoftwareVersionStringCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicSoftwareVersionStringAttributeInteractionInfo =
+    InteractionInfo readBasicInformationSoftwareVersionStringAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readSoftwareVersionStringAttribute(
                       (ChipClusters.CharStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
-            readBasicSoftwareVersionStringCommandParams);
-    readBasicInteractionInfo.put(
+            readBasicInformationSoftwareVersionStringCommandParams);
+    readBasicInformationInteractionInfo.put(
         "readSoftwareVersionStringAttribute",
-        readBasicSoftwareVersionStringAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicManufacturingDateCommandParams =
+        readBasicInformationSoftwareVersionStringAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationManufacturingDateCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicManufacturingDateAttributeInteractionInfo =
+    InteractionInfo readBasicInformationManufacturingDateAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readManufacturingDateAttribute(
                       (ChipClusters.CharStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
-            readBasicManufacturingDateCommandParams);
-    readBasicInteractionInfo.put(
-        "readManufacturingDateAttribute", readBasicManufacturingDateAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicPartNumberCommandParams =
+            readBasicInformationManufacturingDateCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readManufacturingDateAttribute",
+        readBasicInformationManufacturingDateAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationPartNumberCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicPartNumberAttributeInteractionInfo =
+    InteractionInfo readBasicInformationPartNumberAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readPartNumberAttribute((ChipClusters.CharStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
-            readBasicPartNumberCommandParams);
-    readBasicInteractionInfo.put(
-        "readPartNumberAttribute", readBasicPartNumberAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicProductURLCommandParams =
+            readBasicInformationPartNumberCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readPartNumberAttribute", readBasicInformationPartNumberAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationProductURLCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicProductURLAttributeInteractionInfo =
+    InteractionInfo readBasicInformationProductURLAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readProductURLAttribute((ChipClusters.CharStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
-            readBasicProductURLCommandParams);
-    readBasicInteractionInfo.put(
-        "readProductURLAttribute", readBasicProductURLAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicProductLabelCommandParams =
+            readBasicInformationProductURLCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readProductURLAttribute", readBasicInformationProductURLAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationProductLabelCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicProductLabelAttributeInteractionInfo =
+    InteractionInfo readBasicInformationProductLabelAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readProductLabelAttribute((ChipClusters.CharStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
-            readBasicProductLabelCommandParams);
-    readBasicInteractionInfo.put(
-        "readProductLabelAttribute", readBasicProductLabelAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicSerialNumberCommandParams =
+            readBasicInformationProductLabelCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readProductLabelAttribute", readBasicInformationProductLabelAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationSerialNumberCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicSerialNumberAttributeInteractionInfo =
+    InteractionInfo readBasicInformationSerialNumberAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readSerialNumberAttribute((ChipClusters.CharStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
-            readBasicSerialNumberCommandParams);
-    readBasicInteractionInfo.put(
-        "readSerialNumberAttribute", readBasicSerialNumberAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicLocalConfigDisabledCommandParams =
+            readBasicInformationSerialNumberCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readSerialNumberAttribute", readBasicInformationSerialNumberAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationLocalConfigDisabledCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicLocalConfigDisabledAttributeInteractionInfo =
+    InteractionInfo readBasicInformationLocalConfigDisabledAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readLocalConfigDisabledAttribute(
                       (ChipClusters.BooleanAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedBooleanAttributeCallback(),
-            readBasicLocalConfigDisabledCommandParams);
-    readBasicInteractionInfo.put(
-        "readLocalConfigDisabledAttribute", readBasicLocalConfigDisabledAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicReachableCommandParams =
+            readBasicInformationLocalConfigDisabledCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readLocalConfigDisabledAttribute",
+        readBasicInformationLocalConfigDisabledAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationReachableCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicReachableAttributeInteractionInfo =
+    InteractionInfo readBasicInformationReachableAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readReachableAttribute((ChipClusters.BooleanAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedBooleanAttributeCallback(),
-            readBasicReachableCommandParams);
-    readBasicInteractionInfo.put(
-        "readReachableAttribute", readBasicReachableAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicUniqueIDCommandParams =
+            readBasicInformationReachableCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readReachableAttribute", readBasicInformationReachableAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationUniqueIDCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicUniqueIDAttributeInteractionInfo =
+    InteractionInfo readBasicInformationUniqueIDAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readUniqueIDAttribute((ChipClusters.CharStringAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedCharStringAttributeCallback(),
-            readBasicUniqueIDCommandParams);
-    readBasicInteractionInfo.put(
-        "readUniqueIDAttribute", readBasicUniqueIDAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicGeneratedCommandListCommandParams =
+            readBasicInformationUniqueIDCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readUniqueIDAttribute", readBasicInformationUniqueIDAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationGeneratedCommandListCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicGeneratedCommandListAttributeInteractionInfo =
+    InteractionInfo readBasicInformationGeneratedCommandListAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readGeneratedCommandListAttribute(
-                      (ChipClusters.BasicCluster.GeneratedCommandListAttributeCallback) callback);
+                      (ChipClusters.BasicInformationCluster.GeneratedCommandListAttributeCallback)
+                          callback);
             },
             () ->
-                new ClusterInfoMapping.DelegatedBasicClusterGeneratedCommandListAttributeCallback(),
-            readBasicGeneratedCommandListCommandParams);
-    readBasicInteractionInfo.put(
-        "readGeneratedCommandListAttribute", readBasicGeneratedCommandListAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicAcceptedCommandListCommandParams =
+                new ClusterInfoMapping
+                    .DelegatedBasicInformationClusterGeneratedCommandListAttributeCallback(),
+            readBasicInformationGeneratedCommandListCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readGeneratedCommandListAttribute",
+        readBasicInformationGeneratedCommandListAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationAcceptedCommandListCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicAcceptedCommandListAttributeInteractionInfo =
+    InteractionInfo readBasicInformationAcceptedCommandListAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readAcceptedCommandListAttribute(
-                      (ChipClusters.BasicCluster.AcceptedCommandListAttributeCallback) callback);
+                      (ChipClusters.BasicInformationCluster.AcceptedCommandListAttributeCallback)
+                          callback);
             },
             () ->
-                new ClusterInfoMapping.DelegatedBasicClusterAcceptedCommandListAttributeCallback(),
-            readBasicAcceptedCommandListCommandParams);
-    readBasicInteractionInfo.put(
-        "readAcceptedCommandListAttribute", readBasicAcceptedCommandListAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicAttributeListCommandParams =
+                new ClusterInfoMapping
+                    .DelegatedBasicInformationClusterAcceptedCommandListAttributeCallback(),
+            readBasicInformationAcceptedCommandListCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readAcceptedCommandListAttribute",
+        readBasicInformationAcceptedCommandListAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationAttributeListCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicAttributeListAttributeInteractionInfo =
+    InteractionInfo readBasicInformationAttributeListAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readAttributeListAttribute(
-                      (ChipClusters.BasicCluster.AttributeListAttributeCallback) callback);
+                      (ChipClusters.BasicInformationCluster.AttributeListAttributeCallback)
+                          callback);
             },
-            () -> new ClusterInfoMapping.DelegatedBasicClusterAttributeListAttributeCallback(),
-            readBasicAttributeListCommandParams);
-    readBasicInteractionInfo.put(
-        "readAttributeListAttribute", readBasicAttributeListAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicFeatureMapCommandParams =
+            () ->
+                new ClusterInfoMapping
+                    .DelegatedBasicInformationClusterAttributeListAttributeCallback(),
+            readBasicInformationAttributeListCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readAttributeListAttribute", readBasicInformationAttributeListAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationFeatureMapCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicFeatureMapAttributeInteractionInfo =
+    InteractionInfo readBasicInformationFeatureMapAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readFeatureMapAttribute((ChipClusters.LongAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
-            readBasicFeatureMapCommandParams);
-    readBasicInteractionInfo.put(
-        "readFeatureMapAttribute", readBasicFeatureMapAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> readBasicClusterRevisionCommandParams =
+            readBasicInformationFeatureMapCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readFeatureMapAttribute", readBasicInformationFeatureMapAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> readBasicInformationClusterRevisionCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    InteractionInfo readBasicClusterRevisionAttributeInteractionInfo =
+    InteractionInfo readBasicInformationClusterRevisionAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .readClusterRevisionAttribute((ChipClusters.IntegerAttributeCallback) callback);
             },
             () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
-            readBasicClusterRevisionCommandParams);
-    readBasicInteractionInfo.put(
-        "readClusterRevisionAttribute", readBasicClusterRevisionAttributeInteractionInfo);
-    readAttributeMap.put("basic", readBasicInteractionInfo);
+            readBasicInformationClusterRevisionCommandParams);
+    readBasicInformationInteractionInfo.put(
+        "readClusterRevisionAttribute",
+        readBasicInformationClusterRevisionAttributeInteractionInfo);
+    readAttributeMap.put("basicInformation", readBasicInformationInteractionInfo);
     Map<String, InteractionInfo> readOtaSoftwareUpdateProviderInteractionInfo =
         new LinkedHashMap<>();
     Map<String, CommandParameterInfo> readOtaSoftwareUpdateProviderAttributeListCommandParams =
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterWriteMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterWriteMapping.java
index 25e04f7..151ace6 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterWriteMapping.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterWriteMapping.java
@@ -288,57 +288,60 @@
     writeAttributeMap.put("accessControl", writeAccessControlInteractionInfo);
     Map<String, InteractionInfo> writeActionsInteractionInfo = new LinkedHashMap<>();
     writeAttributeMap.put("actions", writeActionsInteractionInfo);
-    Map<String, InteractionInfo> writeBasicInteractionInfo = new LinkedHashMap<>();
-    Map<String, CommandParameterInfo> writeBasicNodeLabelCommandParams =
+    Map<String, InteractionInfo> writeBasicInformationInteractionInfo = new LinkedHashMap<>();
+    Map<String, CommandParameterInfo> writeBasicInformationNodeLabelCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    CommandParameterInfo basicnodeLabelCommandParameterInfo =
+    CommandParameterInfo basicInformationnodeLabelCommandParameterInfo =
         new CommandParameterInfo("value", String.class, String.class);
-    writeBasicNodeLabelCommandParams.put("value", basicnodeLabelCommandParameterInfo);
-    InteractionInfo writeBasicNodeLabelAttributeInteractionInfo =
+    writeBasicInformationNodeLabelCommandParams.put(
+        "value", basicInformationnodeLabelCommandParameterInfo);
+    InteractionInfo writeBasicInformationNodeLabelAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .writeNodeLabelAttribute(
                       (DefaultClusterCallback) callback, (String) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeBasicNodeLabelCommandParams);
-    writeBasicInteractionInfo.put(
-        "writeNodeLabelAttribute", writeBasicNodeLabelAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> writeBasicLocationCommandParams =
+            writeBasicInformationNodeLabelCommandParams);
+    writeBasicInformationInteractionInfo.put(
+        "writeNodeLabelAttribute", writeBasicInformationNodeLabelAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> writeBasicInformationLocationCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    CommandParameterInfo basiclocationCommandParameterInfo =
+    CommandParameterInfo basicInformationlocationCommandParameterInfo =
         new CommandParameterInfo("value", String.class, String.class);
-    writeBasicLocationCommandParams.put("value", basiclocationCommandParameterInfo);
-    InteractionInfo writeBasicLocationAttributeInteractionInfo =
+    writeBasicInformationLocationCommandParams.put(
+        "value", basicInformationlocationCommandParameterInfo);
+    InteractionInfo writeBasicInformationLocationAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .writeLocationAttribute(
                       (DefaultClusterCallback) callback, (String) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeBasicLocationCommandParams);
-    writeBasicInteractionInfo.put(
-        "writeLocationAttribute", writeBasicLocationAttributeInteractionInfo);
-    Map<String, CommandParameterInfo> writeBasicLocalConfigDisabledCommandParams =
+            writeBasicInformationLocationCommandParams);
+    writeBasicInformationInteractionInfo.put(
+        "writeLocationAttribute", writeBasicInformationLocationAttributeInteractionInfo);
+    Map<String, CommandParameterInfo> writeBasicInformationLocalConfigDisabledCommandParams =
         new LinkedHashMap<String, CommandParameterInfo>();
-    CommandParameterInfo basiclocalConfigDisabledCommandParameterInfo =
+    CommandParameterInfo basicInformationlocalConfigDisabledCommandParameterInfo =
         new CommandParameterInfo("value", Boolean.class, Boolean.class);
-    writeBasicLocalConfigDisabledCommandParams.put(
-        "value", basiclocalConfigDisabledCommandParameterInfo);
-    InteractionInfo writeBasicLocalConfigDisabledAttributeInteractionInfo =
+    writeBasicInformationLocalConfigDisabledCommandParams.put(
+        "value", basicInformationlocalConfigDisabledCommandParameterInfo);
+    InteractionInfo writeBasicInformationLocalConfigDisabledAttributeInteractionInfo =
         new InteractionInfo(
             (cluster, callback, commandArguments) -> {
-              ((ChipClusters.BasicCluster) cluster)
+              ((ChipClusters.BasicInformationCluster) cluster)
                   .writeLocalConfigDisabledAttribute(
                       (DefaultClusterCallback) callback, (Boolean) commandArguments.get("value"));
             },
             () -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
-            writeBasicLocalConfigDisabledCommandParams);
-    writeBasicInteractionInfo.put(
-        "writeLocalConfigDisabledAttribute", writeBasicLocalConfigDisabledAttributeInteractionInfo);
-    writeAttributeMap.put("basic", writeBasicInteractionInfo);
+            writeBasicInformationLocalConfigDisabledCommandParams);
+    writeBasicInformationInteractionInfo.put(
+        "writeLocalConfigDisabledAttribute",
+        writeBasicInformationLocalConfigDisabledAttributeInteractionInfo);
+    writeAttributeMap.put("basicInformation", writeBasicInformationInteractionInfo);
     Map<String, InteractionInfo> writeOtaSoftwareUpdateProviderInteractionInfo =
         new LinkedHashMap<>();
     writeAttributeMap.put(
diff --git a/src/controller/python/chip/ChipDeviceCtrl.py b/src/controller/python/chip/ChipDeviceCtrl.py
index 8178480..5a66aab 100644
--- a/src/controller/python/chip/ChipDeviceCtrl.py
+++ b/src/controller/python/chip/ChipDeviceCtrl.py
@@ -1042,8 +1042,8 @@
 
             e.g.
                 ReadAttribute(1, [ 1 ] ) -- case 4 above.
-                ReadAttribute(1, [ Clusters.Basic ] ) -- case 5 above.
-                ReadAttribute(1, [ (1, Clusters.Basic.Attributes.Location ] ) -- case 1 above.
+                ReadAttribute(1, [ Clusters.BasicInformation ] ) -- case 5 above.
+                ReadAttribute(1, [ (1, Clusters.BasicInformation.Attributes.Location ] ) -- case 1 above.
 
         dataVersionFilters: A list of tuples of (endpoint, cluster, data version).
 
@@ -1108,8 +1108,8 @@
 
             e.g.
                 ReadAttribute(1, [ 1 ] ) -- case 4 above.
-                ReadAttribute(1, [ Clusters.Basic ] ) -- case 5 above.
-                ReadAttribute(1, [ (1, Clusters.Basic.Attributes.Location ] ) -- case 1 above.
+                ReadAttribute(1, [ Clusters.BasicInformation ] ) -- case 5 above.
+                ReadAttribute(1, [ (1, Clusters.BasicInformation.Attributes.Location ] ) -- case 1 above.
 
         returnClusterObject: This returns the data as consolidated cluster objects, with all attributes for a cluster inside
                              a single cluster-wide cluster object.
@@ -1152,8 +1152,8 @@
 
         e.g.
             ReadEvent(1, [ 1 ] ) -- case 4 above.
-            ReadEvent(1, [ Clusters.Basic ] ) -- case 5 above.
-            ReadEvent(1, [ (1, Clusters.Basic.Events.Location ] ) -- case 1 above.
+            ReadEvent(1, [ Clusters.BasicInformation ] ) -- case 5 above.
+            ReadEvent(1, [ (1, Clusters.BasicInformation.Events.Location ] ) -- case 1 above.
 
         eventNumberFilter: Optional minimum event number filter.
         reportInterval: A tuple of two int-s for (MinIntervalFloor, MaxIntervalCeiling). Used by establishing subscriptions.
diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py
index 85c7d91..0254147 100644
--- a/src/controller/python/chip/clusters/CHIPClusters.py
+++ b/src/controller/python/chip/clusters/CHIPClusters.py
@@ -1069,8 +1069,8 @@
                 },
             },
     }
-    _BASIC_CLUSTER_INFO = {
-            "clusterName": "Basic",
+    _BASIC_INFORMATION_CLUSTER_INFO = {
+            "clusterName": "BasicInformation",
             "clusterId": 0x00000028,
             "commands": {
             },
@@ -7515,7 +7515,7 @@
     0x0000001E: _BINDING_CLUSTER_INFO,
     0x0000001F: _ACCESS_CONTROL_CLUSTER_INFO,
     0x00000025: _ACTIONS_CLUSTER_INFO,
-    0x00000028: _BASIC_CLUSTER_INFO,
+    0x00000028: _BASIC_INFORMATION_CLUSTER_INFO,
     0x00000029: _OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_INFO,
     0x0000002A: _OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_INFO,
     0x0000002B: _LOCALIZATION_CONFIGURATION_CLUSTER_INFO,
@@ -7583,7 +7583,7 @@
         "Binding": _BINDING_CLUSTER_INFO,
         "AccessControl": _ACCESS_CONTROL_CLUSTER_INFO,
         "Actions": _ACTIONS_CLUSTER_INFO,
-        "Basic": _BASIC_CLUSTER_INFO,
+        "BasicInformation": _BASIC_INFORMATION_CLUSTER_INFO,
         "OtaSoftwareUpdateProvider": _OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_INFO,
         "OtaSoftwareUpdateRequestor": _OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_INFO,
         "LocalizationConfiguration": _LOCALIZATION_CONFIGURATION_CLUSTER_INFO,
diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py
index 1f68a49..b349d73 100644
--- a/src/controller/python/chip/clusters/Objects.py
+++ b/src/controller/python/chip/clusters/Objects.py
@@ -3708,7 +3708,7 @@
 
 
 @dataclass
-class Basic(Cluster):
+class BasicInformation(Cluster):
     id: typing.ClassVar[int] = 0x0028
 
     @ChipUtility.classproperty
@@ -3734,7 +3734,7 @@
                 ClusterObjectFieldDescriptor(Label="localConfigDisabled", Tag=0x00000010, Type=typing.Optional[bool]),
                 ClusterObjectFieldDescriptor(Label="reachable", Tag=0x00000011, Type=typing.Optional[bool]),
                 ClusterObjectFieldDescriptor(Label="uniqueID", Tag=0x00000012, Type=typing.Optional[str]),
-                ClusterObjectFieldDescriptor(Label="capabilityMinima", Tag=0x00000013, Type=Basic.Structs.CapabilityMinimaStruct),
+                ClusterObjectFieldDescriptor(Label="capabilityMinima", Tag=0x00000013, Type=BasicInformation.Structs.CapabilityMinimaStruct),
                 ClusterObjectFieldDescriptor(Label="generatedCommandList", Tag=0x0000FFF8, Type=typing.List[uint]),
                 ClusterObjectFieldDescriptor(Label="acceptedCommandList", Tag=0x0000FFF9, Type=typing.List[uint]),
                 ClusterObjectFieldDescriptor(Label="attributeList", Tag=0x0000FFFB, Type=typing.List[uint]),
@@ -3761,7 +3761,7 @@
     localConfigDisabled: 'typing.Optional[bool]' = None
     reachable: 'typing.Optional[bool]' = None
     uniqueID: 'typing.Optional[str]' = None
-    capabilityMinima: 'Basic.Structs.CapabilityMinimaStruct' = None
+    capabilityMinima: 'BasicInformation.Structs.CapabilityMinimaStruct' = None
     generatedCommandList: 'typing.List[uint]' = None
     acceptedCommandList: 'typing.List[uint]' = None
     attributeList: 'typing.List[uint]' = None
@@ -4118,9 +4118,9 @@
 
             @ChipUtility.classproperty
             def attribute_type(cls) -> ClusterObjectFieldDescriptor:
-                return ClusterObjectFieldDescriptor(Type=Basic.Structs.CapabilityMinimaStruct)
+                return ClusterObjectFieldDescriptor(Type=BasicInformation.Structs.CapabilityMinimaStruct)
 
-            value: 'Basic.Structs.CapabilityMinimaStruct' = field(default_factory=lambda: Basic.Structs.CapabilityMinimaStruct())
+            value: 'BasicInformation.Structs.CapabilityMinimaStruct' = field(default_factory=lambda: BasicInformation.Structs.CapabilityMinimaStruct())
 
         @dataclass
         class GeneratedCommandList(ClusterAttributeDescriptor):
diff --git a/src/controller/python/test/test_scripts/base.py b/src/controller/python/test/test_scripts/base.py
index 9d6e1e5..e68ade5 100644
--- a/src/controller/python/test/test_scripts/base.py
+++ b/src/controller/python/test/test_scripts/base.py
@@ -478,8 +478,8 @@
         #
         # Read the Basic cluster from the 2nd controller. This is possible with just view privileges.
         #
-        res = await newControllers[1].ReadAttribute(nodeid=nodeid, attributes=[(0, Clusters.Basic.Attributes.ClusterRevision)])
-        if (type(res[0][Clusters.Basic][Clusters.Basic.Attributes.ClusterRevision]) != Clusters.Basic.Attributes.ClusterRevision.attribute_type.Type):
+        res = await newControllers[1].ReadAttribute(nodeid=nodeid, attributes=[(0, Clusters.BasicInformation.Attributes.ClusterRevision)])
+        if (type(res[0][Clusters.BasicInformation][Clusters.BasicInformation.Attributes.ClusterRevision]) != Clusters.BasicInformation.Attributes.ClusterRevision.attribute_type.Type):
             self.logger.error(f"7: Received something other than data:{res}")
             return False
 
@@ -556,7 +556,7 @@
         #
         for x in range(minimumSupportedFabrics * minimumCASESessionsPerFabric * 2):
             self.devCtrl.CloseSession(nodeid)
-            await self.devCtrl.ReadAttribute(nodeid, [(Clusters.Basic.Attributes.ClusterRevision)])
+            await self.devCtrl.ReadAttribute(nodeid, [(Clusters.BasicInformation.Attributes.ClusterRevision)])
 
         self.logger.info("Testing CASE defunct logic")
 
@@ -615,7 +615,7 @@
 
         for x in range(minimumSupportedFabrics * minimumCASESessionsPerFabric * 2):
             self.devCtrl2.CloseSession(nodeid)
-            await self.devCtrl2.ReadAttribute(nodeid, [(Clusters.Basic.Attributes.ClusterRevision)])
+            await self.devCtrl2.ReadAttribute(nodeid, [(Clusters.BasicInformation.Attributes.ClusterRevision)])
 
         #
         # Now write the attribute from fabric2, give it some time before checking if the report
@@ -641,7 +641,7 @@
 
         for x in range(minimumSupportedFabrics * minimumCASESessionsPerFabric * 2):
             self.devCtrl.CloseSession(nodeid)
-            await self.devCtrl.ReadAttribute(nodeid, [(Clusters.Basic.Attributes.ClusterRevision)])
+            await self.devCtrl.ReadAttribute(nodeid, [(Clusters.BasicInformation.Attributes.ClusterRevision)])
 
         await self.devCtrl.WriteAttribute(nodeid, [(1, Clusters.UnitTesting.Attributes.Int8u(4))])
         time.sleep(2)
@@ -903,7 +903,7 @@
             async with cv:
                 cv.notify()
 
-        subscription = await self.devCtrl.ReadAttribute(nodeid, [(Clusters.Basic.Attributes.ClusterRevision)], reportInterval=(0, 5))
+        subscription = await self.devCtrl.ReadAttribute(nodeid, [(Clusters.BasicInformation.Attributes.ClusterRevision)], reportInterval=(0, 5))
 
         #
         # Register async callbacks that will fire when a re-sub is attempted or succeeds.
@@ -1035,7 +1035,7 @@
         failed_zcl = {}
         for basic_attr, expected_value in basic_cluster_attrs.items():
             try:
-                res = self.devCtrl.ZCLReadAttribute(cluster="Basic",
+                res = self.devCtrl.ZCLReadAttribute(cluster="BasicInformation",
                                                     attribute=basic_attr,
                                                     nodeid=nodeid,
                                                     endpoint=endpoint,
@@ -1058,8 +1058,8 @@
             expected_status: IM.Status = IM.Status.Success
 
         requests = [
-            AttributeWriteRequest("Basic", "NodeLabel", "Test"),
-            AttributeWriteRequest("Basic", "Location",
+            AttributeWriteRequest("BasicInformation", "NodeLabel", "Test"),
+            AttributeWriteRequest("BasicInformation", "Location",
                                   "a pretty loooooooooooooog string", IM.Status.ConstraintError),
         ]
         failed_zcl = []
diff --git a/src/controller/python/test/test_scripts/cluster_objects.py b/src/controller/python/test/test_scripts/cluster_objects.py
index b55c7b0..f5f3b5b 100644
--- a/src/controller/python/test/test_scripts/cluster_objects.py
+++ b/src/controller/python/test/test_scripts/cluster_objects.py
@@ -136,9 +136,9 @@
         logger.info("1: Trivial writes (multiple attributes)")
         res = await devCtrl.WriteAttribute(nodeid=NODE_ID,
                                            attributes=[
-                                               (0, Clusters.Basic.Attributes.NodeLabel(
+                                               (0, Clusters.BasicInformation.Attributes.NodeLabel(
                                                    "Test")),
-                                               (0, Clusters.Basic.Attributes.Location(
+                                               (0, Clusters.BasicInformation.Attributes.Location(
                                                    "A loooong string"))
                                            ])
         expectedRes = [
@@ -243,12 +243,12 @@
 
         logger.info("1: Reading Ex Cx Ax")
         req = [
-            (0, Clusters.Basic.Attributes.VendorName),
-            (0, Clusters.Basic.Attributes.ProductID),
-            (0, Clusters.Basic.Attributes.HardwareVersion),
+            (0, Clusters.BasicInformation.Attributes.VendorName),
+            (0, Clusters.BasicInformation.Attributes.ProductID),
+            (0, Clusters.BasicInformation.Attributes.HardwareVersion),
         ]
         res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=req)
-        if ((0 not in res) or (Clusters.Basic not in res[0]) or (len(res[0][Clusters.Basic]) != 4)):
+        if ((0 not in res) or (Clusters.BasicInformation not in res[0]) or (len(res[0][Clusters.BasicInformation]) != 4)):
             # 3 attribute data + DataVersion
             raise AssertionError(
                 f"Got back {len(res)} data items instead of 3")
@@ -256,7 +256,7 @@
 
         logger.info("2: Reading Ex Cx A*")
         req = [
-            (0, Clusters.Basic),
+            (0, Clusters.BasicInformation),
         ]
         VerifyDecodeSuccess(await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=req))
 
@@ -286,7 +286,7 @@
 
         res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=req, returnClusterObject=True)
         logger.info(
-            f"Basic Cluster - Label: {res[0][Clusters.Basic].productLabel}")
+            f"Basic Cluster - Label: {res[0][Clusters.BasicInformation].productLabel}")
         # TestCluster will be ValueDecodeError here, so we comment out the log below.
         # Values are not expected to be ValueDecodeError for real clusters.
         # logger.info(
@@ -488,18 +488,18 @@
     async def TestReadWriteAttributeRequestsWithVersion(cls, devCtrl):
         logger.info("TestReadWriteAttributeRequestsWithVersion")
         req = [
-            (0, Clusters.Basic.Attributes.VendorName)
+            (0, Clusters.BasicInformation.Attributes.VendorName)
         ]
         res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=req)
         VerifyDecodeSuccess(res)
-        data_version = res[0][Clusters.Basic][DataVersion]
+        data_version = res[0][Clusters.BasicInformation][DataVersion]
 
         logger.info(res)
         logger.info(data_version)
 
         res = await devCtrl.WriteAttribute(nodeid=NODE_ID,
                                            attributes=[
-                                               (0, Clusters.Basic.Attributes.NodeLabel(
+                                               (0, Clusters.BasicInformation.Attributes.NodeLabel(
                                                    "Test"))
                                            ])
         expectedRes = [
@@ -515,20 +515,20 @@
             raise AssertionError("Write returned unexpected result.")
 
         req = [
-            (0, Clusters.Basic.Attributes.VendorName),
+            (0, Clusters.BasicInformation.Attributes.VendorName),
         ]
-        res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=req, dataVersionFilters=[(0, Clusters.Basic, data_version)])
+        res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=req, dataVersionFilters=[(0, Clusters.BasicInformation, data_version)])
         VerifyDecodeSuccess(res)
-        new_data_version = res[0][Clusters.Basic][DataVersion]
+        new_data_version = res[0][Clusters.BasicInformation][DataVersion]
         if (data_version + 1) != new_data_version:
             raise AssertionError("Version mistmatch happens.")
 
-        res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=req, dataVersionFilters=[(0, Clusters.Basic, new_data_version)])
+        res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=req, dataVersionFilters=[(0, Clusters.BasicInformation, new_data_version)])
         VerifyDecodeSuccess(res)
 
         res = await devCtrl.WriteAttribute(nodeid=NODE_ID,
                                            attributes=[
-                                               (0, Clusters.Basic.Attributes.NodeLabel(
+                                               (0, Clusters.BasicInformation.Attributes.NodeLabel(
                                                    "Test"), new_data_version)
                                            ])
 
@@ -546,7 +546,7 @@
 
         res = await devCtrl.WriteAttribute(nodeid=NODE_ID,
                                            attributes=[
-                                               (0, Clusters.Basic.Attributes.NodeLabel(
+                                               (0, Clusters.BasicInformation.Attributes.NodeLabel(
                                                    "Test"), new_data_version)
                                            ])
 
@@ -567,11 +567,11 @@
     async def TestMixedReadAttributeAndEvents(cls, devCtrl):
         def attributePathPossibilities():
             yield ('Ex Cx Ax', [
-                (0, Clusters.Basic.Attributes.VendorName),
-                (0, Clusters.Basic.Attributes.ProductID),
-                (0, Clusters.Basic.Attributes.HardwareVersion),
+                (0, Clusters.BasicInformation.Attributes.VendorName),
+                (0, Clusters.BasicInformation.Attributes.ProductID),
+                (0, Clusters.BasicInformation.Attributes.HardwareVersion),
             ])
-            yield ('Ex Cx A*', [(0, Clusters.Basic)])
+            yield ('Ex Cx A*', [(0, Clusters.BasicInformation)])
             yield ('E* Cx A*', [Clusters.Descriptor.Attributes.ServerList])
             yield ('E* A* A*', ['*'])
 
diff --git a/src/darwin/Framework/CHIP/templates/availability.yaml b/src/darwin/Framework/CHIP/templates/availability.yaml
index 56ad20a..d3e5f7e 100644
--- a/src/darwin/Framework/CHIP/templates/availability.yaml
+++ b/src/darwin/Framework/CHIP/templates/availability.yaml
@@ -4542,6 +4542,7 @@
           - UnitTesting
           - WakeOnLAN
           - ClientMonitoring
+          - BasicInformation
       attributes:
           Descriptor:
               # We really only started treating DeviceTypeList as DeviceTypeList in the API revamp,
@@ -4674,6 +4675,32 @@
               - AttributeList
               - FeatureMap
               - ClusterRevision
+          BasicInformation:
+              - DataModelRevision
+              - VendorName
+              - VendorID
+              - ProductName
+              - ProductID
+              - NodeLabel
+              - Location
+              - HardwareVersion
+              - HardwareVersionString
+              - SoftwareVersion
+              - SoftwareVersionString
+              - ManufacturingDate
+              - PartNumber
+              - ProductURL
+              - ProductLabel
+              - SerialNumber
+              - LocalConfigDisabled
+              - Reachable
+              - UniqueID
+              - CapabilityMinima
+              - GeneratedCommandList
+              - AcceptedCommandList
+              - AttributeList
+              - FeatureMap
+              - ClusterRevision
       commands:
           OTASoftwareUpdateProvider:
               - QueryImage
@@ -4721,6 +4748,9 @@
           ClientMonitoring:
               - RegisterClientMonitoring
               - StayAwakeRequest
+          BasicInformation:
+              # TODO: Can we avoid generating this??
+              - MfgSpecificPing
       command fields:
           UnitTesting:
               TestSpecificResponse:
@@ -4889,6 +4919,8 @@
               - TestListStructOctet
           ClientMonitoring:
               - MonitoringRegistration
+          BasicInformation:
+              - CapabilityMinimaStruct
       struct fields:
           UnitTesting:
               SimpleStruct:
@@ -4949,6 +4981,10 @@
                   - clientNodeId
                   - iCid
                   - fabricIndex
+          BasicInformation:
+              CapabilityMinimaStruct:
+                  - caseSessionsPerFabric
+                  - subscriptionsPerFabric
       events:
           OTASoftwareUpdateRequestor:
               - StateTransition
@@ -4957,6 +4993,11 @@
           UnitTesting:
               - TestEvent
               - TestFabricScopedEvent
+          BasicInformation:
+              - StartUp
+              - ShutDown
+              - Leave
+              - ReachableChanged
       event fields:
           Switch:
               MultiPressComplete:
@@ -4985,6 +5026,13 @@
                   - bytesDownloaded
                   - progressPercent
                   - platformCode
+          BasicInformation:
+              StartUp:
+                  - softwareVersion
+              Leave:
+                  - fabricIndex
+              ReachableChanged:
+                  - reachableNewValue
       enums:
           OTASoftwareUpdateProvider:
               - OTAApplyUpdateAction
@@ -5084,6 +5132,7 @@
           - OtaSoftwareUpdateRequestor
           - TestCluster
           - WakeOnLan
+          - Basic
       attributes:
           Descriptor:
               - DeviceList
@@ -5106,6 +5155,7 @@
   renames:
       clusters:
           UnitTesting: TestCluster
+          BasicInformation: Basic
       attributes:
           Descriptor:
               DeviceTypeList: DeviceList
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
index 48d87de..9ef4237 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
@@ -2082,8 +2082,8 @@
         }
         break;
     }
-    case Clusters::Basic::Id: {
-        using namespace Clusters::Basic;
+    case Clusters::BasicInformation::Id: {
+        using namespace Clusters::BasicInformation;
         switch (aPath.mAttributeId) {
         case Attributes::DataModelRevision::Id: {
             using TypeInfo = Attributes::DataModelRevision::TypeInfo;
@@ -2301,8 +2301,8 @@
             if (*aError != CHIP_NO_ERROR) {
                 return nil;
             }
-            MTRBasicClusterCapabilityMinimaStruct * _Nonnull value;
-            value = [MTRBasicClusterCapabilityMinimaStruct new];
+            MTRBasicInformationClusterCapabilityMinimaStruct * _Nonnull value;
+            value = [MTRBasicInformationClusterCapabilityMinimaStruct new];
             value.caseSessionsPerFabric = [NSNumber numberWithUnsignedShort:cppValue.caseSessionsPerFabric];
             value.subscriptionsPerFabric = [NSNumber numberWithUnsignedShort:cppValue.subscriptionsPerFabric];
             return value;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index e0bb13f..49696ea 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -1954,14 +1954,14 @@
 @end
 
 /**
- * Cluster Basic
+ * Cluster Basic Information
  *
  * This cluster provides attributes and events for determining basic information about Nodes, which supports both
       Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number,
       which apply to the whole Node. Also allows setting user device information such as location.
  */
-API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-@interface MTRBaseClusterBasic : MTRCluster
+MTR_NEWLY_AVAILABLE
+@interface MTRBaseClusterBasicInformation : MTRCluster
 
 - (instancetype _Nullable)initWithDevice:(MTRBaseDevice *)device
                               endpointID:(NSNumber *)endpointID
@@ -1972,7 +1972,7 @@
  *
  *
  */
-- (void)mfgSpecificPingWithParams:(MTRBasicClusterMfgSpecificPingParams * _Nullable)params
+- (void)mfgSpecificPingWithParams:(MTRBasicInformationClusterMfgSpecificPingParams * _Nullable)params
                        completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
 - (void)mfgSpecificPingWithCompletion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
 
@@ -2217,17 +2217,18 @@
                                         completion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
 
-- (void)readAttributeCapabilityMinimaWithCompletion:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
+- (void)readAttributeCapabilityMinimaWithCompletion:(void (^)(MTRBasicInformationClusterCapabilityMinimaStruct * _Nullable value,
                                                         NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 - (void)subscribeAttributeCapabilityMinimaWithParams:(MTRSubscribeParams *)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
-                                       reportHandler:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
+                                       reportHandler:(void (^)(MTRBasicInformationClusterCapabilityMinimaStruct * _Nullable value,
                                                          NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
 + (void)readAttributeCapabilityMinimaWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
                                                   endpoint:(NSNumber *)endpoint
                                                      queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
-                                                               NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+                                                completion:
+                                                    (void (^)(MTRBasicInformationClusterCapabilityMinimaStruct * _Nullable value,
+                                                        NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
 
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
     MTR_NEWLY_AVAILABLE;
@@ -17020,6 +17021,11 @@
 @end
 
 API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
+MTR_NEWLY_DEPRECATED("Please use MTRBaseClusterBasicInformation")
+@interface MTRBaseClusterBasic : MTRBaseClusterBasicInformation
+@end
+
+API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
 MTR_NEWLY_DEPRECATED("Please use MTRBaseClusterOTASoftwareUpdateProvider")
 @interface MTRBaseClusterOtaSoftwareUpdateProvider : MTRBaseClusterOTASoftwareUpdateProvider
 @end
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
index b011076..eb8b4ba 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
@@ -12722,7 +12722,7 @@
 
 @end
 
-@implementation MTRBaseClusterBasic
+@implementation MTRBaseClusterBasicInformation
 
 - (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)endpointID queue:(dispatch_queue_t)queue
 {
@@ -12741,7 +12741,7 @@
 {
     [self mfgSpecificPingWithParams:nil completion:completion];
 }
-- (void)mfgSpecificPingWithParams:(MTRBasicClusterMfgSpecificPingParams * _Nullable)params
+- (void)mfgSpecificPingWithParams:(MTRBasicInformationClusterMfgSpecificPingParams * _Nullable)params
                        completion:(MTRStatusCompletion)completion
 {
     // Make a copy of params before we go async.
@@ -12756,7 +12756,7 @@
             auto * typedBridge = static_cast<MTRCommandSuccessCallbackBridge *>(bridge);
             chip::Optional<uint16_t> timedInvokeTimeoutMs;
             ListFreer listFreer;
-            Basic::Commands::MfgSpecificPing::Type request;
+            BasicInformation::Commands::MfgSpecificPing::Type request;
             if (params != nil) {
                 if (params.timedInvokeTimeoutMs != nil) {
                     timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
@@ -12772,7 +12772,7 @@
 - (void)readAttributeDataModelRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::DataModelRevision::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::DataModelRevision::TypeInfo;
     return MTRReadAttribute<MTRInt16uAttributeCallbackBridge, NSNumber, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -12781,7 +12781,7 @@
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::DataModelRevision::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::DataModelRevision::TypeInfo;
     MTRSubscribeAttribute<MTRInt16uAttributeCallbackSubscriptionBridge, NSNumber, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -12798,7 +12798,7 @@
         clusterStateCacheContainer.baseDevice, ^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::DataModelRevision::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::DataModelRevision::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -12816,7 +12816,7 @@
 - (void)readAttributeVendorNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::VendorName::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::VendorName::TypeInfo;
     return MTRReadAttribute<MTRCharStringAttributeCallbackBridge, NSString, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -12825,7 +12825,7 @@
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::VendorName::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::VendorName::TypeInfo;
     MTRSubscribeAttribute<MTRCharStringAttributeCallbackSubscriptionBridge, NSString, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -12841,7 +12841,7 @@
         clusterStateCacheContainer.baseDevice, ^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::VendorName::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::VendorName::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -12859,7 +12859,7 @@
 - (void)readAttributeVendorIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::VendorID::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::VendorID::TypeInfo;
     return MTRReadAttribute<MTRVendorIdAttributeCallbackBridge, NSNumber, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -12868,7 +12868,7 @@
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::VendorID::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::VendorID::TypeInfo;
     MTRSubscribeAttribute<MTRVendorIdAttributeCallbackSubscriptionBridge, NSNumber, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -12884,7 +12884,7 @@
         clusterStateCacheContainer.baseDevice, ^(VendorIdAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::VendorID::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::VendorID::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -12902,7 +12902,7 @@
 - (void)readAttributeProductNameWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::ProductName::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::ProductName::TypeInfo;
     return MTRReadAttribute<MTRCharStringAttributeCallbackBridge, NSString, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -12911,7 +12911,7 @@
                         subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                   reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::ProductName::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::ProductName::TypeInfo;
     MTRSubscribeAttribute<MTRCharStringAttributeCallbackSubscriptionBridge, NSString, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -12927,7 +12927,7 @@
         clusterStateCacheContainer.baseDevice, ^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::ProductName::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::ProductName::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -12945,7 +12945,7 @@
 - (void)readAttributeProductIDWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::ProductID::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::ProductID::TypeInfo;
     return MTRReadAttribute<MTRInt16uAttributeCallbackBridge, NSNumber, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -12954,7 +12954,7 @@
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::ProductID::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::ProductID::TypeInfo;
     MTRSubscribeAttribute<MTRInt16uAttributeCallbackSubscriptionBridge, NSNumber, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -12970,7 +12970,7 @@
         clusterStateCacheContainer.baseDevice, ^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::ProductID::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::ProductID::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -12988,7 +12988,7 @@
 - (void)readAttributeNodeLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::NodeLabel::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::NodeLabel::TypeInfo;
     return MTRReadAttribute<MTRCharStringAttributeCallbackBridge, NSString, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13020,11 +13020,11 @@
             }
 
             ListFreer listFreer;
-            using TypeInfo = Basic::Attributes::NodeLabel::TypeInfo;
+            using TypeInfo = BasicInformation::Attributes::NodeLabel::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = [self asCharSpan:value];
 
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::BasicInformationCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute<TypeInfo>(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -13034,7 +13034,7 @@
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::NodeLabel::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::NodeLabel::TypeInfo;
     MTRSubscribeAttribute<MTRCharStringAttributeCallbackSubscriptionBridge, NSString, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13050,7 +13050,7 @@
         clusterStateCacheContainer.baseDevice, ^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::NodeLabel::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::NodeLabel::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13068,7 +13068,7 @@
 - (void)readAttributeLocationWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::Location::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::Location::TypeInfo;
     return MTRReadAttribute<MTRCharStringAttributeCallbackBridge, NSString, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13100,11 +13100,11 @@
             }
 
             ListFreer listFreer;
-            using TypeInfo = Basic::Attributes::Location::TypeInfo;
+            using TypeInfo = BasicInformation::Attributes::Location::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = [self asCharSpan:value];
 
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::BasicInformationCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute<TypeInfo>(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -13114,7 +13114,7 @@
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::Location::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::Location::TypeInfo;
     MTRSubscribeAttribute<MTRCharStringAttributeCallbackSubscriptionBridge, NSString, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13130,7 +13130,7 @@
         clusterStateCacheContainer.baseDevice, ^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::Location::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::Location::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13148,7 +13148,7 @@
 - (void)readAttributeHardwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::HardwareVersion::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::HardwareVersion::TypeInfo;
     return MTRReadAttribute<MTRInt16uAttributeCallbackBridge, NSNumber, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13157,7 +13157,7 @@
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::HardwareVersion::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::HardwareVersion::TypeInfo;
     MTRSubscribeAttribute<MTRInt16uAttributeCallbackSubscriptionBridge, NSNumber, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13174,7 +13174,7 @@
         clusterStateCacheContainer.baseDevice, ^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::HardwareVersion::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::HardwareVersion::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13192,7 +13192,7 @@
 - (void)readAttributeHardwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::HardwareVersionString::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::HardwareVersionString::TypeInfo;
     return MTRReadAttribute<MTRCharStringAttributeCallbackBridge, NSString, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13202,7 +13202,7 @@
                                             reportHandler:
                                                 (void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::HardwareVersionString::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::HardwareVersionString::TypeInfo;
     MTRSubscribeAttribute<MTRCharStringAttributeCallbackSubscriptionBridge, NSString, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13219,7 +13219,7 @@
         clusterStateCacheContainer.baseDevice, ^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::HardwareVersionString::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::HardwareVersionString::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13237,7 +13237,7 @@
 - (void)readAttributeSoftwareVersionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::SoftwareVersion::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::SoftwareVersion::TypeInfo;
     return MTRReadAttribute<MTRInt32uAttributeCallbackBridge, NSNumber, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13246,7 +13246,7 @@
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::SoftwareVersion::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::SoftwareVersion::TypeInfo;
     MTRSubscribeAttribute<MTRInt32uAttributeCallbackSubscriptionBridge, NSNumber, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13263,7 +13263,7 @@
         clusterStateCacheContainer.baseDevice, ^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::SoftwareVersion::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::SoftwareVersion::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13281,7 +13281,7 @@
 - (void)readAttributeSoftwareVersionStringWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::SoftwareVersionString::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::SoftwareVersionString::TypeInfo;
     return MTRReadAttribute<MTRCharStringAttributeCallbackBridge, NSString, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13291,7 +13291,7 @@
                                             reportHandler:
                                                 (void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::SoftwareVersionString::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::SoftwareVersionString::TypeInfo;
     MTRSubscribeAttribute<MTRCharStringAttributeCallbackSubscriptionBridge, NSString, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13308,7 +13308,7 @@
         clusterStateCacheContainer.baseDevice, ^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::SoftwareVersionString::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::SoftwareVersionString::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13326,7 +13326,7 @@
 - (void)readAttributeManufacturingDateWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::ManufacturingDate::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::ManufacturingDate::TypeInfo;
     return MTRReadAttribute<MTRCharStringAttributeCallbackBridge, NSString, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13335,7 +13335,7 @@
                               subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                         reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::ManufacturingDate::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::ManufacturingDate::TypeInfo;
     MTRSubscribeAttribute<MTRCharStringAttributeCallbackSubscriptionBridge, NSString, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13352,7 +13352,7 @@
         clusterStateCacheContainer.baseDevice, ^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::ManufacturingDate::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::ManufacturingDate::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13370,7 +13370,7 @@
 - (void)readAttributePartNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::PartNumber::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::PartNumber::TypeInfo;
     return MTRReadAttribute<MTRCharStringAttributeCallbackBridge, NSString, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13379,7 +13379,7 @@
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::PartNumber::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::PartNumber::TypeInfo;
     MTRSubscribeAttribute<MTRCharStringAttributeCallbackSubscriptionBridge, NSString, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13395,7 +13395,7 @@
         clusterStateCacheContainer.baseDevice, ^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::PartNumber::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::PartNumber::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13413,7 +13413,7 @@
 - (void)readAttributeProductURLWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::ProductURL::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::ProductURL::TypeInfo;
     return MTRReadAttribute<MTRCharStringAttributeCallbackBridge, NSString, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13422,7 +13422,7 @@
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::ProductURL::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::ProductURL::TypeInfo;
     MTRSubscribeAttribute<MTRCharStringAttributeCallbackSubscriptionBridge, NSString, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13438,7 +13438,7 @@
         clusterStateCacheContainer.baseDevice, ^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::ProductURL::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::ProductURL::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13456,7 +13456,7 @@
 - (void)readAttributeProductLabelWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::ProductLabel::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::ProductLabel::TypeInfo;
     return MTRReadAttribute<MTRCharStringAttributeCallbackBridge, NSString, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13465,7 +13465,7 @@
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::ProductLabel::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::ProductLabel::TypeInfo;
     MTRSubscribeAttribute<MTRCharStringAttributeCallbackSubscriptionBridge, NSString, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13481,7 +13481,7 @@
         clusterStateCacheContainer.baseDevice, ^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::ProductLabel::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::ProductLabel::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13499,7 +13499,7 @@
 - (void)readAttributeSerialNumberWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::SerialNumber::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::SerialNumber::TypeInfo;
     return MTRReadAttribute<MTRCharStringAttributeCallbackBridge, NSString, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13508,7 +13508,7 @@
                          subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                    reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::SerialNumber::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::SerialNumber::TypeInfo;
     MTRSubscribeAttribute<MTRCharStringAttributeCallbackSubscriptionBridge, NSString, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13524,7 +13524,7 @@
         clusterStateCacheContainer.baseDevice, ^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::SerialNumber::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::SerialNumber::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13542,7 +13542,7 @@
 - (void)readAttributeLocalConfigDisabledWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::LocalConfigDisabled::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::LocalConfigDisabled::TypeInfo;
     return MTRReadAttribute<MTRBooleanAttributeCallbackBridge, NSNumber, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13574,11 +13574,11 @@
             }
 
             ListFreer listFreer;
-            using TypeInfo = Basic::Attributes::LocalConfigDisabled::TypeInfo;
+            using TypeInfo = BasicInformation::Attributes::LocalConfigDisabled::TypeInfo;
             TypeInfo::Type cppValue;
             cppValue = value.boolValue;
 
-            chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
+            chip::Controller::BasicInformationCluster cppCluster(exchangeManager, session, self->_endpoint);
             return cppCluster.WriteAttribute<TypeInfo>(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
         });
     std::move(*bridge).DispatchAction(self.device);
@@ -13589,7 +13589,7 @@
                                           reportHandler:
                                               (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::LocalConfigDisabled::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::LocalConfigDisabled::TypeInfo;
     MTRSubscribeAttribute<MTRBooleanAttributeCallbackSubscriptionBridge, NSNumber, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13606,7 +13606,7 @@
         clusterStateCacheContainer.baseDevice, ^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::LocalConfigDisabled::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::LocalConfigDisabled::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13624,7 +13624,7 @@
 - (void)readAttributeReachableWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::Reachable::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::Reachable::TypeInfo;
     return MTRReadAttribute<MTRBooleanAttributeCallbackBridge, NSNumber, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13633,7 +13633,7 @@
                       subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                 reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::Reachable::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::Reachable::TypeInfo;
     MTRSubscribeAttribute<MTRBooleanAttributeCallbackSubscriptionBridge, NSNumber, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13649,7 +13649,7 @@
         clusterStateCacheContainer.baseDevice, ^(BooleanAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::Reachable::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::Reachable::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13667,7 +13667,7 @@
 - (void)readAttributeUniqueIDWithCompletion:(void (^)(NSString * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::UniqueID::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::UniqueID::TypeInfo;
     return MTRReadAttribute<MTRCharStringAttributeCallbackBridge, NSString, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13676,7 +13676,7 @@
                      subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                reportHandler:(void (^)(NSString * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::UniqueID::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::UniqueID::TypeInfo;
     MTRSubscribeAttribute<MTRCharStringAttributeCallbackSubscriptionBridge, NSString, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13692,7 +13692,7 @@
         clusterStateCacheContainer.baseDevice, ^(CharStringAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::UniqueID::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::UniqueID::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13707,39 +13707,40 @@
         });
 }
 
-- (void)readAttributeCapabilityMinimaWithCompletion:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
+- (void)readAttributeCapabilityMinimaWithCompletion:(void (^)(MTRBasicInformationClusterCapabilityMinimaStruct * _Nullable value,
                                                         NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo;
-    return MTRReadAttribute<MTRBasicCapabilityMinimaStructAttributeCallbackBridge, MTRBasicClusterCapabilityMinimaStruct,
-        TypeInfo::DecodableType>(
+    using TypeInfo = BasicInformation::Attributes::CapabilityMinima::TypeInfo;
+    return MTRReadAttribute<MTRBasicInformationCapabilityMinimaStructAttributeCallbackBridge,
+        MTRBasicInformationClusterCapabilityMinimaStruct, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 - (void)subscribeAttributeCapabilityMinimaWithParams:(MTRSubscribeParams * _Nonnull)params
                              subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
-                                       reportHandler:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
+                                       reportHandler:(void (^)(MTRBasicInformationClusterCapabilityMinimaStruct * _Nullable value,
                                                          NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo;
-    MTRSubscribeAttribute<MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge, MTRBasicClusterCapabilityMinimaStruct,
-        TypeInfo::DecodableType>(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
-        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+    using TypeInfo = BasicInformation::Attributes::CapabilityMinima::TypeInfo;
+    MTRSubscribeAttribute<MTRBasicInformationCapabilityMinimaStructAttributeCallbackSubscriptionBridge,
+        MTRBasicInformationClusterCapabilityMinimaStruct, TypeInfo::DecodableType>(params, subscriptionEstablished, reportHandler,
+        self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeCapabilityMinimaWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
                                                   endpoint:(NSNumber *)endpoint
                                                      queue:(dispatch_queue_t)queue
-                                                completion:(void (^)(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
-                                                               NSError * _Nullable error))completion
+                                                completion:
+                                                    (void (^)(MTRBasicInformationClusterCapabilityMinimaStruct * _Nullable value,
+                                                        NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBasicCapabilityMinimaStructAttributeCallbackBridge(queue, completion);
+    auto * bridge = new MTRBasicInformationCapabilityMinimaStructAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
-        ^(BasicCapabilityMinimaStructAttributeCallback successCb, MTRErrorCallback failureCb) {
+        ^(BasicInformationCapabilityMinimaStructAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::CapabilityMinima::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::CapabilityMinima::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13757,8 +13758,8 @@
 - (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::GeneratedCommandList::TypeInfo;
-    return MTRReadAttribute<MTRBasicGeneratedCommandListListAttributeCallbackBridge, NSArray, TypeInfo::DecodableType>(
+    using TypeInfo = BasicInformation::Attributes::GeneratedCommandList::TypeInfo;
+    return MTRReadAttribute<MTRBasicInformationGeneratedCommandListListAttributeCallbackBridge, NSArray, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
@@ -13767,10 +13768,10 @@
                                            reportHandler:
                                                (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::GeneratedCommandList::TypeInfo;
-    MTRSubscribeAttribute<MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge, NSArray, TypeInfo::DecodableType>(
-        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
-        TypeInfo::GetAttributeId());
+    using TypeInfo = BasicInformation::Attributes::GeneratedCommandList::TypeInfo;
+    MTRSubscribeAttribute<MTRBasicInformationGeneratedCommandListListAttributeCallbackSubscriptionBridge, NSArray,
+        TypeInfo::DecodableType>(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
@@ -13779,12 +13780,12 @@
                                                     completion:
                                                         (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBasicGeneratedCommandListListAttributeCallbackBridge(queue, completion);
+    auto * bridge = new MTRBasicInformationGeneratedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
-        ^(BasicGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+        ^(BasicInformationGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::GeneratedCommandList::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::GeneratedCommandList::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13802,8 +13803,8 @@
 - (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::AcceptedCommandList::TypeInfo;
-    return MTRReadAttribute<MTRBasicAcceptedCommandListListAttributeCallbackBridge, NSArray, TypeInfo::DecodableType>(
+    using TypeInfo = BasicInformation::Attributes::AcceptedCommandList::TypeInfo;
+    return MTRReadAttribute<MTRBasicInformationAcceptedCommandListListAttributeCallbackBridge, NSArray, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
@@ -13812,10 +13813,10 @@
                                           reportHandler:
                                               (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::AcceptedCommandList::TypeInfo;
-    MTRSubscribeAttribute<MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge, NSArray, TypeInfo::DecodableType>(
-        params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
-        TypeInfo::GetAttributeId());
+    using TypeInfo = BasicInformation::Attributes::AcceptedCommandList::TypeInfo;
+    MTRSubscribeAttribute<MTRBasicInformationAcceptedCommandListListAttributeCallbackSubscriptionBridge, NSArray,
+        TypeInfo::DecodableType>(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
@@ -13824,12 +13825,12 @@
                                                    completion:
                                                        (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBasicAcceptedCommandListListAttributeCallbackBridge(queue, completion);
+    auto * bridge = new MTRBasicInformationAcceptedCommandListListAttributeCallbackBridge(queue, completion);
     std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
-        ^(BasicAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+        ^(BasicInformationAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::AcceptedCommandList::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::AcceptedCommandList::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13847,8 +13848,8 @@
 - (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::AttributeList::TypeInfo;
-    return MTRReadAttribute<MTRBasicAttributeListListAttributeCallbackBridge, NSArray, TypeInfo::DecodableType>(
+    using TypeInfo = BasicInformation::Attributes::AttributeList::TypeInfo;
+    return MTRReadAttribute<MTRBasicInformationAttributeListListAttributeCallbackBridge, NSArray, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
@@ -13856,10 +13857,10 @@
                           subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                     reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::AttributeList::TypeInfo;
-    MTRSubscribeAttribute<MTRBasicAttributeListListAttributeCallbackSubscriptionBridge, NSArray, TypeInfo::DecodableType>(params,
-        subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
-        TypeInfo::GetAttributeId());
+    using TypeInfo = BasicInformation::Attributes::AttributeList::TypeInfo;
+    MTRSubscribeAttribute<MTRBasicInformationAttributeListListAttributeCallbackSubscriptionBridge, NSArray,
+        TypeInfo::DecodableType>(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+        TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
 
 + (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
@@ -13867,12 +13868,12 @@
                                                   queue:(dispatch_queue_t)queue
                                              completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
 {
-    auto * bridge = new MTRBasicAttributeListListAttributeCallbackBridge(queue, completion);
-    std::move(*bridge).DispatchLocalAction(
-        clusterStateCacheContainer.baseDevice, ^(BasicAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+    auto * bridge = new MTRBasicInformationAttributeListListAttributeCallbackBridge(queue, completion);
+    std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+        ^(BasicInformationAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::AttributeList::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::AttributeList::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13890,7 +13891,7 @@
 - (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::FeatureMap::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::FeatureMap::TypeInfo;
     return MTRReadAttribute<MTRInt32uAttributeCallbackBridge, NSNumber, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13899,7 +13900,7 @@
                        subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                  reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::FeatureMap::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::FeatureMap::TypeInfo;
     MTRSubscribeAttribute<MTRInt32uAttributeCallbackSubscriptionBridge, NSNumber, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13915,7 +13916,7 @@
         clusterStateCacheContainer.baseDevice, ^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::FeatureMap::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::FeatureMap::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13933,7 +13934,7 @@
 - (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
 {
     MTRReadParams * params = [[MTRReadParams alloc] init];
-    using TypeInfo = Basic::Attributes::ClusterRevision::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::ClusterRevision::TypeInfo;
     return MTRReadAttribute<MTRInt16uAttributeCallbackBridge, NSNumber, TypeInfo::DecodableType>(
         params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
 }
@@ -13942,7 +13943,7 @@
                             subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
                                       reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
 {
-    using TypeInfo = Basic::Attributes::ClusterRevision::TypeInfo;
+    using TypeInfo = BasicInformation::Attributes::ClusterRevision::TypeInfo;
     MTRSubscribeAttribute<MTRInt16uAttributeCallbackSubscriptionBridge, NSNumber, TypeInfo::DecodableType>(params,
         subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
         TypeInfo::GetAttributeId());
@@ -13959,7 +13960,7 @@
         clusterStateCacheContainer.baseDevice, ^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
             if (clusterStateCacheContainer.cppClusterStateCache) {
                 chip::app::ConcreteAttributePath path;
-                using TypeInfo = Basic::Attributes::ClusterRevision::TypeInfo;
+                using TypeInfo = BasicInformation::Attributes::ClusterRevision::TypeInfo;
                 path.mEndpointId = static_cast<chip::EndpointId>([endpoint unsignedShortValue]);
                 path.mClusterId = TypeInfo::GetClusterId();
                 path.mAttributeId = TypeInfo::GetAttributeId();
@@ -13976,6 +13977,9 @@
 
 @end
 
+@implementation MTRBaseClusterBasic
+@end
+
 @implementation MTRBaseClusterBasic (Deprecated)
 
 - (void)mfgSpecificPingWithParams:(MTRBasicClusterMfgSpecificPingParams * _Nullable)params
@@ -14843,7 +14847,7 @@
                                                                NSError * _Nullable error))completionHandler
 {
     [self readAttributeCapabilityMinimaWithCompletion:^(
-        MTRBasicClusterCapabilityMinimaStruct * _Nullable value, NSError * _Nullable error) {
+        MTRBasicInformationClusterCapabilityMinimaStruct * _Nullable value, NSError * _Nullable error) {
         // Cast is safe because subclass does not add any selectors.
         completionHandler(static_cast<MTRBasicClusterCapabilityMinimaStruct *>(value), error);
     }];
@@ -14865,8 +14869,8 @@
     }
     [self subscribeAttributeCapabilityMinimaWithParams:subscribeParams
                                subscriptionEstablished:subscriptionEstablishedHandler
-                                         reportHandler:^(
-                                             MTRBasicClusterCapabilityMinimaStruct * _Nullable value, NSError * _Nullable error) {
+                                         reportHandler:^(MTRBasicInformationClusterCapabilityMinimaStruct * _Nullable value,
+                                             NSError * _Nullable error) {
                                              // Cast is safe because subclass does not add any selectors.
                                              reportHandler(static_cast<MTRBasicClusterCapabilityMinimaStruct *>(value), error);
                                          }];
@@ -14880,7 +14884,7 @@
     [self readAttributeCapabilityMinimaWithClusterStateCache:attributeCacheContainer.realContainer
                                                     endpoint:endpoint
                                                        queue:queue
-                                                  completion:^(MTRBasicClusterCapabilityMinimaStruct * _Nullable value,
+                                                  completion:^(MTRBasicInformationClusterCapabilityMinimaStruct * _Nullable value,
                                                       NSError * _Nullable error) {
                                                       // Cast is safe because subclass does not add any selectors.
                                                       completionHandler(
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_Internal.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_Internal.h
index 1e65a8b..333bc90 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_Internal.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_Internal.h
@@ -77,7 +77,7 @@
 @property (nonatomic, assign, readonly) chip::EndpointId endpoint;
 @end
 
-@interface MTRBaseClusterBasic ()
+@interface MTRBaseClusterBasicInformation ()
 @property (nonatomic, strong, readonly) MTRBaseDevice * device;
 @property (nonatomic, assign, readonly) chip::EndpointId endpoint;
 @end
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h
index e7f8530..1bfbf12 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h
@@ -626,14 +626,14 @@
                                                                 const chip::app::DataModel::DecodableList<chip::CommandId> & data);
 typedef void (*ActionsAttributeListListAttributeCallback)(void * context,
                                                           const chip::app::DataModel::DecodableList<chip::AttributeId> & data);
-typedef void (*BasicCapabilityMinimaStructAttributeCallback)(
-    void *, const chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType &);
-typedef void (*BasicGeneratedCommandListListAttributeCallback)(void * context,
-                                                               const chip::app::DataModel::DecodableList<chip::CommandId> & data);
-typedef void (*BasicAcceptedCommandListListAttributeCallback)(void * context,
-                                                              const chip::app::DataModel::DecodableList<chip::CommandId> & data);
-typedef void (*BasicAttributeListListAttributeCallback)(void * context,
-                                                        const chip::app::DataModel::DecodableList<chip::AttributeId> & data);
+typedef void (*BasicInformationCapabilityMinimaStructAttributeCallback)(
+    void *, const chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::DecodableType &);
+typedef void (*BasicInformationGeneratedCommandListListAttributeCallback)(
+    void * context, const chip::app::DataModel::DecodableList<chip::CommandId> & data);
+typedef void (*BasicInformationAcceptedCommandListListAttributeCallback)(
+    void * context, const chip::app::DataModel::DecodableList<chip::CommandId> & data);
+typedef void (*BasicInformationAttributeListListAttributeCallback)(
+    void * context, const chip::app::DataModel::DecodableList<chip::AttributeId> & data);
 typedef void (*OTASoftwareUpdateProviderGeneratedCommandListListAttributeCallback)(
     void * context, const chip::app::DataModel::DecodableList<chip::CommandId> & data);
 typedef void (*OTASoftwareUpdateProviderAcceptedCommandListListAttributeCallback)(
@@ -3334,128 +3334,134 @@
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRBasicCapabilityMinimaStructAttributeCallbackBridge : public MTRCallbackBridge<BasicCapabilityMinimaStructAttributeCallback>
+class MTRBasicInformationCapabilityMinimaStructAttributeCallbackBridge
+    : public MTRCallbackBridge<BasicInformationCapabilityMinimaStructAttributeCallback>
 {
 public:
-    MTRBasicCapabilityMinimaStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge<BasicCapabilityMinimaStructAttributeCallback>(queue, handler, OnSuccessFn){};
+    MTRBasicInformationCapabilityMinimaStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge<BasicInformationCapabilityMinimaStructAttributeCallback>(queue, handler, OnSuccessFn){};
 
-    MTRBasicCapabilityMinimaStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge<BasicCapabilityMinimaStructAttributeCallback>(queue, handler, action, OnSuccessFn){};
+    MTRBasicInformationCapabilityMinimaStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+                                                                     MTRActionBlock action) :
+        MTRCallbackBridge<BasicInformationCapabilityMinimaStructAttributeCallback>(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context,
-                            const chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType & value);
+                            const chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::DecodableType & value);
 };
 
-class MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge
-    : public MTRBasicCapabilityMinimaStructAttributeCallbackBridge
+class MTRBasicInformationCapabilityMinimaStructAttributeCallbackSubscriptionBridge
+    : public MTRBasicInformationCapabilityMinimaStructAttributeCallbackBridge
 {
 public:
-    MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
-                                                                      MTRActionBlock action,
-                                                                      MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRBasicCapabilityMinimaStructAttributeCallbackBridge(queue, handler, action),
+    MTRBasicInformationCapabilityMinimaStructAttributeCallbackSubscriptionBridge(
+        dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+        MTRSubscriptionEstablishedHandler establishedHandler) :
+        MTRBasicInformationCapabilityMinimaStructAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     void OnSubscriptionEstablished();
-    using MTRBasicCapabilityMinimaStructAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRBasicCapabilityMinimaStructAttributeCallbackBridge::OnDone;
+    using MTRBasicInformationCapabilityMinimaStructAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRBasicInformationCapabilityMinimaStructAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRBasicGeneratedCommandListListAttributeCallbackBridge
-    : public MTRCallbackBridge<BasicGeneratedCommandListListAttributeCallback>
+class MTRBasicInformationGeneratedCommandListListAttributeCallbackBridge
+    : public MTRCallbackBridge<BasicInformationGeneratedCommandListListAttributeCallback>
 {
 public:
-    MTRBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge<BasicGeneratedCommandListListAttributeCallback>(queue, handler, OnSuccessFn){};
+    MTRBasicInformationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge<BasicInformationGeneratedCommandListListAttributeCallback>(queue, handler, OnSuccessFn){};
 
-    MTRBasicGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
-                                                            MTRActionBlock action) :
-        MTRCallbackBridge<BasicGeneratedCommandListListAttributeCallback>(queue, handler, action, OnSuccessFn){};
+    MTRBasicInformationGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+                                                                       MTRActionBlock action) :
+        MTRCallbackBridge<BasicInformationGeneratedCommandListListAttributeCallback>(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList<chip::CommandId> & value);
 };
 
-class MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge
-    : public MTRBasicGeneratedCommandListListAttributeCallbackBridge
+class MTRBasicInformationGeneratedCommandListListAttributeCallbackSubscriptionBridge
+    : public MTRBasicInformationGeneratedCommandListListAttributeCallbackBridge
 {
 public:
-    MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
-                                                                        MTRActionBlock action,
-                                                                        MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRBasicGeneratedCommandListListAttributeCallbackBridge(queue, handler, action),
+    MTRBasicInformationGeneratedCommandListListAttributeCallbackSubscriptionBridge(
+        dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+        MTRSubscriptionEstablishedHandler establishedHandler) :
+        MTRBasicInformationGeneratedCommandListListAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     void OnSubscriptionEstablished();
-    using MTRBasicGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRBasicGeneratedCommandListListAttributeCallbackBridge::OnDone;
+    using MTRBasicInformationGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRBasicInformationGeneratedCommandListListAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRBasicAcceptedCommandListListAttributeCallbackBridge
-    : public MTRCallbackBridge<BasicAcceptedCommandListListAttributeCallback>
+class MTRBasicInformationAcceptedCommandListListAttributeCallbackBridge
+    : public MTRCallbackBridge<BasicInformationAcceptedCommandListListAttributeCallback>
 {
 public:
-    MTRBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge<BasicAcceptedCommandListListAttributeCallback>(queue, handler, OnSuccessFn){};
+    MTRBasicInformationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge<BasicInformationAcceptedCommandListListAttributeCallback>(queue, handler, OnSuccessFn){};
 
-    MTRBasicAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge<BasicAcceptedCommandListListAttributeCallback>(queue, handler, action, OnSuccessFn){};
+    MTRBasicInformationAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+                                                                      MTRActionBlock action) :
+        MTRCallbackBridge<BasicInformationAcceptedCommandListListAttributeCallback>(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList<chip::CommandId> & value);
 };
 
-class MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge
-    : public MTRBasicAcceptedCommandListListAttributeCallbackBridge
+class MTRBasicInformationAcceptedCommandListListAttributeCallbackSubscriptionBridge
+    : public MTRBasicInformationAcceptedCommandListListAttributeCallbackBridge
 {
 public:
-    MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
-                                                                       MTRActionBlock action,
-                                                                       MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRBasicAcceptedCommandListListAttributeCallbackBridge(queue, handler, action),
+    MTRBasicInformationAcceptedCommandListListAttributeCallbackSubscriptionBridge(
+        dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+        MTRSubscriptionEstablishedHandler establishedHandler) :
+        MTRBasicInformationAcceptedCommandListListAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     void OnSubscriptionEstablished();
-    using MTRBasicAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRBasicAcceptedCommandListListAttributeCallbackBridge::OnDone;
+    using MTRBasicInformationAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRBasicInformationAcceptedCommandListListAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
 };
 
-class MTRBasicAttributeListListAttributeCallbackBridge : public MTRCallbackBridge<BasicAttributeListListAttributeCallback>
+class MTRBasicInformationAttributeListListAttributeCallbackBridge
+    : public MTRCallbackBridge<BasicInformationAttributeListListAttributeCallback>
 {
 public:
-    MTRBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
-        MTRCallbackBridge<BasicAttributeListListAttributeCallback>(queue, handler, OnSuccessFn){};
+    MTRBasicInformationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+        MTRCallbackBridge<BasicInformationAttributeListListAttributeCallback>(queue, handler, OnSuccessFn){};
 
-    MTRBasicAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action) :
-        MTRCallbackBridge<BasicAttributeListListAttributeCallback>(queue, handler, action, OnSuccessFn){};
+    MTRBasicInformationAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+                                                                MTRActionBlock action) :
+        MTRCallbackBridge<BasicInformationAttributeListListAttributeCallback>(queue, handler, action, OnSuccessFn){};
 
     static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList<chip::AttributeId> & value);
 };
 
-class MTRBasicAttributeListListAttributeCallbackSubscriptionBridge : public MTRBasicAttributeListListAttributeCallbackBridge
+class MTRBasicInformationAttributeListListAttributeCallbackSubscriptionBridge
+    : public MTRBasicInformationAttributeListListAttributeCallbackBridge
 {
 public:
-    MTRBasicAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
-                                                                 MTRActionBlock action,
-                                                                 MTRSubscriptionEstablishedHandler establishedHandler) :
-        MTRBasicAttributeListListAttributeCallbackBridge(queue, handler, action),
+    MTRBasicInformationAttributeListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+                                                                            MTRActionBlock action,
+                                                                            MTRSubscriptionEstablishedHandler establishedHandler) :
+        MTRBasicInformationAttributeListListAttributeCallbackBridge(queue, handler, action),
         mEstablishedHandler(establishedHandler)
     {}
 
     void OnSubscriptionEstablished();
-    using MTRBasicAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
-    using MTRBasicAttributeListListAttributeCallbackBridge::OnDone;
+    using MTRBasicInformationAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
+    using MTRBasicInformationAttributeListListAttributeCallbackBridge::OnDone;
 
 private:
     MTRSubscriptionEstablishedHandler mEstablishedHandler;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm
index e288160..0007d45 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm
@@ -2435,17 +2435,17 @@
     }
 }
 
-void MTRBasicCapabilityMinimaStructAttributeCallbackBridge::OnSuccessFn(
-    void * context, const chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType & value)
+void MTRBasicInformationCapabilityMinimaStructAttributeCallbackBridge::OnSuccessFn(
+    void * context, const chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::DecodableType & value)
 {
-    MTRBasicClusterCapabilityMinimaStruct * _Nonnull objCValue;
-    objCValue = [MTRBasicClusterCapabilityMinimaStruct new];
+    MTRBasicInformationClusterCapabilityMinimaStruct * _Nonnull objCValue;
+    objCValue = [MTRBasicInformationClusterCapabilityMinimaStruct new];
     objCValue.caseSessionsPerFabric = [NSNumber numberWithUnsignedShort:value.caseSessionsPerFabric];
     objCValue.subscriptionsPerFabric = [NSNumber numberWithUnsignedShort:value.subscriptionsPerFabric];
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBasicCapabilityMinimaStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
+void MTRBasicInformationCapabilityMinimaStructAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
     if (!mQueue) {
         return;
@@ -2460,7 +2460,7 @@
     }
 }
 
-void MTRBasicGeneratedCommandListListAttributeCallbackBridge::OnSuccessFn(
+void MTRBasicInformationGeneratedCommandListListAttributeCallbackBridge::OnSuccessFn(
     void * context, const chip::app::DataModel::DecodableList<chip::CommandId> & value)
 {
     NSArray * _Nonnull objCValue;
@@ -2483,7 +2483,7 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBasicGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
+void MTRBasicInformationGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
     if (!mQueue) {
         return;
@@ -2498,7 +2498,7 @@
     }
 }
 
-void MTRBasicAcceptedCommandListListAttributeCallbackBridge::OnSuccessFn(
+void MTRBasicInformationAcceptedCommandListListAttributeCallbackBridge::OnSuccessFn(
     void * context, const chip::app::DataModel::DecodableList<chip::CommandId> & value)
 {
     NSArray * _Nonnull objCValue;
@@ -2521,7 +2521,7 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBasicAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
+void MTRBasicInformationAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
     if (!mQueue) {
         return;
@@ -2536,7 +2536,7 @@
     }
 }
 
-void MTRBasicAttributeListListAttributeCallbackBridge::OnSuccessFn(
+void MTRBasicInformationAttributeListListAttributeCallbackBridge::OnSuccessFn(
     void * context, const chip::app::DataModel::DecodableList<chip::AttributeId> & value)
 {
     NSArray * _Nonnull objCValue;
@@ -2559,7 +2559,7 @@
     DispatchSuccess(context, objCValue);
 };
 
-void MTRBasicAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
+void MTRBasicInformationAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
 {
     if (!mQueue) {
         return;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
index 95df436..c9c92bd 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
@@ -58,7 +58,7 @@
         MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeActionsID")
     = 0x00000025,
     MTRClusterBasicID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeBasicID")
+        MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeBasicInformationID")
     = 0x00000028,
     MTRClusterOtaSoftwareUpdateProviderID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
         MTR_NEWLY_DEPRECATED("Please use MTRClusterIDTypeOTASoftwareUpdateProviderID")
@@ -246,7 +246,7 @@
     MTRClusterIDTypeBindingID MTR_NEWLY_AVAILABLE = 0x0000001E,
     MTRClusterIDTypeAccessControlID MTR_NEWLY_AVAILABLE = 0x0000001F,
     MTRClusterIDTypeActionsID MTR_NEWLY_AVAILABLE = 0x00000025,
-    MTRClusterIDTypeBasicID MTR_NEWLY_AVAILABLE = 0x00000028,
+    MTRClusterIDTypeBasicInformationID MTR_NEWLY_AVAILABLE = 0x00000028,
     MTRClusterIDTypeOTASoftwareUpdateProviderID MTR_NEWLY_AVAILABLE = 0x00000029,
     MTRClusterIDTypeOTASoftwareUpdateRequestorID MTR_NEWLY_AVAILABLE = 0x0000002A,
     MTRClusterIDTypeLocalizationConfigurationID MTR_NEWLY_AVAILABLE = 0x0000002B,
@@ -883,109 +883,111 @@
 
     // Cluster Basic deprecated attribute names
     MTRClusterBasicAttributeDataModelRevisionID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeDataModelRevisionID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeDataModelRevisionID")
     = 0x00000000,
     MTRClusterBasicAttributeVendorNameID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeVendorNameID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeVendorNameID")
     = 0x00000001,
     MTRClusterBasicAttributeVendorIDID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeVendorIDID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeVendorIDID")
     = 0x00000002,
     MTRClusterBasicAttributeProductNameID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeProductNameID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeProductNameID")
     = 0x00000003,
     MTRClusterBasicAttributeProductIDID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeProductIDID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeProductIDID")
     = 0x00000004,
     MTRClusterBasicAttributeNodeLabelID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeNodeLabelID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeNodeLabelID")
     = 0x00000005,
     MTRClusterBasicAttributeLocationID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeLocationID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeLocationID")
     = 0x00000006,
     MTRClusterBasicAttributeHardwareVersionID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeHardwareVersionID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeHardwareVersionID")
     = 0x00000007,
     MTRClusterBasicAttributeHardwareVersionStringID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeHardwareVersionStringID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeHardwareVersionStringID")
     = 0x00000008,
     MTRClusterBasicAttributeSoftwareVersionID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeSoftwareVersionID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeSoftwareVersionID")
     = 0x00000009,
     MTRClusterBasicAttributeSoftwareVersionStringID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeSoftwareVersionStringID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeSoftwareVersionStringID")
     = 0x0000000A,
     MTRClusterBasicAttributeManufacturingDateID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeManufacturingDateID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeManufacturingDateID")
     = 0x0000000B,
     MTRClusterBasicAttributePartNumberID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributePartNumberID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributePartNumberID")
     = 0x0000000C,
     MTRClusterBasicAttributeProductURLID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeProductURLID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeProductURLID")
     = 0x0000000D,
     MTRClusterBasicAttributeProductLabelID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeProductLabelID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeProductLabelID")
     = 0x0000000E,
     MTRClusterBasicAttributeSerialNumberID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeSerialNumberID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeSerialNumberID")
     = 0x0000000F,
     MTRClusterBasicAttributeLocalConfigDisabledID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeLocalConfigDisabledID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeLocalConfigDisabledID")
     = 0x00000010,
     MTRClusterBasicAttributeReachableID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeReachableID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeReachableID")
     = 0x00000011,
     MTRClusterBasicAttributeUniqueIDID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeUniqueIDID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeUniqueIDID")
     = 0x00000012,
     MTRClusterBasicAttributeCapabilityMinimaID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeCapabilityMinimaID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeCapabilityMinimaID")
     = 0x00000013,
     MTRClusterBasicAttributeGeneratedCommandListID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeGeneratedCommandListID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeGeneratedCommandListID")
     = MTRClusterGlobalAttributeGeneratedCommandListID,
     MTRClusterBasicAttributeAcceptedCommandListID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeAcceptedCommandListID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeAcceptedCommandListID")
     = MTRClusterGlobalAttributeAcceptedCommandListID,
     MTRClusterBasicAttributeAttributeListID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeAttributeListID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeAttributeListID")
     = MTRClusterGlobalAttributeAttributeListID,
     MTRClusterBasicAttributeFeatureMapID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeFeatureMapID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeFeatureMapID")
     = MTRClusterGlobalAttributeFeatureMapID,
     MTRClusterBasicAttributeClusterRevisionID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicAttributeClusterRevisionID")
+        MTR_NEWLY_DEPRECATED("Please use MTRAttributeIDTypeClusterBasicInformationAttributeClusterRevisionID")
     = MTRClusterGlobalAttributeClusterRevisionID,
 
-    // Cluster Basic attributes
-    MTRAttributeIDTypeClusterBasicAttributeDataModelRevisionID MTR_NEWLY_AVAILABLE = 0x00000000,
-    MTRAttributeIDTypeClusterBasicAttributeVendorNameID MTR_NEWLY_AVAILABLE = 0x00000001,
-    MTRAttributeIDTypeClusterBasicAttributeVendorIDID MTR_NEWLY_AVAILABLE = 0x00000002,
-    MTRAttributeIDTypeClusterBasicAttributeProductNameID MTR_NEWLY_AVAILABLE = 0x00000003,
-    MTRAttributeIDTypeClusterBasicAttributeProductIDID MTR_NEWLY_AVAILABLE = 0x00000004,
-    MTRAttributeIDTypeClusterBasicAttributeNodeLabelID MTR_NEWLY_AVAILABLE = 0x00000005,
-    MTRAttributeIDTypeClusterBasicAttributeLocationID MTR_NEWLY_AVAILABLE = 0x00000006,
-    MTRAttributeIDTypeClusterBasicAttributeHardwareVersionID MTR_NEWLY_AVAILABLE = 0x00000007,
-    MTRAttributeIDTypeClusterBasicAttributeHardwareVersionStringID MTR_NEWLY_AVAILABLE = 0x00000008,
-    MTRAttributeIDTypeClusterBasicAttributeSoftwareVersionID MTR_NEWLY_AVAILABLE = 0x00000009,
-    MTRAttributeIDTypeClusterBasicAttributeSoftwareVersionStringID MTR_NEWLY_AVAILABLE = 0x0000000A,
-    MTRAttributeIDTypeClusterBasicAttributeManufacturingDateID MTR_NEWLY_AVAILABLE = 0x0000000B,
-    MTRAttributeIDTypeClusterBasicAttributePartNumberID MTR_NEWLY_AVAILABLE = 0x0000000C,
-    MTRAttributeIDTypeClusterBasicAttributeProductURLID MTR_NEWLY_AVAILABLE = 0x0000000D,
-    MTRAttributeIDTypeClusterBasicAttributeProductLabelID MTR_NEWLY_AVAILABLE = 0x0000000E,
-    MTRAttributeIDTypeClusterBasicAttributeSerialNumberID MTR_NEWLY_AVAILABLE = 0x0000000F,
-    MTRAttributeIDTypeClusterBasicAttributeLocalConfigDisabledID MTR_NEWLY_AVAILABLE = 0x00000010,
-    MTRAttributeIDTypeClusterBasicAttributeReachableID MTR_NEWLY_AVAILABLE = 0x00000011,
-    MTRAttributeIDTypeClusterBasicAttributeUniqueIDID MTR_NEWLY_AVAILABLE = 0x00000012,
-    MTRAttributeIDTypeClusterBasicAttributeCapabilityMinimaID MTR_NEWLY_AVAILABLE = 0x00000013,
-    MTRAttributeIDTypeClusterBasicAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+    // Cluster BasicInformation attributes
+    MTRAttributeIDTypeClusterBasicInformationAttributeDataModelRevisionID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTRAttributeIDTypeClusterBasicInformationAttributeVendorNameID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTRAttributeIDTypeClusterBasicInformationAttributeVendorIDID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTRAttributeIDTypeClusterBasicInformationAttributeProductNameID MTR_NEWLY_AVAILABLE = 0x00000003,
+    MTRAttributeIDTypeClusterBasicInformationAttributeProductIDID MTR_NEWLY_AVAILABLE = 0x00000004,
+    MTRAttributeIDTypeClusterBasicInformationAttributeNodeLabelID MTR_NEWLY_AVAILABLE = 0x00000005,
+    MTRAttributeIDTypeClusterBasicInformationAttributeLocationID MTR_NEWLY_AVAILABLE = 0x00000006,
+    MTRAttributeIDTypeClusterBasicInformationAttributeHardwareVersionID MTR_NEWLY_AVAILABLE = 0x00000007,
+    MTRAttributeIDTypeClusterBasicInformationAttributeHardwareVersionStringID MTR_NEWLY_AVAILABLE = 0x00000008,
+    MTRAttributeIDTypeClusterBasicInformationAttributeSoftwareVersionID MTR_NEWLY_AVAILABLE = 0x00000009,
+    MTRAttributeIDTypeClusterBasicInformationAttributeSoftwareVersionStringID MTR_NEWLY_AVAILABLE = 0x0000000A,
+    MTRAttributeIDTypeClusterBasicInformationAttributeManufacturingDateID MTR_NEWLY_AVAILABLE = 0x0000000B,
+    MTRAttributeIDTypeClusterBasicInformationAttributePartNumberID MTR_NEWLY_AVAILABLE = 0x0000000C,
+    MTRAttributeIDTypeClusterBasicInformationAttributeProductURLID MTR_NEWLY_AVAILABLE = 0x0000000D,
+    MTRAttributeIDTypeClusterBasicInformationAttributeProductLabelID MTR_NEWLY_AVAILABLE = 0x0000000E,
+    MTRAttributeIDTypeClusterBasicInformationAttributeSerialNumberID MTR_NEWLY_AVAILABLE = 0x0000000F,
+    MTRAttributeIDTypeClusterBasicInformationAttributeLocalConfigDisabledID MTR_NEWLY_AVAILABLE = 0x00000010,
+    MTRAttributeIDTypeClusterBasicInformationAttributeReachableID MTR_NEWLY_AVAILABLE = 0x00000011,
+    MTRAttributeIDTypeClusterBasicInformationAttributeUniqueIDID MTR_NEWLY_AVAILABLE = 0x00000012,
+    MTRAttributeIDTypeClusterBasicInformationAttributeCapabilityMinimaID MTR_NEWLY_AVAILABLE = 0x00000013,
+    MTRAttributeIDTypeClusterBasicInformationAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
     = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
-    MTRAttributeIDTypeClusterBasicAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+    MTRAttributeIDTypeClusterBasicInformationAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
     = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
-    MTRAttributeIDTypeClusterBasicAttributeAttributeListID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeAttributeListID,
-    MTRAttributeIDTypeClusterBasicAttributeFeatureMapID MTR_NEWLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
-    MTRAttributeIDTypeClusterBasicAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+    MTRAttributeIDTypeClusterBasicInformationAttributeAttributeListID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+    MTRAttributeIDTypeClusterBasicInformationAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+    = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+    MTRAttributeIDTypeClusterBasicInformationAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
     = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
 
     // Cluster OtaSoftwareUpdateProvider deprecated attribute names
@@ -5853,11 +5855,11 @@
 
     // Cluster Basic deprecated command id names
     MTRClusterBasicCommandMfgSpecificPingID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterBasicCommandMfgSpecificPingID")
+        MTR_NEWLY_DEPRECATED("Please use MTRCommandIDTypeClusterBasicInformationCommandMfgSpecificPingID")
     = 0x10020000,
 
-    // Cluster Basic commands
-    MTRCommandIDTypeClusterBasicCommandMfgSpecificPingID MTR_NEWLY_AVAILABLE = 0x10020000,
+    // Cluster BasicInformation commands
+    MTRCommandIDTypeClusterBasicInformationCommandMfgSpecificPingID MTR_NEWLY_AVAILABLE = 0x10020000,
 
     // Cluster OtaSoftwareUpdateProvider deprecated command id names
     MTRClusterOtaSoftwareUpdateProviderCommandQueryImageID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
@@ -6786,23 +6788,23 @@
 
     // Cluster Basic deprecated event names
     MTRClusterBasicEventStartUpID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterBasicEventStartUpID")
+        MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterBasicInformationEventStartUpID")
     = 0x00000000,
     MTRClusterBasicEventShutDownID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterBasicEventShutDownID")
+        MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterBasicInformationEventShutDownID")
     = 0x00000001,
     MTRClusterBasicEventLeaveID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterBasicEventLeaveID")
+        MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterBasicInformationEventLeaveID")
     = 0x00000002,
     MTRClusterBasicEventReachableChangedID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-        MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterBasicEventReachableChangedID")
+        MTR_NEWLY_DEPRECATED("Please use MTREventIDTypeClusterBasicInformationEventReachableChangedID")
     = 0x00000003,
 
-    // Cluster Basic events
-    MTREventIDTypeClusterBasicEventStartUpID MTR_NEWLY_AVAILABLE = 0x00000000,
-    MTREventIDTypeClusterBasicEventShutDownID MTR_NEWLY_AVAILABLE = 0x00000001,
-    MTREventIDTypeClusterBasicEventLeaveID MTR_NEWLY_AVAILABLE = 0x00000002,
-    MTREventIDTypeClusterBasicEventReachableChangedID MTR_NEWLY_AVAILABLE = 0x00000003,
+    // Cluster BasicInformation events
+    MTREventIDTypeClusterBasicInformationEventStartUpID MTR_NEWLY_AVAILABLE = 0x00000000,
+    MTREventIDTypeClusterBasicInformationEventShutDownID MTR_NEWLY_AVAILABLE = 0x00000001,
+    MTREventIDTypeClusterBasicInformationEventLeaveID MTR_NEWLY_AVAILABLE = 0x00000002,
+    MTREventIDTypeClusterBasicInformationEventReachableChangedID MTR_NEWLY_AVAILABLE = 0x00000003,
 
     // Cluster OtaSoftwareUpdateRequestor deprecated event names
     MTRClusterOtaSoftwareUpdateRequestorEventStateTransitionID API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
index 2b201d5..feef92f 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
@@ -883,19 +883,19 @@
 @end
 
 /**
- * Cluster Basic
+ * Cluster Basic Information
  *    This cluster provides attributes and events for determining basic information about Nodes, which supports both
       Commissioning and operational determination of Node characteristics, such as Vendor ID, Product ID and serial number,
       which apply to the whole Node. Also allows setting user device information such as location.
  */
-API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-@interface MTRClusterBasic : MTRCluster
+MTR_NEWLY_AVAILABLE
+@interface MTRClusterBasicInformation : MTRCluster
 
 - (instancetype _Nullable)initWithDevice:(MTRDevice *)device
                               endpointID:(NSNumber *)endpointID
                                    queue:(dispatch_queue_t)queue NS_DESIGNATED_INITIALIZER MTR_NEWLY_AVAILABLE;
 
-- (void)mfgSpecificPingWithParams:(MTRBasicClusterMfgSpecificPingParams * _Nullable)params
+- (void)mfgSpecificPingWithParams:(MTRBasicInformationClusterMfgSpecificPingParams * _Nullable)params
                    expectedValues:(NSArray<NSDictionary<NSString *, id> *> * _Nullable)expectedDataValueDictionaries
             expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs
                        completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
@@ -903,101 +903,72 @@
                     expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                                completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeDataModelRevisionWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeDataModelRevisionWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeVendorNameWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeVendorNameWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeVendorIDWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeVendorIDWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeProductNameWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeProductNameWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeProductIDWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeProductIDWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeNodeLabelWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeNodeLabelWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
+- (void)writeAttributeNodeLabelWithValue:(NSDictionary<NSString *, id> *)dataValueDictionary
+                   expectedValueInterval:(NSNumber *)expectedValueIntervalMs MTR_NEWLY_AVAILABLE;
 - (void)writeAttributeNodeLabelWithValue:(NSDictionary<NSString *, id> *)dataValueDictionary
                    expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
-- (void)writeAttributeNodeLabelWithValue:(NSDictionary<NSString *, id> *)dataValueDictionary
-                   expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                                  params:(MTRWriteParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+                                  params:(MTRWriteParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeLocationWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeLocationWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
+- (void)writeAttributeLocationWithValue:(NSDictionary<NSString *, id> *)dataValueDictionary
+                  expectedValueInterval:(NSNumber *)expectedValueIntervalMs MTR_NEWLY_AVAILABLE;
 - (void)writeAttributeLocationWithValue:(NSDictionary<NSString *, id> *)dataValueDictionary
                   expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
-- (void)writeAttributeLocationWithValue:(NSDictionary<NSString *, id> *)dataValueDictionary
-                  expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                                 params:(MTRWriteParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+                                 params:(MTRWriteParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeHardwareVersionWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeHardwareVersionWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
 - (NSDictionary<NSString *, id> *)readAttributeHardwareVersionStringWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+    MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeSoftwareVersionWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeSoftwareVersionWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
 - (NSDictionary<NSString *, id> *)readAttributeSoftwareVersionStringWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+    MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeManufacturingDateWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeManufacturingDateWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributePartNumberWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributePartNumberWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeProductURLWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeProductURLWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeProductLabelWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeProductLabelWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeSerialNumberWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeSerialNumberWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeLocalConfigDisabledWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeLocalConfigDisabledWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
+- (void)writeAttributeLocalConfigDisabledWithValue:(NSDictionary<NSString *, id> *)dataValueDictionary
+                             expectedValueInterval:(NSNumber *)expectedValueIntervalMs MTR_NEWLY_AVAILABLE;
 - (void)writeAttributeLocalConfigDisabledWithValue:(NSDictionary<NSString *, id> *)dataValueDictionary
                              expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
-- (void)writeAttributeLocalConfigDisabledWithValue:(NSDictionary<NSString *, id> *)dataValueDictionary
-                             expectedValueInterval:(NSNumber *)expectedValueIntervalMs
-                                            params:(MTRWriteParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+                                            params:(MTRWriteParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeReachableWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeReachableWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeUniqueIDWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeUniqueIDWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeCapabilityMinimaWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeCapabilityMinimaWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
-- (NSDictionary<NSString *, id> *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
-    API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+- (NSDictionary<NSString *, id> *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params MTR_NEWLY_AVAILABLE;
 
 - (instancetype)init NS_UNAVAILABLE;
 + (instancetype)new NS_UNAVAILABLE;
@@ -6651,6 +6622,11 @@
 @end
 
 API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
+MTR_NEWLY_DEPRECATED("Please use MTRClusterBasicInformation")
+@interface MTRClusterBasic : MTRClusterBasicInformation
+@end
+
+API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
 MTR_NEWLY_DEPRECATED("Please use MTRClusterOTASoftwareUpdateProvider")
 @interface MTRClusterOtaSoftwareUpdateProvider : MTRClusterOTASoftwareUpdateProvider
 @end
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
index 1e2777b..22ab7d9 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
@@ -5111,7 +5111,7 @@
 }
 @end
 
-@implementation MTRClusterBasic
+@implementation MTRClusterBasicInformation
 
 - (instancetype)initWithDevice:(MTRDevice *)device endpointID:(NSNumber *)endpointID queue:(dispatch_queue_t)queue
 {
@@ -5135,14 +5135,14 @@
               expectedValueInterval:expectedValueIntervalMs
                          completion:completion];
 }
-- (void)mfgSpecificPingWithParams:(MTRBasicClusterMfgSpecificPingParams * _Nullable)params
+- (void)mfgSpecificPingWithParams:(MTRBasicInformationClusterMfgSpecificPingParams * _Nullable)params
                    expectedValues:(NSArray<NSDictionary<NSString *, id> *> *)expectedValues
             expectedValueInterval:(NSNumber *)expectedValueIntervalMs
                        completion:(MTRStatusCompletion)completion
 {
-    NSString * logPrefix =
-        [NSString stringWithFormat:@"MTRDevice command %u %u %u %u", self.device.deviceController.fabricIndex, _endpoint,
-                  (unsigned int) MTRClusterIDTypeBasicID, (unsigned int) MTRCommandIDTypeClusterBasicCommandMfgSpecificPingID];
+    NSString * logPrefix = [NSString stringWithFormat:@"MTRDevice command %u %u %u %u", self.device.deviceController.fabricIndex,
+                                     _endpoint, (unsigned int) MTRClusterIDTypeBasicInformationID,
+                                     (unsigned int) MTRCommandIDTypeClusterBasicInformationCommandMfgSpecificPingID];
     // Make a copy of params before we go async.
     params = [params copy];
     NSNumber * timedInvokeTimeoutMsParam = params.timedInvokeTimeoutMs;
@@ -5167,12 +5167,12 @@
                 MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
                 chip::Optional<uint16_t> timedInvokeTimeoutMs;
                 ListFreer listFreer;
-                Basic::Commands::MfgSpecificPing::Type request;
+                BasicInformation::Commands::MfgSpecificPing::Type request;
                 if (timedInvokeTimeoutMsParam != nil) {
                     timedInvokeTimeoutMs.SetValue(timedInvokeTimeoutMsParam.unsignedShortValue);
                 }
 
-                chip::Controller::BasicCluster cppCluster(exchangeManager, session, self->_endpoint);
+                chip::Controller::BasicInformationCluster cppCluster(exchangeManager, session, self->_endpoint);
                 return cppCluster.InvokeCommand(request, bridge, successCb, failureCb, timedInvokeTimeoutMs);
             });
         std::move(*bridge).DispatchAction(baseDevice);
@@ -5194,48 +5194,48 @@
 - (NSDictionary<NSString *, id> *)readAttributeDataModelRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeDataModelRevisionID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeDataModelRevisionID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeVendorNameWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeVendorNameID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeVendorNameID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeVendorIDWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeVendorIDID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeVendorIDID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeProductNameWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeProductNameID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeProductNameID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeProductIDWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeProductIDID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeProductIDID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeNodeLabelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeNodeLabelID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeNodeLabelID)
                                              params:params];
 }
 
@@ -5251,8 +5251,8 @@
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterIDTypeBasicID)
-                                  attributeID:@(MTRAttributeIDTypeClusterBasicAttributeNodeLabelID)
+                                    clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeNodeLabelID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -5261,8 +5261,8 @@
 - (NSDictionary<NSString *, id> *)readAttributeLocationWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeLocationID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeLocationID)
                                              params:params];
 }
 
@@ -5278,8 +5278,8 @@
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterIDTypeBasicID)
-                                  attributeID:@(MTRAttributeIDTypeClusterBasicAttributeLocationID)
+                                    clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeLocationID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -5288,80 +5288,80 @@
 - (NSDictionary<NSString *, id> *)readAttributeHardwareVersionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeHardwareVersionID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeHardwareVersionID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeHardwareVersionStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeHardwareVersionStringID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeHardwareVersionStringID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeSoftwareVersionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeSoftwareVersionID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeSoftwareVersionID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeSoftwareVersionStringWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeSoftwareVersionStringID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeSoftwareVersionStringID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeManufacturingDateWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeManufacturingDateID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeManufacturingDateID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributePartNumberWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributePartNumberID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributePartNumberID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeProductURLWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeProductURLID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeProductURLID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeProductLabelWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeProductLabelID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeProductLabelID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeSerialNumberWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeSerialNumberID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeSerialNumberID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeLocalConfigDisabledWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeLocalConfigDisabledID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeLocalConfigDisabledID)
                                              params:params];
 }
 
@@ -5377,8 +5377,8 @@
     NSNumber * timedWriteTimeout = params.timedWriteTimeout;
 
     [self.device writeAttributeWithEndpointID:@(_endpoint)
-                                    clusterID:@(MTRClusterIDTypeBasicID)
-                                  attributeID:@(MTRAttributeIDTypeClusterBasicAttributeLocalConfigDisabledID)
+                                    clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                  attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeLocalConfigDisabledID)
                                         value:dataValueDictionary
                         expectedValueInterval:expectedValueIntervalMs
                             timedWriteTimeout:timedWriteTimeout];
@@ -5387,69 +5387,72 @@
 - (NSDictionary<NSString *, id> *)readAttributeReachableWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeReachableID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeReachableID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeUniqueIDWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeUniqueIDID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeUniqueIDID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeCapabilityMinimaWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeCapabilityMinimaID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeCapabilityMinimaID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeGeneratedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeGeneratedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeAcceptedCommandListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeAcceptedCommandListID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeAcceptedCommandListID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeAttributeListWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeAttributeListID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeAttributeListID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeFeatureMapWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeFeatureMapID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeFeatureMapID)
                                              params:params];
 }
 
 - (NSDictionary<NSString *, id> *)readAttributeClusterRevisionWithParams:(MTRReadParams * _Nullable)params
 {
     return [self.device readAttributeWithEndpointID:@(_endpoint)
-                                          clusterID:@(MTRClusterIDTypeBasicID)
-                                        attributeID:@(MTRAttributeIDTypeClusterBasicAttributeClusterRevisionID)
+                                          clusterID:@(MTRClusterIDTypeBasicInformationID)
+                                        attributeID:@(MTRAttributeIDTypeClusterBasicInformationAttributeClusterRevisionID)
                                              params:params];
 }
 
 @end
 
+@implementation MTRClusterBasic
+@end
+
 @implementation MTRClusterBasic (Deprecated)
 
 - (instancetype)initWithDevice:(MTRDevice *)device endpoint:(uint16_t)endpoint queue:(dispatch_queue_t)queue
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters_Internal.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusters_Internal.h
index 3bcc5e9..fe4cc25 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters_Internal.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters_Internal.h
@@ -78,7 +78,7 @@
 @property (nonatomic, readonly) MTRDevice * device;
 @end
 
-@interface MTRClusterBasic ()
+@interface MTRClusterBasicInformation ()
 @property (nonatomic, readonly) uint16_t endpoint;
 @property (nonatomic, readonly) MTRDevice * device;
 @end
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
index 466794e..8313f85 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
@@ -1425,8 +1425,8 @@
 @property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
 @end
 
-API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-@interface MTRBasicClusterMfgSpecificPingParams : NSObject <NSCopying>
+MTR_NEWLY_AVAILABLE
+@interface MTRBasicInformationClusterMfgSpecificPingParams : NSObject <NSCopying>
 /**
  * Controls whether the command is a timed command (using Timed Invoke).
  *
@@ -1444,6 +1444,11 @@
 @property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
 @end
 
+API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
+MTR_NEWLY_DEPRECATED("Please use MTRBasicInformationClusterMfgSpecificPingParams")
+@interface MTRBasicClusterMfgSpecificPingParams : MTRBasicInformationClusterMfgSpecificPingParams
+@end
+
 MTR_NEWLY_AVAILABLE
 @interface MTROTASoftwareUpdateProviderClusterQueryImageParams : NSObject <NSCopying>
 
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm
index 0f925b1..6bb138c 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm
@@ -1960,7 +1960,7 @@
 }
 
 @end
-@implementation MTRBasicClusterMfgSpecificPingParams
+@implementation MTRBasicInformationClusterMfgSpecificPingParams
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -1971,7 +1971,7 @@
 
 - (id)copyWithZone:(NSZone * _Nullable)zone;
 {
-    auto other = [[MTRBasicClusterMfgSpecificPingParams alloc] init];
+    auto other = [[MTRBasicInformationClusterMfgSpecificPingParams alloc] init];
 
     other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
 
@@ -1985,6 +1985,9 @@
 }
 
 @end
+
+@implementation MTRBasicClusterMfgSpecificPingParams
+@end
 @implementation MTROTASoftwareUpdateProviderClusterQueryImageParams
 - (instancetype)init
 {
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTREventTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTREventTLVValueDecoder.mm
index 165f07a..f1f1550 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTREventTLVValueDecoder.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTREventTLVValueDecoder.mm
@@ -369,8 +369,8 @@
         }
         break;
     }
-    case Clusters::Basic::Id: {
-        using namespace Clusters::Basic;
+    case Clusters::BasicInformation::Id: {
+        using namespace Clusters::BasicInformation;
         switch (aPath.mEventId) {
 
         case Events::StartUp::Id: {
@@ -380,7 +380,7 @@
                 return nil;
             }
 
-            __auto_type * value = [MTRBasicClusterStartUpEvent new];
+            __auto_type * value = [MTRBasicInformationClusterStartUpEvent new];
 
             do {
                 NSNumber * _Nonnull memberValue;
@@ -398,7 +398,7 @@
                 return nil;
             }
 
-            __auto_type * value = [MTRBasicClusterShutDownEvent new];
+            __auto_type * value = [MTRBasicInformationClusterShutDownEvent new];
 
             return value;
         }
@@ -410,7 +410,7 @@
                 return nil;
             }
 
-            __auto_type * value = [MTRBasicClusterLeaveEvent new];
+            __auto_type * value = [MTRBasicInformationClusterLeaveEvent new];
 
             do {
                 NSNumber * _Nonnull memberValue;
@@ -428,7 +428,7 @@
                 return nil;
             }
 
-            __auto_type * value = [MTRBasicClusterReachableChangedEvent new];
+            __auto_type * value = [MTRBasicInformationClusterReachableChangedEvent new];
 
             do {
                 NSNumber * _Nonnull memberValue;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h
index ac84ebf..fdb02bf 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h
@@ -132,31 +132,54 @@
 @property (nonatomic, copy) NSNumber * _Nonnull error API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
 @end
 
-API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-@interface MTRBasicClusterCapabilityMinimaStruct : NSObject <NSCopying>
-@property (nonatomic, copy)
-    NSNumber * _Nonnull caseSessionsPerFabric API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
-@property (nonatomic, copy)
-    NSNumber * _Nonnull subscriptionsPerFabric API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+MTR_NEWLY_AVAILABLE
+@interface MTRBasicInformationClusterCapabilityMinimaStruct : NSObject <NSCopying>
+@property (nonatomic, copy) NSNumber * _Nonnull caseSessionsPerFabric MTR_NEWLY_AVAILABLE;
+@property (nonatomic, copy) NSNumber * _Nonnull subscriptionsPerFabric MTR_NEWLY_AVAILABLE;
 @end
 
 API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-@interface MTRBasicClusterStartUpEvent : NSObject <NSCopying>
-@property (nonatomic, copy) NSNumber * _Nonnull softwareVersion API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+MTR_NEWLY_DEPRECATED("Please use MTRBasicInformationClusterCapabilityMinimaStruct")
+@interface MTRBasicClusterCapabilityMinimaStruct : MTRBasicInformationClusterCapabilityMinimaStruct
+@end
+
+MTR_NEWLY_AVAILABLE
+@interface MTRBasicInformationClusterStartUpEvent : NSObject <NSCopying>
+@property (nonatomic, copy) NSNumber * _Nonnull softwareVersion MTR_NEWLY_AVAILABLE;
 @end
 
 API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-@interface MTRBasicClusterShutDownEvent : NSObject <NSCopying>
+MTR_NEWLY_DEPRECATED("Please use MTRBasicInformationClusterStartUpEvent")
+@interface MTRBasicClusterStartUpEvent : MTRBasicInformationClusterStartUpEvent
+@end
+
+MTR_NEWLY_AVAILABLE
+@interface MTRBasicInformationClusterShutDownEvent : NSObject <NSCopying>
 @end
 
 API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-@interface MTRBasicClusterLeaveEvent : NSObject <NSCopying>
-@property (nonatomic, copy) NSNumber * _Nonnull fabricIndex API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+MTR_NEWLY_DEPRECATED("Please use MTRBasicInformationClusterShutDownEvent")
+@interface MTRBasicClusterShutDownEvent : MTRBasicInformationClusterShutDownEvent
+@end
+
+MTR_NEWLY_AVAILABLE
+@interface MTRBasicInformationClusterLeaveEvent : NSObject <NSCopying>
+@property (nonatomic, copy) NSNumber * _Nonnull fabricIndex MTR_NEWLY_AVAILABLE;
 @end
 
 API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
-@interface MTRBasicClusterReachableChangedEvent : NSObject <NSCopying>
-@property (nonatomic, copy) NSNumber * _Nonnull reachableNewValue API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+MTR_NEWLY_DEPRECATED("Please use MTRBasicInformationClusterLeaveEvent")
+@interface MTRBasicClusterLeaveEvent : MTRBasicInformationClusterLeaveEvent
+@end
+
+MTR_NEWLY_AVAILABLE
+@interface MTRBasicInformationClusterReachableChangedEvent : NSObject <NSCopying>
+@property (nonatomic, copy) NSNumber * _Nonnull reachableNewValue MTR_NEWLY_AVAILABLE;
+@end
+
+API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
+MTR_NEWLY_DEPRECATED("Please use MTRBasicInformationClusterReachableChangedEvent")
+@interface MTRBasicClusterReachableChangedEvent : MTRBasicInformationClusterReachableChangedEvent
 @end
 
 MTR_NEWLY_AVAILABLE
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm
index 9b69f0d..2061188 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm
@@ -523,7 +523,7 @@
 
 @end
 
-@implementation MTRBasicClusterCapabilityMinimaStruct
+@implementation MTRBasicInformationClusterCapabilityMinimaStruct
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -537,7 +537,7 @@
 
 - (id)copyWithZone:(NSZone * _Nullable)zone
 {
-    auto other = [[MTRBasicClusterCapabilityMinimaStruct alloc] init];
+    auto other = [[MTRBasicInformationClusterCapabilityMinimaStruct alloc] init];
 
     other.caseSessionsPerFabric = self.caseSessionsPerFabric;
     other.subscriptionsPerFabric = self.subscriptionsPerFabric;
@@ -554,7 +554,10 @@
 
 @end
 
-@implementation MTRBasicClusterStartUpEvent
+@implementation MTRBasicClusterCapabilityMinimaStruct : MTRBasicInformationClusterCapabilityMinimaStruct
+@end
+
+@implementation MTRBasicInformationClusterStartUpEvent
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -566,7 +569,7 @@
 
 - (id)copyWithZone:(NSZone * _Nullable)zone
 {
-    auto other = [[MTRBasicClusterStartUpEvent alloc] init];
+    auto other = [[MTRBasicInformationClusterStartUpEvent alloc] init];
 
     other.softwareVersion = self.softwareVersion;
 
@@ -582,7 +585,10 @@
 
 @end
 
-@implementation MTRBasicClusterShutDownEvent
+@implementation MTRBasicClusterStartUpEvent : MTRBasicInformationClusterStartUpEvent
+@end
+
+@implementation MTRBasicInformationClusterShutDownEvent
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -592,7 +598,7 @@
 
 - (id)copyWithZone:(NSZone * _Nullable)zone
 {
-    auto other = [[MTRBasicClusterShutDownEvent alloc] init];
+    auto other = [[MTRBasicInformationClusterShutDownEvent alloc] init];
 
     return other;
 }
@@ -605,7 +611,10 @@
 
 @end
 
-@implementation MTRBasicClusterLeaveEvent
+@implementation MTRBasicClusterShutDownEvent : MTRBasicInformationClusterShutDownEvent
+@end
+
+@implementation MTRBasicInformationClusterLeaveEvent
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -617,7 +626,7 @@
 
 - (id)copyWithZone:(NSZone * _Nullable)zone
 {
-    auto other = [[MTRBasicClusterLeaveEvent alloc] init];
+    auto other = [[MTRBasicInformationClusterLeaveEvent alloc] init];
 
     other.fabricIndex = self.fabricIndex;
 
@@ -633,7 +642,10 @@
 
 @end
 
-@implementation MTRBasicClusterReachableChangedEvent
+@implementation MTRBasicClusterLeaveEvent : MTRBasicInformationClusterLeaveEvent
+@end
+
+@implementation MTRBasicInformationClusterReachableChangedEvent
 - (instancetype)init
 {
     if (self = [super init]) {
@@ -645,7 +657,7 @@
 
 - (id)copyWithZone:(NSZone * _Nullable)zone
 {
-    auto other = [[MTRBasicClusterReachableChangedEvent alloc] init];
+    auto other = [[MTRBasicInformationClusterReachableChangedEvent alloc] init];
 
     other.reachableNewValue = self.reachableNewValue;
 
@@ -661,6 +673,9 @@
 
 @end
 
+@implementation MTRBasicClusterReachableChangedEvent : MTRBasicInformationClusterReachableChangedEvent
+@end
+
 @implementation MTROTASoftwareUpdateRequestorClusterProviderLocation
 - (instancetype)init
 {
diff --git a/src/python_testing/TC_RR_1_1.py b/src/python_testing/TC_RR_1_1.py
index fab3cb8..e6b5c73 100644
--- a/src/python_testing/TC_RR_1_1.py
+++ b/src/python_testing/TC_RR_1_1.py
@@ -102,7 +102,7 @@
         # TODO: Shall we also verify SupportedFabrics attribute, and the CapabilityMinima attribute?
         logging.info("Pre-conditions: validate CapabilityMinima.CaseSessionsPerFabric >= 3")
 
-        capability_minima = await self.read_single_attribute(dev_ctrl, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.Basic.Attributes.CapabilityMinima)
+        capability_minima = await self.read_single_attribute(dev_ctrl, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.BasicInformation.Attributes.CapabilityMinima)
         asserts.assert_greater_equal(capability_minima.caseSessionsPerFabric, 3)
 
         # Step 1: Commission 5 fabrics with maximized NOC chains
@@ -169,9 +169,9 @@
 
         # Before subscribing, set the NodeLabel to "Before Subscriptions"
         logging.info(f"Step 2b: Set BasicInformation.NodeLabel to {BEFORE_LABEL}")
-        await client_list[0].WriteAttribute(self.dut_node_id, [(0, Clusters.Basic.Attributes.NodeLabel(value=BEFORE_LABEL))])
+        await client_list[0].WriteAttribute(self.dut_node_id, [(0, Clusters.BasicInformation.Attributes.NodeLabel(value=BEFORE_LABEL))])
 
-        node_label = await self.read_single_attribute(client, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.Basic.Attributes.NodeLabel)
+        node_label = await self.read_single_attribute(client, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.BasicInformation.Attributes.NodeLabel)
         asserts.assert_equal(node_label, BEFORE_LABEL, "NodeLabel must match what was written")
 
         # Step 3: Add 3 Access Control entries on DUT with a list of 4 Subjects and 3 Targets with the following parameters (...)
@@ -208,7 +208,7 @@
         resub_catchers = []
         output_queue = queue.Queue()
         subscription_contents = [
-            (0, Clusters.Basic.Attributes.NodeLabel),  # Single attribute
+            (0, Clusters.BasicInformation.Attributes.NodeLabel),  # Single attribute
             (0, Clusters.OperationalCredentials),  # Wildcard all of opcreds attributes on EP0
             Clusters.Descriptor  # All descriptors on all endpoints
         ]
@@ -222,7 +222,7 @@
             self._subscriptions.append(sub)
 
             attribute_handler = AttributeChangeAccumulator(
-                name=client.name, expected_attribute=Clusters.Basic.Attributes.NodeLabel, output=output_queue)
+                name=client.name, expected_attribute=Clusters.BasicInformation.Attributes.NodeLabel, output=output_queue)
             sub.SetAttributeUpdateCallback(attribute_handler)
             sub_handlers.append(attribute_handler)
 
@@ -237,31 +237,31 @@
         logging.info("Step 6: Read 9 paths (first 9 attributes of Basic Information cluster) and validate success")
 
         large_read_contents = [
-            Clusters.Basic.Attributes.DataModelRevision,
-            Clusters.Basic.Attributes.VendorName,
-            Clusters.Basic.Attributes.VendorID,
-            Clusters.Basic.Attributes.ProductName,
-            Clusters.Basic.Attributes.ProductID,
-            Clusters.Basic.Attributes.NodeLabel,
-            Clusters.Basic.Attributes.Location,
-            Clusters.Basic.Attributes.HardwareVersion,
-            Clusters.Basic.Attributes.HardwareVersionString,
+            Clusters.BasicInformation.Attributes.DataModelRevision,
+            Clusters.BasicInformation.Attributes.VendorName,
+            Clusters.BasicInformation.Attributes.VendorID,
+            Clusters.BasicInformation.Attributes.ProductName,
+            Clusters.BasicInformation.Attributes.ProductID,
+            Clusters.BasicInformation.Attributes.NodeLabel,
+            Clusters.BasicInformation.Attributes.Location,
+            Clusters.BasicInformation.Attributes.HardwareVersion,
+            Clusters.BasicInformation.Attributes.HardwareVersionString,
         ]
         large_read_paths = [(0, attrib) for attrib in large_read_contents]
         basic_info = await dev_ctrl.ReadAttribute(self.dut_node_id, large_read_paths)
 
         # Make sure everything came back from the read that we expected
         asserts.assert_true(0 in basic_info.keys(), "Must have read endpoint 0 data")
-        asserts.assert_true(Clusters.Basic in basic_info[0].keys(), "Must have read Basic Information cluster data")
+        asserts.assert_true(Clusters.BasicInformation in basic_info[0].keys(), "Must have read Basic Information cluster data")
         for attribute in large_read_contents:
-            asserts.assert_true(attribute in basic_info[0][Clusters.Basic],
+            asserts.assert_true(attribute in basic_info[0][Clusters.BasicInformation],
                                 "Must have read back attribute %s" % (attribute.__name__))
 
         # Step 7: Trigger a change on NodeLabel
         logging.info(
             "Step 7: Change attribute with one client, await all attributes changed successfully without loss of subscriptions")
         await asyncio.sleep(1)
-        await client_list[0].WriteAttribute(self.dut_node_id, [(0, Clusters.Basic.Attributes.NodeLabel(value=AFTER_LABEL))])
+        await client_list[0].WriteAttribute(self.dut_node_id, [(0, Clusters.BasicInformation.Attributes.NodeLabel(value=AFTER_LABEL))])
 
         all_changes = {client.name: False for client in client_list}
 
@@ -276,7 +276,7 @@
                 client_name, endpoint, attribute, value = item['name'], item['endpoint'], item['attribute'], item['value']
 
                 # Record arrival of an expected subscription change when seen
-                if endpoint == 0 and attribute == Clusters.Basic.Attributes.NodeLabel and value == AFTER_LABEL:
+                if endpoint == 0 and attribute == Clusters.BasicInformation.Attributes.NodeLabel and value == AFTER_LABEL:
                     if not all_changes[client_name]:
                         logging.info("Got expected attribute change for client %s" % client_name)
                         all_changes[client_name] = True
@@ -319,7 +319,7 @@
         for sub_idx, client in enumerate(client_list):
             logging.info("Reading NodeLabel (%d/%d) from controller node %s" % (sub_idx + 1, len(client_list), client.name))
 
-            label_readback = await self.read_single_attribute(client, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.Basic.Attributes.NodeLabel)
+            label_readback = await self.read_single_attribute(client, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.BasicInformation.Attributes.NodeLabel)
             asserts.assert_equal(label_readback, AFTER_LABEL)
 
         # On each client, read back the local session id for the CASE session to the DUT and ensure it's the same as that of the session established right at the
diff --git a/src/python_testing/TC_SC_3_6.py b/src/python_testing/TC_SC_3_6.py
index 2c258c6..fbfca81 100644
--- a/src/python_testing/TC_SC_3_6.py
+++ b/src/python_testing/TC_SC_3_6.py
@@ -115,7 +115,7 @@
 
         logging.info("Pre-conditions: validate CapabilityMinima.CaseSessionsPerFabric >= 3")
 
-        capability_minima = await self.read_single_attribute(dev_ctrl, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.Basic.Attributes.CapabilityMinima)
+        capability_minima = await self.read_single_attribute(dev_ctrl, node_id=self.dut_node_id, endpoint=0, attribute=Clusters.BasicInformation.Attributes.CapabilityMinima)
         asserts.assert_greater_equal(capability_minima.caseSessionsPerFabric, 3)
 
         logging.info("Pre-conditions: use existing fabric to configure new fabrics so that total is %d fabrics" %
@@ -158,7 +158,7 @@
 
         # Before subscribing, set the NodeLabel to "Before Subscriptions"
         logging.info("Pre-conditions: writing initial value of NodeLabel, so that we can control for change of attribute detection")
-        await client_list[0].WriteAttribute(self.dut_node_id, [(0, Clusters.Basic.Attributes.NodeLabel(value=BEFORE_LABEL))])
+        await client_list[0].WriteAttribute(self.dut_node_id, [(0, Clusters.BasicInformation.Attributes.NodeLabel(value=BEFORE_LABEL))])
 
         # Subscribe with all clients to NodeLabel attribute
         sub_handlers = []
@@ -169,12 +169,12 @@
         for sub_idx, client in enumerate(client_list):
             logging.info("Establishing subscription %d/%d from controller node %s" % (sub_idx + 1, len(client_list), client.name))
 
-            sub = await client.ReadAttribute(nodeid=self.dut_node_id, attributes=[(0, Clusters.Basic.Attributes.NodeLabel)],
+            sub = await client.ReadAttribute(nodeid=self.dut_node_id, attributes=[(0, Clusters.BasicInformation.Attributes.NodeLabel)],
                                              reportInterval=(min_report_interval_sec, max_report_interval_sec), keepSubscriptions=False)
             self._subscriptions.append(sub)
 
             attribute_handler = AttributeChangeAccumulator(
-                name=client.name, expected_attribute=Clusters.Basic.Attributes.NodeLabel, output=output_queue)
+                name=client.name, expected_attribute=Clusters.BasicInformation.Attributes.NodeLabel, output=output_queue)
             sub.SetAttributeUpdateCallback(attribute_handler)
             sub_handlers.append(attribute_handler)
 
@@ -189,7 +189,7 @@
         logging.info(
             "Step 1 (second part): Change attribute with one client, await all attributes changed within time")
         await asyncio.sleep(1)
-        await client_list[0].WriteAttribute(self.dut_node_id, [(0, Clusters.Basic.Attributes.NodeLabel(value=AFTER_LABEL))])
+        await client_list[0].WriteAttribute(self.dut_node_id, [(0, Clusters.BasicInformation.Attributes.NodeLabel(value=AFTER_LABEL))])
 
         all_changes = {client.name: False for client in client_list}
 
@@ -204,7 +204,7 @@
                 client_name, endpoint, attribute, value = item['name'], item['endpoint'], item['attribute'], item['value']
 
                 # Record arrival of an expected subscription change when seen
-                if endpoint == 0 and attribute == Clusters.Basic.Attributes.NodeLabel and value == AFTER_LABEL:
+                if endpoint == 0 and attribute == Clusters.BasicInformation.Attributes.NodeLabel and value == AFTER_LABEL:
                     if not all_changes[client_name]:
                         logging.info("Got expected attribute change for client %s" % client_name)
                         all_changes[client_name] = True
diff --git a/src/python_testing/hello_test.py b/src/python_testing/hello_test.py
index d6bde7d..5725511 100644
--- a/src/python_testing/hello_test.py
+++ b/src/python_testing/hello_test.py
@@ -26,7 +26,7 @@
     @async_test_body
     async def test_names_as_expected(self):
         dev_ctrl = self.default_controller
-        vendor_name = await self.read_single_attribute(dev_ctrl, self.dut_node_id, 0, Clusters.Basic.Attributes.VendorName)
+        vendor_name = await self.read_single_attribute(dev_ctrl, self.dut_node_id, 0, Clusters.BasicInformation.Attributes.VendorName)
 
         logging.info("Found VendorName: %s" % (vendor_name))
         asserts.assert_equal(vendor_name, "TEST_VENDOR", "VendorName must be TEST_VENDOR!")
@@ -34,7 +34,7 @@
     @async_test_body
     async def test_failure_on_wrong_endpoint(self):
         dev_ctrl = self.default_controller
-        result = await self.read_single_attribute(dev_ctrl, self.dut_node_id, 9999, Clusters.Basic.Attributes.ProductName)
+        result = await self.read_single_attribute(dev_ctrl, self.dut_node_id, 9999, Clusters.BasicInformation.Attributes.ProductName)
         asserts.assert_true(isinstance(result, Clusters.Attribute.ValueDecodeFailure), "Should fail to read on endpoint 9999")
         asserts.assert_equal(result.Reason.status, Status.UnsupportedEndpoint, "Failure reason should be UnsupportedEndpoint")
 
diff --git a/zzz_generated/all-clusters-app/zap-generated/access.h b/zzz_generated/all-clusters-app/zap-generated/access.h
index 5c6aba4..1a450a7 100644
--- a/zzz_generated/all-clusters-app/zap-generated/access.h
+++ b/zzz_generated/all-clusters-app/zap-generated/access.h
@@ -36,9 +36,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -99,9 +99,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -162,9 +162,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -224,9 +224,9 @@
     8, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -278,9 +278,9 @@
     16384, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -332,9 +332,9 @@
     kMatterAccessPrivilegeManage, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h
index 7d5a507..3aca775 100644
--- a/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/all-clusters-app/zap-generated/endpoint_config.h
@@ -412,7 +412,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* ClusterRevision */  \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -1509,9 +1509,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -1964,13 +1961,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(23), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/all-clusters-app/zap-generated/gen_config.h b/zzz_generated/all-clusters-app/zap-generated/gen_config.h
index dd4aa28..b608d4f 100644
--- a/zzz_generated/all-clusters-app/zap-generated/gen_config.h
+++ b/zzz_generated/all-clusters-app/zap-generated/gen_config.h
@@ -40,7 +40,7 @@
 #define EMBER_AF_BINDING_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACTIONS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -167,10 +167,10 @@
 #define EMBER_AF_PLUGIN_ACTIONS_SERVER
 #define EMBER_AF_PLUGIN_ACTIONS
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/all-clusters-minimal-app/zap-generated/access.h b/zzz_generated/all-clusters-minimal-app/zap-generated/access.h
index cf46924..08949cb 100644
--- a/zzz_generated/all-clusters-minimal-app/zap-generated/access.h
+++ b/zzz_generated/all-clusters-minimal-app/zap-generated/access.h
@@ -33,8 +33,8 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -60,8 +60,8 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -87,8 +87,8 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -113,8 +113,8 @@
 // Parallel array data (*cluster*, attribute, privilege) for write attribute
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -131,8 +131,8 @@
 // Parallel array data (cluster, *attribute*, privilege) for write attribute
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -149,8 +149,8 @@
 // Parallel array data (cluster, attribute, *privilege*) for write attribute
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h b/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h
index 4f74637..b771930 100644
--- a/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/all-clusters-minimal-app/zap-generated/endpoint_config.h
@@ -337,7 +337,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* ClusterRevision */  \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -1034,9 +1034,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -1451,13 +1448,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(22), \
       .attributeCount = 14, \
       .clusterSize = 39, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/all-clusters-minimal-app/zap-generated/gen_config.h b/zzz_generated/all-clusters-minimal-app/zap-generated/gen_config.h
index 024f58e..ef30fc7 100644
--- a/zzz_generated/all-clusters-minimal-app/zap-generated/gen_config.h
+++ b/zzz_generated/all-clusters-minimal-app/zap-generated/gen_config.h
@@ -38,7 +38,7 @@
 #define EMBER_AF_BINDING_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACTIONS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -152,10 +152,10 @@
 #define EMBER_AF_PLUGIN_ACTIONS_SERVER
 #define EMBER_AF_PLUGIN_ACTIONS
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/app-common/app-common/zap-generated/attribute-id.h b/zzz_generated/app-common/app-common/zap-generated/attribute-id.h
index db53fc6..cb7512e 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attribute-id.h
+++ b/zzz_generated/app-common/app-common/zap-generated/attribute-id.h
@@ -153,7 +153,7 @@
 #define ZCL_ENDPOINT_LIST_ATTRIBUTE_ID (0x0001)
 #define ZCL_SETUP_URL_ATTRIBUTE_ID (0x0002)
 
-// Attribute ids for cluster: Basic
+// Attribute ids for cluster: Basic Information
 
 // Client attributes
 
diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
index 5a41eed..9a8aadb 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
+++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
@@ -2357,7 +2357,7 @@
 } // namespace Attributes
 } // namespace Actions
 
-namespace Basic {
+namespace BasicInformation {
 namespace Attributes {
 
 namespace DataModelRevision {
@@ -2367,7 +2367,7 @@
     using Traits = NumericAttributeTraits<uint16_t>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -2386,7 +2386,7 @@
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
 }
 
 } // namespace DataModelRevision
@@ -2396,7 +2396,7 @@
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
 {
     uint8_t zclString[32 + 1];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfStringLength(zclString);
     if (length == NumericAttributeTraits<uint8_t>::kNullValue)
@@ -2416,7 +2416,7 @@
     uint8_t zclString[32 + 1];
     emberAfCopyInt8u(zclString, 0, static_cast<uint8_t>(value.size()));
     memcpy(&zclString[1], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace VendorName
@@ -2428,7 +2428,7 @@
     using Traits = NumericAttributeTraits<chip::VendorId>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -2447,7 +2447,7 @@
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, writable, ZCL_VENDOR_ID_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, writable, ZCL_VENDOR_ID_ATTRIBUTE_TYPE);
 }
 
 } // namespace VendorID
@@ -2457,7 +2457,7 @@
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
 {
     uint8_t zclString[32 + 1];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfStringLength(zclString);
     if (length == NumericAttributeTraits<uint8_t>::kNullValue)
@@ -2477,7 +2477,7 @@
     uint8_t zclString[32 + 1];
     emberAfCopyInt8u(zclString, 0, static_cast<uint8_t>(value.size()));
     memcpy(&zclString[1], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace ProductName
@@ -2489,7 +2489,7 @@
     using Traits = NumericAttributeTraits<uint16_t>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -2508,7 +2508,7 @@
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
 }
 
 } // namespace ProductID
@@ -2518,7 +2518,7 @@
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
 {
     uint8_t zclString[32 + 1];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfStringLength(zclString);
     if (length == NumericAttributeTraits<uint8_t>::kNullValue)
@@ -2538,7 +2538,7 @@
     uint8_t zclString[32 + 1];
     emberAfCopyInt8u(zclString, 0, static_cast<uint8_t>(value.size()));
     memcpy(&zclString[1], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace NodeLabel
@@ -2548,7 +2548,7 @@
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
 {
     uint8_t zclString[2 + 1];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfStringLength(zclString);
     if (length == NumericAttributeTraits<uint8_t>::kNullValue)
@@ -2568,7 +2568,7 @@
     uint8_t zclString[2 + 1];
     emberAfCopyInt8u(zclString, 0, static_cast<uint8_t>(value.size()));
     memcpy(&zclString[1], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace Location
@@ -2580,7 +2580,7 @@
     using Traits = NumericAttributeTraits<uint16_t>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -2599,7 +2599,7 @@
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
 }
 
 } // namespace HardwareVersion
@@ -2609,7 +2609,7 @@
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
 {
     uint8_t zclString[64 + 1];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfStringLength(zclString);
     if (length == NumericAttributeTraits<uint8_t>::kNullValue)
@@ -2629,7 +2629,7 @@
     uint8_t zclString[64 + 1];
     emberAfCopyInt8u(zclString, 0, static_cast<uint8_t>(value.size()));
     memcpy(&zclString[1], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace HardwareVersionString
@@ -2641,7 +2641,7 @@
     using Traits = NumericAttributeTraits<uint32_t>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -2660,7 +2660,7 @@
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, writable, ZCL_INT32U_ATTRIBUTE_TYPE);
 }
 
 } // namespace SoftwareVersion
@@ -2670,7 +2670,7 @@
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
 {
     uint8_t zclString[64 + 1];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfStringLength(zclString);
     if (length == NumericAttributeTraits<uint8_t>::kNullValue)
@@ -2690,7 +2690,7 @@
     uint8_t zclString[64 + 1];
     emberAfCopyInt8u(zclString, 0, static_cast<uint8_t>(value.size()));
     memcpy(&zclString[1], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace SoftwareVersionString
@@ -2700,7 +2700,7 @@
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
 {
     uint8_t zclString[16 + 1];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfStringLength(zclString);
     if (length == NumericAttributeTraits<uint8_t>::kNullValue)
@@ -2720,7 +2720,7 @@
     uint8_t zclString[16 + 1];
     emberAfCopyInt8u(zclString, 0, static_cast<uint8_t>(value.size()));
     memcpy(&zclString[1], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace ManufacturingDate
@@ -2730,7 +2730,7 @@
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
 {
     uint8_t zclString[32 + 1];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfStringLength(zclString);
     if (length == NumericAttributeTraits<uint8_t>::kNullValue)
@@ -2750,7 +2750,7 @@
     uint8_t zclString[32 + 1];
     emberAfCopyInt8u(zclString, 0, static_cast<uint8_t>(value.size()));
     memcpy(&zclString[1], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace PartNumber
@@ -2760,7 +2760,7 @@
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
 {
     uint8_t zclString[256 + 2];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfLongStringLength(zclString);
     if (length == NumericAttributeTraits<uint16_t>::kNullValue)
@@ -2780,7 +2780,8 @@
     uint8_t zclString[256 + 2];
     emberAfCopyInt16u(zclString, 0, static_cast<uint16_t>(value.size()));
     memcpy(&zclString[2], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString,
+                                       ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace ProductURL
@@ -2790,7 +2791,7 @@
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
 {
     uint8_t zclString[64 + 1];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfStringLength(zclString);
     if (length == NumericAttributeTraits<uint8_t>::kNullValue)
@@ -2810,7 +2811,7 @@
     uint8_t zclString[64 + 1];
     emberAfCopyInt8u(zclString, 0, static_cast<uint8_t>(value.size()));
     memcpy(&zclString[1], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace ProductLabel
@@ -2820,7 +2821,7 @@
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
 {
     uint8_t zclString[32 + 1];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfStringLength(zclString);
     if (length == NumericAttributeTraits<uint8_t>::kNullValue)
@@ -2840,7 +2841,7 @@
     uint8_t zclString[32 + 1];
     emberAfCopyInt8u(zclString, 0, static_cast<uint8_t>(value.size()));
     memcpy(&zclString[1], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace SerialNumber
@@ -2852,7 +2853,7 @@
     using Traits = NumericAttributeTraits<bool>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -2871,7 +2872,7 @@
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
 }
 
 } // namespace LocalConfigDisabled
@@ -2883,7 +2884,7 @@
     using Traits = NumericAttributeTraits<bool>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -2902,7 +2903,7 @@
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
 }
 
 } // namespace Reachable
@@ -2912,7 +2913,7 @@
 EmberAfStatus Get(chip::EndpointId endpoint, chip::MutableCharSpan value)
 {
     uint8_t zclString[32 + 1];
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, sizeof(zclString));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, sizeof(zclString));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     size_t length = emberAfStringLength(zclString);
     if (length == NumericAttributeTraits<uint8_t>::kNullValue)
@@ -2932,7 +2933,7 @@
     uint8_t zclString[32 + 1];
     emberAfCopyInt8u(zclString, 0, static_cast<uint8_t>(value.size()));
     memcpy(&zclString[1], value.data(), value.size());
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, zclString, ZCL_CHAR_STRING_ATTRIBUTE_TYPE);
 }
 
 } // namespace UniqueID
@@ -2944,7 +2945,7 @@
     using Traits = NumericAttributeTraits<uint32_t>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -2963,7 +2964,7 @@
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, writable, ZCL_BITMAP32_ATTRIBUTE_TYPE);
 }
 
 } // namespace FeatureMap
@@ -2975,7 +2976,7 @@
     using Traits = NumericAttributeTraits<uint16_t>;
     Traits::StorageType temp;
     uint8_t * readable   = Traits::ToAttributeStoreRepresentation(temp);
-    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::Basic::Id, Id, readable, sizeof(temp));
+    EmberAfStatus status = emberAfReadServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, readable, sizeof(temp));
     VerifyOrReturnError(EMBER_ZCL_STATUS_SUCCESS == status, status);
     if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
     {
@@ -2994,13 +2995,13 @@
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteServerAttribute(endpoint, Clusters::Basic::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
+    return emberAfWriteServerAttribute(endpoint, Clusters::BasicInformation::Id, Id, writable, ZCL_INT16U_ATTRIBUTE_TYPE);
 }
 
 } // namespace ClusterRevision
 
 } // namespace Attributes
-} // namespace Basic
+} // namespace BasicInformation
 
 namespace OtaSoftwareUpdateProvider {
 namespace Attributes {
diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
index 1f9b953..f31666a 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
+++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
@@ -459,7 +459,7 @@
 } // namespace Attributes
 } // namespace Actions
 
-namespace Basic {
+namespace BasicInformation {
 namespace Attributes {
 
 namespace DataModelRevision {
@@ -568,7 +568,7 @@
 } // namespace ClusterRevision
 
 } // namespace Attributes
-} // namespace Basic
+} // namespace BasicInformation
 
 namespace OtaSoftwareUpdateProvider {
 namespace Attributes {
diff --git a/zzz_generated/app-common/app-common/zap-generated/callback.h b/zzz_generated/app-common/app-common/zap-generated/callback.h
index 8c82bc5..9de9f23 100644
--- a/zzz_generated/app-common/app-common/zap-generated/callback.h
+++ b/zzz_generated/app-common/app-common/zap-generated/callback.h
@@ -130,13 +130,13 @@
  */
 void emberAfActionsClusterInitCallback(chip::EndpointId endpoint);
 
-/** @brief Basic Cluster Init
+/** @brief Basic Information Cluster Init
  *
  * Cluster Init
  *
  * @param endpoint    Endpoint that is being initialized
  */
-void emberAfBasicClusterInitCallback(chip::EndpointId endpoint);
+void emberAfBasicInformationClusterInitCallback(chip::EndpointId endpoint);
 
 /** @brief OTA Software Update Provider Cluster Init
  *
@@ -1769,34 +1769,34 @@
 void emberAfActionsClusterClientTickCallback(chip::EndpointId endpoint);
 
 //
-// Basic Cluster
+// Basic Information Cluster
 //
 
-/** @brief Basic Cluster Server Init
+/** @brief Basic Information Cluster Server Init
  *
  * Server Init
  *
  * @param endpoint    Endpoint that is being initialized
  */
-void emberAfBasicClusterServerInitCallback(chip::EndpointId endpoint);
+void emberAfBasicInformationClusterServerInitCallback(chip::EndpointId endpoint);
 
-/** @brief Basic Cluster Client Init
+/** @brief Basic Information Cluster Client Init
  *
  * Client Init
  *
  * @param endpoint    Endpoint that is being initialized
  */
-void emberAfBasicClusterClientInitCallback(chip::EndpointId endpoint);
+void emberAfBasicInformationClusterClientInitCallback(chip::EndpointId endpoint);
 
-/** @brief Basic Cluster Server Attribute Changed
+/** @brief Basic Information Cluster Server Attribute Changed
  *
  * Server Attribute Changed
  *
  * @param attributePath Concrete attribute path that changed
  */
-void MatterBasicClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);
+void MatterBasicInformationClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);
 
-/** @brief Basic Cluster Server Message Sent
+/** @brief Basic Information Cluster Server Message Sent
  *
  * Server Message Sent
  *
@@ -1806,10 +1806,11 @@
  * @param message            The message that was sent
  * @param status             The status of the sent message
  */
-void emberAfBasicClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
-                                                  uint16_t msgLen, uint8_t * message, EmberStatus status);
+void emberAfBasicInformationClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
+                                                             EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+                                                             EmberStatus status);
 
-/** @brief Basic Cluster Client Message Sent
+/** @brief Basic Information Cluster Client Message Sent
  *
  * Client Message Sent
  *
@@ -1819,10 +1820,11 @@
  * @param message            The message that was sent
  * @param status             The status of the sent message
  */
-void emberAfBasicClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
-                                                  uint16_t msgLen, uint8_t * message, EmberStatus status);
+void emberAfBasicInformationClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
+                                                             EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
+                                                             EmberStatus status);
 
-/** @brief Basic Cluster Server Pre Attribute Changed
+/** @brief Basic Information Cluster Server Pre Attribute Changed
  *
  * Server Pre Attribute Changed
  *
@@ -1832,10 +1834,10 @@
  * @param value         Attribute value
  */
 chip::Protocols::InteractionModel::Status
-MatterBasicClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
-                                                    EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
+MatterBasicInformationClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
+                                                               EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
 
-/** @brief Basic Cluster Client Pre Attribute Changed
+/** @brief Basic Information Cluster Client Pre Attribute Changed
  *
  * Client Pre Attribute Changed
  *
@@ -1845,24 +1847,24 @@
  * @param value         Attribute value
  */
 chip::Protocols::InteractionModel::Status
-MatterBasicClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
-                                                    EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
+MatterBasicInformationClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
+                                                               EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
 
-/** @brief Basic Cluster Server Tick
+/** @brief Basic Information Cluster Server Tick
  *
  * Server Tick
  *
  * @param endpoint  Endpoint that is being served
  */
-void emberAfBasicClusterServerTickCallback(chip::EndpointId endpoint);
+void emberAfBasicInformationClusterServerTickCallback(chip::EndpointId endpoint);
 
-/** @brief Basic Cluster Client Tick
+/** @brief Basic Information Cluster Client Tick
  *
  * Client Tick
  *
  * @param endpoint  Endpoint that is being served
  */
-void emberAfBasicClusterClientTickCallback(chip::EndpointId endpoint);
+void emberAfBasicInformationClusterClientTickCallback(chip::EndpointId endpoint);
 
 //
 // OTA Software Update Provider Cluster
@@ -7895,11 +7897,11 @@
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
     const chip::app::Clusters::Actions::Commands::DisableActionWithDuration::DecodableType & commandData);
 /**
- * @brief Basic Cluster MfgSpecificPing Command callback (from client)
+ * @brief Basic Information Cluster MfgSpecificPing Command callback (from client)
  */
-bool emberAfBasicClusterMfgSpecificPingCallback(
+bool emberAfBasicInformationClusterMfgSpecificPingCallback(
     chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-    const chip::app::Clusters::Basic::Commands::MfgSpecificPing::DecodableType & commandData);
+    const chip::app::Clusters::BasicInformation::Commands::MfgSpecificPing::DecodableType & commandData);
 /**
  * @brief OTA Software Update Provider Cluster QueryImage Command callback (from client)
  */
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
index 12cb3de..aafc877 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
@@ -335,8 +335,8 @@
 };
 } // namespace Actions
 
-namespace Basic {
-} // namespace Basic
+namespace BasicInformation {
+} // namespace BasicInformation
 
 namespace OtaSoftwareUpdateProvider {
 
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
index b3eec2e..c1c9377 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
@@ -3888,7 +3888,7 @@
 } // namespace Events
 
 } // namespace Actions
-namespace Basic {
+namespace BasicInformation {
 namespace Structs {
 namespace CapabilityMinimaStruct {
 CHIP_ERROR Type::Encode(TLV::TLVWriter & writer, TLV::Tag tag) const
@@ -4209,7 +4209,7 @@
 } // namespace ReachableChanged.
 } // namespace Events
 
-} // namespace Basic
+} // namespace BasicInformation
 namespace OtaSoftwareUpdateProvider {
 
 namespace Commands {
@@ -21349,7 +21349,7 @@
             return false;
         }
     }
-    case Clusters::Basic::Id: {
+    case Clusters::BasicInformation::Id: {
         switch (aCommand)
         {
         default:
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
index 61e97cf..d4f3f90 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
@@ -4382,7 +4382,7 @@
 } // namespace ActionFailed
 } // namespace Events
 } // namespace Actions
-namespace Basic {
+namespace BasicInformation {
 namespace Structs {
 namespace CapabilityMinimaStruct {
 enum class Fields
@@ -4430,7 +4430,7 @@
 public:
     // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
     static constexpr CommandId GetCommandId() { return Commands::MfgSpecificPing::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
 
@@ -4443,7 +4443,7 @@
 {
 public:
     static constexpr CommandId GetCommandId() { return Commands::MfgSpecificPing::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
 
     CHIP_ERROR Decode(TLV::TLVReader & reader);
 };
@@ -4459,7 +4459,7 @@
     using DecodableType    = uint16_t;
     using DecodableArgType = uint16_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::DataModelRevision::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -4471,7 +4471,7 @@
     using DecodableType    = chip::CharSpan;
     using DecodableArgType = chip::CharSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::VendorName::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 32; }
@@ -4484,7 +4484,7 @@
     using DecodableType    = chip::VendorId;
     using DecodableArgType = chip::VendorId;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::VendorID::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -4496,7 +4496,7 @@
     using DecodableType    = chip::CharSpan;
     using DecodableArgType = chip::CharSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::ProductName::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 32; }
@@ -4509,7 +4509,7 @@
     using DecodableType    = uint16_t;
     using DecodableArgType = uint16_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::ProductID::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -4521,7 +4521,7 @@
     using DecodableType    = chip::CharSpan;
     using DecodableArgType = chip::CharSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::NodeLabel::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 32; }
@@ -4534,7 +4534,7 @@
     using DecodableType    = chip::CharSpan;
     using DecodableArgType = chip::CharSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Location::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 2; }
@@ -4547,7 +4547,7 @@
     using DecodableType    = uint16_t;
     using DecodableArgType = uint16_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::HardwareVersion::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -4559,7 +4559,7 @@
     using DecodableType    = chip::CharSpan;
     using DecodableArgType = chip::CharSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::HardwareVersionString::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 64; }
@@ -4572,7 +4572,7 @@
     using DecodableType    = uint32_t;
     using DecodableArgType = uint32_t;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::SoftwareVersion::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -4584,7 +4584,7 @@
     using DecodableType    = chip::CharSpan;
     using DecodableArgType = chip::CharSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::SoftwareVersionString::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 64; }
@@ -4597,7 +4597,7 @@
     using DecodableType    = chip::CharSpan;
     using DecodableArgType = chip::CharSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::ManufacturingDate::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 16; }
@@ -4610,7 +4610,7 @@
     using DecodableType    = chip::CharSpan;
     using DecodableArgType = chip::CharSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::PartNumber::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 32; }
@@ -4623,7 +4623,7 @@
     using DecodableType    = chip::CharSpan;
     using DecodableArgType = chip::CharSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::ProductURL::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 256; }
@@ -4636,7 +4636,7 @@
     using DecodableType    = chip::CharSpan;
     using DecodableArgType = chip::CharSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::ProductLabel::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 64; }
@@ -4649,7 +4649,7 @@
     using DecodableType    = chip::CharSpan;
     using DecodableArgType = chip::CharSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::SerialNumber::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 32; }
@@ -4662,7 +4662,7 @@
     using DecodableType    = bool;
     using DecodableArgType = bool;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::LocalConfigDisabled::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -4674,7 +4674,7 @@
     using DecodableType    = bool;
     using DecodableArgType = bool;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Reachable::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -4686,7 +4686,7 @@
     using DecodableType    = chip::CharSpan;
     using DecodableArgType = chip::CharSpan;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::UniqueID::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
     static constexpr size_t MaxLength() { return 32; }
@@ -4695,11 +4695,11 @@
 namespace CapabilityMinima {
 struct TypeInfo
 {
-    using Type             = chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::Type;
-    using DecodableType    = chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType;
-    using DecodableArgType = const chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType &;
+    using Type             = chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::Type;
+    using DecodableType    = chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::DecodableType;
+    using DecodableArgType = const chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::DecodableType &;
 
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::CapabilityMinima::Id; }
     static constexpr bool MustUseTimedWrite() { return false; }
 };
@@ -4707,31 +4707,31 @@
 namespace GeneratedCommandList {
 struct TypeInfo : public Clusters::Globals::Attributes::GeneratedCommandList::TypeInfo
 {
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
 };
 } // namespace GeneratedCommandList
 namespace AcceptedCommandList {
 struct TypeInfo : public Clusters::Globals::Attributes::AcceptedCommandList::TypeInfo
 {
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
 };
 } // namespace AcceptedCommandList
 namespace AttributeList {
 struct TypeInfo : public Clusters::Globals::Attributes::AttributeList::TypeInfo
 {
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
 };
 } // namespace AttributeList
 namespace FeatureMap {
 struct TypeInfo : public Clusters::Globals::Attributes::FeatureMap::TypeInfo
 {
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
 };
 } // namespace FeatureMap
 namespace ClusterRevision {
 struct TypeInfo : public Clusters::Globals::Attributes::ClusterRevision::TypeInfo
 {
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
 };
 } // namespace ClusterRevision
 
@@ -4739,7 +4739,7 @@
 {
     struct DecodableType
     {
-        static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+        static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
 
         CHIP_ERROR Decode(TLV::TLVReader & reader, const ConcreteAttributePath & path);
 
@@ -4785,7 +4785,7 @@
 public:
     static constexpr PriorityLevel GetPriorityLevel() { return kPriorityLevel; }
     static constexpr EventId GetEventId() { return Events::StartUp::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr bool kIsFabricScoped = false;
 
     uint32_t softwareVersion = static_cast<uint32_t>(0);
@@ -4798,7 +4798,7 @@
 public:
     static constexpr PriorityLevel GetPriorityLevel() { return kPriorityLevel; }
     static constexpr EventId GetEventId() { return Events::StartUp::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
 
     uint32_t softwareVersion = static_cast<uint32_t>(0);
 
@@ -4817,7 +4817,7 @@
 public:
     static constexpr PriorityLevel GetPriorityLevel() { return kPriorityLevel; }
     static constexpr EventId GetEventId() { return Events::ShutDown::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr bool kIsFabricScoped = false;
 
     CHIP_ERROR Encode(TLV::TLVWriter & writer, TLV::Tag tag) const;
@@ -4828,7 +4828,7 @@
 public:
     static constexpr PriorityLevel GetPriorityLevel() { return kPriorityLevel; }
     static constexpr EventId GetEventId() { return Events::ShutDown::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
 
     CHIP_ERROR Decode(TLV::TLVReader & reader);
 };
@@ -4846,7 +4846,7 @@
 public:
     static constexpr PriorityLevel GetPriorityLevel() { return kPriorityLevel; }
     static constexpr EventId GetEventId() { return Events::Leave::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr bool kIsFabricScoped = false;
 
     chip::FabricIndex fabricIndex = static_cast<chip::FabricIndex>(0);
@@ -4859,7 +4859,7 @@
 public:
     static constexpr PriorityLevel GetPriorityLevel() { return kPriorityLevel; }
     static constexpr EventId GetEventId() { return Events::Leave::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
 
     chip::FabricIndex fabricIndex = static_cast<chip::FabricIndex>(0);
 
@@ -4879,7 +4879,7 @@
 public:
     static constexpr PriorityLevel GetPriorityLevel() { return kPriorityLevel; }
     static constexpr EventId GetEventId() { return Events::ReachableChanged::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
     static constexpr bool kIsFabricScoped = false;
 
     bool reachableNewValue = static_cast<bool>(0);
@@ -4892,7 +4892,7 @@
 public:
     static constexpr PriorityLevel GetPriorityLevel() { return kPriorityLevel; }
     static constexpr EventId GetEventId() { return Events::ReachableChanged::Id; }
-    static constexpr ClusterId GetClusterId() { return Clusters::Basic::Id; }
+    static constexpr ClusterId GetClusterId() { return Clusters::BasicInformation::Id; }
 
     bool reachableNewValue = static_cast<bool>(0);
 
@@ -4900,7 +4900,7 @@
 };
 } // namespace ReachableChanged
 } // namespace Events
-} // namespace Basic
+} // namespace BasicInformation
 namespace OtaSoftwareUpdateProvider {
 
 namespace Commands {
diff --git a/zzz_generated/app-common/app-common/zap-generated/command-id.h b/zzz_generated/app-common/app-common/zap-generated/command-id.h
index b443dfc..dbc65d0 100644
--- a/zzz_generated/app-common/app-common/zap-generated/command-id.h
+++ b/zzz_generated/app-common/app-common/zap-generated/command-id.h
@@ -102,7 +102,7 @@
 #define ZCL_DISABLE_ACTION_COMMAND_ID (0x0A)
 #define ZCL_DISABLE_ACTION_WITH_DURATION_COMMAND_ID (0x0B)
 
-// Commands for cluster: Basic
+// Commands for cluster: Basic Information
 #define ZCL_MFG_SPECIFIC_PING_COMMAND_ID (0x00)
 
 // Commands for cluster: OTA Software Update Provider
diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h
index 78fed4d..901dc91 100644
--- a/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h
+++ b/zzz_generated/app-common/app-common/zap-generated/ids/Attributes.h
@@ -571,7 +571,7 @@
 } // namespace Attributes
 } // namespace Actions
 
-namespace Basic {
+namespace BasicInformation {
 namespace Attributes {
 
 namespace DataModelRevision {
@@ -675,7 +675,7 @@
 } // namespace ClusterRevision
 
 } // namespace Attributes
-} // namespace Basic
+} // namespace BasicInformation
 
 namespace OtaSoftwareUpdateProvider {
 namespace Attributes {
diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Clusters.h b/zzz_generated/app-common/app-common/zap-generated/ids/Clusters.h
index 6d9fe6f..e691cc8 100644
--- a/zzz_generated/app-common/app-common/zap-generated/ids/Clusters.h
+++ b/zzz_generated/app-common/app-common/zap-generated/ids/Clusters.h
@@ -61,9 +61,9 @@
 namespace Actions {
 static constexpr ClusterId Id = 0x00000025;
 } // namespace Actions
-namespace Basic {
+namespace BasicInformation {
 static constexpr ClusterId Id = 0x00000028;
-} // namespace Basic
+} // namespace BasicInformation
 namespace OtaSoftwareUpdateProvider {
 static constexpr ClusterId Id = 0x00000029;
 } // namespace OtaSoftwareUpdateProvider
diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h b/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h
index 1da2e63..fc78c7c 100644
--- a/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h
+++ b/zzz_generated/app-common/app-common/zap-generated/ids/Commands.h
@@ -295,7 +295,7 @@
 } // namespace Commands
 } // namespace Actions
 
-namespace Basic {
+namespace BasicInformation {
 namespace Commands {
 
 namespace MfgSpecificPing {
@@ -303,7 +303,7 @@
 } // namespace MfgSpecificPing
 
 } // namespace Commands
-} // namespace Basic
+} // namespace BasicInformation
 
 namespace OtaSoftwareUpdateProvider {
 namespace Commands {
diff --git a/zzz_generated/app-common/app-common/zap-generated/ids/Events.h b/zzz_generated/app-common/app-common/zap-generated/ids/Events.h
index f466ccb..8dbc9ea 100644
--- a/zzz_generated/app-common/app-common/zap-generated/ids/Events.h
+++ b/zzz_generated/app-common/app-common/zap-generated/ids/Events.h
@@ -53,7 +53,7 @@
 } // namespace Events
 } // namespace Actions
 
-namespace Basic {
+namespace BasicInformation {
 namespace Events {
 
 namespace StartUp {
@@ -73,7 +73,7 @@
 } // namespace ReachableChanged
 
 } // namespace Events
-} // namespace Basic
+} // namespace BasicInformation
 
 namespace OtaSoftwareUpdateRequestor {
 namespace Events {
diff --git a/zzz_generated/app-common/app-common/zap-generated/print-cluster.h b/zzz_generated/app-common/app-common/zap-generated/print-cluster.h
index 9b315e2..a559ec1 100644
--- a/zzz_generated/app-common/app-common/zap-generated/print-cluster.h
+++ b/zzz_generated/app-common/app-common/zap-generated/print-cluster.h
@@ -99,10 +99,10 @@
 #define CHIP_PRINTCLUSTER_ACTIONS_CLUSTER
 #endif
 
-#if defined(ZCL_USING_BASIC_CLUSTER_SERVER) || defined(ZCL_USING_BASIC_CLUSTER_CLIENT)
-#define CHIP_PRINTCLUSTER_BASIC_CLUSTER { chip::app::Clusters::Basic::Id, "Basic" },
+#if defined(ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER) || defined(ZCL_USING_BASIC_INFORMATION_CLUSTER_CLIENT)
+#define CHIP_PRINTCLUSTER_BASIC_INFORMATION_CLUSTER { chip::app::Clusters::BasicInformation::Id, "Basic Information" },
 #else
-#define CHIP_PRINTCLUSTER_BASIC_CLUSTER
+#define CHIP_PRINTCLUSTER_BASIC_INFORMATION_CLUSTER
 #endif
 
 #if defined(ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_SERVER) || defined(ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT)
@@ -492,7 +492,7 @@
     CHIP_PRINTCLUSTER_BINDING_CLUSTER                                                                                              \
     CHIP_PRINTCLUSTER_ACCESS_CONTROL_CLUSTER                                                                                       \
     CHIP_PRINTCLUSTER_ACTIONS_CLUSTER                                                                                              \
-    CHIP_PRINTCLUSTER_BASIC_CLUSTER                                                                                                \
+    CHIP_PRINTCLUSTER_BASIC_INFORMATION_CLUSTER                                                                                    \
     CHIP_PRINTCLUSTER_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER                                                                         \
     CHIP_PRINTCLUSTER_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER                                                                        \
     CHIP_PRINTCLUSTER_LOCALIZATION_CONFIGURATION_CLUSTER                                                                           \
diff --git a/zzz_generated/bridge-app/zap-generated/access.h b/zzz_generated/bridge-app/zap-generated/access.h
index 398e4e7..ec99a43 100644
--- a/zzz_generated/bridge-app/zap-generated/access.h
+++ b/zzz_generated/bridge-app/zap-generated/access.h
@@ -35,9 +35,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -58,9 +58,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -81,9 +81,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -103,9 +103,9 @@
     8, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -117,9 +117,9 @@
     16384, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -131,9 +131,9 @@
     kMatterAccessPrivilegeManage, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/bridge-app/zap-generated/endpoint_config.h b/zzz_generated/bridge-app/zap-generated/endpoint_config.h
index d648129..0b560b8 100644
--- a/zzz_generated/bridge-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/bridge-app/zap-generated/endpoint_config.h
@@ -129,7 +129,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -527,9 +527,6 @@
 
 // Cluster function static arrays
 #define GENERATED_FUNCTION_ARRAYS                                                                                                  \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -695,13 +692,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/bridge-app/zap-generated/gen_config.h b/zzz_generated/bridge-app/zap-generated/gen_config.h
index 47c85fe..0f72206 100644
--- a/zzz_generated/bridge-app/zap-generated/gen_config.h
+++ b/zzz_generated/bridge-app/zap-generated/gen_config.h
@@ -37,7 +37,7 @@
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACTIONS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_TIME_FORMAT_LOCALIZATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_UNIT_LOCALIZATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -100,10 +100,10 @@
 #define EMBER_AF_PLUGIN_ACTIONS_SERVER
 #define EMBER_AF_PLUGIN_ACTIONS
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the server side of the Localization Configuration cluster is included
 #define ZCL_USING_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER
diff --git a/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/access.h b/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/access.h
index 798ba02..768c9e6 100644
--- a/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/access.h
+++ b/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/access.h
@@ -33,9 +33,9 @@
     /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: view */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     62, /* Cluster: Operational Credentials, Attribute: NOCs, Privilege: administer */ \
     /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: view */ \
@@ -47,9 +47,9 @@
     /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: view */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Operational Credentials, Attribute: NOCs, Privilege: administer */ \
     /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: view */ \
@@ -61,9 +61,9 @@
     /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Operational Credentials, Attribute: NOCs, Privilege: administer */ \
     /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: view */ \
@@ -77,9 +77,9 @@
     8, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
 }
@@ -90,9 +90,9 @@
     16384, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
 }
@@ -103,9 +103,9 @@
     kMatterAccessPrivilegeManage, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
 }
diff --git a/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h b/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h
index 4e08d41..3fb81ca 100644
--- a/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h
@@ -108,7 +108,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -463,9 +463,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -657,13 +654,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/gen_config.h b/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/gen_config.h
index 8f74d2b..fa279fa 100644
--- a/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/gen_config.h
+++ b/zzz_generated/chef-noip_rootnode_dimmablelight_bCwGYSDpoe/zap-generated/gen_config.h
@@ -36,7 +36,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -95,10 +95,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_colortemperaturelight_hbUnzYVeyn/zap-generated/access.h b/zzz_generated/chef-rootnode_colortemperaturelight_hbUnzYVeyn/zap-generated/access.h
index ea28b31..fee6f0e 100644
--- a/zzz_generated/chef-rootnode_colortemperaturelight_hbUnzYVeyn/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_colortemperaturelight_hbUnzYVeyn/zap-generated/access.h
@@ -36,9 +36,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -60,9 +60,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -84,9 +84,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -107,9 +107,9 @@
     8, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -122,9 +122,9 @@
     16384, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -137,9 +137,9 @@
     kMatterAccessPrivilegeManage, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_colortemperaturelight_hbUnzYVeyn/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_colortemperaturelight_hbUnzYVeyn/zap-generated/endpoint_config.h
index ce43287..47419fd 100644
--- a/zzz_generated/chef-rootnode_colortemperaturelight_hbUnzYVeyn/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_colortemperaturelight_hbUnzYVeyn/zap-generated/endpoint_config.h
@@ -117,7 +117,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -348,9 +348,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayIdentifyServer[] = {                                                          \
         (EmberAfGenericClusterFunction) emberAfIdentifyClusterServerInitCallback,                                                  \
         (EmberAfGenericClusterFunction) MatterIdentifyClusterServerAttributeChangedCallback,                                       \
@@ -565,13 +562,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(16), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_colortemperaturelight_hbUnzYVeyn/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_colortemperaturelight_hbUnzYVeyn/zap-generated/gen_config.h
index c5413d8..b65819f 100644
--- a/zzz_generated/chef-rootnode_colortemperaturelight_hbUnzYVeyn/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_colortemperaturelight_hbUnzYVeyn/zap-generated/gen_config.h
@@ -35,7 +35,7 @@
 #define EMBER_AF_LEVEL_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_GENERAL_COMMISSIONING_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -84,10 +84,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_contactsensor_lFAGG1bfRO/zap-generated/access.h b/zzz_generated/chef-rootnode_contactsensor_lFAGG1bfRO/zap-generated/access.h
index 8d47749..928327d 100644
--- a/zzz_generated/chef-rootnode_contactsensor_lFAGG1bfRO/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_contactsensor_lFAGG1bfRO/zap-generated/access.h
@@ -31,9 +31,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -49,9 +49,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -67,9 +67,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -87,9 +87,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -99,9 +99,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -111,9 +111,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_contactsensor_lFAGG1bfRO/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_contactsensor_lFAGG1bfRO/zap-generated/endpoint_config.h
index 4c2075b..9c48350 100644
--- a/zzz_generated/chef-rootnode_contactsensor_lFAGG1bfRO/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_contactsensor_lFAGG1bfRO/zap-generated/endpoint_config.h
@@ -105,7 +105,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -303,9 +303,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -476,13 +473,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_contactsensor_lFAGG1bfRO/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_contactsensor_lFAGG1bfRO/zap-generated/gen_config.h
index 4802314..bea0c94 100644
--- a/zzz_generated/chef-rootnode_contactsensor_lFAGG1bfRO/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_contactsensor_lFAGG1bfRO/zap-generated/gen_config.h
@@ -34,7 +34,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -77,10 +77,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_dimmablelight_bCwGYSDpoe/zap-generated/access.h b/zzz_generated/chef-rootnode_dimmablelight_bCwGYSDpoe/zap-generated/access.h
index fcc1823..b01afc7 100644
--- a/zzz_generated/chef-rootnode_dimmablelight_bCwGYSDpoe/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_dimmablelight_bCwGYSDpoe/zap-generated/access.h
@@ -33,9 +33,9 @@
     /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: view */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -53,9 +53,9 @@
     /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: view */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -73,9 +73,9 @@
     /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -95,9 +95,9 @@
     8, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -109,9 +109,9 @@
     16384, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -123,9 +123,9 @@
     kMatterAccessPrivilegeManage, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h
index b375039..0ba05c0 100644
--- a/zzz_generated/chef-rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_dimmablelight_bCwGYSDpoe/zap-generated/endpoint_config.h
@@ -108,7 +108,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -326,9 +326,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -522,13 +519,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_dimmablelight_bCwGYSDpoe/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_dimmablelight_bCwGYSDpoe/zap-generated/gen_config.h
index 0b8bc40..b0c36f8 100644
--- a/zzz_generated/chef-rootnode_dimmablelight_bCwGYSDpoe/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_dimmablelight_bCwGYSDpoe/zap-generated/gen_config.h
@@ -36,7 +36,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -93,10 +93,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_doorlock_aNKYAreMXE/zap-generated/access.h b/zzz_generated/chef-rootnode_doorlock_aNKYAreMXE/zap-generated/access.h
index 3e5a065..9173d5f 100644
--- a/zzz_generated/chef-rootnode_doorlock_aNKYAreMXE/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_doorlock_aNKYAreMXE/zap-generated/access.h
@@ -31,9 +31,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -55,9 +55,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -79,9 +79,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -105,9 +105,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -123,9 +123,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -141,9 +141,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_doorlock_aNKYAreMXE/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_doorlock_aNKYAreMXE/zap-generated/endpoint_config.h
index ef5ccb2..6bb56d3 100644
--- a/zzz_generated/chef-rootnode_doorlock_aNKYAreMXE/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_doorlock_aNKYAreMXE/zap-generated/endpoint_config.h
@@ -110,7 +110,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -324,9 +324,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -506,13 +503,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_doorlock_aNKYAreMXE/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_doorlock_aNKYAreMXE/zap-generated/gen_config.h
index 59dae30..4354421 100644
--- a/zzz_generated/chef-rootnode_doorlock_aNKYAreMXE/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_doorlock_aNKYAreMXE/zap-generated/gen_config.h
@@ -34,7 +34,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -77,10 +77,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/access.h b/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/access.h
index 117935b..54a3e1a 100644
--- a/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/access.h
@@ -33,9 +33,9 @@
     /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: view */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -54,9 +54,9 @@
     /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: view */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -75,9 +75,9 @@
     /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -98,9 +98,9 @@
     8, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -113,9 +113,9 @@
     16384, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -128,9 +128,9 @@
     kMatterAccessPrivilegeManage, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/endpoint_config.h
index 3c35d1a..725c64a 100644
--- a/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/endpoint_config.h
@@ -114,7 +114,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -358,9 +358,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -579,13 +576,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/gen_config.h
index 6438af5..35d85e4 100644
--- a/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_extendedcolorlight_8lcaaYJVAa/zap-generated/gen_config.h
@@ -36,7 +36,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -93,10 +93,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_fan_7N2TobIlOX/zap-generated/access.h b/zzz_generated/chef-rootnode_fan_7N2TobIlOX/zap-generated/access.h
index 537bdf6..a0d4ba9 100644
--- a/zzz_generated/chef-rootnode_fan_7N2TobIlOX/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_fan_7N2TobIlOX/zap-generated/access.h
@@ -34,9 +34,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -55,9 +55,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -76,9 +76,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -96,9 +96,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -108,9 +108,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -120,9 +120,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_fan_7N2TobIlOX/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_fan_7N2TobIlOX/zap-generated/endpoint_config.h
index da2a50d..0694122 100644
--- a/zzz_generated/chef-rootnode_fan_7N2TobIlOX/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_fan_7N2TobIlOX/zap-generated/endpoint_config.h
@@ -117,7 +117,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -338,9 +338,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -516,13 +513,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(16), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_fan_7N2TobIlOX/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_fan_7N2TobIlOX/zap-generated/gen_config.h
index a7e3a2e..6702098 100644
--- a/zzz_generated/chef-rootnode_fan_7N2TobIlOX/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_fan_7N2TobIlOX/zap-generated/gen_config.h
@@ -33,7 +33,7 @@
 #define EMBER_AF_GROUPS_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -72,10 +72,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_flowsensor_1zVxHedlaV/zap-generated/access.h b/zzz_generated/chef-rootnode_flowsensor_1zVxHedlaV/zap-generated/access.h
index 8d47749..928327d 100644
--- a/zzz_generated/chef-rootnode_flowsensor_1zVxHedlaV/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_flowsensor_1zVxHedlaV/zap-generated/access.h
@@ -31,9 +31,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -49,9 +49,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -67,9 +67,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -87,9 +87,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -99,9 +99,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -111,9 +111,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_flowsensor_1zVxHedlaV/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_flowsensor_1zVxHedlaV/zap-generated/endpoint_config.h
index 41f0385..775a97c 100644
--- a/zzz_generated/chef-rootnode_flowsensor_1zVxHedlaV/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_flowsensor_1zVxHedlaV/zap-generated/endpoint_config.h
@@ -105,7 +105,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -301,9 +301,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -459,13 +456,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_flowsensor_1zVxHedlaV/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_flowsensor_1zVxHedlaV/zap-generated/gen_config.h
index a63d6c3..3aea39e 100644
--- a/zzz_generated/chef-rootnode_flowsensor_1zVxHedlaV/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_flowsensor_1zVxHedlaV/zap-generated/gen_config.h
@@ -35,7 +35,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -82,10 +82,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_heatingcoolingunit_ncdGai1E5a/zap-generated/access.h b/zzz_generated/chef-rootnode_heatingcoolingunit_ncdGai1E5a/zap-generated/access.h
index 8d47749..928327d 100644
--- a/zzz_generated/chef-rootnode_heatingcoolingunit_ncdGai1E5a/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_heatingcoolingunit_ncdGai1E5a/zap-generated/access.h
@@ -31,9 +31,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -49,9 +49,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -67,9 +67,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -87,9 +87,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -99,9 +99,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -111,9 +111,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_heatingcoolingunit_ncdGai1E5a/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_heatingcoolingunit_ncdGai1E5a/zap-generated/endpoint_config.h
index 812e368..f40f465 100644
--- a/zzz_generated/chef-rootnode_heatingcoolingunit_ncdGai1E5a/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_heatingcoolingunit_ncdGai1E5a/zap-generated/endpoint_config.h
@@ -111,7 +111,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -335,9 +335,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -535,13 +532,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_heatingcoolingunit_ncdGai1E5a/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_heatingcoolingunit_ncdGai1E5a/zap-generated/gen_config.h
index 6beffc1..f390aeb 100644
--- a/zzz_generated/chef-rootnode_heatingcoolingunit_ncdGai1E5a/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_heatingcoolingunit_ncdGai1E5a/zap-generated/gen_config.h
@@ -36,7 +36,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -94,10 +94,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_humiditysensor_Xyj4gda6Hb/zap-generated/access.h b/zzz_generated/chef-rootnode_humiditysensor_Xyj4gda6Hb/zap-generated/access.h
index 8d47749..928327d 100644
--- a/zzz_generated/chef-rootnode_humiditysensor_Xyj4gda6Hb/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_humiditysensor_Xyj4gda6Hb/zap-generated/access.h
@@ -31,9 +31,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -49,9 +49,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -67,9 +67,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -87,9 +87,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -99,9 +99,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -111,9 +111,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_humiditysensor_Xyj4gda6Hb/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_humiditysensor_Xyj4gda6Hb/zap-generated/endpoint_config.h
index 9f86636..e68ef4a 100644
--- a/zzz_generated/chef-rootnode_humiditysensor_Xyj4gda6Hb/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_humiditysensor_Xyj4gda6Hb/zap-generated/endpoint_config.h
@@ -105,7 +105,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -302,9 +302,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -460,13 +457,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_humiditysensor_Xyj4gda6Hb/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_humiditysensor_Xyj4gda6Hb/zap-generated/gen_config.h
index 3f85508..ca4dd71 100644
--- a/zzz_generated/chef-rootnode_humiditysensor_Xyj4gda6Hb/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_humiditysensor_Xyj4gda6Hb/zap-generated/gen_config.h
@@ -35,7 +35,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -82,10 +82,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_lightsensor_lZQycTFcJK/zap-generated/access.h b/zzz_generated/chef-rootnode_lightsensor_lZQycTFcJK/zap-generated/access.h
index 8d47749..928327d 100644
--- a/zzz_generated/chef-rootnode_lightsensor_lZQycTFcJK/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_lightsensor_lZQycTFcJK/zap-generated/access.h
@@ -31,9 +31,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -49,9 +49,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -67,9 +67,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -87,9 +87,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -99,9 +99,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -111,9 +111,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_lightsensor_lZQycTFcJK/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_lightsensor_lZQycTFcJK/zap-generated/endpoint_config.h
index edf4c2f..1f00060 100644
--- a/zzz_generated/chef-rootnode_lightsensor_lZQycTFcJK/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_lightsensor_lZQycTFcJK/zap-generated/endpoint_config.h
@@ -105,7 +105,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -300,9 +300,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -458,13 +455,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_lightsensor_lZQycTFcJK/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_lightsensor_lZQycTFcJK/zap-generated/gen_config.h
index 9c96564..d09eef9 100644
--- a/zzz_generated/chef-rootnode_lightsensor_lZQycTFcJK/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_lightsensor_lZQycTFcJK/zap-generated/gen_config.h
@@ -35,7 +35,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -82,10 +82,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_occupancysensor_iHyVgifZuo/zap-generated/access.h b/zzz_generated/chef-rootnode_occupancysensor_iHyVgifZuo/zap-generated/access.h
index 8d47749..928327d 100644
--- a/zzz_generated/chef-rootnode_occupancysensor_iHyVgifZuo/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_occupancysensor_iHyVgifZuo/zap-generated/access.h
@@ -31,9 +31,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -49,9 +49,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -67,9 +67,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -87,9 +87,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -99,9 +99,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -111,9 +111,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_occupancysensor_iHyVgifZuo/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_occupancysensor_iHyVgifZuo/zap-generated/endpoint_config.h
index cd6aedd..47185f1 100644
--- a/zzz_generated/chef-rootnode_occupancysensor_iHyVgifZuo/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_occupancysensor_iHyVgifZuo/zap-generated/endpoint_config.h
@@ -105,7 +105,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -300,9 +300,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -461,13 +458,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_occupancysensor_iHyVgifZuo/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_occupancysensor_iHyVgifZuo/zap-generated/gen_config.h
index 8b1552b..3a57793 100644
--- a/zzz_generated/chef-rootnode_occupancysensor_iHyVgifZuo/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_occupancysensor_iHyVgifZuo/zap-generated/gen_config.h
@@ -35,7 +35,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -82,10 +82,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_onofflight_bbs1b7IaOV/zap-generated/access.h b/zzz_generated/chef-rootnode_onofflight_bbs1b7IaOV/zap-generated/access.h
index fcc1823..b01afc7 100644
--- a/zzz_generated/chef-rootnode_onofflight_bbs1b7IaOV/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_onofflight_bbs1b7IaOV/zap-generated/access.h
@@ -33,9 +33,9 @@
     /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: view */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -53,9 +53,9 @@
     /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: view */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -73,9 +73,9 @@
     /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -95,9 +95,9 @@
     8, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -109,9 +109,9 @@
     16384, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -123,9 +123,9 @@
     kMatterAccessPrivilegeManage, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_onofflight_bbs1b7IaOV/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_onofflight_bbs1b7IaOV/zap-generated/endpoint_config.h
index e8d1127..d831f3d 100644
--- a/zzz_generated/chef-rootnode_onofflight_bbs1b7IaOV/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_onofflight_bbs1b7IaOV/zap-generated/endpoint_config.h
@@ -108,7 +108,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -326,9 +326,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -522,13 +519,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_onofflight_bbs1b7IaOV/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_onofflight_bbs1b7IaOV/zap-generated/gen_config.h
index f02657c..45a188f 100644
--- a/zzz_generated/chef-rootnode_onofflight_bbs1b7IaOV/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_onofflight_bbs1b7IaOV/zap-generated/gen_config.h
@@ -36,7 +36,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -92,10 +92,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_onofflightswitch_FsPlMr090Q/zap-generated/access.h b/zzz_generated/chef-rootnode_onofflightswitch_FsPlMr090Q/zap-generated/access.h
index 8d47749..928327d 100644
--- a/zzz_generated/chef-rootnode_onofflightswitch_FsPlMr090Q/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_onofflightswitch_FsPlMr090Q/zap-generated/access.h
@@ -31,9 +31,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -49,9 +49,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -67,9 +67,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -87,9 +87,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -99,9 +99,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -111,9 +111,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_onofflightswitch_FsPlMr090Q/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_onofflightswitch_FsPlMr090Q/zap-generated/endpoint_config.h
index 5911929..3b1352e 100644
--- a/zzz_generated/chef-rootnode_onofflightswitch_FsPlMr090Q/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_onofflightswitch_FsPlMr090Q/zap-generated/endpoint_config.h
@@ -105,7 +105,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -303,9 +303,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -485,13 +482,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_onofflightswitch_FsPlMr090Q/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_onofflightswitch_FsPlMr090Q/zap-generated/gen_config.h
index 97593d6..3095b03 100644
--- a/zzz_generated/chef-rootnode_onofflightswitch_FsPlMr090Q/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_onofflightswitch_FsPlMr090Q/zap-generated/gen_config.h
@@ -36,7 +36,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -87,10 +87,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_onoffpluginunit_Wtf8ss5EBY/zap-generated/access.h b/zzz_generated/chef-rootnode_onoffpluginunit_Wtf8ss5EBY/zap-generated/access.h
index cf5ade8..84fce7c 100644
--- a/zzz_generated/chef-rootnode_onoffpluginunit_Wtf8ss5EBY/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_onoffpluginunit_Wtf8ss5EBY/zap-generated/access.h
@@ -32,9 +32,9 @@
     /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: view */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -51,9 +51,9 @@
     /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: view */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -70,9 +70,9 @@
     /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -91,9 +91,9 @@
     6, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -104,9 +104,9 @@
     16387, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -117,9 +117,9 @@
     kMatterAccessPrivilegeManage, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_onoffpluginunit_Wtf8ss5EBY/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_onoffpluginunit_Wtf8ss5EBY/zap-generated/endpoint_config.h
index 4c1adb1..7bac27a 100644
--- a/zzz_generated/chef-rootnode_onoffpluginunit_Wtf8ss5EBY/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_onoffpluginunit_Wtf8ss5EBY/zap-generated/endpoint_config.h
@@ -105,7 +105,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -309,9 +309,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -491,13 +488,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_onoffpluginunit_Wtf8ss5EBY/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_onoffpluginunit_Wtf8ss5EBY/zap-generated/gen_config.h
index 8863467..e45f855 100644
--- a/zzz_generated/chef-rootnode_onoffpluginunit_Wtf8ss5EBY/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_onoffpluginunit_Wtf8ss5EBY/zap-generated/gen_config.h
@@ -35,7 +35,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -82,10 +82,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_pressuresensor_s0qC9wLH4k/zap-generated/access.h b/zzz_generated/chef-rootnode_pressuresensor_s0qC9wLH4k/zap-generated/access.h
index 83ab316..b31a950 100644
--- a/zzz_generated/chef-rootnode_pressuresensor_s0qC9wLH4k/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_pressuresensor_s0qC9wLH4k/zap-generated/access.h
@@ -31,9 +31,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -50,9 +50,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -69,9 +69,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -90,9 +90,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -103,9 +103,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -116,9 +116,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_pressuresensor_s0qC9wLH4k/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_pressuresensor_s0qC9wLH4k/zap-generated/endpoint_config.h
index d296bee..cdcccb5 100644
--- a/zzz_generated/chef-rootnode_pressuresensor_s0qC9wLH4k/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_pressuresensor_s0qC9wLH4k/zap-generated/endpoint_config.h
@@ -105,7 +105,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -306,9 +306,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -464,13 +461,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_pressuresensor_s0qC9wLH4k/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_pressuresensor_s0qC9wLH4k/zap-generated/gen_config.h
index 2f72b6f..9cf5077 100644
--- a/zzz_generated/chef-rootnode_pressuresensor_s0qC9wLH4k/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_pressuresensor_s0qC9wLH4k/zap-generated/gen_config.h
@@ -35,7 +35,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -83,10 +83,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_speaker_RpzeXdimqA/zap-generated/access.h b/zzz_generated/chef-rootnode_speaker_RpzeXdimqA/zap-generated/access.h
index 8d47749..928327d 100644
--- a/zzz_generated/chef-rootnode_speaker_RpzeXdimqA/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_speaker_RpzeXdimqA/zap-generated/access.h
@@ -31,9 +31,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -49,9 +49,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -67,9 +67,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -87,9 +87,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -99,9 +99,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -111,9 +111,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_speaker_RpzeXdimqA/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_speaker_RpzeXdimqA/zap-generated/endpoint_config.h
index a71957f..0389730 100644
--- a/zzz_generated/chef-rootnode_speaker_RpzeXdimqA/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_speaker_RpzeXdimqA/zap-generated/endpoint_config.h
@@ -105,7 +105,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -309,9 +309,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -490,13 +487,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_speaker_RpzeXdimqA/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_speaker_RpzeXdimqA/zap-generated/gen_config.h
index fae3858..b63645f 100644
--- a/zzz_generated/chef-rootnode_speaker_RpzeXdimqA/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_speaker_RpzeXdimqA/zap-generated/gen_config.h
@@ -36,7 +36,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -92,10 +92,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_temperaturesensor_Qy1zkNW7c3/zap-generated/access.h b/zzz_generated/chef-rootnode_temperaturesensor_Qy1zkNW7c3/zap-generated/access.h
index 8d47749..928327d 100644
--- a/zzz_generated/chef-rootnode_temperaturesensor_Qy1zkNW7c3/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_temperaturesensor_Qy1zkNW7c3/zap-generated/access.h
@@ -31,9 +31,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -49,9 +49,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -67,9 +67,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -87,9 +87,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -99,9 +99,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -111,9 +111,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_temperaturesensor_Qy1zkNW7c3/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_temperaturesensor_Qy1zkNW7c3/zap-generated/endpoint_config.h
index ec1fb48..d575df9 100644
--- a/zzz_generated/chef-rootnode_temperaturesensor_Qy1zkNW7c3/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_temperaturesensor_Qy1zkNW7c3/zap-generated/endpoint_config.h
@@ -105,7 +105,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -300,9 +300,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -458,13 +455,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_temperaturesensor_Qy1zkNW7c3/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_temperaturesensor_Qy1zkNW7c3/zap-generated/gen_config.h
index cda6922..3863f2d 100644
--- a/zzz_generated/chef-rootnode_temperaturesensor_Qy1zkNW7c3/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_temperaturesensor_Qy1zkNW7c3/zap-generated/gen_config.h
@@ -35,7 +35,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -82,10 +82,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_thermostat_bm3fb8dhYi/zap-generated/access.h b/zzz_generated/chef-rootnode_thermostat_bm3fb8dhYi/zap-generated/access.h
index 5e7bd59..ad07deb 100644
--- a/zzz_generated/chef-rootnode_thermostat_bm3fb8dhYi/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_thermostat_bm3fb8dhYi/zap-generated/access.h
@@ -31,9 +31,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -60,9 +60,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -89,9 +89,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -120,9 +120,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -143,9 +143,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -166,9 +166,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_thermostat_bm3fb8dhYi/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_thermostat_bm3fb8dhYi/zap-generated/endpoint_config.h
index 050839e..92d754f 100644
--- a/zzz_generated/chef-rootnode_thermostat_bm3fb8dhYi/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_thermostat_bm3fb8dhYi/zap-generated/endpoint_config.h
@@ -125,7 +125,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -371,9 +371,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -555,13 +552,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_thermostat_bm3fb8dhYi/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_thermostat_bm3fb8dhYi/zap-generated/gen_config.h
index ca53a67..028a580 100644
--- a/zzz_generated/chef-rootnode_thermostat_bm3fb8dhYi/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_thermostat_bm3fb8dhYi/zap-generated/gen_config.h
@@ -34,7 +34,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -82,10 +82,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chef-rootnode_windowcovering_RLCxaGi9Yx/zap-generated/access.h b/zzz_generated/chef-rootnode_windowcovering_RLCxaGi9Yx/zap-generated/access.h
index 8ed2457..7b3ef8d 100644
--- a/zzz_generated/chef-rootnode_windowcovering_RLCxaGi9Yx/zap-generated/access.h
+++ b/zzz_generated/chef-rootnode_windowcovering_RLCxaGi9Yx/zap-generated/access.h
@@ -31,9 +31,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -50,9 +50,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -69,9 +69,9 @@
 #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -90,9 +90,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -103,9 +103,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -116,9 +116,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/chef-rootnode_windowcovering_RLCxaGi9Yx/zap-generated/endpoint_config.h b/zzz_generated/chef-rootnode_windowcovering_RLCxaGi9Yx/zap-generated/endpoint_config.h
index 2fca73f..7732cb3 100644
--- a/zzz_generated/chef-rootnode_windowcovering_RLCxaGi9Yx/zap-generated/endpoint_config.h
+++ b/zzz_generated/chef-rootnode_windowcovering_RLCxaGi9Yx/zap-generated/endpoint_config.h
@@ -105,7 +105,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -331,9 +331,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -517,13 +514,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 21, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/chef-rootnode_windowcovering_RLCxaGi9Yx/zap-generated/gen_config.h b/zzz_generated/chef-rootnode_windowcovering_RLCxaGi9Yx/zap-generated/gen_config.h
index 7bc5839..05df6bb 100644
--- a/zzz_generated/chef-rootnode_windowcovering_RLCxaGi9Yx/zap-generated/gen_config.h
+++ b/zzz_generated/chef-rootnode_windowcovering_RLCxaGi9Yx/zap-generated/gen_config.h
@@ -34,7 +34,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -77,10 +77,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
index aafc357..fb94745 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
+++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
@@ -45,7 +45,7 @@
 | Binding                                                             | 0x001E |
 | AccessControl                                                       | 0x001F |
 | Actions                                                             | 0x0025 |
-| Basic                                                               | 0x0028 |
+| BasicInformation                                                    | 0x0028 |
 | OtaSoftwareUpdateProvider                                           | 0x0029 |
 | OtaSoftwareUpdateRequestor                                          | 0x002A |
 | LocalizationConfiguration                                           | 0x002B |
@@ -1815,7 +1815,7 @@
 };
 
 /*----------------------------------------------------------------------------*\
-| Cluster Basic                                                       | 0x0028 |
+| Cluster BasicInformation                                            | 0x0028 |
 |------------------------------------------------------------------------------|
 | Commands:                                                           |        |
 | * MfgSpecificPing                                                   |   0x00 |
@@ -1857,10 +1857,11 @@
 /*
  * Command MfgSpecificPing
  */
-class BasicMfgSpecificPing : public ClusterCommand
+class BasicInformationMfgSpecificPing : public ClusterCommand
 {
 public:
-    BasicMfgSpecificPing(CredentialIssuerCommands * credsIssuerConfig) : ClusterCommand("mfg-specific-ping", credsIssuerConfig)
+    BasicInformationMfgSpecificPing(CredentialIssuerCommands * credsIssuerConfig) :
+        ClusterCommand("mfg-specific-ping", credsIssuerConfig)
     {
         ClusterCommand::AddArguments();
     }
@@ -1880,7 +1881,7 @@
     }
 
 private:
-    chip::app::Clusters::Basic::Commands::MfgSpecificPing::Type mRequest;
+    chip::app::Clusters::BasicInformation::Commands::MfgSpecificPing::Type mRequest;
 };
 
 /*----------------------------------------------------------------------------*\
@@ -8952,18 +8953,18 @@
 
     commands.Register(clusterName, clusterCommands);
 }
-void registerClusterBasic(Commands & commands, CredentialIssuerCommands * credsIssuerConfig)
+void registerClusterBasicInformation(Commands & commands, CredentialIssuerCommands * credsIssuerConfig)
 {
-    using namespace chip::app::Clusters::Basic;
+    using namespace chip::app::Clusters::BasicInformation;
 
-    const char * clusterName = "Basic";
+    const char * clusterName = "BasicInformation";
 
     commands_list clusterCommands = {
         //
         // Commands
         //
-        make_unique<ClusterCommand>(Id, credsIssuerConfig),   //
-        make_unique<BasicMfgSpecificPing>(credsIssuerConfig), //
+        make_unique<ClusterCommand>(Id, credsIssuerConfig),              //
+        make_unique<BasicInformationMfgSpecificPing>(credsIssuerConfig), //
         //
         // Attributes
         //
@@ -13500,7 +13501,7 @@
     registerClusterBinding(commands, credsIssuerConfig);
     registerClusterAccessControl(commands, credsIssuerConfig);
     registerClusterActions(commands, credsIssuerConfig);
-    registerClusterBasic(commands, credsIssuerConfig);
+    registerClusterBasicInformation(commands, credsIssuerConfig);
     registerClusterOtaSoftwareUpdateProvider(commands, credsIssuerConfig);
     registerClusterOtaSoftwareUpdateRequestor(commands, credsIssuerConfig);
     registerClusterLocalizationConfiguration(commands, credsIssuerConfig);
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp
index ac4bcac..75c9625 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp
+++ b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.cpp
@@ -377,7 +377,7 @@
     ComplexArgumentParser::Finalize(request.waterMark);
 }
 CHIP_ERROR ComplexArgumentParser::Setup(const char * label,
-                                        chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::Type & request,
+                                        chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::Type & request,
                                         Json::Value & value)
 {
     VerifyOrReturnError(value.isObject(), CHIP_ERROR_INVALID_ARGUMENT);
@@ -399,7 +399,7 @@
     return CHIP_NO_ERROR;
 }
 
-void ComplexArgumentParser::Finalize(chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::Type & request)
+void ComplexArgumentParser::Finalize(chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::Type & request)
 {
     ComplexArgumentParser::Finalize(request.caseSessionsPerFabric);
     ComplexArgumentParser::Finalize(request.subscriptionsPerFabric);
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h
index dacf0f2..c67a763 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h
+++ b/zzz_generated/chip-tool/zap-generated/cluster/ComplexArgumentParser.h
@@ -68,10 +68,10 @@
                         Json::Value & value);
 
 static void Finalize(chip::app::Clusters::ContentLauncher::Structs::BrandingInformation::Type & request);
-static CHIP_ERROR Setup(const char * label, chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::Type & request,
+static CHIP_ERROR Setup(const char * label, chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::Type & request,
                         Json::Value & value);
 
-static void Finalize(chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::Type & request);
+static void Finalize(chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::Type & request);
 static CHIP_ERROR Setup(const char * label, chip::app::Clusters::Channel::Structs::ChannelInfo::Type & request,
                         Json::Value & value);
 
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
index 5f6b65a..031a52a 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
+++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
@@ -377,8 +377,9 @@
 
     return CHIP_NO_ERROR;
 }
-CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType & value)
+CHIP_ERROR
+DataModelLogger::LogValue(const char * label, size_t indent,
+                          const chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     {
@@ -2608,7 +2609,8 @@
 
     return CHIP_NO_ERROR;
 }
-CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, const Basic::Events::StartUp::DecodableType & value)
+CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
+                                     const BasicInformation::Events::StartUp::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     {
@@ -2623,14 +2625,16 @@
 
     return CHIP_NO_ERROR;
 }
-CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, const Basic::Events::ShutDown::DecodableType & value)
+CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
+                                     const BasicInformation::Events::ShutDown::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     DataModelLogger::LogString(indent, "}");
 
     return CHIP_NO_ERROR;
 }
-CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent, const Basic::Events::Leave::DecodableType & value)
+CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
+                                     const BasicInformation::Events::Leave::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     {
@@ -2646,7 +2650,7 @@
     return CHIP_NO_ERROR;
 }
 CHIP_ERROR DataModelLogger::LogValue(const char * label, size_t indent,
-                                     const Basic::Events::ReachableChanged::DecodableType & value)
+                                     const BasicInformation::Events::ReachableChanged::DecodableType & value)
 {
     DataModelLogger::LogString(label, indent, "{");
     {
@@ -4796,130 +4800,130 @@
         }
         break;
     }
-    case Basic::Id: {
+    case BasicInformation::Id: {
         switch (path.mAttributeId)
         {
-        case Basic::Attributes::DataModelRevision::Id: {
+        case BasicInformation::Attributes::DataModelRevision::Id: {
             uint16_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("DataModelRevision", 1, value);
         }
-        case Basic::Attributes::VendorName::Id: {
+        case BasicInformation::Attributes::VendorName::Id: {
             chip::CharSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("VendorName", 1, value);
         }
-        case Basic::Attributes::VendorID::Id: {
+        case BasicInformation::Attributes::VendorID::Id: {
             chip::VendorId value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("VendorID", 1, value);
         }
-        case Basic::Attributes::ProductName::Id: {
+        case BasicInformation::Attributes::ProductName::Id: {
             chip::CharSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("ProductName", 1, value);
         }
-        case Basic::Attributes::ProductID::Id: {
+        case BasicInformation::Attributes::ProductID::Id: {
             uint16_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("ProductID", 1, value);
         }
-        case Basic::Attributes::NodeLabel::Id: {
+        case BasicInformation::Attributes::NodeLabel::Id: {
             chip::CharSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("NodeLabel", 1, value);
         }
-        case Basic::Attributes::Location::Id: {
+        case BasicInformation::Attributes::Location::Id: {
             chip::CharSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("Location", 1, value);
         }
-        case Basic::Attributes::HardwareVersion::Id: {
+        case BasicInformation::Attributes::HardwareVersion::Id: {
             uint16_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("HardwareVersion", 1, value);
         }
-        case Basic::Attributes::HardwareVersionString::Id: {
+        case BasicInformation::Attributes::HardwareVersionString::Id: {
             chip::CharSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("HardwareVersionString", 1, value);
         }
-        case Basic::Attributes::SoftwareVersion::Id: {
+        case BasicInformation::Attributes::SoftwareVersion::Id: {
             uint32_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("SoftwareVersion", 1, value);
         }
-        case Basic::Attributes::SoftwareVersionString::Id: {
+        case BasicInformation::Attributes::SoftwareVersionString::Id: {
             chip::CharSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("SoftwareVersionString", 1, value);
         }
-        case Basic::Attributes::ManufacturingDate::Id: {
+        case BasicInformation::Attributes::ManufacturingDate::Id: {
             chip::CharSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("ManufacturingDate", 1, value);
         }
-        case Basic::Attributes::PartNumber::Id: {
+        case BasicInformation::Attributes::PartNumber::Id: {
             chip::CharSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("PartNumber", 1, value);
         }
-        case Basic::Attributes::ProductURL::Id: {
+        case BasicInformation::Attributes::ProductURL::Id: {
             chip::CharSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("ProductURL", 1, value);
         }
-        case Basic::Attributes::ProductLabel::Id: {
+        case BasicInformation::Attributes::ProductLabel::Id: {
             chip::CharSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("ProductLabel", 1, value);
         }
-        case Basic::Attributes::SerialNumber::Id: {
+        case BasicInformation::Attributes::SerialNumber::Id: {
             chip::CharSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("SerialNumber", 1, value);
         }
-        case Basic::Attributes::LocalConfigDisabled::Id: {
+        case BasicInformation::Attributes::LocalConfigDisabled::Id: {
             bool value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("LocalConfigDisabled", 1, value);
         }
-        case Basic::Attributes::Reachable::Id: {
+        case BasicInformation::Attributes::Reachable::Id: {
             bool value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("Reachable", 1, value);
         }
-        case Basic::Attributes::UniqueID::Id: {
+        case BasicInformation::Attributes::UniqueID::Id: {
             chip::CharSpan value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("UniqueID", 1, value);
         }
-        case Basic::Attributes::CapabilityMinima::Id: {
-            chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType value;
+        case BasicInformation::Attributes::CapabilityMinima::Id: {
+            chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("CapabilityMinima", 1, value);
         }
-        case Basic::Attributes::GeneratedCommandList::Id: {
+        case BasicInformation::Attributes::GeneratedCommandList::Id: {
             chip::app::DataModel::DecodableList<chip::CommandId> value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("GeneratedCommandList", 1, value);
         }
-        case Basic::Attributes::AcceptedCommandList::Id: {
+        case BasicInformation::Attributes::AcceptedCommandList::Id: {
             chip::app::DataModel::DecodableList<chip::CommandId> value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("AcceptedCommandList", 1, value);
         }
-        case Basic::Attributes::AttributeList::Id: {
+        case BasicInformation::Attributes::AttributeList::Id: {
             chip::app::DataModel::DecodableList<chip::AttributeId> value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("AttributeList", 1, value);
         }
-        case Basic::Attributes::FeatureMap::Id: {
+        case BasicInformation::Attributes::FeatureMap::Id: {
             uint32_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("FeatureMap", 1, value);
         }
-        case Basic::Attributes::ClusterRevision::Id: {
+        case BasicInformation::Attributes::ClusterRevision::Id: {
             uint16_t value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("ClusterRevision", 1, value);
@@ -10515,26 +10519,26 @@
         }
         break;
     }
-    case Basic::Id: {
+    case BasicInformation::Id: {
         switch (header.mPath.mEventId)
         {
-        case Basic::Events::StartUp::Id: {
-            chip::app::Clusters::Basic::Events::StartUp::DecodableType value;
+        case BasicInformation::Events::StartUp::Id: {
+            chip::app::Clusters::BasicInformation::Events::StartUp::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("StartUp", 1, value);
         }
-        case Basic::Events::ShutDown::Id: {
-            chip::app::Clusters::Basic::Events::ShutDown::DecodableType value;
+        case BasicInformation::Events::ShutDown::Id: {
+            chip::app::Clusters::BasicInformation::Events::ShutDown::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("ShutDown", 1, value);
         }
-        case Basic::Events::Leave::Id: {
-            chip::app::Clusters::Basic::Events::Leave::DecodableType value;
+        case BasicInformation::Events::Leave::Id: {
+            chip::app::Clusters::BasicInformation::Events::Leave::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("Leave", 1, value);
         }
-        case Basic::Events::ReachableChanged::Id: {
-            chip::app::Clusters::Basic::Events::ReachableChanged::DecodableType value;
+        case BasicInformation::Events::ReachableChanged::Id: {
+            chip::app::Clusters::BasicInformation::Events::ReachableChanged::DecodableType value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("ReachableChanged", 1, value);
         }
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h
index a0b5f9a..26136d4 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h
+++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.h
@@ -44,7 +44,7 @@
 static CHIP_ERROR LogValue(const char * label, size_t indent,
                            const chip::app::Clusters::ContentLauncher::Structs::BrandingInformation::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType & value);
+                           const chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
                            const chip::app::Clusters::Channel::Structs::ChannelInfo::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
@@ -152,13 +152,13 @@
 static CHIP_ERROR LogValue(const char * label, size_t indent,
                            const chip::app::Clusters::Actions::Events::ActionFailed::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::Basic::Events::StartUp::DecodableType & value);
+                           const chip::app::Clusters::BasicInformation::Events::StartUp::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::Basic::Events::ShutDown::DecodableType & value);
+                           const chip::app::Clusters::BasicInformation::Events::ShutDown::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::Basic::Events::Leave::DecodableType & value);
+                           const chip::app::Clusters::BasicInformation::Events::Leave::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
-                           const chip::app::Clusters::Basic::Events::ReachableChanged::DecodableType & value);
+                           const chip::app::Clusters::BasicInformation::Events::ReachableChanged::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
                            const chip::app::Clusters::OtaSoftwareUpdateRequestor::Events::StateTransition::DecodableType & value);
 static CHIP_ERROR LogValue(const char * label, size_t indent,
diff --git a/zzz_generated/chip-tool/zap-generated/test/Commands.h b/zzz_generated/chip-tool/zap-generated/test/Commands.h
index 3ff9348..cc2a715 100644
--- a/zzz_generated/chip-tool/zap-generated/test/Commands.h
+++ b/zzz_generated/chip-tool/zap-generated/test/Commands.h
@@ -14069,76 +14069,76 @@
         }
         case 1: {
             LogStep(1, "TH reads the ClusterRevision from DUT");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ClusterRevision::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::ClusterRevision::Id, true, chip::NullOptional);
         }
         case 2: {
             LogStep(2, "TH reads the FeatureMap from DUT");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::FeatureMap::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::FeatureMap::Id,
+                                 true, chip::NullOptional);
         }
         case 3: {
             LogStep(3, "TH reads AttributeList from DUT");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::AttributeList::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::AttributeList::Id, true, chip::NullOptional);
         }
         case 4: {
             LogStep(4, "TH reads optional attribute(ManufacturingDate) in attributeList");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::AttributeList::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::AttributeList::Id, true, chip::NullOptional);
         }
         case 5: {
             LogStep(5, "TH reads optional attribute(PartNumber) in attributeList");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000c"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::AttributeList::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::AttributeList::Id, true, chip::NullOptional);
         }
         case 6: {
             LogStep(6, "TH reads optional attribute(ProductURL) in attributeList");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::AttributeList::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::AttributeList::Id, true, chip::NullOptional);
         }
         case 7: {
             LogStep(7, "TH reads optional attribute(ProductLabel) in attributeList");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000e"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::AttributeList::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::AttributeList::Id, true, chip::NullOptional);
         }
         case 8: {
             LogStep(8, "TH reads optional attribute(SerialNumber) in attributeList");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::AttributeList::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::AttributeList::Id, true, chip::NullOptional);
         }
         case 9: {
             LogStep(9, "TH reads optional attribute(LocalConfigDisabled) in attributeList");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::AttributeList::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::AttributeList::Id, true, chip::NullOptional);
         }
         case 10: {
             LogStep(10, "TH reads optional attribute(Reachable) in attributeList");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::AttributeList::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::AttributeList::Id, true, chip::NullOptional);
         }
         case 11: {
             LogStep(11, "TH reads optional attribute(UniqueID) in attributeList");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::AttributeList::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::AttributeList::Id, true, chip::NullOptional);
         }
         case 12: {
             LogStep(12, "TH1 reads AcceptedCommandList from DUT");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::AcceptedCommandList::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::AcceptedCommandList::Id, true, chip::NullOptional);
         }
         case 13: {
             LogStep(13, "TH1 reads GeneratedCommandList from DUT");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::GeneratedCommandList::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::GeneratedCommandList::Id, true, chip::NullOptional);
         }
         }
         return CHIP_NO_ERROR;
@@ -14253,7 +14253,7 @@
     chip::CharSpan SerialNumberValue;
     char * UniqueIDValueBuffer = nullptr;
     chip::CharSpan UniqueIDValue;
-    chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType CapabilityMinimaValue;
+    chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::DecodableType CapabilityMinimaValue;
 
     chip::EndpointId GetEndpoint(chip::EndpointId endpoint) { return mEndpoint.HasValue() ? mEndpoint.Value() : endpoint; }
 
@@ -14771,7 +14771,7 @@
         case 65:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType value;
+                chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
                 CapabilityMinimaValue = value;
             }
@@ -14782,7 +14782,7 @@
         case 67:
             VerifyOrReturn(CheckValue("status", chip::to_underlying(status.mStatus), 0));
             {
-                chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::DecodableType value;
+                chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::DecodableType value;
                 VerifyOrReturn(CheckDecodeValue(chip::app::DataModel::Decode(*data, value)));
             }
             break;
@@ -14821,8 +14821,8 @@
         case 2: {
             LogStep(2, "TH reads DataModelRevision from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::DataModelRevision::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::DataModelRevision::Id, true, chip::NullOptional);
         }
         case 3: {
             LogStep(3, "TH writes DataModelRevision from the DUT.");
@@ -14830,20 +14830,21 @@
             ListFreer listFreer;
             uint16_t value;
             value = 4388U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::DataModelRevision::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::DataModelRevision::Id, value, chip::NullOptional,
+                                  chip::NullOptional);
         }
         case 4: {
             LogStep(4, "TH reads DataModelRevision from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0000"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::DataModelRevision::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::DataModelRevision::Id, true, chip::NullOptional);
         }
         case 5: {
             LogStep(5, "TH reads VendorName from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::VendorName::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::VendorName::Id,
+                                 true, chip::NullOptional);
         }
         case 6: {
             LogStep(6, "TH writes VendorName from the DUT.");
@@ -14851,20 +14852,20 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("samplegarbage: not in length on purpose", 6);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::VendorName::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::VendorName::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 7: {
             LogStep(7, "TH reads VendorName from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::VendorName::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::VendorName::Id,
+                                 true, chip::NullOptional);
         }
         case 8: {
             LogStep(8, "TH reads VendorID from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::VendorID::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::VendorID::Id,
+                                 true, chip::NullOptional);
         }
         case 9: {
             LogStep(9, "Verify that VendorID matches the value assigned to this manufacturer");
@@ -14882,20 +14883,20 @@
             ListFreer listFreer;
             chip::VendorId value;
             value = static_cast<chip::VendorId>(17);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::VendorID::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::VendorID::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 11: {
             LogStep(11, "TH reads VendorID from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0002"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::VendorID::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::VendorID::Id,
+                                 true, chip::NullOptional);
         }
         case 12: {
             LogStep(12, "TH reads ProductName from the DUT");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductName::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::ProductName::Id, true, chip::NullOptional);
         }
         case 13: {
             LogStep(13, "TH writes ProductName from the DUT.");
@@ -14903,20 +14904,20 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("newproductgarbage: not in length on purpose", 10);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductName::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::ProductName::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 14: {
             LogStep(14, "TH reads ProductName from the DUT");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0003"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductName::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::ProductName::Id, true, chip::NullOptional);
         }
         case 15: {
             LogStep(15, "TH reads ProductID from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductID::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::ProductID::Id,
+                                 true, chip::NullOptional);
         }
         case 16: {
             LogStep(16, "TH writes ProductID from the DUT.");
@@ -14924,20 +14925,20 @@
             ListFreer listFreer;
             uint16_t value;
             value = 17697U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductID::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::ProductID::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 17: {
             LogStep(17, "TH reads ProductID from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0004"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductID::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::ProductID::Id,
+                                 true, chip::NullOptional);
         }
         case 18: {
             LogStep(18, "TH reads NodeLabel from the DUT");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 19: {
             LogStep(19, "TH writes NodeLabel from the DUT.");
@@ -14945,20 +14946,20 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("newnodegarbage: not in length on purpose", 7);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 20: {
             LogStep(20, "TH reads NodeLabel from the DUT");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 21: {
             LogStep(21, "TH reads Location from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Location::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::Location::Id,
+                                 true, chip::NullOptional);
         }
         case 22: {
             LogStep(22, "Verify that the Location is same as CountryCode value saved from step1");
@@ -14976,20 +14977,20 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("ingarbage: not in length on purpose", 2);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Location::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::Location::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 24: {
             LogStep(24, "TH reads Location from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0006"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Location::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::Location::Id,
+                                 true, chip::NullOptional);
         }
         case 25: {
             LogStep(25, "TH reads HardwareVersion from the DUT");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersion::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::HardwareVersion::Id, true, chip::NullOptional);
         }
         case 26: {
             LogStep(26, "TH writes HardwareVersion from the DUT.");
@@ -14997,20 +14998,20 @@
             ListFreer listFreer;
             uint16_t value;
             value = 17713U;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersion::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::HardwareVersion::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 27: {
             LogStep(27, "TH reads HardwareVersion from the DUT");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0007"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersion::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::HardwareVersion::Id, true, chip::NullOptional);
         }
         case 28: {
             LogStep(28, "TH reads HardwareVersionString from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersionString::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::HardwareVersionString::Id, true, chip::NullOptional);
         }
         case 29: {
             LogStep(29, "TH writes HardwareVersionString from the DUT.");
@@ -15018,20 +15019,21 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("newhardwareversiongarbage: not in length on purpose", 18);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersionString::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::HardwareVersionString::Id, value, chip::NullOptional,
+                                  chip::NullOptional);
         }
         case 30: {
             LogStep(30, "TH reads HardwareVersionString from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0008"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersionString::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::HardwareVersionString::Id, true, chip::NullOptional);
         }
         case 31: {
             LogStep(31, "TH reads SoftwareVersion from the DUT");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersion::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::SoftwareVersion::Id, true, chip::NullOptional);
         }
         case 32: {
             LogStep(32,
@@ -15051,20 +15053,20 @@
             ListFreer listFreer;
             uint32_t value;
             value = 33299UL;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersion::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::SoftwareVersion::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 34: {
             LogStep(34, "TH reads SoftwareVersion from the DUT");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0009"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersion::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::SoftwareVersion::Id, true, chip::NullOptional);
         }
         case 35: {
             LogStep(35, "TH reads SoftwareVersionString from the DUT");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000a"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersionString::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::SoftwareVersionString::Id, true, chip::NullOptional);
         }
         case 36: {
             LogStep(36, "TH writes SoftwareVersionString from the DUT.");
@@ -15072,20 +15074,21 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("1.0garbage: not in length on purpose", 3);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersionString::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::SoftwareVersionString::Id, value, chip::NullOptional,
+                                  chip::NullOptional);
         }
         case 37: {
             LogStep(37, "TH reads SoftwareVersionString from the DUT");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000a"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersionString::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::SoftwareVersionString::Id, true, chip::NullOptional);
         }
         case 38: {
             LogStep(38, "TH reads ManufacturingDate from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ManufacturingDate::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::ManufacturingDate::Id, true, chip::NullOptional);
         }
         case 39: {
             LogStep(39, "Verify if the first 8 characters specify date according to ISO 8601, i.e, YYYYMMDD");
@@ -15103,20 +15106,21 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("20210814789452INgarbage: not in length on purpose", 16);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ManufacturingDate::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::ManufacturingDate::Id, value, chip::NullOptional,
+                                  chip::NullOptional);
         }
         case 41: {
             LogStep(41, "TH reads ManufacturingDate from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000b"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ManufacturingDate::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::ManufacturingDate::Id, true, chip::NullOptional);
         }
         case 42: {
             LogStep(42, "TH reads PartNumber from the DUT");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000c"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::PartNumber::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::PartNumber::Id,
+                                 true, chip::NullOptional);
         }
         case 43: {
             LogStep(43, "TH writes PartNumber from the DUT.");
@@ -15124,20 +15128,20 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("newpartgarbage: not in length on purpose", 7);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::PartNumber::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::PartNumber::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 44: {
             LogStep(44, "TH reads PartNumber from the DUT");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000c"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::PartNumber::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::PartNumber::Id,
+                                 true, chip::NullOptional);
         }
         case 45: {
             LogStep(45, "TH reads ProductURL from the DUT");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductURL::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::ProductURL::Id,
+                                 true, chip::NullOptional);
         }
         case 46: {
             LogStep(46,
@@ -15157,20 +15161,20 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("https://www.example.comgarbage: not in length on purpose", 23);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductURL::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::ProductURL::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 48: {
             LogStep(48, "TH reads ProductURL from the DUT");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000d"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductURL::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::ProductURL::Id,
+                                 true, chip::NullOptional);
         }
         case 49: {
             LogStep(49, "TH reads ProductLabel from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000e"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::ProductLabel::Id, true, chip::NullOptional);
         }
         case 50: {
             LogStep(50, "Verify that it does not include the name of the vendor as defined within the VendorName attribute");
@@ -15188,20 +15192,20 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("newproductlabelgarbage: not in length on purpose", 15);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::ProductLabel::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 52: {
             LogStep(52, "TH reads ProductLabel from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000e"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::ProductLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::ProductLabel::Id, true, chip::NullOptional);
         }
         case 53: {
             LogStep(53, "TH reads SerialNumber from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SerialNumber::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::SerialNumber::Id, true, chip::NullOptional);
         }
         case 54: {
             LogStep(54, "TH writes SerialNumber from the DUT.");
@@ -15209,20 +15213,20 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("newserialnumbergarbage: not in length on purpose", 15);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SerialNumber::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::SerialNumber::Id, value, chip::NullOptional, chip::NullOptional);
         }
         case 55: {
             LogStep(55, "TH reads SerialNumber from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A000f"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::SerialNumber::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::SerialNumber::Id, true, chip::NullOptional);
         }
         case 56: {
             LogStep(56, "TH reads LocalConfigDisabled from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::LocalConfigDisabled::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::LocalConfigDisabled::Id, true, chip::NullOptional);
         }
         case 57: {
             LogStep(57, "TH sets LocalConfigDisabled to True");
@@ -15230,20 +15234,21 @@
             ListFreer listFreer;
             bool value;
             value = true;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::LocalConfigDisabled::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::LocalConfigDisabled::Id, value, chip::NullOptional,
+                                  chip::NullOptional);
         }
         case 58: {
             LogStep(58, "TH reads LocalConfigDisabled from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0010"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::LocalConfigDisabled::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::LocalConfigDisabled::Id, true, chip::NullOptional);
         }
         case 59: {
             LogStep(59, "TH reads Reachable from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Reachable::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::Reachable::Id,
+                                 true, chip::NullOptional);
         }
         case 60: {
             LogStep(60, "TH sends Write request message to DUT to change value of Reachable to false");
@@ -15251,20 +15256,20 @@
             ListFreer listFreer;
             bool value;
             value = false;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Reachable::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::Reachable::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 61: {
             LogStep(61, "TH reads Reachable from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0011"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Reachable::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::Reachable::Id,
+                                 true, chip::NullOptional);
         }
         case 62: {
             LogStep(62, "TH reads UniqueID from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::UniqueID::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::UniqueID::Id,
+                                 true, chip::NullOptional);
         }
         case 63: {
             LogStep(63, "TH writes UniqueID from the DUT.");
@@ -15272,38 +15277,39 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("newidgarbage: not in length on purpose", 5);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::UniqueID::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::UniqueID::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 64: {
             LogStep(64, "TH reads UniqueID from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0012"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::UniqueID::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::UniqueID::Id,
+                                 true, chip::NullOptional);
         }
         case 65: {
             LogStep(65, "TH reads CapabilityMinima attribute from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::CapabilityMinima::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::CapabilityMinima::Id, true, chip::NullOptional);
         }
         case 66: {
             LogStep(66, "TH writes CapabilityMinima from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
             ListFreer listFreer;
-            chip::app::Clusters::Basic::Structs::CapabilityMinimaStruct::Type value;
+            chip::app::Clusters::BasicInformation::Structs::CapabilityMinimaStruct::Type value;
 
             value.caseSessionsPerFabric  = 4U;
             value.subscriptionsPerFabric = 4U;
 
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::CapabilityMinima::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::CapabilityMinima::Id, value, chip::NullOptional,
+                                  chip::NullOptional);
         }
         case 67: {
             LogStep(67, "TH reads CapabilityMinima attribute from the DUT.");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0013"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::CapabilityMinima::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::CapabilityMinima::Id, true, chip::NullOptional);
         }
         }
         return CHIP_NO_ERROR;
@@ -50247,8 +50253,8 @@
         }
         case 1: {
             LogStep(1, "Read an attribute");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::DataModelRevision::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::DataModelRevision::Id, true, chip::NullOptional);
         }
         case 2: {
             LogStep(2, "Reboot the server");
@@ -50267,8 +50273,8 @@
         }
         case 4: {
             LogStep(4, "Read an attribute again");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::DataModelRevision::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::DataModelRevision::Id, true, chip::NullOptional);
         }
         case 5: {
             LogStep(5, "Re-get our session, but without expiring sesssions");
@@ -50281,8 +50287,8 @@
         }
         case 6: {
             LogStep(6, "Read an attribute a third time");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::DataModelRevision::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::DataModelRevision::Id, true, chip::NullOptional);
         }
         }
         return CHIP_NO_ERROR;
@@ -61478,70 +61484,71 @@
         }
         case 1: {
             LogStep(1, "Read location");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Location::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::Location::Id,
+                                 true, chip::NullOptional);
         }
         case 2: {
             LogStep(2, "Write location");
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("USgarbage: not in length on purpose", 2);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Location::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::Location::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 3: {
             LogStep(3, "Read back location");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Location::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::Location::Id,
+                                 true, chip::NullOptional);
         }
         case 4: {
             LogStep(4, "Restore initial location value");
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("XXgarbage: not in length on purpose", 2);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::Location::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::Location::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 5: {
             LogStep(5, "Read AttributeList value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::AttributeList::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::AttributeList::Id, true, chip::NullOptional);
         }
         case 6: {
             LogStep(6, "Read NodeLabel");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 7: {
             LogStep(7, "Write NodeLabel");
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("My nodegarbage: not in length on purpose", 7);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 8: {
             LogStep(8, "Read back NodeLabel");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 9: {
             LogStep(9, "Read LocalConfigDisabled");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::LocalConfigDisabled::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::LocalConfigDisabled::Id, true, chip::NullOptional);
         }
         case 10: {
             LogStep(10, "Write LocalConfigDisabled");
             ListFreer listFreer;
             bool value;
             value = true;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::LocalConfigDisabled::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::LocalConfigDisabled::Id, value, chip::NullOptional,
+                                  chip::NullOptional);
         }
         case 11: {
             LogStep(11, "Read back LocalConfigDisabled");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::LocalConfigDisabled::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::LocalConfigDisabled::Id, true, chip::NullOptional);
         }
         case 12: {
             LogStep(12, "Reboot the device");
@@ -61558,29 +61565,30 @@
         }
         case 14: {
             LogStep(14, "Read back NodeLabel after reboot");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 15: {
             LogStep(15, "Restore initial NodeLabel value");
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("garbage: not in length on purpose", 0);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 16: {
             LogStep(16, "Read back LocalConfigDisabled after reboot");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::LocalConfigDisabled::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                 BasicInformation::Attributes::LocalConfigDisabled::Id, true, chip::NullOptional);
         }
         case 17: {
             LogStep(17, "Restore initial LocalConfigDisabled value");
             ListFreer listFreer;
             bool value;
             value = false;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::LocalConfigDisabled::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id,
+                                  BasicInformation::Attributes::LocalConfigDisabled::Id, value, chip::NullOptional,
+                                  chip::NullOptional);
         }
         }
         return CHIP_NO_ERROR;
@@ -64224,8 +64232,8 @@
         }
         case 4: {
             LogStep(4, "Reads NodeLabel mandatory attribute of target device");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 5: {
             LogStep(5, "Invoke AddTrustedRootCertificate without fail-safe");
@@ -66341,29 +66349,29 @@
         }
         case 14: {
             LogStep(14, "read the mandatory attribute: NodeLabel from alpha");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 15: {
             LogStep(15, "write the mandatory attribute NodeLabel from beta");
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("written from betagarbage: not in length on purpose", 17);
-            return WriteAttribute(kIdentityBeta, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityBeta, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 16: {
             LogStep(16, "read the mandatory attribute: NodeLabel from gamma");
-            return ReadAttribute(kIdentityGamma, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityGamma, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 17: {
             LogStep(17, "write the mandatory attribute NodeLabel back to default");
             ListFreer listFreer;
             chip::CharSpan value;
             value = readFromAlpha;
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         }
         return CHIP_NO_ERROR;
@@ -77549,15 +77557,16 @@
         }
         case 7: {
             LogStep(7, "Read initial Attribute value");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 8: {
             LogStep(8, "Group Write Attribute");
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("xyzzygarbage: not in length on purpose", 5);
-            return WriteGroupAttribute(kIdentityAlpha, 258, Basic::Id, Basic::Attributes::NodeLabel::Id, value, chip::NullOptional);
+            return WriteGroupAttribute(kIdentityAlpha, 258, BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                       value, chip::NullOptional);
         }
         case 9: {
             LogStep(9, "Wait for write 1");
@@ -77568,15 +77577,16 @@
         }
         case 10: {
             LogStep(10, "Read back Attribute");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 11: {
             LogStep(11, "Restore initial Attribute value");
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("garbage: not in length on purpose", 0);
-            return WriteGroupAttribute(kIdentityAlpha, 258, Basic::Id, Basic::Attributes::NodeLabel::Id, value, chip::NullOptional);
+            return WriteGroupAttribute(kIdentityAlpha, 258, BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                       value, chip::NullOptional);
         }
         case 12: {
             LogStep(12, "Wait for write 2");
@@ -77587,8 +77597,8 @@
         }
         case 13: {
             LogStep(13, "Read back Attribute");
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 14: {
             LogStep(14, "Check on/off attribute value is false for endpoint 1");
@@ -77808,15 +77818,16 @@
         }
         case 29: {
             LogStep(29, "Read initial Attribute value for gamma");
-            return ReadAttribute(kIdentityGamma, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityGamma, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 30: {
             LogStep(30, "Group Write Attribute for gamma");
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("xyzzygarbage: not in length on purpose", 5);
-            return WriteGroupAttribute(kIdentityGamma, 258, Basic::Id, Basic::Attributes::NodeLabel::Id, value, chip::NullOptional);
+            return WriteGroupAttribute(kIdentityGamma, 258, BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                       value, chip::NullOptional);
         }
         case 31: {
             LogStep(31, "Wait for write 1 for gamma");
@@ -77827,15 +77838,16 @@
         }
         case 32: {
             LogStep(32, "Read back Attribute for gamma");
-            return ReadAttribute(kIdentityGamma, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityGamma, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 33: {
             LogStep(33, "Restore initial Attribute value for gamma");
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("garbage: not in length on purpose", 0);
-            return WriteGroupAttribute(kIdentityGamma, 258, Basic::Id, Basic::Attributes::NodeLabel::Id, value, chip::NullOptional);
+            return WriteGroupAttribute(kIdentityGamma, 258, BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                       value, chip::NullOptional);
         }
         case 34: {
             LogStep(34, "Wait for write 2 for gamma");
@@ -77846,8 +77858,8 @@
         }
         case 35: {
             LogStep(35, "Read back Attribute for gamma");
-            return ReadAttribute(kIdentityGamma, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityGamma, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 36: {
             LogStep(36, "Check on/off attribute value is false for endpoint 1 for gamma");
@@ -88560,8 +88572,8 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("chiptestgarbage: not in length on purpose", 8);
-            return WriteAttribute(kIdentityBeta, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityBeta, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 12: {
             LogStep(12, "TH_CR2 reads the Basic Information Clusters NodeLabel mandatory attribute of DUT_CE");
@@ -88933,8 +88945,8 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("chiptestgarbage: not in length on purpose", 8);
-            return WriteAttribute(kIdentityBeta, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityBeta, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 12: {
             LogStep(12, "TH_CR2 reads the Basic Information Clusters NodeLabel mandatory attribute of DUT_CE");
@@ -89818,14 +89830,14 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("chiptestgarbage: not in length on purpose", 8);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 6: {
             LogStep(6, "TH_CR1 reads the Basic Information Clusters NodeLabel mandatory attribute of DUT_CE");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 7: {
             LogStep(7, "TH_CR2 starts a commissioning process with DUT_CE");
@@ -89872,14 +89884,14 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("chiptest1garbage: not in length on purpose", 9);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 13: {
             LogStep(13, "TH_CR1 reads the Basic Information Clusters NodeLabel mandatory attribute of DUT_CE");
             VerifyOrDo(!ShouldSkip("OPCREDS.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 14: {
             LogStep(14, "TH_CR2 writes the Basic Information Clusters NodeLabel mandatory attribute of DUT_CE");
@@ -89887,14 +89899,14 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("chiptest2garbage: not in length on purpose", 9);
-            return WriteAttribute(kIdentityBeta, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityBeta, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 15: {
             LogStep(15, "TH_CR2 reads the Basic Information Clusters NodeLabel mandatory attribute of DUT_CE");
             VerifyOrDo(!ShouldSkip("OPCREDS.S.A0001"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityBeta, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityBeta, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 16: {
             LogStep(16, "TH_CR2 opens a commissioning window on DUT_CE using ECM");
@@ -90206,14 +90218,14 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("chiptestgarbage: not in length on purpose", 8);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 6: {
             LogStep(6, "TH_CR1 reads the Basic Information Clusters NodeLabel mandatory attribute of DUT_CE");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 7: {
             LogStep(7, "TH_CR2 starts a commissioning process with DUT_CE");
@@ -90260,14 +90272,14 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("chiptestgarbage: not in length on purpose", 8);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 13: {
             LogStep(13, "TH_CR1 reads the Basic Information Clusters NodeLabel mandatory attribute of DUT_CE");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 14: {
             LogStep(14, "TH_CR2 writes the Basic Information Clusters NodeLabel mandatory attribute of DUT_CE");
@@ -90275,14 +90287,14 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("chiptestgarbage: not in length on purpose", 8);
-            return WriteAttribute(kIdentityBeta, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityBeta, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 15: {
             LogStep(15, "TH_CR2 reads the Basic Information Clusters NodeLabel mandatory attribute of DUT_CE");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityBeta, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityBeta, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 16: {
             LogStep(16, "TH_CR2 opens a commissioning window on DUT_CE using BCM");
@@ -90613,14 +90625,14 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("chiptestgarbage: not in length on purpose", 8);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 12: {
             LogStep(12, "TH_CR1 read the mandatory attribute NodeLabel of DUT_CE");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 13: {
             LogStep(13, "TH_CR1 opens a new commissioning window on DUT_CE using wrong PakeVerifier value using ECM");
@@ -90979,14 +90991,14 @@
             ListFreer listFreer;
             chip::CharSpan value;
             value = chip::Span<const char>("chiptestgarbage: not in length on purpose", 8);
-            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, value,
-                                  chip::NullOptional, chip::NullOptional);
+            return WriteAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                  value, chip::NullOptional, chip::NullOptional);
         }
         case 12: {
             LogStep(12, "TH_CR1 read the mandatory attribute NodeLabel of DUT_CE");
             VerifyOrDo(!ShouldSkip("BINFO.S.A0005"), return ContinueOnChipMainThread(CHIP_NO_ERROR));
-            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id, true,
-                                 chip::NullOptional);
+            return ReadAttribute(kIdentityAlpha, GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id,
+                                 true, chip::NullOptional);
         }
         case 13: {
             LogStep(13, "TH_CR1 opens a commissioning window on DUT_CE");
diff --git a/zzz_generated/contact-sensor-app/zap-generated/access.h b/zzz_generated/contact-sensor-app/zap-generated/access.h
index 0386dfe..1ef3846 100644
--- a/zzz_generated/contact-sensor-app/zap-generated/access.h
+++ b/zzz_generated/contact-sensor-app/zap-generated/access.h
@@ -34,9 +34,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -56,9 +56,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -78,9 +78,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -99,9 +99,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -112,9 +112,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -125,9 +125,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/contact-sensor-app/zap-generated/endpoint_config.h b/zzz_generated/contact-sensor-app/zap-generated/endpoint_config.h
index 30cc260..4fa6a18 100644
--- a/zzz_generated/contact-sensor-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/contact-sensor-app/zap-generated/endpoint_config.h
@@ -121,7 +121,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -477,9 +477,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -651,13 +648,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(16), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/contact-sensor-app/zap-generated/gen_config.h b/zzz_generated/contact-sensor-app/zap-generated/gen_config.h
index 019b5b8..654d23f 100644
--- a/zzz_generated/contact-sensor-app/zap-generated/gen_config.h
+++ b/zzz_generated/contact-sensor-app/zap-generated/gen_config.h
@@ -33,7 +33,7 @@
 #define EMBER_AF_GROUPS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -76,10 +76,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h
index 683602c..93ba75c 100644
--- a/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h
+++ b/zzz_generated/controller-clusters/zap-generated/CHIPClientCallbacks.h
@@ -121,12 +121,12 @@
                                                                 const chip::app::DataModel::DecodableList<chip::CommandId> & data);
 typedef void (*ActionsAttributeListListAttributeCallback)(void * context,
                                                           const chip::app::DataModel::DecodableList<chip::AttributeId> & data);
-typedef void (*BasicGeneratedCommandListListAttributeCallback)(void * context,
-                                                               const chip::app::DataModel::DecodableList<chip::CommandId> & data);
-typedef void (*BasicAcceptedCommandListListAttributeCallback)(void * context,
-                                                              const chip::app::DataModel::DecodableList<chip::CommandId> & data);
-typedef void (*BasicAttributeListListAttributeCallback)(void * context,
-                                                        const chip::app::DataModel::DecodableList<chip::AttributeId> & data);
+typedef void (*BasicInformationGeneratedCommandListListAttributeCallback)(
+    void * context, const chip::app::DataModel::DecodableList<chip::CommandId> & data);
+typedef void (*BasicInformationAcceptedCommandListListAttributeCallback)(
+    void * context, const chip::app::DataModel::DecodableList<chip::CommandId> & data);
+typedef void (*BasicInformationAttributeListListAttributeCallback)(
+    void * context, const chip::app::DataModel::DecodableList<chip::AttributeId> & data);
 typedef void (*OtaSoftwareUpdateProviderAttributeListListAttributeCallback)(
     void * context, const chip::app::DataModel::DecodableList<chip::AttributeId> & data);
 typedef void (*OtaSoftwareUpdateRequestorDefaultOtaProvidersListAttributeCallback)(
diff --git a/zzz_generated/controller-clusters/zap-generated/CHIPClusters.h b/zzz_generated/controller-clusters/zap-generated/CHIPClusters.h
index 14e8616..90f78f5 100644
--- a/zzz_generated/controller-clusters/zap-generated/CHIPClusters.h
+++ b/zzz_generated/controller-clusters/zap-generated/CHIPClusters.h
@@ -130,13 +130,13 @@
     ~ActionsCluster() {}
 };
 
-class DLL_EXPORT BasicCluster : public ClusterBase
+class DLL_EXPORT BasicInformationCluster : public ClusterBase
 {
 public:
-    BasicCluster(Messaging::ExchangeManager & exchangeManager, const SessionHandle & session, EndpointId endpoint) :
-        ClusterBase(exchangeManager, session, app::Clusters::Basic::Id, endpoint)
+    BasicInformationCluster(Messaging::ExchangeManager & exchangeManager, const SessionHandle & session, EndpointId endpoint) :
+        ClusterBase(exchangeManager, session, app::Clusters::BasicInformation::Id, endpoint)
     {}
-    ~BasicCluster() {}
+    ~BasicInformationCluster() {}
 };
 
 class DLL_EXPORT OtaSoftwareUpdateProviderCluster : public ClusterBase
diff --git a/zzz_generated/controller-clusters/zap-generated/endpoint_config.h b/zzz_generated/controller-clusters/zap-generated/endpoint_config.h
index 3fc3769..c134aad 100644
--- a/zzz_generated/controller-clusters/zap-generated/endpoint_config.h
+++ b/zzz_generated/controller-clusters/zap-generated/endpoint_config.h
@@ -205,7 +205,7 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 1, Cluster: Basic (client) */ \
+      /* Endpoint: 1, Cluster: Basic Information (client) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(0), \
       .attributeCount = 0, \
diff --git a/zzz_generated/controller-clusters/zap-generated/gen_config.h b/zzz_generated/controller-clusters/zap-generated/gen_config.h
index 1e3b379..055a70e 100644
--- a/zzz_generated/controller-clusters/zap-generated/gen_config.h
+++ b/zzz_generated/controller-clusters/zap-generated/gen_config.h
@@ -40,7 +40,7 @@
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACTIONS_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
@@ -141,9 +141,9 @@
 #define ZCL_USING_ACTIONS_CLUSTER_CLIENT
 #define EMBER_AF_PLUGIN_ACTIONS_CLIENT
 
-// Use this macro to check if the client side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_CLIENT
-#define EMBER_AF_PLUGIN_BASIC_CLIENT
+// Use this macro to check if the client side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_CLIENT
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_CLIENT
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h
index ff16d0a..86ad518 100644
--- a/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h
+++ b/zzz_generated/darwin-framework-tool/zap-generated/cluster/Commands.h
@@ -47,7 +47,7 @@
 | Binding                                                             | 0x001E |
 | AccessControl                                                       | 0x001F |
 | Actions                                                             | 0x0025 |
-| Basic                                                               | 0x0028 |
+| BasicInformation                                                    | 0x0028 |
 | OtaSoftwareUpdateProvider                                           | 0x0029 |
 | OtaSoftwareUpdateRequestor                                          | 0x002A |
 | LocalizationConfiguration                                           | 0x002B |
@@ -10925,7 +10925,7 @@
 };
 
 /*----------------------------------------------------------------------------*\
-| Cluster Basic                                                       | 0x0028 |
+| Cluster BasicInformation                                            | 0x0028 |
 |------------------------------------------------------------------------------|
 | Commands:                                                           |        |
 | * MfgSpecificPing                                                   |   0x00 |
@@ -10967,9 +10967,9 @@
 /*
  * Command MfgSpecificPing
  */
-class BasicMfgSpecificPing : public ClusterCommand {
+class BasicInformationMfgSpecificPing : public ClusterCommand {
 public:
-    BasicMfgSpecificPing()
+    BasicInformationMfgSpecificPing()
         : ClusterCommand("mfg-specific-ping")
     {
         ClusterCommand::AddArguments();
@@ -10980,8 +10980,10 @@
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) command (0x00000000) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
-        __auto_type * params = [[MTRBasicClusterMfgSpecificPingParams alloc] init];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
+        __auto_type * params = [[MTRBasicInformationClusterMfgSpecificPingParams alloc] init];
         params.timedInvokeTimeoutMs
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
         uint16_t repeatCount = mRepeatCount.ValueOr(1);
@@ -11008,25 +11010,27 @@
 /*
  * Attribute DataModelRevision
  */
-class ReadBasicDataModelRevision : public ReadAttribute {
+class ReadBasicInformationDataModelRevision : public ReadAttribute {
 public:
-    ReadBasicDataModelRevision()
+    ReadBasicInformationDataModelRevision()
         : ReadAttribute("data-model-revision")
     {
     }
 
-    ~ReadBasicDataModelRevision() {}
+    ~ReadBasicInformationDataModelRevision() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x00000000) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeDataModelRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.DataModelRevision response %@", [value description]);
+            NSLog(@"BasicInformation.DataModelRevision response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic DataModelRevision read Error", error);
+                LogNSError("BasicInformation DataModelRevision read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -11034,20 +11038,22 @@
     }
 };
 
-class SubscribeAttributeBasicDataModelRevision : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationDataModelRevision : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicDataModelRevision()
+    SubscribeAttributeBasicInformationDataModelRevision()
         : SubscribeAttribute("data-model-revision")
     {
     }
 
-    ~SubscribeAttributeBasicDataModelRevision() {}
+    ~SubscribeAttributeBasicInformationDataModelRevision() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x00000000) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -11063,7 +11069,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.DataModelRevision response %@", [value description]);
+                NSLog(@"BasicInformation.DataModelRevision response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -11074,25 +11080,27 @@
 /*
  * Attribute VendorName
  */
-class ReadBasicVendorName : public ReadAttribute {
+class ReadBasicInformationVendorName : public ReadAttribute {
 public:
-    ReadBasicVendorName()
+    ReadBasicInformationVendorName()
         : ReadAttribute("vendor-name")
     {
     }
 
-    ~ReadBasicVendorName() {}
+    ~ReadBasicInformationVendorName() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x00000001) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeVendorNameWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.VendorName response %@", [value description]);
+            NSLog(@"BasicInformation.VendorName response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic VendorName read Error", error);
+                LogNSError("BasicInformation VendorName read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -11100,20 +11108,22 @@
     }
 };
 
-class SubscribeAttributeBasicVendorName : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationVendorName : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicVendorName()
+    SubscribeAttributeBasicInformationVendorName()
         : SubscribeAttribute("vendor-name")
     {
     }
 
-    ~SubscribeAttributeBasicVendorName() {}
+    ~SubscribeAttributeBasicInformationVendorName() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x00000001) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -11129,7 +11139,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.VendorName response %@", [value description]);
+                NSLog(@"BasicInformation.VendorName response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -11140,25 +11150,27 @@
 /*
  * Attribute VendorID
  */
-class ReadBasicVendorID : public ReadAttribute {
+class ReadBasicInformationVendorID : public ReadAttribute {
 public:
-    ReadBasicVendorID()
+    ReadBasicInformationVendorID()
         : ReadAttribute("vendor-id")
     {
     }
 
-    ~ReadBasicVendorID() {}
+    ~ReadBasicInformationVendorID() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x00000002) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeVendorIDWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.VendorID response %@", [value description]);
+            NSLog(@"BasicInformation.VendorID response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic VendorID read Error", error);
+                LogNSError("BasicInformation VendorID read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -11166,20 +11178,22 @@
     }
 };
 
-class SubscribeAttributeBasicVendorID : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationVendorID : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicVendorID()
+    SubscribeAttributeBasicInformationVendorID()
         : SubscribeAttribute("vendor-id")
     {
     }
 
-    ~SubscribeAttributeBasicVendorID() {}
+    ~SubscribeAttributeBasicInformationVendorID() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x00000002) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -11195,7 +11209,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.VendorID response %@", [value description]);
+                NSLog(@"BasicInformation.VendorID response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -11206,25 +11220,27 @@
 /*
  * Attribute ProductName
  */
-class ReadBasicProductName : public ReadAttribute {
+class ReadBasicInformationProductName : public ReadAttribute {
 public:
-    ReadBasicProductName()
+    ReadBasicInformationProductName()
         : ReadAttribute("product-name")
     {
     }
 
-    ~ReadBasicProductName() {}
+    ~ReadBasicInformationProductName() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x00000003) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeProductNameWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.ProductName response %@", [value description]);
+            NSLog(@"BasicInformation.ProductName response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic ProductName read Error", error);
+                LogNSError("BasicInformation ProductName read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -11232,20 +11248,22 @@
     }
 };
 
-class SubscribeAttributeBasicProductName : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationProductName : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicProductName()
+    SubscribeAttributeBasicInformationProductName()
         : SubscribeAttribute("product-name")
     {
     }
 
-    ~SubscribeAttributeBasicProductName() {}
+    ~SubscribeAttributeBasicInformationProductName() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x00000003) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -11261,7 +11279,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.ProductName response %@", [value description]);
+                NSLog(@"BasicInformation.ProductName response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -11272,25 +11290,27 @@
 /*
  * Attribute ProductID
  */
-class ReadBasicProductID : public ReadAttribute {
+class ReadBasicInformationProductID : public ReadAttribute {
 public:
-    ReadBasicProductID()
+    ReadBasicInformationProductID()
         : ReadAttribute("product-id")
     {
     }
 
-    ~ReadBasicProductID() {}
+    ~ReadBasicInformationProductID() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x00000004) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeProductIDWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.ProductID response %@", [value description]);
+            NSLog(@"BasicInformation.ProductID response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic ProductID read Error", error);
+                LogNSError("BasicInformation ProductID read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -11298,20 +11318,22 @@
     }
 };
 
-class SubscribeAttributeBasicProductID : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationProductID : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicProductID()
+    SubscribeAttributeBasicInformationProductID()
         : SubscribeAttribute("product-id")
     {
     }
 
-    ~SubscribeAttributeBasicProductID() {}
+    ~SubscribeAttributeBasicInformationProductID() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x00000004) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -11327,7 +11349,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.ProductID response %@", [value description]);
+                NSLog(@"BasicInformation.ProductID response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -11338,25 +11360,27 @@
 /*
  * Attribute NodeLabel
  */
-class ReadBasicNodeLabel : public ReadAttribute {
+class ReadBasicInformationNodeLabel : public ReadAttribute {
 public:
-    ReadBasicNodeLabel()
+    ReadBasicInformationNodeLabel()
         : ReadAttribute("node-label")
     {
     }
 
-    ~ReadBasicNodeLabel() {}
+    ~ReadBasicInformationNodeLabel() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x00000005) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeNodeLabelWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.NodeLabel response %@", [value description]);
+            NSLog(@"BasicInformation.NodeLabel response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic NodeLabel read Error", error);
+                LogNSError("BasicInformation NodeLabel read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -11364,9 +11388,9 @@
     }
 };
 
-class WriteBasicNodeLabel : public WriteAttribute {
+class WriteBasicInformationNodeLabel : public WriteAttribute {
 public:
-    WriteBasicNodeLabel()
+    WriteBasicInformationNodeLabel()
         : WriteAttribute("node-label")
     {
         AddArgument("attr-name", "node-label");
@@ -11374,13 +11398,15 @@
         WriteAttribute::AddArguments();
     }
 
-    ~WriteBasicNodeLabel() {}
+    ~WriteBasicInformationNodeLabel() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) WriteAttribute (0x00000005) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRWriteParams alloc] init];
         params.timedWriteTimeout
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
@@ -11393,7 +11419,7 @@
                                            params:params
                                        completion:^(NSError * _Nullable error) {
                                            if (error != nil) {
-                                               LogNSError("Basic NodeLabel write Error", error);
+                                               LogNSError("BasicInformation NodeLabel write Error", error);
                                            }
                                            SetCommandExitStatus(error);
                                        }];
@@ -11404,20 +11430,22 @@
     chip::ByteSpan mValue;
 };
 
-class SubscribeAttributeBasicNodeLabel : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationNodeLabel : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicNodeLabel()
+    SubscribeAttributeBasicInformationNodeLabel()
         : SubscribeAttribute("node-label")
     {
     }
 
-    ~SubscribeAttributeBasicNodeLabel() {}
+    ~SubscribeAttributeBasicInformationNodeLabel() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x00000005) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -11433,7 +11461,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.NodeLabel response %@", [value description]);
+                NSLog(@"BasicInformation.NodeLabel response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -11444,25 +11472,27 @@
 /*
  * Attribute Location
  */
-class ReadBasicLocation : public ReadAttribute {
+class ReadBasicInformationLocation : public ReadAttribute {
 public:
-    ReadBasicLocation()
+    ReadBasicInformationLocation()
         : ReadAttribute("location")
     {
     }
 
-    ~ReadBasicLocation() {}
+    ~ReadBasicInformationLocation() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x00000006) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeLocationWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.Location response %@", [value description]);
+            NSLog(@"BasicInformation.Location response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic Location read Error", error);
+                LogNSError("BasicInformation Location read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -11470,9 +11500,9 @@
     }
 };
 
-class WriteBasicLocation : public WriteAttribute {
+class WriteBasicInformationLocation : public WriteAttribute {
 public:
-    WriteBasicLocation()
+    WriteBasicInformationLocation()
         : WriteAttribute("location")
     {
         AddArgument("attr-name", "location");
@@ -11480,13 +11510,15 @@
         WriteAttribute::AddArguments();
     }
 
-    ~WriteBasicLocation() {}
+    ~WriteBasicInformationLocation() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) WriteAttribute (0x00000006) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRWriteParams alloc] init];
         params.timedWriteTimeout
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
@@ -11499,7 +11531,7 @@
                                           params:params
                                       completion:^(NSError * _Nullable error) {
                                           if (error != nil) {
-                                              LogNSError("Basic Location write Error", error);
+                                              LogNSError("BasicInformation Location write Error", error);
                                           }
                                           SetCommandExitStatus(error);
                                       }];
@@ -11510,20 +11542,22 @@
     chip::ByteSpan mValue;
 };
 
-class SubscribeAttributeBasicLocation : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationLocation : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicLocation()
+    SubscribeAttributeBasicInformationLocation()
         : SubscribeAttribute("location")
     {
     }
 
-    ~SubscribeAttributeBasicLocation() {}
+    ~SubscribeAttributeBasicInformationLocation() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x00000006) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -11539,7 +11573,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.Location response %@", [value description]);
+                NSLog(@"BasicInformation.Location response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -11550,25 +11584,27 @@
 /*
  * Attribute HardwareVersion
  */
-class ReadBasicHardwareVersion : public ReadAttribute {
+class ReadBasicInformationHardwareVersion : public ReadAttribute {
 public:
-    ReadBasicHardwareVersion()
+    ReadBasicInformationHardwareVersion()
         : ReadAttribute("hardware-version")
     {
     }
 
-    ~ReadBasicHardwareVersion() {}
+    ~ReadBasicInformationHardwareVersion() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x00000007) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeHardwareVersionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.HardwareVersion response %@", [value description]);
+            NSLog(@"BasicInformation.HardwareVersion response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic HardwareVersion read Error", error);
+                LogNSError("BasicInformation HardwareVersion read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -11576,20 +11612,22 @@
     }
 };
 
-class SubscribeAttributeBasicHardwareVersion : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationHardwareVersion : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicHardwareVersion()
+    SubscribeAttributeBasicInformationHardwareVersion()
         : SubscribeAttribute("hardware-version")
     {
     }
 
-    ~SubscribeAttributeBasicHardwareVersion() {}
+    ~SubscribeAttributeBasicInformationHardwareVersion() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x00000007) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -11605,7 +11643,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.HardwareVersion response %@", [value description]);
+                NSLog(@"BasicInformation.HardwareVersion response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -11616,25 +11654,27 @@
 /*
  * Attribute HardwareVersionString
  */
-class ReadBasicHardwareVersionString : public ReadAttribute {
+class ReadBasicInformationHardwareVersionString : public ReadAttribute {
 public:
-    ReadBasicHardwareVersionString()
+    ReadBasicInformationHardwareVersionString()
         : ReadAttribute("hardware-version-string")
     {
     }
 
-    ~ReadBasicHardwareVersionString() {}
+    ~ReadBasicInformationHardwareVersionString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x00000008) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeHardwareVersionStringWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.HardwareVersionString response %@", [value description]);
+            NSLog(@"BasicInformation.HardwareVersionString response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic HardwareVersionString read Error", error);
+                LogNSError("BasicInformation HardwareVersionString read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -11642,20 +11682,22 @@
     }
 };
 
-class SubscribeAttributeBasicHardwareVersionString : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationHardwareVersionString : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicHardwareVersionString()
+    SubscribeAttributeBasicInformationHardwareVersionString()
         : SubscribeAttribute("hardware-version-string")
     {
     }
 
-    ~SubscribeAttributeBasicHardwareVersionString() {}
+    ~SubscribeAttributeBasicInformationHardwareVersionString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x00000008) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -11671,7 +11713,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.HardwareVersionString response %@", [value description]);
+                NSLog(@"BasicInformation.HardwareVersionString response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -11682,25 +11724,27 @@
 /*
  * Attribute SoftwareVersion
  */
-class ReadBasicSoftwareVersion : public ReadAttribute {
+class ReadBasicInformationSoftwareVersion : public ReadAttribute {
 public:
-    ReadBasicSoftwareVersion()
+    ReadBasicInformationSoftwareVersion()
         : ReadAttribute("software-version")
     {
     }
 
-    ~ReadBasicSoftwareVersion() {}
+    ~ReadBasicInformationSoftwareVersion() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x00000009) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeSoftwareVersionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.SoftwareVersion response %@", [value description]);
+            NSLog(@"BasicInformation.SoftwareVersion response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic SoftwareVersion read Error", error);
+                LogNSError("BasicInformation SoftwareVersion read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -11708,20 +11752,22 @@
     }
 };
 
-class SubscribeAttributeBasicSoftwareVersion : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationSoftwareVersion : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicSoftwareVersion()
+    SubscribeAttributeBasicInformationSoftwareVersion()
         : SubscribeAttribute("software-version")
     {
     }
 
-    ~SubscribeAttributeBasicSoftwareVersion() {}
+    ~SubscribeAttributeBasicInformationSoftwareVersion() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x00000009) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -11737,7 +11783,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.SoftwareVersion response %@", [value description]);
+                NSLog(@"BasicInformation.SoftwareVersion response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -11748,25 +11794,27 @@
 /*
  * Attribute SoftwareVersionString
  */
-class ReadBasicSoftwareVersionString : public ReadAttribute {
+class ReadBasicInformationSoftwareVersionString : public ReadAttribute {
 public:
-    ReadBasicSoftwareVersionString()
+    ReadBasicInformationSoftwareVersionString()
         : ReadAttribute("software-version-string")
     {
     }
 
-    ~ReadBasicSoftwareVersionString() {}
+    ~ReadBasicInformationSoftwareVersionString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x0000000A) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeSoftwareVersionStringWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.SoftwareVersionString response %@", [value description]);
+            NSLog(@"BasicInformation.SoftwareVersionString response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic SoftwareVersionString read Error", error);
+                LogNSError("BasicInformation SoftwareVersionString read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -11774,20 +11822,22 @@
     }
 };
 
-class SubscribeAttributeBasicSoftwareVersionString : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationSoftwareVersionString : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicSoftwareVersionString()
+    SubscribeAttributeBasicInformationSoftwareVersionString()
         : SubscribeAttribute("software-version-string")
     {
     }
 
-    ~SubscribeAttributeBasicSoftwareVersionString() {}
+    ~SubscribeAttributeBasicInformationSoftwareVersionString() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x0000000A) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -11803,7 +11853,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.SoftwareVersionString response %@", [value description]);
+                NSLog(@"BasicInformation.SoftwareVersionString response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -11814,25 +11864,27 @@
 /*
  * Attribute ManufacturingDate
  */
-class ReadBasicManufacturingDate : public ReadAttribute {
+class ReadBasicInformationManufacturingDate : public ReadAttribute {
 public:
-    ReadBasicManufacturingDate()
+    ReadBasicInformationManufacturingDate()
         : ReadAttribute("manufacturing-date")
     {
     }
 
-    ~ReadBasicManufacturingDate() {}
+    ~ReadBasicInformationManufacturingDate() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x0000000B) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeManufacturingDateWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.ManufacturingDate response %@", [value description]);
+            NSLog(@"BasicInformation.ManufacturingDate response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic ManufacturingDate read Error", error);
+                LogNSError("BasicInformation ManufacturingDate read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -11840,20 +11892,22 @@
     }
 };
 
-class SubscribeAttributeBasicManufacturingDate : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationManufacturingDate : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicManufacturingDate()
+    SubscribeAttributeBasicInformationManufacturingDate()
         : SubscribeAttribute("manufacturing-date")
     {
     }
 
-    ~SubscribeAttributeBasicManufacturingDate() {}
+    ~SubscribeAttributeBasicInformationManufacturingDate() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x0000000B) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -11869,7 +11923,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.ManufacturingDate response %@", [value description]);
+                NSLog(@"BasicInformation.ManufacturingDate response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -11880,25 +11934,27 @@
 /*
  * Attribute PartNumber
  */
-class ReadBasicPartNumber : public ReadAttribute {
+class ReadBasicInformationPartNumber : public ReadAttribute {
 public:
-    ReadBasicPartNumber()
+    ReadBasicInformationPartNumber()
         : ReadAttribute("part-number")
     {
     }
 
-    ~ReadBasicPartNumber() {}
+    ~ReadBasicInformationPartNumber() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x0000000C) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributePartNumberWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.PartNumber response %@", [value description]);
+            NSLog(@"BasicInformation.PartNumber response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic PartNumber read Error", error);
+                LogNSError("BasicInformation PartNumber read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -11906,20 +11962,22 @@
     }
 };
 
-class SubscribeAttributeBasicPartNumber : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationPartNumber : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicPartNumber()
+    SubscribeAttributeBasicInformationPartNumber()
         : SubscribeAttribute("part-number")
     {
     }
 
-    ~SubscribeAttributeBasicPartNumber() {}
+    ~SubscribeAttributeBasicInformationPartNumber() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x0000000C) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -11935,7 +11993,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.PartNumber response %@", [value description]);
+                NSLog(@"BasicInformation.PartNumber response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -11946,25 +12004,27 @@
 /*
  * Attribute ProductURL
  */
-class ReadBasicProductURL : public ReadAttribute {
+class ReadBasicInformationProductURL : public ReadAttribute {
 public:
-    ReadBasicProductURL()
+    ReadBasicInformationProductURL()
         : ReadAttribute("product-url")
     {
     }
 
-    ~ReadBasicProductURL() {}
+    ~ReadBasicInformationProductURL() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x0000000D) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeProductURLWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.ProductURL response %@", [value description]);
+            NSLog(@"BasicInformation.ProductURL response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic ProductURL read Error", error);
+                LogNSError("BasicInformation ProductURL read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -11972,20 +12032,22 @@
     }
 };
 
-class SubscribeAttributeBasicProductURL : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationProductURL : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicProductURL()
+    SubscribeAttributeBasicInformationProductURL()
         : SubscribeAttribute("product-url")
     {
     }
 
-    ~SubscribeAttributeBasicProductURL() {}
+    ~SubscribeAttributeBasicInformationProductURL() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x0000000D) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -12001,7 +12063,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.ProductURL response %@", [value description]);
+                NSLog(@"BasicInformation.ProductURL response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -12012,25 +12074,27 @@
 /*
  * Attribute ProductLabel
  */
-class ReadBasicProductLabel : public ReadAttribute {
+class ReadBasicInformationProductLabel : public ReadAttribute {
 public:
-    ReadBasicProductLabel()
+    ReadBasicInformationProductLabel()
         : ReadAttribute("product-label")
     {
     }
 
-    ~ReadBasicProductLabel() {}
+    ~ReadBasicInformationProductLabel() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x0000000E) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeProductLabelWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.ProductLabel response %@", [value description]);
+            NSLog(@"BasicInformation.ProductLabel response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic ProductLabel read Error", error);
+                LogNSError("BasicInformation ProductLabel read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -12038,20 +12102,22 @@
     }
 };
 
-class SubscribeAttributeBasicProductLabel : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationProductLabel : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicProductLabel()
+    SubscribeAttributeBasicInformationProductLabel()
         : SubscribeAttribute("product-label")
     {
     }
 
-    ~SubscribeAttributeBasicProductLabel() {}
+    ~SubscribeAttributeBasicInformationProductLabel() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x0000000E) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -12067,7 +12133,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.ProductLabel response %@", [value description]);
+                NSLog(@"BasicInformation.ProductLabel response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -12078,25 +12144,27 @@
 /*
  * Attribute SerialNumber
  */
-class ReadBasicSerialNumber : public ReadAttribute {
+class ReadBasicInformationSerialNumber : public ReadAttribute {
 public:
-    ReadBasicSerialNumber()
+    ReadBasicInformationSerialNumber()
         : ReadAttribute("serial-number")
     {
     }
 
-    ~ReadBasicSerialNumber() {}
+    ~ReadBasicInformationSerialNumber() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x0000000F) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeSerialNumberWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.SerialNumber response %@", [value description]);
+            NSLog(@"BasicInformation.SerialNumber response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic SerialNumber read Error", error);
+                LogNSError("BasicInformation SerialNumber read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -12104,20 +12172,22 @@
     }
 };
 
-class SubscribeAttributeBasicSerialNumber : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationSerialNumber : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicSerialNumber()
+    SubscribeAttributeBasicInformationSerialNumber()
         : SubscribeAttribute("serial-number")
     {
     }
 
-    ~SubscribeAttributeBasicSerialNumber() {}
+    ~SubscribeAttributeBasicInformationSerialNumber() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x0000000F) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -12133,7 +12203,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.SerialNumber response %@", [value description]);
+                NSLog(@"BasicInformation.SerialNumber response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -12144,25 +12214,27 @@
 /*
  * Attribute LocalConfigDisabled
  */
-class ReadBasicLocalConfigDisabled : public ReadAttribute {
+class ReadBasicInformationLocalConfigDisabled : public ReadAttribute {
 public:
-    ReadBasicLocalConfigDisabled()
+    ReadBasicInformationLocalConfigDisabled()
         : ReadAttribute("local-config-disabled")
     {
     }
 
-    ~ReadBasicLocalConfigDisabled() {}
+    ~ReadBasicInformationLocalConfigDisabled() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x00000010) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeLocalConfigDisabledWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.LocalConfigDisabled response %@", [value description]);
+            NSLog(@"BasicInformation.LocalConfigDisabled response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic LocalConfigDisabled read Error", error);
+                LogNSError("BasicInformation LocalConfigDisabled read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -12170,9 +12242,9 @@
     }
 };
 
-class WriteBasicLocalConfigDisabled : public WriteAttribute {
+class WriteBasicInformationLocalConfigDisabled : public WriteAttribute {
 public:
-    WriteBasicLocalConfigDisabled()
+    WriteBasicInformationLocalConfigDisabled()
         : WriteAttribute("local-config-disabled")
     {
         AddArgument("attr-name", "local-config-disabled");
@@ -12180,13 +12252,15 @@
         WriteAttribute::AddArguments();
     }
 
-    ~WriteBasicLocalConfigDisabled() {}
+    ~WriteBasicInformationLocalConfigDisabled() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) WriteAttribute (0x00000010) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRWriteParams alloc] init];
         params.timedWriteTimeout
             = mTimedInteractionTimeoutMs.HasValue() ? [NSNumber numberWithUnsignedShort:mTimedInteractionTimeoutMs.Value()] : nil;
@@ -12197,7 +12271,7 @@
                                                      params:params
                                                  completion:^(NSError * _Nullable error) {
                                                      if (error != nil) {
-                                                         LogNSError("Basic LocalConfigDisabled write Error", error);
+                                                         LogNSError("BasicInformation LocalConfigDisabled write Error", error);
                                                      }
                                                      SetCommandExitStatus(error);
                                                  }];
@@ -12208,20 +12282,22 @@
     bool mValue;
 };
 
-class SubscribeAttributeBasicLocalConfigDisabled : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationLocalConfigDisabled : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicLocalConfigDisabled()
+    SubscribeAttributeBasicInformationLocalConfigDisabled()
         : SubscribeAttribute("local-config-disabled")
     {
     }
 
-    ~SubscribeAttributeBasicLocalConfigDisabled() {}
+    ~SubscribeAttributeBasicInformationLocalConfigDisabled() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x00000010) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -12237,7 +12313,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.LocalConfigDisabled response %@", [value description]);
+                NSLog(@"BasicInformation.LocalConfigDisabled response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -12248,25 +12324,27 @@
 /*
  * Attribute Reachable
  */
-class ReadBasicReachable : public ReadAttribute {
+class ReadBasicInformationReachable : public ReadAttribute {
 public:
-    ReadBasicReachable()
+    ReadBasicInformationReachable()
         : ReadAttribute("reachable")
     {
     }
 
-    ~ReadBasicReachable() {}
+    ~ReadBasicInformationReachable() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x00000011) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeReachableWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.Reachable response %@", [value description]);
+            NSLog(@"BasicInformation.Reachable response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic Reachable read Error", error);
+                LogNSError("BasicInformation Reachable read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -12274,20 +12352,22 @@
     }
 };
 
-class SubscribeAttributeBasicReachable : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationReachable : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicReachable()
+    SubscribeAttributeBasicInformationReachable()
         : SubscribeAttribute("reachable")
     {
     }
 
-    ~SubscribeAttributeBasicReachable() {}
+    ~SubscribeAttributeBasicInformationReachable() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x00000011) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -12303,7 +12383,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.Reachable response %@", [value description]);
+                NSLog(@"BasicInformation.Reachable response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -12314,25 +12394,27 @@
 /*
  * Attribute UniqueID
  */
-class ReadBasicUniqueID : public ReadAttribute {
+class ReadBasicInformationUniqueID : public ReadAttribute {
 public:
-    ReadBasicUniqueID()
+    ReadBasicInformationUniqueID()
         : ReadAttribute("unique-id")
     {
     }
 
-    ~ReadBasicUniqueID() {}
+    ~ReadBasicInformationUniqueID() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x00000012) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeUniqueIDWithCompletion:^(NSString * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.UniqueID response %@", [value description]);
+            NSLog(@"BasicInformation.UniqueID response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic UniqueID read Error", error);
+                LogNSError("BasicInformation UniqueID read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -12340,20 +12422,22 @@
     }
 };
 
-class SubscribeAttributeBasicUniqueID : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationUniqueID : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicUniqueID()
+    SubscribeAttributeBasicInformationUniqueID()
         : SubscribeAttribute("unique-id")
     {
     }
 
-    ~SubscribeAttributeBasicUniqueID() {}
+    ~SubscribeAttributeBasicInformationUniqueID() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x00000012) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -12369,7 +12453,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSString * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.UniqueID response %@", [value description]);
+                NSLog(@"BasicInformation.UniqueID response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -12380,26 +12464,28 @@
 /*
  * Attribute CapabilityMinima
  */
-class ReadBasicCapabilityMinima : public ReadAttribute {
+class ReadBasicInformationCapabilityMinima : public ReadAttribute {
 public:
-    ReadBasicCapabilityMinima()
+    ReadBasicInformationCapabilityMinima()
         : ReadAttribute("capability-minima")
     {
     }
 
-    ~ReadBasicCapabilityMinima() {}
+    ~ReadBasicInformationCapabilityMinima() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x00000013) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeCapabilityMinimaWithCompletion:^(
-            MTRBasicClusterCapabilityMinimaStruct * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.CapabilityMinima response %@", [value description]);
+            MTRBasicInformationClusterCapabilityMinimaStruct * _Nullable value, NSError * _Nullable error) {
+            NSLog(@"BasicInformation.CapabilityMinima response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic CapabilityMinima read Error", error);
+                LogNSError("BasicInformation CapabilityMinima read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -12407,20 +12493,22 @@
     }
 };
 
-class SubscribeAttributeBasicCapabilityMinima : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationCapabilityMinima : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicCapabilityMinima()
+    SubscribeAttributeBasicInformationCapabilityMinima()
         : SubscribeAttribute("capability-minima")
     {
     }
 
-    ~SubscribeAttributeBasicCapabilityMinima() {}
+    ~SubscribeAttributeBasicInformationCapabilityMinima() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x00000013) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -12435,8 +12523,8 @@
             subscriptionEstablished:^() {
                 mSubscriptionEstablished = YES;
             }
-            reportHandler:^(MTRBasicClusterCapabilityMinimaStruct * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.CapabilityMinima response %@", [value description]);
+            reportHandler:^(MTRBasicInformationClusterCapabilityMinimaStruct * _Nullable value, NSError * _Nullable error) {
+                NSLog(@"BasicInformation.CapabilityMinima response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -12447,25 +12535,27 @@
 /*
  * Attribute GeneratedCommandList
  */
-class ReadBasicGeneratedCommandList : public ReadAttribute {
+class ReadBasicInformationGeneratedCommandList : public ReadAttribute {
 public:
-    ReadBasicGeneratedCommandList()
+    ReadBasicInformationGeneratedCommandList()
         : ReadAttribute("generated-command-list")
     {
     }
 
-    ~ReadBasicGeneratedCommandList() {}
+    ~ReadBasicInformationGeneratedCommandList() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x0000FFF8) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.GeneratedCommandList response %@", [value description]);
+            NSLog(@"BasicInformation.GeneratedCommandList response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic GeneratedCommandList read Error", error);
+                LogNSError("BasicInformation GeneratedCommandList read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -12473,20 +12563,22 @@
     }
 };
 
-class SubscribeAttributeBasicGeneratedCommandList : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationGeneratedCommandList : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicGeneratedCommandList()
+    SubscribeAttributeBasicInformationGeneratedCommandList()
         : SubscribeAttribute("generated-command-list")
     {
     }
 
-    ~SubscribeAttributeBasicGeneratedCommandList() {}
+    ~SubscribeAttributeBasicInformationGeneratedCommandList() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x0000FFF8) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -12502,7 +12594,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.GeneratedCommandList response %@", [value description]);
+                NSLog(@"BasicInformation.GeneratedCommandList response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -12513,25 +12605,27 @@
 /*
  * Attribute AcceptedCommandList
  */
-class ReadBasicAcceptedCommandList : public ReadAttribute {
+class ReadBasicInformationAcceptedCommandList : public ReadAttribute {
 public:
-    ReadBasicAcceptedCommandList()
+    ReadBasicInformationAcceptedCommandList()
         : ReadAttribute("accepted-command-list")
     {
     }
 
-    ~ReadBasicAcceptedCommandList() {}
+    ~ReadBasicInformationAcceptedCommandList() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x0000FFF9) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.AcceptedCommandList response %@", [value description]);
+            NSLog(@"BasicInformation.AcceptedCommandList response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic AcceptedCommandList read Error", error);
+                LogNSError("BasicInformation AcceptedCommandList read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -12539,20 +12633,22 @@
     }
 };
 
-class SubscribeAttributeBasicAcceptedCommandList : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationAcceptedCommandList : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicAcceptedCommandList()
+    SubscribeAttributeBasicInformationAcceptedCommandList()
         : SubscribeAttribute("accepted-command-list")
     {
     }
 
-    ~SubscribeAttributeBasicAcceptedCommandList() {}
+    ~SubscribeAttributeBasicInformationAcceptedCommandList() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x0000FFF9) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -12568,7 +12664,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.AcceptedCommandList response %@", [value description]);
+                NSLog(@"BasicInformation.AcceptedCommandList response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -12579,25 +12675,27 @@
 /*
  * Attribute AttributeList
  */
-class ReadBasicAttributeList : public ReadAttribute {
+class ReadBasicInformationAttributeList : public ReadAttribute {
 public:
-    ReadBasicAttributeList()
+    ReadBasicInformationAttributeList()
         : ReadAttribute("attribute-list")
     {
     }
 
-    ~ReadBasicAttributeList() {}
+    ~ReadBasicInformationAttributeList() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x0000FFFB) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.AttributeList response %@", [value description]);
+            NSLog(@"BasicInformation.AttributeList response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic AttributeList read Error", error);
+                LogNSError("BasicInformation AttributeList read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -12605,20 +12703,22 @@
     }
 };
 
-class SubscribeAttributeBasicAttributeList : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationAttributeList : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicAttributeList()
+    SubscribeAttributeBasicInformationAttributeList()
         : SubscribeAttribute("attribute-list")
     {
     }
 
-    ~SubscribeAttributeBasicAttributeList() {}
+    ~SubscribeAttributeBasicInformationAttributeList() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x0000FFFB) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -12634,7 +12734,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSArray * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.AttributeList response %@", [value description]);
+                NSLog(@"BasicInformation.AttributeList response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -12645,25 +12745,27 @@
 /*
  * Attribute FeatureMap
  */
-class ReadBasicFeatureMap : public ReadAttribute {
+class ReadBasicInformationFeatureMap : public ReadAttribute {
 public:
-    ReadBasicFeatureMap()
+    ReadBasicInformationFeatureMap()
         : ReadAttribute("feature-map")
     {
     }
 
-    ~ReadBasicFeatureMap() {}
+    ~ReadBasicInformationFeatureMap() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x0000FFFC) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.FeatureMap response %@", [value description]);
+            NSLog(@"BasicInformation.FeatureMap response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic FeatureMap read Error", error);
+                LogNSError("BasicInformation FeatureMap read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -12671,20 +12773,22 @@
     }
 };
 
-class SubscribeAttributeBasicFeatureMap : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationFeatureMap : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicFeatureMap()
+    SubscribeAttributeBasicInformationFeatureMap()
         : SubscribeAttribute("feature-map")
     {
     }
 
-    ~SubscribeAttributeBasicFeatureMap() {}
+    ~SubscribeAttributeBasicInformationFeatureMap() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x0000FFFC) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -12700,7 +12804,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.FeatureMap response %@", [value description]);
+                NSLog(@"BasicInformation.FeatureMap response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -12711,25 +12815,27 @@
 /*
  * Attribute ClusterRevision
  */
-class ReadBasicClusterRevision : public ReadAttribute {
+class ReadBasicInformationClusterRevision : public ReadAttribute {
 public:
-    ReadBasicClusterRevision()
+    ReadBasicInformationClusterRevision()
         : ReadAttribute("cluster-revision")
     {
     }
 
-    ~ReadBasicClusterRevision() {}
+    ~ReadBasicInformationClusterRevision() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReadAttribute (0x0000FFFD) on endpoint %u", endpointId);
 
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         [cluster readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-            NSLog(@"Basic.ClusterRevision response %@", [value description]);
+            NSLog(@"BasicInformation.ClusterRevision response %@", [value description]);
             if (error != nil) {
-                LogNSError("Basic ClusterRevision read Error", error);
+                LogNSError("BasicInformation ClusterRevision read Error", error);
             }
             SetCommandExitStatus(error);
         }];
@@ -12737,20 +12843,22 @@
     }
 };
 
-class SubscribeAttributeBasicClusterRevision : public SubscribeAttribute {
+class SubscribeAttributeBasicInformationClusterRevision : public SubscribeAttribute {
 public:
-    SubscribeAttributeBasicClusterRevision()
+    SubscribeAttributeBasicInformationClusterRevision()
         : SubscribeAttribute("cluster-revision")
     {
     }
 
-    ~SubscribeAttributeBasicClusterRevision() {}
+    ~SubscribeAttributeBasicInformationClusterRevision() {}
 
     CHIP_ERROR SendCommand(MTRBaseDevice * device, chip::EndpointId endpointId) override
     {
         ChipLogProgress(chipTool, "Sending cluster (0x00000028) ReportAttribute (0x0000FFFD) on endpoint %u", endpointId);
         dispatch_queue_t callbackQueue = dispatch_queue_create("com.chip.command", DISPATCH_QUEUE_SERIAL);
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(endpointId) queue:callbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device
+                                                                            endpointID:@(endpointId)
+                                                                                 queue:callbackQueue];
         __auto_type * params = [[MTRSubscribeParams alloc] initWithMinInterval:@(mMinInterval) maxInterval:@(mMaxInterval)];
         if (mKeepSubscriptions.HasValue()) {
             params.replaceExistingSubscriptions = !mKeepSubscriptions.Value();
@@ -12766,7 +12874,7 @@
                 mSubscriptionEstablished = YES;
             }
             reportHandler:^(NSNumber * _Nullable value, NSError * _Nullable error) {
-                NSLog(@"Basic.ClusterRevision response %@", [value description]);
+                NSLog(@"BasicInformation.ClusterRevision response %@", [value description]);
                 SetCommandExitStatus(error);
             }];
 
@@ -97813,71 +97921,71 @@
 
     commands.Register(clusterName, clusterCommands);
 }
-void registerClusterBasic(Commands & commands)
+void registerClusterBasicInformation(Commands & commands)
 {
-    using namespace chip::app::Clusters::Basic;
+    using namespace chip::app::Clusters::BasicInformation;
 
-    const char * clusterName = "Basic";
+    const char * clusterName = "BasicInformation";
 
     commands_list clusterCommands = {
         make_unique<ClusterCommand>(Id), //
-        make_unique<BasicMfgSpecificPing>(), //
+        make_unique<BasicInformationMfgSpecificPing>(), //
         make_unique<ReadAttribute>(Id), //
-        make_unique<ReadBasicDataModelRevision>(), //
+        make_unique<ReadBasicInformationDataModelRevision>(), //
         make_unique<WriteAttribute>(Id), //
         make_unique<SubscribeAttribute>(Id), //
-        make_unique<SubscribeAttributeBasicDataModelRevision>(), //
-        make_unique<ReadBasicVendorName>(), //
-        make_unique<SubscribeAttributeBasicVendorName>(), //
-        make_unique<ReadBasicVendorID>(), //
-        make_unique<SubscribeAttributeBasicVendorID>(), //
-        make_unique<ReadBasicProductName>(), //
-        make_unique<SubscribeAttributeBasicProductName>(), //
-        make_unique<ReadBasicProductID>(), //
-        make_unique<SubscribeAttributeBasicProductID>(), //
-        make_unique<ReadBasicNodeLabel>(), //
-        make_unique<WriteBasicNodeLabel>(), //
-        make_unique<SubscribeAttributeBasicNodeLabel>(), //
-        make_unique<ReadBasicLocation>(), //
-        make_unique<WriteBasicLocation>(), //
-        make_unique<SubscribeAttributeBasicLocation>(), //
-        make_unique<ReadBasicHardwareVersion>(), //
-        make_unique<SubscribeAttributeBasicHardwareVersion>(), //
-        make_unique<ReadBasicHardwareVersionString>(), //
-        make_unique<SubscribeAttributeBasicHardwareVersionString>(), //
-        make_unique<ReadBasicSoftwareVersion>(), //
-        make_unique<SubscribeAttributeBasicSoftwareVersion>(), //
-        make_unique<ReadBasicSoftwareVersionString>(), //
-        make_unique<SubscribeAttributeBasicSoftwareVersionString>(), //
-        make_unique<ReadBasicManufacturingDate>(), //
-        make_unique<SubscribeAttributeBasicManufacturingDate>(), //
-        make_unique<ReadBasicPartNumber>(), //
-        make_unique<SubscribeAttributeBasicPartNumber>(), //
-        make_unique<ReadBasicProductURL>(), //
-        make_unique<SubscribeAttributeBasicProductURL>(), //
-        make_unique<ReadBasicProductLabel>(), //
-        make_unique<SubscribeAttributeBasicProductLabel>(), //
-        make_unique<ReadBasicSerialNumber>(), //
-        make_unique<SubscribeAttributeBasicSerialNumber>(), //
-        make_unique<ReadBasicLocalConfigDisabled>(), //
-        make_unique<WriteBasicLocalConfigDisabled>(), //
-        make_unique<SubscribeAttributeBasicLocalConfigDisabled>(), //
-        make_unique<ReadBasicReachable>(), //
-        make_unique<SubscribeAttributeBasicReachable>(), //
-        make_unique<ReadBasicUniqueID>(), //
-        make_unique<SubscribeAttributeBasicUniqueID>(), //
-        make_unique<ReadBasicCapabilityMinima>(), //
-        make_unique<SubscribeAttributeBasicCapabilityMinima>(), //
-        make_unique<ReadBasicGeneratedCommandList>(), //
-        make_unique<SubscribeAttributeBasicGeneratedCommandList>(), //
-        make_unique<ReadBasicAcceptedCommandList>(), //
-        make_unique<SubscribeAttributeBasicAcceptedCommandList>(), //
-        make_unique<ReadBasicAttributeList>(), //
-        make_unique<SubscribeAttributeBasicAttributeList>(), //
-        make_unique<ReadBasicFeatureMap>(), //
-        make_unique<SubscribeAttributeBasicFeatureMap>(), //
-        make_unique<ReadBasicClusterRevision>(), //
-        make_unique<SubscribeAttributeBasicClusterRevision>(), //
+        make_unique<SubscribeAttributeBasicInformationDataModelRevision>(), //
+        make_unique<ReadBasicInformationVendorName>(), //
+        make_unique<SubscribeAttributeBasicInformationVendorName>(), //
+        make_unique<ReadBasicInformationVendorID>(), //
+        make_unique<SubscribeAttributeBasicInformationVendorID>(), //
+        make_unique<ReadBasicInformationProductName>(), //
+        make_unique<SubscribeAttributeBasicInformationProductName>(), //
+        make_unique<ReadBasicInformationProductID>(), //
+        make_unique<SubscribeAttributeBasicInformationProductID>(), //
+        make_unique<ReadBasicInformationNodeLabel>(), //
+        make_unique<WriteBasicInformationNodeLabel>(), //
+        make_unique<SubscribeAttributeBasicInformationNodeLabel>(), //
+        make_unique<ReadBasicInformationLocation>(), //
+        make_unique<WriteBasicInformationLocation>(), //
+        make_unique<SubscribeAttributeBasicInformationLocation>(), //
+        make_unique<ReadBasicInformationHardwareVersion>(), //
+        make_unique<SubscribeAttributeBasicInformationHardwareVersion>(), //
+        make_unique<ReadBasicInformationHardwareVersionString>(), //
+        make_unique<SubscribeAttributeBasicInformationHardwareVersionString>(), //
+        make_unique<ReadBasicInformationSoftwareVersion>(), //
+        make_unique<SubscribeAttributeBasicInformationSoftwareVersion>(), //
+        make_unique<ReadBasicInformationSoftwareVersionString>(), //
+        make_unique<SubscribeAttributeBasicInformationSoftwareVersionString>(), //
+        make_unique<ReadBasicInformationManufacturingDate>(), //
+        make_unique<SubscribeAttributeBasicInformationManufacturingDate>(), //
+        make_unique<ReadBasicInformationPartNumber>(), //
+        make_unique<SubscribeAttributeBasicInformationPartNumber>(), //
+        make_unique<ReadBasicInformationProductURL>(), //
+        make_unique<SubscribeAttributeBasicInformationProductURL>(), //
+        make_unique<ReadBasicInformationProductLabel>(), //
+        make_unique<SubscribeAttributeBasicInformationProductLabel>(), //
+        make_unique<ReadBasicInformationSerialNumber>(), //
+        make_unique<SubscribeAttributeBasicInformationSerialNumber>(), //
+        make_unique<ReadBasicInformationLocalConfigDisabled>(), //
+        make_unique<WriteBasicInformationLocalConfigDisabled>(), //
+        make_unique<SubscribeAttributeBasicInformationLocalConfigDisabled>(), //
+        make_unique<ReadBasicInformationReachable>(), //
+        make_unique<SubscribeAttributeBasicInformationReachable>(), //
+        make_unique<ReadBasicInformationUniqueID>(), //
+        make_unique<SubscribeAttributeBasicInformationUniqueID>(), //
+        make_unique<ReadBasicInformationCapabilityMinima>(), //
+        make_unique<SubscribeAttributeBasicInformationCapabilityMinima>(), //
+        make_unique<ReadBasicInformationGeneratedCommandList>(), //
+        make_unique<SubscribeAttributeBasicInformationGeneratedCommandList>(), //
+        make_unique<ReadBasicInformationAcceptedCommandList>(), //
+        make_unique<SubscribeAttributeBasicInformationAcceptedCommandList>(), //
+        make_unique<ReadBasicInformationAttributeList>(), //
+        make_unique<SubscribeAttributeBasicInformationAttributeList>(), //
+        make_unique<ReadBasicInformationFeatureMap>(), //
+        make_unique<SubscribeAttributeBasicInformationFeatureMap>(), //
+        make_unique<ReadBasicInformationClusterRevision>(), //
+        make_unique<SubscribeAttributeBasicInformationClusterRevision>(), //
     };
 
     commands.Register(clusterName, clusterCommands);
@@ -100958,7 +101066,7 @@
     registerClusterBinding(commands);
     registerClusterAccessControl(commands);
     registerClusterActions(commands);
-    registerClusterBasic(commands);
+    registerClusterBasicInformation(commands);
     registerClusterOtaSoftwareUpdateProvider(commands);
     registerClusterOtaSoftwareUpdateRequestor(commands);
     registerClusterLocalizationConfiguration(commands);
diff --git a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h
index fd008e6..8471aa7 100644
--- a/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h
+++ b/zzz_generated/darwin-framework-tool/zap-generated/test/Commands.h
@@ -19399,7 +19399,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeClusterRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) {
@@ -19423,7 +19423,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeFeatureMapWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) {
@@ -19447,7 +19447,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) {
@@ -19484,7 +19484,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) {
@@ -19505,7 +19505,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) {
@@ -19526,7 +19526,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) {
@@ -19547,7 +19547,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) {
@@ -19568,7 +19568,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) {
@@ -19589,7 +19589,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) {
@@ -19610,7 +19610,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) {
@@ -19631,7 +19631,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) {
@@ -19652,7 +19652,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeAcceptedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) {
@@ -19676,7 +19676,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeGeneratedCommandListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) {
@@ -74309,7 +74309,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeDataModelRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) {
@@ -74349,7 +74349,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeDataModelRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) {
@@ -74378,7 +74378,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeDataModelRevisionWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) {
@@ -95380,7 +95380,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeLocationWithCompletion:^(NSString * _Nullable value, NSError * _Nullable err) {
@@ -95403,7 +95403,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         id locationArgument;
@@ -95424,7 +95424,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeLocationWithCompletion:^(NSString * _Nullable value, NSError * _Nullable err) {
@@ -95447,7 +95447,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         id locationArgument;
@@ -95468,7 +95468,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeAttributeListWithCompletion:^(NSArray * _Nullable value, NSError * _Nullable err) {
@@ -95516,7 +95516,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeNodeLabelWithCompletion:^(NSString * _Nullable value, NSError * _Nullable err) {
@@ -95539,7 +95539,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         id nodeLabelArgument;
@@ -95560,7 +95560,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeNodeLabelWithCompletion:^(NSString * _Nullable value, NSError * _Nullable err) {
@@ -95583,7 +95583,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeLocalConfigDisabledWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) {
@@ -95606,7 +95606,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         id localConfigDisabledArgument;
@@ -95627,7 +95627,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeLocalConfigDisabledWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) {
@@ -95665,7 +95665,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeNodeLabelWithCompletion:^(NSString * _Nullable value, NSError * _Nullable err) {
@@ -95688,7 +95688,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         id nodeLabelArgument;
@@ -95709,7 +95709,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeLocalConfigDisabledWithCompletion:^(NSNumber * _Nullable value, NSError * _Nullable err) {
@@ -95732,7 +95732,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         id localConfigDisabledArgument;
@@ -100244,7 +100244,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeNodeLabelWithCompletion:^(NSString * _Nullable value, NSError * _Nullable err) {
@@ -104057,7 +104057,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeNodeLabelWithCompletion:^(NSString * _Nullable value, NSError * _Nullable err) {
@@ -104083,7 +104083,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("beta");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         id nodeLabelArgument;
@@ -104104,7 +104104,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("gamma");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         [cluster readAttributeNodeLabelWithCompletion:^(NSString * _Nullable value, NSError * _Nullable err) {
@@ -104124,7 +104124,7 @@
     {
 
         MTRBaseDevice * device = GetDevice("alpha");
-        __auto_type * cluster = [[MTRBaseClusterBasic alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
+        __auto_type * cluster = [[MTRBaseClusterBasicInformation alloc] initWithDevice:device endpointID:@(0) queue:mCallbackQueue];
         VerifyOrReturnError(cluster != nil, CHIP_ERROR_INCORRECT_STATE);
 
         id nodeLabelArgument;
diff --git a/zzz_generated/dynamic-bridge-app/zap-generated/access.h b/zzz_generated/dynamic-bridge-app/zap-generated/access.h
index 398e4e7..ec99a43 100644
--- a/zzz_generated/dynamic-bridge-app/zap-generated/access.h
+++ b/zzz_generated/dynamic-bridge-app/zap-generated/access.h
@@ -35,9 +35,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -58,9 +58,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -81,9 +81,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -103,9 +103,9 @@
     8, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -117,9 +117,9 @@
     16384, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -131,9 +131,9 @@
     kMatterAccessPrivilegeManage, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/dynamic-bridge-app/zap-generated/endpoint_config.h b/zzz_generated/dynamic-bridge-app/zap-generated/endpoint_config.h
index d648129..0b560b8 100644
--- a/zzz_generated/dynamic-bridge-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/dynamic-bridge-app/zap-generated/endpoint_config.h
@@ -129,7 +129,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -527,9 +527,6 @@
 
 // Cluster function static arrays
 #define GENERATED_FUNCTION_ARRAYS                                                                                                  \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -695,13 +692,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/dynamic-bridge-app/zap-generated/gen_config.h b/zzz_generated/dynamic-bridge-app/zap-generated/gen_config.h
index 47c85fe..0f72206 100644
--- a/zzz_generated/dynamic-bridge-app/zap-generated/gen_config.h
+++ b/zzz_generated/dynamic-bridge-app/zap-generated/gen_config.h
@@ -37,7 +37,7 @@
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACTIONS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_TIME_FORMAT_LOCALIZATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_UNIT_LOCALIZATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -100,10 +100,10 @@
 #define EMBER_AF_PLUGIN_ACTIONS_SERVER
 #define EMBER_AF_PLUGIN_ACTIONS
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the server side of the Localization Configuration cluster is included
 #define ZCL_USING_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER
diff --git a/zzz_generated/light-switch-app/zap-generated/access.h b/zzz_generated/light-switch-app/zap-generated/access.h
index 0386dfe..1ef3846 100644
--- a/zzz_generated/light-switch-app/zap-generated/access.h
+++ b/zzz_generated/light-switch-app/zap-generated/access.h
@@ -34,9 +34,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -56,9 +56,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -78,9 +78,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -99,9 +99,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -112,9 +112,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -125,9 +125,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/light-switch-app/zap-generated/endpoint_config.h b/zzz_generated/light-switch-app/zap-generated/endpoint_config.h
index 9aa4097..0b76a50 100644
--- a/zzz_generated/light-switch-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/light-switch-app/zap-generated/endpoint_config.h
@@ -112,7 +112,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -483,9 +483,6 @@
 
 // Cluster function static arrays
 #define GENERATED_FUNCTION_ARRAYS                                                                                                  \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -662,13 +659,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(16), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/light-switch-app/zap-generated/gen_config.h b/zzz_generated/light-switch-app/zap-generated/gen_config.h
index d100152..20bbf83 100644
--- a/zzz_generated/light-switch-app/zap-generated/gen_config.h
+++ b/zzz_generated/light-switch-app/zap-generated/gen_config.h
@@ -37,7 +37,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (3)
 #define EMBER_AF_BINDING_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -97,10 +97,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/lighting-app/nxp/zap-generated/access.h b/zzz_generated/lighting-app/nxp/zap-generated/access.h
index b1932ae..4740402 100644
--- a/zzz_generated/lighting-app/nxp/zap-generated/access.h
+++ b/zzz_generated/lighting-app/nxp/zap-generated/access.h
@@ -35,8 +35,8 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -56,8 +56,8 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -77,8 +77,8 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -97,8 +97,8 @@
     6, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
     8, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -109,8 +109,8 @@
     16387, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
     16384, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -121,8 +121,8 @@
     kMatterAccessPrivilegeManage, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
     kMatterAccessPrivilegeManage, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/lighting-app/nxp/zap-generated/endpoint_config.h b/zzz_generated/lighting-app/nxp/zap-generated/endpoint_config.h
index 8273a65..8b09f0f 100644
--- a/zzz_generated/lighting-app/nxp/zap-generated/endpoint_config.h
+++ b/zzz_generated/lighting-app/nxp/zap-generated/endpoint_config.h
@@ -104,7 +104,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -368,9 +368,6 @@
 
 // Cluster function static arrays
 #define GENERATED_FUNCTION_ARRAYS                                                                                                  \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayIdentifyServer[] = {                                                          \
         (EmberAfGenericClusterFunction) emberAfIdentifyClusterServerInitCallback,                                                  \
         (EmberAfGenericClusterFunction) MatterIdentifyClusterServerAttributeChangedCallback,                                       \
@@ -532,13 +529,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(12), \
       .attributeCount = 14, \
       .clusterSize = 39, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/lighting-app/nxp/zap-generated/gen_config.h b/zzz_generated/lighting-app/nxp/zap-generated/gen_config.h
index 040e3e8..2d3e329 100644
--- a/zzz_generated/lighting-app/nxp/zap-generated/gen_config.h
+++ b/zzz_generated/lighting-app/nxp/zap-generated/gen_config.h
@@ -35,7 +35,7 @@
 #define EMBER_AF_LEVEL_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_GENERAL_COMMISSIONING_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -83,10 +83,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/lighting-app/zap-generated/access.h b/zzz_generated/lighting-app/zap-generated/access.h
index 9bec66a..0b7fcd5 100644
--- a/zzz_generated/lighting-app/zap-generated/access.h
+++ b/zzz_generated/lighting-app/zap-generated/access.h
@@ -36,9 +36,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -61,9 +61,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -86,9 +86,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -110,9 +110,9 @@
     8, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -126,9 +126,9 @@
     16384, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -142,9 +142,9 @@
     kMatterAccessPrivilegeManage, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/lighting-app/zap-generated/endpoint_config.h b/zzz_generated/lighting-app/zap-generated/endpoint_config.h
index 73678f5..9bfeaaf 100644
--- a/zzz_generated/lighting-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/lighting-app/zap-generated/endpoint_config.h
@@ -130,7 +130,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -556,9 +556,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayGroupsServer[] = {                                                            \
         (EmberAfGenericClusterFunction) emberAfGroupsClusterServerInitCallback,                                                    \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -796,13 +793,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(16), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/lighting-app/zap-generated/gen_config.h b/zzz_generated/lighting-app/zap-generated/gen_config.h
index e21b517..65903e9 100644
--- a/zzz_generated/lighting-app/zap-generated/gen_config.h
+++ b/zzz_generated/lighting-app/zap-generated/gen_config.h
@@ -35,7 +35,7 @@
 #define EMBER_AF_LEVEL_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -93,10 +93,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/lock-app/zap-generated/access.h b/zzz_generated/lock-app/zap-generated/access.h
index 01fb394..bcc2b91 100644
--- a/zzz_generated/lock-app/zap-generated/access.h
+++ b/zzz_generated/lock-app/zap-generated/access.h
@@ -35,9 +35,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -67,9 +67,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -99,9 +99,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -130,9 +130,9 @@
     6, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -153,9 +153,9 @@
     16387, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -176,9 +176,9 @@
     kMatterAccessPrivilegeManage, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/lock-app/zap-generated/endpoint_config.h b/zzz_generated/lock-app/zap-generated/endpoint_config.h
index f8de7c7..f84dc63 100644
--- a/zzz_generated/lock-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/lock-app/zap-generated/endpoint_config.h
@@ -155,7 +155,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -569,9 +569,6 @@
 
 // Cluster function static arrays
 #define GENERATED_FUNCTION_ARRAYS                                                                                                  \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -755,13 +752,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/lock-app/zap-generated/gen_config.h b/zzz_generated/lock-app/zap-generated/gen_config.h
index aec5898..a39e48c 100644
--- a/zzz_generated/lock-app/zap-generated/gen_config.h
+++ b/zzz_generated/lock-app/zap-generated/gen_config.h
@@ -33,7 +33,7 @@
 #define EMBER_AF_ON_OFF_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -77,10 +77,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/ota-provider-app/zap-generated/access.h b/zzz_generated/ota-provider-app/zap-generated/access.h
index f4bed20..b2b2f09 100644
--- a/zzz_generated/ota-provider-app/zap-generated/access.h
+++ b/zzz_generated/ota-provider-app/zap-generated/access.h
@@ -34,9 +34,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -56,9 +56,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -78,9 +78,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -99,9 +99,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -112,9 +112,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -125,9 +125,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/ota-provider-app/zap-generated/endpoint_config.h b/zzz_generated/ota-provider-app/zap-generated/endpoint_config.h
index 7dd6799..6e02f75 100644
--- a/zzz_generated/ota-provider-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/ota-provider-app/zap-generated/endpoint_config.h
@@ -108,7 +108,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -268,9 +268,6 @@
 
 // Cluster function static arrays
 #define GENERATED_FUNCTION_ARRAYS                                                                                                  \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -387,13 +384,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(7), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/ota-provider-app/zap-generated/gen_config.h b/zzz_generated/ota-provider-app/zap-generated/gen_config.h
index 05dd1b4..9a6f280 100644
--- a/zzz_generated/ota-provider-app/zap-generated/gen_config.h
+++ b/zzz_generated/ota-provider-app/zap-generated/gen_config.h
@@ -31,7 +31,7 @@
 /**** Cluster endpoint counts ****/
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_TIME_FORMAT_LOCALIZATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -55,10 +55,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the server side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_SERVER
diff --git a/zzz_generated/ota-requestor-app/zap-generated/access.h b/zzz_generated/ota-requestor-app/zap-generated/access.h
index 78fc885..d4dd129 100644
--- a/zzz_generated/ota-requestor-app/zap-generated/access.h
+++ b/zzz_generated/ota-requestor-app/zap-generated/access.h
@@ -35,9 +35,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -58,9 +58,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -81,9 +81,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -103,9 +103,9 @@
     6, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -117,9 +117,9 @@
     16387, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -131,9 +131,9 @@
     kMatterAccessPrivilegeManage, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/ota-requestor-app/zap-generated/endpoint_config.h b/zzz_generated/ota-requestor-app/zap-generated/endpoint_config.h
index de61a63..d852177 100644
--- a/zzz_generated/ota-requestor-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/ota-requestor-app/zap-generated/endpoint_config.h
@@ -116,7 +116,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -338,9 +338,6 @@
 
 // Cluster function static arrays
 #define GENERATED_FUNCTION_ARRAYS                                                                                                  \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -504,13 +501,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/ota-requestor-app/zap-generated/gen_config.h b/zzz_generated/ota-requestor-app/zap-generated/gen_config.h
index e938438..02c5b7f 100644
--- a/zzz_generated/ota-requestor-app/zap-generated/gen_config.h
+++ b/zzz_generated/ota-requestor-app/zap-generated/gen_config.h
@@ -34,7 +34,7 @@
 #define EMBER_AF_ON_OFF_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (3)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -75,10 +75,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/placeholder/app1/zap-generated/access.h b/zzz_generated/placeholder/app1/zap-generated/access.h
index 353b58b..a4d242b 100644
--- a/zzz_generated/placeholder/app1/zap-generated/access.h
+++ b/zzz_generated/placeholder/app1/zap-generated/access.h
@@ -30,9 +30,9 @@
 // Parallel array data (*cluster*, attribute, privilege) for read attribute
 #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \
     /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -60,9 +60,9 @@
 // Parallel array data (cluster, *attribute*, privilege) for read attribute
 #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \
     /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -90,9 +90,9 @@
 // Parallel array data (cluster, attribute, *privilege*) for read attribute
 #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \
     /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -122,9 +122,9 @@
 // Parallel array data (*cluster*, attribute, privilege) for write attribute
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     6, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     258, /* Cluster: Window Covering, Attribute: Mode, Privilege: manage */ \
@@ -147,9 +147,9 @@
 // Parallel array data (cluster, *attribute*, privilege) for write attribute
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     16387, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     23, /* Cluster: Window Covering, Attribute: Mode, Privilege: manage */ \
@@ -172,9 +172,9 @@
 // Parallel array data (cluster, attribute, *privilege*) for write attribute
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeManage, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Window Covering, Attribute: Mode, Privilege: manage */ \
diff --git a/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h b/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h
index 3704c38..0fb412b 100644
--- a/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h
+++ b/zzz_generated/placeholder/app1/zap-generated/endpoint_config.h
@@ -137,7 +137,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) },                                /* FeatureMap */       \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* ClusterRevision */  \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -577,7 +577,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) },                            /* FeatureMap */           \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(5) },                              /* ClusterRevision */      \
                                                                                                                                    \
-            /* Endpoint: 1, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 1, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -648,9 +648,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayOnOffServer[] = {                                                             \
         (EmberAfGenericClusterFunction) emberAfOnOffClusterServerInitCallback,                                                     \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayModeSelectServer[] = {                                                        \
         (EmberAfGenericClusterFunction) emberAfModeSelectClusterServerInitCallback,                                                \
         (EmberAfGenericClusterFunction) MatterModeSelectClusterServerPreAttributeChangedCallback,                                  \
@@ -912,13 +909,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(18), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
@@ -1396,13 +1393,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 1, Cluster: Basic (server) */ \
+      /* Endpoint: 1, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(307), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/placeholder/app1/zap-generated/gen_config.h b/zzz_generated/placeholder/app1/zap-generated/gen_config.h
index 1a34699..ac5c952 100644
--- a/zzz_generated/placeholder/app1/zap-generated/gen_config.h
+++ b/zzz_generated/placeholder/app1/zap-generated/gen_config.h
@@ -37,7 +37,7 @@
 #define EMBER_AF_LEVEL_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACTIONS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (2)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_POWER_SOURCE_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_POWER_SOURCE_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_GENERAL_COMMISSIONING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
@@ -136,10 +136,10 @@
 #define EMBER_AF_PLUGIN_ACTIONS_SERVER
 #define EMBER_AF_PLUGIN_ACTIONS
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the server side of the Power Source Configuration cluster is included
 #define ZCL_USING_POWER_SOURCE_CONFIGURATION_CLUSTER_SERVER
diff --git a/zzz_generated/placeholder/app1/zap-generated/test/Commands.h b/zzz_generated/placeholder/app1/zap-generated/test/Commands.h
index 268e297..0be28d4 100644
--- a/zzz_generated/placeholder/app1/zap-generated/test/Commands.h
+++ b/zzz_generated/placeholder/app1/zap-generated/test/Commands.h
@@ -92,79 +92,79 @@
         }
         case 2: {
             LogStep(2, "Query Data Model Revision");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::DataModelRevision::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::DataModelRevision::Id);
         }
         case 3: {
             LogStep(3, "Query Vendor Name");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::VendorName::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::VendorName::Id);
         }
         case 4: {
             LogStep(4, "Query VendorID");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::VendorID::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::VendorID::Id);
         }
         case 5: {
             LogStep(5, "Query Product Name");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::ProductName::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::ProductName::Id);
         }
         case 6: {
             LogStep(6, "Query ProductID");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::ProductID::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::ProductID::Id);
         }
         case 7: {
             LogStep(7, "Query Node Label");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id);
         }
         case 8: {
             LogStep(8, "Query User Location");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::Location::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::Location::Id);
         }
         case 9: {
             LogStep(9, "Query HardwareVersion");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersion::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::HardwareVersion::Id);
         }
         case 10: {
             LogStep(10, "Query HardwareVersionString");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersionString::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::HardwareVersionString::Id);
         }
         case 11: {
             LogStep(11, "Query SoftwareVersion");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersion::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::SoftwareVersion::Id);
         }
         case 12: {
             LogStep(12, "Query SoftwareVersionString");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersionString::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::SoftwareVersionString::Id);
         }
         case 13: {
             LogStep(13, "Query ManufacturingDate");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::ManufacturingDate::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::ManufacturingDate::Id);
         }
         case 14: {
             LogStep(14, "Query PartNumber");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::PartNumber::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::PartNumber::Id);
         }
         case 15: {
             LogStep(15, "Query ProductURL");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::ProductURL::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::ProductURL::Id);
         }
         case 16: {
             LogStep(16, "Query ProductLabel");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::ProductLabel::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::ProductLabel::Id);
         }
         case 17: {
             LogStep(17, "Query SerialNumber");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::SerialNumber::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::SerialNumber::Id);
         }
         case 18: {
             LogStep(18, "Query LocalConfigDisabled");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::LocalConfigDisabled::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::LocalConfigDisabled::Id);
         }
         case 19: {
             LogStep(19, "Query Reachable");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::Reachable::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::Reachable::Id);
         }
         case 20: {
             LogStep(20, "Query UniqueID");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::UniqueID::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::UniqueID::Id);
         }
         }
         return CHIP_NO_ERROR;
diff --git a/zzz_generated/placeholder/app2/zap-generated/access.h b/zzz_generated/placeholder/app2/zap-generated/access.h
index 353b58b..a4d242b 100644
--- a/zzz_generated/placeholder/app2/zap-generated/access.h
+++ b/zzz_generated/placeholder/app2/zap-generated/access.h
@@ -30,9 +30,9 @@
 // Parallel array data (*cluster*, attribute, privilege) for read attribute
 #define GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER { \
     /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -60,9 +60,9 @@
 // Parallel array data (cluster, *attribute*, privilege) for read attribute
 #define GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE { \
     /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -90,9 +90,9 @@
 // Parallel array data (cluster, attribute, *privilege*) for read attribute
 #define GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE { \
     /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -122,9 +122,9 @@
 // Parallel array data (*cluster*, attribute, privilege) for write attribute
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     6, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     258, /* Cluster: Window Covering, Attribute: Mode, Privilege: manage */ \
@@ -147,9 +147,9 @@
 // Parallel array data (cluster, *attribute*, privilege) for write attribute
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     16387, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     23, /* Cluster: Window Covering, Attribute: Mode, Privilege: manage */ \
@@ -172,9 +172,9 @@
 // Parallel array data (cluster, attribute, *privilege*) for write attribute
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeManage, /* Cluster: On/Off, Attribute: StartUpOnOff, Privilege: manage */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Window Covering, Attribute: Mode, Privilege: manage */ \
diff --git a/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h b/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h
index f0115f9..04db648 100644
--- a/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h
+++ b/zzz_generated/placeholder/app2/zap-generated/endpoint_config.h
@@ -137,7 +137,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) },                                /* FeatureMap */       \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE), ZAP_EMPTY_DEFAULT() }, /* ClusterRevision */  \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -577,7 +577,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) },                            /* FeatureMap */           \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(5) },                              /* ClusterRevision */      \
                                                                                                                                    \
-            /* Endpoint: 1, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 1, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -648,9 +648,6 @@
     const EmberAfGenericClusterFunction chipFuncArrayOnOffServer[] = {                                                             \
         (EmberAfGenericClusterFunction) emberAfOnOffClusterServerInitCallback,                                                     \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayModeSelectServer[] = {                                                        \
         (EmberAfGenericClusterFunction) emberAfModeSelectClusterServerInitCallback,                                                \
         (EmberAfGenericClusterFunction) MatterModeSelectClusterServerPreAttributeChangedCallback,                                  \
@@ -912,13 +909,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(18), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
@@ -1396,13 +1393,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 1, Cluster: Basic (server) */ \
+      /* Endpoint: 1, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(307), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/placeholder/app2/zap-generated/gen_config.h b/zzz_generated/placeholder/app2/zap-generated/gen_config.h
index 1a34699..ac5c952 100644
--- a/zzz_generated/placeholder/app2/zap-generated/gen_config.h
+++ b/zzz_generated/placeholder/app2/zap-generated/gen_config.h
@@ -37,7 +37,7 @@
 #define EMBER_AF_LEVEL_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACTIONS_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (2)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_POWER_SOURCE_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_POWER_SOURCE_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_GENERAL_COMMISSIONING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
@@ -136,10 +136,10 @@
 #define EMBER_AF_PLUGIN_ACTIONS_SERVER
 #define EMBER_AF_PLUGIN_ACTIONS
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the server side of the Power Source Configuration cluster is included
 #define ZCL_USING_POWER_SOURCE_CONFIGURATION_CLUSTER_SERVER
diff --git a/zzz_generated/placeholder/app2/zap-generated/test/Commands.h b/zzz_generated/placeholder/app2/zap-generated/test/Commands.h
index 268e297..0be28d4 100644
--- a/zzz_generated/placeholder/app2/zap-generated/test/Commands.h
+++ b/zzz_generated/placeholder/app2/zap-generated/test/Commands.h
@@ -92,79 +92,79 @@
         }
         case 2: {
             LogStep(2, "Query Data Model Revision");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::DataModelRevision::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::DataModelRevision::Id);
         }
         case 3: {
             LogStep(3, "Query Vendor Name");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::VendorName::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::VendorName::Id);
         }
         case 4: {
             LogStep(4, "Query VendorID");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::VendorID::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::VendorID::Id);
         }
         case 5: {
             LogStep(5, "Query Product Name");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::ProductName::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::ProductName::Id);
         }
         case 6: {
             LogStep(6, "Query ProductID");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::ProductID::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::ProductID::Id);
         }
         case 7: {
             LogStep(7, "Query Node Label");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::NodeLabel::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::NodeLabel::Id);
         }
         case 8: {
             LogStep(8, "Query User Location");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::Location::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::Location::Id);
         }
         case 9: {
             LogStep(9, "Query HardwareVersion");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersion::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::HardwareVersion::Id);
         }
         case 10: {
             LogStep(10, "Query HardwareVersionString");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::HardwareVersionString::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::HardwareVersionString::Id);
         }
         case 11: {
             LogStep(11, "Query SoftwareVersion");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersion::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::SoftwareVersion::Id);
         }
         case 12: {
             LogStep(12, "Query SoftwareVersionString");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::SoftwareVersionString::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::SoftwareVersionString::Id);
         }
         case 13: {
             LogStep(13, "Query ManufacturingDate");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::ManufacturingDate::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::ManufacturingDate::Id);
         }
         case 14: {
             LogStep(14, "Query PartNumber");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::PartNumber::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::PartNumber::Id);
         }
         case 15: {
             LogStep(15, "Query ProductURL");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::ProductURL::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::ProductURL::Id);
         }
         case 16: {
             LogStep(16, "Query ProductLabel");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::ProductLabel::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::ProductLabel::Id);
         }
         case 17: {
             LogStep(17, "Query SerialNumber");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::SerialNumber::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::SerialNumber::Id);
         }
         case 18: {
             LogStep(18, "Query LocalConfigDisabled");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::LocalConfigDisabled::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::LocalConfigDisabled::Id);
         }
         case 19: {
             LogStep(19, "Query Reachable");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::Reachable::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::Reachable::Id);
         }
         case 20: {
             LogStep(20, "Query UniqueID");
-            return WaitAttribute(GetEndpoint(0), Basic::Id, Basic::Attributes::UniqueID::Id);
+            return WaitAttribute(GetEndpoint(0), BasicInformation::Id, BasicInformation::Attributes::UniqueID::Id);
         }
         }
         return CHIP_NO_ERROR;
diff --git a/zzz_generated/pump-app/zap-generated/access.h b/zzz_generated/pump-app/zap-generated/access.h
index b331312..32d943f 100644
--- a/zzz_generated/pump-app/zap-generated/access.h
+++ b/zzz_generated/pump-app/zap-generated/access.h
@@ -34,8 +34,8 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -58,8 +58,8 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -82,8 +82,8 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -105,8 +105,8 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -120,8 +120,8 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -135,8 +135,8 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/pump-app/zap-generated/endpoint_config.h b/zzz_generated/pump-app/zap-generated/endpoint_config.h
index 4aa6448..7c0f3b9 100644
--- a/zzz_generated/pump-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/pump-app/zap-generated/endpoint_config.h
@@ -110,7 +110,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -363,9 +363,6 @@
 
 // Cluster function static arrays
 #define GENERATED_FUNCTION_ARRAYS                                                                                                  \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayIdentifyServer[] = {                                                          \
         (EmberAfGenericClusterFunction) emberAfIdentifyClusterServerInitCallback,                                                  \
         (EmberAfGenericClusterFunction) MatterIdentifyClusterServerAttributeChangedCallback,                                       \
@@ -507,13 +504,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 19, \
       .clusterSize = 39, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/pump-app/zap-generated/gen_config.h b/zzz_generated/pump-app/zap-generated/gen_config.h
index dfade4b..0bb3e89 100644
--- a/zzz_generated/pump-app/zap-generated/gen_config.h
+++ b/zzz_generated/pump-app/zap-generated/gen_config.h
@@ -35,7 +35,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_GENERAL_COMMISSIONING_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -87,10 +87,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/pump-controller-app/zap-generated/access.h b/zzz_generated/pump-controller-app/zap-generated/access.h
index 83ef672..754fe75 100644
--- a/zzz_generated/pump-controller-app/zap-generated/access.h
+++ b/zzz_generated/pump-controller-app/zap-generated/access.h
@@ -34,8 +34,8 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -54,8 +54,8 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -74,8 +74,8 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -93,8 +93,8 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -104,8 +104,8 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -115,8 +115,8 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h b/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h
index 7cda47a..3d245df 100644
--- a/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/pump-controller-app/zap-generated/endpoint_config.h
@@ -101,7 +101,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -278,9 +278,6 @@
 
 // Cluster function static arrays
 #define GENERATED_FUNCTION_ARRAYS                                                                                                  \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayIdentifyServer[] = {                                                          \
         (EmberAfGenericClusterFunction) emberAfIdentifyClusterServerInitCallback,                                                  \
         (EmberAfGenericClusterFunction) MatterIdentifyClusterServerAttributeChangedCallback,                                       \
@@ -394,13 +391,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 19, \
       .clusterSize = 39, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/pump-controller-app/zap-generated/gen_config.h b/zzz_generated/pump-controller-app/zap-generated/gen_config.h
index fd78abd..32de580 100644
--- a/zzz_generated/pump-controller-app/zap-generated/gen_config.h
+++ b/zzz_generated/pump-controller-app/zap-generated/gen_config.h
@@ -34,7 +34,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_GENERAL_COMMISSIONING_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -75,10 +75,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/temperature-measurement-app/zap-generated/access.h b/zzz_generated/temperature-measurement-app/zap-generated/access.h
index 36a6ccc..95e8c49 100644
--- a/zzz_generated/temperature-measurement-app/zap-generated/access.h
+++ b/zzz_generated/temperature-measurement-app/zap-generated/access.h
@@ -34,9 +34,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -56,9 +56,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -78,9 +78,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -99,9 +99,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -112,9 +112,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -125,9 +125,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h b/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h
index f97ce95..6f632a6 100644
--- a/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/temperature-measurement-app/zap-generated/endpoint_config.h
@@ -119,7 +119,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -353,9 +353,6 @@
 
 // Cluster function static arrays
 #define GENERATED_FUNCTION_ARRAYS                                                                                                  \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -472,13 +469,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/temperature-measurement-app/zap-generated/gen_config.h b/zzz_generated/temperature-measurement-app/zap-generated/gen_config.h
index 3d82857..d8aabe1 100644
--- a/zzz_generated/temperature-measurement-app/zap-generated/gen_config.h
+++ b/zzz_generated/temperature-measurement-app/zap-generated/gen_config.h
@@ -31,7 +31,7 @@
 /**** Cluster endpoint counts ****/
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_TIME_FORMAT_LOCALIZATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_UNIT_LOCALIZATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -61,10 +61,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the server side of the Localization Configuration cluster is included
 #define ZCL_USING_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER
diff --git a/zzz_generated/thermostat/zap-generated/access.h b/zzz_generated/thermostat/zap-generated/access.h
index 678689d..857246d 100644
--- a/zzz_generated/thermostat/zap-generated/access.h
+++ b/zzz_generated/thermostat/zap-generated/access.h
@@ -34,9 +34,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -64,9 +64,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -94,9 +94,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -123,9 +123,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -144,9 +144,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -165,9 +165,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/thermostat/zap-generated/endpoint_config.h b/zzz_generated/thermostat/zap-generated/endpoint_config.h
index f8c9620..7223877 100644
--- a/zzz_generated/thermostat/zap-generated/endpoint_config.h
+++ b/zzz_generated/thermostat/zap-generated/endpoint_config.h
@@ -145,7 +145,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -549,9 +549,6 @@
         (EmberAfGenericClusterFunction) emberAfIdentifyClusterServerInitCallback,                                                  \
         (EmberAfGenericClusterFunction) MatterIdentifyClusterServerAttributeChangedCallback,                                       \
     };                                                                                                                             \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -749,13 +746,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(19), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/thermostat/zap-generated/gen_config.h b/zzz_generated/thermostat/zap-generated/gen_config.h
index 86a851c..c23403c 100644
--- a/zzz_generated/thermostat/zap-generated/gen_config.h
+++ b/zzz_generated/thermostat/zap-generated/gen_config.h
@@ -36,7 +36,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_BINDING_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -106,10 +106,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
diff --git a/zzz_generated/tv-app/zap-generated/access.h b/zzz_generated/tv-app/zap-generated/access.h
index a210a00..a73c440 100644
--- a/zzz_generated/tv-app/zap-generated/access.h
+++ b/zzz_generated/tv-app/zap-generated/access.h
@@ -35,9 +35,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -58,9 +58,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -81,9 +81,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -103,9 +103,9 @@
     8, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -117,9 +117,9 @@
     16384, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -131,9 +131,9 @@
     kMatterAccessPrivilegeManage, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/tv-app/zap-generated/endpoint_config.h b/zzz_generated/tv-app/zap-generated/endpoint_config.h
index d19dcc2..43e8704 100644
--- a/zzz_generated/tv-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/tv-app/zap-generated/endpoint_config.h
@@ -181,7 +181,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -697,9 +697,6 @@
 
 // Cluster function static arrays
 #define GENERATED_FUNCTION_ARRAYS                                                                                                  \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -1017,13 +1014,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(16), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/tv-app/zap-generated/gen_config.h b/zzz_generated/tv-app/zap-generated/gen_config.h
index 4a5da8a..8096745 100644
--- a/zzz_generated/tv-app/zap-generated/gen_config.h
+++ b/zzz_generated/tv-app/zap-generated/gen_config.h
@@ -35,7 +35,7 @@
 #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_BINDING_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_TIME_FORMAT_LOCALIZATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -105,10 +105,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the server side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_SERVER
diff --git a/zzz_generated/tv-casting-app/zap-generated/access.h b/zzz_generated/tv-casting-app/zap-generated/access.h
index 2cd9738..83799ab 100644
--- a/zzz_generated/tv-casting-app/zap-generated/access.h
+++ b/zzz_generated/tv-casting-app/zap-generated/access.h
@@ -36,9 +36,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -60,9 +60,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -84,9 +84,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -107,9 +107,9 @@
     8, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -122,9 +122,9 @@
     16384, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -137,9 +137,9 @@
     kMatterAccessPrivilegeManage, /* Cluster: Level Control, Attribute: StartUpCurrentLevel, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h b/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h
index fe6cd52..aca7423 100644
--- a/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/tv-casting-app/zap-generated/endpoint_config.h
@@ -134,7 +134,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -580,9 +580,6 @@
 
 // Cluster function static arrays
 #define GENERATED_FUNCTION_ARRAYS                                                                                                  \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -802,13 +799,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(16), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/tv-casting-app/zap-generated/gen_config.h b/zzz_generated/tv-casting-app/zap-generated/gen_config.h
index e0accdb..caaa6da 100644
--- a/zzz_generated/tv-casting-app/zap-generated/gen_config.h
+++ b/zzz_generated/tv-casting-app/zap-generated/gen_config.h
@@ -41,7 +41,7 @@
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (3)
 #define EMBER_AF_BINDING_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_TIME_FORMAT_LOCALIZATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -148,10 +148,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the server side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_SERVER
diff --git a/zzz_generated/window-app/zap-generated/access.h b/zzz_generated/window-app/zap-generated/access.h
index 39fc7d6..aa40fc5 100644
--- a/zzz_generated/window-app/zap-generated/access.h
+++ b/zzz_generated/window-app/zap-generated/access.h
@@ -34,9 +34,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     49, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -57,9 +57,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     0, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     1, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -80,9 +80,9 @@
     /* Cluster: Access Control, Attribute: SubjectsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: TargetsPerAccessControlEntry, Privilege: view */ \
     /* Cluster: Access Control, Attribute: AccessControlEntriesPerFabric, Privilege: view */ \
-    /* Cluster: Basic, Attribute: NodeLabel, Privilege: view */ \
-    /* Cluster: Basic, Attribute: Location, Privilege: view */ \
-    /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: Location, Privilege: view */ \
+    /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: view */ \
     /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: view */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: MaxNetworks, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: Networks, Privilege: administer */ \
@@ -102,9 +102,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER { \
     31, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     31, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    40, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    40, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    40, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    40, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     48, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     49, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     63, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -116,9 +116,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE { \
     0, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     1, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    5, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    6, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    16, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    5, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    6, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    16, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     0, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     4, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     0, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
@@ -130,9 +130,9 @@
 #define GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE { \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: ACL, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Access Control, Attribute: Extension, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: NodeLabel, Privilege: manage */ \
-    kMatterAccessPrivilegeAdminister, /* Cluster: Basic, Attribute: Location, Privilege: administer */ \
-    kMatterAccessPrivilegeManage, /* Cluster: Basic, Attribute: LocalConfigDisabled, Privilege: manage */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: NodeLabel, Privilege: manage */ \
+    kMatterAccessPrivilegeAdminister, /* Cluster: Basic Information, Attribute: Location, Privilege: administer */ \
+    kMatterAccessPrivilegeManage, /* Cluster: Basic Information, Attribute: LocalConfigDisabled, Privilege: manage */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: General Commissioning, Attribute: Breadcrumb, Privilege: administer */ \
     kMatterAccessPrivilegeAdminister, /* Cluster: Network Commissioning, Attribute: InterfaceEnabled, Privilege: administer */ \
     kMatterAccessPrivilegeManage, /* Cluster: Group Key Management, Attribute: GroupKeyMap, Privilege: manage */ \
diff --git a/zzz_generated/window-app/zap-generated/endpoint_config.h b/zzz_generated/window-app/zap-generated/endpoint_config.h
index 616881a..0127edd 100644
--- a/zzz_generated/window-app/zap-generated/endpoint_config.h
+++ b/zzz_generated/window-app/zap-generated/endpoint_config.h
@@ -119,7 +119,7 @@
             { 0x0000FFFC, ZAP_TYPE(BITMAP32), 4, 0, ZAP_SIMPLE_DEFAULT(0) }, /* FeatureMap */                                      \
             { 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) },   /* ClusterRevision */                                 \
                                                                                                                                    \
-            /* Endpoint: 0, Cluster: Basic (server) */                                                                             \
+            /* Endpoint: 0, Cluster: Basic Information (server) */                                                                 \
             { 0x00000000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),               \
               ZAP_EMPTY_DEFAULT() }, /* DataModelRevision */                                                                       \
             { 0x00000001, ZAP_TYPE(CHAR_STRING), 33, ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(SINGLETON),         \
@@ -599,9 +599,6 @@
 
 // Cluster function static arrays
 #define GENERATED_FUNCTION_ARRAYS                                                                                                  \
-    const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = {                                                             \
-        (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback,                                                     \
-    };                                                                                                                             \
     const EmberAfGenericClusterFunction chipFuncArrayLocalizationConfigurationServer[] = {                                         \
         (EmberAfGenericClusterFunction) emberAfLocalizationConfigurationClusterServerInitCallback,                                 \
         (EmberAfGenericClusterFunction) MatterLocalizationConfigurationClusterServerPreAttributeChangedCallback,                   \
@@ -828,13 +825,13 @@
       .generatedCommandList = nullptr ,\
     },\
   { \
-      /* Endpoint: 0, Cluster: Basic (server) */ \
+      /* Endpoint: 0, Cluster: Basic Information (server) */ \
       .clusterId = 0x00000028,  \
       .attributes = ZAP_ATTRIBUTE_INDEX(13), \
       .attributeCount = 22, \
       .clusterSize = 41, \
-      .mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
-      .functions = chipFuncArrayBasicServer, \
+      .mask = ZAP_CLUSTER_MASK(SERVER), \
+      .functions = NULL, \
       .acceptedCommandList = nullptr ,\
       .generatedCommandList = nullptr ,\
     },\
diff --git a/zzz_generated/window-app/zap-generated/gen_config.h b/zzz_generated/window-app/zap-generated/gen_config.h
index a727294..efa2d5d 100644
--- a/zzz_generated/window-app/zap-generated/gen_config.h
+++ b/zzz_generated/window-app/zap-generated/gen_config.h
@@ -34,7 +34,7 @@
 #define EMBER_AF_SCENES_CLUSTER_SERVER_ENDPOINT_COUNT (2)
 #define EMBER_AF_DESCRIPTOR_CLUSTER_SERVER_ENDPOINT_COUNT (3)
 #define EMBER_AF_ACCESS_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1)
-#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1)
+#define EMBER_AF_BASIC_INFORMATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT_ENDPOINT_COUNT (1)
 #define EMBER_AF_OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER_SERVER_ENDPOINT_COUNT (1)
 #define EMBER_AF_LOCALIZATION_CONFIGURATION_CLUSTER_SERVER_ENDPOINT_COUNT (1)
@@ -94,10 +94,10 @@
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL_SERVER
 #define EMBER_AF_PLUGIN_ACCESS_CONTROL
 
-// Use this macro to check if the server side of the Basic cluster is included
-#define ZCL_USING_BASIC_CLUSTER_SERVER
-#define EMBER_AF_PLUGIN_BASIC_SERVER
-#define EMBER_AF_PLUGIN_BASIC
+// Use this macro to check if the server side of the Basic Information cluster is included
+#define ZCL_USING_BASIC_INFORMATION_CLUSTER_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION_SERVER
+#define EMBER_AF_PLUGIN_BASIC_INFORMATION
 
 // Use this macro to check if the client side of the OTA Software Update Provider cluster is included
 #define ZCL_USING_OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER_CLIENT
