diff --git a/README.md b/README.md
index 665c6ca..3dce1ea 100644
--- a/README.md
+++ b/README.md
@@ -40,6 +40,7 @@
 - [ZAP Template Helpers](docs/helpers.md)
 - [ZAP External Template Helpers](docs/external-helpers.md)
 - [ZAP file Extensions](docs/zap-file-extensions.md)
+- [Upgrading ZAP files with GSDK upgrades](docs/zap-file-upgrade.md)
 - [FAQ/Developer dependencies](docs/faq.md)
 - [Release instructions](docs/release.md)
 - [Development Instructions](docs/development-instructions.md)
diff --git a/apack.json b/apack.json
index 6c5bb2c..4a887c7 100644
--- a/apack.json
+++ b/apack.json
@@ -4,8 +4,9 @@
   "description": "Graphical configuration tool for application and libraries based on Zigbee Cluster Library.",
   "path": [".", "node_modules/.bin/", "ZAP.app/Contents/MacOS"],
   "requiredFeatureLevel": "apack.core:9",
-  "featureLevel": 106,
+  "featureLevel": 107,
   "uc.triggerExtension": "zap",
+  "uc.sdkProvidedProperties": "zcl.matterZclJsonFile,zcl.matterTemplateJsonFile,zcl.zigbeeZclJsonFile,zcl.zigbeeTemplateJsonFile",
   "executable": {
     "zap:win32.x86_64": {
       "exe": "zap.exe",
@@ -74,10 +75,10 @@
       "cmd": "$(zap-cli) --version"
     },
     "uc_generate": {
-      "cmd": "$(zap-cli) generate --noUi --noServer -o ${generationOutput} --packageMatch fuzzy --zcl ${sdkRoot}/app/zcl/zcl-zap.json --zcl ${sdkRoot}/extension/matter_extension/src/app/zap-templates/zcl/zcl.json --generationTemplate ${sdkRoot}/protocol/zigbee/app/framework/gen-template/gen-templates.json --generationTemplate ${sdkRoot}/extension/matter_extension/src/app/zap-templates/app-templates.json --in ${contentFolder} --noLoadingFailure --appendGenerationSubdirectory --upgradeZapFile"
+      "cmd": "$(zap-cli) generate --noUi --noServer -o ${generationOutput} --packageMatch fuzzy [ --zcl ${zcl.zigbeeZclJsonFile} | --zcl ${sdkRoot}/app/zcl/zcl-zap.json ] [ --zcl ${zcl.matterZclJsonFile} | --zcl ${sdkRoot}/extension/matter_extension/src/app/zap-templates/zcl/zcl.json ] [ --generationTemplate ${zcl.zigbeeTemplateJsonFile} | --generationTemplate ${sdkRoot}/protocol/zigbee/app/framework/gen-template/gen-templates.json ] [ --generationTemplate ${zcl.matterTemplateJsonFile} | --generationTemplate ${sdkRoot}/extension/matter_extension/src/app/zap-templates/app-templates.json ] --in ${contentFolder} --noLoadingFailure --appendGenerationSubdirectory --upgradeZapFile"
     },
     "uc_upgrade": {
-      "cmd": "$(zap-cli) upgrade  --results ${results} -d ${tempContentFolder} --zcl ${sdkRoot}/app/zcl/zcl-zap.json --zcl ${sdkRoot}/extension/matter_extension/src/app/zap-templates/zcl/zcl.json --generationTemplate ${sdkRoot}/protocol/zigbee/app/framework/gen-template/gen-templates.json --generationTemplate ${sdkRoot}/extension/matter_extension/src/app/zap-templates/app-templates.json --noLoadingFailure"
+      "cmd": "$(zap-cli) upgrade --results ${results} -d ${tempContentFolder} [ --zcl ${zcl.zigbeeZclJsonFile} | --zcl ${sdkRoot}/app/zcl/zcl-zap.json ] [ --zcl ${zcl.matterZclJsonFile} | --zcl ${sdkRoot}/extension/matter_extension/src/app/zap-templates/zcl/zcl.json ] [ --generationTemplate ${zcl.zigbeeTemplateJsonFile} | --generationTemplate ${sdkRoot}/protocol/zigbee/app/framework/gen-template/gen-templates.json ] [ --generationTemplate ${zcl.matterTemplateJsonFile} | --generationTemplate ${sdkRoot}/extension/matter_extension/src/app/zap-templates/app-templates.json ] --noLoadingFailure"
     },
     "zapHelp": {
       "cmd": "$(zap) --help"
@@ -86,7 +87,7 @@
       "cmd": "$(zap) selfCheck"
     },
     "zapServer": {
-      "cmd": "$(zap) server --reuseZapInstance --packageMatch fuzzy --zcl ${sdkRoot}/app/zcl/zcl-zap.json --zcl ${sdkRoot}/extension/matter_extension/src/app/zap-templates/zcl/zcl.json --generationTemplate ${sdkRoot}/protocol/zigbee/app/framework/gen-template/gen-templates.json --generationTemplate ${sdkRoot}/extension/matter_extension/src/app/zap-templates/app-templates.json --studioHttpPort ${studioHttpPort} --noLoadingFailure --appendGenerationSubdirectory"
+      "cmd": "$(zap) server --reuseZapInstance --packageMatch fuzzy [ --zcl ${zcl.zigbeeZclJsonFile} | --zcl ${sdkRoot}/app/zcl/zcl-zap.json ] [ --zcl ${zcl.matterZclJsonFile} | --zcl ${sdkRoot}/extension/matter_extension/src/app/zap-templates/zcl/zcl.json ] [ --generationTemplate ${zcl.zigbeeTemplateJsonFile} | --generationTemplate ${sdkRoot}/protocol/zigbee/app/framework/gen-template/gen-templates.json ] [ --generationTemplate ${zcl.matterTemplateJsonFile} | --generationTemplate ${sdkRoot}/extension/matter_extension/src/app/zap-templates/app-templates.json ] --studioHttpPort ${studioHttpPort} --noLoadingFailure --appendGenerationSubdirectory"
     },
     "zapStop": {
       "cmd": "$(zap) stop --reuseZapInstance"
@@ -98,16 +99,16 @@
       "cmd": "$(zap) server --reuseZapInstance --studioHttpPort ${studioHttpPort}"
     },
     "zapFull": {
-      "cmd": "$(zap) --showUrl --zcl ${sdkRoot}/app/zcl/zcl-zap.json"
+      "cmd": "$(zap) --showUrl [ --zcl ${zcl.zigbeeZclJsonFile} | --zcl ${sdkRoot}/app/zcl/zcl-zap.json ]"
     },
     "zapRegenSdk": {
       "cmd": "$(zap) regenerateSdk --sdk ${sdkJsonFile}"
     },
     "zapIscConvert": {
-      "cmd": "$(zap) convert --noUi --noServer --noZapFileLog --zcl ${sdkRoot}/app/zcl/zcl-zap.json --out ${outFile} ${inFile}"
+      "cmd": "$(zap) convert --noUi --noServer --noZapFileLog [ --zcl ${zcl.zigbeeZclJsonFile} | --zcl ${sdkRoot}/app/zcl/zcl-zap.json ] --out ${outFile} ${inFile}"
     },
     "zapIscOpen": {
-      "cmd": "$(zap) --noServer --zcl ${sdkRoot}/app/zcl/zcl-zap.json --generationTemplate ${sdkRoot}/protocol/zigbee/app/framework/gen-template/gen-teplates.json ${inFile}"
+      "cmd": "$(zap) --noServer [ --zcl ${zcl.zigbeeZclJsonFile} | --zcl ${sdkRoot}/app/zcl/zcl-zap.json ] [ --generationTemplate ${zcl.zigbeeTemplateJsonFile} | --generationTemplate ${sdkRoot}/protocol/zigbee/app/framework/gen-template/gen-templates.json ] ${inFile}"
     }
   }
 }
diff --git a/docs/api.md b/docs/api.md
index 83fa303..06d0d29 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -8915,6 +8915,7 @@
     * [~access_aggregate(options)](#module_Templating API_ Access helpers..access_aggregate)
     * [~access(options)](#module_Templating API_ Access helpers..access)
     * [~default_access(options)](#module_Templating API_ Access helpers..default_access) ⇒
+    * [~chip_get_access_role(options)](#module_Templating API_ Access helpers..chip_get_access_role) ⇒ <code>string</code>
 
 <a name="module_Templating API_ Access helpers..collectDefaultAccessList"></a>
 
@@ -8979,6 +8980,18 @@
 | --- | --- |
 | options | <code>\*</code> | 
 
+<a name="module_Templating API_ Access helpers..chip_get_access_role"></a>
+
+### Templating API: Access helpers~chip\_get\_access\_role(options) ⇒ <code>string</code>
+Determines the access role for a given entity and operation.
+
+**Kind**: inner method of [<code>Templating API: Access helpers</code>](#module_Templating API_ Access helpers)  
+**Returns**: <code>string</code> - The access role.  
+
+| Param | Type |
+| --- | --- |
+| options | <code>\*</code> | 
+
 <a name="module_Templating API_ Attribute helpers"></a>
 
 ## Templating API: Attribute helpers
@@ -15038,7 +15051,8 @@
 <a name="module_REST API_ user data..httpPostCheckConformOnFeatureUpdate"></a>
 
 ### REST API: user data~httpPostCheckConformOnFeatureUpdate(db) ⇒
-HTTP POST: elements to be updated after toggle a device type feature
+HTTP POST: elements to be updated after toggle a device type feature.
+Set related warnings if user confirmed the change or change is disabled.
 
 **Kind**: inner method of [<code>REST API: user data</code>](#module_REST API_ user data)  
 **Returns**: callback for the express uri registration  
@@ -16373,7 +16387,8 @@
 <a name="module_REST API_ user data..httpPostCheckConformOnFeatureUpdate"></a>
 
 ### REST API: user data~httpPostCheckConformOnFeatureUpdate(db) ⇒
-HTTP POST: elements to be updated after toggle a device type feature
+HTTP POST: elements to be updated after toggle a device type feature.
+Set related warnings if user confirmed the change or change is disabled.
 
 **Kind**: inner method of [<code>REST API: user data</code>](#module_REST API_ user data)  
 **Returns**: callback for the express uri registration  
@@ -17699,7 +17714,7 @@
 * [JS API: async reporting](#module_JS API_ async reporting)
     * [~sendDirtyFlagStatus(db, session)](#module_JS API_ async reporting..sendDirtyFlagStatus)
     * [~sendNotificationUpdate(db, session)](#module_JS API_ async reporting..sendNotificationUpdate)
-    * [~startAsyncReporting(db, intervalMs)](#module_JS API_ async reporting..startAsyncReporting)
+    * [~startAsyncReporting(db)](#module_JS API_ async reporting..startAsyncReporting)
     * [~stopAsyncReporting()](#module_JS API_ async reporting..stopAsyncReporting)
 
 <a name="module_JS API_ async reporting..sendDirtyFlagStatus"></a>
@@ -17728,7 +17743,7 @@
 
 <a name="module_JS API_ async reporting..startAsyncReporting"></a>
 
-### JS API: async reporting~startAsyncReporting(db, intervalMs)
+### JS API: async reporting~startAsyncReporting(db)
 Start the interval that will check and report dirty flags.
 
 **Kind**: inner method of [<code>JS API: async reporting</code>](#module_JS API_ async reporting)  
@@ -17736,7 +17751,6 @@
 | Param | Type |
 | --- | --- |
 | db | <code>\*</code> | 
-| intervalMs | <code>\*</code> | 
 
 <a name="module_JS API_ async reporting..stopAsyncReporting"></a>
 
@@ -17935,6 +17949,7 @@
     * [.logBrowser(msg, err)](#module_JS API_ Environment utilities.logBrowser)
     * [.logIpc(msg, err)](#module_JS API_ Environment utilities.logIpc)
     * [.logDebug(msg, err)](#module_JS API_ Environment utilities.logDebug)
+    * [.logWarningToFile(msg)](#module_JS API_ Environment utilities.logWarningToFile)
     * [.isMatchingVersion(versionsArray, providedVersion)](#module_JS API_ Environment utilities.isMatchingVersion) ⇒
     * [.versionsCheck()](#module_JS API_ Environment utilities.versionsCheck) ⇒
     * [.httpStaticContent()](#module_JS API_ Environment utilities.httpStaticContent) ⇒
@@ -18244,6 +18259,17 @@
 | msg | <code>\*</code> | 
 | err | <code>\*</code> | 
 
+<a name="module_JS API_ Environment utilities.logWarningToFile"></a>
+
+### JS API: Environment utilities.logWarningToFile(msg)
+Log Warning level message to zap.log file.
+
+**Kind**: static method of [<code>JS API: Environment utilities</code>](#module_JS API_ Environment utilities)  
+
+| Param | Type |
+| --- | --- |
+| msg | <code>\*</code> | 
+
 <a name="module_JS API_ Environment utilities.isMatchingVersion"></a>
 
 ### JS API: Environment utilities.isMatchingVersion(versionsArray, providedVersion) ⇒
@@ -20187,6 +20213,7 @@
         * [~evaluateBooleanExpression(expr)](#module_Validation API_ Evaluate conformance expressions..evaluateConformanceExpression..evaluateBooleanExpression)
         * [~evaluateWithParentheses(expr)](#module_Validation API_ Evaluate conformance expressions..evaluateConformanceExpression..evaluateWithParentheses)
     * [~checkMissingTerms(expression, elementMap)](#module_Validation API_ Evaluate conformance expressions..checkMissingTerms) ⇒
+    * [~checkIfExpressionHasTerm(expression, term)](#module_Validation API_ Evaluate conformance expressions..checkIfExpressionHasTerm) ⇒
 
 <a name="module_Validation API_ Evaluate conformance expressions..evaluateConformanceExpression"></a>
 
@@ -20247,6 +20274,19 @@
 | expression | <code>\*</code> | 
 | elementMap | <code>\*</code> | 
 
+<a name="module_Validation API_ Evaluate conformance expressions..checkIfExpressionHasTerm"></a>
+
+### Validation API: Evaluate conformance expressions~checkIfExpressionHasTerm(expression, term) ⇒
+Check if the expression contains a given term.
+
+**Kind**: inner method of [<code>Validation API: Evaluate conformance expressions</code>](#module_Validation API_ Evaluate conformance expressions)  
+**Returns**: true if the expression contains the term, false otherwise  
+
+| Param |
+| --- |
+| expression | 
+| term | 
+
 <a name="module_Validation API_ Parse conformance data from XML"></a>
 
 ## Validation API: Parse conformance data from XML
@@ -20256,6 +20296,7 @@
 * [Validation API: Parse conformance data from XML](#module_Validation API_ Parse conformance data from XML)
     * [~parseConformanceFromXML(operand)](#module_Validation API_ Parse conformance data from XML..parseConformanceFromXML) ⇒
     * [~parseConformanceRecursively(operand, depth, parentJoinChar)](#module_Validation API_ Parse conformance data from XML..parseConformanceRecursively) ⇒
+    * [~getOptionalAttributeFromXML(element, elementType)](#module_Validation API_ Parse conformance data from XML..getOptionalAttributeFromXML) ⇒
 
 <a name="module_Validation API_ Parse conformance data from XML..parseConformanceFromXML"></a>
 
@@ -20317,6 +20358,23 @@
 | depth | <code>\*</code> | <code>0</code> | 
 | parentJoinChar | <code>\*</code> |  | 
 
+<a name="module_Validation API_ Parse conformance data from XML..getOptionalAttributeFromXML"></a>
+
+### Validation API: Parse conformance data from XML~getOptionalAttributeFromXML(element, elementType) ⇒
+if optional attribute is defined, return its value
+if optional attribute is undefined, check if the element conformance is mandatory
+if both optional attribute and conformance are undefined, return false
+Optional attribute takes precedence over conformance for backward compatibility on certain elements
+Log warnings to zap.log if both optional attribute and conformance are defined
+
+**Kind**: inner method of [<code>Validation API: Parse conformance data from XML</code>](#module_Validation API_ Parse conformance data from XML)  
+**Returns**: true if the element is optional, false if the element is mandatory  
+
+| Param | Type |
+| --- | --- |
+| element | <code>\*</code> | 
+| elementType | <code>\*</code> | 
+
 <a name="module_Validation API_ Validation APIs"></a>
 
 ## Validation API: Validation APIs
diff --git a/docs/helpers.md b/docs/helpers.md
index c86404f..a04a995 100644
--- a/docs/helpers.md
+++ b/docs/helpers.md
@@ -54,6 +54,7 @@
     * [~access_aggregate(options)](#module_Templating API_ Access helpers..access_aggregate)
     * [~access(options)](#module_Templating API_ Access helpers..access)
     * [~default_access(options)](#module_Templating API_ Access helpers..default_access) ⇒
+    * [~chip_get_access_role(options)](#module_Templating API_ Access helpers..chip_get_access_role) ⇒ <code>string</code>
 
 <a name="module_Templating API_ Access helpers..collectDefaultAccessList"></a>
 
@@ -118,6 +119,18 @@
 | --- | --- |
 | options | <code>\*</code> | 
 
+<a name="module_Templating API_ Access helpers..chip_get_access_role"></a>
+
+### Templating API: Access helpers~chip\_get\_access\_role(options) ⇒ <code>string</code>
+Determines the access role for a given entity and operation.
+
+**Kind**: inner method of [<code>Templating API: Access helpers</code>](#module_Templating API_ Access helpers)  
+**Returns**: <code>string</code> - The access role.  
+
+| Param | Type |
+| --- | --- |
+| options | <code>\*</code> | 
+
 <a name="module_Templating API_ Attribute helpers"></a>
 
 ## Templating API: Attribute helpers
diff --git a/docs/zap-file-upgrade.md b/docs/zap-file-upgrade.md
new file mode 100644
index 0000000..542cf22
--- /dev/null
+++ b/docs/zap-file-upgrade.md
@@ -0,0 +1,91 @@
+# Upgrading ZAP Files with SDK upgrades
+
+## Overview
+
+Upgrading ZAP files is a critical step when transitioning to newer versions of the SDK. This process ensures compatibility with the latest features, bug fixes, and improvements provided by the SDK. By following the upgrade guidelines, you can maintain the integrity of your ZAP configuration files and avoid potential issues during development or deployment. This document outlines the steps and best practices for performing ZAP file upgrades effectively.
+
+## How to upgrade the ZAP File?
+
+Run the following command to update your .zap file
+
+```bash
+"${Path to ZAP executable} upgrade  --results ${path to .yaml file to see results of upgrade} -d ${directory containing ZAP files} --zcl ${path to zcl json file} --generationTemplate ${path to templates json file} --noLoadingFailure"
+```
+
+## How to add upgrade rules for .zap files through your SDK
+
+### - Create an `upgrade-rules.json` file with the following information if one already does not exist
+
+```json
+{
+  "version": 1,
+  "description": "Upgrade Rules for Zigbee .zap files",
+  "category": "matter",
+  "upgradeRuleScripts": [
+    {
+      "path": "../../test/resource/test-matter-attribute-default-value-update.js",
+      "priority": 101
+    },
+    {
+      "path": "../../test/resource/test-attribute-default-value-update.js",
+      "priority": 100
+    }
+  ]
+}
+```
+
+**category**: Determines that these upgrade rules need to run for matter.
+
+**upgradeRuleScripts**: List of upgrade rules to run on .zap files. Includes the relative path from upgrade-rules.json to the upgrade scripts written in Javascript. Priority determines the order of execution for the upgrade rules. The scripts are run in order of priority with lower number signifying higher priority.
+
+### - Add relative path to the upgrade-rules.json from your zcl.json file
+
+```json
+"upgradeRules": "./upgrade-rules-matter.json"
+```
+
+### - Creating your own javascript upgrade rule
+
+Add a postLoad function as below with api and context as parameters. Api argument gives access to all APIs that can be used within the `postLoad` function. [Refer to the post-import API documentation](../src-electron/util/post-import-api.js) . Context gives the state of the Data-Model/ZCL with respect to the .zap file that will be passied along to the API calls.
+
+```javascript
+// Example upgrade rule to update default value of Level Control cluster attribute in Matter.
+async function postLoad(api, context) {
+  let resMsg = ''
+  let epts = await api.endpoints(context)
+  for (let i = 0; i < epts.length; i++) {
+    let clusters = await api.clusters(context, epts[i])
+    for (let j = 0; j < clusters.length; j++) {
+      if (clusters[j].code == '0x0008') {
+        let attributes = await api.attributes(context, epts[i], clusters[j])
+        for (let k = 0; k < attributes.length; k++) {
+          let attributeCode = parseInt(attributes[k].code)
+          let attributeValue = parseInt(attributes[k].defaultValue)
+          if (
+            attributeCode == 0 &&
+            (attributeValue == 0 || !attributeValue || attributeValue == 'null')
+          ) {
+            let params = [
+              {
+                key: context.updateKey.attributeDefault,
+                value: 10
+              }
+            ]
+            await api.updateAttribute(
+              context,
+              epts[i],
+              clusters[j],
+              attributes[k],
+              params
+            )
+            resMsg += `Current Value attribute's default value updated to 10 for Level Control cluster on endpoint ${epts[i].endpointIdentifier} ${epts[i].category}\n`
+          }
+        }
+      }
+    }
+  }
+  return { message: resMsg, status: 'automatic' } // Status can be 'nothing', 'automatic', 'user_verification', 'impossible'.
+}
+
+exports.postLoad = postLoad
+```
diff --git a/src-electron/db/db-api.js b/src-electron/db/db-api.js
index a1bab73..cb63acf 100644
--- a/src-electron/db/db-api.js
+++ b/src-electron/db/db-api.js
@@ -26,6 +26,7 @@
 const fsp = fs.promises
 const env = require('../util/env')
 const util = require('../util/util.js')
+const asyncReporting = require('../util/async-reporting.js')
 const dbEnum = require('../../src-shared/db-enum.js')
 const dbCache = require('./db-cache')
 const dbMapping = require('./db-mapping.js')
@@ -355,6 +356,8 @@
  * @returns A promise that resolves without an argument or rejects with error from the database closing.
  */
 async function closeDatabase(database) {
+  database._closed = true // Mark the database as closed
+  asyncReporting.stopAsyncReporting()
   dbCache.clear()
   return new Promise((resolve, reject) => {
     env.logSql('About to close database.')
@@ -372,6 +375,8 @@
  * @param {*} database
  */
 function closeDatabaseSync(database) {
+  database._closed = true // Mark the database as closed
+  asyncReporting.stopAsyncReporting()
   dbCache.clear()
   env.logSql('About to close database.')
   database.close((err) => {
diff --git a/src-electron/db/query-config.js b/src-electron/db/query-config.js
index 233ecca..4701283 100644
--- a/src-electron/db/query-config.js
+++ b/src-electron/db/query-config.js
@@ -230,7 +230,7 @@
       )
     // only set featureMap bit to 1 for mandatory features
     let featureMapBitsToBeEnabled = featuresOnEndpointTypeAndCluster
-      .filter((f) => f.conformance == 'M')
+      .filter((f) => f.conformance == dbEnum.conformance.mandatory)
       .map((f) => f.featureBit)
     featureMapBitsToBeEnabled.forEach(
       (featureBit) =>
diff --git a/src-electron/db/query-endpoint.js b/src-electron/db/query-endpoint.js
index b446489..e04c5bc 100644
--- a/src-electron/db/query-endpoint.js
+++ b/src-electron/db/query-endpoint.js
@@ -31,9 +31,39 @@
  *
  * @param {*} db
  * @param {*} sessionId
+ * @param {*} category
  * @returns Promise resolving into all endpoints.
  */
-async function selectAllEndpoints(db, sessionId) {
+async function selectAllEndpoints(db, sessionId, category = null) {
+  let categorySqlJoinString = category
+    ? `
+LEFT JOIN
+  ENDPOINT_TYPE
+ON
+  E1.ENDPOINT_TYPE_REF = ENDPOINT_TYPE.ENDPOINT_TYPE_ID
+LEFT JOIN
+  ENDPOINT_TYPE_DEVICE
+ON
+  ENDPOINT_TYPE_DEVICE.ENDPOINT_TYPE_REF = ENDPOINT_TYPE.ENDPOINT_TYPE_ID
+LEFT JOIN
+  DEVICE_TYPE
+ON
+  ENDPOINT_TYPE_DEVICE.DEVICE_TYPE_REF = DEVICE_TYPE.DEVICE_TYPE_ID
+LEFT JOIN
+  PACKAGE
+ON
+  PACKAGE.PACKAGE_ID = DEVICE_TYPE.PACKAGE_REF`
+    : ``
+
+  let categorySqlSelectString = category
+    ? `,
+  PACKAGE.CATEGORY`
+    : ``
+
+  let categorySqlWhereString = category
+    ? `AND
+  PACKAGE.CATEGORY = '${category}'`
+    : ``
   let rows = await dbApi.dbAll(
     db,
     `
@@ -46,18 +76,23 @@
   E1.NETWORK_IDENTIFIER,
   E2.ENDPOINT_ID AS PARENT_ENDPOINT_REF,
   E2.ENDPOINT_IDENTIFIER AS PARENT_ENDPOINT_IDENTIFIER
+  ${categorySqlSelectString}
 FROM
   ENDPOINT AS E1
 LEFT JOIN
   ENDPOINT AS E2
 ON
   E2.ENDPOINT_ID = E1.PARENT_ENDPOINT_REF
-WHERE E1.SESSION_REF = ?
-ORDER BY E1.ENDPOINT_IDENTIFIER
+${categorySqlJoinString}
+WHERE
+  E1.SESSION_REF = ?
+${categorySqlWhereString}
+ORDER BY
+  E1.ENDPOINT_IDENTIFIER
     `,
     [sessionId]
   )
-  return rows.map(dbMapping.map.endpoint)
+  return rows.map(dbMapping.map.endpointExtended)
 }
 
 /**
@@ -197,6 +232,7 @@
   return rows.map((row) => {
     return {
       clusterId: row['CLUSTER_ID'],
+      id: row['CLUSTER_ID'],
       endpointTypeId: row['ENDPOINT_TYPE_REF'],
       endpointTypeClusterId: row['ENDPOINT_TYPE_CLUSTER_ID'],
       hexCode: '0x' + bin.int16ToHex(row['CODE']),
diff --git a/src-electron/generator/helper-access.js b/src-electron/generator/helper-access.js
index 88df9a6..73c007b 100644
--- a/src-electron/generator/helper-access.js
+++ b/src-electron/generator/helper-access.js
@@ -237,6 +237,33 @@
   return templateUtil.templatePromise(this.global, p)
 }
 
+/**
+ * Determines the access role for a given entity and operation.
+ *
+ * @param {*} options
+ * @returns {string} The access role.
+ */
+async function chip_get_access_role(options) {
+  if (!('op' in options.hash)) {
+    throw new Error('Access helper requires op from the op="<op>" option.')
+  }
+
+  const op = options.hash.op
+  const accessList = await collectAccesslist(this, options)
+  const accessForOp = accessList.find((a) => a.operation === op)
+
+  if (accessForOp?.role) {
+    return accessForOp.role
+  }
+
+  if ('default' in options.hash) {
+    return options.hash.default
+  }
+
+  return ''
+}
+
 exports.access = access
 exports.access_aggregate = access_aggregate
 exports.default_access = default_access
+exports.chip_get_access_role = chip_get_access_role
diff --git a/src-electron/generator/matter/app/zap-templates/templates/app/helper.js b/src-electron/generator/matter/app/zap-templates/templates/app/helper.js
index 84c8c30..fc0bd67 100644
--- a/src-electron/generator/matter/app/zap-templates/templates/app/helper.js
+++ b/src-electron/generator/matter/app/zap-templates/templates/app/helper.js
@@ -534,6 +534,20 @@
   const preserveAcronyms = options && options.hash.preserveAcronyms;
   return string.tokensIntoCamelCase(label, false, preserveAcronyms);
 }
+/**
+ * Same as asUpperCamelCase, but with a special case for "RFID".
+ * Special case for cluster specific object files for Matter.
+ *
+ * @param {*} label
+ * @param {*} options
+ * @returns {string}
+ */
+function chip_name_for_id_usage(label, options) {
+  if (label == 'RFID') {
+    return 'Rfid';
+  }
+  return asUpperCamelCase(label, options);
+}
 
 function chip_friendly_endpoint_type_name(options) {
   let name = this.endpointTypeName;
@@ -1212,6 +1226,7 @@
   zcl_commands_that_need_timed_invoke;
 exports.if_is_fabric_scoped_struct = if_is_fabric_scoped_struct;
 exports.if_is_non_zero_default = if_is_non_zero_default;
+exports.chip_name_for_id_usage = chip_name_for_id_usage;
 
 exports.meta = {
   category: dbEnum.helperCategory.matter,
diff --git a/src-electron/ide-integration/studio-rest-api.js b/src-electron/ide-integration/studio-rest-api.js
index b50e335..dcb29e4 100644
--- a/src-electron/ide-integration/studio-rest-api.js
+++ b/src-electron/ide-integration/studio-rest-api.js
@@ -137,6 +137,31 @@
 }
 
 /**
+ * Retry connecting to the Studio server until it is ready.
+ * @param {string} url - The URL to connect to.
+ * @param {number} retries - Number of retry attempts.
+ * @param {number} delay - Delay between retries in milliseconds.
+ * @returns {Promise} - Resolves when the connection is successful, rejects if it fails.
+ */
+async function waitForServer(url, retries = 5, delay = 2000) {
+  for (let attempt = 1; attempt <= retries; attempt++) {
+    try {
+      let response = await axios.get(url)
+      if (response.status === 200) {
+        return response // Server is ready
+      }
+    } catch (err) {
+      env.logWarning(`Attempt ${attempt} failed: ${err.message}`)
+      if (attempt === retries) {
+        throw new Error(
+          `Failed to connect to Studio server at ${url} after ${retries} attempts.`
+        )
+      }
+    }
+    await new Promise((resolve) => setTimeout(resolve, delay)) // Wait before retrying
+  }
+}
+/**
  * Send HTTP GET request to Studio Jetty server for project information.
  * @param {} db
  * @param {*} sessionId
@@ -151,16 +176,14 @@
     if (studioIntegration && !isUserDisabled) {
       let path = restApiUrl(StudioRestAPI.GetProjectInfo, project)
       env.logDebug(`StudioUC(${name}): GET: ${path}`)
-      return axios
-        .get(path)
-        .then((resp) => {
-          env.logDebug(`StudioUC(${name}): RESP: ${resp.status}`)
-          return resp
-        })
-        .catch((err) => {
-          env.logWarning(`StudioUC(${name}): ERR: ${err.message}`)
-          return { data: [] }
-        })
+      try {
+        let response = await waitForServer(path) // Wait for the server to be ready
+        env.logDebug(`StudioUC(${name}): RESP: ${response.status}`)
+        return response
+      } catch (err) {
+        env.logWarning(`StudioUC(${name}): ERR: ${err.message}`)
+        return { data: [] }
+      }
     } else {
       if (!isUserDisabled)
         env.logWarning(`StudioUC(${name}): Studio integration is now enabled!`)
diff --git a/src-electron/importexport/import.js b/src-electron/importexport/import.js
index 86a5360..3d28e11 100644
--- a/src-electron/importexport/import.js
+++ b/src-electron/importexport/import.js
@@ -23,6 +23,8 @@
  */
 
 const fsp = require('fs').promises
+const fs = require('fs')
+const path = require('path')
 const importIsc = require('./import-isc.js')
 const importJson = require('./import-json.js')
 const dbApi = require('../db/db-api.js')
@@ -66,19 +68,16 @@
  *
  * @param {*} db
  * @param {*} sessionId
- * @param {*} scriptFile
+ * @param {*} scriptInfo
  * @returns Promise of function execution.
  */
-async function executePostImportScript(db, sessionId, scriptFile) {
+async function executePostImportScript(db, sessionId, scriptInfo) {
   let context = {
     db: db,
-    sessionId: sessionId
+    sessionId: sessionId,
+    script: scriptInfo
   }
-  return script.executeScriptFunction(
-    script.functions.postLoad,
-    context,
-    scriptFile
-  )
+  return script.executeScriptFunction(script.functions.postLoad, context)
 }
 
 /**
@@ -232,11 +231,32 @@
       options.upgradeTemplatePackages
     )
     if (options.postImportScript != null) {
-      await executePostImportScript(
-        db,
-        loaderResult.sessionId,
-        options.postImportScript
-      )
+      await executePostImportScript(db, loaderResult.sessionId, {
+        path: path.resolve(options.postImportScript),
+        category: null // When running individual scripts no need for category
+      })
+    }
+    if (options.upgradeRuleScripts != null) {
+      const upgradeScripts = options.upgradeRuleScripts
+      let upgradeMessages = []
+      for (let i = 0; i < upgradeScripts.length; i++) {
+        let upgradeScript = upgradeScripts[i]
+        if (fs.existsSync(upgradeScript.path)) {
+          let upgradeMessage = await executePostImportScript(
+            db,
+            loaderResult.sessionId,
+            upgradeScript
+          )
+          if (upgradeMessage) {
+            upgradeMessages.push(upgradeMessage)
+          }
+        } else {
+          throw new Error(
+            `Post import script path does not exist: ${upgradeScript.path}`
+          )
+        }
+      }
+      loaderResult.upgradeMessages = upgradeMessages
     }
     return loaderResult
   } finally {
diff --git a/src-electron/main-process/startup.js b/src-electron/main-process/startup.js
index e2a1bca..8117e24 100644
--- a/src-electron/main-process/startup.js
+++ b/src-electron/main-process/startup.js
@@ -312,13 +312,57 @@
       dbEnum.packageType.genTemplatesJson
     )
 
+    let upgradeRules = []
+    // If more than one upgrade package is present then it is a multiprotocol
+    // application so upgrade rules should be added to the corresponding endpoints.
+    let isMultiProtocol = upgradeZclPackages.length > 1
+    for (const pkg of upgradeZclPackages) {
+      if (pkg.path) {
+        try {
+          const jsonData = JSON.parse(fs.readFileSync(pkg.path, 'utf-8'))
+          if (jsonData.upgradeRules !== undefined) {
+            const upgradeRulesJsonPath = path.resolve(
+              path.dirname(pkg.path),
+              jsonData.upgradeRules
+            )
+            try {
+              const upgradeRulesData = JSON.parse(
+                fs.readFileSync(upgradeRulesJsonPath, 'utf-8')
+              )
+              // Sorting upgrade rules by priority and then run them
+              upgradeRulesData.upgradeRuleScripts
+                .sort((a, b) => a.priority - b.priority)
+                .forEach((ur) => {
+                  upgradeRules.push({
+                    path: path.resolve(path.dirname(pkg.path), ur.path),
+                    category: isMultiProtocol ? upgradeRulesData.category : null
+                  })
+                })
+            } catch (error) {
+              console.error(
+                `Error reading or parsing upgrade rules from path ${upgradeRulesJsonPath}:`,
+                error
+              )
+            }
+          }
+        } catch (error) {
+          console.error(
+            `Error reading or parsing JSON from path ${pkg.path}:`,
+            error
+          )
+        }
+      }
+    }
+
     let importResult = await importJs.importDataFromFile(db, zapFile, {
       defaultZclMetafile: argv.zclProperties,
       postImportScript: argv.postImportScript,
       packageMatch: argv.packageMatch,
       upgradeZclPackages: upgradeZclPackages,
-      upgradeTemplatePackages: upgradeTemplatePackages
+      upgradeTemplatePackages: upgradeTemplatePackages,
+      upgradeRuleScripts: upgradeRules // Used to apply all the upgrade rules to the .zap file
     })
+
     let sessionId = importResult.sessionId
     await util.ensurePackagesAndPopulateSessionOptions(db, sessionId, {
       zcl: argv.zclProperties,
@@ -345,15 +389,23 @@
       fileFormat: argv.saveFileFormat
     })
     options.logger(`    👉 write out: ${outputPath}`)
+    try {
+      if (upgrade_results != null) {
+        if (!fs.existsSync(path.dirname(upgrade_results))) {
+          fs.mkdirSync(path.dirname(upgrade_results), { recursive: true })
+        }
+        await writeConversionResultsFile(
+          upgrade_results,
+          importResult.upgradeMessages
+        )
+      }
+      options.logger(`    👉 write out: ${upgrade_results}`)
+    } catch (error) {
+      options.logger(`    ⚠️  failed to write out: ${upgrade_results}`)
+    }
+    options.logger('😎 Upgrade done!')
   }
-  try {
-    if (upgrade_results != null)
-      await writeConversionResultsFile(upgrade_results)
-    options.logger(`    👉 write out: ${upgrade_results}`)
-  } catch (error) {
-    options.logger(`    ⚠️  failed to write out: ${upgrade_results}`)
-  }
-  options.logger('😎 Upgrade done!')
+
   if (options.quitFunction != null) {
     options.quitFunction()
   }
@@ -468,20 +520,25 @@
  * Write conversion results into file given.
  *
  * @param {*} file
+ * @param {*} messages
  * @returns promise of a file write operation.
  */
-async function writeConversionResultsFile(file) {
+async function writeConversionResultsFile(file, messages = null) {
   return fsp.writeFile(
     file,
-    YAML.stringify({
-      upgrade_results: [
-        {
-          message:
-            'ZCL Advanced Platform (ZAP) configuration has been successfully upgraded.',
-          status: 'automatic'
-        }
-      ]
-    })
+    messages
+      ? YAML.stringify({
+          upgrade_results: messages
+        })
+      : YAML.stringify({
+          upgrade_results: [
+            {
+              message:
+                'ZCL Advanced Platform (ZAP) configuration has been successfully upgraded.',
+              status: 'automatic'
+            }
+          ]
+        })
   )
 }
 
diff --git a/src-electron/rest/user-data.js b/src-electron/rest/user-data.js
index 4f58247..b850fb7 100644
--- a/src-electron/rest/user-data.js
+++ b/src-electron/rest/user-data.js
@@ -100,7 +100,8 @@
 }
 
 /**
- * HTTP POST: elements to be updated after toggle a device type feature
+ * HTTP POST: elements to be updated after toggle a device type feature.
+ * Set related warnings if user confirmed the change or change is disabled.
  *
  * @param {*} db
  * @returns callback for the express uri registration
@@ -108,7 +109,7 @@
 function httpPostCheckConformOnFeatureUpdate(db) {
   return async (request, response) => {
     let sessionId = request.zapSessionId
-    let { featureData, featureMap, endpointId } = request.body
+    let { featureData, featureMap, endpointId, changeConfirmed } = request.body
     let { endpointTypeClusterId, deviceTypeClusterId } = featureData
 
     let elements = await queryEndpointType.getEndpointTypeElements(
@@ -123,25 +124,26 @@
       featureData,
       endpointId
     )
-
-    // set device type feature warning
-    await querySessionNotification.setNotificationOnFeatureChange(
-      db,
-      sessionId,
-      result
-    )
-    // do not set element warning if feature change disabled
-    if (!result.disableChange) {
-      let outdatedWarnings = conformChecker.getOutdatedElementWarning(
-        featureData,
-        elements,
-        result.elementMap
-      )
-      await querySessionNotification.deleteNotificationWithPatterns(
+    if (changeConfirmed || result.disableChange) {
+      // set device type feature warning
+      await querySessionNotification.setNotificationOnFeatureChange(
         db,
         sessionId,
-        outdatedWarnings
+        result
       )
+      // do not set element warning if feature change disabled
+      if (!result.disableChange) {
+        let outdatedWarnings = conformChecker.getOutdatedElementWarning(
+          featureData,
+          elements,
+          result.elementMap
+        )
+        await querySessionNotification.deleteNotificationWithPatterns(
+          db,
+          sessionId,
+          outdatedWarnings
+        )
+      }
     }
 
     response.status(StatusCodes.OK).json(result)
diff --git a/src-electron/util/async-reporting.js b/src-electron/util/async-reporting.js
index fc4e0f4..5274805 100644
--- a/src-electron/util/async-reporting.js
+++ b/src-electron/util/async-reporting.js
@@ -112,7 +112,6 @@
 /**
  * Start the interval that will check and report dirty flags.
  * @param {*} db
- * @param {*} intervalMs
  */
 function startAsyncReporting(db) {
   for (let key of Object.keys(asyncReports)) {
@@ -121,14 +120,32 @@
       // Session based reports get iterated over all sessions
       // and called with appropriate session.
       report.id = setInterval(async () => {
-        let sessions = await querySession.getAllSessions(db)
-        let allPromises = sessions.map((session) => report.fn(db, session))
-        return Promise.all(allPromises)
+        try {
+          // Check if the database is closed. Set in db-api#closeDatabase
+          if (db._closed) return
+          let sessions = await querySession.getAllSessions(db)
+          let allPromises = sessions.map((session) => {
+            if (db._closed) return
+            return report.fn(db, session)
+          })
+          return Promise.all(allPromises)
+        } catch (err) {
+          // If the database was closed during an async operation, we can get an error.
+          // We can ignore it if the db is marked as closed.
+          if (db._closed) return
+          env.logWarning(`Error in session-based async reporting: ${err}`)
+        }
       }, report.intervalMs)
     } else {
       // Non session based reports get called once with the db as the argument.
-      report.id = setInterval(() => {
-        report.fn(db)
+      report.id = setInterval(async () => {
+        if (db._closed) return
+        try {
+          await report.fn(db)
+        } catch (err) {
+          if (db._closed) return // Ignore errors if DB is closed.
+          env.logWarning(`Error in non-session-based async reporting: ${err}`)
+        }
       }, report.intervalMs)
     }
   }
diff --git a/src-electron/util/env.js b/src-electron/util/env.js
index 0e39ef5..5a08f81 100644
--- a/src-electron/util/env.js
+++ b/src-electron/util/env.js
@@ -196,6 +196,11 @@
 let versionObject = null
 let applicationStateDirectory = null
 
+let file_pino_logger = pino(
+  pinoOptions,
+  pino.destination({ dest: path.join(appDirectory(), 'zap.log'), sync: true })
+)
+
 /**
  * Set up the devlopment environment.
  */
@@ -525,6 +530,18 @@
 }
 
 /**
+ * Log Warning level message to zap.log file.
+ *
+ * @param {*} msg
+ */
+export function logWarningToFile(msg) {
+  let objectToLog = {
+    msg: msg
+  }
+  file_pino_logger.warn(objectToLog)
+}
+
+/**
  * Returns true if major or minor component of versions is different.
  *
  * @param {*} versionsArray
diff --git a/src-electron/util/post-import-api.js b/src-electron/util/post-import-api.js
index 8e14fc9..ec37740 100644
--- a/src-electron/util/post-import-api.js
+++ b/src-electron/util/post-import-api.js
@@ -51,8 +51,12 @@
  *
  * @param {*} context
  */
-function endpoints(context) {
-  return queryEndpoint.selectAllEndpoints(context.db, context.sessionId)
+async function endpoints(context) {
+  return queryEndpoint.selectAllEndpoints(
+    context.db,
+    context.sessionId,
+    context.script.category
+  )
 }
 
 /**
@@ -61,7 +65,7 @@
  * @param {*} context
  * @param {*} endpoint
  */
-function deleteEndpoint(context, endpoint) {
+async function deleteEndpoint(context, endpoint) {
   return queryEndpoint.deleteEndpoint(context.db, endpoint.id)
 }
 
@@ -71,7 +75,7 @@
  * @param {*} context
  * @param {*} endpoint
  */
-function clusters(context, endpoint) {
+async function clusters(context, endpoint) {
   return queryEndpoint.selectEndpointClusters(
     context.db,
     endpoint.endpointTypeRef
@@ -86,7 +90,7 @@
  * @param {*} endpoint
  * @param {*} cluster
  */
-function attributes(context, endpoint, cluster) {
+async function attributes(context, endpoint, cluster) {
   return queryEndpoint.selectEndpointClusterAttributes(
     context.db,
     cluster.clusterId,
@@ -103,7 +107,7 @@
  * @param {*} endpoint
  * @param {*} cluster
  */
-function commands(context, endpoint, cluster) {
+async function commands(context, endpoint, cluster) {
   return queryEndpoint.selectEndpointClusterCommands(
     context.db,
     cluster.clusterId,
@@ -289,6 +293,30 @@
 }
 
 /**
+ * Update an attribute with given parameters.
+ *
+ * @param {*} context
+ * @param {*} endpoint
+ * @param {*} cluster
+ * @param {*} attribute
+ * @param {*} params
+ * @returns promise of an updated or inserted attribute with parameters provided
+ */
+async function updateAttribute(context, endpoint, cluster, attribute, params) {
+  return queryConfig.insertOrUpdateAttributeState(
+    context.db,
+    endpoint.endpointTypeRef,
+    cluster.id,
+    attribute.side,
+    attribute.id,
+    params,
+    attribute.reportMinInterval,
+    attribute.reportMaxInterval,
+    attribute.reportableChange
+  )
+}
+
+/**
  * Non-public, common function to modify command.
  *
  * @param {*} context
@@ -617,6 +645,7 @@
 exports.enableIncomingCommand = enableIncomingCommand
 exports.disableOutgoingCommand = disableOutgoingCommand
 exports.enableOutgoingCommand = enableOutgoingCommand
+exports.updateAttribute = updateAttribute
 
 // Constants that are used a lot
 exports.client = dbEnum.source.client
diff --git a/src-electron/util/post-import.js b/src-electron/util/post-import.js
index 0b1a42f..9d84ac1 100644
--- a/src-electron/util/post-import.js
+++ b/src-electron/util/post-import.js
@@ -30,17 +30,18 @@
  * Executes a named function from a given script.
  * Arguments passed to the function are:
  *   api: which is the result of require('script-api.js')
- *   context: which contains 'db', 'sessionId', etc.
+ *   context: which contains 'db', 'sessionId', script category, etc.
  *
  * @param {*} functionName
  * @param {*} db
  * @param {*} sessionId
- * @param {*} script
  */
-async function executeScriptFunction(functionName, context, script) {
-  let resolvedPath = path.resolve(script)
+async function executeScriptFunction(functionName, context) {
+  let resolvedPath = path.resolve(context.script.path)
   let loadedScript = nativeRequire(resolvedPath)
   if (loadedScript[functionName]) {
+    // Add updateKeys available to the context
+    context.updateKey = require('../../src-shared/rest-api.js').updateKey
     return loadedScript[functionName](scriptApi, context)
   }
 }
diff --git a/src-electron/util/types.js b/src-electron/util/types.js
index 4f7cbf9..7a372ad 100644
--- a/src-electron/util/types.js
+++ b/src-electron/util/types.js
@@ -169,7 +169,7 @@
   let v = ''
   if (value == null || value.length == 0) {
     v = '0x00, '.repeat(size)
-  } else if (isNaN(value)) {
+  } else if (isString(type)) {
     // String Value
     if (isOneBytePrefixedString(type)) {
       v = bin.stringToOneByteLengthPrefixCBytes(value, size).content
diff --git a/src-electron/validation/conformance-checker.js b/src-electron/validation/conformance-checker.js
index c0630ce..acf9941 100644
--- a/src-electron/validation/conformance-checker.js
+++ b/src-electron/validation/conformance-checker.js
@@ -26,6 +26,7 @@
 const queryFeature = require('../db/query-feature')
 const querySessionNotice = require('../db/query-session-notification')
 const queryEndpointType = require('../db/query-endpoint-type')
+const dbEnum = require('../../src-shared/db-enum')
 
 /**
  *
@@ -37,7 +38,11 @@
 function filterRelatedDescElements(elements, featureCode) {
   return elements.filter((element) => {
     let terms = element.conformance.match(/[A-Za-z][A-Za-z0-9_]*/g)
-    return terms && terms.includes('desc') && terms.includes(featureCode)
+    return (
+      terms &&
+      terms.includes(dbEnum.conformance.desc) &&
+      terms.includes(featureCode)
+    )
   })
 }
 
diff --git a/src-electron/validation/conformance-expression-evaluator.js b/src-electron/validation/conformance-expression-evaluator.js
index 34979c7..faaa219 100644
--- a/src-electron/validation/conformance-expression-evaluator.js
+++ b/src-electron/validation/conformance-expression-evaluator.js
@@ -21,6 +21,8 @@
  * @module Validation API: Evaluate conformance expressions
  */
 
+const dbEnum = require('../../src-shared/db-enum')
+
 /**
  * Evaluate the value of a boolean conformance expression that includes terms and operators.
  * A term can be an attribute, command, event, feature, or conformance abbreviation.
@@ -75,8 +77,8 @@
   // if any term is desc, the conformance is too complex to parse
   for (let part of parts) {
     let terms = part.match(/[A-Za-z][A-Za-z0-9_]*/g)
-    if (terms && terms.includes('desc')) {
-      return 'desc'
+    if (terms && terms.includes(dbEnum.conformance.desc)) {
+      return dbEnum.conformance.desc
     }
   }
   for (let part of parts) {
@@ -91,13 +93,16 @@
       }
     } else {
       part = part.trim()
-      if (part == 'M') {
+      if (part == dbEnum.conformance.mandatory) {
         return 'mandatory'
-      } else if (part == 'O') {
+      } else if (part == dbEnum.conformance.optional) {
         return 'optional'
-      } else if (part == 'D' || part == 'X') {
+      } else if (
+        part == dbEnum.conformance.deprecated ||
+        part == dbEnum.conformance.disallowed
+      ) {
         return 'notSupported'
-      } else if (part == 'P') {
+      } else if (part == dbEnum.conformance.provisional) {
         return 'provisional'
       } else {
         // Evaluate the part with parentheses if needed
@@ -123,7 +128,7 @@
 function checkMissingTerms(expression, elementMap) {
   let terms = expression.match(/[A-Za-z][A-Za-z0-9_]*/g)
   let missingTerms = []
-  let abbreviations = ['M', 'O', 'P', 'D', 'X']
+  let abbreviations = Object.values(dbEnum.conformance)
   for (let term of terms) {
     if (!(term in elementMap) && !abbreviations.includes(term)) {
       missingTerms.push(term)
@@ -132,5 +137,18 @@
   return missingTerms
 }
 
+/**
+ * Check if the expression contains a given term.
+ *
+ * @param expression
+ * @param term
+ * @returns true if the expression contains the term, false otherwise
+ */
+function checkIfExpressionHasTerm(expression, term) {
+  let terms = expression.match(/[A-Za-z][A-Za-z0-9_]*/g)
+  return terms && terms.includes(term)
+}
+
 exports.evaluateConformanceExpression = evaluateConformanceExpression
 exports.checkMissingTerms = checkMissingTerms
+exports.checkIfExpressionHasTerm = checkIfExpressionHasTerm
diff --git a/src-electron/validation/conformance-xml-parser.js b/src-electron/validation/conformance-xml-parser.js
index b73ab9e..daa9b32 100644
--- a/src-electron/validation/conformance-xml-parser.js
+++ b/src-electron/validation/conformance-xml-parser.js
@@ -21,6 +21,10 @@
  * @module Validation API: Parse conformance data from XML
  */
 
+const dbEnum = require('../../src-shared/db-enum')
+const conformEvaluator = require('./conformance-expression-evaluator')
+const env = require('../util/env')
+
 /**
  * Parses conformance from XML data.
  * The conformance could come from features, attributes, commands, or events
@@ -88,7 +92,7 @@
     if (insideTerm && Object.keys(insideTerm).toString() != '$') {
       return parseConformanceRecursively(operand.mandatoryConform[0], depth + 1)
     } else {
-      return 'M'
+      return dbEnum.conformance.mandatory
     }
   } else if (operand.optionalConform) {
     let insideTerm = operand.optionalConform[0]
@@ -97,7 +101,7 @@
     if (insideTerm && Object.keys(insideTerm).toString() != '$') {
       return `[${parseConformanceRecursively(operand.optionalConform[0], depth + 1)}]`
     } else {
-      return 'O'
+      return dbEnum.conformance.optional
     }
   } else if (operand.otherwiseConform) {
     return Object.entries(operand.otherwiseConform[0])
@@ -138,11 +142,11 @@
       })
       .join(` ${joinChar} `)
   } else if (operand.provisionalConform) {
-    return 'P'
+    return dbEnum.conformance.provisional
   } else if (operand.disallowConform) {
-    return 'X'
+    return dbEnum.conformance.disallowed
   } else if (operand.deprecateConform) {
-    return 'D'
+    return dbEnum.conformance.deprecated
   } else {
     // reach base level terms, return the name directly
     for (const term of baseLevelTerms) {
@@ -151,8 +155,42 @@
       }
     }
     // reaching here means the term is too complex to parse
-    return 'desc'
+    return dbEnum.conformance.desc
+  }
+}
+
+/**
+ * if optional attribute is defined, return its value
+ * if optional attribute is undefined, check if the element conformance is mandatory
+ * if both optional attribute and conformance are undefined, return false
+ * Optional attribute takes precedence over conformance for backward compatibility on certain elements
+ * Log warnings to zap.log if both optional attribute and conformance are defined
+ *
+ * @param {*} element
+ * @param {*} elementType
+ * @returns true if the element is optional, false if the element is mandatory
+ */
+function getOptionalAttributeFromXML(element, elementType) {
+  let conformance = parseConformanceFromXML(element)
+  if (element.$.optional) {
+    if (conformance) {
+      env.logWarningToFile(
+        `Redundant 'optional' attribute and 'conformance' tag defined for ${elementType}: ${element.$.name}.` +
+          " 'optional' takes precedence, but consider removing it as 'conformance' is the recommended format."
+      )
+    }
+    return element.$.optional == 'true'
+  } else {
+    if (conformance) {
+      return !conformEvaluator.checkIfExpressionHasTerm(
+        conformance,
+        dbEnum.conformance.mandatory
+      )
+    } else {
+      return false
+    }
   }
 }
 
 exports.parseConformanceFromXML = parseConformanceFromXML
+exports.getOptionalAttributeFromXML = getOptionalAttributeFromXML
diff --git a/src-electron/validation/validation.js b/src-electron/validation/validation.js
index 0155014..fcad824 100644
--- a/src-electron/validation/validation.js
+++ b/src-electron/validation/validation.js
@@ -151,7 +151,10 @@
     let maxAllowedLength = attribute.maxLength
       ? attribute.maxLength
       : maxLengthForString
-    if (endpointAttribute.defaultValue.length > maxAllowedLength) {
+    if (
+      typeof endpointAttribute.defaultValue === 'string' &&
+      endpointAttribute.defaultValue.length > maxAllowedLength
+    ) {
       defaultAttributeIssues.push('String length out of range')
     }
   }
diff --git a/src-electron/zcl/zcl-loader-silabs.js b/src-electron/zcl/zcl-loader-silabs.js
index bf0549e..a4b0497 100644
--- a/src-electron/zcl/zcl-loader-silabs.js
+++ b/src-electron/zcl/zcl-loader-silabs.js
@@ -506,7 +506,10 @@
         name: command.$.name,
         description: command.description ? command.description[0].trim() : '',
         source: command.$.source,
-        isOptional: command.$.optional == 'true' ? true : false,
+        isOptional: conformParser.getOptionalAttributeFromXML(
+          command,
+          'command'
+        ),
         conformance: conformParser.parseConformanceFromXML(command),
         mustUseTimedInvoke: command.$.mustUseTimedInvoke == 'true',
         introducedIn: command.$.introducedIn,
@@ -567,7 +570,7 @@
         conformance: conformParser.parseConformanceFromXML(event),
         priority: event.$.priority,
         description: event.description ? event.description[0].trim() : '',
-        isOptional: event.$.optional == 'true',
+        isOptional: conformParser.getOptionalAttributeFromXML(event, 'event'),
         isFabricSensitive: event.$.isFabricSensitive == 'true'
       }
       ev.access = extractAccessIntoArray(event)
@@ -685,7 +688,10 @@
           : null,
         isWritable: attribute.$.writable == 'true',
         defaultValue: attribute.$.default,
-        isOptional: attribute.$.optional == 'true',
+        isOptional: conformParser.getOptionalAttributeFromXML(
+          attribute,
+          'attribute'
+        ),
         reportingPolicy: reportingPolicy,
         storagePolicy: storagePolicy,
         isSceneRequired:
diff --git a/src-shared/db-enum.js b/src-shared/db-enum.js
index 34bd02f..ca82f21 100644
--- a/src-shared/db-enum.js
+++ b/src-shared/db-enum.js
@@ -220,6 +220,7 @@
 
 exports.feature = {
   name: {
+    status: 'status',
     enabled: 'enabled',
     deviceType: 'deviceType',
     cluster: 'cluster',
@@ -231,6 +232,7 @@
     description: 'description'
   },
   label: {
+    status: '',
     enabled: 'Enabled',
     deviceType: 'Device Type',
     cluster: 'Cluster',
@@ -247,3 +249,17 @@
   name: 'FeatureMap',
   code: 65532
 }
+
+exports.conformance = {
+  mandatory: 'M',
+  optional: 'O',
+  disallowed: 'X',
+  deprecated: 'D',
+  provisional: 'P',
+  desc: 'desc'
+}
+
+exports.clusterSide = {
+  client: 'client',
+  server: 'server'
+}
diff --git a/src/App.vue b/src/App.vue
index 7798897..8b05882 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -152,6 +152,9 @@
     showExceptionIcon() {
       return this.$store.state.zap.showExceptionIcon
     },
+    query() {
+      return this.$store.state.zap.query // Access the query string from Vuex
+    },
     uiThemeCategory: {
       get() {
         if (this.$store.state.zap.isMultiConfig) {
@@ -171,12 +174,9 @@
   },
   methods: {
     parseQueryString() {
-      let search = window.location.search
-
-      if (search[0] === '?') {
-        search = search.substring(1)
-      }
-      this.query = querystring.parse(search)
+      const searchParams = new URLSearchParams(window.location.search)
+      const query = Object.fromEntries(searchParams.entries()) // Parse query string into an object
+      this.$store.commit('zap/setQuery', query) // Store it in Vuex
     },
 
     setTheme() {
@@ -263,37 +263,28 @@
           )
         })
       }
-
-      // Parse the query string into the front end.
-      let search = window.location.search
-
-      if (search[0] === '?') {
-        search = search.substring(1)
+      if (this.query[`uiMode`]) {
+        this.$store.dispatch('zap/setDefaultUiMode', this.query[`uiMode`])
       }
 
-      let query = querystring.parse(search)
-      if (query[`uiMode`]) {
-        this.$store.dispatch('zap/setDefaultUiMode', query[`uiMode`])
-      }
-
-      if (`debugNavBar` in query) {
+      if (`debugNavBar` in this.query) {
         this.$store.dispatch(
           'zap/setDebugNavBar',
-          query[`debugNavBar`] === 'true'
+          this.query[`debugNavBar`] === 'true'
         )
       } else {
         // If we don't specify it, default is on.
         this.$store.dispatch('zap/setDebugNavBar', true)
       }
 
-      if ('standalone' in query) {
-        this.$store.dispatch('zap/setStandalone', query['standalone'])
+      if ('standalone' in this.query) {
+        this.$store.dispatch('zap/setStandalone', this.query['standalone'])
       }
 
-      if (`setSaveButtonVisible` in query) {
+      if (`setSaveButtonVisible` in this.query) {
         this.$store.dispatch(
           'zap/setSaveButtonVisible',
-          query[`setSaveButtonVisible`] === 'true'
+          this.query[`setSaveButtonVisible`] === 'true'
         )
       } else {
         // If we don't specify it, default is off.
@@ -318,7 +309,7 @@
 
       // load initial UC component state
       this.$store.dispatch(`zap/loadUcComponentState`)
-      if (query[`newConfig`]) {
+      if (this.query[`newConfig`]) {
         this.loadInitialEndpoints()
       }
 
diff --git a/src/components/ZCLToolbar.vue b/src/components/ZCLToolbar.vue
index aee551b..161d652 100644
--- a/src/components/ZCLToolbar.vue
+++ b/src/components/ZCLToolbar.vue
@@ -61,9 +61,7 @@
       flat
       no-caps
       @click="saveChanges"
-      v-if="
-        this.$store.state.zap.saveButtonVisible && this.$store.state.zap.isDirty
-      "
+      v-if="showSaveButton"
     >
       <div class="text-center">
         <q-icon name="o_save" />
@@ -245,6 +243,12 @@
   name: 'ZCLToolbar',
   mixins: [CommonMixin],
   computed: {
+    query() {
+      return this.$store.state.zap.query // Access the query string from Vuex
+    },
+    showSaveButton() {
+      return !!this.query['stsApplicationId'] // Use optional chaining and double negation for clarity
+    },
     isCoreDocumentationAvailable() {
       return (
         this.$store.state.zap.genericOptions[
diff --git a/src/components/ZclDeviceTypeFeatureManager.vue b/src/components/ZclDeviceTypeFeatureManager.vue
index a4e01ac..60a678c 100644
--- a/src/components/ZclDeviceTypeFeatureManager.vue
+++ b/src/components/ZclDeviceTypeFeatureManager.vue
@@ -28,17 +28,46 @@
         <q-table
           class="my-striped-table"
           :rows="deviceTypeFeatures"
-          :columns="columns"
+          :columns="filteredColumns"
           flat
           v-model:pagination="pagination"
           separator="horizontal"
           id="ZclDeviceTypeFeatureManager"
         >
           <template v-slot:body="props">
-            <q-tr :props="props">
+            <q-tr :props="props" class="table_body attribute_table_body">
+              <q-td
+                v-if="hasFeatureWithDisabledCluster"
+                key="status"
+                :props="props"
+                class="q-px-none"
+                style="width: 30px; max-width: 30px"
+              >
+                <q-icon
+                  v-show="isClusterDisabled(props.row)"
+                  name="warning"
+                  class="text-amber"
+                  style="font-size: 1.5rem"
+                />
+                <q-tooltip
+                  v-if="isClusterDisabled(props.row)"
+                  anchor="top middle"
+                  self="bottom middle"
+                  :offset="[10, 10]"
+                >
+                  <div
+                    v-for="(line, index) in generateDisabledClusterWarning(
+                      props.row
+                    )"
+                    :key="index"
+                  >
+                    {{ line }}
+                  </div>
+                </q-tooltip>
+              </q-td>
               <q-td key="enabled" :props="props" auto-width>
                 <q-toggle
-                  :disable="isToggleDisabled(props.row.conformance)"
+                  :disable="isToggleDisabled(props.row)"
                   class="q-mt-xs v-step-14"
                   v-model="enabledDeviceTypeFeatures"
                   :val="
@@ -88,16 +117,11 @@
             </q-tr>
           </template>
         </q-table>
-        <q-dialog v-model="showDialog">
+        <q-dialog v-model="showDialog" persistent>
           <q-card>
             <q-card-section>
               <div class="row items-center">
-                <div class="text-h6 col">Updated Elements</div>
-                <div class="col-1 text-right">
-                  <q-btn dense flat icon="close" v-close-popup>
-                    <q-tooltip>Close</q-tooltip>
-                  </q-btn>
-                </div>
+                <div class="text-h6 col">Elements to be updated</div>
               </div>
               <div v-if="attributesToUpdate.length > 0">
                 <div
@@ -108,7 +132,9 @@
                 </div>
                 <ul>
                   <li
-                    v-for="(attribute, index) in attributesToUpdate"
+                    v-for="(attribute, index) in processElementsForDialog(
+                      attributesToUpdate
+                    )"
                     :key="'attribute' + index"
                     style="margin-bottom: 10px"
                   >
@@ -125,7 +151,9 @@
                 </div>
                 <ul>
                   <li
-                    v-for="(command, index) in commandsToUpdate"
+                    v-for="(command, index) in processElementsForDialog(
+                      commandsToUpdate
+                    )"
                     :key="'command' + index"
                     style="margin-bottom: 10px"
                   >
@@ -142,7 +170,9 @@
                 </div>
                 <ul>
                   <li
-                    v-for="(event, index) in eventsToUpdate"
+                    v-for="(event, index) in processElementsForDialog(
+                      eventsToUpdate
+                    )"
                     :key="'event' + index"
                     style="margin-bottom: 10px"
                   >
@@ -150,12 +180,18 @@
                   </li>
                 </ul>
               </div>
-              <div v-if="noElementsToUpdate">
-                <div class="text-body1" style="margin-top: 15px">
-                  {{ noElementsToUpdateMessage }}
-                </div>
-              </div>
             </q-card-section>
+            <q-card-actions>
+              <q-btn label="Cancel" v-close-popup class="col" />
+              <q-btn
+                label="Confirm"
+                color="primary"
+                @click="
+                  confirmFeatureUpdate(selectedFeature, updatedEnabledFeatures)
+                "
+                class="col v-step-4 w-step-3"
+              />
+            </q-card-actions>
           </q-card>
         </q-dialog>
       </div>
@@ -190,20 +226,159 @@
         return 'none'
       }
     },
-    isToggleDisabled(conformance) {
-      // disable toggling unsupported features
-      return conformance == 'X' || conformance == 'D'
+    isToggleDisabled(feature) {
+      // disable toggling features with unsupported conformance and disabled clusters
+      return (
+        feature.conformance == dbEnum.conformance.disallowed ||
+        feature.conformance == dbEnum.conformance.deprecated ||
+        this.isClusterDisabled(feature)
+      )
     },
     onToggleDeviceTypeFeature(featureData, inclusionList) {
-      /* when conformance is not properly handled and change is disabled,
-        do not set featureMap attribute */
-      let disabled = this.updateElementsAndSetWarnings(
-        featureData,
-        inclusionList
-      )
-      if (!disabled) {
-        this.setFeatureMapAttribute(featureData)
+      let featureMap = this.buildFeatureMap(featureData, inclusionList)
+      this.$serverPost(restApi.uri.checkConformOnFeatureUpdate, {
+        featureData: featureData,
+        featureMap: featureMap,
+        endpointId: this.endpointId[this.selectedEndpointId],
+        changeConfirmed: false
+      }).then((res) => {
+        // store backend response and frontend data for reuse if updates are confirmed
+        let {
+          attributesToUpdate,
+          commandsToUpdate,
+          eventsToUpdate,
+          displayWarning,
+          warningMessage,
+          disableChange
+        } = res.data
+
+        Object.assign(this, {
+          attributesToUpdate,
+          commandsToUpdate,
+          eventsToUpdate,
+          displayWarning,
+          warningMessage,
+          disableChange
+        })
+
+        this.selectedFeature = featureData
+        this.updatedEnabledFeatures = inclusionList
+
+        // if change disabled, display warning and do not show confirm dialog
+        if (this.disableChange) {
+          if (this.displayWarning) {
+            this.displayPopUpWarnings(this.warningMessage)
+          }
+        } else if (this.noElementsToUpdate) {
+          this.confirmFeatureUpdate(featureData, inclusionList)
+        } else {
+          this.showDialog = true
+        }
+      })
+    },
+    confirmFeatureUpdate(featureData, inclusionList) {
+      let featureMap = this.buildFeatureMap(featureData, inclusionList)
+      this.$store
+        .dispatch('zap/setRequiredElements', {
+          featureMap: featureMap,
+          deviceTypeClusterId: featureData.deviceTypeClusterId,
+          endpointTypeClusterId: featureData.endpointTypeClusterId
+        })
+        .then(() => {
+          // toggle attributes, commands, and events for correct conformance,
+          // and set their conformance warnings
+          this.attributesToUpdate.forEach((attribute) => {
+            let editContext = {
+              action: 'boolean',
+              endpointTypeIdList: this.endpointTypeIdList,
+              selectedEndpoint: this.selectedEndpointTypeId,
+              id: attribute.id,
+              value: attribute.value,
+              listType: 'selectedAttributes',
+              clusterRef: attribute.clusterRef,
+              attributeSide: attribute.side,
+              reportMinInterval: attribute.reportMinInterval,
+              reportMaxInterval: attribute.reportMaxInterval
+            }
+            this.setRequiredElementNotifications(
+              attribute,
+              attribute.value,
+              'attributes'
+            )
+            this.$store.dispatch('zap/updateSelectedAttribute', editContext)
+          })
+          this.commandsToUpdate.forEach((command) => {
+            let listType =
+              command.source == 'client' ? 'selectedIn' : 'selectedOut'
+            let editContext = {
+              action: 'boolean',
+              endpointTypeIdList: this.endpointTypeIdList,
+              id: command.id,
+              value: command.value,
+              listType: listType,
+              clusterRef: command.clusterRef,
+              commandSide: command.source
+            }
+            this.setRequiredElementNotifications(
+              command,
+              command.value,
+              'commands'
+            )
+            this.$store.dispatch('zap/updateSelectedCommands', editContext)
+          })
+          this.eventsToUpdate.forEach((event) => {
+            let editContext = {
+              action: 'boolean',
+              endpointTypeId: this.selectedEndpointTypeId,
+              id: event.id,
+              value: event.value,
+              listType: 'selectedEvents',
+              clusterRef: event.clusterRef,
+              eventSide: event.side
+            }
+            this.setRequiredElementNotifications(event, event.value, 'events')
+            this.$store.dispatch('zap/updateSelectedEvents', editContext)
+          })
+
+          // update enabled device type features
+          let added = this.featureIsEnabled(featureData, inclusionList)
+          let hashedVal = this.hashDeviceTypeClusterIdFeatureId(
+            featureData.deviceTypeClusterId,
+            featureData.featureId
+          )
+          this.$store.commit('zap/updateInclusionList', {
+            id: hashedVal,
+            added: added,
+            listType: 'enabledDeviceTypeFeatures',
+            view: 'featureView'
+          })
+        })
+
+      // set notifications and pop-up warnings for the updated feature
+      this.$serverPost(restApi.uri.checkConformOnFeatureUpdate, {
+        featureData: featureData,
+        featureMap: featureMap,
+        endpointId: this.endpointId[this.selectedEndpointId],
+        changeConfirmed: true
+      })
+      if (this.displayWarning) {
+        this.displayPopUpWarnings(this.warningMessage)
       }
+
+      // update featureMap attribute value for the updated cluster
+      this.setFeatureMapAttribute(featureData)
+
+      // close the dialog
+      this.showDialog = false
+
+      // clean the state of variables related to the dialog
+      Object.assign(this, {
+        displayWarning: false,
+        warningMessage: '',
+        disableChange: false,
+        selectedFeature: {},
+        updatedEnabledFeatures: []
+      })
     },
     setFeatureMapAttribute(featureData) {
       let featureMapAttributeId = featureData.featureMapAttributeId
@@ -220,150 +395,45 @@
         featureMapValue: newValue
       })
     },
-    updateElementsAndSetWarnings(featureData, inclusionList) {
+    processElementsForDialog(elementData) {
+      return (elementData || [])
+        .map((item) =>
+          item.value ? 'enabled ' + item.name : 'disabled ' + item.name
+        )
+        .sort(
+          // sort enabled elements before disabled ones
+          (a, b) => {
+            let aIsEnabled = a.includes('enabled')
+            let bIsEnabled = b.includes('enabled')
+            if (aIsEnabled && !bIsEnabled) return -1
+            if (!aIsEnabled && bIsEnabled) return 1
+            return 0
+          }
+        )
+    },
+    displayPopUpWarnings(warningMessage) {
+      if (!Array.isArray(warningMessage)) {
+        warningMessage = [warningMessage]
+      }
+      for (let warning of warningMessage) {
+        Notify.create({
+          message: warning,
+          type: 'warning',
+          classes: 'custom-notification notification-warning',
+          position: 'top',
+          html: true
+        })
+      }
+    },
+    buildFeatureMap(featureData, inclusionList) {
       let featureMap = {}
       this.deviceTypeFeatures.forEach((feature) => {
-        if (feature.deviceTypeClusterId == featureData.deviceTypeClusterId) {
+        if (feature.deviceTypeClusterId === featureData.deviceTypeClusterId) {
           let enabled = this.featureIsEnabled(feature, inclusionList)
           featureMap[feature.code] = enabled ? 1 : 0
         }
       })
-      this.$serverPost(restApi.uri.checkConformOnFeatureUpdate, {
-        featureData: featureData,
-        featureMap: featureMap,
-        endpointId: this.endpointId[this.selectedEndpointId]
-      }).then((res) => {
-        let {
-          attributesToUpdate,
-          commandsToUpdate,
-          eventsToUpdate,
-          displayWarning,
-          warningMessage,
-          disableChange
-        } = res.data
-
-        // show popup warning message
-        if (displayWarning) {
-          if (!Array.isArray(warningMessage)) {
-            warningMessage = [warningMessage]
-          }
-          for (let message of warningMessage) {
-            Notify.create({
-              message: message,
-              type: 'warning',
-              classes: 'custom-notification notification-warning',
-              position: 'top',
-              html: true
-            })
-          }
-        }
-
-        // if disableChange is true, the case is too complex to handle
-        // throw warnings and skip the following actions
-        if (disableChange) {
-          return disableChange
-        }
-
-        this.$store
-          .dispatch('zap/setRequiredElements', {
-            featureMap: featureMap,
-            deviceTypeClusterId: featureData.deviceTypeClusterId,
-            endpointTypeClusterId: featureData.endpointTypeClusterId
-          })
-          .then(() => {
-            // toggle attributes, commands, and events for correct conformance,
-            // and set their conformance notifications
-            attributesToUpdate.forEach((attribute) => {
-              let editContext = {
-                action: 'boolean',
-                endpointTypeIdList: this.endpointTypeIdList,
-                selectedEndpoint: this.selectedEndpointTypeId,
-                id: attribute.id,
-                value: attribute.value,
-                listType: 'selectedAttributes',
-                clusterRef: attribute.clusterRef,
-                attributeSide: attribute.side,
-                reportMinInterval: attribute.reportMinInterval,
-                reportMaxInterval: attribute.reportMaxInterval
-              }
-              this.setRequiredElementNotifications(
-                attribute,
-                attribute.value,
-                'attributes'
-              )
-              this.$store.dispatch('zap/updateSelectedAttribute', editContext)
-            })
-            commandsToUpdate.forEach((command) => {
-              let listType =
-                command.source == 'client' ? 'selectedIn' : 'selectedOut'
-              let editContext = {
-                action: 'boolean',
-                endpointTypeIdList: this.endpointTypeIdList,
-                id: command.id,
-                value: command.value,
-                listType: listType,
-                clusterRef: command.clusterRef,
-                commandSide: command.source
-              }
-              this.setRequiredElementNotifications(
-                command,
-                command.value,
-                'commands'
-              )
-              this.$store.dispatch('zap/updateSelectedCommands', editContext)
-            })
-            eventsToUpdate.forEach((event) => {
-              let editContext = {
-                action: 'boolean',
-                endpointTypeId: this.selectedEndpointTypeId,
-                id: event.id,
-                value: event.value,
-                listType: 'selectedEvents',
-                clusterRef: event.clusterRef,
-                eventSide: event.side
-              }
-              this.setRequiredElementNotifications(event, event.value, 'events')
-              this.$store.dispatch('zap/updateSelectedEvents', editContext)
-            })
-
-            // prepare messages and show dialog
-            this.attributesToUpdate = attributesToUpdate
-              .map((attribute) =>
-                attribute.value
-                  ? 'enabled ' + attribute.name
-                  : 'disabled ' + attribute.name
-              )
-              .sort((a, b) => (a.includes('enabled') ? -1 : 1))
-            this.commandsToUpdate = commandsToUpdate
-              .map((command) =>
-                command.value
-                  ? 'enabled ' + command.name
-                  : 'disabled ' + command.name
-              )
-              .sort((a, b) => (a.includes('enabled') ? -1 : 1))
-            this.eventsToUpdate = eventsToUpdate
-              .map((event) =>
-                event.value ? 'enabled ' + event.name : 'disabled ' + event.name
-              )
-              .sort((a, b) => (a.includes('enabled') ? -1 : 1))
-            this.showDialog = true
-
-            // update enabled device type features
-            let added = this.featureIsEnabled(featureData, inclusionList)
-            let hashedVal = this.hashDeviceTypeClusterIdFeatureId(
-              featureData.deviceTypeClusterId,
-              featureData.featureId
-            )
-            this.$store.commit('zap/updateInclusionList', {
-              id: hashedVal,
-              added: added,
-              listType: 'enabledDeviceTypeFeatures',
-              view: 'featureView'
-            })
-          })
-
-        return disableChange
-      })
+      return featureMap
     },
     featureIsEnabled(featureData, inclusionList) {
       return inclusionList.includes(
@@ -372,6 +442,34 @@
           featureData.featureId
         )
       )
+    },
+    isClusterDisabled(feature) {
+      return this.getMissingClusterSide(feature).length > 0
+    },
+    getMissingClusterSide(feature) {
+      let sides = []
+      let clusterId = feature.clusterRef
+      if (
+        !this.selectionClients.includes(clusterId) &&
+        feature.includeClient == 1
+      ) {
+        sides.push(dbEnum.clusterSide.client)
+      }
+      if (
+        !this.selectionServers.includes(clusterId) &&
+        feature.includeServer == 1
+      ) {
+        sides.push(dbEnum.clusterSide.server)
+      }
+      return sides
+    },
+    generateDisabledClusterWarning(feature) {
+      let sides = this.getMissingClusterSide(feature).join(' and ')
+      return [
+        `This feature cannot be toggled because its associated cluster: 
+        ${feature.cluster} ${sides} is disabled.`,
+        'Enable the cluster to allow toggling this feature.'
+      ]
     }
   },
   computed: {
@@ -381,13 +479,23 @@
         this.commandsToUpdate.length == 0 &&
         this.eventsToUpdate.length == 0
       )
+    },
+    filteredColumns() {
+      return this.hasFeatureWithDisabledCluster
+        ? this.columns
+        : this.columns.filter(
+            (column) => column.name != dbEnum.feature.name.status
+          )
+    },
+    hasFeatureWithDisabledCluster() {
+      return this.deviceTypeFeatures.some((feature) =>
+        this.isClusterDisabled(feature)
+      )
     }
   },
   data() {
     return {
       noDataMessage: 'No device type features available for this endpoint',
-      noElementsToUpdateMessage:
-        'No elements need to be updated after toggling this feature',
       pagination: {
         rowsPerPage: 10
       },
@@ -395,8 +503,19 @@
       attributesToUpdate: [],
       commandsToUpdate: [],
       eventsToUpdate: [],
+      disableChange: false,
+      displayWarning: false,
+      warningMessage: '',
+      selectedFeature: {},
+      updatedEnabledFeatures: [],
       columns: [
         {
+          name: dbEnum.feature.name.status,
+          required: false,
+          label: dbEnum.feature.label.status,
+          align: 'left'
+        },
+        {
           name: dbEnum.feature.name.enabled,
           required: true,
           label: dbEnum.feature.label.enabled,
diff --git a/src/components/ZclEventManager.vue b/src/components/ZclEventManager.vue
index 1938909..dc80f39 100644
--- a/src/components/ZclEventManager.vue
+++ b/src/components/ZclEventManager.vue
@@ -116,6 +116,7 @@
 import EditableAttributesMixin from '../util/editable-attributes-mixin.js'
 import uiOptions from '../util/ui-options'
 import CommonMixin from '../util/common-mixin'
+import dbEnum from '../../src-shared/db-enum'
 
 export default {
   name: 'ZclEventManager',
@@ -179,7 +180,8 @@
             !this.isEventSelected(row.id)) ||
             (this.eventsNotSupportedByConform[row.id] &&
               this.isEventSelected(row.id)))) ||
-        (row.conformance == 'M' && !this.isEventSelected(row.id))
+        (row.conformance == dbEnum.conformance.mandatory &&
+          !this.isEventSelected(row.id))
       )
     },
     getEventWarning(row) {
@@ -198,7 +200,10 @@
       ) {
         warnings.push(this.eventsNotSupportedByConform[row.id])
       }
-      if (row.conformance == 'M' && !this.isEventSelected(row.id)) {
+      if (
+        row.conformance == dbEnum.conformance.mandatory &&
+        !this.isEventSelected(row.id)
+      ) {
         warnings.push(this.defaultWarning)
       }
       return warnings
diff --git a/src/store/zap/actions.js b/src/store/zap/actions.js
index 4eba9f4..44284d5 100644
--- a/src/store/zap/actions.js
+++ b/src/store/zap/actions.js
@@ -1172,15 +1172,6 @@
 }
 
 /**
- * Show or hide the Save button in ZAP UI.
- * @param {*} context
- * @param {*} saveButtonVisible
- */
-export function setSaveButtonVisible(context, saveButtonVisible) {
-  context.commit('setSaveButtonVisible', saveButtonVisible)
-}
-
-/**
  * Set the mode of ZAP UI.
  * @param {*} context
  * @param {*} standalone
diff --git a/src/store/zap/mutations.js b/src/store/zap/mutations.js
index 96a53b5..6d27f93 100644
--- a/src/store/zap/mutations.js
+++ b/src/store/zap/mutations.js
@@ -49,6 +49,10 @@
   state.showDevTools = !state.showDevTools
 }
 
+export const setQuery = (state, query) => {
+  state.query = query
+}
+
 /**
  * Set the information text in the state
  * @param {*} state
@@ -786,15 +790,6 @@
 }
 
 /**
- * Show save button in the UI using the state.
- * @param {*} state
- * @param {*} saveButtonVisible
- */
-export function setSaveButtonVisible(state, saveButtonVisible) {
-  state.saveButtonVisible = saveButtonVisible
-}
-
-/**
  * Set standalone mode for ZAP using the state.
  * @param {*} state
  * @param {*} standalone
diff --git a/src/store/zap/state.js b/src/store/zap/state.js
index 1c39e04..9e82c17 100644
--- a/src/store/zap/state.js
+++ b/src/store/zap/state.js
@@ -52,12 +52,11 @@
     featureMapValue: 0,
     zclDeviceTypes: {},
     endpoints: [],
+    query: {},
     genericOptions: {},
     selectedGenericOptions: {},
     projectPackages: [],
     allPackages: [],
-    isDirty: false,
-    saveButtonVisible: false,
     clusterManager: {
       openDomains: {},
       lastSelectedDomain: null,
diff --git a/test/gen-matter-3-1.test.js b/test/gen-matter-3-1.test.js
index 90d53e3..5978271 100644
--- a/test/gen-matter-3-1.test.js
+++ b/test/gen-matter-3-1.test.js
@@ -368,6 +368,9 @@
     expect(endpointType1.deviceTypeRef[1]).toEqual(
       endpointType2.deviceTypeRef[0]
     )
+
+    // Testing number values for string type attributes under GENERATED_DEFAULTS(helper-endpointconfig.js)
+    expect(ept).toMatch(/\/\* 17 - Description, \*\/\\\n.*2, '7', '7',/)
   },
   testUtil.timeout.long()
 )
@@ -567,6 +570,14 @@
       zclPackageId
     )
     expect(globalBitmap.id).not.toEqual(clusterBitmap.id)
+
+    // Testing chip_get_access_role for attributes
+    expect(ept).toContain(
+      'Name - Acl, Read Privilege - Administer, Write Privilege - Administer'
+    )
+
+    // Testing chip_get_access_role for commands
+    expect(ept).toContain('Name - KeySetWrite, Invoke Privilege - Administer')
   },
   testUtil.timeout.long()
 )
diff --git a/test/gen-template/matter3/miscellaneous_helper_tests.zapt b/test/gen-template/matter3/miscellaneous_helper_tests.zapt
index 4b854bd..3d9c13a 100644
--- a/test/gen-template/matter3/miscellaneous_helper_tests.zapt
+++ b/test/gen-template/matter3/miscellaneous_helper_tests.zapt
@@ -46,3 +46,15 @@
   {{#if struct_contains_array}} Struct with array: {{name}}
   {{/if}}
 {{/zcl_structs}}
+
+// Test chip_get_access_role for attributes
+{{#zcl_attributes_server}}
+{{#if clusterRef}}
+Name - {{asUpperCamelCase label}}, Read Privilege - {{asUpperCamelCase (chip_get_access_role entity="attribute" op="read" default="view")}}, {{#if isWritableAttribute}}Write Privilege - {{asUpperCamelCase (chip_get_access_role entity="attribute" op="write" default="operate")}}{{/if}}
+{{/if}}
+{{/zcl_attributes_server}}
+
+// Test chip_get_access_role for commands
+{{#zcl_commands_source_client}}
+Name - {{asUpperCamelCase name}}, Invoke Privilege - {{asUpperCamelCase (chip_get_access_role entity="command" op="invoke" default="operate")}}
+{{/zcl_commands_source_client}}
\ No newline at end of file
diff --git a/test/resource/multiple-device-types-per-endpoint.zap b/test/resource/multiple-device-types-per-endpoint.zap
index 4c8fd8c..2735d06 100644
--- a/test/resource/multiple-device-types-per-endpoint.zap
+++ b/test/resource/multiple-device-types-per-endpoint.zap
@@ -6971,7 +6971,7 @@
               "storageOption": "RAM",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": "B2",
+              "defaultValue": "77",
               "reportable": 1,
               "minInterval": 0,
               "maxInterval": 65344,
diff --git a/test/resource/test-attribute-default-value-update.js b/test/resource/test-attribute-default-value-update.js
new file mode 100644
index 0000000..ecec89e
--- /dev/null
+++ b/test/resource/test-attribute-default-value-update.js
@@ -0,0 +1,54 @@
+/**
+ *
+ *    Copyright (c) 2025 Silicon Labs
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+// Example upgrade rule to update default vale of cluster attribute.
+
+async function postLoad(api, context) {
+  let resMsg = ''
+  let epts = await api.endpoints(context)
+  for (let i = 0; i < epts.length; i++) {
+    let clusters = await api.clusters(context, epts[i])
+    for (let j = 0; j < clusters.length; j++) {
+      let attributes = await api.attributes(context, epts[i], clusters[j])
+      for (let k = 0; k < attributes.length; k++) {
+        let attributeCode = parseInt(attributes[k].code)
+        let attributeValue = parseInt(attributes[k].defaultValue)
+        if (
+          attributeCode == 0xfffd &&
+          (attributeValue <= 1 || !attributeValue || attributeValue == 'null')
+        ) {
+          let params = [
+            {
+              key: context.updateKey.attributeDefault,
+              value: 2
+            }
+          ]
+          await api.updateAttribute(
+            context,
+            epts[i],
+            clusters[j],
+            attributes[k],
+            params
+          )
+          resMsg += `Cluster Revision attribute default value updated to 2 for ${clusters[j].name} cluster on endpoint ${epts[i].endpointIdentifier} ${epts[i].category} \n`
+        }
+      }
+    }
+  }
+  return { message: resMsg, status: 'automatic' } // Status can be 'nothing', 'automatic', 'user_verification', 'impossible'.
+}
+
+exports.postLoad = postLoad
diff --git a/test/resource/test-matter-attribute-default-value-update.js b/test/resource/test-matter-attribute-default-value-update.js
new file mode 100644
index 0000000..3cffee4
--- /dev/null
+++ b/test/resource/test-matter-attribute-default-value-update.js
@@ -0,0 +1,56 @@
+/**
+ *
+ *    Copyright (c) 2025 Silicon Labs
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+// Example upgrade rule to update default value of Level Control cluster attribute in Matter.
+async function postLoad(api, context) {
+  let resMsg = ''
+  let epts = await api.endpoints(context)
+  for (let i = 0; i < epts.length; i++) {
+    let clusters = await api.clusters(context, epts[i])
+    for (let j = 0; j < clusters.length; j++) {
+      if (clusters[j].code == '0x0008') {
+        let attributes = await api.attributes(context, epts[i], clusters[j])
+        for (let k = 0; k < attributes.length; k++) {
+          let attributeCode = parseInt(attributes[k].code)
+          let attributeValue = parseInt(attributes[k].defaultValue)
+          if (
+            attributeCode == 0 &&
+            (attributeValue == 0 || !attributeValue || attributeValue == 'null')
+          ) {
+            let params = [
+              {
+                key: context.updateKey.attributeDefault,
+                value: 10
+              }
+            ]
+            await api.updateAttribute(
+              context,
+              epts[i],
+              clusters[j],
+              attributes[k],
+              params
+            )
+            resMsg += `Current Value attribute's default value updated to 10 for Level Control cluster on endpoint ${epts[i].endpointIdentifier} ${epts[i].category}\n`
+          }
+        }
+      }
+    }
+  }
+  return { message: resMsg, status: 'automatic' } // Status can be 'nothing', 'automatic', 'user_verification', 'impossible'.
+}
+
+exports.postLoad = postLoad
diff --git a/test/resource/test-script-2.js b/test/resource/test-script-2.js
index a21095c..d2d6cc4 100644
--- a/test/resource/test-script-2.js
+++ b/test/resource/test-script-2.js
@@ -19,6 +19,7 @@
 async function postLoad(api, context) {
   let epts = await api.endpoints(context)
   await api.deleteEndpoint(context, epts[0])
+  return { message: 'Endpoint Deleted', status: 'automatic' } // Status can be 'nothing', 'automatic', 'user_verification', 'impossible'.
 }
 
 exports.postLoad = postLoad
diff --git a/test/resource/test-zigbee-attribute-default-value-update.js b/test/resource/test-zigbee-attribute-default-value-update.js
new file mode 100644
index 0000000..45f52df
--- /dev/null
+++ b/test/resource/test-zigbee-attribute-default-value-update.js
@@ -0,0 +1,56 @@
+/**
+ *
+ *    Copyright (c) 2025 Silicon Labs
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+// Example upgrade rule to update default value of On/Off cluster attribute in Zigbee.
+async function postLoad(api, context) {
+  let resMsg = ''
+  let epts = await api.endpoints(context)
+  for (let i = 0; i < epts.length; i++) {
+    let clusters = await api.clusters(context, epts[i])
+    for (let j = 0; j < clusters.length; j++) {
+      if (clusters[j].code == '0x0006') {
+        let attributes = await api.attributes(context, epts[i], clusters[j])
+        for (let k = 0; k < attributes.length; k++) {
+          let attributeCode = parseInt(attributes[k].code)
+          let attributeValue = parseInt(attributes[k].defaultValue)
+          if (
+            attributeCode == 0 &&
+            (attributeValue == 0 || !attributeValue || attributeValue == 'null')
+          ) {
+            let params = [
+              {
+                key: context.updateKey.attributeDefault,
+                value: 1
+              }
+            ]
+            await api.updateAttribute(
+              context,
+              epts[i],
+              clusters[j],
+              attributes[k],
+              params
+            )
+            resMsg += `On/Off attribute default value updated to 1 for On/Off cluster on endpoint ${epts[i].endpointIdentifier} ${epts[i].category} \n`
+          }
+        }
+      }
+    }
+  }
+  return { message: resMsg, status: 'automatic' } // Status can be 'nothing', 'automatic', 'user_verification', 'impossible'.
+}
+
+exports.postLoad = postLoad
diff --git a/test/resource/upgrade/lighting-matter.zap b/test/resource/upgrade/lighting-matter.zap
new file mode 100644
index 0000000..70a8ef1
--- /dev/null
+++ b/test/resource/upgrade/lighting-matter.zap
@@ -0,0 +1,3743 @@
+{
+  "fileFormat": 2,
+  "featureLevel": 106,
+  "creator": "zap",
+  "keyValuePairs": [
+    {
+      "key": "commandDiscovery",
+      "value": "1"
+    },
+    {
+      "key": "defaultResponsePolicy",
+      "value": "always"
+    },
+    {
+      "key": "manufacturerCodes",
+      "value": "0x1002"
+    }
+  ],
+  "package": [
+    {
+      "pathRelativity": "relativeToZap",
+      "path": "../../../zcl-builtin/matter/zcl.json",
+      "type": "zcl-properties",
+      "category": "matter",
+      "version": 1,
+      "description": "Matter SDK ZCL data"
+    },
+    {
+      "pathRelativity": "relativeToZap",
+      "path": "../../gen-template/matter/gen-test.json",
+      "type": "gen-templates-json",
+      "category": "matter",
+      "version": "test-matter"
+    }
+  ],
+  "endpointTypes": [
+    {
+      "id": 1,
+      "name": "MA-rootdevice",
+      "deviceTypeRef": {
+        "code": 22,
+        "profileId": 259,
+        "label": "MA-rootdevice",
+        "name": "MA-rootdevice",
+        "deviceTypeOrder": 0
+      },
+      "deviceTypes": [
+        {
+          "code": 22,
+          "profileId": 259,
+          "label": "MA-rootdevice",
+          "name": "MA-rootdevice",
+          "deviceTypeOrder": 0
+        }
+      ],
+      "deviceVersions": [
+        1
+      ],
+      "deviceIdentifiers": [
+        22
+      ],
+      "deviceTypeName": "MA-rootdevice",
+      "deviceTypeCode": 22,
+      "deviceTypeProfileId": 259,
+      "clusters": [
+        {
+          "name": "Descriptor",
+          "code": 29,
+          "mfgCode": null,
+          "define": "DESCRIPTOR_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "attributes": [
+            {
+              "name": "DeviceTypeList",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ServerList",
+              "code": 1,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ClientList",
+              "code": 2,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "PartsList",
+              "code": 3,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ClusterRevision",
+              "code": 65533,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "Access Control",
+          "code": 31,
+          "mfgCode": null,
+          "define": "ACCESS_CONTROL_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "attributes": [
+            {
+              "name": "ACL",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "Extension",
+              "code": 1,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "SubjectsPerAccessControlEntry",
+              "code": 2,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "TargetsPerAccessControlEntry",
+              "code": 3,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AccessControlEntriesPerFabric",
+              "code": 4,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ClusterRevision",
+              "code": 65533,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "Basic Information",
+          "code": 40,
+          "mfgCode": null,
+          "define": "BASIC_INFORMATION_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "attributes": [
+            {
+              "name": "DataModelRevision",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "VendorName",
+              "code": 1,
+              "mfgCode": null,
+              "side": "server",
+              "type": "char_string",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "VendorID",
+              "code": 2,
+              "mfgCode": null,
+              "side": "server",
+              "type": "vendor_id",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ProductName",
+              "code": 3,
+              "mfgCode": null,
+              "side": "server",
+              "type": "char_string",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ProductID",
+              "code": 4,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "NodeLabel",
+              "code": 5,
+              "mfgCode": null,
+              "side": "server",
+              "type": "char_string",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "Location",
+              "code": 6,
+              "mfgCode": null,
+              "side": "server",
+              "type": "char_string",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "HardwareVersion",
+              "code": 7,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "HardwareVersionString",
+              "code": 8,
+              "mfgCode": null,
+              "side": "server",
+              "type": "char_string",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "SoftwareVersion",
+              "code": 9,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int32u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "SoftwareVersionString",
+              "code": 10,
+              "mfgCode": null,
+              "side": "server",
+              "type": "char_string",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "CapabilityMinima",
+              "code": 19,
+              "mfgCode": null,
+              "side": "server",
+              "type": "CapabilityMinimaStruct",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ClusterRevision",
+              "code": 65533,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 1,
+              "bounded": 0,
+              "defaultValue": "1",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "Localization Configuration",
+          "code": 43,
+          "mfgCode": null,
+          "define": "LOCALIZATION_CONFIGURATION_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "attributes": [
+            {
+              "name": "ActiveLocale",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "char_string",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "SupportedLocales",
+              "code": 1,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "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": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "Time Format Localization",
+          "code": 44,
+          "mfgCode": null,
+          "define": "TIME_FORMAT_LOCALIZATION_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "attributes": [
+            {
+              "name": "HourFormat",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "HourFormat",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "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": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "Unit Localization",
+          "code": 45,
+          "mfgCode": null,
+          "define": "UNIT_LOCALIZATION_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "attributes": [
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "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": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "General Commissioning",
+          "code": 48,
+          "mfgCode": null,
+          "define": "GENERAL_COMMISSIONING_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "commands": [
+            {
+              "name": "ArmFailSafe",
+              "code": 0,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "ArmFailSafeResponse",
+              "code": 1,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "SetRegulatoryConfig",
+              "code": 2,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "SetRegulatoryConfigResponse",
+              "code": 3,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "CommissioningComplete",
+              "code": 4,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "CommissioningCompleteResponse",
+              "code": 5,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            }
+          ],
+          "attributes": [
+            {
+              "name": "Breadcrumb",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int64u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0x0000000000000000",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "BasicCommissioningInfo",
+              "code": 1,
+              "mfgCode": null,
+              "side": "server",
+              "type": "BasicCommissioningInfo",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "RegulatoryConfig",
+              "code": 2,
+              "mfgCode": null,
+              "side": "server",
+              "type": "RegulatoryLocationType",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "LocationCapability",
+              "code": 3,
+              "mfgCode": null,
+              "side": "server",
+              "type": "RegulatoryLocationType",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "SupportsConcurrentConnection",
+              "code": 4,
+              "mfgCode": null,
+              "side": "server",
+              "type": "boolean",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "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": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "Network Commissioning",
+          "code": 49,
+          "mfgCode": null,
+          "define": "NETWORK_COMMISSIONING_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "attributes": [
+            {
+              "name": "MaxNetworks",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int8u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "Networks",
+              "code": 1,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "InterfaceEnabled",
+              "code": 4,
+              "mfgCode": null,
+              "side": "server",
+              "type": "boolean",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "LastNetworkingStatus",
+              "code": 5,
+              "mfgCode": null,
+              "side": "server",
+              "type": "NetworkCommissioningStatus",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "LastNetworkID",
+              "code": 6,
+              "mfgCode": null,
+              "side": "server",
+              "type": "octet_string",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "LastConnectErrorValue",
+              "code": 7,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int32s",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "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": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "General Diagnostics",
+          "code": 51,
+          "mfgCode": null,
+          "define": "GENERAL_DIAGNOSTICS_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "commands": [
+            {
+              "name": "TestEventTrigger",
+              "code": 0,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            }
+          ],
+          "attributes": [
+            {
+              "name": "NetworkInterfaces",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "RebootCount",
+              "code": 1,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "TestEventTriggersEnabled",
+              "code": 8,
+              "mfgCode": null,
+              "side": "server",
+              "type": "boolean",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "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": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "Administrator Commissioning",
+          "code": 60,
+          "mfgCode": null,
+          "define": "ADMINISTRATOR_COMMISSIONING_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "commands": [
+            {
+              "name": "OpenCommissioningWindow",
+              "code": 0,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "RevokeCommissioning",
+              "code": 2,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            }
+          ],
+          "attributes": [
+            {
+              "name": "WindowStatus",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "CommissioningWindowStatusEnum",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AdminFabricIndex",
+              "code": 1,
+              "mfgCode": null,
+              "side": "server",
+              "type": "fabric_idx",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AdminVendorId",
+              "code": 2,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "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": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "Operational Credentials",
+          "code": 62,
+          "mfgCode": null,
+          "define": "OPERATIONAL_CREDENTIALS_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "commands": [
+            {
+              "name": "AttestationRequest",
+              "code": 0,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "AttestationResponse",
+              "code": 1,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "CertificateChainRequest",
+              "code": 2,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "CertificateChainResponse",
+              "code": 3,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "CSRRequest",
+              "code": 4,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "CSRResponse",
+              "code": 5,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "AddNOC",
+              "code": 6,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "UpdateNOC",
+              "code": 7,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "NOCResponse",
+              "code": 8,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "UpdateFabricLabel",
+              "code": 9,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "RemoveFabric",
+              "code": 10,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "AddTrustedRootCertificate",
+              "code": 11,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            }
+          ],
+          "attributes": [
+            {
+              "name": "NOCs",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "Fabrics",
+              "code": 1,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "SupportedFabrics",
+              "code": 2,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int8u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "CommissionedFabrics",
+              "code": 3,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int8u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "TrustedRootCertificates",
+              "code": 4,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "CurrentFabricIndex",
+              "code": 5,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int8u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "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": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "Group Key Management",
+          "code": 63,
+          "mfgCode": null,
+          "define": "GROUP_KEY_MANAGEMENT_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "commands": [
+            {
+              "name": "KeySetWrite",
+              "code": 0,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "KeySetRead",
+              "code": 1,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "KeySetReadResponse",
+              "code": 2,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "KeySetRemove",
+              "code": 3,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "KeySetReadAllIndices",
+              "code": 4,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "KeySetReadAllIndicesResponse",
+              "code": 5,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            }
+          ],
+          "attributes": [
+            {
+              "name": "GroupKeyMap",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GroupTable",
+              "code": 1,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "MaxGroupsPerFabric",
+              "code": 2,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "MaxGroupKeysPerFabric",
+              "code": 3,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ClusterRevision",
+              "code": 65533,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "id": 2,
+      "name": "Anonymous Endpoint Type",
+      "deviceTypeRef": {
+        "code": 257,
+        "profileId": 259,
+        "label": "MA-dimmablelight",
+        "name": "MA-dimmablelight",
+        "deviceTypeOrder": 0
+      },
+      "deviceTypes": [
+        {
+          "code": 257,
+          "profileId": 259,
+          "label": "MA-dimmablelight",
+          "name": "MA-dimmablelight",
+          "deviceTypeOrder": 0
+        }
+      ],
+      "deviceVersions": [
+        1
+      ],
+      "deviceIdentifiers": [
+        257
+      ],
+      "deviceTypeName": "MA-dimmablelight",
+      "deviceTypeCode": 257,
+      "deviceTypeProfileId": 259,
+      "clusters": [
+        {
+          "name": "Identify",
+          "code": 3,
+          "mfgCode": null,
+          "define": "IDENTIFY_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "commands": [
+            {
+              "name": "Identify",
+              "code": 0,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "TriggerEffect",
+              "code": 64,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            }
+          ],
+          "attributes": [
+            {
+              "name": "IdentifyTime",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0x0",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "IdentifyType",
+              "code": 1,
+              "mfgCode": null,
+              "side": "server",
+              "type": "enum8",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0x0",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ClusterRevision",
+              "code": 65533,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "4",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "Groups",
+          "code": 4,
+          "mfgCode": null,
+          "define": "GROUPS_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "commands": [
+            {
+              "name": "AddGroup",
+              "code": 0,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "AddGroupResponse",
+              "code": 0,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "ViewGroupResponse",
+              "code": 1,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "ViewGroup",
+              "code": 1,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "GetGroupMembershipResponse",
+              "code": 2,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "GetGroupMembership",
+              "code": 2,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "RemoveGroupResponse",
+              "code": 3,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "RemoveGroup",
+              "code": 3,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "RemoveAllGroups",
+              "code": 4,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "AddGroupIfIdentifying",
+              "code": 5,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            }
+          ],
+          "attributes": [
+            {
+              "name": "NameSupport",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap8",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ClusterRevision",
+              "code": 65533,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "4",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "Scenes",
+          "code": 5,
+          "mfgCode": null,
+          "define": "SCENES_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "apiMaturity": "provisional",
+          "commands": [
+            {
+              "name": "AddScene",
+              "code": 0,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "AddSceneResponse",
+              "code": 0,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "ViewScene",
+              "code": 1,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "ViewSceneResponse",
+              "code": 1,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "RemoveScene",
+              "code": 2,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "RemoveSceneResponse",
+              "code": 2,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "RemoveAllScenesResponse",
+              "code": 3,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "RemoveAllScenes",
+              "code": 3,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "StoreScene",
+              "code": 4,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "StoreSceneResponse",
+              "code": 4,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "RecallScene",
+              "code": 5,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "GetSceneMembership",
+              "code": 6,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "GetSceneMembershipResponse",
+              "code": 6,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            }
+          ],
+          "attributes": [
+            {
+              "name": "SceneCount",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int8u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0x00",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "CurrentScene",
+              "code": 1,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int8u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0x00",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "CurrentGroup",
+              "code": 2,
+              "mfgCode": null,
+              "side": "server",
+              "type": "group_id",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0x0000",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "SceneValid",
+              "code": 3,
+              "mfgCode": null,
+              "side": "server",
+              "type": "boolean",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0x00",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "NameSupport",
+              "code": 4,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap8",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0x00",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ClusterRevision",
+              "code": 65533,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "4",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "On/Off",
+          "code": 6,
+          "mfgCode": null,
+          "define": "ON_OFF_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "commands": [
+            {
+              "name": "Off",
+              "code": 0,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "On",
+              "code": 1,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "Toggle",
+              "code": 2,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "OffWithEffect",
+              "code": 64,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "OnWithRecallGlobalScene",
+              "code": 65,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "OnWithTimedOff",
+              "code": 66,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            }
+          ],
+          "attributes": [
+            {
+              "name": "OnOff",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "boolean",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GlobalSceneControl",
+              "code": 16384,
+              "mfgCode": null,
+              "side": "server",
+              "type": "boolean",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "1",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "OnTime",
+              "code": 16385,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "OffWaitTime",
+              "code": 16386,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "StartUpOnOff",
+              "code": 16387,
+              "mfgCode": null,
+              "side": "server",
+              "type": "OnOffStartUpOnOff",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "1",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ClusterRevision",
+              "code": 65533,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "4",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "Level Control",
+          "code": 8,
+          "mfgCode": null,
+          "define": "LEVEL_CONTROL_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "commands": [
+            {
+              "name": "MoveToLevel",
+              "code": 0,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "Move",
+              "code": 1,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "Step",
+              "code": 2,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "Stop",
+              "code": 3,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "MoveToLevelWithOnOff",
+              "code": 4,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "MoveWithOnOff",
+              "code": 5,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "StepWithOnOff",
+              "code": 6,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "StopWithOnOff",
+              "code": 7,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            }
+          ],
+          "attributes": [
+            {
+              "name": "CurrentLevel",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int8u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0x00",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "RemainingTime",
+              "code": 1,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0x0000",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "Options",
+              "code": 15,
+              "mfgCode": null,
+              "side": "server",
+              "type": "LevelControlOptions",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0x00",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "OnLevel",
+              "code": 17,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int8u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "StartUpCurrentLevel",
+              "code": 16384,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int8u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "3",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ClusterRevision",
+              "code": 65533,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "5",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        },
+        {
+          "name": "Descriptor",
+          "code": 29,
+          "mfgCode": null,
+          "define": "DESCRIPTOR_CLUSTER",
+          "side": "server",
+          "enabled": 1,
+          "attributes": [
+            {
+              "name": "DeviceTypeList",
+              "code": 0,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ServerList",
+              "code": 1,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ClientList",
+              "code": 2,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "PartsList",
+              "code": 3,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 0,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "GeneratedCommandList",
+              "code": 65528,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AcceptedCommandList",
+              "code": 65529,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "EventList",
+              "code": 65530,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "AttributeList",
+              "code": 65531,
+              "mfgCode": null,
+              "side": "server",
+              "type": "array",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "FeatureMap",
+              "code": 65532,
+              "mfgCode": null,
+              "side": "server",
+              "type": "bitmap32",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "0",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
+            {
+              "name": "ClusterRevision",
+              "code": 65533,
+              "mfgCode": null,
+              "side": "server",
+              "type": "int16u",
+              "included": 1,
+              "storageOption": "External",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            }
+          ]
+        }
+      ]
+    }
+  ],
+  "endpoints": [
+    {
+      "endpointTypeName": "MA-rootdevice",
+      "endpointTypeIndex": 0,
+      "profileId": 259,
+      "endpointId": 0,
+      "networkId": null,
+      "parentEndpointIdentifier": null
+    },
+    {
+      "endpointTypeName": "Anonymous Endpoint Type",
+      "endpointTypeIndex": 1,
+      "profileId": 259,
+      "endpointId": 1,
+      "networkId": 0,
+      "parentEndpointIdentifier": null
+    }
+  ]
+}
\ No newline at end of file
diff --git a/test/startup.test.js b/test/startup.test.js
index 7b4bcd8..1d2aca1 100644
--- a/test/startup.test.js
+++ b/test/startup.test.js
@@ -26,11 +26,22 @@
 const dbApi = require('../src-electron/db/db-api')
 const querySession = require('../src-electron/db/query-session')
 const util = require('../src-electron/util/util')
+const importJs = require('../src-electron/importexport/import')
+const genEngine = require('../src-electron/generator/generation-engine')
 let originalContent
+let originalContentLightMatter
+let db
 
 beforeAll(async () => {
   env.setDevelopmentEnv()
-  // Save the original file content before tests. Used for uc upgrade testiing
+  let file = env.sqliteTestFile('startup')
+  db = await dbApi.initDatabaseAndLoadSchema(
+    file,
+    env.schemaFile(),
+    env.zapVersion()
+  )
+  env.setDevelopmentEnv()
+  // Save the original file content before tests. Used for uc upgrade testing
   originalContent = await fsPromise.readFile(
     path.join(__dirname, './resource/upgrade/multi-protocol.zap'),
     'utf-8'
@@ -39,6 +50,10 @@
     path.join(__dirname, './resource/upgrade/light.zap'),
     'utf-8'
   )
+  originalContentLightMatter = await fsPromise.readFile(
+    path.join(__dirname, './resource/upgrade/lighting-matter.zap'),
+    'utf-8'
+  )
 })
 
 afterAll(async () => {
@@ -53,6 +68,11 @@
     originalContentLight,
     'utf-8'
   )
+  await fsPromise.writeFile(
+    path.join(__dirname, './resource/upgrade/lighting-matter.zap'),
+    originalContentLightMatter,
+    'utf-8'
+  )
 })
 
 test(
@@ -203,6 +223,12 @@
       .catch(() => false)
     expect(fileExists).toBe(true)
 
+    const matterFileExists = await fsPromise
+      .stat(path.join(__dirname, './resource/upgrade/lighting-matter.zap'))
+      .then(() => true)
+      .catch(() => false)
+    expect(matterFileExists).toBe(true)
+
     let upgradeDirectory = path.join(__dirname, 'resource/upgrade')
     let testUpgradeResults = path.join(
       __dirname,
@@ -236,6 +262,47 @@
       )
       .then(() => {
         expect(fs.existsSync(testUpgradeResults)).toBeTruthy()
+        const upgradeResultsContent = fs.readFileSync(
+          testUpgradeResults,
+          'utf-8'
+        )
+
+        // Matter and Zigbee specific multi-protocol app tests
+        expect(upgradeResultsContent).toMatch(
+          /Cluster Revision attribute default value updated to 2 for Localization\n.*Configuration cluster on endpoint 0 matter/
+        )
+        expect(upgradeResultsContent).toMatch(
+          /Cluster Revision attribute default value updated to 2 for ZLL\n.*Commissioning cluster on endpoint 1 zigbee/
+        )
+        expect(upgradeResultsContent).toMatch(
+          /Cluster Revision attribute default value updated to 2 for Descriptor\n.*cluster on endpoint 1 matter/
+        )
+
+        // Only the level control of matter should be updated and not zigbee because matter applied that upgrade rule
+        expect(upgradeResultsContent).toMatch(
+          /Current Value attribute's default value updated to 10 for Level Control\n.*cluster on endpoint 1 matter/
+        )
+        expect(upgradeResultsContent).not.toMatch(
+          /Current Value attribute's default value updated to 10 for Level Control\n.*cluster on endpoint 1 zigbee/
+        )
+
+        // Only the on/off of zigbee should be updated and not matter because zigbee applied that upgrade rule
+        expect(upgradeResultsContent).toMatch(
+          /On\/Off attribute default value updated to 1 for On\/Off cluster on endpoint\n.*1 zigbee/
+        )
+        expect(upgradeResultsContent).not.toMatch(
+          /On\/Off attribute default value updated to 1 for On\/Off cluster on endpoint\n.*1 matter/
+        )
+
+        // Testing the order(priority) in which upgrade rules were run
+        // Making sure lower priority tests are run first
+        expect(upgradeResultsContent).toMatch(
+          /Cluster Revision attribute default value updated to 2 for ZLL\n.*Commissioning cluster on endpoint 1 zigbee.*\n.*\n.*\n.*On\/Off attribute default value updated to 1 for On\/Off cluster on endpoint\n.*1 zigbee/
+        )
+        expect(upgradeResultsContent).toMatch(
+          /Cluster Revision attribute default value updated to 2 for Descriptor\n.*cluster on endpoint 1 matter.*\n.*\n.*\n.*Current Value attribute's default value updated to 10 for Level Control\n.*cluster on endpoint 1 matter/
+        )
+
         fs.unlinkSync(testUpgradeResults)
       })
 
@@ -256,6 +323,62 @@
       '../../../zcl-builtin/silabs/zcl-zigbee.json"'
     )
     expect(fileContent).toContain('../../../zcl-builtin/matter/zcl-matter.json')
+
+    // Import the upgraded file for multiprotocol
+    let importRes = await importJs.importDataFromFile(
+      db,
+      path.join(__dirname, './resource/upgrade/multi-protocol.zap'),
+      { sessionId: null }
+    )
+    expect(importRes.errors.length).toBe(0)
+    expect(importRes.warnings.length).toBe(0)
+
+    // Check that generation happens successfully with the upgraded file
+    let genResultMatter = await genEngine.generate(
+      db,
+      importRes.sessionId,
+      importRes.templateIds[0],
+      {},
+      {
+        generateOnly: 'endpoint-config.c',
+        disableDeprecationWarnings: true
+      }
+    )
+    // Check for the specific string in the generated content
+    expect(genResultMatter.content['endpoint-config.c']).not.toContain(
+      `{ 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }`
+    )
+    expect(genResultMatter.content['endpoint-config.c']).toContain(
+      `{ 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(2) }`
+    )
+
+    // Import the upgraded file for matter
+    let importResMatter = await importJs.importDataFromFile(
+      db,
+      path.join(__dirname, './resource/upgrade/lighting-matter.zap'),
+      { sessionId: null }
+    )
+    expect(importResMatter.errors.length).toBe(0)
+    expect(importResMatter.warnings.length).toBe(0)
+
+    // Check that generation happens successfully with the upgraded file
+    let genResultMatterLight = await genEngine.generate(
+      db,
+      importResMatter.sessionId,
+      importResMatter.templateIds[0],
+      {},
+      {
+        generateOnly: 'endpoint-config.c',
+        disableDeprecationWarnings: true
+      }
+    )
+    // Check for the specific string in the generated content
+    expect(genResultMatterLight.content['endpoint-config.c']).not.toContain(
+      `{ 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(1) }`
+    )
+    expect(genResultMatterLight.content['endpoint-config.c']).toContain(
+      `{ 0x0000FFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(2) }`
+    )
   },
   testUtil.timeout.long()
 )
diff --git a/test/test-query.js b/test/test-query.js
index 5317aba..15c390b 100644
--- a/test/test-query.js
+++ b/test/test-query.js
@@ -255,6 +255,17 @@
     .then((rows) => rows.map(dbMapping.map.cluster))
 }
 
+/**
+ *
+ * @param {*} elements
+ * @param {*} name
+ * @returns true if the element is optional, false if the element is mandatory
+ */
+function checkIfElementIsOptional(elements, name) {
+  let element = elements.find((element) => element.name == name)
+  return element ? element.isOptional : false
+}
+
 exports.getAllEndpointTypeClusterState = getAllEndpointTypeClusterState
 exports.selectCountFrom = selectCountFrom
 exports.getEndpointTypeAttributes = getEndpointTypeAttributes
@@ -263,3 +274,4 @@
 exports.getAllSessionNotifications = getAllSessionNotifications
 exports.getAllNotificationMessages = getAllNotificationMessages
 exports.getAllSessionClusters = getAllSessionClusters
+exports.checkIfElementIsOptional = checkIfElementIsOptional
diff --git a/test/zcl-loader.test.js b/test/zcl-loader.test.js
index beefa59..4f1a114 100644
--- a/test/zcl-loader.test.js
+++ b/test/zcl-loader.test.js
@@ -23,6 +23,7 @@
 const queryZcl = require('../src-electron/db/query-zcl')
 const queryDeviceType = require('../src-electron/db/query-device-type')
 const queryCommand = require('../src-electron/db/query-command')
+const queryEvent = require('../src-electron/db/query-event')
 const queryPackage = require('../src-electron/db/query-package')
 const queryPackageNotification = require('../src-electron/db/query-package-notification')
 const zclLoader = require('../src-electron/zcl/zcl-loader')
@@ -594,14 +595,14 @@
       let ctx = await zclLoader.loadZcl(db, env.builtinMatterZclMetafile())
       let packageId = ctx.packageId
 
-      let zclCluster = await queryZcl.selectClusterByCode(db, packageId, 0x001f)
+      let aclCluster = await queryZcl.selectClusterByCode(db, packageId, 0x001f)
 
       /* Verify that the ACL attribute, defined using the list type format `array="true" type="X"` in XML,
         is correctly parsed and stored in the database as an array of AccessControlEntryStruct. */
       let attributes = await dbApi.dbAll(
         db,
         "SELECT * FROM ATTRIBUTE WHERE CLUSTER_REF = ? AND CODE = 0x0000 AND NAME = 'ACL'",
-        [zclCluster.id]
+        [aclCluster.id]
       )
       expect(attributes.length).toBe(1)
       let aclAttribute = attributes[0]
@@ -623,3 +624,111 @@
   },
   testUtil.timeout.long()
 )
+
+test(
+  'test loading IS_OPTIONAL column for Matter attributes, commands, and events',
+  async () => {
+    let db = await dbApi.initRamDatabase()
+    try {
+      await dbApi.loadSchema(db, env.schemaFile(), env.zapVersion())
+      let ctx = await zclLoader.loadZcl(db, env.builtinMatterZclMetafile())
+      let packageId = ctx.packageId
+
+      let doorLockCluster = await queryZcl.selectClusterByCode(
+        db,
+        packageId,
+        0x0101
+      )
+      let doorLockClusterId = doorLockCluster.id
+
+      let attributes =
+        await queryZcl.selectAttributesByClusterIdIncludingGlobal(
+          db,
+          doorLockClusterId,
+          [packageId]
+        )
+      // optional attribute undefined, conformance undefined -> mandatory
+      expect(
+        testQuery.checkIfElementIsOptional(attributes, 'ActuatorEnabled')
+      ).toBeFalsy()
+      // optional="true", conformance undefined -> optional
+      expect(
+        testQuery.checkIfElementIsOptional(attributes, 'DoorClosedEvents')
+      ).toBeTruthy()
+      // optional="false", conformance undefined -> mandatory
+      expect(
+        testQuery.checkIfElementIsOptional(attributes, 'LockType')
+      ).toBeFalsy()
+      // mandatory conformance, optional attribute undefined -> mandatory
+      expect(
+        testQuery.checkIfElementIsOptional(attributes, 'OperatingMode')
+      ).toBeFalsy()
+      // optionalConform to feature DPS, optional="true" -> optional
+      expect(
+        testQuery.checkIfElementIsOptional(attributes, 'DoorOpenEvents')
+      ).toBeTruthy()
+      // mandatory conformance, optional="true" -> optional as optional="true" takes precedence
+      expect(
+        testQuery.checkIfElementIsOptional(attributes, 'LockState')
+      ).toBeTruthy()
+      // mandatoryConform to feature DPS, optional="false" -> mandatory as optional="false" takes precedence
+      expect(
+        testQuery.checkIfElementIsOptional(attributes, 'DoorState')
+      ).toBeFalsy()
+
+      let commands = await queryCommand.selectCommandsByClusterId(
+        db,
+        doorLockClusterId,
+        [packageId]
+      )
+      // optional attribute undefined, conformance undefined -> mandatory
+      expect(
+        testQuery.checkIfElementIsOptional(commands, 'LockDoor')
+      ).toBeFalsy()
+      // optional="true", conformance undefined -> optional
+      expect(
+        testQuery.checkIfElementIsOptional(commands, 'GetWeekDaySchedule')
+      ).toBeTruthy()
+      // mandatory conformance, optional attribute undefined -> mandatory
+      expect(
+        testQuery.checkIfElementIsOptional(commands, 'UnlockDoor')
+      ).toBeFalsy()
+      // mandatoryConform to feature WDSCH, optional="true" -> optional
+      expect(
+        testQuery.checkIfElementIsOptional(commands, 'SetWeekDaySchedule')
+      ).toBeTruthy()
+      // optional conformance, optional="false" -> mandatory as optional="false" takes precedence
+      expect(
+        testQuery.checkIfElementIsOptional(commands, 'UnlockWithTimeout')
+      ).toBeFalsy()
+
+      let events = await queryEvent.selectEventsByClusterId(
+        db,
+        doorLockClusterId
+      )
+      // optional attribute undefined, conformance undefined -> mandatory
+      expect(
+        testQuery.checkIfElementIsOptional(events, 'LockUserChange')
+      ).toBeFalsy()
+      // optional="true", conformance undefined -> optional
+      expect(
+        testQuery.checkIfElementIsOptional(events, 'LockOperation')
+      ).toBeTruthy()
+      // mandatory conformance, optional attribute undefined -> mandatory
+      expect(
+        testQuery.checkIfElementIsOptional(events, 'LockOperationError')
+      ).toBeFalsy()
+      // mandatoryConform to feature DPS, optional="true" -> optional
+      expect(
+        testQuery.checkIfElementIsOptional(events, 'DoorStateChange')
+      ).toBeTruthy()
+      // mandatory conformance, optional="true" -> optional as optional="true" takes precedence
+      expect(
+        testQuery.checkIfElementIsOptional(events, 'DoorLockAlarm')
+      ).toBeTruthy()
+    } finally {
+      await dbApi.closeDatabase(db)
+    }
+  },
+  testUtil.timeout.long()
+)
diff --git a/zcl-builtin/matter/data-model/chip/door-lock-cluster.xml b/zcl-builtin/matter/data-model/chip/door-lock-cluster.xml
index 9902fe7..305b20e 100644
--- a/zcl-builtin/matter/data-model/chip/door-lock-cluster.xml
+++ b/zcl-builtin/matter/data-model/chip/door-lock-cluster.xml
@@ -67,16 +67,27 @@
             cluster itself. Those attributes/commands are marked with a special comment. -->
 
         <!-- Attributes -->
-        <attribute side="server" code="0" define="LOCK_STATE" type="DlLockState" min="0" max="2" isNullable="true" reportable="true" writable="false">LockState</attribute>
-        <attribute side="server" code="1" define="LOCK_TYPE" type="DlLockType" min="0" max="10" writable="false">LockType</attribute>
+        <attribute side="server" code="0" define="LOCK_STATE" type="DlLockState" min="0" max="2" isNullable="true" reportable="true" writable="false" optional="true">
+            <description>LockState</description>
+            <mandatoryConform/>
+        </attribute>
+        <attribute side="server" code="1" define="LOCK_TYPE" type="DlLockType" min="0" max="10" writable="false" optional="false">LockType</attribute>
         <attribute side="server" code="2" define="ACTUATOR_ENABLED" type="boolean" writable="false">ActuatorEnabled</attribute>
         <!-- Conformance feature DPS - for now optional -->
-        <attribute side="server" code="3" define="DOOR_STATE" type="DoorStateEnum" min="0" max="5" isNullable="true" reportable="true" optional="true">DoorState</attribute>
+        <attribute side="server" code="3" define="DOOR_STATE" type="DoorStateEnum" min="0" max="5" isNullable="true" reportable="true" optional="false">
+            <description>DoorState</description>
+            <mandatoryConform>
+                <feature name="DPS"/>
+            </mandatoryConform>
+        </attribute>
         <!-- Conformance feature [DPS] - for now optional -->
         <attribute side="server" code="4" define="DOOR_OPEN_EVENTS" type="INT32U" writable="true" optional="true">
             <description>DoorOpenEvents</description>
             <access op="read" role="view" />
             <access op="write" role="manage" />
+            <optionalConform>
+                <feature name="DPS"/>
+            </optionalConform>
         </attribute>
         <!-- Conformance feature [DPS] - for now optional -->
         <attribute side="server" code="5" define="DOOR_CLOSED_EVENTS" type="INT32U" writable="true" optional="true">
@@ -138,6 +149,7 @@
             <description>OperatingMode</description>
             <access op="read" role="view" />
             <access op="write" role="manage" />
+            <mandatoryConform/>
         </attribute>
         <attribute side="server" code="38" define="SUPPORTED_OPERATING_MODES" type="DlSupportedOperatingModes" min="0x0000" max="0xFFFF" default="0xFFF6" writable="false">SupportedOperatingModes</attribute>
         <attribute side="server" code="39" define="DEFAULT_CONFIGURATION_REGISTER" type="DlDefaultConfigurationRegister" min="0x0000" max="0xFFFF" reportable="true" default="0" writable="false" optional="true">DefaultConfigurationRegister</attribute>
@@ -208,13 +220,15 @@
             <description>This command causes the lock device to unlock the door.</description>
             <!-- Conformance feature [COTA & PIN] - for now optional -->
             <arg name="PINCode" type="OCTET_STRING" optional="true" />
+            <mandatoryConform/>
         </command>
         <!-- Command Toggle with ID 2 is deprecated/disallowed -->
-        <command source="client" code="3" name="UnlockWithTimeout" mustUseTimedInvoke="true" optional="true">
+        <command source="client" code="3" name="UnlockWithTimeout" mustUseTimedInvoke="true" optional="false">
             <description>This command causes the lock device to unlock the door with a timeout parameter.</description>
             <arg name="Timeout" type="INT16U" />
             <!-- Conformance feature [COTA & PIN] - for now optional -->
             <arg name="PINCode" type="OCTET_STRING" optional="true" />
+            <optionalConform/>
         </command>
         <!-- Conformance feature WDSCH - for now optional -->
         <command source="client" code="11" name="SetWeekDaySchedule" optional="true">
@@ -227,6 +241,9 @@
             <arg name="StartMinute" type="INT8U" />
             <arg name="EndHour" type="INT8U" />
             <arg name="EndMinute" type="INT8U" />
+            <mandatoryConform>
+                <feature name="WDSCH"/>
+            </mandatoryConform>
         </command>
         <!-- Conformance feature WDSCH - for now optional -->
         <command source="client" code="12" name="GetWeekDaySchedule" response="GetWeekDayScheduleResponse" optional="true">
@@ -396,16 +413,20 @@
 
 
         <!-- Events -->
-        <event side="server" code="0" name="DoorLockAlarm" priority="critical">
+        <event side="server" code="0" name="DoorLockAlarm" priority="critical" optional="true">
             <description>The door lock cluster provides several alarms which can be sent when there is a critical state on the door lock.</description>
             <field id="0" name="AlarmCode" type="AlarmCodeEnum" />
+            <mandatoryConform/>
         </event>
         <!-- Conformance feature DPS - for now optional -->
         <event side="server" code="1" name="DoorStateChange" priority="critical" optional="true">
             <description>The door lock server sends out a DoorStateChange event when the door lock door state changes.</description>
             <field id="0" name="DoorState" type="DoorStateEnum" />
+            <mandatoryConform>
+                <feature name="DPS"/>
+            </mandatoryConform>
         </event>
-        <event side="server" code="2" name="LockOperation" priority="critical">
+        <event side="server" code="2" name="LockOperation" priority="critical" optional="true">
             <description>The door lock server sends out a LockOperation event when the event is triggered by the various lock operation sources.</description>
             <field id="0" name="LockOperationType" type="LockOperationTypeEnum" />
             <field id="1" name="OperationSource" type="OperationSourceEnum" />
@@ -425,6 +446,7 @@
             <field id="5" name="SourceNode" type="NODE_ID" isNullable="true" />
             <!-- Conformance feature [USR] - for now optional -->
             <field id="6" name="Credentials" type="CredentialStruct" array="true" isNullable="true" optional="true" />
+            <mandatoryConform/>
         </event>
         <event side="server" code="4" name="LockUserChange" priority="info">
             <description>The door lock server sends out a LockUserChange event when a lock user, schedule, or credential change has occurred.</description>
diff --git a/zcl-builtin/matter/upgrade-rules-matter.json b/zcl-builtin/matter/upgrade-rules-matter.json
new file mode 100644
index 0000000..92757bc
--- /dev/null
+++ b/zcl-builtin/matter/upgrade-rules-matter.json
@@ -0,0 +1,15 @@
+{
+  "version": 1,
+  "description": "Upgrade Rules for Zigbee .zap files",
+  "category": "matter",
+  "upgradeRuleScripts": [
+    {
+      "path": "../../test/resource/test-matter-attribute-default-value-update.js",
+      "priority": 101
+    },
+    {
+      "path": "../../test/resource/test-attribute-default-value-update.js",
+      "priority": 100
+    }
+  ]
+}
diff --git a/zcl-builtin/matter/zcl-matter.json b/zcl-builtin/matter/zcl-matter.json
index e3c7562..47fc644 100644
--- a/zcl-builtin/matter/zcl-matter.json
+++ b/zcl-builtin/matter/zcl-matter.json
@@ -280,5 +280,6 @@
     "indexFieldId": 254,
     "indexFieldName": "FabricIndex",
     "indexType": "fabric_idx"
-  }
+  },
+  "upgradeRules": "./upgrade-rules-matter.json"
 }
diff --git a/zcl-builtin/silabs/upgrade-rules-zigbee.json b/zcl-builtin/silabs/upgrade-rules-zigbee.json
new file mode 100644
index 0000000..2c160be
--- /dev/null
+++ b/zcl-builtin/silabs/upgrade-rules-zigbee.json
@@ -0,0 +1,15 @@
+{
+  "version": 1,
+  "description": "Upgrade Rules for Zigbee .zap files",
+  "category": "zigbee",
+  "upgradeRuleScripts": [
+    {
+      "path": "../../test/resource/test-zigbee-attribute-default-value-update.js",
+      "priority": 101
+    },
+    {
+      "path": "../../test/resource/test-attribute-default-value-update.js",
+      "priority": 100
+    }
+  ]
+}
diff --git a/zcl-builtin/silabs/zcl-zigbee.json b/zcl-builtin/silabs/zcl-zigbee.json
index b5130f0..9b4fc1f 100644
--- a/zcl-builtin/silabs/zcl-zigbee.json
+++ b/zcl-builtin/silabs/zcl-zigbee.json
@@ -67,5 +67,6 @@
       "label": "List of clusters and attributes associated across protocols",
       "defaults": "multi-protocol.json"
     }
-  }
+  },
+  "upgradeRules": "./upgrade-rules-zigbee.json"
 }
