From 23690356ff3686839a65a9bd78a4dd2a26aa177b Mon Sep 17 00:00:00 2001
From: lpbeliveau-silabs <112982107+lpbeliveau-silabs@users.noreply.github.com>
Date: Tue, 10 Oct 2023 19:56:22 -0400
Subject: [PATCH] [Scenes] Fix Yaml 2_1 to 2_4 to enable on CI (#29569)

* Activating scenes yaml tests on CI now that the level control cluster handler is implemented

* Restyled by whitespace

* Restyled by prettier-yaml

* Used G1 instead of raw value where possible, modified TC_S_1_1 to be more spec compliant

* Restyled by prettier-yaml

* Added comments related to issues and remove un-necessary check

* Update src/app/tests/suites/certification/Test_TC_S_1_1.yaml

Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>

* Added access control in yaml 2_3, fixed group key format and values and added bitwise check in 1_1

* Restyled by whitespace

* Restyled by prettier-yaml

* Modified TC_S_2_2 to pass the Store Scene test now that level Control is enabled

* Restyled by prettier-yaml

* Fixed .matter for all clusters app

---------

Co-authored-by: Restyled.io <commits@restyled.io>
Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>
---
 .../all-clusters-app.matter                   |  46 ++++
 .../all-clusters-common/all-clusters-app.zap  | 112 ++++++++
 .../suites/certification/Test_TC_S_1_1.yaml   | 126 +++++----
 .../suites/certification/Test_TC_S_2_1.yaml   |   8 +-
 .../suites/certification/Test_TC_S_2_2.yaml   | 243 +++++++++++-------
 .../suites/certification/Test_TC_S_2_3.yaml   | 128 +++++----
 .../suites/certification/Test_TC_S_2_4.yaml   |  72 +++---
 .../tests/suites/certification/ci-pics-values |  43 ++--
 8 files changed, 484 insertions(+), 294 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 571df50b00f891..c3bfa2be8b54c2 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
@@ -191,6 +191,27 @@ server cluster Scenes = 5 {
     group_id groupID = 0;
   }
 
+  request struct EnhancedAddSceneRequest {
+    group_id groupID = 0;
+    INT8U sceneID = 1;
+    INT16U transitionTime = 2;
+    CHAR_STRING sceneName = 3;
+    ExtensionFieldSet extensionFieldSets[] = 4;
+  }
+
+  request struct EnhancedViewSceneRequest {
+    group_id groupID = 0;
+    INT8U sceneID = 1;
+  }
+
+  request struct CopySceneRequest {
+    ScenesCopyMode mode = 0;
+    group_id groupIdentifierFrom = 1;
+    INT8U sceneIdentifierFrom = 2;
+    group_id groupIdentifierTo = 3;
+    INT8U sceneIdentifierTo = 4;
+  }
+
   response struct AddSceneResponse = 0 {
     status status = 0;
     group_id groupID = 1;
@@ -230,6 +251,27 @@ server cluster Scenes = 5 {
     optional INT8U sceneList[] = 3;
   }
 
+  response struct EnhancedAddSceneResponse = 64 {
+    status status = 0;
+    group_id groupID = 1;
+    INT8U sceneID = 2;
+  }
+
+  response struct EnhancedViewSceneResponse = 65 {
+    status status = 0;
+    group_Id groupID = 1;
+    INT8U sceneID = 2;
+    optional INT16U transitionTime = 3;
+    optional CHAR_STRING sceneName = 4;
+    optional ExtensionFieldSet extensionFieldSets[] = 5;
+  }
+
+  response struct CopySceneResponse = 66 {
+    status status = 0;
+    group_Id groupIdentifierFrom = 1;
+    INT8U sceneIdentifierFrom = 2;
+  }
+
   fabric command access(invoke: manage) AddScene(AddSceneRequest): AddSceneResponse = 0;
   fabric command ViewScene(ViewSceneRequest): ViewSceneResponse = 1;
   fabric command access(invoke: manage) RemoveScene(RemoveSceneRequest): RemoveSceneResponse = 2;
@@ -237,6 +279,9 @@ server cluster Scenes = 5 {
   fabric command access(invoke: manage) StoreScene(StoreSceneRequest): StoreSceneResponse = 4;
   fabric command RecallScene(RecallSceneRequest): DefaultSuccess = 5;
   fabric command GetSceneMembership(GetSceneMembershipRequest): GetSceneMembershipResponse = 6;
+  fabric command EnhancedAddScene(EnhancedAddSceneRequest): EnhancedAddSceneResponse = 64;
+  fabric command EnhancedViewScene(EnhancedViewSceneRequest): EnhancedViewSceneResponse = 65;
+  fabric command CopyScene(CopySceneRequest): CopySceneResponse = 66;
 }
 
 /** Attributes and commands for switching devices between 'On' and 'Off' states. */
@@ -7615,6 +7660,7 @@ endpoint 2 {
     ram      attribute currentGroup default = 0x0000;
     ram      attribute sceneValid default = 0x00;
     ram      attribute nameSupport default = 0x80;
+    ram      attribute lastConfiguredBy;
     ram      attribute sceneTableSize default = 16;
     callback attribute remainingCapacity default = 8;
     callback attribute generatedCommandList;
diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
index dd93794f80db58..0835158762e7e7 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
@@ -6745,6 +6745,54 @@
               "source": "server",
               "isIncoming": 0,
               "isEnabled": 1
+            },
+            {
+              "name": "EnhancedAddScene",
+              "code": 64,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "EnhancedAddSceneResponse",
+              "code": 64,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "EnhancedViewScene",
+              "code": 65,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "EnhancedViewSceneResponse",
+              "code": 65,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "CopyScene",
+              "code": 66,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "CopySceneResponse",
+              "code": 66,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
             }
           ],
           "attributes": [
@@ -21905,6 +21953,54 @@
               "source": "server",
               "isIncoming": 0,
               "isEnabled": 1
+            },
+            {
+              "name": "EnhancedAddScene",
+              "code": 64,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "EnhancedAddSceneResponse",
+              "code": 64,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "EnhancedViewScene",
+              "code": 65,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "EnhancedViewSceneResponse",
+              "code": 65,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
+            },
+            {
+              "name": "CopyScene",
+              "code": 66,
+              "mfgCode": null,
+              "source": "client",
+              "isIncoming": 1,
+              "isEnabled": 1
+            },
+            {
+              "name": "CopySceneResponse",
+              "code": 66,
+              "mfgCode": null,
+              "source": "server",
+              "isIncoming": 0,
+              "isEnabled": 1
             }
           ],
           "attributes": [
@@ -21988,6 +22084,22 @@
               "maxInterval": 65344,
               "reportableChange": 0
             },
+            {
+              "name": "LastConfiguredBy",
+              "code": 5,
+              "mfgCode": null,
+              "side": "server",
+              "type": "node_id",
+              "included": 1,
+              "storageOption": "RAM",
+              "singleton": 0,
+              "bounded": 0,
+              "defaultValue": "",
+              "reportable": 1,
+              "minInterval": 1,
+              "maxInterval": 65534,
+              "reportableChange": 0
+            },
             {
               "name": "SceneTableSize",
               "code": 6,
diff --git a/src/app/tests/suites/certification/Test_TC_S_1_1.yaml b/src/app/tests/suites/certification/Test_TC_S_1_1.yaml
index 93be11fdee2487..0fdc16b325b0d7 100644
--- a/src/app/tests/suites/certification/Test_TC_S_1_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_S_1_1.yaml
@@ -41,99 +41,81 @@ tests:
           constraints:
               type: int16u
 
-    - label: "Step 3: Read FeatureMap (global attribute 65532)"
+    - label: "Step 3a: Read FeatureMap (global attribute 65532)"
       PICS: (!S.S.F00)
       command: "readAttribute"
       attribute: "FeatureMap"
       response:
-          value: 0
           constraints:
               type: bitmap32
+              hasMasksSet: [0x1]
+              # This needs to be changed in the Name Support PR: https://github.com/project-chip/connectedhomeip/pull/29639
+              # Issue in Test plan repo: https://github.com/CHIP-Specifications/chip-test-plans/issues/3515
+              #hasMasksClear: [0x1]
 
-    - label: "Step 3: Read FeatureMap (global attribute 65532)"
+    - label: "Step 3a: Read FeatureMap (global attribute 65532)"
       PICS: S.S.F00
       command: "readAttribute"
       attribute: "FeatureMap"
       response:
-          value: 1
           constraints:
               type: bitmap32
+              hasMasksSet: [0x1]
 
     - label:
-          "Step 4: Read AttributeList (global attribute 65531) if S.S.A0005 is
-          true"
-      PICS: S.S.A0005 && PICS_EVENT_LIST_ENABLED
+          "Step 4: Read Mandatory attributes in AttributeList (global attribute
+          65531)"
+      PICS: S.S
       command: "readAttribute"
       attribute: "AttributeList"
       response:
           constraints:
               type: list
-              contains:
-                  [
-                      0,
-                      1,
-                      2,
-                      3,
-                      4,
-                      5,
-                      6,
-                      7,
-                      65528,
-                      65529,
-                      65530,
-                      65531,
-                      65532,
-                      65533,
-                  ]
+              contains: [4, 65528, 65529, 65531, 65532, 65533]
 
     - label:
-          "Step 4: Read AttributeList (global attribute 65531) if S.S.A0005 is
-          true"
-      PICS: S.S.A0005 && !PICS_EVENT_LIST_ENABLED
+          "Step 4b: Read optional attributes(SceneCount, CurrentScene,
+          CurrentGroup, SceneValid) in AttributeList (global attribute 65531)"
+      PICS: (!S.S.F03)
       command: "readAttribute"
       attribute: "AttributeList"
       response:
           constraints:
               type: list
-              contains:
-                  [0, 1, 2, 3, 4, 5, 6, 7, 65528, 65529, 65531, 65532, 65533]
+              contains: [0, 1, 2, 3]
 
     - label:
-          "Step 4: Read AttributeList (global attribute 65531) if S.S.A0005 is
-          false"
-      PICS: " !S.S.A0005 && PICS_EVENT_LIST_ENABLED"
+          "Step 4c: Read optinnal attribute(LastConfiguredBy) in AttributeList
+          (global attribute 65531)"
+      PICS: S.S.A0005
       command: "readAttribute"
       attribute: "AttributeList"
       response:
           constraints:
               type: list
-              contains:
-                  [
-                      0,
-                      1,
-                      2,
-                      3,
-                      4,
-                      6,
-                      7,
-                      65528,
-                      65529,
-                      65530,
-                      65531,
-                      65532,
-                      65533,
-                  ]
+              contains: [5]
 
     - label:
-          "Step 4: Read AttributeList (global attribute 65531) if S.S.A0005 is
-          false"
-      PICS: " !S.S.A0005 && !PICS_EVENT_LIST_ENABLED"
+          "Step 4d: Read optionnal attribute(SceneTableSize) in AttributeList
+          (global attribute 65531)"
+      PICS: S.S.F02
       command: "readAttribute"
       attribute: "AttributeList"
       response:
           constraints:
               type: list
-              contains: [0, 1, 2, 3, 4, 6, 7, 65528, 65529, 65531, 65532, 65533]
+              contains: [6]
+
+    - label:
+          "Step 4e: Read optional attribute(FabricSceneInfo) in AttributeList
+          (global attribute 65531)"
+      PICS: S.S.F03
+      command: "readAttribute"
+      attribute: "AttributeList"
+      response:
+          constraints:
+              type: list
+              contains: [7]
 
     - label: "Step 5: Read EventList (global attribute 65530)"
       PICS: PICS_EVENT_LIST_ENABLED
@@ -144,41 +126,49 @@ tests:
               type: list
               contains: []
 
-    - label: "Step 6a: Read AcceptedCommandList (global attribute 65529)"
-      PICS: S.S.C40.Rsp
+    - label:
+          "Step 6a: Read Mandatory commands in AcceptedCommandList (global
+          attribute 65529)"
+      PICS: S.S
       command: "readAttribute"
       attribute: "AcceptedCommandList"
       response:
           constraints:
               type: list
-              contains: [0, 1, 2, 3, 4, 5, 6, 40, 41, 42]
+              contains: [0, 1, 2, 3, 4, 5, 6]
 
-    - label: "Step 6b: Read AcceptedCommandList (global attribute 65529)"
-      PICS: (!S.S.C40.Rsp)
+    - label:
+          "Step 6b: Read optional command(EnhancedAddSceneResponse)
+          AcceptedCommandList (global attribute 65529)"
+      PICS: S.S.C40.Rsp
       command: "readAttribute"
       attribute: "AcceptedCommandList"
       response:
           constraints:
               type: list
-              contains: [0, 1, 2, 3, 4, 5, 6]
+              contains: [64]
 
-    - label: "Step 6c: Read AcceptedCommandList (global attribute 65529)"
-      PICS: S.C.C40.Tx
+    - label:
+          "Step 6c: Read optional command(EnhancedViewSceneResponse)
+          AcceptedCommandList (global attribute 65529)"
+      PICS: S.S.C41.Rsp
       command: "readAttribute"
       attribute: "AcceptedCommandList"
       response:
           constraints:
               type: list
-              contains: [0, 1, 2, 3, 4, 5, 6, 40, 41, 42]
+              contains: [65]
 
-    - label: "Step 6d: Read AcceptedCommandList (global attribute 65529)"
-      PICS: (!S.C.C40.Tx)
+    - label:
+          "Step 6d: Read optional command(CopySceneResponse) AcceptedCommandList
+          (global attribute 65529)"
+      PICS: S.S.C42.Rsp
       command: "readAttribute"
       attribute: "AcceptedCommandList"
       response:
           constraints:
               type: list
-              contains: [0, 1, 2, 3, 4, 5, 6]
+              contains: [66]
 
     - label: "Step 7a: Read GeneratedCommandList (global attribute 65528)"
       command: "readAttribute"
@@ -186,7 +176,7 @@ tests:
       response:
           constraints:
               type: list
-              contains: [0, 1, 2, 3, 4, 5, 6]
+              contains: [0, 1, 2, 3, 4, 6]
 
     - label:
           "Step 7b: Read optional command(EnhancedAddSceneResponse) in
@@ -197,7 +187,7 @@ tests:
       response:
           constraints:
               type: list
-              contains: [40]
+              contains: [64]
 
     - label:
           "Step 7c: Read optional command(EnhancedViewSceneResponse) in
@@ -208,7 +198,7 @@ tests:
       response:
           constraints:
               type: list
-              contains: [41]
+              contains: [65]
 
     - label:
           "Step 7d: Read optional command(CopySceneResponse) in
@@ -219,4 +209,4 @@ tests:
       response:
           constraints:
               type: list
-              contains: [42]
+              contains: [66]
diff --git a/src/app/tests/suites/certification/Test_TC_S_2_1.yaml b/src/app/tests/suites/certification/Test_TC_S_2_1.yaml
index 039309538b5097..ec9a9c3871768a 100644
--- a/src/app/tests/suites/certification/Test_TC_S_2_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_S_2_1.yaml
@@ -56,7 +56,7 @@ tests:
       attribute: "CurrentGroup"
       response:
           constraints:
-              type: groupid
+              type: group_id
 
     - label: "Step 5: TH reads from the DUT the (0x0003) SceneValid attribute"
       PICS: S.S.A0003
@@ -64,7 +64,7 @@ tests:
       attribute: "SceneValid"
       response:
           constraints:
-              type: int8u
+              type: boolean
 
     - label: "Step 6: TH reads from the DUT the (0x0004) NameSupport attribute"
       PICS: S.S.A0003 && S.S.F00
@@ -91,7 +91,7 @@ tests:
       attribute: "LastConfiguredBy"
       response:
           constraints:
-              type: nodeId
+              type: node_id
 
     - label:
           "Step 8: TH reads from the DUT the (0x0006) SceneTableSize attribute"
@@ -100,7 +100,7 @@ tests:
       attribute: "SceneTableSize"
       response:
           constraints:
-              type: uint16
+              type: int16u
 
     - label:
           "Step 9: TH reads from the DUT the (0x0007) RemainingCapacity
diff --git a/src/app/tests/suites/certification/Test_TC_S_2_2.yaml b/src/app/tests/suites/certification/Test_TC_S_2_2.yaml
index a33f9d9752b168..a63a94b08262e9 100644
--- a/src/app/tests/suites/certification/Test_TC_S_2_2.yaml
+++ b/src/app/tests/suites/certification/Test_TC_S_2_2.yaml
@@ -22,6 +22,12 @@ config:
     nodeId: 0x12344321
     cluster: "Scenes"
     endpoint: 1
+    G1:
+        type: int16u
+        defaultValue: 0x0001
+    G2:
+        type: int16u
+        defaultValue: 0x0002
 
     GroupKeyManagement.Endpoint: 0
     Groups.Endpoint: 1
@@ -57,12 +63,12 @@ tests:
                     {
                         GroupKeySetID: 0x01a1,
                         GroupKeySecurityPolicy: 0,
-                        EpochKey0: "hex:d0d1d2d3d4d5d6d7d8d9dadbdcdddedf",
-                        EpochStartTime0: 2220000,
-                        EpochKey1: "hex:d1d1d2d3d4d5d6d7d8d9dadbdcdddedf",
-                        EpochStartTime1: 2220001,
-                        EpochKey2: "hex:d2d1d2d3d4d5d6d7d8d9dadbdcdddedf",
-                        EpochStartTime2: 2220002,
+                        EpochKey0: "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf",
+                        EpochStartTime0: 1110000,
+                        EpochKey1: "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf",
+                        EpochStartTime1: 1110001,
+                        EpochKey2: "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
+                        EpochStartTime2: 1110002,
                     }
 
     - label:
@@ -75,8 +81,8 @@ tests:
       arguments:
           value:
               [
-                  { FabricIndex: 1, GroupId: 0x0001, GroupKeySetID: 0x01a1 },
-                  { FabricIndex: 1, GroupId: 0x0002, GroupKeySetID: 0x01a1 },
+                  { FabricIndex: 1, GroupId: G1, GroupKeySetID: 0x01a1 },
+                  { FabricIndex: 1, GroupId: G2, GroupKeySetID: 0x01a1 },
               ]
 
     - label: "Step 0c: TH sends a RemoveAllGroups command to DUT."
@@ -87,14 +93,14 @@ tests:
 
     - label:
           "Step 1a: TH sends a AddGroup command to DUT with the GroupID field
-          set to 0x0001."
+          set to G1."
       PICS: G.S.C00.Rsp
       cluster: "Groups"
       command: "AddGroup"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "GroupName"
                 value: "Group1"
       response:
@@ -102,33 +108,33 @@ tests:
               - name: "Status"
                 value: 0
               - name: "GroupID"
-                value: 0x0001
+                value: G1
 
     - label:
           "Step 1b: TH sends a RemoveAllScenes command to DUT with the GroupID
-          field set to 0x0001."
+          field set to G1."
       PICS: S.S.C03.Rsp
       command: "RemoveAllScenes"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
       response:
           values:
               - name: "Status"
-                value: 0
+                value: 0x00
               - name: "GroupID"
-                value: 0x0001
+                value: G1
 
     - label:
           "Step 1c: TH sends a GetSceneMembership command to DUT with the
-          GroupID field set to 0x0001."
+          GroupID field set to G1."
       PICS: S.S.C06.Rsp
       command: "GetSceneMembership"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
       response:
           values:
               - name: "Status"
@@ -136,7 +142,7 @@ tests:
               - name: "Capacity"
                 value: ( maxScenes / 2 )
               - name: "GroupID"
-                value: 0x0001
+                value: G1
 
     - label:
           "STep 2a: TH configures AC1 on DUT for all implemented application
@@ -174,13 +180,13 @@ tests:
 
     - label:
           "Step 2b: TH sends a StoreScene command to DUT with the GroupID field
-          set to 0x0001 and the SceneID field set to 0x01."
+          set to G1 and the SceneID field set to 0x01."
       PICS: S.S.C04.Rsp
       command: "StoreScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
       response:
@@ -188,7 +194,7 @@ tests:
               - name: "Status"
                 value: 0x00
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
 
@@ -228,13 +234,13 @@ tests:
 
     - label:
           "Step 3b: TH sends a RecallScene command to DUT with the GroupID field
-          set to 0x0001 and the SceneID field set to 0x01."
+          set to G1 and the SceneID field set to 0x01."
       PICS: S.S.C05.Rsp
       command: "RecallScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
 
@@ -262,9 +268,9 @@ tests:
       command: "readAttribute"
       attribute: "CurrentGroup"
       response:
-          value: 0x0001
+          value: G1
           constraints:
-              type: groupid
+              type: group_id
 
     - label: "Step 3f: TH reads the SceneValid attribute from DUT."
       PICS: S.S.A0000 && S.S.A0001 && S.S.A0002 && S.S.A0003 && !S.S.F03
@@ -273,7 +279,7 @@ tests:
       response:
           value: true
           constraints:
-              type: int8u
+              type: boolean
 
     - label: "Step 3g: TH reads attribute SceneTableSize from DUT."
       PICS: S.S.F03 && S.S.F02
@@ -316,7 +322,7 @@ tests:
     #      value: {
     #              SceneCount: SceneCountValue,
     #              CurrentScene: 0x01,
-    #              CurrentGroup: 0x0001,
+    #              CurrentGroup: G1,
     #              SceneValid: true,
     #              RemainingCapacity: ( SceneTableSizeValue/2 ),
     #          }
@@ -384,25 +390,25 @@ tests:
 
     - label:
           "Step 4d: TH sends a RecallScene command to DUT with the GroupID field
-          set to 0x0001 and the SceneID field set to 0x01."
+          set to G1 and the SceneID field set to 0x01."
       PICS: S.S.C05.Rsp
       command: "RecallScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
 
     - label:
           "Step 5: TH sends a ViewScene command to DUT with the GroupID field
-          set to 0x0001 and the SceneID field set to 0x01."
+          set to G1 and the SceneID field set to 0x01."
       PICS: S.S.C01.Rsp && PICS_SDK_CI_ONLY
       command: "ViewScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
       response:
@@ -410,7 +416,7 @@ tests:
               - name: "Status"
                 value: 0x00
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
               - name: "TransitionTime"
@@ -425,29 +431,77 @@ tests:
                         },
                         {
                             ClusterID: 0x0008,
+                            AttributeValueList:
+                                [{ AttributeID: 0x0000, AttributeValue: 0x64 }],
+                        },
+                        {
+                            ClusterID: 0x0300,
                             AttributeValueList:
                                 [
                                     {
-                                        AttributeID: 0x0000,
-                                        AttributeValue: 0x64,
+                                        AttributeID: 0x0003,
+                                        AttributeValue: 0x616b,
+                                    },
+                                    {
+                                        AttributeID: 0x0004,
+                                        AttributeValue: 0x607d,
+                                    },
+                                    {
+                                        AttributeID: 0x4000,
+                                        AttributeValue: 0x0000,
                                     },
                                     {
                                         AttributeID: 0x0001,
                                         AttributeValue: 0x00,
                                     },
+                                    {
+                                        AttributeID: 0x4002,
+                                        AttributeValue: 0x00,
+                                    },
+                                    {
+                                        AttributeID: 0x4003,
+                                        AttributeValue: 0x00,
+                                    },
+                                    {
+                                        AttributeID: 0x4004,
+                                        AttributeValue: 0x0019,
+                                    },
+                                    {
+                                        AttributeID: 0x0007,
+                                        AttributeValue: 0x00,
+                                    },
+                                    {
+                                        AttributeID: 0x4001,
+                                        AttributeValue: 0x02,
+                                    },
                                 ],
                         },
                     ]
+                #TODO : Need to change the check for a check like below if possible
+                # constraints:
+                #     type: list
+                #     contains: [
+                #         {
+                #             ClusterID: 0x0006,
+                #             AttributeValueList:
+                #                 [{ AttributeID: 0x0000, AttributeValue: 0x01 }],
+                #         },
+                #         {
+                #             ClusterID: 0x0008,
+                #             AttributeValueList:
+                #                 [{ AttributeID: 0x0000, AttributeValue: 0x64 }],
+                #         },
+                #     ]
 
     - label:
           "Step 5: TH sends a ViewScene command to DUT with the GroupID field
-          set to 0x0001 and the SceneID field set to 0x01."
+          set to G1 and the SceneID field set to 0x01."
       PICS: S.S.C01.Rsp && PICS_SKIP_SAMPLE_APP
       command: "ViewScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
       response:
@@ -455,7 +509,7 @@ tests:
               - name: "Status"
                 value: 0x00
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
               - name: "TransitionTime"
@@ -463,13 +517,13 @@ tests:
 
     - label:
           "Step 6: TH sends a GetSceneMembership command to DUT with the GroupID
-          field set to 0x0001."
+          field set to G1."
       PICS: S.S.C06.Rsp
       command: "GetSceneMembership"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
       response:
           values:
               - name: "Status"
@@ -477,35 +531,35 @@ tests:
               - name: "Capacity"
                 value: ( maxScenes / 2 ) - 1
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneList"
                 value: [0x01]
 
     - label:
           "Step 7a: TH sends a RemoveAllScenes command to DUT with the GroupID
-          field set to 0x0001."
+          field set to G1."
       PICS: S.S.C03.Rsp
       command: "RemoveAllScenes"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
       response:
           values:
               - name: "Status"
                 value: 0
               - name: "GroupID"
-                value: 0x0001
+                value: G1
 
     - label:
           "Step 7b: TH sends a GetSceneMembership command to DUT with the
-          GroupID field set to 0x0001."
+          GroupID field set to G1."
       PICS: S.S.C06.Rsp
       command: "GetSceneMembership"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
       response:
           values:
               - name: "Status"
@@ -514,20 +568,20 @@ tests:
                 constraints:
                     anyOf: [( maxScenes / 2 ), 0xfe, 0x89]
               - name: "GroupID"
-                value: 0x0001
+                value: G1
 
     - label:
           "Step 8a: TH sends a AddScene command to DUT with the GroupID field
-          set to 0x0001, the SceneID field set to 0x01, the TransitionTime field
-          set to 0x0001 and a set of extension fields appropriate to AC1."
+          set to G1, the SceneID field set to 0x01, the TransitionTime field set
+          to 0x0001 and a set of extension fields appropriate to AC1."
       PICS: S.S.C00.Rsp && PICS_SDK_CI_ONLY
       command: "AddScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
-                value: 0x0001
+                value: 0x01
               - name: "TransitionTime"
                 value: 0x0001
               - name: "SceneName"
@@ -543,16 +597,7 @@ tests:
                         {
                             ClusterID: 0x0008,
                             AttributeValueList:
-                                [
-                                    {
-                                        AttributeID: 0x0000,
-                                        AttributeValue: 0x64,
-                                    },
-                                    {
-                                        AttributeID: 0x0001,
-                                        AttributeValue: 0x00,
-                                    },
-                                ],
+                                [{ AttributeID: 0x0000, AttributeValue: 0x64 }],
                         },
                     ]
       response:
@@ -560,14 +605,14 @@ tests:
               - name: "Status"
                 value: 0x00
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
 
     - label:
           "Step 8a: TH sends a AddScene command to DUT with the GroupID field
-          set to 0x0001, the SceneID field set to 0x01, the TransitionTime field
-          set to 0x0001 and a set of extension fields appropriate to AC1."
+          set to G1, the SceneID field set to 0x01, the TransitionTime field set
+          to 0x0001 and a set of extension fields appropriate to AC1."
       verification: |
           Execute the following command in TH to generate the pre-condition to execute this test case:
 
@@ -628,13 +673,13 @@ tests:
 
     - label:
           "Step 8b: TH sends a GetSceneMembership command to DUT with the
-          GroupID field set to 0x0001."
+          GroupID field set to G1."
       PICS: S.S.C06.Rsp
       command: "GetSceneMembership"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
       response:
           values:
               - name: "Status"
@@ -643,39 +688,39 @@ tests:
                 constraints:
                     anyOf: [( maxScenes / 2 ) - 1, 0xfe, 0x89]
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneList"
                 value: [0x01]
 
     - label:
           "Step 9a: TH sends a RemoveScene command to DUT with the GroupID field
-          set to 0x0001 and the SceneID field set to 0x01."
+          set to G1 and the SceneID field set to 0x01."
       PICS: S.S.C02.Rsp
       command: "RemoveScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
-                value: 0x0001
+                value: 0x01
       response:
           values:
               - name: "Status"
                 value: 0x00
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
 
     - label:
           "Step 9b: TH sends a GetSceneMembership command to DUT with the
-          GroupID field set to 0x0001."
+          GroupID field set to G1."
       PICS: S.S.C06.Rsp
       command: "GetSceneMembership"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
       response:
           values:
               - name: "Status"
@@ -684,7 +729,7 @@ tests:
                 constraints:
                     anyOf: [( maxScenes / 2 ), 0xfe, 0x89]
               - name: "GroupID"
-                value: 0x0001
+                value: G1
 
     - label:
           "Step 10a: TH configures AC2 on DUT for all implemented application
@@ -722,13 +767,13 @@ tests:
 
     - label:
           "Step 10b: TH sends a RecallScene command to DUT with the GroupID
-          field set to 0x0001 and the SceneID field set to 0x01."
+          field set to G1 and the SceneID field set to 0x01."
       PICS: S.S.C05.Rsp
       command: "RecallScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
       response:
@@ -770,13 +815,13 @@ tests:
 
     - label:
           "Step 11b: TH sends a StoreScene command to DUT with the GroupID field
-          set to 0x0001 and the SceneID field set to 0x01."
+          set to G1 and the SceneID field set to 0x01."
       PICS: S.S.C04.Rsp
       command: "StoreScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
       response:
@@ -784,7 +829,7 @@ tests:
               - name: "Status"
                 value: 0x00
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
 
@@ -824,13 +869,13 @@ tests:
 
     - label:
           "Step 12b: TH sends a StoreScene command to DUT with the GroupID field
-          set to 0x0001 and the SceneID field set to 0x02."
+          set to G1 and the SceneID field set to 0x02."
       PICS: S.S.C04.Rsp
       command: "StoreScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x02
       response:
@@ -840,7 +885,7 @@ tests:
                 constraints:
                     anyOf: [0x00, 0x89]
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x02
 
@@ -862,14 +907,14 @@ tests:
 
     - label:
           "Step 12c: TH sends a GetSceneMembership command to DUT with the
-          GroupID field set to 0x0001."
+          GroupID field set to G1."
       runIf: ContinueTest
       PICS: S.S.C06.Rsp
       command: "GetSceneMembership"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
       response:
           values:
               - name: "Status"
@@ -877,13 +922,13 @@ tests:
               - name: "Capacity"
                 value: ( maxScenes / 2 ) - 2
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneList"
                 value: [0x01, 0x02]
 
     - label:
           "Step 13a: If capacity allows, TH sends a AddGroup command to DUT with
-          the GroupID field set to 0x0002."
+          the GroupID field set to G2."
       runIf: ContinueTest
       PICS: G.S.C00.Rsp
       cluster: "Groups"
@@ -891,7 +936,7 @@ tests:
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0002
+                value: G2
               - name: "GroupName"
                 value: "Group2"
       response:
@@ -899,35 +944,35 @@ tests:
               - name: "Status"
                 value: 0
               - name: "GroupID"
-                value: 0x0002
+                value: G2
 
     - label:
           "Step 13b: TH sends a RemoveAllScenes command to DUT with the GroupID
-          field set to 0x0002."
+          field set to G2."
       runIf: ContinueTest
       PICS: S.S.C03.Rsp
       command: "RemoveAllScenes"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0002
+                value: G2
       response:
           values:
               - name: "Status"
                 value: 0
               - name: "GroupID"
-                value: 0x0002
+                value: G2
 
     - label:
           "Step 13c: TH sends a GetSceneMembership command to DUT with the
-          GroupID field set to 0x0002."
+          GroupID field set to G2."
       runIf: ContinueTest
       PICS: S.S.C06.Rsp
       command: "GetSceneMembership"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0002
+                value: G2
       response:
           values:
               - name: "Status"
@@ -935,7 +980,7 @@ tests:
               - name: "Capacity"
                 value: ( maxScenes / 2 ) - 2
               - name: "GroupID"
-                value: 0x0002
+                value: G2
 
     - label:
           "Step 14a: TH configures AC3 on DUT for all implemented application
@@ -975,14 +1020,14 @@ tests:
 
     - label:
           "Step 14b: TH sends a StoreScene command to DUT with the GroupID field
-          set to 0x0002 and the SceneID field set to 0x03."
+          set to G2 and the SceneID field set to 0x03."
       runIf: ContinueTest
       PICS: S.S.C04.Rsp
       command: "StoreScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0002
+                value: G2
               - name: "SceneID"
                 value: 0x03
       response:
@@ -992,7 +1037,7 @@ tests:
                 constraints:
                     anyOf: [0x00, 0x89]
               - name: "GroupID"
-                value: 0x0002
+                value: G2
               - name: "SceneID"
                 value: 0x03
 
@@ -1015,14 +1060,14 @@ tests:
 
     - label:
           "Step 14c: TH sends a GetSceneMembership command to DUT with the
-          GroupID field set to 0x0002."
+          GroupID field set to G2."
       runIf: ContinueTest
       PICS: S.S.C06.Rsp
       command: "GetSceneMembership"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0002
+                value: G2
       response:
           values:
               - name: "Status"
@@ -1030,7 +1075,7 @@ tests:
               - name: "Capacity"
                 value: ( maxScenes / 2 ) - 3
               - name: "GroupID"
-                value: 0x0002
+                value: G2
               - name: "SceneList"
                 value: [0x03]
 
diff --git a/src/app/tests/suites/certification/Test_TC_S_2_3.yaml b/src/app/tests/suites/certification/Test_TC_S_2_3.yaml
index cc019818fcc4a1..b91f6eee39f3e3 100644
--- a/src/app/tests/suites/certification/Test_TC_S_2_3.yaml
+++ b/src/app/tests/suites/certification/Test_TC_S_2_3.yaml
@@ -24,7 +24,7 @@ config:
     endpoint: 1
     G1:
         type: int16u
-        defaultValue: 0x0001
+        defaultValue: 0x0101
     GroupKeyManagement.Endpoint: 0
 
 tests:
@@ -58,12 +58,12 @@ tests:
                     {
                         GroupKeySetID: 0x01a1,
                         GroupKeySecurityPolicy: 0,
-                        EpochKey0: "hex:d0d1d2d3d4d5d6d7d8d9dadbdcdddedf",
-                        EpochStartTime0: 2220000,
-                        EpochKey1: "hex:d1d1d2d3d4d5d6d7d8d9dadbdcdddedf",
-                        EpochStartTime1: 2220001,
-                        EpochKey2: "hex:d2d1d2d3d4d5d6d7d8d9dadbdcdddedf",
-                        EpochStartTime2: 2220002,
+                        EpochKey0: "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf",
+                        EpochStartTime0: 1110000,
+                        EpochKey1: "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf",
+                        EpochStartTime1: 1110001,
+                        EpochKey2: "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
+                        EpochStartTime2: 1110002,
                     }
 
     - label:
@@ -87,14 +87,39 @@ tests:
               - name: "GroupID"
                 value: G1
               - name: "GroupName"
-                value: "Group1"
+                value: "Group #1"
       response:
           values:
               - name: "Status"
-                value: 0
+                value: 0x00
               - name: "GroupID"
                 value: G1
 
+    - label: "Install ACLs"
+      cluster: "Access Control"
+      endpoint: GroupKeyManagement.Endpoint
+      command: "writeAttribute"
+      attribute: "ACL"
+      arguments:
+          value: [
+                  # Any CASE can administer
+                  {
+                      FabricIndex: 0,
+                      Privilege: 5, # administer
+                      AuthMode: 2, # case
+                      Subjects: null,
+                      Targets: null,
+                  },
+                  # Any group can manage
+                  {
+                      FabricIndex: 0,
+                      Privilege: 4, # manage
+                      AuthMode: 3, # group
+                      Subjects: null,
+                      Targets: null,
+                  },
+              ]
+
     - label:
           "Step 1b: TH sends a RemoveAllScenes command to DUT with the GroupID
           field set to G1."
@@ -107,7 +132,7 @@ tests:
       response:
           values:
               - name: "Status"
-                value: 0
+                value: 0x00
               - name: "GroupID"
                 value: G1
 
@@ -125,7 +150,7 @@ tests:
               - name: "Status"
                 value: 0x00
               - name: "Capacity"
-                value: (maxScenes/2)
+                value: maxScenes / 2
               - name: "GroupID"
                 value: G1
               - name: "SceneList"
@@ -143,7 +168,7 @@ tests:
               - name: "GroupID"
                 value: G1
               - name: "SceneID"
-                value: 0x0001
+                value: 0x01
               - name: "TransitionTime"
                 value: 0x000a
               - name: "SceneName"
@@ -159,16 +184,7 @@ tests:
                         {
                             ClusterID: 0x0008,
                             AttributeValueList:
-                                [
-                                    {
-                                        AttributeID: 0x0000,
-                                        AttributeValue: 0x64,
-                                    },
-                                    {
-                                        AttributeID: 0x0001,
-                                        AttributeValue: 0x00,
-                                    },
-                                ],
+                                [{ AttributeID: 0x0000, AttributeValue: 0x64 }],
                         },
                     ]
       response:
@@ -184,14 +200,15 @@ tests:
           "Step 2b: TH sends a AddScene command to DUT with the GroupID field
           set to G1, the SceneID field set to 0x01, the TransitionTime field set
           to 0x0001 (1s) and a set of extension fields appropriate to AC1."
-      PICS: S.S.C40.Rsp && PICS_SDK_CI_ONLY
+      # This step is overwriting Step 2a, we need to add PICS !S.S.C40.Rsp here, see issue: https://github.com/CHIP-Specifications/chip-test-plans/issues/3509
+      PICS: S.S.C00.Rsp && PICS_SDK_CI_ONLY
       command: "AddScene"
       arguments:
           values:
               - name: "GroupID"
                 value: G1
               - name: "SceneID"
-                value: 0x0001
+                value: 0x01
               - name: "TransitionTime"
                 value: 0x0001
               - name: "SceneName"
@@ -207,16 +224,7 @@ tests:
                         {
                             ClusterID: 0x0008,
                             AttributeValueList:
-                                [
-                                    {
-                                        AttributeID: 0x0000,
-                                        AttributeValue: 0x64,
-                                    },
-                                    {
-                                        AttributeID: 0x0001,
-                                        AttributeValue: 0x00,
-                                    },
-                                ],
+                                [{ AttributeID: 0x0000, AttributeValue: 0x64 }],
                         },
                     ]
       response:
@@ -274,7 +282,7 @@ tests:
           [1670970505.890328][5742:5744] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0040
           [1670970505.890458][5742:5744] CHIP:TOO:   EnhancedAddSceneResponse: {
           [1670970505.890551][5742:5744] CHIP:TOO:     status: 0
-          [1670970505.890608][5742:5744] CHIP:TOO:     groupId: 1
+          [1670970505.890608][5742:5744] CHIP:TOO:     groupId: 257
           [1670970505.890717][5742:5744] CHIP:TOO:     sceneId: 1
           [1670970505.890774][5742:5744] CHIP:TOO:    }
       cluster: "LogCommands"
@@ -293,7 +301,7 @@ tests:
     - label:
           "Step 2b: TH sends a AddScene command to DUT with the GroupID field
           set to G1, the SceneID field set to 0x01, the TransitionTime field set
-          to 0x0001 and a set of extension fields appropriate to AC1."
+          to G1 and a set of extension fields appropriate to AC1."
       verification: |
           Execute the following command in TH to generate the pre-condition to execute this test case:
 
@@ -336,12 +344,13 @@ tests:
           [1670970505.890328][5742:5744] CHIP:TOO: Endpoint: 1 Cluster: 0x0000_0005 Command 0x0000_0000
           [1670970505.890458][5742:5744] CHIP:TOO:   AddSceneResponse: {
           [1670970505.890551][5742:5744] CHIP:TOO:     status: 0
-          [1670970505.890608][5742:5744] CHIP:TOO:     groupId: 1
+          [1670970505.890608][5742:5744] CHIP:TOO:     groupId: 257
           [1670970505.890717][5742:5744] CHIP:TOO:     sceneId: 1
           [1670970505.890774][5742:5744] CHIP:TOO:    }
       cluster: "LogCommands"
       command: "UserPrompt"
-      PICS: (!S.S.C40.Rsp) && PICS_SKIP_SAMPLE_APP
+      # This step is overwriting Step 2a, we need to add PICS !S.S.C40.Rsp here, see issue: https://github.com/CHIP-Specifications/chip-test-plans/issues/3509
+      PICS: S.S.C00.Rsp && PICS_SKIP_SAMPLE_APP
       arguments:
           values:
               - name: "message"
@@ -384,23 +393,15 @@ tests:
                         {
                             ClusterID: 0x0008,
                             AttributeValueList:
-                                [
-                                    {
-                                        AttributeID: 0x0000,
-                                        AttributeValue: 0x64,
-                                    },
-                                    {
-                                        AttributeID: 0x0001,
-                                        AttributeValue: 0x00,
-                                    },
-                                ],
+                                [{ AttributeID: 0x0000, AttributeValue: 0x64 }],
                         },
                     ]
 
     - label:
           "Step 3b: TH sends a ViewScene command to DUT with the GroupID field
           set to G1 and the SceneID field set to 0x01."
-      PICS: S.S.C41.Rsp && PICS_SDK_CI_ONLY
+      # This step is redundant with Step 3a, we should add PICS !S.S.C41.Rsp here, see issue: https://github.com/CHIP-Specifications/chip-test-plans/issues/3509
+      PICS: S.S.C01.Rsp && PICS_SDK_CI_ONLY
       command: "ViewScene"
       arguments:
           values:
@@ -429,16 +430,7 @@ tests:
                         {
                             ClusterID: 0x0008,
                             AttributeValueList:
-                                [
-                                    {
-                                        AttributeID: 0x0000,
-                                        AttributeValue: 0x64,
-                                    },
-                                    {
-                                        AttributeID: 0x0001,
-                                        AttributeValue: 0x00,
-                                    },
-                                ],
+                                [{ AttributeID: 0x0000, AttributeValue: 0x64 }],
                         },
                     ]
 
@@ -455,7 +447,7 @@ tests:
 
           Verify that the extension fields in the log match the ones expected and that
           Status = 0x00
-          GroupID = 0x0001
+          GroupID = G1
           SceneID = 0x01
           TransitionTime = 0x000a
       cluster: "LogCommands"
@@ -473,7 +465,8 @@ tests:
     - label:
           "Step 3b: TH sends a ViewScene command to DUT with the GroupID field
           set to G1 and the SceneID field set to 0x01."
-      PICS: (!S.S.C41.Rsp) && PICS_SKIP_SAMPLE_APP
+      # This step is redundant with Step 3a, we should add PICS !S.S.C41.Rsp here, see issue: https://github.com/CHIP-Specifications/chip-test-plans/issues/3509
+      PICS: S.S.C01.Rsp && PICS_SKIP_SAMPLE_APP
       verification: |
           Execute the following command in TH to generate the pre-condition to execute this test case:
 
@@ -483,7 +476,7 @@ tests:
 
           Verify that the extension fields in the log match the ones expected and that
           Status = 0x00
-          GroupID = 0x0001
+          GroupID = G1
           SceneID = 0x01
           TransitionTime = 0x0001
       cluster: "LogCommands"
@@ -513,7 +506,7 @@ tests:
               - name: "Status"
                 value: 0x00
               - name: "Capacity"
-                value: (maxScenes/2) - 1
+                value: ( maxScenes / 2 ) - 1
               - name: "GroupID"
                 value: G1
               - name: "SceneList"
@@ -558,7 +551,8 @@ tests:
           field set to G1 and the scene ID field set to 0x01."
       PICS: S.S.C05.Rsp
       command: "RecallScene"
-      groupId: 0x0001
+      # This value should be changed to G1 instead of 0x101 when it is supported, Issue opened here https://github.com/project-chip/connectedhomeip/issues/29637
+      groupId: 0x101
       arguments:
           values:
               - name: "GroupID"
@@ -573,11 +567,11 @@ tests:
       arguments:
           values:
               - name: "ms"
-                value: 1000
+                value: 1050
 
     - label:
           "TH confirm the DUT reached AC1 (on level control cluster) after 1s"
-      PICS: S.S.C40.Rsp
+      PICS: PICS_SDK_CI_ONLY && S.S.C05.Rsp
       cluster: "Level Control"
       command: "readAttribute"
       attribute: "CurrentLevel"
@@ -639,7 +633,7 @@ tests:
               - name: "Status"
                 value: 0x00
               - name: "Capacity"
-                value: (maxScenes/2) - 2
+                value: ( maxScenes / 2 ) - 2
               - name: "GroupID"
                 value: G1
               - name: "SceneList"
diff --git a/src/app/tests/suites/certification/Test_TC_S_2_4.yaml b/src/app/tests/suites/certification/Test_TC_S_2_4.yaml
index 2cf0d603da4ba1..12657fc8dd8cce 100644
--- a/src/app/tests/suites/certification/Test_TC_S_2_4.yaml
+++ b/src/app/tests/suites/certification/Test_TC_S_2_4.yaml
@@ -24,6 +24,9 @@ config:
     endpoint: 1
 
     GroupKeyManagement.Endpoint: 0
+    G1:
+        type: int16u
+        defaultValue: 0x0001
     Groups.Endpoint: 1
 
 tests:
@@ -48,12 +51,12 @@ tests:
                     {
                         GroupKeySetID: 0x01a1,
                         GroupKeySecurityPolicy: 0,
-                        EpochKey0: "hex:d0d1d2d3d4d5d6d7d8d9dadbdcdddedf",
-                        EpochStartTime0: 2220000,
-                        EpochKey1: "hex:d1d1d2d3d4d5d6d7d8d9dadbdcdddedf",
-                        EpochStartTime1: 2220001,
-                        EpochKey2: "hex:d2d1d2d3d4d5d6d7d8d9dadbdcdddedf",
-                        EpochStartTime2: 2220002,
+                        EpochKey0: "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf",
+                        EpochStartTime0: 1110000,
+                        EpochKey1: "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf",
+                        EpochStartTime1: 1110001,
+                        EpochKey2: "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
+                        EpochStartTime2: 1110002,
                     }
 
     - label:
@@ -64,7 +67,7 @@ tests:
       command: "writeAttribute"
       attribute: "GroupKeyMap"
       arguments:
-          value: [{ FabricIndex: 1, GroupId: 0x0001, GroupKeySetID: 0x01a1 }]
+          value: [{ FabricIndex: 1, GroupId: G1, GroupKeySetID: 0x01a1 }]
 
     - label: "Step 0c: TH sends a RemoveAllGroups command to DUT."
       PICS: G.S.C04.Rsp
@@ -74,14 +77,14 @@ tests:
 
     - label:
           "Step 2a: TH sends a AddGroup command to DUT with the GroupID field
-          set to 0x0001."
+          set to G1."
       PICS: G.S.C00.Rsp
       cluster: "Groups"
       command: "AddGroup"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "GroupName"
                 value: "Group1"
       response:
@@ -89,36 +92,36 @@ tests:
               - name: "Status"
                 value: 0
               - name: "GroupID"
-                value: 0x0001
+                value: G1
 
     - label:
           "Step 2b: TH sends a RemoveAllScenes command to DUT with the GroupID
-          field set to 0x0001."
+          field set to G1."
       PICS: S.S.C03.Rsp
       command: "RemoveAllScenes"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
       response:
           values:
               - name: "Status"
                 value: 0
               - name: "GroupID"
-                value: 0x0001
+                value: G1
 
     - label:
           "Step 3: TH sends a AddScene command to DUT with the GroupID field set
-          to 0x0001, the SceneID field set to 0x01, the TransitionTime field set
-          to 0x0001 and a set of extension fields appropriate to AC1."
+          to G1, the SceneID field set to 0x01, the TransitionTime field set to
+          0x0001 and a set of extension fields appropriate to AC1."
       PICS: S.S.C00.Rsp
       command: "AddScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
-                value: 0x0001
+                value: 0x01
               - name: "TransitionTime"
                 value: 0x0014
               - name: "SceneName"
@@ -131,7 +134,7 @@ tests:
               - name: "Status"
                 value: 0x00
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
 
@@ -171,13 +174,13 @@ tests:
 
     - label:
           "Step 4b: TH sends a StoreScene command to DUT with the GroupID field
-          set to 0x0001 and the SceneID field set to 0x01."
+          set to G1 and the SceneID field set to 0x01."
       PICS: S.S.C04.Rsp
       command: "StoreScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
       response:
@@ -185,7 +188,7 @@ tests:
               - name: "Status"
                 value: 0x00
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
 
@@ -243,14 +246,14 @@ tests:
 
     - label:
           "Step 5b: TH sends a RecallScene command to DUT with the GroupID field
-          set to 0x0001 and the SceneID field set to 0x01 and the TransitionTime
+          set to G1 and the SceneID field set to 0x01 and the TransitionTime
           field omitted."
       PICS: S.S.C05.Rsp
       command: "RecallScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
 
@@ -260,7 +263,7 @@ tests:
       arguments:
           values:
               - name: "ms"
-                value: 20000
+                value: 20500
 
     - label:
           "TH confirm the DUT reached AC1 (on level control cluster) after 20s"
@@ -320,30 +323,33 @@ tests:
 
     - label:
           "Step 6b: TH sends a RecallScene command to DUT with the GroupID field
-          set to 0x0001, the SceneID field set to 0x01 and the TransitionTime
-          field set to 0x0032 (5s)."
+          set to G1, the SceneID field set to 0x01 and the TransitionTime field
+          set to 0x0032 (5s)."
       PICS: S.S.C05.Rsp && PICS_SC_RECALL_SCENE_TRANSITION_TIME
       command: "RecallScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
               - name: "TransitionTime"
                 value: 0x0032
 
     - label: "Wait 5s"
+      PICS: S.S.C05.Rsp && PICS_SC_RECALL_SCENE_TRANSITION_TIME
       cluster: "DelayCommands"
       command: "WaitForMs"
       arguments:
           values:
               - name: "ms"
-                value: 5000
+                value: 5500
 
     - label:
           "TH confirm the DUT reached AC2 (on level control cluster) after 5s"
-      PICS: PICS_SDK_CI_ONLY
+      PICS:
+          S.S.C05.Rsp && PICS_SC_RECALL_SCENE_TRANSITION_TIME &&
+          PICS_SDK_CI_ONLY
       cluster: "Level Control"
       command: "readAttribute"
       attribute: "CurrentLevel"
@@ -399,20 +405,18 @@ tests:
 
     - label:
           "Step 7b: TH sends a RecallScene command to DUT with the GroupID field
-          set to 0x0001, the SceneID field set to 0x01 and the TransitionTime
-          field set to null (no transition time override)."
+          set to G1, the SceneID field set to 0x01 and the TransitionTime field
+          set to null (no transition time override)."
       PICS: S.S.C05.Rsp
       command: "RecallScene"
       arguments:
           values:
               - name: "GroupID"
-                value: 0x0001
+                value: G1
               - name: "SceneID"
                 value: 0x01
               - name: "TransitionTime"
                 value: null
-      response:
-          error: SUCCESS
 
     - label:
           "Step 8: TH removes the Group key set that was added by sending a
diff --git a/src/app/tests/suites/certification/ci-pics-values b/src/app/tests/suites/certification/ci-pics-values
index 63caa7841d3ccf..4869039cf87fef 100644
--- a/src/app/tests/suites/certification/ci-pics-values
+++ b/src/app/tests/suites/certification/ci-pics-values
@@ -598,7 +598,7 @@ G.S.C00.Rsp=1
 G.S.C01.Rsp=1
 G.S.C02.Rsp=1
 G.S.C03.Rsp=1
-G.S.C04.Rsp=0
+G.S.C04.Rsp=1
 G.S.C05.Rsp=0
 G.S.C00.Tx=1
 G.S.C01.Tx=1
@@ -656,30 +656,29 @@ I.C.AO-READ=0
 I.C.AO-WRITE=0
 
 # Scenes Cluster
-S.S=0
-S.S.A0000=0
-S.S.A0001=0
-S.S.A0002=0
-S.S.A0003=0
-S.S.A0004=0
-S.S.A0005=0
-S.S.A0006=0
+S.S=1
+S.S.A0000=1
+S.S.A0001=1
+S.S.A0002=1
+S.S.A0003=1
+S.S.A0004=1
+S.S.A0005=1
+S.S.A0006=1
 S.S.A0007=0
-S.S.C00.Rsp=0
-S.S.C01.Rsp=0
-S.S.C02.Rsp=0
-S.S.C03.Rsp=0
-S.S.C04.Rsp=0
-S.S.C05.Rsp=0
-S.S.C06.Rsp=0
-S.S.C40.Rsp=0
-S.S.C41.Rsp=0
-S.S.C42.Rsp=0
-S.S.C05.Rsp=0
+S.S.C00.Rsp=1
+S.S.C01.Rsp=1
+S.S.C02.Rsp=1
+S.S.C03.Rsp=1
+S.S.C04.Rsp=1
+S.S.C05.Rsp=1
+S.S.C06.Rsp=1
+S.S.C40.Rsp=1
+S.S.C41.Rsp=1
+S.S.C42.Rsp=1
 S.S.AM=0
 S.S.AO=0
-S.S.F00=0
-S.S.F01=0
+S.S.F00=1
+S.S.F01=1
 S.S.F02=0
 S.S.F03=0
 PICS_SC_RECALL_SCENE_TRANSITION_TIME=1