From b498d7005b0ab93a92a5a57d11acef3fc9f00a43 Mon Sep 17 00:00:00 2001
From: Thirupathi S <Thirupathi.S@silabs.com>
Date: Tue, 4 Jun 2024 12:16:20 +0530
Subject: [PATCH 1/2] cherry-pick of colorcontrol and doorlock changes

---
 .../all-clusters-app.matter                   | 104 +++----
 .../all-clusters-minimal-app.matter           | 106 +++----
 ...de_colortemperaturelight_hbUnzYVeyn.matter | 104 +++----
 .../rootnode_doorlock_aNKYAreMXE.matter       |   2 +-
 ...tnode_extendedcolorlight_8lcaaYJVAa.matter | 104 +++----
 .../light-switch-app.matter                   | 104 +++----
 .../light-switch-app/qpg/zap/switch.matter    | 104 +++----
 .../data_model/lighting-app-ethernet.matter   | 104 +++----
 .../data_model/lighting-app-thread.matter     | 104 +++----
 .../data_model/lighting-app-wifi.matter       | 104 +++----
 .../lighting-common/lighting-app.matter       | 104 +++----
 examples/lighting-app/qpg/zap/light.matter    | 104 +++----
 .../data_model/lighting-thread-app.matter     | 104 +++----
 .../data_model/lighting-wifi-app.matter       | 104 +++----
 examples/lock-app/lock-common/lock-app.matter |   2 +-
 examples/lock-app/nxp/zap/lock-app.matter     |   2 +-
 examples/lock-app/qpg/zap/lock.matter         |   2 +-
 .../placeholder/linux/apps/app1/config.matter | 212 +++++++-------
 .../placeholder/linux/apps/app2/config.matter | 212 +++++++-------
 .../virtual-device-app.matter                 | 106 +++----
 .../app-templates/endpoint_config.h           |  36 +--
 .../app-templates/endpoint_config.h           |   2 +-
 .../color-control-server.cpp                  | 262 ++++++++----------
 .../color-control-server.h                    |  24 +-
 .../data-model/chip/color-control-cluster.xml | 136 +++++----
 .../zcl/data-model/chip/door-lock-cluster.xml |   2 +-
 .../data_model/controller-clusters.matter     | 106 +++----
 .../cluster/clusters/DoorLockCluster.kt       |  18 +-
 .../CHIPAttributeTLVValueDecoder.cpp          |   4 +-
 .../python/chip/clusters/Objects.py           | 158 +++++------
 .../MTRAttributeTLVValueDecoder.mm            |  12 +-
 .../CHIP/zap-generated/MTRBaseClusters.h      | 110 ++++----
 .../CHIP/zap-generated/MTRBaseClusters.mm     |   2 +-
 .../zap-generated/attributes/Accessors.cpp    |  55 ++--
 .../zap-generated/attributes/Accessors.h      |  33 ++-
 .../zap-generated/cluster-enums-check.h       |  56 ++--
 .../app-common/zap-generated/cluster-enums.h  |  98 +++----
 .../zap-generated/cluster-objects.h           | 153 +++++-----
 .../zap-generated/cluster/Commands.h          |  28 +-
 .../cluster/logging/DataModelLogger.cpp       |  12 +-
 40 files changed, 1612 insertions(+), 1587 deletions(-)

diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
index 2c54d75c7e6b06..621c2b11fab2fd 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
@@ -5421,85 +5421,85 @@ cluster ThermostatUserInterfaceConfiguration = 516 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -5531,13 +5531,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -5551,21 +5551,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -5580,14 +5580,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -5634,21 +5634,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -5664,9 +5664,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -5679,7 +5679,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -5688,7 +5688,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
index 0c9569504c7846..fc766aa575eb31 100644
--- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
+++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
@@ -2972,7 +2972,7 @@ cluster DoorLock = 257 {
   readonly attribute optional int8u numberOfCredentialsSupportedPerUser = 28;
   attribute access(write: manage) optional char_string<3> language = 33;
   attribute access(write: manage) optional int8u LEDSettings = 34;
-  attribute access(write: manage) int32u autoRelockTime = 35;
+  attribute access(write: manage) optional int32u autoRelockTime = 35;
   attribute access(write: manage) optional int8u soundVolume = 36;
   attribute access(write: manage) OperatingModeEnum operatingMode = 37;
   readonly attribute DlSupportedOperatingModes supportedOperatingModes = 38;
@@ -3980,85 +3980,85 @@ cluster ThermostatUserInterfaceConfiguration = 516 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -4090,13 +4090,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -4110,21 +4110,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -4139,14 +4139,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -4193,21 +4193,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -4223,9 +4223,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -4238,7 +4238,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -4247,7 +4247,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter
index 8bdb0183370199..4ffb6d19057783 100644
--- a/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter
+++ b/examples/chef/devices/rootnode_colortemperaturelight_hbUnzYVeyn.matter
@@ -1406,85 +1406,85 @@ cluster GroupKeyManagement = 63 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -1516,13 +1516,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -1536,21 +1536,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1565,14 +1565,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1619,21 +1619,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1649,9 +1649,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -1664,7 +1664,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -1673,7 +1673,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
index bceebc611c7ca3..c308bafbb34472 100644
--- a/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
+++ b/examples/chef/devices/rootnode_doorlock_aNKYAreMXE.matter
@@ -1878,7 +1878,7 @@ cluster DoorLock = 257 {
   readonly attribute optional int8u numberOfCredentialsSupportedPerUser = 28;
   attribute access(write: manage) optional char_string<3> language = 33;
   attribute access(write: manage) optional int8u LEDSettings = 34;
-  attribute access(write: manage) int32u autoRelockTime = 35;
+  attribute access(write: manage) optional int32u autoRelockTime = 35;
   attribute access(write: manage) optional int8u soundVolume = 36;
   attribute access(write: manage) OperatingModeEnum operatingMode = 37;
   readonly attribute DlSupportedOperatingModes supportedOperatingModes = 38;
diff --git a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter
index 9f4fdb2ae9bb15..ba17426ae517ab 100644
--- a/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter
+++ b/examples/chef/devices/rootnode_extendedcolorlight_8lcaaYJVAa.matter
@@ -1507,85 +1507,85 @@ cluster FixedLabel = 64 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -1617,13 +1617,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -1637,21 +1637,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1666,14 +1666,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1720,21 +1720,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1750,9 +1750,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -1765,7 +1765,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -1774,7 +1774,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/examples/light-switch-app/light-switch-common/light-switch-app.matter b/examples/light-switch-app/light-switch-common/light-switch-app.matter
index e51a772add14e2..4e17ab3ac70448 100644
--- a/examples/light-switch-app/light-switch-common/light-switch-app.matter
+++ b/examples/light-switch-app/light-switch-common/light-switch-app.matter
@@ -2176,85 +2176,85 @@ provisional cluster ScenesManagement = 98 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -2286,13 +2286,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -2306,21 +2306,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2335,14 +2335,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2389,21 +2389,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2419,9 +2419,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -2434,7 +2434,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -2443,7 +2443,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/examples/light-switch-app/qpg/zap/switch.matter b/examples/light-switch-app/qpg/zap/switch.matter
index e3da4bf1d979f6..8e7acf71341373 100644
--- a/examples/light-switch-app/qpg/zap/switch.matter
+++ b/examples/light-switch-app/qpg/zap/switch.matter
@@ -1973,85 +1973,85 @@ provisional cluster ScenesManagement = 98 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -2083,13 +2083,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -2103,21 +2103,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2132,14 +2132,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2186,21 +2186,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2216,9 +2216,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -2231,7 +2231,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -2240,7 +2240,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter
index 626d1bce2be886..01390f4af6d0a7 100644
--- a/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter
+++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-ethernet.matter
@@ -1546,85 +1546,85 @@ cluster UserLabel = 65 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -1656,13 +1656,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -1676,21 +1676,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1705,14 +1705,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1759,21 +1759,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1789,9 +1789,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -1804,7 +1804,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -1813,7 +1813,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter
index 20beaa69361266..667b632dbae0cc 100644
--- a/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter
+++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-thread.matter
@@ -1670,85 +1670,85 @@ cluster UserLabel = 65 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -1780,13 +1780,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -1800,21 +1800,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1829,14 +1829,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1883,21 +1883,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1913,9 +1913,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -1928,7 +1928,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -1937,7 +1937,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter
index 4bc07365ff7564..1f01e3d302ffc6 100644
--- a/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter
+++ b/examples/lighting-app/bouffalolab/data_model/lighting-app-wifi.matter
@@ -1581,85 +1581,85 @@ cluster UserLabel = 65 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -1691,13 +1691,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -1711,21 +1711,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1740,14 +1740,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1794,21 +1794,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1824,9 +1824,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -1839,7 +1839,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -1848,7 +1848,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/examples/lighting-app/lighting-common/lighting-app.matter b/examples/lighting-app/lighting-common/lighting-app.matter
index 97c2eb59037f73..0aa6852c30ef04 100644
--- a/examples/lighting-app/lighting-common/lighting-app.matter
+++ b/examples/lighting-app/lighting-common/lighting-app.matter
@@ -1993,85 +1993,85 @@ provisional cluster ScenesManagement = 98 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -2103,13 +2103,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -2123,21 +2123,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2152,14 +2152,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2206,21 +2206,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2236,9 +2236,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -2251,7 +2251,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -2260,7 +2260,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/examples/lighting-app/qpg/zap/light.matter b/examples/lighting-app/qpg/zap/light.matter
index 0fb3d8b9dcf7bc..1b66384f708d37 100644
--- a/examples/lighting-app/qpg/zap/light.matter
+++ b/examples/lighting-app/qpg/zap/light.matter
@@ -1609,85 +1609,85 @@ cluster UserLabel = 65 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -1719,13 +1719,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -1739,21 +1739,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1768,14 +1768,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1822,21 +1822,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -1852,9 +1852,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -1867,7 +1867,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -1876,7 +1876,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/examples/lighting-app/silabs/data_model/lighting-thread-app.matter b/examples/lighting-app/silabs/data_model/lighting-thread-app.matter
index 415281989cae5d..af6952c7a12edf 100644
--- a/examples/lighting-app/silabs/data_model/lighting-thread-app.matter
+++ b/examples/lighting-app/silabs/data_model/lighting-thread-app.matter
@@ -2078,85 +2078,85 @@ provisional cluster ScenesManagement = 98 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -2188,13 +2188,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -2208,21 +2208,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2237,14 +2237,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2291,21 +2291,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2321,9 +2321,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -2336,7 +2336,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -2345,7 +2345,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter b/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter
index 90083596d9cf24..1251e99440e298 100644
--- a/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter
+++ b/examples/lighting-app/silabs/data_model/lighting-wifi-app.matter
@@ -1989,85 +1989,85 @@ provisional cluster ScenesManagement = 98 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -2099,13 +2099,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -2119,21 +2119,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2148,14 +2148,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2202,21 +2202,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2232,9 +2232,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -2247,7 +2247,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -2256,7 +2256,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter
index 8fee37c9493c67..72a69b77aaf541 100644
--- a/examples/lock-app/lock-common/lock-app.matter
+++ b/examples/lock-app/lock-common/lock-app.matter
@@ -2252,7 +2252,7 @@ cluster DoorLock = 257 {
   readonly attribute optional int8u numberOfCredentialsSupportedPerUser = 28;
   attribute access(write: manage) optional char_string<3> language = 33;
   attribute access(write: manage) optional int8u LEDSettings = 34;
-  attribute access(write: manage) int32u autoRelockTime = 35;
+  attribute access(write: manage) optional int32u autoRelockTime = 35;
   attribute access(write: manage) optional int8u soundVolume = 36;
   attribute access(write: manage) OperatingModeEnum operatingMode = 37;
   readonly attribute DlSupportedOperatingModes supportedOperatingModes = 38;
diff --git a/examples/lock-app/nxp/zap/lock-app.matter b/examples/lock-app/nxp/zap/lock-app.matter
index 7d739c5d92f4f2..587cc09cd26b2d 100644
--- a/examples/lock-app/nxp/zap/lock-app.matter
+++ b/examples/lock-app/nxp/zap/lock-app.matter
@@ -1504,7 +1504,7 @@ cluster DoorLock = 257 {
   readonly attribute optional int8u numberOfCredentialsSupportedPerUser = 28;
   attribute access(write: manage) optional char_string<3> language = 33;
   attribute access(write: manage) optional int8u LEDSettings = 34;
-  attribute access(write: manage) int32u autoRelockTime = 35;
+  attribute access(write: manage) optional int32u autoRelockTime = 35;
   attribute access(write: manage) optional int8u soundVolume = 36;
   attribute access(write: manage) OperatingModeEnum operatingMode = 37;
   readonly attribute DlSupportedOperatingModes supportedOperatingModes = 38;
diff --git a/examples/lock-app/qpg/zap/lock.matter b/examples/lock-app/qpg/zap/lock.matter
index cf9816993e89b4..1f7e6cacf40f38 100644
--- a/examples/lock-app/qpg/zap/lock.matter
+++ b/examples/lock-app/qpg/zap/lock.matter
@@ -1908,7 +1908,7 @@ cluster DoorLock = 257 {
   readonly attribute optional int8u numberOfCredentialsSupportedPerUser = 28;
   attribute access(write: manage) optional char_string<3> language = 33;
   attribute access(write: manage) optional int8u LEDSettings = 34;
-  attribute access(write: manage) int32u autoRelockTime = 35;
+  attribute access(write: manage) optional int32u autoRelockTime = 35;
   attribute access(write: manage) optional int8u soundVolume = 36;
   attribute access(write: manage) OperatingModeEnum operatingMode = 37;
   readonly attribute DlSupportedOperatingModes supportedOperatingModes = 38;
diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter
index 978b5c4fdfcfcc..69fd662fa10008 100644
--- a/examples/placeholder/linux/apps/app1/config.matter
+++ b/examples/placeholder/linux/apps/app1/config.matter
@@ -3566,7 +3566,7 @@ cluster DoorLock = 257 {
   readonly attribute optional int8u numberOfCredentialsSupportedPerUser = 28;
   attribute access(write: manage) optional char_string<3> language = 33;
   attribute access(write: manage) optional int8u LEDSettings = 34;
-  attribute access(write: manage) int32u autoRelockTime = 35;
+  attribute access(write: manage) optional int32u autoRelockTime = 35;
   attribute access(write: manage) optional int8u soundVolume = 36;
   attribute access(write: manage) OperatingModeEnum operatingMode = 37;
   readonly attribute DlSupportedOperatingModes supportedOperatingModes = 38;
@@ -4217,7 +4217,7 @@ cluster DoorLock = 257 {
   readonly attribute optional int8u numberOfCredentialsSupportedPerUser = 28;
   attribute access(write: manage) optional char_string<3> language = 33;
   attribute access(write: manage) optional int8u LEDSettings = 34;
-  attribute access(write: manage) int32u autoRelockTime = 35;
+  attribute access(write: manage) optional int32u autoRelockTime = 35;
   attribute access(write: manage) optional int8u soundVolume = 36;
   attribute access(write: manage) OperatingModeEnum operatingMode = 37;
   readonly attribute DlSupportedOperatingModes supportedOperatingModes = 38;
@@ -5548,85 +5548,85 @@ cluster ThermostatUserInterfaceConfiguration = 516 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -5658,13 +5658,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -5678,21 +5678,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -5707,14 +5707,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -5761,21 +5761,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -5791,9 +5791,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -5806,7 +5806,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -5815,7 +5815,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
@@ -5868,85 +5868,85 @@ cluster ColorControl = 768 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -5978,13 +5978,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -5998,21 +5998,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -6027,14 +6027,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -6081,21 +6081,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -6111,9 +6111,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -6126,7 +6126,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -6135,7 +6135,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter
index 1734e9d738f9b7..a157d9181fb2f4 100644
--- a/examples/placeholder/linux/apps/app2/config.matter
+++ b/examples/placeholder/linux/apps/app2/config.matter
@@ -3523,7 +3523,7 @@ cluster DoorLock = 257 {
   readonly attribute optional int8u numberOfCredentialsSupportedPerUser = 28;
   attribute access(write: manage) optional char_string<3> language = 33;
   attribute access(write: manage) optional int8u LEDSettings = 34;
-  attribute access(write: manage) int32u autoRelockTime = 35;
+  attribute access(write: manage) optional int32u autoRelockTime = 35;
   attribute access(write: manage) optional int8u soundVolume = 36;
   attribute access(write: manage) OperatingModeEnum operatingMode = 37;
   readonly attribute DlSupportedOperatingModes supportedOperatingModes = 38;
@@ -4174,7 +4174,7 @@ cluster DoorLock = 257 {
   readonly attribute optional int8u numberOfCredentialsSupportedPerUser = 28;
   attribute access(write: manage) optional char_string<3> language = 33;
   attribute access(write: manage) optional int8u LEDSettings = 34;
-  attribute access(write: manage) int32u autoRelockTime = 35;
+  attribute access(write: manage) optional int32u autoRelockTime = 35;
   attribute access(write: manage) optional int8u soundVolume = 36;
   attribute access(write: manage) OperatingModeEnum operatingMode = 37;
   readonly attribute DlSupportedOperatingModes supportedOperatingModes = 38;
@@ -5505,85 +5505,85 @@ cluster ThermostatUserInterfaceConfiguration = 516 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -5615,13 +5615,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -5635,21 +5635,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -5664,14 +5664,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -5718,21 +5718,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -5748,9 +5748,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -5763,7 +5763,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -5772,7 +5772,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
@@ -5825,85 +5825,85 @@ cluster ColorControl = 768 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -5935,13 +5935,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -5955,21 +5955,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -5984,14 +5984,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -6038,21 +6038,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -6068,9 +6068,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -6083,7 +6083,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -6092,7 +6092,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter b/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter
index a190ff6d15e4ab..a930ee452f3527 100644
--- a/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter
+++ b/examples/virtual-device-app/virtual-device-common/virtual-device-app.matter
@@ -2448,7 +2448,7 @@ cluster DoorLock = 257 {
   readonly attribute optional int8u numberOfCredentialsSupportedPerUser = 28;
   attribute access(write: manage) optional char_string<3> language = 33;
   attribute access(write: manage) optional int8u LEDSettings = 34;
-  attribute access(write: manage) int32u autoRelockTime = 35;
+  attribute access(write: manage) optional int32u autoRelockTime = 35;
   attribute access(write: manage) optional int8u soundVolume = 36;
   attribute access(write: manage) OperatingModeEnum operatingMode = 37;
   readonly attribute DlSupportedOperatingModes supportedOperatingModes = 38;
@@ -2692,85 +2692,85 @@ cluster DoorLock = 257 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -2802,13 +2802,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -2822,21 +2822,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2851,14 +2851,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2905,21 +2905,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -2935,9 +2935,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -2950,7 +2950,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -2959,7 +2959,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h b/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h
index ca2e15eedf5683..72dd1c1ee25932 100644
--- a/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h
+++ b/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h
@@ -302,15 +302,15 @@
             { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x7 }, /* ControlMode */                                                  \
                                                                                                                                    \
             /* Endpoint: 1, Cluster: Thermostat (server) */                                                                        \
-            { (uint16_t) 0xA28, (uint16_t) -0x6AB3, (uint16_t) 0x7FFF }, /* OccupiedCoolingSetpoint */                             \
-            { (uint16_t) 0x7D0, (uint16_t) -0x6AB3, (uint16_t) 0x7FFF }, /* OccupiedHeatingSetpoint */                             \
-            { (uint16_t) 0x2BC, (uint16_t) -0x6AB3, (uint16_t) 0x7FFF }, /* MinHeatSetpointLimit */                                \
-            { (uint16_t) 0xBB8, (uint16_t) -0x6AB3, (uint16_t) 0x7FFF }, /* MaxHeatSetpointLimit */                                \
-            { (uint16_t) 0x640, (uint16_t) -0x6AB3, (uint16_t) 0x7FFF }, /* MinCoolSetpointLimit */                                \
-            { (uint16_t) 0xC80, (uint16_t) -0x6AB3, (uint16_t) 0x7FFF }, /* MaxCoolSetpointLimit */                                \
-            { (uint16_t) 0x19, (uint16_t) 0x0, (uint16_t) 0x19 },        /* MinSetpointDeadBand */                                 \
-            { (uint16_t) 0x4, (uint16_t) 0x0, (uint16_t) 0x5 },          /* ControlSequenceOfOperation */                          \
-            { (uint16_t) 0x1, (uint16_t) 0x0, (uint16_t) 0x9 },          /* SystemMode */                                          \
+            { (uint16_t) 0xA28, (uint16_t) - 0x6AB3, (uint16_t) 0x7FFF }, /* OccupiedCoolingSetpoint */                            \
+            { (uint16_t) 0x7D0, (uint16_t) - 0x6AB3, (uint16_t) 0x7FFF }, /* OccupiedHeatingSetpoint */                            \
+            { (uint16_t) 0x2BC, (uint16_t) - 0x6AB3, (uint16_t) 0x7FFF }, /* MinHeatSetpointLimit */                               \
+            { (uint16_t) 0xBB8, (uint16_t) - 0x6AB3, (uint16_t) 0x7FFF }, /* MaxHeatSetpointLimit */                               \
+            { (uint16_t) 0x640, (uint16_t) - 0x6AB3, (uint16_t) 0x7FFF }, /* MinCoolSetpointLimit */                               \
+            { (uint16_t) 0xC80, (uint16_t) - 0x6AB3, (uint16_t) 0x7FFF }, /* MaxCoolSetpointLimit */                               \
+            { (uint16_t) 0x19, (uint16_t) 0x0, (uint16_t) 0x19 },         /* MinSetpointDeadBand */                                \
+            { (uint16_t) 0x4, (uint16_t) 0x0, (uint16_t) 0x5 },           /* ControlSequenceOfOperation */                         \
+            { (uint16_t) 0x1, (uint16_t) 0x0, (uint16_t) 0x9 },           /* SystemMode */                                         \
                                                                                                                                    \
             /* Endpoint: 1, Cluster: Fan Control (server) */                                                                       \
             { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0x6 },  /* FanMode */                                                     \
@@ -334,14 +334,14 @@
             { (uint16_t) 0x0, (uint16_t) 0x0, (uint16_t) 0xFEFF }, /* StartUpColorTemperatureMireds */                             \
                                                                                                                                    \
             /* Endpoint: 1, Cluster: Unit Testing (server) */                                                                      \
-            { (uint16_t) 0x46, (uint16_t) 0x14, (uint16_t) 0x64 },   /* range_restricted_int8u */                                  \
-            { (uint16_t) -0x14, (uint16_t) -0x28, (uint16_t) 0x32 }, /* range_restricted_int8s */                                  \
-            { (uint16_t) 0xC8, (uint16_t) 0x64, (uint16_t) 0x3E8 },  /* range_restricted_int16u */                                 \
-            { (uint16_t) -0x64, (uint16_t) -0x96, (uint16_t) 0xC8 }, /* range_restricted_int16s */                                 \
-            { (uint16_t) 0x46, (uint16_t) 0x14, (uint16_t) 0x64 },   /* nullable_range_restricted_int8u */                         \
-            { (uint16_t) -0x14, (uint16_t) -0x28, (uint16_t) 0x32 }, /* nullable_range_restricted_int8s */                         \
-            { (uint16_t) 0xC8, (uint16_t) 0x64, (uint16_t) 0x3E8 },  /* nullable_range_restricted_int16u */                        \
-            { (uint16_t) -0x64, (uint16_t) -0x96, (uint16_t) 0xC8 }, /* nullable_range_restricted_int16s */                        \
+            { (uint16_t) 0x46, (uint16_t) 0x14, (uint16_t) 0x64 },     /* range_restricted_int8u */                                \
+            { (uint16_t) - 0x14, (uint16_t) - 0x28, (uint16_t) 0x32 }, /* range_restricted_int8s */                                \
+            { (uint16_t) 0xC8, (uint16_t) 0x64, (uint16_t) 0x3E8 },    /* range_restricted_int16u */                               \
+            { (uint16_t) - 0x64, (uint16_t) - 0x96, (uint16_t) 0xC8 }, /* range_restricted_int16s */                               \
+            { (uint16_t) 0x46, (uint16_t) 0x14, (uint16_t) 0x64 },     /* nullable_range_restricted_int8u */                       \
+            { (uint16_t) - 0x14, (uint16_t) - 0x28, (uint16_t) 0x32 }, /* nullable_range_restricted_int8s */                       \
+            { (uint16_t) 0xC8, (uint16_t) 0x64, (uint16_t) 0x3E8 },    /* nullable_range_restricted_int16u */                      \
+            { (uint16_t) - 0x64, (uint16_t) - 0x96, (uint16_t) 0xC8 }, /* nullable_range_restricted_int16s */                      \
                                                                                                                                    \
         /* Endpoint: 2, Cluster: On/Off (server) */                                                                                \
         {                                                                                                                          \
@@ -1107,7 +1107,7 @@
             { ZAP_SIMPLE_DEFAULT(0x0000), 0x00004000, 2, ZAP_TYPE(INT16U), 0 }, /* EnhancedCurrentHue */                           \
             { ZAP_SIMPLE_DEFAULT(0x01), 0x00004001, 1, ZAP_TYPE(ENUM8), 0 },    /* EnhancedColorMode */                            \
             { ZAP_SIMPLE_DEFAULT(0x00), 0x00004002, 1, ZAP_TYPE(INT8U), 0 },    /* ColorLoopActive */                              \
-            { ZAP_SIMPLE_DEFAULT(0x00), 0x00004003, 1, ZAP_TYPE(INT8U), 0 },    /* ColorLoopDirection */                           \
+            { ZAP_SIMPLE_DEFAULT(0x00), 0x00004003, 1, ZAP_TYPE(ENUM8), 0 },    /* ColorLoopDirection */                           \
             { ZAP_SIMPLE_DEFAULT(0x0019), 0x00004004, 2, ZAP_TYPE(INT16U), 0 }, /* ColorLoopTime */                                \
             { ZAP_SIMPLE_DEFAULT(0x2300), 0x00004005, 2, ZAP_TYPE(INT16U), 0 }, /* ColorLoopStartEnhancedHue */                    \
             { ZAP_SIMPLE_DEFAULT(0x0000), 0x00004006, 2, ZAP_TYPE(INT16U), 0 }, /* ColorLoopStoredEnhancedHue */                   \
diff --git a/scripts/tools/zap/tests/outputs/lighting-app/app-templates/endpoint_config.h b/scripts/tools/zap/tests/outputs/lighting-app/app-templates/endpoint_config.h
index f04deadd1610b7..aa7f3fb2c82637 100644
--- a/scripts/tools/zap/tests/outputs/lighting-app/app-templates/endpoint_config.h
+++ b/scripts/tools/zap/tests/outputs/lighting-app/app-templates/endpoint_config.h
@@ -500,7 +500,7 @@
             { ZAP_SIMPLE_DEFAULT(0x0000), 0x00004000, 2, ZAP_TYPE(INT16U), 0 },                           /* EnhancedCurrentHue */ \
             { ZAP_SIMPLE_DEFAULT(0x01), 0x00004001, 1, ZAP_TYPE(ENUM8), 0 },                              /* EnhancedColorMode */  \
             { ZAP_SIMPLE_DEFAULT(0x00), 0x00004002, 1, ZAP_TYPE(INT8U), 0 },                              /* ColorLoopActive */    \
-            { ZAP_SIMPLE_DEFAULT(0x00), 0x00004003, 1, ZAP_TYPE(INT8U), 0 },                              /* ColorLoopDirection */ \
+            { ZAP_SIMPLE_DEFAULT(0x00), 0x00004003, 1, ZAP_TYPE(ENUM8), 0 },                              /* ColorLoopDirection */ \
             { ZAP_SIMPLE_DEFAULT(0x0019), 0x00004004, 2, ZAP_TYPE(INT16U), 0 },                           /* ColorLoopTime */      \
             { ZAP_SIMPLE_DEFAULT(0x2300), 0x00004005, 2, ZAP_TYPE(INT16U), 0 }, /* ColorLoopStartEnhancedHue */                    \
             { ZAP_SIMPLE_DEFAULT(0x0000), 0x00004006, 2, ZAP_TYPE(INT16U), 0 }, /* ColorLoopStoredEnhancedHue */                   \
diff --git a/src/app/clusters/color-control-server/color-control-server.cpp b/src/app/clusters/color-control-server/color-control-server.cpp
index 3e883cf5165e3a..1fe12dd625da42 100644
--- a/src/app/clusters/color-control-server/color-control-server.cpp
+++ b/src/app/clusters/color-control-server/color-control-server.cpp
@@ -35,31 +35,6 @@ using namespace chip::app::Clusters;
 using namespace chip::app::Clusters::ColorControl;
 using chip::Protocols::InteractionModel::Status;
 
-// These constants are NOT currently spec compliant
-// These should be changed once we have real specification enumeration
-// names.
-namespace chip {
-namespace app {
-namespace Clusters {
-namespace ColorControl {
-
-namespace EnhancedColorMode {
-constexpr uint8_t kCurrentHueAndCurrentSaturation = ColorControlServer::EnhancedColorMode::kCurrentHueAndCurrentSaturation;
-constexpr uint8_t kCurrentXAndCurrentY            = ColorControlServer::EnhancedColorMode::kCurrentXAndCurrentY;
-constexpr uint8_t kColorTemperature               = ColorControlServer::EnhancedColorMode::kColorTemperature;
-constexpr uint8_t kEnhancedCurrentHueAndCurrentSaturation =
-    ColorControlServer::EnhancedColorMode::kEnhancedCurrentHueAndCurrentSaturation;
-} // namespace EnhancedColorMode
-
-namespace Options {
-constexpr uint8_t kExecuteIfOff = 1;
-} // namespace Options
-
-} // namespace ColorControl
-} // namespace Clusters
-} // namespace app
-} // namespace chip
-
 #if defined(MATTER_DM_PLUGIN_SCENES_MANAGEMENT) && CHIP_CONFIG_SCENES_USE_DEFAULT_HANDLERS
 class DefaultColorControlSceneHandler : public scenes::DefaultSceneHandlerImpl
 {
@@ -149,12 +124,13 @@ class DefaultColorControlSceneHandler : public scenes::DefaultSceneHandlerImpl
             }
             AddAttributeValuePair(pairs, Attributes::ColorLoopActive::Id, loopActiveValue, attributeCount);
 
-            uint8_t loopDirectionValue;
+            ColorControl::ColorLoopDirectionEnum loopDirectionValue;
             if (Status::Success != Attributes::ColorLoopDirection::Get(endpoint, &loopDirectionValue))
             {
-                loopDirectionValue = 0x00;
+                loopDirectionValue = ColorControl::ColorLoopDirectionEnum::kDecrement;
             }
-            AddAttributeValuePair(pairs, Attributes::ColorLoopDirection::Id, loopDirectionValue, attributeCount);
+            AddAttributeValuePair(pairs, Attributes::ColorLoopDirection::Id, static_cast<uint32_t>(loopDirectionValue),
+                                  attributeCount);
 
             uint16_t loopTimeValue;
             if (Status::Success != Attributes::ColorLoopTime::Get(endpoint, &loopTimeValue))
@@ -174,12 +150,12 @@ class DefaultColorControlSceneHandler : public scenes::DefaultSceneHandlerImpl
             AddAttributeValuePair(pairs, Attributes::ColorTemperatureMireds::Id, temperatureValue, attributeCount);
         }
 
-        uint8_t modeValue;
+        ColorControl::EnhancedColorModeEnum modeValue;
         if (Status::Success != Attributes::EnhancedColorMode::Get(endpoint, &modeValue))
         {
-            modeValue = ColorControl::EnhancedColorMode::kCurrentXAndCurrentY; // Default mode value according to spec
+            modeValue = ColorControl::EnhancedColorModeEnum::kCurrentXAndCurrentY; // Default mode value according to spec
         }
-        AddAttributeValuePair(pairs, Attributes::EnhancedColorMode::Id, modeValue, attributeCount);
+        AddAttributeValuePair(pairs, Attributes::EnhancedColorMode::Id, static_cast<uint32_t>(modeValue), attributeCount);
 
         app::DataModel::List<AttributeValuePair> attributeValueList(pairs, attributeCount);
 
@@ -224,10 +200,10 @@ class DefaultColorControlSceneHandler : public scenes::DefaultSceneHandlerImpl
 #endif
 
         // Initialize action attributes to default values in case they are not in the scene
-        uint8_t targetColorMode    = 0x00;
-        uint8_t loopActiveValue    = 0x00;
-        uint8_t loopDirectionValue = 0x00;
-        uint16_t loopTimeValue     = 0x0019; // Default loop time value according to spec
+        ColorControl::EnhancedColorModeEnum targetColorMode = ColorControl::EnhancedColorModeEnum::kCurrentHueAndCurrentSaturation;
+        uint8_t loopActiveValue                             = 0x00;
+        ColorControl::ColorLoopDirectionEnum loopDirectionValue = ColorControl::ColorLoopDirectionEnum::kDecrement;
+        uint16_t loopTimeValue                                  = 0x0019; // Default loop time value according to spec
 
         while (pair_iterator.Next())
         {
@@ -236,7 +212,7 @@ class DefaultColorControlSceneHandler : public scenes::DefaultSceneHandlerImpl
             switch (decodePair.attributeID)
             {
             case Attributes::CurrentX::Id:
-                if (SupportsColorMode(endpoint, ColorControl::EnhancedColorMode::kCurrentXAndCurrentY))
+                if (SupportsColorMode(endpoint, ColorControl::EnhancedColorModeEnum::kCurrentXAndCurrentY))
                 {
                     if (decodePair.attributeValue)
                         colorXTransitionState->finalValue =
@@ -244,20 +220,20 @@ class DefaultColorControlSceneHandler : public scenes::DefaultSceneHandlerImpl
                 }
                 break;
             case Attributes::CurrentY::Id:
-                if (SupportsColorMode(endpoint, ColorControl::EnhancedColorMode::kCurrentXAndCurrentY))
+                if (SupportsColorMode(endpoint, ColorControl::EnhancedColorModeEnum::kCurrentXAndCurrentY))
                 {
                     colorYTransitionState->finalValue =
                         std::min(static_cast<uint16_t>(decodePair.attributeValue), colorYTransitionState->highLimit);
                 }
                 break;
             case Attributes::EnhancedCurrentHue::Id:
-                if (SupportsColorMode(endpoint, ColorControl::EnhancedColorMode::kEnhancedCurrentHueAndCurrentSaturation))
+                if (SupportsColorMode(endpoint, ColorControl::EnhancedColorModeEnum::kEnhancedCurrentHueAndCurrentSaturation))
                 {
                     colorHueTransitionState->finalEnhancedHue = static_cast<uint16_t>(decodePair.attributeValue);
                 }
                 break;
             case Attributes::CurrentSaturation::Id:
-                if (SupportsColorMode(endpoint, ColorControl::EnhancedColorMode::kCurrentHueAndCurrentSaturation))
+                if (SupportsColorMode(endpoint, ColorControl::EnhancedColorModeEnum::kCurrentHueAndCurrentSaturation))
                 {
                     colorSaturationTransitionState->finalValue =
                         std::min(static_cast<uint16_t>(decodePair.attributeValue), colorSaturationTransitionState->highLimit);
@@ -267,13 +243,13 @@ class DefaultColorControlSceneHandler : public scenes::DefaultSceneHandlerImpl
                 loopActiveValue = static_cast<uint8_t>(decodePair.attributeValue);
                 break;
             case Attributes::ColorLoopDirection::Id:
-                loopDirectionValue = static_cast<uint8_t>(decodePair.attributeValue);
+                loopDirectionValue = static_cast<ColorControl::ColorLoopDirectionEnum>(decodePair.attributeValue);
                 break;
             case Attributes::ColorLoopTime::Id:
                 loopTimeValue = static_cast<uint16_t>(decodePair.attributeValue);
                 break;
             case Attributes::ColorTemperatureMireds::Id:
-                if (SupportsColorMode(endpoint, ColorControl::EnhancedColorMode::kColorTemperature))
+                if (SupportsColorMode(endpoint, ColorControl::EnhancedColorModeEnum::kColorTemperatureMireds))
                 {
                     colorTempTransitionState->finalValue =
                         std::min(static_cast<uint16_t>(decodePair.attributeValue), colorTempTransitionState->highLimit);
@@ -281,9 +257,9 @@ class DefaultColorControlSceneHandler : public scenes::DefaultSceneHandlerImpl
                 break;
             case Attributes::EnhancedColorMode::Id:
                 if (decodePair.attributeValue <=
-                    static_cast<uint8_t>(ColorControl::EnhancedColorMode::kEnhancedCurrentHueAndCurrentSaturation))
+                    static_cast<uint8_t>(ColorControl::EnhancedColorModeEnum::kEnhancedCurrentHueAndCurrentSaturation))
                 {
-                    targetColorMode = static_cast<uint8_t>(decodePair.attributeValue);
+                    targetColorMode = static_cast<ColorControl::EnhancedColorModeEnum>(decodePair.attributeValue);
                 }
                 break;
             default:
@@ -318,25 +294,25 @@ class DefaultColorControlSceneHandler : public scenes::DefaultSceneHandlerImpl
             // Execute movement to value depending on the mode in the saved scene
             switch (targetColorMode)
             {
-            case ColorControl::EnhancedColorMode::kCurrentHueAndCurrentSaturation:
+            case ColorControl::EnhancedColorModeEnum::kCurrentHueAndCurrentSaturation:
 #ifdef MATTER_DM_PLUGIN_COLOR_CONTROL_SERVER_HSV
                 ColorControlServer::Instance().moveToSaturation(static_cast<uint8_t>(colorSaturationTransitionState->finalValue),
                                                                 transitionTime10th, endpoint);
 #endif // MATTER_DM_PLUGIN_COLOR_CONTROL_SERVER_HSV
                 break;
-            case ColorControl::EnhancedColorMode::kCurrentXAndCurrentY:
+            case ColorControl::EnhancedColorModeEnum::kCurrentXAndCurrentY:
 #ifdef MATTER_DM_PLUGIN_COLOR_CONTROL_SERVER_XY
                 ColorControlServer::Instance().moveToColor(colorXTransitionState->finalValue, colorYTransitionState->finalValue,
                                                            transitionTime10th, endpoint);
 #endif // MATTER_DM_PLUGIN_COLOR_CONTROL_SERVER_XY
                 break;
-            case ColorControl::EnhancedColorMode::kColorTemperature:
+            case ColorControl::EnhancedColorModeEnum::kColorTemperatureMireds:
 #ifdef MATTER_DM_PLUGIN_COLOR_CONTROL_SERVER_TEMP
                 ColorControlServer::Instance().moveToColorTemp(
                     endpoint, static_cast<uint16_t>(colorTempTransitionState->finalValue), transitionTime10th);
 #endif // MATTER_DM_PLUGIN_COLOR_CONTROL_SERVER_TEMP
                 break;
-            case ColorControl::EnhancedColorMode::kEnhancedCurrentHueAndCurrentSaturation:
+            case ColorControl::EnhancedColorModeEnum::kEnhancedCurrentHueAndCurrentSaturation:
 #ifdef MATTER_DM_PLUGIN_COLOR_CONTROL_SERVER_HSV
                 ColorControlServer::Instance().moveToHueAndSaturation(
                     colorHueTransitionState->finalEnhancedHue, static_cast<uint8_t>(colorSaturationTransitionState->finalValue),
@@ -351,20 +327,20 @@ class DefaultColorControlSceneHandler : public scenes::DefaultSceneHandlerImpl
     }
 
 private:
-    bool SupportsColorMode(EndpointId endpoint, uint8_t mode)
+    bool SupportsColorMode(EndpointId endpoint, ColorControl::EnhancedColorModeEnum mode)
     {
         switch (mode)
         {
-        case ColorControl::EnhancedColorMode::kCurrentHueAndCurrentSaturation:
+        case ColorControl::EnhancedColorModeEnum::kCurrentHueAndCurrentSaturation:
             return ColorControlServer::Instance().HasFeature(endpoint, ColorControlServer::Feature::kHueAndSaturation);
             break;
-        case ColorControl::EnhancedColorMode::kCurrentXAndCurrentY:
+        case ColorControl::EnhancedColorModeEnum::kCurrentXAndCurrentY:
             return ColorControlServer::Instance().HasFeature(endpoint, ColorControlServer::Feature::kXy);
             break;
-        case ColorControl::EnhancedColorMode::kColorTemperature:
+        case ColorControl::EnhancedColorModeEnum::kColorTemperatureMireds:
             return ColorControlServer::Instance().HasFeature(endpoint, ColorControlServer::Feature::kColorTemperature);
             break;
-        case ColorControl::EnhancedColorMode::kEnhancedCurrentHueAndCurrentSaturation:
+        case ColorControl::EnhancedColorModeEnum::kEnhancedCurrentHueAndCurrentSaturation:
             return ColorControlServer::Instance().HasFeature(endpoint, ColorControlServer::Feature::kEnhancedHue);
             break;
         default:
@@ -432,15 +408,16 @@ ColorControlServer & ColorControlServer::Instance()
     return instance;
 }
 
+#ifdef MATTER_DM_PLUGIN_SCENES_MANAGEMENT
 chip::scenes::SceneHandler * ColorControlServer::GetSceneHandler()
 {
-
-#if defined(MATTER_DM_PLUGIN_SCENES_MANAGEMENT) && CHIP_CONFIG_SCENES_USE_DEFAULT_HANDLERS
+#if CHIP_CONFIG_SCENES_USE_DEFAULT_HANDLERS
     return &sColorControlSceneHandler;
 #else
     return nullptr;
-#endif // defined(MATTER_DM_PLUGIN_SCENES_MANAGEMENT) && CHIP_CONFIG_SCENES_USE_DEFAULT_HANDLERS
+#endif // CHIP_CONFIG_SCENES_USE_DEFAULT_HANDLERS
 }
+#endif // ifdef MATTER_DM_PLUGIN_SCENES_MANAGEMENT
 
 bool ColorControlServer::HasFeature(chip::EndpointId endpoint, Feature feature)
 {
@@ -503,7 +480,7 @@ bool ColorControlServer::shouldExecuteIfOff(EndpointId endpoint, uint8_t optionM
         return true;
     }
 
-    uint8_t options = 0x00;
+    chip::BitMask<chip::app::Clusters::ColorControl::OptionsBitmap> options = 0x00;
     Attributes::Options::Get(endpoint, &options);
 
     bool on = true;
@@ -535,18 +512,18 @@ bool ColorControlServer::shouldExecuteIfOff(EndpointId endpoint, uint8_t optionM
         // 0xFF are the default values passed to the command handler when
         // the payload is not present - in that case there is use of option
         // attribute to decide execution of the command
-        return READBITS(options, ColorControl::Options::kExecuteIfOff);
+        return options.GetField(ColorControl::OptionsBitmap::kExecuteIfOff);
     }
     // ---------- The above is to distinguish if the payload is present or not
 
-    if (READBITS(optionMask, ColorControl::Options::kExecuteIfOff))
+    if (READBITS(optionMask, static_cast<uint8_t>(ColorControl::OptionsBitmap::kExecuteIfOff)))
     {
         // Mask is present and set in the command payload, this indicates
         // use the override as temporary option
-        return READBITS(optionOverride, ColorControl::Options::kExecuteIfOff);
+        return READBITS(optionOverride, static_cast<uint8_t>(ColorControl::OptionsBitmap::kExecuteIfOff));
     }
     // if we are here - use the option attribute bits
-    return (READBITS(options, ColorControl::Options::kExecuteIfOff));
+    return options.GetField(ColorControl::OptionsBitmap::kExecuteIfOff);
 }
 
 /**
@@ -560,28 +537,28 @@ bool ColorControlServer::shouldExecuteIfOff(EndpointId endpoint, uint8_t optionM
  * @param endpoint
  * @param newColorMode
  */
-void ColorControlServer::handleModeSwitch(EndpointId endpoint, uint8_t newColorMode)
+void ColorControlServer::handleModeSwitch(EndpointId endpoint, ColorControl::EnhancedColorModeEnum newColorMode)
 {
-    uint8_t oldColorMode = 0;
+    ColorControl::ColorModeEnum oldColorMode = ColorControl::ColorModeEnum::kCurrentHueAndCurrentSaturation;
     Attributes::ColorMode::Get(endpoint, &oldColorMode);
 
     uint8_t colorModeTransition;
 
-    if (oldColorMode == newColorMode)
+    if (oldColorMode == static_cast<ColorControl::ColorModeEnum>(newColorMode))
     {
         return;
     }
 
     Attributes::EnhancedColorMode::Set(endpoint, newColorMode);
-    if (newColorMode == ColorControl::EnhancedColorMode::kEnhancedCurrentHueAndCurrentSaturation)
+    if (newColorMode == ColorControl::EnhancedColorModeEnum::kEnhancedCurrentHueAndCurrentSaturation)
     {
-        // Transpose COLOR_MODE_EHSV to ColorControl::EnhancedColorMode::kCurrentHueAndCurrentSaturation after setting
-        // EnhancedColorMode
-        newColorMode = ColorControl::EnhancedColorMode::kCurrentHueAndCurrentSaturation;
+        // Transpose COLOR_MODE_EHSV to ColorControl::EnhancedColorModeEnum::kCurrentHueAndCurrentSaturation after setting
+        // EnhancedColorModeEnum
+        newColorMode = ColorControl::EnhancedColorModeEnum::kCurrentHueAndCurrentSaturation;
     }
-    Attributes::ColorMode::Set(endpoint, newColorMode);
+    Attributes::ColorMode::Set(endpoint, static_cast<ColorControl::ColorModeEnum>(newColorMode));
 
-    colorModeTransition = static_cast<uint8_t>((newColorMode << 4) + oldColorMode);
+    colorModeTransition = static_cast<uint8_t>((static_cast<uint8_t>(newColorMode) << 4) + static_cast<uint8_t>(oldColorMode));
 
     // Note:  It may be OK to not do anything here.
     switch (colorModeTransition)
@@ -958,7 +935,7 @@ void ColorControlServer::startColorLoop(EndpointId endpoint, uint8_t startFromSt
     ColorHueTransitionState * colorHueTransitionState = getColorHueTransitionState(endpoint);
     VerifyOrReturn(colorHueTransitionState != nullptr);
 
-    uint8_t direction = 0;
+    ColorControl::ColorLoopDirectionEnum direction = ColorControl::ColorLoopDirectionEnum::kDecrement;
     Attributes::ColorLoopDirection::Get(endpoint, &direction);
 
     uint16_t time = 0x0019;
@@ -981,7 +958,7 @@ void ColorControlServer::startColorLoop(EndpointId endpoint, uint8_t startFromSt
 
     colorHueTransitionState->initialEnhancedHue = startHue;
 
-    if (direction == to_underlying(ColorLoopDirection::kIncrementHue))
+    if (direction == ColorLoopDirectionEnum::kIncrement)
     {
         colorHueTransitionState->finalEnhancedHue = static_cast<uint16_t>(startHue - 1);
     }
@@ -990,7 +967,7 @@ void ColorControlServer::startColorLoop(EndpointId endpoint, uint8_t startFromSt
         colorHueTransitionState->finalEnhancedHue = static_cast<uint16_t>(startHue + 1);
     }
 
-    colorHueTransitionState->up     = (direction == to_underlying(ColorLoopDirection::kIncrementHue));
+    colorHueTransitionState->up     = (direction == ColorLoopDirectionEnum::kIncrement);
     colorHueTransitionState->repeat = true;
 
     colorHueTransitionState->stepsRemaining = static_cast<uint16_t>(time * TRANSITION_STEPS_PER_1S);
@@ -1232,7 +1209,7 @@ Status ColorControlServer::moveToSaturation(uint8_t saturation, uint16_t transit
     stopAllColorTransitions(endpoint);
 
     // Handle color mode transition, if necessary.
-    handleModeSwitch(endpoint, ColorControl::EnhancedColorMode::kCurrentHueAndCurrentSaturation);
+    handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kCurrentHueAndCurrentSaturation);
 
     // now, kick off the state machine.
     initSaturationTransitionState(endpoint, colorSaturationTransitionState);
@@ -1283,11 +1260,11 @@ Status ColorControlServer::moveToHueAndSaturation(uint16_t hue, uint8_t saturati
     // Handle color mode transition, if necessary.
     if (isEnhanced)
     {
-        handleModeSwitch(endpoint, EnhancedColorMode::kEnhancedCurrentHueAndCurrentSaturation);
+        handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kEnhancedCurrentHueAndCurrentSaturation);
     }
     else
     {
-        handleModeSwitch(endpoint, EnhancedColorMode::kCurrentHueAndCurrentSaturation);
+        handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kCurrentHueAndCurrentSaturation);
     }
 
     // now, kick off the state machine.
@@ -1352,7 +1329,7 @@ Status ColorControlServer::moveToHueAndSaturation(uint16_t hue, uint8_t saturati
  * @return false Failed
  */
 bool ColorControlServer::moveHueCommand(app::CommandHandler * commandObj, const app::ConcreteCommandPath & commandPath,
-                                        HueMoveMode moveMode, uint16_t rate, uint8_t optionsMask, uint8_t optionsOverride,
+                                        MoveModeEnum moveMode, uint16_t rate, uint8_t optionsMask, uint8_t optionsOverride,
                                         bool isEnhanced)
 {
     MATTER_TRACE_SCOPE("moveHue", "ColorControl");
@@ -1363,7 +1340,7 @@ bool ColorControlServer::moveHueCommand(app::CommandHandler * commandObj, const
     VerifyOrExit(colorHueTransitionState != nullptr, status = Status::UnsupportedEndpoint);
 
     // check moveMode before any operation is done on the transition states
-    if (moveMode == HueMoveMode::kUnknownEnumValue || (rate == 0 && moveMode != HueMoveMode::kStop))
+    if (moveMode == MoveModeEnum::kUnknownEnumValue || (rate == 0 && moveMode != MoveModeEnum::kStop))
     {
         commandObj->AddStatus(commandPath, Status::InvalidCommand);
         return true;
@@ -1380,7 +1357,7 @@ bool ColorControlServer::moveHueCommand(app::CommandHandler * commandObj, const
     // now, kick off the state machine.
     initHueTransitionState(endpoint, colorHueTransitionState, isEnhanced);
 
-    if (moveMode == HueMoveMode::kStop)
+    if (moveMode == MoveModeEnum::kStop)
     {
         // Per spec any saturation transition must also be cancelled.
         Color16uTransitionState * saturationState = getSaturationTransitionState(endpoint);
@@ -1392,14 +1369,14 @@ bool ColorControlServer::moveHueCommand(app::CommandHandler * commandObj, const
     // Handle color mode transition, if necessary.
     if (isEnhanced)
     {
-        handleModeSwitch(endpoint, ColorControl::EnhancedColorMode::kEnhancedCurrentHueAndCurrentSaturation);
+        handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kEnhancedCurrentHueAndCurrentSaturation);
     }
     else
     {
-        handleModeSwitch(endpoint, ColorControl::EnhancedColorMode::kCurrentHueAndCurrentSaturation);
+        handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kCurrentHueAndCurrentSaturation);
     }
 
-    if (moveMode == HueMoveMode::kUp)
+    if (moveMode == MoveModeEnum::kUp)
     {
         if (isEnhanced)
         {
@@ -1412,7 +1389,7 @@ bool ColorControlServer::moveHueCommand(app::CommandHandler * commandObj, const
 
         colorHueTransitionState->up = true;
     }
-    else if (moveMode == HueMoveMode::kDown)
+    else if (moveMode == MoveModeEnum::kDown)
     {
         if (isEnhanced)
         {
@@ -1448,7 +1425,7 @@ bool ColorControlServer::moveHueCommand(app::CommandHandler * commandObj, const
  *
  * @param[in] endpoint
  * @param[in] hue
- * @param[in] hueMoveMode
+ * @param[in] MoveModeEnum
  * @param[in] transitionTime
  * @param[in] optionsMask
  * @param[in] optionsOverride
@@ -1458,7 +1435,7 @@ bool ColorControlServer::moveHueCommand(app::CommandHandler * commandObj, const
  * @return false Failed
  */
 bool ColorControlServer::moveToHueCommand(app::CommandHandler * commandObj, const app::ConcreteCommandPath & commandPath,
-                                          uint16_t hue, HueDirection moveDirection, uint16_t transitionTime, uint8_t optionsMask,
+                                          uint16_t hue, DirectionEnum moveDirection, uint16_t transitionTime, uint8_t optionsMask,
                                           uint8_t optionsOverride, bool isEnhanced)
 {
     MATTER_TRACE_SCOPE("moveToHue", "ColorControl");
@@ -1466,7 +1443,7 @@ bool ColorControlServer::moveToHueCommand(app::CommandHandler * commandObj, cons
 
     Status status       = Status::Success;
     uint16_t currentHue = 0;
-    HueDirection direction;
+    DirectionEnum direction;
 
     ColorHueTransitionState * colorHueTransitionState = getColorHueTransitionState(endpoint);
 
@@ -1495,33 +1472,33 @@ bool ColorControlServer::moveToHueCommand(app::CommandHandler * commandObj, cons
     // Convert the ShortestDistance/LongestDistance moveDirection values into Up/Down.
     switch (moveDirection)
     {
-    case HueDirection::kShortestDistance:
+    case DirectionEnum::kShortest:
         if ((isEnhanced && (static_cast<uint16_t>(currentHue - hue) > HALF_MAX_UINT16T)) ||
             (!isEnhanced && (static_cast<uint8_t>(currentHue - hue) > HALF_MAX_UINT8T)))
         {
-            direction = HueDirection::kUp;
+            direction = DirectionEnum::kUp;
         }
         else
         {
-            direction = HueDirection::kDown;
+            direction = DirectionEnum::kDown;
         }
         break;
-    case HueDirection::kLongestDistance:
+    case DirectionEnum::kLongest:
         if ((isEnhanced && (static_cast<uint16_t>(currentHue - hue) > HALF_MAX_UINT16T)) ||
             (!isEnhanced && (static_cast<uint8_t>(currentHue - hue) > HALF_MAX_UINT8T)))
         {
-            direction = HueDirection::kDown;
+            direction = DirectionEnum::kDown;
         }
         else
         {
-            direction = HueDirection::kUp;
+            direction = DirectionEnum::kUp;
         }
         break;
-    case HueDirection::kUp:
-    case HueDirection::kDown:
+    case DirectionEnum::kUp:
+    case DirectionEnum::kDown:
         direction = moveDirection;
         break;
-    case HueDirection::kUnknownEnumValue:
+    case DirectionEnum::kUnknownEnumValue:
         commandObj->AddStatus(commandPath, Status::InvalidCommand);
         return true;
         /* No default case, so if a new direction value gets added we will just fail
@@ -1540,11 +1517,11 @@ bool ColorControlServer::moveToHueCommand(app::CommandHandler * commandObj, cons
     // Handle color mode transition, if necessary.
     if (isEnhanced)
     {
-        handleModeSwitch(endpoint, ColorControl::EnhancedColorMode::kEnhancedCurrentHueAndCurrentSaturation);
+        handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kEnhancedCurrentHueAndCurrentSaturation);
     }
     else
     {
-        handleModeSwitch(endpoint, ColorControl::EnhancedColorMode::kCurrentHueAndCurrentSaturation);
+        handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kCurrentHueAndCurrentSaturation);
     }
 
     // now, kick off the state machine.
@@ -1563,7 +1540,7 @@ bool ColorControlServer::moveToHueCommand(app::CommandHandler * commandObj, cons
     colorHueTransitionState->stepsTotal     = colorHueTransitionState->stepsRemaining;
     colorHueTransitionState->timeRemaining  = transitionTime;
     colorHueTransitionState->endpoint       = endpoint;
-    colorHueTransitionState->up             = (direction == HueDirection::kUp);
+    colorHueTransitionState->up             = (direction == DirectionEnum::kUp);
     colorHueTransitionState->repeat         = false;
 
     SetHSVRemainingTime(endpoint);
@@ -1633,7 +1610,7 @@ bool ColorControlServer::moveToHueAndSaturationCommand(app::CommandHandler * com
  * @return false Failed
  */
 bool ColorControlServer::stepHueCommand(app::CommandHandler * commandObj, const app::ConcreteCommandPath & commandPath,
-                                        HueStepMode stepMode, uint16_t stepSize, uint16_t transitionTime, uint8_t optionsMask,
+                                        StepModeEnum stepMode, uint16_t stepSize, uint16_t transitionTime, uint8_t optionsMask,
                                         uint8_t optionsOverride, bool isEnhanced)
 {
     MATTER_TRACE_SCOPE("stepHue", "ColorControl");
@@ -1645,7 +1622,7 @@ bool ColorControlServer::stepHueCommand(app::CommandHandler * commandObj, const
     VerifyOrExit(colorHueTransitionState != nullptr, status = Status::UnsupportedEndpoint);
 
     // Confirm validity of the step mode received
-    if (stepMode == HueStepMode::kUnknownEnumValue)
+    if (stepMode == StepModeEnum::kUnknownEnumValue)
     {
         commandObj->AddStatus(commandPath, Status::InvalidCommand);
         return true;
@@ -1663,11 +1640,11 @@ bool ColorControlServer::stepHueCommand(app::CommandHandler * commandObj, const
     // Handle color mode transition, if necessary.
     if (isEnhanced)
     {
-        handleModeSwitch(endpoint, ColorControl::EnhancedColorMode::kEnhancedCurrentHueAndCurrentSaturation);
+        handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kEnhancedCurrentHueAndCurrentSaturation);
     }
     else
     {
-        handleModeSwitch(endpoint, ColorControl::EnhancedColorMode::kCurrentHueAndCurrentSaturation);
+        handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kCurrentHueAndCurrentSaturation);
     }
 
     // now, kick off the state machine.
@@ -1676,12 +1653,12 @@ bool ColorControlServer::stepHueCommand(app::CommandHandler * commandObj, const
     if (isEnhanced)
     {
 
-        if (stepMode == HueStepMode::kUp)
+        if (stepMode == StepModeEnum::kUp)
         {
             colorHueTransitionState->finalEnhancedHue = addEnhancedHue(colorHueTransitionState->currentEnhancedHue, stepSize);
             colorHueTransitionState->up               = true;
         }
-        else if (stepMode == HueStepMode::kDown)
+        else if (stepMode == StepModeEnum::kDown)
         {
             colorHueTransitionState->finalEnhancedHue = subtractEnhancedHue(colorHueTransitionState->currentEnhancedHue, stepSize);
             colorHueTransitionState->up               = false;
@@ -1689,12 +1666,12 @@ bool ColorControlServer::stepHueCommand(app::CommandHandler * commandObj, const
     }
     else
     {
-        if (stepMode == HueStepMode::kUp)
+        if (stepMode == StepModeEnum::kUp)
         {
             colorHueTransitionState->finalHue = addHue(colorHueTransitionState->currentHue, static_cast<uint8_t>(stepSize));
             colorHueTransitionState->up       = true;
         }
-        else if (stepMode == HueStepMode::kDown)
+        else if (stepMode == StepModeEnum::kDown)
         {
             colorHueTransitionState->finalHue = subtractHue(colorHueTransitionState->currentHue, static_cast<uint8_t>(stepSize));
             colorHueTransitionState->up       = false;
@@ -1732,7 +1709,7 @@ bool ColorControlServer::moveSaturationCommand(app::CommandHandler * commandObj,
     VerifyOrExit(colorSaturationTransitionState != nullptr, status = Status::UnsupportedEndpoint);
 
     // check moveMode before any operation is done on the transition states
-    if (moveMode == SaturationMoveMode::kUnknownEnumValue || (rate == 0 && moveMode != SaturationMoveMode::kStop))
+    if (moveMode == MoveModeEnum::kUnknownEnumValue || (rate == 0 && moveMode != MoveModeEnum::kStop))
     {
         commandObj->AddStatus(commandPath, Status::InvalidCommand);
         return true;
@@ -1752,7 +1729,7 @@ bool ColorControlServer::moveSaturationCommand(app::CommandHandler * commandObj,
     // now, kick off the state machine.
     initSaturationTransitionState(endpoint, colorSaturationTransitionState);
 
-    if (moveMode == SaturationMoveMode::kStop)
+    if (moveMode == MoveModeEnum::kStop)
     {
         // Per spec any hue transition must also be cancelled.
         ColorHueTransitionState * hueState = getColorHueTransitionState(endpoint);
@@ -1762,13 +1739,13 @@ bool ColorControlServer::moveSaturationCommand(app::CommandHandler * commandObj,
     }
 
     // Handle color mode transition, if necessary.
-    handleModeSwitch(endpoint, ColorControl::EnhancedColorMode::kCurrentHueAndCurrentSaturation);
+    handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kCurrentHueAndCurrentSaturation);
 
-    if (moveMode == SaturationMoveMode::kUp)
+    if (moveMode == MoveModeEnum::kUp)
     {
         colorSaturationTransitionState->finalValue = MAX_SATURATION_VALUE;
     }
-    else if (moveMode == SaturationMoveMode::kDown)
+    else if (moveMode == MoveModeEnum::kDown)
     {
         colorSaturationTransitionState->finalValue = MIN_SATURATION_VALUE;
     }
@@ -1843,7 +1820,7 @@ bool ColorControlServer::stepSaturationCommand(app::CommandHandler * commandObj,
     VerifyOrExit(colorSaturationTransitionState != nullptr, status = Status::UnsupportedEndpoint);
 
     // Confirm validity of the step mode received
-    if (stepMode == SaturationStepMode::kUnknownEnumValue)
+    if (stepMode == StepModeEnum::kUnknownEnumValue)
     {
         commandObj->AddStatus(commandPath, Status::InvalidCommand);
         return true;
@@ -1859,17 +1836,17 @@ bool ColorControlServer::stepSaturationCommand(app::CommandHandler * commandObj,
     stopAllColorTransitions(endpoint);
 
     // Handle color mode transition, if necessary.
-    handleModeSwitch(endpoint, ColorControl::EnhancedColorMode::kCurrentHueAndCurrentSaturation);
+    handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kCurrentHueAndCurrentSaturation);
 
     // now, kick off the state machine.
     initSaturationTransitionState(endpoint, colorSaturationTransitionState);
     currentSaturation = static_cast<uint8_t>(colorSaturationTransitionState->currentValue);
 
-    if (stepMode == SaturationStepMode::kUp)
+    if (stepMode == StepModeEnum::kUp)
     {
         colorSaturationTransitionState->finalValue = addSaturation(currentSaturation, stepSize);
     }
-    else if (stepMode == SaturationStepMode::kDown)
+    else if (stepMode == StepModeEnum::kDown)
     {
         colorSaturationTransitionState->finalValue = subtractSaturation(currentSaturation, stepSize);
     }
@@ -1910,7 +1887,7 @@ bool ColorControlServer::colorLoopCommand(app::CommandHandler * commandObj, cons
     VerifyOrExit(colorHueTransitionState != nullptr, status = Status::UnsupportedEndpoint);
 
     // Validate the action and direction parameters of the command
-    if (action == ColorLoopAction::kUnknownEnumValue || direction == ColorLoopDirection::kUnknownEnumValue)
+    if (action == ColorLoopActionEnum::kUnknownEnumValue || direction == ColorLoopDirectionEnum::kUnknownEnumValue)
     {
         commandObj->AddStatus(commandPath, Status::InvalidCommand);
         return true;
@@ -1924,19 +1901,19 @@ bool ColorControlServer::colorLoopCommand(app::CommandHandler * commandObj, cons
 
     Attributes::ColorLoopActive::Get(endpoint, &isColorLoopActive);
 
-    deactiveColorLoop = updateFlags.Has(ColorLoopUpdateFlags::kUpdateAction) && (action == ColorLoopAction::kDeactivate);
+    deactiveColorLoop = updateFlags.Has(UpdateFlagsBitmap::kUpdateAction) && (action == ColorLoopActionEnum::kDeactivate);
 
-    if (updateFlags.Has(ColorLoopUpdateFlags::kUpdateDirection))
+    if (updateFlags.Has(UpdateFlagsBitmap::kUpdateDirection))
     {
-        Attributes::ColorLoopDirection::Set(endpoint, to_underlying(direction));
+        Attributes::ColorLoopDirection::Set(endpoint, direction);
 
         // Checks if color loop is active and stays active
         if (isColorLoopActive && !deactiveColorLoop)
         {
-            colorHueTransitionState->up                 = (direction == ColorLoopDirection::kIncrementHue);
+            colorHueTransitionState->up                 = (direction == ColorLoopDirectionEnum::kIncrement);
             colorHueTransitionState->initialEnhancedHue = colorHueTransitionState->currentEnhancedHue;
 
-            if (direction == ColorLoopDirection::kIncrementHue)
+            if (direction == ColorLoopDirectionEnum::kIncrement)
             {
                 colorHueTransitionState->finalEnhancedHue = static_cast<uint16_t>(colorHueTransitionState->initialEnhancedHue - 1);
             }
@@ -1948,7 +1925,7 @@ bool ColorControlServer::colorLoopCommand(app::CommandHandler * commandObj, cons
         }
     }
 
-    if (updateFlags.Has(ColorLoopUpdateFlags::kUpdateTime))
+    if (updateFlags.Has(UpdateFlagsBitmap::kUpdateTime))
     {
         Attributes::ColorLoopTime::Set(endpoint, time);
 
@@ -1970,14 +1947,14 @@ bool ColorControlServer::colorLoopCommand(app::CommandHandler * commandObj, cons
         }
     }
 
-    if (updateFlags.Has(ColorLoopUpdateFlags::kUpdateStartHue))
+    if (updateFlags.Has(UpdateFlagsBitmap::kUpdateStartHue))
     {
         Attributes::ColorLoopStartEnhancedHue::Set(endpoint, startHue);
     }
 
-    if (updateFlags.Has(ColorLoopUpdateFlags::kUpdateAction))
+    if (updateFlags.Has(UpdateFlagsBitmap::kUpdateAction))
     {
-        if (action == ColorLoopAction::kDeactivate)
+        if (action == ColorLoopActionEnum::kDeactivate)
         {
             if (isColorLoopActive)
             {
@@ -1994,11 +1971,11 @@ bool ColorControlServer::colorLoopCommand(app::CommandHandler * commandObj, cons
                 // Do Nothing since it's not on
             }
         }
-        else if (action == ColorLoopAction::kActivateFromColorLoopStartEnhancedHue)
+        else if (action == ColorLoopActionEnum::kActivateFromColorLoopStartEnhancedHue)
         {
             startColorLoop(endpoint, true);
         }
-        else if (action == ColorLoopAction::kActivateFromEnhancedCurrentHue)
+        else if (action == ColorLoopActionEnum::kActivateFromEnhancedCurrentHue)
         {
             startColorLoop(endpoint, false);
         }
@@ -2174,7 +2151,7 @@ Status ColorControlServer::moveToColor(uint16_t colorX, uint16_t colorY, uint16_
     stopAllColorTransitions(endpoint);
 
     // Handle color mode transition, if necessary.
-    handleModeSwitch(endpoint, EnhancedColorMode::kCurrentXAndCurrentY);
+    handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kCurrentXAndCurrentY);
 
     // now, kick off the state machine.
     Attributes::CurrentX::Get(endpoint, &(colorXTransitionState->initialValue));
@@ -2257,7 +2234,7 @@ bool ColorControlServer::moveColorCommand(app::CommandHandler * commandObj, cons
     }
 
     // Handle color mode transition, if necessary.
-    handleModeSwitch(endpoint, ColorControl::EnhancedColorMode::kCurrentXAndCurrentY);
+    handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kCurrentXAndCurrentY);
 
     // now, kick off the state machine.
     Attributes::CurrentX::Get(endpoint, &(colorXTransitionState->initialValue));
@@ -2355,7 +2332,7 @@ bool ColorControlServer::stepColorCommand(app::CommandHandler * commandObj, cons
     stopAllColorTransitions(endpoint);
 
     // Handle color mode transition, if necessary.
-    handleModeSwitch(endpoint, ColorControl::EnhancedColorMode::kCurrentXAndCurrentY);
+    handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kCurrentXAndCurrentY);
 
     // now, kick off the state machine.
     colorXTransitionState->initialValue   = currentColorX;
@@ -2471,7 +2448,7 @@ Status ColorControlServer::moveToColorTemp(EndpointId aEndpoint, uint16_t colorT
     stopAllColorTransitions(endpoint);
 
     // Handle color mode transition, if necessary.
-    handleModeSwitch(endpoint, ColorControl::EnhancedColorMode::kColorTemperature);
+    handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kColorTemperatureMireds);
 
     if (colorTemperature < temperatureMin)
     {
@@ -2579,11 +2556,10 @@ void ColorControlServer::startUpColorTempCommand(EndpointId endpoint)
                 if (status == Status::Success)
                 {
                     // Set ColorMode attributes to reflect ColorTemperature.
-                    uint8_t updateColorMode = ColorControl::EnhancedColorMode::kColorTemperature;
+                    ColorControl::ColorModeEnum updateColorMode = ColorControl::ColorModeEnum::kColorTemperatureMireds;
                     Attributes::ColorMode::Set(endpoint, updateColorMode);
 
-                    updateColorMode = ColorControl::EnhancedColorMode::kColorTemperature;
-                    Attributes::EnhancedColorMode::Set(endpoint, updateColorMode);
+                    Attributes::EnhancedColorMode::Set(endpoint, static_cast<ColorControl::EnhancedColorModeEnum>(updateColorMode));
                 }
             }
         }
@@ -2669,7 +2645,7 @@ bool ColorControlServer::moveColorTempCommand(app::CommandHandler * commandObj,
     VerifyOrExit(colorTempTransitionState != nullptr, status = Status::UnsupportedEndpoint);
 
     // check moveMode before any operation is done on the transition states
-    if (moveMode == HueMoveMode::kUnknownEnumValue || (rate == 0 && moveMode != HueMoveMode::kStop))
+    if (moveMode == MoveModeEnum::kUnknownEnumValue || (rate == 0 && moveMode != MoveModeEnum::kStop))
     {
         commandObj->AddStatus(commandPath, Status::InvalidCommand);
         return true;
@@ -2687,7 +2663,7 @@ bool ColorControlServer::moveColorTempCommand(app::CommandHandler * commandObj,
     // New command.  Need to stop any active transitions.
     stopAllColorTransitions(endpoint);
 
-    if (moveMode == HueMoveMode::kStop)
+    if (moveMode == MoveModeEnum::kStop)
     {
         commandObj->AddStatus(commandPath, Status::Success);
         return true;
@@ -2703,14 +2679,14 @@ bool ColorControlServer::moveColorTempCommand(app::CommandHandler * commandObj,
     }
 
     // Handle color mode transition, if necessary.
-    handleModeSwitch(endpoint, ColorControl::EnhancedColorMode::kColorTemperature);
+    handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kColorTemperatureMireds);
 
     // now, kick off the state machine.
     colorTempTransitionState->initialValue = 0;
     Attributes::ColorTemperatureMireds::Get(endpoint, &colorTempTransitionState->initialValue);
     colorTempTransitionState->currentValue = colorTempTransitionState->initialValue;
 
-    if (moveMode == HueMoveMode::kUp)
+    if (moveMode == MoveModeEnum::kUp)
     {
         if (tempPhysicalMax > colorTemperatureMaximum)
         {
@@ -2786,7 +2762,7 @@ bool ColorControlServer::stepColorTempCommand(app::CommandHandler * commandObj,
     VerifyOrExit(colorTempTransitionState != nullptr, status = Status::UnsupportedEndpoint);
 
     // Confirm validity of the step mode received
-    if (stepMode == HueStepMode::kUnknownEnumValue)
+    if (stepMode == StepModeEnum::kUnknownEnumValue)
     {
         commandObj->AddStatus(commandPath, Status::InvalidCommand);
         return true;
@@ -2814,14 +2790,14 @@ bool ColorControlServer::stepColorTempCommand(app::CommandHandler * commandObj,
     }
 
     // Handle color mode transition, if necessary.
-    handleModeSwitch(endpoint, ColorControl::EnhancedColorMode::kColorTemperature);
+    handleModeSwitch(endpoint, ColorControl::EnhancedColorModeEnum::kColorTemperatureMireds);
 
     // now, kick off the state machine.
     colorTempTransitionState->initialValue = 0;
     Attributes::ColorTemperatureMireds::Get(endpoint, &colorTempTransitionState->initialValue);
     colorTempTransitionState->currentValue = colorTempTransitionState->initialValue;
 
-    if (stepMode == HueStepMode::kUp)
+    if (stepMode == StepModeEnum::kUp)
     {
         uint32_t finalValue32u = static_cast<uint32_t>(colorTempTransitionState->initialValue) + static_cast<uint32_t>(stepSize);
         if (finalValue32u > UINT16_MAX)
@@ -2833,7 +2809,7 @@ bool ColorControlServer::stepColorTempCommand(app::CommandHandler * commandObj,
             colorTempTransitionState->finalValue = static_cast<uint16_t>(finalValue32u);
         }
     }
-    else if (stepMode == HueStepMode::kDown)
+    else if (stepMode == StepModeEnum::kDown)
     {
         uint32_t finalValue32u = static_cast<uint32_t>(colorTempTransitionState->initialValue) - static_cast<uint32_t>(stepSize);
         if (finalValue32u > UINT16_MAX)
@@ -2900,10 +2876,10 @@ void ColorControlServer::levelControlColorTempChangeCommand(EndpointId endpoint)
         return;
     }
 
-    uint8_t colorMode = 0;
+    ColorControl::ColorModeEnum colorMode = ColorControl::ColorModeEnum::kCurrentHueAndCurrentSaturation;
     Attributes::ColorMode::Get(endpoint, &colorMode);
 
-    if (colorMode == ColorControl::EnhancedColorMode::kColorTemperature)
+    if (static_cast<ColorControl::EnhancedColorModeEnum>(colorMode) == ColorControl::EnhancedColorModeEnum::kColorTemperatureMireds)
     {
         app::DataModel::Nullable<uint8_t> currentLevel;
         Status status = LevelControl::Attributes::CurrentLevel::Get(endpoint, currentLevel);
diff --git a/src/app/clusters/color-control-server/color-control-server.h b/src/app/clusters/color-control-server/color-control-server.h
index 5c13c5619c82cf..b931e638fa9972 100644
--- a/src/app/clusters/color-control-server/color-control-server.h
+++ b/src/app/clusters/color-control-server/color-control-server.h
@@ -66,18 +66,10 @@ class ColorControlServer
     /**********************************************************
      * Enums
      *********************************************************/
-    using HueStepMode  = chip::app::Clusters::ColorControl::HueStepMode;
-    using HueMoveMode  = chip::app::Clusters::ColorControl::HueMoveMode;
-    using HueDirection = chip::app::Clusters::ColorControl::HueDirection;
-    using Feature      = chip::app::Clusters::ColorControl::Feature;
-
-    enum EnhancedColorMode : uint8_t
-    {
-        kCurrentHueAndCurrentSaturation         = 0,
-        kCurrentXAndCurrentY                    = 1,
-        kColorTemperature                       = 2,
-        kEnhancedCurrentHueAndCurrentSaturation = 3,
-    };
+    using StepModeEnum  = chip::app::Clusters::ColorControl::StepModeEnum;
+    using MoveModeEnum  = chip::app::Clusters::ColorControl::MoveModeEnum;
+    using DirectionEnum = chip::app::Clusters::ColorControl::DirectionEnum;
+    using Feature       = chip::app::Clusters::ColorControl::Feature;
 
     enum Conversion
     {
@@ -143,15 +135,15 @@ class ColorControlServer
 
 #ifdef MATTER_DM_PLUGIN_COLOR_CONTROL_SERVER_HSV
     bool moveHueCommand(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-                        HueMoveMode moveMode, uint16_t rate, uint8_t optionsMask, uint8_t optionsOverride, bool isEnhanced);
+                        MoveModeEnum moveMode, uint16_t rate, uint8_t optionsMask, uint8_t optionsOverride, bool isEnhanced);
     bool moveToHueCommand(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath, uint16_t hue,
-                          HueDirection moveDirection, uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride,
+                          DirectionEnum moveDirection, uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride,
                           bool isEnhanced);
     bool moveToHueAndSaturationCommand(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
                                        uint16_t hue, uint8_t saturation, uint16_t transitionTime, uint8_t optionsMask,
                                        uint8_t optionsOverride, bool isEnhanced);
     bool stepHueCommand(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
-                        HueStepMode stepMode, uint16_t stepSize, uint16_t transitionTime, uint8_t optionsMask,
+                        StepModeEnum stepMode, uint16_t stepSize, uint16_t transitionTime, uint8_t optionsMask,
                         uint8_t optionsOverride, bool isEnhanced);
     bool moveSaturationCommand(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
                                const chip::app::Clusters::ColorControl::Commands::MoveSaturation::DecodableType & commandData);
@@ -196,7 +188,7 @@ class ColorControlServer
 
     ColorControlServer() {}
     bool shouldExecuteIfOff(chip::EndpointId endpoint, uint8_t optionMask, uint8_t optionOverride);
-    void handleModeSwitch(chip::EndpointId endpoint, uint8_t newColorMode);
+    void handleModeSwitch(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::EnhancedColorModeEnum newColorMode);
     uint16_t computeTransitionTimeFromStateAndRate(Color16uTransitionState * p, uint16_t rate);
     EmberEventControl * getEventControl(chip::EndpointId endpoint);
     void computePwmFromHsv(chip::EndpointId endpoint);
diff --git a/src/app/zap-templates/zcl/data-model/chip/color-control-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/color-control-cluster.xml
index 0dcb76abac44ea..d222bafd52b9b6 100644
--- a/src/app/zap-templates/zcl/data-model/chip/color-control-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/color-control-cluster.xml
@@ -15,66 +15,46 @@ See the License for the specific language governing permissions and
 limitations under the License.
 -->
 <configurator>
-  <bitmap name="Feature" type="bitmap32">
-    <cluster code="0x0300" />
-    <field name="HueAndSaturation" mask="0x01" />
-    <field name="EnhancedHue" mask="0x02" />
-    <field name="ColorLoop" mask="0x04" />
-    <field name="XY" mask="0x08" />
-    <field name="ColorTemperature" mask="0x10" />
-  </bitmap>
 
-  <enum name="HueDirection" type="enum8">
-    <cluster code="0x0300"/>
-    <item name="ShortestDistance" value="0x0"/>
-    <item name="LongestDistance" value="0x1"/>
-    <item name="Up" value="0x2"/>
-    <item name="Down" value="0x3"/>
-  </enum>
 
-  <enum name="HueMoveMode" type="enum8">
+  <enum name="DirectionEnum" type="enum8">
     <cluster code="0x0300"/>
-    <item name="Stop" value="0x0"/>
-    <item name="Up" value="0x1"/>
-    <item name="Down" value="0x3"/>
-  </enum>
-
-  <enum name="HueStepMode" type="enum8">
-    <cluster code="0x0300"/>
-    <item name="Up" value="0x1"/>
+    <item name="Shortest" value="0x0"/>
+    <item name="Longest" value="0x1"/>
+    <item name="Up" value="0x2"/>
     <item name="Down" value="0x3"/>
   </enum>
 
-  <enum name="SaturationMoveMode" type="enum8">
+  <enum name="MoveModeEnum" type="enum8">
     <cluster code="0x0300"/>
     <item name="Stop" value="0x0"/>
     <item name="Up" value="0x1"/>
     <item name="Down" value="0x3"/>
   </enum>
 
-  <enum name="SaturationStepMode" type="enum8">
+  <enum name="StepModeEnum" type="enum8">
     <cluster code="0x0300"/>
     <item name="Up" value="0x1"/>
     <item name="Down" value="0x3"/>
   </enum>
 
-  <enum name="ColorMode" type="enum8">
+  <enum name="ColorModeEnum" type="enum8">
     <cluster code="0x0300"/>
     <item name="CurrentHueAndCurrentSaturation" value="0x00"/>
     <item name="CurrentXAndCurrentY" value="0x01"/>
-    <item name="ColorTemperature" value="0x02"/>
+    <item name="ColorTemperatureMireds" value="0x02"/>
   </enum>
 
-  <bitmap name="ColorCapabilities" type="bitmap16">
+  <bitmap name="ColorCapabilitiesBitmap" type="bitmap16">
     <cluster code="0x0300"/>
-    <field name="HueSaturationSupported" mask="0x0001"/>
-    <field name="EnhancedHueSupported" mask="0x0002"/>
-    <field name="ColorLoopSupported" mask="0x0004"/>
-    <field name="XYAttributesSupported" mask="0x0008"/>
-    <field name="ColorTemperatureSupported" mask="0x0010"/>
+    <field name="HueSaturation" mask="0x0001"/>
+    <field name="EnhancedHue" mask="0x0002"/>
+    <field name="ColorLoop" mask="0x0004"/>
+    <field name="XY" mask="0x0008"/>
+    <field name="ColorTemperature" mask="0x0010"/>
   </bitmap>
 
-  <bitmap name="ColorLoopUpdateFlags" type="bitmap8">
+  <bitmap name="UpdateFlagsBitmap" type="bitmap8">
     <cluster code="0x0300"/>
     <field name="UpdateAction" mask="0x01"/>
     <field name="UpdateDirection" mask="0x02"/>
@@ -82,17 +62,39 @@ limitations under the License.
     <field name="UpdateStartHue" mask="0x08"/>
   </bitmap>
 
-  <enum name="ColorLoopAction" type="enum8">
+  <enum name="ColorLoopActionEnum" type="enum8">
     <cluster code="0x0300"/>
     <item name="Deactivate" value="0x00"/>
     <item name="ActivateFromColorLoopStartEnhancedHue" value="0x01"/>
     <item name="ActivateFromEnhancedCurrentHue" value="0x02"/>
   </enum>
 
-  <enum name="ColorLoopDirection" type="enum8">
+  <bitmap name="OptionsBitmap" type="bitmap8">
     <cluster code="0x0300"/>
-    <item name="DecrementHue" value="0x00"/>
-    <item name="IncrementHue" value="0x01"/>
+    <field name="ExecuteIfOff" mask="0x1"/>
+  </bitmap>
+
+  <enum name="EnhancedColorModeEnum" type="enum8">
+    <cluster code="0x0300"/>
+    <item name="CurrentHueAndCurrentSaturation" value="0x00"/>
+    <item name="CurrentXAndCurrentY" value="0x01"/>
+    <item name="ColorTemperatureMireds" value="0x02"/>
+    <item name="EnhancedCurrentHueAndCurrentSaturation" value="0x03"/>
+  </enum>
+
+  <enum name="DriftCompensationEnum" type="enum8">
+    <cluster code="0x0300"/>
+    <item name="None" value="0x00"/>
+    <item name="OtherOrUnknown" value="0x01"/>
+    <item name="Temperaturemonitoring" value="0x02"/>
+    <item name="OpticalLuminanceMonitoringAndFeedback" value="0x03"/>
+    <item name="OpticalColorMonitoringAndFeedback" value="0x04"/>
+  </enum>
+
+  <enum name="ColorLoopDirectionEnum" type="enum8">
+    <cluster code="0x0300"/>
+    <item name="Decrement" value="0x00"/>
+    <item name="Increment" value="0x01"/>
   </enum>
 
   <cluster>
@@ -107,6 +109,24 @@ limitations under the License.
 
     <globalAttribute side="either" code="0xFFFD" value="6"/>
 
+    <features>
+      <feature bit="0" code="HS" name="Hue And Saturation" summary="Supports color specification via hue/saturation.">
+        <optionalConform/>
+      </feature>
+      <feature bit="1" code="EHUE" name="Enhanced Hue" summary="Enhanced hue is supported.">
+        <optionalConform/>
+      </feature>
+      <feature bit="2" code="CL" name="Color loop" summary="Color loop is supported.">
+        <optionalConform/>
+      </feature>
+      <feature bit="3" code="XY" name="XY" summary="Supports color specification via XY.">
+        <optionalConform/>
+      </feature>
+      <feature bit="4" code="CT" name="Color temperature" summary="Supports specification of color temperature.">
+        <optionalConform/>
+      </feature>
+    </features>
+
     <attribute side="server" code="0x0000" define="COLOR_CONTROL_CURRENT_HUE" type="int8u" min="0x00" max="0xFE" writable="false" reportable="true" default="0x00" optional="true">CurrentHue</attribute>
     <!-- CURRENT_HUE -->
     <attribute side="server" code="0x0001" define="COLOR_CONTROL_CURRENT_SATURATION" type="int8u" min="0x00" max="0xFE" writable="false" reportable="true" default="0x00" optional="true">CurrentSaturation</attribute>
@@ -117,15 +137,15 @@ limitations under the License.
     <!-- CURRENT_X -->
     <attribute side="server" code="0x0004" define="COLOR_CONTROL_CURRENT_Y" type="int16u" min="0x0000" max="0xFEFF" writable="false" reportable="true" default="0x607D" optional="true">CurrentY</attribute>
     <!-- CURRENT_Y -->
-    <attribute side="server" code="0x0005" define="COLOR_CONTROL_DRIFT_COMPENSATION" type="enum8" min="0x00" max="0x04" writable="false" optional="true">DriftCompensation</attribute>
+    <attribute side="server" code="0x0005" define="COLOR_CONTROL_DRIFT_COMPENSATION" type="DriftCompensationEnum" min="0x00" max="0x04" writable="false" optional="true">DriftCompensation</attribute>
     <!-- DRIFT_COMPENSATION -->
     <attribute side="server" code="0x0006" define="COLOR_CONTROL_COMPENSATION_TEXT" type="char_string" length="254" writable="false" optional="true">CompensationText</attribute>
     <!-- COMPENSATION_TEXT -->
     <attribute side="server" code="0x0007" define="COLOR_CONTROL_COLOR_TEMPERATURE" type="int16u" min="0x0000" max="0xFEFF" writable="false" reportable="true" default="0x00FA" optional="true">ColorTemperatureMireds</attribute>
     <!-- COLOR_TEMPERATURE -->
-    <attribute side="server" code="0x0008" define="COLOR_CONTROL_COLOR_MODE" type="enum8" min="0x00" max="0x02" writable="false" default="0x01">ColorMode</attribute>
+    <attribute side="server" code="0x0008" define="COLOR_CONTROL_COLOR_MODE" type="ColorModeEnum" min="0x00" max="0x02" writable="false" default="0x01">ColorMode</attribute>
     <!-- COLOR_MODE -->
-    <attribute side="server" code="0x000F" define="COLOR_CONTROL_OPTIONS" type="bitmap8" writable="true" default="0x00">Options</attribute>
+    <attribute side="server" code="0x000F" define="COLOR_CONTROL_OPTIONS" type="OptionsBitmap" writable="true" default="0x00">Options</attribute>
     <!-- COLOR_CONTROL_OPTIONS -->
     <attribute side="server" code="0x0010" define="COLOR_CONTROL_NUMBER_OF_PRIMARIES" type="int8u" min="0x00" max="0x06" isNullable="true" writable="false">NumberOfPrimaries</attribute>
     <!-- NUMBER_OF_PRIMARIES -->
@@ -243,7 +263,7 @@ limitations under the License.
         Move to specified hue.
       </description>
       <arg name="Hue" type="int8u"/>
-      <arg name="Direction" type="HueDirection"/>
+      <arg name="Direction" type="DirectionEnum"/>
       <arg name="TransitionTime" type="int16u"/>
       <arg name="OptionsMask" type="bitmap8"/>
       <arg name="OptionsOverride" type="bitmap8"/>
@@ -253,7 +273,7 @@ limitations under the License.
       <description>
         Move hue up or down at specified rate.
       </description>
-      <arg name="MoveMode" type="HueMoveMode"/>
+      <arg name="MoveMode" type="MoveModeEnum"/>
       <arg name="Rate" type="int8u"/>
       <arg name="OptionsMask" type="bitmap8"/>
       <arg name="OptionsOverride" type="bitmap8"/>
@@ -263,7 +283,7 @@ limitations under the License.
       <description>
         Step hue up or down by specified size at specified rate.
       </description>
-      <arg name="StepMode" type="HueStepMode"/>
+      <arg name="StepMode" type="StepModeEnum"/>
       <arg name="StepSize" type="int8u"/>
       <arg name="TransitionTime" type="int8u"/>
       <arg name="OptionsMask" type="bitmap8"/>
@@ -284,7 +304,7 @@ limitations under the License.
       <description>
         Move saturation up or down at specified rate.
       </description>
-      <arg name="MoveMode" type="SaturationMoveMode"/>
+      <arg name="MoveMode" type="MoveModeEnum"/>
       <arg name="Rate" type="int8u"/>
       <arg name="OptionsMask" type="bitmap8"/>
       <arg name="OptionsOverride" type="bitmap8"/>
@@ -294,7 +314,7 @@ limitations under the License.
       <description>
         Step saturation up or down by specified size at specified rate.
       </description>
-      <arg name="StepMode" type="SaturationStepMode"/>
+      <arg name="StepMode" type="StepModeEnum"/>
       <arg name="StepSize" type="int8u"/>
       <arg name="TransitionTime" type="int8u"/>
       <arg name="OptionsMask" type="bitmap8"/>
@@ -357,13 +377,13 @@ limitations under the License.
 
   <clusterExtension code="0x0300">
     <attribute side="server" code="0x4000" define="COLOR_CONTROL_ENHANCED_CURRENT_HUE" type="int16u" min="0x0000" max="0xFFFF" writable="false" default="0x0000" optional="true">EnhancedCurrentHue</attribute>
-    <attribute side="server" code="0x4001" define="COLOR_CONTROL_ENHANCED_COLOR_MODE" type="enum8" min="0x00" max="0xFF" writable="false" default="0x01">EnhancedColorMode</attribute>
+    <attribute side="server" code="0x4001" define="COLOR_CONTROL_ENHANCED_COLOR_MODE" type="EnhancedColorModeEnum" min="0x00" max="0xFF" writable="false" default="0x01">EnhancedColorMode</attribute>
     <attribute side="server" code="0x4002" define="COLOR_CONTROL_COLOR_LOOP_ACTIVE" type="int8u" min="0x00" max="0xFF" writable="false" default="0x00" optional="true">ColorLoopActive</attribute>
-    <attribute side="server" code="0x4003" define="COLOR_CONTROL_COLOR_LOOP_DIRECTION" type="int8u" min="0x00" max="0xFF" writable="false" default="0x00" optional="true">ColorLoopDirection</attribute>
+    <attribute side="server" code="0x4003" define="COLOR_CONTROL_COLOR_LOOP_DIRECTION" type="ColorLoopDirectionEnum" min="0x00" max="0xFF" writable="false" default="0x00" optional="true">ColorLoopDirection</attribute>
     <attribute side="server" code="0x4004" define="COLOR_CONTROL_COLOR_LOOP_TIME" type="int16u" min="0x0000" max="0xFFFF" writable="false" default="0x0019" optional="true">ColorLoopTime</attribute>
     <attribute side="server" code="0x4005" define="COLOR_CONTROL_COLOR_LOOP_START_ENHANCED_HUE" type="int16u" min="0x0000" max="0xFFFF" writable="false" default="0x2300" optional="true">ColorLoopStartEnhancedHue</attribute>
     <attribute side="server" code="0x4006" define="COLOR_CONTROL_COLOR_LOOP_STORED_ENHANCED_HUE" type="int16u" min="0x0000" max="0xFFFF" writable="false" default="0x0000" optional="true">ColorLoopStoredEnhancedHue</attribute>
-    <attribute side="server" code="0x400A" define="COLOR_CONTROL_COLOR_CAPABILITIES" type="bitmap16" min="0x0000" max="0x001F" writable="false" default="0x0000">ColorCapabilities</attribute>
+    <attribute side="server" code="0x400A" define="COLOR_CONTROL_COLOR_CAPABILITIES" type="ColorCapabilitiesBitmap" min="0x0000" max="0x001F" writable="false" default="0x0000">ColorCapabilities</attribute>
     <attribute side="server" code="0x400B" define="COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MIN" type="int16u" min="0x0000" max="0xFEFF" writable="false" default="0x0000" optional="true">ColorTempPhysicalMinMireds</attribute>
     <attribute side="server" code="0x400C" define="COLOR_CONTROL_COLOR_TEMP_PHYSICAL_MAX" type="int16u" min="0x0000" max="0xFEFF" writable="false" default="0xFEFF" optional="true">ColorTempPhysicalMaxMireds</attribute>
 
@@ -372,7 +392,7 @@ limitations under the License.
         Command description for EnhancedMoveToHue
       </description>
       <arg name="EnhancedHue" type="int16u"/>
-      <arg name="Direction" type="HueDirection"/>
+      <arg name="Direction" type="DirectionEnum"/>
       <arg name="TransitionTime" type="int16u"/>
       <arg name="OptionsMask" type="bitmap8"/>
       <arg name="OptionsOverride" type="bitmap8"/>
@@ -382,7 +402,7 @@ limitations under the License.
       <description>
         Command description for EnhancedMoveHue
       </description>
-      <arg name="MoveMode" type="HueMoveMode"/>
+      <arg name="MoveMode" type="MoveModeEnum"/>
       <arg name="Rate" type="int16u"/>
       <arg name="OptionsMask" type="bitmap8"/>
       <arg name="OptionsOverride" type="bitmap8"/>
@@ -392,7 +412,7 @@ limitations under the License.
       <description>
         Command description for EnhancedStepHue
       </description>
-      <arg name="StepMode" type="HueStepMode"/>
+      <arg name="StepMode" type="StepModeEnum"/>
       <arg name="StepSize" type="int16u"/>
       <arg name="TransitionTime" type="int16u"/>
       <arg name="OptionsMask" type="bitmap8"/>
@@ -414,9 +434,9 @@ limitations under the License.
       <description>
         Command description for ColorLoopSet
       </description>
-      <arg name="UpdateFlags" type="ColorLoopUpdateFlags"/>
-      <arg name="Action" type="ColorLoopAction"/>
-      <arg name="Direction" type="ColorLoopDirection"/>
+      <arg name="UpdateFlags" type="UpdateFlagsBitmap"/>
+      <arg name="Action" type="ColorLoopActionEnum"/>
+      <arg name="Direction" type="ColorLoopDirectionEnum"/>
       <arg name="Time" type="int16u"/>
       <arg name="StartHue" type="int16u"/>
       <arg name="OptionsMask" type="bitmap8"/>
@@ -435,7 +455,7 @@ limitations under the License.
       <description>
         Command description for MoveColorTemperature
       </description>
-      <arg name="MoveMode" type="HueMoveMode"/>
+      <arg name="MoveMode" type="MoveModeEnum"/>
       <arg name="Rate" type="int16u"/>
       <arg name="ColorTemperatureMinimumMireds" type="int16u"/>
       <arg name="ColorTemperatureMaximumMireds" type="int16u"/>
@@ -447,7 +467,7 @@ limitations under the License.
       <description>
         Command description for StepColorTemperature
       </description>
-      <arg name="StepMode" type="HueStepMode"/>
+      <arg name="StepMode" type="StepModeEnum"/>
       <arg name="StepSize" type="int16u"/>
       <arg name="TransitionTime" type="int16u"/>
       <arg name="ColorTemperatureMinimumMireds" type="int16u"/>
diff --git a/src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml
index 1c179f9324422a..dc002d3efbfb4a 100644
--- a/src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml
@@ -129,7 +129,7 @@ limitations under the License.
             <access op="read" role="view" />
             <access op="write" role="manage" />
         </attribute>
-        <attribute side="server" code="35" define="AUTO_RELOCK_TIME" type="int32u" reportable="true" writable="true">
+        <attribute side="server" code="35" define="AUTO_RELOCK_TIME" type="int32u" reportable="true" writable="true" optional="true">
             <description>AutoRelockTime</description>
             <access op="read" role="view" />
             <access op="write" role="manage" />
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index 4e99c7ebe5d260..cdba85078ffb4a 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -5547,7 +5547,7 @@ cluster DoorLock = 257 {
   readonly attribute optional int8u numberOfCredentialsSupportedPerUser = 28;
   attribute access(write: manage) optional char_string<3> language = 33;
   attribute access(write: manage) optional int8u LEDSettings = 34;
-  attribute access(write: manage) int32u autoRelockTime = 35;
+  attribute access(write: manage) optional int32u autoRelockTime = 35;
   attribute access(write: manage) optional int8u soundVolume = 36;
   attribute access(write: manage) OperatingModeEnum operatingMode = 37;
   readonly attribute DlSupportedOperatingModes supportedOperatingModes = 38;
@@ -6597,85 +6597,85 @@ cluster ThermostatUserInterfaceConfiguration = 516 {
 cluster ColorControl = 768 {
   revision 6;
 
-  enum ColorLoopAction : enum8 {
+  enum ColorLoopActionEnum : enum8 {
     kDeactivate = 0;
     kActivateFromColorLoopStartEnhancedHue = 1;
     kActivateFromEnhancedCurrentHue = 2;
   }
 
-  enum ColorLoopDirection : enum8 {
-    kDecrementHue = 0;
-    kIncrementHue = 1;
+  enum ColorLoopDirectionEnum : enum8 {
+    kDecrement = 0;
+    kIncrement = 1;
   }
 
-  enum ColorMode : enum8 {
+  enum ColorModeEnum : enum8 {
     kCurrentHueAndCurrentSaturation = 0;
     kCurrentXAndCurrentY = 1;
-    kColorTemperature = 2;
+    kColorTemperatureMireds = 2;
   }
 
-  enum HueDirection : enum8 {
-    kShortestDistance = 0;
-    kLongestDistance = 1;
+  enum DirectionEnum : enum8 {
+    kShortest = 0;
+    kLongest = 1;
     kUp = 2;
     kDown = 3;
   }
 
-  enum HueMoveMode : enum8 {
-    kStop = 0;
-    kUp = 1;
-    kDown = 3;
+  enum DriftCompensationEnum : enum8 {
+    kNone = 0;
+    kOtherOrUnknown = 1;
+    kTemperaturemonitoring = 2;
+    kOpticalLuminanceMonitoringAndFeedback = 3;
+    kOpticalColorMonitoringAndFeedback = 4;
   }
 
-  enum HueStepMode : enum8 {
-    kUp = 1;
-    kDown = 3;
+  enum EnhancedColorModeEnum : enum8 {
+    kCurrentHueAndCurrentSaturation = 0;
+    kCurrentXAndCurrentY = 1;
+    kColorTemperatureMireds = 2;
+    kEnhancedCurrentHueAndCurrentSaturation = 3;
   }
 
-  enum SaturationMoveMode : enum8 {
+  enum MoveModeEnum : enum8 {
     kStop = 0;
     kUp = 1;
     kDown = 3;
   }
 
-  enum SaturationStepMode : enum8 {
+  enum StepModeEnum : enum8 {
     kUp = 1;
     kDown = 3;
   }
 
-  bitmap ColorCapabilities : bitmap16 {
-    kHueSaturationSupported = 0x1;
-    kEnhancedHueSupported = 0x2;
-    kColorLoopSupported = 0x4;
-    kXYAttributesSupported = 0x8;
-    kColorTemperatureSupported = 0x10;
+  bitmap ColorCapabilitiesBitmap : bitmap16 {
+    kHueSaturation = 0x1;
+    kEnhancedHue = 0x2;
+    kColorLoop = 0x4;
+    kXY = 0x8;
+    kColorTemperature = 0x10;
+  }
+
+  bitmap OptionsBitmap : bitmap8 {
+    kExecuteIfOff = 0x1;
   }
 
-  bitmap ColorLoopUpdateFlags : bitmap8 {
+  bitmap UpdateFlagsBitmap : bitmap8 {
     kUpdateAction = 0x1;
     kUpdateDirection = 0x2;
     kUpdateTime = 0x4;
     kUpdateStartHue = 0x8;
   }
 
-  bitmap Feature : bitmap32 {
-    kHueAndSaturation = 0x1;
-    kEnhancedHue = 0x2;
-    kColorLoop = 0x4;
-    kXY = 0x8;
-    kColorTemperature = 0x10;
-  }
-
   readonly attribute optional int8u currentHue = 0;
   readonly attribute optional int8u currentSaturation = 1;
   readonly attribute optional int16u remainingTime = 2;
   readonly attribute optional int16u currentX = 3;
   readonly attribute optional int16u currentY = 4;
-  readonly attribute optional enum8 driftCompensation = 5;
+  readonly attribute optional DriftCompensationEnum driftCompensation = 5;
   readonly attribute optional char_string<254> compensationText = 6;
   readonly attribute optional int16u colorTemperatureMireds = 7;
-  readonly attribute enum8 colorMode = 8;
-  attribute bitmap8 options = 15;
+  readonly attribute ColorModeEnum colorMode = 8;
+  attribute OptionsBitmap options = 15;
   readonly attribute nullable int8u numberOfPrimaries = 16;
   readonly attribute optional int16u primary1X = 17;
   readonly attribute optional int16u primary1Y = 18;
@@ -6707,13 +6707,13 @@ cluster ColorControl = 768 {
   attribute access(write: manage) optional int16u colorPointBY = 59;
   attribute access(write: manage) optional nullable int8u colorPointBIntensity = 60;
   readonly attribute optional int16u enhancedCurrentHue = 16384;
-  readonly attribute enum8 enhancedColorMode = 16385;
+  readonly attribute EnhancedColorModeEnum enhancedColorMode = 16385;
   readonly attribute optional int8u colorLoopActive = 16386;
-  readonly attribute optional int8u colorLoopDirection = 16387;
+  readonly attribute optional ColorLoopDirectionEnum colorLoopDirection = 16387;
   readonly attribute optional int16u colorLoopTime = 16388;
   readonly attribute optional int16u colorLoopStartEnhancedHue = 16389;
   readonly attribute optional int16u colorLoopStoredEnhancedHue = 16390;
-  readonly attribute bitmap16 colorCapabilities = 16394;
+  readonly attribute ColorCapabilitiesBitmap colorCapabilities = 16394;
   readonly attribute optional int16u colorTempPhysicalMinMireds = 16395;
   readonly attribute optional int16u colorTempPhysicalMaxMireds = 16396;
   readonly attribute optional int16u coupleColorTempToLevelMinMireds = 16397;
@@ -6727,21 +6727,21 @@ cluster ColorControl = 768 {
 
   request struct MoveToHueRequest {
     int8u hue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct MoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -6756,14 +6756,14 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveSaturationRequest {
-    SaturationMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int8u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct StepSaturationRequest {
-    SaturationStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int8u stepSize = 1;
     int8u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -6810,21 +6810,21 @@ cluster ColorControl = 768 {
 
   request struct EnhancedMoveToHueRequest {
     int16u enhancedHue = 0;
-    HueDirection direction = 1;
+    DirectionEnum direction = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
     bitmap8 optionsOverride = 4;
   }
 
   request struct EnhancedMoveHueRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     bitmap8 optionsMask = 2;
     bitmap8 optionsOverride = 3;
   }
 
   request struct EnhancedStepHueRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     bitmap8 optionsMask = 3;
@@ -6840,9 +6840,9 @@ cluster ColorControl = 768 {
   }
 
   request struct ColorLoopSetRequest {
-    ColorLoopUpdateFlags updateFlags = 0;
-    ColorLoopAction action = 1;
-    ColorLoopDirection direction = 2;
+    UpdateFlagsBitmap updateFlags = 0;
+    ColorLoopActionEnum action = 1;
+    ColorLoopDirectionEnum direction = 2;
     int16u time = 3;
     int16u startHue = 4;
     bitmap8 optionsMask = 5;
@@ -6855,7 +6855,7 @@ cluster ColorControl = 768 {
   }
 
   request struct MoveColorTemperatureRequest {
-    HueMoveMode moveMode = 0;
+    MoveModeEnum moveMode = 0;
     int16u rate = 1;
     int16u colorTemperatureMinimumMireds = 2;
     int16u colorTemperatureMaximumMireds = 3;
@@ -6864,7 +6864,7 @@ cluster ColorControl = 768 {
   }
 
   request struct StepColorTemperatureRequest {
-    HueStepMode stepMode = 0;
+    StepModeEnum stepMode = 0;
     int16u stepSize = 1;
     int16u transitionTime = 2;
     int16u colorTemperatureMinimumMireds = 3;
diff --git a/src/controller/java/generated/java/matter/controller/cluster/clusters/DoorLockCluster.kt b/src/controller/java/generated/java/matter/controller/cluster/clusters/DoorLockCluster.kt
index f0a27f30273c39..5e23a7bb20c727 100644
--- a/src/controller/java/generated/java/matter/controller/cluster/clusters/DoorLockCluster.kt
+++ b/src/controller/java/generated/java/matter/controller/cluster/clusters/DoorLockCluster.kt
@@ -3647,7 +3647,7 @@ class DoorLockCluster(private val controller: MatterController, private val endp
     }
   }
 
-  suspend fun readAutoRelockTimeAttribute(): UInt {
+  suspend fun readAutoRelockTimeAttribute(): UInt? {
     val ATTRIBUTE_ID: UInt = 35u
 
     val attributePath =
@@ -3673,7 +3673,12 @@ class DoorLockCluster(private val controller: MatterController, private val endp
 
     // Decode the TLV data into the appropriate type
     val tlvReader = TlvReader(attributeData.data)
-    val decodedValue: UInt = tlvReader.getUInt(AnonymousTag)
+    val decodedValue: UInt? =
+      if (tlvReader.isNextTag(AnonymousTag)) {
+        tlvReader.getUInt(AnonymousTag)
+      } else {
+        null
+      }
 
     return decodedValue
   }
@@ -3759,9 +3764,14 @@ class DoorLockCluster(private val controller: MatterController, private val endp
 
           // Decode the TLV data into the appropriate type
           val tlvReader = TlvReader(attributeData.data)
-          val decodedValue: UInt = tlvReader.getUInt(AnonymousTag)
+          val decodedValue: UInt? =
+            if (tlvReader.isNextTag(AnonymousTag)) {
+              tlvReader.getUInt(AnonymousTag)
+            } else {
+              null
+            }
 
-          emit(UIntSubscriptionState.Success(decodedValue))
+          decodedValue?.let { emit(UIntSubscriptionState.Success(it)) }
         }
         SubscriptionState.SubscriptionEstablished -> {
           emit(UIntSubscriptionState.SubscriptionEstablished)
diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
index 2400ba818c7cb9..2be6ff5ba9218a 100644
--- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
@@ -30748,7 +30748,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
             jobject value;
             std::string valueClassName     = "java/lang/Integer";
             std::string valueCtorSignature = "(I)V";
-            jint jnivalue                  = static_cast<jint>(cppValue);
+            jint jnivalue                  = static_cast<jint>(cppValue.Raw());
             chip::JniReferences::GetInstance().CreateBoxedObject<jint>(valueClassName.c_str(), valueCtorSignature.c_str(), jnivalue,
                                                                        value);
             return value;
@@ -31426,7 +31426,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
             jobject value;
             std::string valueClassName     = "java/lang/Integer";
             std::string valueCtorSignature = "(I)V";
-            jint jnivalue                  = static_cast<jint>(cppValue);
+            jint jnivalue                  = static_cast<jint>(cppValue.Raw());
             chip::JniReferences::GetInstance().CreateBoxedObject<jint>(valueClassName.c_str(), valueCtorSignature.c_str(), jnivalue,
                                                                        value);
             return value;
diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py
index cd411b93d43301..f6c320cb0b38e0 100644
--- a/src/controller/python/chip/clusters/Objects.py
+++ b/src/controller/python/chip/clusters/Objects.py
@@ -26750,7 +26750,7 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                 ClusterObjectFieldDescriptor(Label="numberOfCredentialsSupportedPerUser", Tag=0x0000001C, Type=typing.Optional[uint]),
                 ClusterObjectFieldDescriptor(Label="language", Tag=0x00000021, Type=typing.Optional[str]),
                 ClusterObjectFieldDescriptor(Label="LEDSettings", Tag=0x00000022, Type=typing.Optional[uint]),
-                ClusterObjectFieldDescriptor(Label="autoRelockTime", Tag=0x00000023, Type=uint),
+                ClusterObjectFieldDescriptor(Label="autoRelockTime", Tag=0x00000023, Type=typing.Optional[uint]),
                 ClusterObjectFieldDescriptor(Label="soundVolume", Tag=0x00000024, Type=typing.Optional[uint]),
                 ClusterObjectFieldDescriptor(Label="operatingMode", Tag=0x00000025, Type=DoorLock.Enums.OperatingModeEnum),
                 ClusterObjectFieldDescriptor(Label="supportedOperatingModes", Tag=0x00000026, Type=uint),
@@ -26803,7 +26803,7 @@ def descriptor(cls) -> ClusterObjectDescriptor:
     numberOfCredentialsSupportedPerUser: 'typing.Optional[uint]' = None
     language: 'typing.Optional[str]' = None
     LEDSettings: 'typing.Optional[uint]' = None
-    autoRelockTime: 'uint' = None
+    autoRelockTime: 'typing.Optional[uint]' = None
     soundVolume: 'typing.Optional[uint]' = None
     operatingMode: 'DoorLock.Enums.OperatingModeEnum' = None
     supportedOperatingModes: 'uint' = None
@@ -28200,9 +28200,9 @@ def attribute_id(cls) -> int:
 
             @ChipUtility.classproperty
             def attribute_type(cls) -> ClusterObjectFieldDescriptor:
-                return ClusterObjectFieldDescriptor(Type=uint)
+                return ClusterObjectFieldDescriptor(Type=typing.Optional[uint])
 
-            value: 'uint' = 0
+            value: 'typing.Optional[uint]' = None
 
         @dataclass
         class SoundVolume(ClusterAttributeDescriptor):
@@ -33151,10 +33151,10 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                 ClusterObjectFieldDescriptor(Label="remainingTime", Tag=0x00000002, Type=typing.Optional[uint]),
                 ClusterObjectFieldDescriptor(Label="currentX", Tag=0x00000003, Type=typing.Optional[uint]),
                 ClusterObjectFieldDescriptor(Label="currentY", Tag=0x00000004, Type=typing.Optional[uint]),
-                ClusterObjectFieldDescriptor(Label="driftCompensation", Tag=0x00000005, Type=typing.Optional[uint]),
+                ClusterObjectFieldDescriptor(Label="driftCompensation", Tag=0x00000005, Type=typing.Optional[ColorControl.Enums.DriftCompensationEnum]),
                 ClusterObjectFieldDescriptor(Label="compensationText", Tag=0x00000006, Type=typing.Optional[str]),
                 ClusterObjectFieldDescriptor(Label="colorTemperatureMireds", Tag=0x00000007, Type=typing.Optional[uint]),
-                ClusterObjectFieldDescriptor(Label="colorMode", Tag=0x00000008, Type=uint),
+                ClusterObjectFieldDescriptor(Label="colorMode", Tag=0x00000008, Type=ColorControl.Enums.ColorModeEnum),
                 ClusterObjectFieldDescriptor(Label="options", Tag=0x0000000F, Type=uint),
                 ClusterObjectFieldDescriptor(Label="numberOfPrimaries", Tag=0x00000010, Type=typing.Union[Nullable, uint]),
                 ClusterObjectFieldDescriptor(Label="primary1X", Tag=0x00000011, Type=typing.Optional[uint]),
@@ -33187,9 +33187,9 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                 ClusterObjectFieldDescriptor(Label="colorPointBY", Tag=0x0000003B, Type=typing.Optional[uint]),
                 ClusterObjectFieldDescriptor(Label="colorPointBIntensity", Tag=0x0000003C, Type=typing.Union[None, Nullable, uint]),
                 ClusterObjectFieldDescriptor(Label="enhancedCurrentHue", Tag=0x00004000, Type=typing.Optional[uint]),
-                ClusterObjectFieldDescriptor(Label="enhancedColorMode", Tag=0x00004001, Type=uint),
+                ClusterObjectFieldDescriptor(Label="enhancedColorMode", Tag=0x00004001, Type=ColorControl.Enums.EnhancedColorModeEnum),
                 ClusterObjectFieldDescriptor(Label="colorLoopActive", Tag=0x00004002, Type=typing.Optional[uint]),
-                ClusterObjectFieldDescriptor(Label="colorLoopDirection", Tag=0x00004003, Type=typing.Optional[uint]),
+                ClusterObjectFieldDescriptor(Label="colorLoopDirection", Tag=0x00004003, Type=typing.Optional[ColorControl.Enums.ColorLoopDirectionEnum]),
                 ClusterObjectFieldDescriptor(Label="colorLoopTime", Tag=0x00004004, Type=typing.Optional[uint]),
                 ClusterObjectFieldDescriptor(Label="colorLoopStartEnhancedHue", Tag=0x00004005, Type=typing.Optional[uint]),
                 ClusterObjectFieldDescriptor(Label="colorLoopStoredEnhancedHue", Tag=0x00004006, Type=typing.Optional[uint]),
@@ -33211,10 +33211,10 @@ def descriptor(cls) -> ClusterObjectDescriptor:
     remainingTime: 'typing.Optional[uint]' = None
     currentX: 'typing.Optional[uint]' = None
     currentY: 'typing.Optional[uint]' = None
-    driftCompensation: 'typing.Optional[uint]' = None
+    driftCompensation: 'typing.Optional[ColorControl.Enums.DriftCompensationEnum]' = None
     compensationText: 'typing.Optional[str]' = None
     colorTemperatureMireds: 'typing.Optional[uint]' = None
-    colorMode: 'uint' = None
+    colorMode: 'ColorControl.Enums.ColorModeEnum' = None
     options: 'uint' = None
     numberOfPrimaries: 'typing.Union[Nullable, uint]' = None
     primary1X: 'typing.Optional[uint]' = None
@@ -33247,9 +33247,9 @@ def descriptor(cls) -> ClusterObjectDescriptor:
     colorPointBY: 'typing.Optional[uint]' = None
     colorPointBIntensity: 'typing.Union[None, Nullable, uint]' = None
     enhancedCurrentHue: 'typing.Optional[uint]' = None
-    enhancedColorMode: 'uint' = None
+    enhancedColorMode: 'ColorControl.Enums.EnhancedColorModeEnum' = None
     colorLoopActive: 'typing.Optional[uint]' = None
-    colorLoopDirection: 'typing.Optional[uint]' = None
+    colorLoopDirection: 'typing.Optional[ColorControl.Enums.ColorLoopDirectionEnum]' = None
     colorLoopTime: 'typing.Optional[uint]' = None
     colorLoopStartEnhancedHue: 'typing.Optional[uint]' = None
     colorLoopStoredEnhancedHue: 'typing.Optional[uint]' = None
@@ -33266,7 +33266,7 @@ def descriptor(cls) -> ClusterObjectDescriptor:
     clusterRevision: 'uint' = None
 
     class Enums:
-        class ColorLoopAction(MatterIntEnum):
+        class ColorLoopActionEnum(MatterIntEnum):
             kDeactivate = 0x00
             kActivateFromColorLoopStartEnhancedHue = 0x01
             kActivateFromEnhancedCurrentHue = 0x02
@@ -33276,28 +33276,28 @@ class ColorLoopAction(MatterIntEnum):
             # enum value. This specific should never be transmitted.
             kUnknownEnumValue = 3,
 
-        class ColorLoopDirection(MatterIntEnum):
-            kDecrementHue = 0x00
-            kIncrementHue = 0x01
+        class ColorLoopDirectionEnum(MatterIntEnum):
+            kDecrement = 0x00
+            kIncrement = 0x01
             # All received enum values that are not listed above will be mapped
             # to kUnknownEnumValue. This is a helper enum value that should only
             # be used by code to process how it handles receiving and unknown
             # enum value. This specific should never be transmitted.
             kUnknownEnumValue = 2,
 
-        class ColorMode(MatterIntEnum):
+        class ColorModeEnum(MatterIntEnum):
             kCurrentHueAndCurrentSaturation = 0x00
             kCurrentXAndCurrentY = 0x01
-            kColorTemperature = 0x02
+            kColorTemperatureMireds = 0x02
             # All received enum values that are not listed above will be mapped
             # to kUnknownEnumValue. This is a helper enum value that should only
             # be used by code to process how it handles receiving and unknown
             # enum value. This specific should never be transmitted.
             kUnknownEnumValue = 3,
 
-        class HueDirection(MatterIntEnum):
-            kShortestDistance = 0x00
-            kLongestDistance = 0x01
+        class DirectionEnum(MatterIntEnum):
+            kShortest = 0x00
+            kLongest = 0x01
             kUp = 0x02
             kDown = 0x03
             # All received enum values that are not listed above will be mapped
@@ -33306,26 +33306,30 @@ class HueDirection(MatterIntEnum):
             # enum value. This specific should never be transmitted.
             kUnknownEnumValue = 4,
 
-        class HueMoveMode(MatterIntEnum):
-            kStop = 0x00
-            kUp = 0x01
-            kDown = 0x03
+        class DriftCompensationEnum(MatterIntEnum):
+            kNone = 0x00
+            kOtherOrUnknown = 0x01
+            kTemperaturemonitoring = 0x02
+            kOpticalLuminanceMonitoringAndFeedback = 0x03
+            kOpticalColorMonitoringAndFeedback = 0x04
             # All received enum values that are not listed above will be mapped
             # to kUnknownEnumValue. This is a helper enum value that should only
             # be used by code to process how it handles receiving and unknown
             # enum value. This specific should never be transmitted.
-            kUnknownEnumValue = 2,
+            kUnknownEnumValue = 5,
 
-        class HueStepMode(MatterIntEnum):
-            kUp = 0x01
-            kDown = 0x03
+        class EnhancedColorModeEnum(MatterIntEnum):
+            kCurrentHueAndCurrentSaturation = 0x00
+            kCurrentXAndCurrentY = 0x01
+            kColorTemperatureMireds = 0x02
+            kEnhancedCurrentHueAndCurrentSaturation = 0x03
             # All received enum values that are not listed above will be mapped
             # to kUnknownEnumValue. This is a helper enum value that should only
             # be used by code to process how it handles receiving and unknown
             # enum value. This specific should never be transmitted.
-            kUnknownEnumValue = 0,
+            kUnknownEnumValue = 4,
 
-        class SaturationMoveMode(MatterIntEnum):
+        class MoveModeEnum(MatterIntEnum):
             kStop = 0x00
             kUp = 0x01
             kDown = 0x03
@@ -33335,7 +33339,7 @@ class SaturationMoveMode(MatterIntEnum):
             # enum value. This specific should never be transmitted.
             kUnknownEnumValue = 2,
 
-        class SaturationStepMode(MatterIntEnum):
+        class StepModeEnum(MatterIntEnum):
             kUp = 0x01
             kDown = 0x03
             # All received enum values that are not listed above will be mapped
@@ -33345,26 +33349,22 @@ class SaturationStepMode(MatterIntEnum):
             kUnknownEnumValue = 0,
 
     class Bitmaps:
-        class ColorCapabilities(IntFlag):
-            kHueSaturationSupported = 0x1
-            kEnhancedHueSupported = 0x2
-            kColorLoopSupported = 0x4
-            kXYAttributesSupported = 0x8
-            kColorTemperatureSupported = 0x10
-
-        class ColorLoopUpdateFlags(IntFlag):
-            kUpdateAction = 0x1
-            kUpdateDirection = 0x2
-            kUpdateTime = 0x4
-            kUpdateStartHue = 0x8
-
-        class Feature(IntFlag):
-            kHueAndSaturation = 0x1
+        class ColorCapabilitiesBitmap(IntFlag):
+            kHueSaturation = 0x1
             kEnhancedHue = 0x2
             kColorLoop = 0x4
             kXy = 0x8
             kColorTemperature = 0x10
 
+        class OptionsBitmap(IntFlag):
+            kExecuteIfOff = 0x1
+
+        class UpdateFlagsBitmap(IntFlag):
+            kUpdateAction = 0x1
+            kUpdateDirection = 0x2
+            kUpdateTime = 0x4
+            kUpdateStartHue = 0x8
+
     class Commands:
         @dataclass
         class MoveToHue(ClusterCommand):
@@ -33378,14 +33378,14 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields=[
                         ClusterObjectFieldDescriptor(Label="hue", Tag=0, Type=uint),
-                        ClusterObjectFieldDescriptor(Label="direction", Tag=1, Type=ColorControl.Enums.HueDirection),
+                        ClusterObjectFieldDescriptor(Label="direction", Tag=1, Type=ColorControl.Enums.DirectionEnum),
                         ClusterObjectFieldDescriptor(Label="transitionTime", Tag=2, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsMask", Tag=3, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint),
                     ])
 
             hue: 'uint' = 0
-            direction: 'ColorControl.Enums.HueDirection' = 0
+            direction: 'ColorControl.Enums.DirectionEnum' = 0
             transitionTime: 'uint' = 0
             optionsMask: 'uint' = 0
             optionsOverride: 'uint' = 0
@@ -33401,13 +33401,13 @@ class MoveHue(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields=[
-                        ClusterObjectFieldDescriptor(Label="moveMode", Tag=0, Type=ColorControl.Enums.HueMoveMode),
+                        ClusterObjectFieldDescriptor(Label="moveMode", Tag=0, Type=ColorControl.Enums.MoveModeEnum),
                         ClusterObjectFieldDescriptor(Label="rate", Tag=1, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsMask", Tag=2, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=3, Type=uint),
                     ])
 
-            moveMode: 'ColorControl.Enums.HueMoveMode' = 0
+            moveMode: 'ColorControl.Enums.MoveModeEnum' = 0
             rate: 'uint' = 0
             optionsMask: 'uint' = 0
             optionsOverride: 'uint' = 0
@@ -33423,14 +33423,14 @@ class StepHue(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields=[
-                        ClusterObjectFieldDescriptor(Label="stepMode", Tag=0, Type=ColorControl.Enums.HueStepMode),
+                        ClusterObjectFieldDescriptor(Label="stepMode", Tag=0, Type=ColorControl.Enums.StepModeEnum),
                         ClusterObjectFieldDescriptor(Label="stepSize", Tag=1, Type=uint),
                         ClusterObjectFieldDescriptor(Label="transitionTime", Tag=2, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsMask", Tag=3, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint),
                     ])
 
-            stepMode: 'ColorControl.Enums.HueStepMode' = 0
+            stepMode: 'ColorControl.Enums.StepModeEnum' = 0
             stepSize: 'uint' = 0
             transitionTime: 'uint' = 0
             optionsMask: 'uint' = 0
@@ -33469,13 +33469,13 @@ class MoveSaturation(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields=[
-                        ClusterObjectFieldDescriptor(Label="moveMode", Tag=0, Type=ColorControl.Enums.SaturationMoveMode),
+                        ClusterObjectFieldDescriptor(Label="moveMode", Tag=0, Type=ColorControl.Enums.MoveModeEnum),
                         ClusterObjectFieldDescriptor(Label="rate", Tag=1, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsMask", Tag=2, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=3, Type=uint),
                     ])
 
-            moveMode: 'ColorControl.Enums.SaturationMoveMode' = 0
+            moveMode: 'ColorControl.Enums.MoveModeEnum' = 0
             rate: 'uint' = 0
             optionsMask: 'uint' = 0
             optionsOverride: 'uint' = 0
@@ -33491,14 +33491,14 @@ class StepSaturation(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields=[
-                        ClusterObjectFieldDescriptor(Label="stepMode", Tag=0, Type=ColorControl.Enums.SaturationStepMode),
+                        ClusterObjectFieldDescriptor(Label="stepMode", Tag=0, Type=ColorControl.Enums.StepModeEnum),
                         ClusterObjectFieldDescriptor(Label="stepSize", Tag=1, Type=uint),
                         ClusterObjectFieldDescriptor(Label="transitionTime", Tag=2, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsMask", Tag=3, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint),
                     ])
 
-            stepMode: 'ColorControl.Enums.SaturationStepMode' = 0
+            stepMode: 'ColorControl.Enums.StepModeEnum' = 0
             stepSize: 'uint' = 0
             transitionTime: 'uint' = 0
             optionsMask: 'uint' = 0
@@ -33632,14 +33632,14 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields=[
                         ClusterObjectFieldDescriptor(Label="enhancedHue", Tag=0, Type=uint),
-                        ClusterObjectFieldDescriptor(Label="direction", Tag=1, Type=ColorControl.Enums.HueDirection),
+                        ClusterObjectFieldDescriptor(Label="direction", Tag=1, Type=ColorControl.Enums.DirectionEnum),
                         ClusterObjectFieldDescriptor(Label="transitionTime", Tag=2, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsMask", Tag=3, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint),
                     ])
 
             enhancedHue: 'uint' = 0
-            direction: 'ColorControl.Enums.HueDirection' = 0
+            direction: 'ColorControl.Enums.DirectionEnum' = 0
             transitionTime: 'uint' = 0
             optionsMask: 'uint' = 0
             optionsOverride: 'uint' = 0
@@ -33655,13 +33655,13 @@ class EnhancedMoveHue(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields=[
-                        ClusterObjectFieldDescriptor(Label="moveMode", Tag=0, Type=ColorControl.Enums.HueMoveMode),
+                        ClusterObjectFieldDescriptor(Label="moveMode", Tag=0, Type=ColorControl.Enums.MoveModeEnum),
                         ClusterObjectFieldDescriptor(Label="rate", Tag=1, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsMask", Tag=2, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=3, Type=uint),
                     ])
 
-            moveMode: 'ColorControl.Enums.HueMoveMode' = 0
+            moveMode: 'ColorControl.Enums.MoveModeEnum' = 0
             rate: 'uint' = 0
             optionsMask: 'uint' = 0
             optionsOverride: 'uint' = 0
@@ -33677,14 +33677,14 @@ class EnhancedStepHue(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields=[
-                        ClusterObjectFieldDescriptor(Label="stepMode", Tag=0, Type=ColorControl.Enums.HueStepMode),
+                        ClusterObjectFieldDescriptor(Label="stepMode", Tag=0, Type=ColorControl.Enums.StepModeEnum),
                         ClusterObjectFieldDescriptor(Label="stepSize", Tag=1, Type=uint),
                         ClusterObjectFieldDescriptor(Label="transitionTime", Tag=2, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsMask", Tag=3, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=4, Type=uint),
                     ])
 
-            stepMode: 'ColorControl.Enums.HueStepMode' = 0
+            stepMode: 'ColorControl.Enums.StepModeEnum' = 0
             stepSize: 'uint' = 0
             transitionTime: 'uint' = 0
             optionsMask: 'uint' = 0
@@ -33726,8 +33726,8 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields=[
                         ClusterObjectFieldDescriptor(Label="updateFlags", Tag=0, Type=uint),
-                        ClusterObjectFieldDescriptor(Label="action", Tag=1, Type=ColorControl.Enums.ColorLoopAction),
-                        ClusterObjectFieldDescriptor(Label="direction", Tag=2, Type=ColorControl.Enums.ColorLoopDirection),
+                        ClusterObjectFieldDescriptor(Label="action", Tag=1, Type=ColorControl.Enums.ColorLoopActionEnum),
+                        ClusterObjectFieldDescriptor(Label="direction", Tag=2, Type=ColorControl.Enums.ColorLoopDirectionEnum),
                         ClusterObjectFieldDescriptor(Label="time", Tag=3, Type=uint),
                         ClusterObjectFieldDescriptor(Label="startHue", Tag=4, Type=uint),
                         ClusterObjectFieldDescriptor(Label="optionsMask", Tag=5, Type=uint),
@@ -33735,8 +33735,8 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                     ])
 
             updateFlags: 'uint' = 0
-            action: 'ColorControl.Enums.ColorLoopAction' = 0
-            direction: 'ColorControl.Enums.ColorLoopDirection' = 0
+            action: 'ColorControl.Enums.ColorLoopActionEnum' = 0
+            direction: 'ColorControl.Enums.ColorLoopDirectionEnum' = 0
             time: 'uint' = 0
             startHue: 'uint' = 0
             optionsMask: 'uint' = 0
@@ -33771,7 +33771,7 @@ class MoveColorTemperature(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields=[
-                        ClusterObjectFieldDescriptor(Label="moveMode", Tag=0, Type=ColorControl.Enums.HueMoveMode),
+                        ClusterObjectFieldDescriptor(Label="moveMode", Tag=0, Type=ColorControl.Enums.MoveModeEnum),
                         ClusterObjectFieldDescriptor(Label="rate", Tag=1, Type=uint),
                         ClusterObjectFieldDescriptor(Label="colorTemperatureMinimumMireds", Tag=2, Type=uint),
                         ClusterObjectFieldDescriptor(Label="colorTemperatureMaximumMireds", Tag=3, Type=uint),
@@ -33779,7 +33779,7 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                         ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=5, Type=uint),
                     ])
 
-            moveMode: 'ColorControl.Enums.HueMoveMode' = 0
+            moveMode: 'ColorControl.Enums.MoveModeEnum' = 0
             rate: 'uint' = 0
             colorTemperatureMinimumMireds: 'uint' = 0
             colorTemperatureMaximumMireds: 'uint' = 0
@@ -33797,7 +33797,7 @@ class StepColorTemperature(ClusterCommand):
             def descriptor(cls) -> ClusterObjectDescriptor:
                 return ClusterObjectDescriptor(
                     Fields=[
-                        ClusterObjectFieldDescriptor(Label="stepMode", Tag=0, Type=ColorControl.Enums.HueStepMode),
+                        ClusterObjectFieldDescriptor(Label="stepMode", Tag=0, Type=ColorControl.Enums.StepModeEnum),
                         ClusterObjectFieldDescriptor(Label="stepSize", Tag=1, Type=uint),
                         ClusterObjectFieldDescriptor(Label="transitionTime", Tag=2, Type=uint),
                         ClusterObjectFieldDescriptor(Label="colorTemperatureMinimumMireds", Tag=3, Type=uint),
@@ -33806,7 +33806,7 @@ def descriptor(cls) -> ClusterObjectDescriptor:
                         ClusterObjectFieldDescriptor(Label="optionsOverride", Tag=6, Type=uint),
                     ])
 
-            stepMode: 'ColorControl.Enums.HueStepMode' = 0
+            stepMode: 'ColorControl.Enums.StepModeEnum' = 0
             stepSize: 'uint' = 0
             transitionTime: 'uint' = 0
             colorTemperatureMinimumMireds: 'uint' = 0
@@ -33907,9 +33907,9 @@ def attribute_id(cls) -> int:
 
             @ChipUtility.classproperty
             def attribute_type(cls) -> ClusterObjectFieldDescriptor:
-                return ClusterObjectFieldDescriptor(Type=typing.Optional[uint])
+                return ClusterObjectFieldDescriptor(Type=typing.Optional[ColorControl.Enums.DriftCompensationEnum])
 
-            value: 'typing.Optional[uint]' = None
+            value: 'typing.Optional[ColorControl.Enums.DriftCompensationEnum]' = None
 
         @dataclass
         class CompensationText(ClusterAttributeDescriptor):
@@ -33955,9 +33955,9 @@ def attribute_id(cls) -> int:
 
             @ChipUtility.classproperty
             def attribute_type(cls) -> ClusterObjectFieldDescriptor:
-                return ClusterObjectFieldDescriptor(Type=uint)
+                return ClusterObjectFieldDescriptor(Type=ColorControl.Enums.ColorModeEnum)
 
-            value: 'uint' = 0
+            value: 'ColorControl.Enums.ColorModeEnum' = 0
 
         @dataclass
         class Options(ClusterAttributeDescriptor):
@@ -34483,9 +34483,9 @@ def attribute_id(cls) -> int:
 
             @ChipUtility.classproperty
             def attribute_type(cls) -> ClusterObjectFieldDescriptor:
-                return ClusterObjectFieldDescriptor(Type=uint)
+                return ClusterObjectFieldDescriptor(Type=ColorControl.Enums.EnhancedColorModeEnum)
 
-            value: 'uint' = 0
+            value: 'ColorControl.Enums.EnhancedColorModeEnum' = 0
 
         @dataclass
         class ColorLoopActive(ClusterAttributeDescriptor):
@@ -34515,9 +34515,9 @@ def attribute_id(cls) -> int:
 
             @ChipUtility.classproperty
             def attribute_type(cls) -> ClusterObjectFieldDescriptor:
-                return ClusterObjectFieldDescriptor(Type=typing.Optional[uint])
+                return ClusterObjectFieldDescriptor(Type=typing.Optional[ColorControl.Enums.ColorLoopDirectionEnum])
 
-            value: 'typing.Optional[uint]' = None
+            value: 'typing.Optional[ColorControl.Enums.ColorLoopDirectionEnum]' = None
 
         @dataclass
         class ColorLoopTime(ClusterAttributeDescriptor):
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
index bae1643f3beb39..5b2a55f621339c 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
@@ -12361,7 +12361,7 @@ static id _Nullable DecodeAttributeValueForColorControlCluster(AttributeId aAttr
             return nil;
         }
         NSNumber * _Nonnull value;
-        value = [NSNumber numberWithUnsignedChar:cppValue];
+        value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
         return value;
     }
     case Attributes::CompensationText::Id: {
@@ -12399,7 +12399,7 @@ static id _Nullable DecodeAttributeValueForColorControlCluster(AttributeId aAttr
             return nil;
         }
         NSNumber * _Nonnull value;
-        value = [NSNumber numberWithUnsignedChar:cppValue];
+        value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
         return value;
     }
     case Attributes::Options::Id: {
@@ -12410,7 +12410,7 @@ static id _Nullable DecodeAttributeValueForColorControlCluster(AttributeId aAttr
             return nil;
         }
         NSNumber * _Nonnull value;
-        value = [NSNumber numberWithUnsignedChar:cppValue];
+        value = [NSNumber numberWithUnsignedChar:cppValue.Raw()];
         return value;
     }
     case Attributes::NumberOfPrimaries::Id: {
@@ -12802,7 +12802,7 @@ static id _Nullable DecodeAttributeValueForColorControlCluster(AttributeId aAttr
             return nil;
         }
         NSNumber * _Nonnull value;
-        value = [NSNumber numberWithUnsignedChar:cppValue];
+        value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
         return value;
     }
     case Attributes::ColorLoopActive::Id: {
@@ -12824,7 +12824,7 @@ static id _Nullable DecodeAttributeValueForColorControlCluster(AttributeId aAttr
             return nil;
         }
         NSNumber * _Nonnull value;
-        value = [NSNumber numberWithUnsignedChar:cppValue];
+        value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
         return value;
     }
     case Attributes::ColorLoopTime::Id: {
@@ -12868,7 +12868,7 @@ static id _Nullable DecodeAttributeValueForColorControlCluster(AttributeId aAttr
             return nil;
         }
         NSNumber * _Nonnull value;
-        value = [NSNumber numberWithUnsignedShort:cppValue];
+        value = [NSNumber numberWithUnsignedShort:cppValue.Raw()];
         return value;
     }
     case Attributes::ColorTempPhysicalMinMireds::Id: {
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index d28558722a280f..15d1494662e9f5 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -19035,73 +19035,73 @@ typedef NS_ENUM(uint8_t, MTRThermostatUserInterfaceConfigurationTemperatureDispl
 } MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4));
 
 typedef NS_ENUM(uint8_t, MTRColorControlColorLoopAction) {
-    MTRColorControlColorLoopActionDeactivate MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x00,
-    MTRColorControlColorLoopActionActivateFromColorLoopStartEnhancedHue MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x01,
-    MTRColorControlColorLoopActionActivateFromEnhancedCurrentHue MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x02,
-} MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+    MTRColorControlColorLoopActionDeactivate MTR_PROVISIONALLY_AVAILABLE = 0x00,
+    MTRColorControlColorLoopActionActivateFromColorLoopStartEnhancedHue MTR_PROVISIONALLY_AVAILABLE = 0x01,
+    MTRColorControlColorLoopActionActivateFromEnhancedCurrentHue MTR_PROVISIONALLY_AVAILABLE = 0x02,
+} MTR_PROVISIONALLY_AVAILABLE;
 
 typedef NS_ENUM(uint8_t, MTRColorControlColorLoopDirection) {
-    MTRColorControlColorLoopDirectionDecrementHue MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x00,
-    MTRColorControlColorLoopDirectionIncrementHue MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x01,
-} MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+    MTRColorControlColorLoopDirectionDecrement MTR_PROVISIONALLY_AVAILABLE = 0x00,
+    MTRColorControlColorLoopDirectionIncrement MTR_PROVISIONALLY_AVAILABLE = 0x01,
+} MTR_PROVISIONALLY_AVAILABLE;
 
 typedef NS_ENUM(uint8_t, MTRColorControlColorMode) {
-    MTRColorControlColorModeCurrentHueAndCurrentSaturation MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x00,
-    MTRColorControlColorModeCurrentXAndCurrentY MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x01,
-    MTRColorControlColorModeColorTemperature MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x02,
-} MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+    MTRColorControlColorModeCurrentHueAndCurrentSaturation MTR_PROVISIONALLY_AVAILABLE = 0x00,
+    MTRColorControlColorModeCurrentXAndCurrentY MTR_PROVISIONALLY_AVAILABLE = 0x01,
+    MTRColorControlColorModeColorTemperatureMireds MTR_PROVISIONALLY_AVAILABLE = 0x02,
+} MTR_PROVISIONALLY_AVAILABLE;
 
-typedef NS_ENUM(uint8_t, MTRColorControlHueDirection) {
-    MTRColorControlHueDirectionShortestDistance MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x00,
-    MTRColorControlHueDirectionLongestDistance MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x01,
-    MTRColorControlHueDirectionUp MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x02,
-    MTRColorControlHueDirectionDown MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x03,
-} MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+typedef NS_ENUM(uint8_t, MTRColorControlDirection) {
+    MTRColorControlDirectionShortest MTR_PROVISIONALLY_AVAILABLE = 0x00,
+    MTRColorControlDirectionLongest MTR_PROVISIONALLY_AVAILABLE = 0x01,
+    MTRColorControlDirectionUp MTR_PROVISIONALLY_AVAILABLE = 0x02,
+    MTRColorControlDirectionDown MTR_PROVISIONALLY_AVAILABLE = 0x03,
+} MTR_PROVISIONALLY_AVAILABLE;
 
-typedef NS_ENUM(uint8_t, MTRColorControlHueMoveMode) {
-    MTRColorControlHueMoveModeStop MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x00,
-    MTRColorControlHueMoveModeUp MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x01,
-    MTRColorControlHueMoveModeDown MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x03,
-} MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+typedef NS_ENUM(uint8_t, MTRColorControlDriftCompensation) {
+    MTRColorControlDriftCompensationNone MTR_PROVISIONALLY_AVAILABLE = 0x00,
+    MTRColorControlDriftCompensationOtherOrUnknown MTR_PROVISIONALLY_AVAILABLE = 0x01,
+    MTRColorControlDriftCompensationTemperaturemonitoring MTR_PROVISIONALLY_AVAILABLE = 0x02,
+    MTRColorControlDriftCompensationOpticalLuminanceMonitoringAndFeedback MTR_PROVISIONALLY_AVAILABLE = 0x03,
+    MTRColorControlDriftCompensationOpticalColorMonitoringAndFeedback MTR_PROVISIONALLY_AVAILABLE = 0x04,
+} MTR_PROVISIONALLY_AVAILABLE;
 
-typedef NS_ENUM(uint8_t, MTRColorControlHueStepMode) {
-    MTRColorControlHueStepModeUp MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x01,
-    MTRColorControlHueStepModeDown MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x03,
-} MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+typedef NS_ENUM(uint8_t, MTRColorControlEnhancedColorMode) {
+    MTRColorControlEnhancedColorModeCurrentHueAndCurrentSaturation MTR_PROVISIONALLY_AVAILABLE = 0x00,
+    MTRColorControlEnhancedColorModeCurrentXAndCurrentY MTR_PROVISIONALLY_AVAILABLE = 0x01,
+    MTRColorControlEnhancedColorModeColorTemperatureMireds MTR_PROVISIONALLY_AVAILABLE = 0x02,
+    MTRColorControlEnhancedColorModeEnhancedCurrentHueAndCurrentSaturation MTR_PROVISIONALLY_AVAILABLE = 0x03,
+} MTR_PROVISIONALLY_AVAILABLE;
 
-typedef NS_ENUM(uint8_t, MTRColorControlSaturationMoveMode) {
-    MTRColorControlSaturationMoveModeStop MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x00,
-    MTRColorControlSaturationMoveModeUp MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x01,
-    MTRColorControlSaturationMoveModeDown MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x03,
-} MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+typedef NS_ENUM(uint8_t, MTRColorControlMoveMode) {
+    MTRColorControlMoveModeStop MTR_PROVISIONALLY_AVAILABLE = 0x00,
+    MTRColorControlMoveModeUp MTR_PROVISIONALLY_AVAILABLE = 0x01,
+    MTRColorControlMoveModeDown MTR_PROVISIONALLY_AVAILABLE = 0x03,
+} MTR_PROVISIONALLY_AVAILABLE;
 
-typedef NS_ENUM(uint8_t, MTRColorControlSaturationStepMode) {
-    MTRColorControlSaturationStepModeUp MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x01,
-    MTRColorControlSaturationStepModeDown MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x03,
-} MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+typedef NS_ENUM(uint8_t, MTRColorControlStepMode) {
+    MTRColorControlStepModeUp MTR_PROVISIONALLY_AVAILABLE = 0x01,
+    MTRColorControlStepModeDown MTR_PROVISIONALLY_AVAILABLE = 0x03,
+} MTR_PROVISIONALLY_AVAILABLE;
 
-typedef NS_OPTIONS(uint16_t, MTRColorControlColorCapabilities) {
-    MTRColorControlColorCapabilitiesHueSaturationSupported MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x1,
-    MTRColorControlColorCapabilitiesEnhancedHueSupported MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x2,
-    MTRColorControlColorCapabilitiesColorLoopSupported MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x4,
-    MTRColorControlColorCapabilitiesXYAttributesSupported MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x8,
-    MTRColorControlColorCapabilitiesColorTemperatureSupported MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x10,
-} MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+typedef NS_OPTIONS(uint16_t, MTRColorControlColorCapabilitiesBitmap) {
+    MTRColorControlColorCapabilitiesBitmapHueSaturation MTR_PROVISIONALLY_AVAILABLE = 0x1,
+    MTRColorControlColorCapabilitiesBitmapEnhancedHue MTR_PROVISIONALLY_AVAILABLE = 0x2,
+    MTRColorControlColorCapabilitiesBitmapColorLoop MTR_PROVISIONALLY_AVAILABLE = 0x4,
+    MTRColorControlColorCapabilitiesBitmapXY MTR_PROVISIONALLY_AVAILABLE = 0x8,
+    MTRColorControlColorCapabilitiesBitmapColorTemperature MTR_PROVISIONALLY_AVAILABLE = 0x10,
+} MTR_PROVISIONALLY_AVAILABLE;
 
-typedef NS_OPTIONS(uint8_t, MTRColorControlColorLoopUpdateFlags) {
-    MTRColorControlColorLoopUpdateFlagsUpdateAction MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x1,
-    MTRColorControlColorLoopUpdateFlagsUpdateDirection MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x2,
-    MTRColorControlColorLoopUpdateFlagsUpdateTime MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x4,
-    MTRColorControlColorLoopUpdateFlagsUpdateStartHue MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x8,
-} MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+typedef NS_OPTIONS(uint8_t, MTRColorControlOptionsBitmap) {
+    MTRColorControlOptionsBitmapExecuteIfOff MTR_PROVISIONALLY_AVAILABLE = 0x1,
+} MTR_PROVISIONALLY_AVAILABLE;
 
-typedef NS_OPTIONS(uint32_t, MTRColorControlFeature) {
-    MTRColorControlFeatureHueAndSaturation MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x1,
-    MTRColorControlFeatureEnhancedHue MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x2,
-    MTRColorControlFeatureColorLoop MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x4,
-    MTRColorControlFeatureXY MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x8,
-    MTRColorControlFeatureColorTemperature MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1)) = 0x10,
-} MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+typedef NS_OPTIONS(uint8_t, MTRColorControlUpdateFlagsBitmap) {
+    MTRColorControlUpdateFlagsBitmapUpdateAction MTR_PROVISIONALLY_AVAILABLE = 0x1,
+    MTRColorControlUpdateFlagsBitmapUpdateDirection MTR_PROVISIONALLY_AVAILABLE = 0x2,
+    MTRColorControlUpdateFlagsBitmapUpdateTime MTR_PROVISIONALLY_AVAILABLE = 0x4,
+    MTRColorControlUpdateFlagsBitmapUpdateStartHue MTR_PROVISIONALLY_AVAILABLE = 0x8,
+} MTR_PROVISIONALLY_AVAILABLE;
 
 typedef NS_OPTIONS(uint8_t, MTRBallastConfigurationBallastStatusBitmap) {
     MTRBallastConfigurationBallastStatusBitmapBallastNonOperational MTR_PROVISIONALLY_AVAILABLE = 0x1,
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
index b375488f292fc8..f1d86babc6d974 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
@@ -75167,7 +75167,7 @@ - (void)writeAttributeOptionsWithValue:(NSNumber * _Nonnull)value params:(MTRWri
         ListFreer listFreer;
         using TypeInfo = ColorControl::Attributes::Options::TypeInfo;
         TypeInfo::Type cppValue;
-                cppValue = value.unsignedCharValue;
+                cppValue = static_cast<std::remove_reference_t<decltype(cppValue)>>(value.unsignedCharValue);
 
         chip::Controller::ClusterBase cppCluster(exchangeManager, session, self.endpointID.unsignedShortValue);
         return cppCluster.WriteAttribute<TypeInfo>(cppValue, bridge, successCb, failureCb, timedWriteTimeout); });
diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
index a3e74424d0768b..e8c9d8ad3de2a3 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
+++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
@@ -18241,9 +18241,9 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu
 
 namespace DriftCompensation {
 
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value)
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::DriftCompensationEnum * value)
 {
-    using Traits = NumericAttributeTraits<uint8_t>;
+    using Traits = NumericAttributeTraits<chip::app::Clusters::ColorControl::DriftCompensationEnum>;
     Traits::StorageType temp;
     uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
     Protocols::InteractionModel::Status status =
@@ -18256,9 +18256,9 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val
     *value = Traits::StorageToWorking(temp);
     return status;
 }
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value)
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::DriftCompensationEnum value)
 {
-    using Traits = NumericAttributeTraits<uint8_t>;
+    using Traits = NumericAttributeTraits<chip::app::Clusters::ColorControl::DriftCompensationEnum>;
     if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
     {
         return Protocols::InteractionModel::Status::ConstraintError;
@@ -18337,9 +18337,9 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu
 
 namespace ColorMode {
 
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value)
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::ColorModeEnum * value)
 {
-    using Traits = NumericAttributeTraits<uint8_t>;
+    using Traits = NumericAttributeTraits<chip::app::Clusters::ColorControl::ColorModeEnum>;
     Traits::StorageType temp;
     uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
     Protocols::InteractionModel::Status status =
@@ -18352,9 +18352,9 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val
     *value = Traits::StorageToWorking(temp);
     return status;
 }
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value)
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::ColorModeEnum value)
 {
-    using Traits = NumericAttributeTraits<uint8_t>;
+    using Traits = NumericAttributeTraits<chip::app::Clusters::ColorControl::ColorModeEnum>;
     if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
     {
         return Protocols::InteractionModel::Status::ConstraintError;
@@ -18369,9 +18369,10 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value
 
 namespace Options {
 
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value)
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint,
+                                        chip::BitMask<chip::app::Clusters::ColorControl::OptionsBitmap> * value)
 {
-    using Traits = NumericAttributeTraits<uint8_t>;
+    using Traits = NumericAttributeTraits<chip::BitMask<chip::app::Clusters::ColorControl::OptionsBitmap>>;
     Traits::StorageType temp;
     uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
     Protocols::InteractionModel::Status status =
@@ -18384,9 +18385,10 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val
     *value = Traits::StorageToWorking(temp);
     return status;
 }
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value)
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint,
+                                        chip::BitMask<chip::app::Clusters::ColorControl::OptionsBitmap> value)
 {
-    using Traits = NumericAttributeTraits<uint8_t>;
+    using Traits = NumericAttributeTraits<chip::BitMask<chip::app::Clusters::ColorControl::OptionsBitmap>>;
     if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
     {
         return Protocols::InteractionModel::Status::ConstraintError;
@@ -19613,9 +19615,9 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu
 
 namespace EnhancedColorMode {
 
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value)
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::EnhancedColorModeEnum * value)
 {
-    using Traits = NumericAttributeTraits<uint8_t>;
+    using Traits = NumericAttributeTraits<chip::app::Clusters::ColorControl::EnhancedColorModeEnum>;
     Traits::StorageType temp;
     uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
     Protocols::InteractionModel::Status status =
@@ -19628,9 +19630,9 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val
     *value = Traits::StorageToWorking(temp);
     return status;
 }
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value)
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::EnhancedColorModeEnum value)
 {
-    using Traits = NumericAttributeTraits<uint8_t>;
+    using Traits = NumericAttributeTraits<chip::app::Clusters::ColorControl::EnhancedColorModeEnum>;
     if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
     {
         return Protocols::InteractionModel::Status::ConstraintError;
@@ -19677,9 +19679,10 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value
 
 namespace ColorLoopDirection {
 
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value)
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint,
+                                        chip::app::Clusters::ColorControl::ColorLoopDirectionEnum * value)
 {
-    using Traits = NumericAttributeTraits<uint8_t>;
+    using Traits = NumericAttributeTraits<chip::app::Clusters::ColorControl::ColorLoopDirectionEnum>;
     Traits::StorageType temp;
     uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
     Protocols::InteractionModel::Status status =
@@ -19692,9 +19695,9 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val
     *value = Traits::StorageToWorking(temp);
     return status;
 }
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value)
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::ColorLoopDirectionEnum value)
 {
-    using Traits = NumericAttributeTraits<uint8_t>;
+    using Traits = NumericAttributeTraits<chip::app::Clusters::ColorControl::ColorLoopDirectionEnum>;
     if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
     {
         return Protocols::InteractionModel::Status::ConstraintError;
@@ -19702,7 +19705,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value
     Traits::StorageType storageValue;
     Traits::WorkingToStorage(value, storageValue);
     uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
-    return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_INT8U_ATTRIBUTE_TYPE);
+    return emberAfWriteAttribute(endpoint, Clusters::ColorControl::Id, Id, writable, ZCL_ENUM8_ATTRIBUTE_TYPE);
 }
 
 } // namespace ColorLoopDirection
@@ -19805,9 +19808,10 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu
 
 namespace ColorCapabilities {
 
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value)
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint,
+                                        chip::BitMask<chip::app::Clusters::ColorControl::ColorCapabilitiesBitmap> * value)
 {
-    using Traits = NumericAttributeTraits<uint16_t>;
+    using Traits = NumericAttributeTraits<chip::BitMask<chip::app::Clusters::ColorControl::ColorCapabilitiesBitmap>>;
     Traits::StorageType temp;
     uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
     Protocols::InteractionModel::Status status =
@@ -19820,9 +19824,10 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * va
     *value = Traits::StorageToWorking(temp);
     return status;
 }
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value)
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint,
+                                        chip::BitMask<chip::app::Clusters::ColorControl::ColorCapabilitiesBitmap> value)
 {
-    using Traits = NumericAttributeTraits<uint16_t>;
+    using Traits = NumericAttributeTraits<chip::BitMask<chip::app::Clusters::ColorControl::ColorCapabilitiesBitmap>>;
     if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
     {
         return Protocols::InteractionModel::Status::ConstraintError;
diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
index 3a35e3511a6747..bf73c16d56b618 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
+++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
@@ -3360,8 +3360,9 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu
 } // namespace CurrentY
 
 namespace DriftCompensation {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // enum8
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value);
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint,
+                                        chip::app::Clusters::ColorControl::DriftCompensationEnum * value); // DriftCompensationEnum
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::DriftCompensationEnum value);
 } // namespace DriftCompensation
 
 namespace CompensationText {
@@ -3375,13 +3376,16 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu
 } // namespace ColorTemperatureMireds
 
 namespace ColorMode {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // enum8
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value);
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint,
+                                        chip::app::Clusters::ColorControl::ColorModeEnum * value); // ColorModeEnum
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::ColorModeEnum value);
 } // namespace ColorMode
 
 namespace Options {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // bitmap8
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value);
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint,
+                                        chip::BitMask<chip::app::Clusters::ColorControl::OptionsBitmap> * value); // OptionsBitmap
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint,
+                                        chip::BitMask<chip::app::Clusters::ColorControl::OptionsBitmap> value);
 } // namespace Options
 
 namespace NumberOfPrimaries {
@@ -3560,8 +3564,9 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu
 } // namespace EnhancedCurrentHue
 
 namespace EnhancedColorMode {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // enum8
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value);
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint,
+                                        chip::app::Clusters::ColorControl::EnhancedColorModeEnum * value); // EnhancedColorModeEnum
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::EnhancedColorModeEnum value);
 } // namespace EnhancedColorMode
 
 namespace ColorLoopActive {
@@ -3570,8 +3575,9 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value
 } // namespace ColorLoopActive
 
 namespace ColorLoopDirection {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // int8u
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value);
+Protocols::InteractionModel::Status
+Get(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::ColorLoopDirectionEnum * value); // ColorLoopDirectionEnum
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, chip::app::Clusters::ColorControl::ColorLoopDirectionEnum value);
 } // namespace ColorLoopDirection
 
 namespace ColorLoopTime {
@@ -3590,8 +3596,11 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t valu
 } // namespace ColorLoopStoredEnhancedHue
 
 namespace ColorCapabilities {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint16_t * value); // bitmap16
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint16_t value);
+Protocols::InteractionModel::Status
+Get(chip::EndpointId endpoint,
+    chip::BitMask<chip::app::Clusters::ColorControl::ColorCapabilitiesBitmap> * value); // ColorCapabilitiesBitmap
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint,
+                                        chip::BitMask<chip::app::Clusters::ColorControl::ColorCapabilitiesBitmap> value);
 } // namespace ColorCapabilities
 
 namespace ColorTempPhysicalMinMireds {
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h
index ca25c08c748e0c..8f7eaad55a57d6 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h
@@ -2576,9 +2576,9 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(ThermostatUserInterface
     }
 }
 
-static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::ColorLoopAction val)
+static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::ColorLoopActionEnum val)
 {
-    using EnumType = ColorControl::ColorLoopAction;
+    using EnumType = ColorControl::ColorLoopActionEnum;
     switch (val)
     {
     case EnumType::kDeactivate:
@@ -2589,38 +2589,38 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::ColorLoop
         return EnumType::kUnknownEnumValue;
     }
 }
-static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::ColorLoopDirection val)
+static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::ColorLoopDirectionEnum val)
 {
-    using EnumType = ColorControl::ColorLoopDirection;
+    using EnumType = ColorControl::ColorLoopDirectionEnum;
     switch (val)
     {
-    case EnumType::kDecrementHue:
-    case EnumType::kIncrementHue:
+    case EnumType::kDecrement:
+    case EnumType::kIncrement:
         return val;
     default:
         return EnumType::kUnknownEnumValue;
     }
 }
-static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::ColorMode val)
+static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::ColorModeEnum val)
 {
-    using EnumType = ColorControl::ColorMode;
+    using EnumType = ColorControl::ColorModeEnum;
     switch (val)
     {
     case EnumType::kCurrentHueAndCurrentSaturation:
     case EnumType::kCurrentXAndCurrentY:
-    case EnumType::kColorTemperature:
+    case EnumType::kColorTemperatureMireds:
         return val;
     default:
         return EnumType::kUnknownEnumValue;
     }
 }
-static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::HueDirection val)
+static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::DirectionEnum val)
 {
-    using EnumType = ColorControl::HueDirection;
+    using EnumType = ColorControl::DirectionEnum;
     switch (val)
     {
-    case EnumType::kShortestDistance:
-    case EnumType::kLongestDistance:
+    case EnumType::kShortest:
+    case EnumType::kLongest:
     case EnumType::kUp:
     case EnumType::kDown:
         return val;
@@ -2628,34 +2628,38 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::HueDirect
         return EnumType::kUnknownEnumValue;
     }
 }
-static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::HueMoveMode val)
+static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::DriftCompensationEnum val)
 {
-    using EnumType = ColorControl::HueMoveMode;
+    using EnumType = ColorControl::DriftCompensationEnum;
     switch (val)
     {
-    case EnumType::kStop:
-    case EnumType::kUp:
-    case EnumType::kDown:
+    case EnumType::kNone:
+    case EnumType::kOtherOrUnknown:
+    case EnumType::kTemperaturemonitoring:
+    case EnumType::kOpticalLuminanceMonitoringAndFeedback:
+    case EnumType::kOpticalColorMonitoringAndFeedback:
         return val;
     default:
         return EnumType::kUnknownEnumValue;
     }
 }
-static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::HueStepMode val)
+static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::EnhancedColorModeEnum val)
 {
-    using EnumType = ColorControl::HueStepMode;
+    using EnumType = ColorControl::EnhancedColorModeEnum;
     switch (val)
     {
-    case EnumType::kUp:
-    case EnumType::kDown:
+    case EnumType::kCurrentHueAndCurrentSaturation:
+    case EnumType::kCurrentXAndCurrentY:
+    case EnumType::kColorTemperatureMireds:
+    case EnumType::kEnhancedCurrentHueAndCurrentSaturation:
         return val;
     default:
         return EnumType::kUnknownEnumValue;
     }
 }
-static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::SaturationMoveMode val)
+static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::MoveModeEnum val)
 {
-    using EnumType = ColorControl::SaturationMoveMode;
+    using EnumType = ColorControl::MoveModeEnum;
     switch (val)
     {
     case EnumType::kStop:
@@ -2666,9 +2670,9 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::Saturatio
         return EnumType::kUnknownEnumValue;
     }
 }
-static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::SaturationStepMode val)
+static auto __attribute__((unused)) EnsureKnownEnumValue(ColorControl::StepModeEnum val)
 {
-    using EnumType = ColorControl::SaturationStepMode;
+    using EnumType = ColorControl::StepModeEnum;
     switch (val)
     {
     case EnumType::kUp:
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
index 42a54b95ee944f..12d50369c507a4 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
@@ -3900,8 +3900,8 @@ enum class TemperatureDisplayModeEnum : uint8_t
 
 namespace ColorControl {
 
-// Enum for ColorLoopAction
-enum class ColorLoopAction : uint8_t
+// Enum for ColorLoopActionEnum
+enum class ColorLoopActionEnum : uint8_t
 {
     kDeactivate                            = 0x00,
     kActivateFromColorLoopStartEnhancedHue = 0x01,
@@ -3913,11 +3913,11 @@ enum class ColorLoopAction : uint8_t
     kUnknownEnumValue = 3,
 };
 
-// Enum for ColorLoopDirection
-enum class ColorLoopDirection : uint8_t
+// Enum for ColorLoopDirectionEnum
+enum class ColorLoopDirectionEnum : uint8_t
 {
-    kDecrementHue = 0x00,
-    kIncrementHue = 0x01,
+    kDecrement = 0x00,
+    kIncrement = 0x01,
     // All received enum values that are not listed above will be mapped
     // to kUnknownEnumValue. This is a helper enum value that should only
     // be used by code to process how it handles receiving and unknown
@@ -3925,12 +3925,12 @@ enum class ColorLoopDirection : uint8_t
     kUnknownEnumValue = 2,
 };
 
-// Enum for ColorMode
-enum class ColorMode : uint8_t
+// Enum for ColorModeEnum
+enum class ColorModeEnum : uint8_t
 {
     kCurrentHueAndCurrentSaturation = 0x00,
     kCurrentXAndCurrentY            = 0x01,
-    kColorTemperature               = 0x02,
+    kColorTemperatureMireds         = 0x02,
     // All received enum values that are not listed above will be mapped
     // to kUnknownEnumValue. This is a helper enum value that should only
     // be used by code to process how it handles receiving and unknown
@@ -3938,13 +3938,13 @@ enum class ColorMode : uint8_t
     kUnknownEnumValue = 3,
 };
 
-// Enum for HueDirection
-enum class HueDirection : uint8_t
+// Enum for DirectionEnum
+enum class DirectionEnum : uint8_t
 {
-    kShortestDistance = 0x00,
-    kLongestDistance  = 0x01,
-    kUp               = 0x02,
-    kDown             = 0x03,
+    kShortest = 0x00,
+    kLongest  = 0x01,
+    kUp       = 0x02,
+    kDown     = 0x03,
     // All received enum values that are not listed above will be mapped
     // to kUnknownEnumValue. This is a helper enum value that should only
     // be used by code to process how it handles receiving and unknown
@@ -3952,33 +3952,37 @@ enum class HueDirection : uint8_t
     kUnknownEnumValue = 4,
 };
 
-// Enum for HueMoveMode
-enum class HueMoveMode : uint8_t
+// Enum for DriftCompensationEnum
+enum class DriftCompensationEnum : uint8_t
 {
-    kStop = 0x00,
-    kUp   = 0x01,
-    kDown = 0x03,
+    kNone                                  = 0x00,
+    kOtherOrUnknown                        = 0x01,
+    kTemperaturemonitoring                 = 0x02,
+    kOpticalLuminanceMonitoringAndFeedback = 0x03,
+    kOpticalColorMonitoringAndFeedback     = 0x04,
     // All received enum values that are not listed above will be mapped
     // to kUnknownEnumValue. This is a helper enum value that should only
     // be used by code to process how it handles receiving and unknown
     // enum value. This specific should never be transmitted.
-    kUnknownEnumValue = 2,
+    kUnknownEnumValue = 5,
 };
 
-// Enum for HueStepMode
-enum class HueStepMode : uint8_t
+// Enum for EnhancedColorModeEnum
+enum class EnhancedColorModeEnum : uint8_t
 {
-    kUp   = 0x01,
-    kDown = 0x03,
+    kCurrentHueAndCurrentSaturation         = 0x00,
+    kCurrentXAndCurrentY                    = 0x01,
+    kColorTemperatureMireds                 = 0x02,
+    kEnhancedCurrentHueAndCurrentSaturation = 0x03,
     // All received enum values that are not listed above will be mapped
     // to kUnknownEnumValue. This is a helper enum value that should only
     // be used by code to process how it handles receiving and unknown
     // enum value. This specific should never be transmitted.
-    kUnknownEnumValue = 0,
+    kUnknownEnumValue = 4,
 };
 
-// Enum for SaturationMoveMode
-enum class SaturationMoveMode : uint8_t
+// Enum for MoveModeEnum
+enum class MoveModeEnum : uint8_t
 {
     kStop = 0x00,
     kUp   = 0x01,
@@ -3990,8 +3994,8 @@ enum class SaturationMoveMode : uint8_t
     kUnknownEnumValue = 2,
 };
 
-// Enum for SaturationStepMode
-enum class SaturationStepMode : uint8_t
+// Enum for StepModeEnum
+enum class StepModeEnum : uint8_t
 {
     kUp   = 0x01,
     kDown = 0x03,
@@ -4002,34 +4006,30 @@ enum class SaturationStepMode : uint8_t
     kUnknownEnumValue = 0,
 };
 
-// Bitmap for ColorCapabilities
-enum class ColorCapabilities : uint16_t
+// Bitmap for ColorCapabilitiesBitmap
+enum class ColorCapabilitiesBitmap : uint16_t
 {
-    kHueSaturationSupported    = 0x1,
-    kEnhancedHueSupported      = 0x2,
-    kColorLoopSupported        = 0x4,
-    kXYAttributesSupported     = 0x8,
-    kColorTemperatureSupported = 0x10,
+    kHueSaturation    = 0x1,
+    kEnhancedHue      = 0x2,
+    kColorLoop        = 0x4,
+    kXy               = 0x8,
+    kColorTemperature = 0x10,
+};
+
+// Bitmap for OptionsBitmap
+enum class OptionsBitmap : uint8_t
+{
+    kExecuteIfOff = 0x1,
 };
 
-// Bitmap for ColorLoopUpdateFlags
-enum class ColorLoopUpdateFlags : uint8_t
+// Bitmap for UpdateFlagsBitmap
+enum class UpdateFlagsBitmap : uint8_t
 {
     kUpdateAction    = 0x1,
     kUpdateDirection = 0x2,
     kUpdateTime      = 0x4,
     kUpdateStartHue  = 0x8,
 };
-
-// Bitmap for Feature
-enum class Feature : uint32_t
-{
-    kHueAndSaturation = 0x1,
-    kEnhancedHue      = 0x2,
-    kColorLoop        = 0x4,
-    kXy               = 0x8,
-    kColorTemperature = 0x10,
-};
 } // namespace ColorControl
 
 namespace BallastConfiguration {
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
index 89c36f3c6f147d..7f1f71b65e3405 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
@@ -30149,7 +30149,7 @@ struct Type
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
     uint8_t hue             = static_cast<uint8_t>(0);
-    HueDirection direction  = static_cast<HueDirection>(0);
+    DirectionEnum direction = static_cast<DirectionEnum>(0);
     uint16_t transitionTime = static_cast<uint16_t>(0);
     uint8_t optionsMask     = static_cast<uint8_t>(0);
     uint8_t optionsOverride = static_cast<uint8_t>(0);
@@ -30168,7 +30168,7 @@ struct DecodableType
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
     uint8_t hue             = static_cast<uint8_t>(0);
-    HueDirection direction  = static_cast<HueDirection>(0);
+    DirectionEnum direction = static_cast<DirectionEnum>(0);
     uint16_t transitionTime = static_cast<uint16_t>(0);
     uint8_t optionsMask     = static_cast<uint8_t>(0);
     uint8_t optionsOverride = static_cast<uint8_t>(0);
@@ -30191,7 +30191,7 @@ struct Type
     static constexpr CommandId GetCommandId() { return Commands::MoveHue::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    HueMoveMode moveMode    = static_cast<HueMoveMode>(0);
+    MoveModeEnum moveMode   = static_cast<MoveModeEnum>(0);
     uint8_t rate            = static_cast<uint8_t>(0);
     uint8_t optionsMask     = static_cast<uint8_t>(0);
     uint8_t optionsOverride = static_cast<uint8_t>(0);
@@ -30209,7 +30209,7 @@ struct DecodableType
     static constexpr CommandId GetCommandId() { return Commands::MoveHue::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    HueMoveMode moveMode    = static_cast<HueMoveMode>(0);
+    MoveModeEnum moveMode   = static_cast<MoveModeEnum>(0);
     uint8_t rate            = static_cast<uint8_t>(0);
     uint8_t optionsMask     = static_cast<uint8_t>(0);
     uint8_t optionsOverride = static_cast<uint8_t>(0);
@@ -30233,7 +30233,7 @@ struct Type
     static constexpr CommandId GetCommandId() { return Commands::StepHue::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    HueStepMode stepMode    = static_cast<HueStepMode>(0);
+    StepModeEnum stepMode   = static_cast<StepModeEnum>(0);
     uint8_t stepSize        = static_cast<uint8_t>(0);
     uint8_t transitionTime  = static_cast<uint8_t>(0);
     uint8_t optionsMask     = static_cast<uint8_t>(0);
@@ -30252,7 +30252,7 @@ struct DecodableType
     static constexpr CommandId GetCommandId() { return Commands::StepHue::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    HueStepMode stepMode    = static_cast<HueStepMode>(0);
+    StepModeEnum stepMode   = static_cast<StepModeEnum>(0);
     uint8_t stepSize        = static_cast<uint8_t>(0);
     uint8_t transitionTime  = static_cast<uint8_t>(0);
     uint8_t optionsMask     = static_cast<uint8_t>(0);
@@ -30317,10 +30317,10 @@ struct Type
     static constexpr CommandId GetCommandId() { return Commands::MoveSaturation::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    SaturationMoveMode moveMode = static_cast<SaturationMoveMode>(0);
-    uint8_t rate                = static_cast<uint8_t>(0);
-    uint8_t optionsMask         = static_cast<uint8_t>(0);
-    uint8_t optionsOverride     = static_cast<uint8_t>(0);
+    MoveModeEnum moveMode   = static_cast<MoveModeEnum>(0);
+    uint8_t rate            = static_cast<uint8_t>(0);
+    uint8_t optionsMask     = static_cast<uint8_t>(0);
+    uint8_t optionsOverride = static_cast<uint8_t>(0);
 
     CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
 
@@ -30335,10 +30335,10 @@ struct DecodableType
     static constexpr CommandId GetCommandId() { return Commands::MoveSaturation::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    SaturationMoveMode moveMode = static_cast<SaturationMoveMode>(0);
-    uint8_t rate                = static_cast<uint8_t>(0);
-    uint8_t optionsMask         = static_cast<uint8_t>(0);
-    uint8_t optionsOverride     = static_cast<uint8_t>(0);
+    MoveModeEnum moveMode   = static_cast<MoveModeEnum>(0);
+    uint8_t rate            = static_cast<uint8_t>(0);
+    uint8_t optionsMask     = static_cast<uint8_t>(0);
+    uint8_t optionsOverride = static_cast<uint8_t>(0);
     CHIP_ERROR Decode(TLV::TLVReader & reader);
 };
 }; // namespace MoveSaturation
@@ -30359,11 +30359,11 @@ struct Type
     static constexpr CommandId GetCommandId() { return Commands::StepSaturation::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    SaturationStepMode stepMode = static_cast<SaturationStepMode>(0);
-    uint8_t stepSize            = static_cast<uint8_t>(0);
-    uint8_t transitionTime      = static_cast<uint8_t>(0);
-    uint8_t optionsMask         = static_cast<uint8_t>(0);
-    uint8_t optionsOverride     = static_cast<uint8_t>(0);
+    StepModeEnum stepMode   = static_cast<StepModeEnum>(0);
+    uint8_t stepSize        = static_cast<uint8_t>(0);
+    uint8_t transitionTime  = static_cast<uint8_t>(0);
+    uint8_t optionsMask     = static_cast<uint8_t>(0);
+    uint8_t optionsOverride = static_cast<uint8_t>(0);
 
     CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
 
@@ -30378,11 +30378,11 @@ struct DecodableType
     static constexpr CommandId GetCommandId() { return Commands::StepSaturation::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    SaturationStepMode stepMode = static_cast<SaturationStepMode>(0);
-    uint8_t stepSize            = static_cast<uint8_t>(0);
-    uint8_t transitionTime      = static_cast<uint8_t>(0);
-    uint8_t optionsMask         = static_cast<uint8_t>(0);
-    uint8_t optionsOverride     = static_cast<uint8_t>(0);
+    StepModeEnum stepMode   = static_cast<StepModeEnum>(0);
+    uint8_t stepSize        = static_cast<uint8_t>(0);
+    uint8_t transitionTime  = static_cast<uint8_t>(0);
+    uint8_t optionsMask     = static_cast<uint8_t>(0);
+    uint8_t optionsOverride = static_cast<uint8_t>(0);
     CHIP_ERROR Decode(TLV::TLVReader & reader);
 };
 }; // namespace StepSaturation
@@ -30618,7 +30618,7 @@ struct Type
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
     uint16_t enhancedHue    = static_cast<uint16_t>(0);
-    HueDirection direction  = static_cast<HueDirection>(0);
+    DirectionEnum direction = static_cast<DirectionEnum>(0);
     uint16_t transitionTime = static_cast<uint16_t>(0);
     uint8_t optionsMask     = static_cast<uint8_t>(0);
     uint8_t optionsOverride = static_cast<uint8_t>(0);
@@ -30637,7 +30637,7 @@ struct DecodableType
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
     uint16_t enhancedHue    = static_cast<uint16_t>(0);
-    HueDirection direction  = static_cast<HueDirection>(0);
+    DirectionEnum direction = static_cast<DirectionEnum>(0);
     uint16_t transitionTime = static_cast<uint16_t>(0);
     uint8_t optionsMask     = static_cast<uint8_t>(0);
     uint8_t optionsOverride = static_cast<uint8_t>(0);
@@ -30660,7 +30660,7 @@ struct Type
     static constexpr CommandId GetCommandId() { return Commands::EnhancedMoveHue::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    HueMoveMode moveMode    = static_cast<HueMoveMode>(0);
+    MoveModeEnum moveMode   = static_cast<MoveModeEnum>(0);
     uint16_t rate           = static_cast<uint16_t>(0);
     uint8_t optionsMask     = static_cast<uint8_t>(0);
     uint8_t optionsOverride = static_cast<uint8_t>(0);
@@ -30678,7 +30678,7 @@ struct DecodableType
     static constexpr CommandId GetCommandId() { return Commands::EnhancedMoveHue::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    HueMoveMode moveMode    = static_cast<HueMoveMode>(0);
+    MoveModeEnum moveMode   = static_cast<MoveModeEnum>(0);
     uint16_t rate           = static_cast<uint16_t>(0);
     uint8_t optionsMask     = static_cast<uint8_t>(0);
     uint8_t optionsOverride = static_cast<uint8_t>(0);
@@ -30702,7 +30702,7 @@ struct Type
     static constexpr CommandId GetCommandId() { return Commands::EnhancedStepHue::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    HueStepMode stepMode    = static_cast<HueStepMode>(0);
+    StepModeEnum stepMode   = static_cast<StepModeEnum>(0);
     uint16_t stepSize       = static_cast<uint16_t>(0);
     uint16_t transitionTime = static_cast<uint16_t>(0);
     uint8_t optionsMask     = static_cast<uint8_t>(0);
@@ -30721,7 +30721,7 @@ struct DecodableType
     static constexpr CommandId GetCommandId() { return Commands::EnhancedStepHue::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    HueStepMode stepMode    = static_cast<HueStepMode>(0);
+    StepModeEnum stepMode   = static_cast<StepModeEnum>(0);
     uint16_t stepSize       = static_cast<uint16_t>(0);
     uint16_t transitionTime = static_cast<uint16_t>(0);
     uint8_t optionsMask     = static_cast<uint8_t>(0);
@@ -30792,13 +30792,13 @@ struct Type
     static constexpr CommandId GetCommandId() { return Commands::ColorLoopSet::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    chip::BitMask<ColorLoopUpdateFlags> updateFlags = static_cast<chip::BitMask<ColorLoopUpdateFlags>>(0);
-    ColorLoopAction action                          = static_cast<ColorLoopAction>(0);
-    ColorLoopDirection direction                    = static_cast<ColorLoopDirection>(0);
-    uint16_t time                                   = static_cast<uint16_t>(0);
-    uint16_t startHue                               = static_cast<uint16_t>(0);
-    uint8_t optionsMask                             = static_cast<uint8_t>(0);
-    uint8_t optionsOverride                         = static_cast<uint8_t>(0);
+    chip::BitMask<UpdateFlagsBitmap> updateFlags = static_cast<chip::BitMask<UpdateFlagsBitmap>>(0);
+    ColorLoopActionEnum action                   = static_cast<ColorLoopActionEnum>(0);
+    ColorLoopDirectionEnum direction             = static_cast<ColorLoopDirectionEnum>(0);
+    uint16_t time                                = static_cast<uint16_t>(0);
+    uint16_t startHue                            = static_cast<uint16_t>(0);
+    uint8_t optionsMask                          = static_cast<uint8_t>(0);
+    uint8_t optionsOverride                      = static_cast<uint8_t>(0);
 
     CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
 
@@ -30813,13 +30813,13 @@ struct DecodableType
     static constexpr CommandId GetCommandId() { return Commands::ColorLoopSet::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    chip::BitMask<ColorLoopUpdateFlags> updateFlags = static_cast<chip::BitMask<ColorLoopUpdateFlags>>(0);
-    ColorLoopAction action                          = static_cast<ColorLoopAction>(0);
-    ColorLoopDirection direction                    = static_cast<ColorLoopDirection>(0);
-    uint16_t time                                   = static_cast<uint16_t>(0);
-    uint16_t startHue                               = static_cast<uint16_t>(0);
-    uint8_t optionsMask                             = static_cast<uint8_t>(0);
-    uint8_t optionsOverride                         = static_cast<uint8_t>(0);
+    chip::BitMask<UpdateFlagsBitmap> updateFlags = static_cast<chip::BitMask<UpdateFlagsBitmap>>(0);
+    ColorLoopActionEnum action                   = static_cast<ColorLoopActionEnum>(0);
+    ColorLoopDirectionEnum direction             = static_cast<ColorLoopDirectionEnum>(0);
+    uint16_t time                                = static_cast<uint16_t>(0);
+    uint16_t startHue                            = static_cast<uint16_t>(0);
+    uint8_t optionsMask                          = static_cast<uint8_t>(0);
+    uint8_t optionsOverride                      = static_cast<uint8_t>(0);
     CHIP_ERROR Decode(TLV::TLVReader & reader);
 };
 }; // namespace ColorLoopSet
@@ -30876,7 +30876,7 @@ struct Type
     static constexpr CommandId GetCommandId() { return Commands::MoveColorTemperature::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    HueMoveMode moveMode                   = static_cast<HueMoveMode>(0);
+    MoveModeEnum moveMode                  = static_cast<MoveModeEnum>(0);
     uint16_t rate                          = static_cast<uint16_t>(0);
     uint16_t colorTemperatureMinimumMireds = static_cast<uint16_t>(0);
     uint16_t colorTemperatureMaximumMireds = static_cast<uint16_t>(0);
@@ -30896,7 +30896,7 @@ struct DecodableType
     static constexpr CommandId GetCommandId() { return Commands::MoveColorTemperature::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    HueMoveMode moveMode                   = static_cast<HueMoveMode>(0);
+    MoveModeEnum moveMode                  = static_cast<MoveModeEnum>(0);
     uint16_t rate                          = static_cast<uint16_t>(0);
     uint16_t colorTemperatureMinimumMireds = static_cast<uint16_t>(0);
     uint16_t colorTemperatureMaximumMireds = static_cast<uint16_t>(0);
@@ -30924,7 +30924,7 @@ struct Type
     static constexpr CommandId GetCommandId() { return Commands::StepColorTemperature::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    HueStepMode stepMode                   = static_cast<HueStepMode>(0);
+    StepModeEnum stepMode                  = static_cast<StepModeEnum>(0);
     uint16_t stepSize                      = static_cast<uint16_t>(0);
     uint16_t transitionTime                = static_cast<uint16_t>(0);
     uint16_t colorTemperatureMinimumMireds = static_cast<uint16_t>(0);
@@ -30945,7 +30945,7 @@ struct DecodableType
     static constexpr CommandId GetCommandId() { return Commands::StepColorTemperature::Id; }
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
 
-    HueStepMode stepMode                   = static_cast<HueStepMode>(0);
+    StepModeEnum stepMode                  = static_cast<StepModeEnum>(0);
     uint16_t stepSize                      = static_cast<uint16_t>(0);
     uint16_t transitionTime                = static_cast<uint16_t>(0);
     uint16_t colorTemperatureMinimumMireds = static_cast<uint16_t>(0);
@@ -31022,9 +31022,9 @@ struct TypeInfo
 namespace DriftCompensation {
 struct TypeInfo
 {
-    using Type             = uint8_t;
-    using DecodableType    = uint8_t;
-    using DecodableArgType = uint8_t;
+    using Type             = chip::app::Clusters::ColorControl::DriftCompensationEnum;
+    using DecodableType    = chip::app::Clusters::ColorControl::DriftCompensationEnum;
+    using DecodableArgType = chip::app::Clusters::ColorControl::DriftCompensationEnum;
 
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::DriftCompensation::Id; }
@@ -31059,9 +31059,9 @@ struct TypeInfo
 namespace ColorMode {
 struct TypeInfo
 {
-    using Type             = uint8_t;
-    using DecodableType    = uint8_t;
-    using DecodableArgType = uint8_t;
+    using Type             = chip::app::Clusters::ColorControl::ColorModeEnum;
+    using DecodableType    = chip::app::Clusters::ColorControl::ColorModeEnum;
+    using DecodableArgType = chip::app::Clusters::ColorControl::ColorModeEnum;
 
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::ColorMode::Id; }
@@ -31071,9 +31071,9 @@ struct TypeInfo
 namespace Options {
 struct TypeInfo
 {
-    using Type             = uint8_t;
-    using DecodableType    = uint8_t;
-    using DecodableArgType = uint8_t;
+    using Type             = chip::BitMask<chip::app::Clusters::ColorControl::OptionsBitmap>;
+    using DecodableType    = chip::BitMask<chip::app::Clusters::ColorControl::OptionsBitmap>;
+    using DecodableArgType = chip::BitMask<chip::app::Clusters::ColorControl::OptionsBitmap>;
 
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::Options::Id; }
@@ -31455,9 +31455,9 @@ struct TypeInfo
 namespace EnhancedColorMode {
 struct TypeInfo
 {
-    using Type             = uint8_t;
-    using DecodableType    = uint8_t;
-    using DecodableArgType = uint8_t;
+    using Type             = chip::app::Clusters::ColorControl::EnhancedColorModeEnum;
+    using DecodableType    = chip::app::Clusters::ColorControl::EnhancedColorModeEnum;
+    using DecodableArgType = chip::app::Clusters::ColorControl::EnhancedColorModeEnum;
 
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::EnhancedColorMode::Id; }
@@ -31479,9 +31479,9 @@ struct TypeInfo
 namespace ColorLoopDirection {
 struct TypeInfo
 {
-    using Type             = uint8_t;
-    using DecodableType    = uint8_t;
-    using DecodableArgType = uint8_t;
+    using Type             = chip::app::Clusters::ColorControl::ColorLoopDirectionEnum;
+    using DecodableType    = chip::app::Clusters::ColorControl::ColorLoopDirectionEnum;
+    using DecodableArgType = chip::app::Clusters::ColorControl::ColorLoopDirectionEnum;
 
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::ColorLoopDirection::Id; }
@@ -31527,9 +31527,9 @@ struct TypeInfo
 namespace ColorCapabilities {
 struct TypeInfo
 {
-    using Type             = uint16_t;
-    using DecodableType    = uint16_t;
-    using DecodableArgType = uint16_t;
+    using Type             = chip::BitMask<chip::app::Clusters::ColorControl::ColorCapabilitiesBitmap>;
+    using DecodableType    = chip::BitMask<chip::app::Clusters::ColorControl::ColorCapabilitiesBitmap>;
+    using DecodableArgType = chip::BitMask<chip::app::Clusters::ColorControl::ColorCapabilitiesBitmap>;
 
     static constexpr ClusterId GetClusterId() { return Clusters::ColorControl::Id; }
     static constexpr AttributeId GetAttributeId() { return Attributes::ColorCapabilities::Id; }
@@ -31634,11 +31634,13 @@ struct TypeInfo
         Attributes::RemainingTime::TypeInfo::DecodableType remainingTime         = static_cast<uint16_t>(0);
         Attributes::CurrentX::TypeInfo::DecodableType currentX                   = static_cast<uint16_t>(0);
         Attributes::CurrentY::TypeInfo::DecodableType currentY                   = static_cast<uint16_t>(0);
-        Attributes::DriftCompensation::TypeInfo::DecodableType driftCompensation = static_cast<uint8_t>(0);
+        Attributes::DriftCompensation::TypeInfo::DecodableType driftCompensation =
+            static_cast<chip::app::Clusters::ColorControl::DriftCompensationEnum>(0);
         Attributes::CompensationText::TypeInfo::DecodableType compensationText;
         Attributes::ColorTemperatureMireds::TypeInfo::DecodableType colorTemperatureMireds = static_cast<uint16_t>(0);
-        Attributes::ColorMode::TypeInfo::DecodableType colorMode                           = static_cast<uint8_t>(0);
-        Attributes::Options::TypeInfo::DecodableType options                               = static_cast<uint8_t>(0);
+        Attributes::ColorMode::TypeInfo::DecodableType colorMode = static_cast<chip::app::Clusters::ColorControl::ColorModeEnum>(0);
+        Attributes::Options::TypeInfo::DecodableType options =
+            static_cast<chip::BitMask<chip::app::Clusters::ColorControl::OptionsBitmap>>(0);
         Attributes::NumberOfPrimaries::TypeInfo::DecodableType numberOfPrimaries;
         Attributes::Primary1X::TypeInfo::DecodableType primary1X = static_cast<uint16_t>(0);
         Attributes::Primary1Y::TypeInfo::DecodableType primary1Y = static_cast<uint16_t>(0);
@@ -31669,14 +31671,17 @@ struct TypeInfo
         Attributes::ColorPointBX::TypeInfo::DecodableType colorPointBX = static_cast<uint16_t>(0);
         Attributes::ColorPointBY::TypeInfo::DecodableType colorPointBY = static_cast<uint16_t>(0);
         Attributes::ColorPointBIntensity::TypeInfo::DecodableType colorPointBIntensity;
-        Attributes::EnhancedCurrentHue::TypeInfo::DecodableType enhancedCurrentHue                 = static_cast<uint16_t>(0);
-        Attributes::EnhancedColorMode::TypeInfo::DecodableType enhancedColorMode                   = static_cast<uint8_t>(0);
-        Attributes::ColorLoopActive::TypeInfo::DecodableType colorLoopActive                       = static_cast<uint8_t>(0);
-        Attributes::ColorLoopDirection::TypeInfo::DecodableType colorLoopDirection                 = static_cast<uint8_t>(0);
+        Attributes::EnhancedCurrentHue::TypeInfo::DecodableType enhancedCurrentHue = static_cast<uint16_t>(0);
+        Attributes::EnhancedColorMode::TypeInfo::DecodableType enhancedColorMode =
+            static_cast<chip::app::Clusters::ColorControl::EnhancedColorModeEnum>(0);
+        Attributes::ColorLoopActive::TypeInfo::DecodableType colorLoopActive = static_cast<uint8_t>(0);
+        Attributes::ColorLoopDirection::TypeInfo::DecodableType colorLoopDirection =
+            static_cast<chip::app::Clusters::ColorControl::ColorLoopDirectionEnum>(0);
         Attributes::ColorLoopTime::TypeInfo::DecodableType colorLoopTime                           = static_cast<uint16_t>(0);
         Attributes::ColorLoopStartEnhancedHue::TypeInfo::DecodableType colorLoopStartEnhancedHue   = static_cast<uint16_t>(0);
         Attributes::ColorLoopStoredEnhancedHue::TypeInfo::DecodableType colorLoopStoredEnhancedHue = static_cast<uint16_t>(0);
-        Attributes::ColorCapabilities::TypeInfo::DecodableType colorCapabilities                   = static_cast<uint16_t>(0);
+        Attributes::ColorCapabilities::TypeInfo::DecodableType colorCapabilities =
+            static_cast<chip::BitMask<chip::app::Clusters::ColorControl::ColorCapabilitiesBitmap>>(0);
         Attributes::ColorTempPhysicalMinMireds::TypeInfo::DecodableType colorTempPhysicalMinMireds = static_cast<uint16_t>(0);
         Attributes::ColorTempPhysicalMaxMireds::TypeInfo::DecodableType colorTempPhysicalMaxMireds = static_cast<uint16_t>(0);
         Attributes::CoupleColorTempToLevelMinMireds::TypeInfo::DecodableType coupleColorTempToLevelMinMireds =
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
index 8a3081edc0dc1b..39d298e53c8250 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
+++ b/zzz_generated/chip-tool/zap-generated/cluster/Commands.h
@@ -22604,16 +22604,17 @@ void registerClusterColorControl(Commands & commands, CredentialIssuerCommands *
                                               WriteCommandType::kForceWrite, credsIssuerConfig), //
         make_unique<WriteAttribute<uint16_t>>(Id, "current-y", 0, UINT16_MAX, Attributes::CurrentY::Id,
                                               WriteCommandType::kForceWrite, credsIssuerConfig), //
-        make_unique<WriteAttribute<uint8_t>>(Id, "drift-compensation", 0, UINT8_MAX, Attributes::DriftCompensation::Id,
-                                             WriteCommandType::kForceWrite, credsIssuerConfig), //
+        make_unique<WriteAttribute<chip::app::Clusters::ColorControl::DriftCompensationEnum>>(
+            Id, "drift-compensation", 0, UINT8_MAX, Attributes::DriftCompensation::Id, WriteCommandType::kForceWrite,
+            credsIssuerConfig), //
         make_unique<WriteAttribute<chip::CharSpan>>(Id, "compensation-text", Attributes::CompensationText::Id,
                                                     WriteCommandType::kForceWrite, credsIssuerConfig), //
         make_unique<WriteAttribute<uint16_t>>(Id, "color-temperature-mireds", 0, UINT16_MAX, Attributes::ColorTemperatureMireds::Id,
                                               WriteCommandType::kForceWrite, credsIssuerConfig), //
-        make_unique<WriteAttribute<uint8_t>>(Id, "color-mode", 0, UINT8_MAX, Attributes::ColorMode::Id,
-                                             WriteCommandType::kForceWrite, credsIssuerConfig), //
-        make_unique<WriteAttribute<uint8_t>>(Id, "options", 0, UINT8_MAX, Attributes::Options::Id, WriteCommandType::kWrite,
-                                             credsIssuerConfig), //
+        make_unique<WriteAttribute<chip::app::Clusters::ColorControl::ColorModeEnum>>(
+            Id, "color-mode", 0, UINT8_MAX, Attributes::ColorMode::Id, WriteCommandType::kForceWrite, credsIssuerConfig), //
+        make_unique<WriteAttribute<chip::BitMask<chip::app::Clusters::ColorControl::OptionsBitmap>>>(
+            Id, "options", 0, UINT8_MAX, Attributes::Options::Id, WriteCommandType::kWrite, credsIssuerConfig), //
         make_unique<WriteAttribute<chip::app::DataModel::Nullable<uint8_t>>>(Id, "number-of-primaries", 0, UINT8_MAX,
                                                                              Attributes::NumberOfPrimaries::Id,
                                                                              WriteCommandType::kForceWrite, credsIssuerConfig), //
@@ -22686,12 +22687,14 @@ void registerClusterColorControl(Commands & commands, CredentialIssuerCommands *
                                                                              WriteCommandType::kWrite, credsIssuerConfig), //
         make_unique<WriteAttribute<uint16_t>>(Id, "enhanced-current-hue", 0, UINT16_MAX, Attributes::EnhancedCurrentHue::Id,
                                               WriteCommandType::kForceWrite, credsIssuerConfig), //
-        make_unique<WriteAttribute<uint8_t>>(Id, "enhanced-color-mode", 0, UINT8_MAX, Attributes::EnhancedColorMode::Id,
-                                             WriteCommandType::kForceWrite, credsIssuerConfig), //
+        make_unique<WriteAttribute<chip::app::Clusters::ColorControl::EnhancedColorModeEnum>>(
+            Id, "enhanced-color-mode", 0, UINT8_MAX, Attributes::EnhancedColorMode::Id, WriteCommandType::kForceWrite,
+            credsIssuerConfig), //
         make_unique<WriteAttribute<uint8_t>>(Id, "color-loop-active", 0, UINT8_MAX, Attributes::ColorLoopActive::Id,
                                              WriteCommandType::kForceWrite, credsIssuerConfig), //
-        make_unique<WriteAttribute<uint8_t>>(Id, "color-loop-direction", 0, UINT8_MAX, Attributes::ColorLoopDirection::Id,
-                                             WriteCommandType::kForceWrite, credsIssuerConfig), //
+        make_unique<WriteAttribute<chip::app::Clusters::ColorControl::ColorLoopDirectionEnum>>(
+            Id, "color-loop-direction", 0, UINT8_MAX, Attributes::ColorLoopDirection::Id, WriteCommandType::kForceWrite,
+            credsIssuerConfig), //
         make_unique<WriteAttribute<uint16_t>>(Id, "color-loop-time", 0, UINT16_MAX, Attributes::ColorLoopTime::Id,
                                               WriteCommandType::kForceWrite, credsIssuerConfig), //
         make_unique<WriteAttribute<uint16_t>>(Id, "color-loop-start-enhanced-hue", 0, UINT16_MAX,
@@ -22700,8 +22703,9 @@ void registerClusterColorControl(Commands & commands, CredentialIssuerCommands *
         make_unique<WriteAttribute<uint16_t>>(Id, "color-loop-stored-enhanced-hue", 0, UINT16_MAX,
                                               Attributes::ColorLoopStoredEnhancedHue::Id, WriteCommandType::kForceWrite,
                                               credsIssuerConfig), //
-        make_unique<WriteAttribute<uint16_t>>(Id, "color-capabilities", 0, UINT16_MAX, Attributes::ColorCapabilities::Id,
-                                              WriteCommandType::kForceWrite, credsIssuerConfig), //
+        make_unique<WriteAttribute<chip::BitMask<chip::app::Clusters::ColorControl::ColorCapabilitiesBitmap>>>(
+            Id, "color-capabilities", 0, UINT16_MAX, Attributes::ColorCapabilities::Id, WriteCommandType::kForceWrite,
+            credsIssuerConfig), //
         make_unique<WriteAttribute<uint16_t>>(Id, "color-temp-physical-min-mireds", 0, UINT16_MAX,
                                               Attributes::ColorTempPhysicalMinMireds::Id, WriteCommandType::kForceWrite,
                                               credsIssuerConfig), //
diff --git a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
index fde5089bab8a7c..ca50d51eb2ef47 100644
--- a/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
+++ b/zzz_generated/chip-tool/zap-generated/cluster/logging/DataModelLogger.cpp
@@ -14400,7 +14400,7 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP
             return DataModelLogger::LogValue("CurrentY", 1, value);
         }
         case ColorControl::Attributes::DriftCompensation::Id: {
-            uint8_t value;
+            chip::app::Clusters::ColorControl::DriftCompensationEnum value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("DriftCompensation", 1, value);
         }
@@ -14415,12 +14415,12 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP
             return DataModelLogger::LogValue("ColorTemperatureMireds", 1, value);
         }
         case ColorControl::Attributes::ColorMode::Id: {
-            uint8_t value;
+            chip::app::Clusters::ColorControl::ColorModeEnum value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("ColorMode", 1, value);
         }
         case ColorControl::Attributes::Options::Id: {
-            uint8_t value;
+            chip::BitMask<chip::app::Clusters::ColorControl::OptionsBitmap> value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("Options", 1, value);
         }
@@ -14580,7 +14580,7 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP
             return DataModelLogger::LogValue("EnhancedCurrentHue", 1, value);
         }
         case ColorControl::Attributes::EnhancedColorMode::Id: {
-            uint8_t value;
+            chip::app::Clusters::ColorControl::EnhancedColorModeEnum value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("EnhancedColorMode", 1, value);
         }
@@ -14590,7 +14590,7 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP
             return DataModelLogger::LogValue("ColorLoopActive", 1, value);
         }
         case ColorControl::Attributes::ColorLoopDirection::Id: {
-            uint8_t value;
+            chip::app::Clusters::ColorControl::ColorLoopDirectionEnum value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("ColorLoopDirection", 1, value);
         }
@@ -14610,7 +14610,7 @@ CHIP_ERROR DataModelLogger::LogAttribute(const chip::app::ConcreteDataAttributeP
             return DataModelLogger::LogValue("ColorLoopStoredEnhancedHue", 1, value);
         }
         case ColorControl::Attributes::ColorCapabilities::Id: {
-            uint16_t value;
+            chip::BitMask<chip::app::Clusters::ColorControl::ColorCapabilitiesBitmap> value;
             ReturnErrorOnFailure(chip::app::DataModel::Decode(*data, value));
             return DataModelLogger::LogValue("ColorCapabilities", 1, value);
         }

From 4a79d2fce67d761e14ed28dd4e2edc725611b8ec Mon Sep 17 00:00:00 2001
From: Thirupathi S <108743108+Thirsrin@users.noreply.github.com>
Date: Thu, 2 May 2024 19:20:30 +0530
Subject: [PATCH 2/2] [Linux]DGSW_2_3 fails CurrentHeapUsed is greater than
 CurrentHeapHighWatermark (#33252)

* changes to store max heap size

* Restyled by whitespace

* Restyled by clang-format

* typecast changes

---------

Co-authored-by: Restyled.io <commits@restyled.io>
---
 .../Linux/DiagnosticDataProviderImpl.cpp      | 22 ++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/src/platform/Linux/DiagnosticDataProviderImpl.cpp b/src/platform/Linux/DiagnosticDataProviderImpl.cpp
index 74f7003676c051..cc57da65e2d036 100644
--- a/src/platform/Linux/DiagnosticDataProviderImpl.cpp
+++ b/src/platform/Linux/DiagnosticDataProviderImpl.cpp
@@ -74,6 +74,9 @@ enum class WiFiStatsCountType
     kWiFiOverrunCount
 };
 
+// Static variable to store the maximum heap size
+static size_t maxHeapHighWatermark = 0;
+
 CHIP_ERROR GetEthernetStatsCount(EthernetStatsCountType type, uint64_t & count)
 {
     CHIP_ERROR err          = CHIP_ERROR_READ_FAILED;
@@ -244,6 +247,11 @@ CHIP_ERROR DiagnosticDataProviderImpl::GetCurrentHeapUsed(uint64_t & currentHeap
     // the current running program.
     currentHeapUsed = mallocInfo.uordblks;
 
+    // Update the maximum heap high watermark if the current heap usage exceeds it.
+    if (currentHeapUsed > maxHeapHighWatermark)
+    {
+        maxHeapHighWatermark = currentHeapUsed;
+    }
     return CHIP_NO_ERROR;
 #endif
 }
@@ -260,9 +268,15 @@ CHIP_ERROR DiagnosticDataProviderImpl::GetCurrentHeapHighWatermark(uint64_t & cu
     // has been used by the Node.
     // On Linux, since it uses virtual memory, whereby a page of memory could be copied to
     // the hard disk, called swap space, and free up that page of memory. So it is impossible
-    // to know accurately peak physical memory it use. We just return the current heap memory
-    // being used by the current running program.
-    currentHeapHighWatermark = mallocInfo.uordblks;
+    // to know accurately peak physical memory it use.
+    // Update the maximum heap high watermark if the current heap usage exceeds it.
+    if (mallocInfo.uordblks > static_cast<int>(maxHeapHighWatermark))
+    {
+        maxHeapHighWatermark = mallocInfo.uordblks;
+    }
+
+    // Set the current heap high watermark.
+    currentHeapHighWatermark = maxHeapHighWatermark;
 
     return CHIP_NO_ERROR;
 #endif
@@ -275,6 +289,8 @@ CHIP_ERROR DiagnosticDataProviderImpl::ResetWatermarks()
 
     // On Linux, the write operation is non-op since we always rely on the mallinfo system
     // function to get the current heap memory.
+    struct mallinfo mallocInfo = mallinfo();
+    maxHeapHighWatermark       = mallocInfo.uordblks;
 
     return CHIP_NO_ERROR;
 }