diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_slice/NSS_Services_Connection_Group.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_slice/NSS_Services_Connection_Group.py
index c74e46f822a3dbe5e7b60c618c905d1bfa60a91b..208fd7a0f00d654e9be521743604d873a3daaf4b 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_slice/NSS_Services_Connection_Group.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_slice/NSS_Services_Connection_Group.py
@@ -36,6 +36,27 @@ class NSS_Service_Connection_Group(Resource):
         # TODO Return list of current network-slice-services
         return response
 
+    # @HTTP_AUTH.login_required
+    def update(self, slice_id: str, connection_group_id: str):
+        if not request.is_json:
+            raise UnsupportedMediaType("JSON payload is required")
+        request_data: Dict = request.json
+
+        context_client = ContextClient()
+        slice_request = IETFSliceHandler.update_connection_group(
+            slice_id, request_data, context_client
+        )
+        slice_client = SliceClient()
+        slice_client.UpdateSlice(slice_request)
+        slice_request = IETFSliceHandler.copy_candidate_ietf_slice_data_to_running(
+            slice_id, context_client
+        )
+        _ = context_client.SetSlice(slice_request)
+
+        response = jsonify({})
+        response.status_code = HTTP_CREATED
+        return response
+
     # @HTTP_AUTH.login_required
     def delete(self, slice_id: str, connection_group_id: str):
         context_client = ContextClient()
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_slice/ietf_slice_handler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_slice/ietf_slice_handler.py
index afbbff3435dc73b6786f8ac32588d8b2a01b34d2..b6801611d1c47b91b804cde4d94fbf71fa80dde5 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_slice/ietf_slice_handler.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_slice/ietf_slice_handler.py
@@ -293,6 +293,42 @@ class IETFSliceHandler:
         validate_ietf_slice_data(ietf_data)
         return slice
 
+    @staticmethod
+    def update_connection_group(
+        self,
+        slice_name: str,
+        updated_connection_group: dict,
+        context_client: ContextClient,
+    ):
+        slice_request = get_slice_by_defualt_name(
+            context_client, slice_name, rw_copy=False
+        )
+        slice_config = slice_request.slice_config
+        cr = get_custom_config_rule(slice_config, CANDIDATE_RESOURCE_KEY)
+        candidate_ietf_data = json.loads(cr.custom.resource_value)
+        slice_services = candidate_ietf_data["network-slice-services"]["slice-service"]
+        slice_service = slice_services[0]
+        slice_connection_groups = slice_service["connection-groups"]["connection-group"]
+        connection_group_id = updated_connection_group["connection-group"][0]["id"]
+        cg_idx = list(
+            (
+                slice_cg["id"] == connection_group_id
+                for slice_cg in slice_connection_groups
+            )
+        ).index(True)
+        slice_connection_groups[cg_idx] = updated_connection_group["connection-group"][
+            0
+        ]
+        fields = {
+            name: (value, RAISE_IF_DIFFERS)
+            for name, value in candidate_ietf_data.items()
+        }
+        update_config_rule_custom(
+            slice_request.slice_config.config_rules, CANDIDATE_RESOURCE_KEY, fields
+        )
+        slice_request.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_PLANNED
+        return slice_request
+
     @staticmethod
     def delete_connection_group(
         slice_uuid: str, connection_group_id: str, context_client: ContextClient
@@ -321,47 +357,7 @@ class IETFSliceHandler:
         update_config_rule_custom(
             slice_request.slice_config.config_rules, CANDIDATE_RESOURCE_KEY, fields
         )
-        # src_sdp_id = removed_connection_group["connectivity-construct"][0][
-        #     "p2p-sender-sdp"
-        # ]
-        # dst_sdp_id = removed_connection_group["connectivity-construct"][0][
-        #     "p2p-receiver-sdp"
-        # ]
-        # cr = get_custom_config_rule(slice_config, RUNNING_RESOURCE_KEY)
-        # running_ietf_data = json.loads(cr.custom.resource_value)
-        # slice_services = running_ietf_data["network-slice-services"]["slice-service"]
-        # slice_service = slice_services[0]
-        # sdps = slice_service["sdps"]["sdp"]
         slice_request.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_PLANNED
-        # list_endpoints = []
-        # for sdp in sdps:
-        #     if sdp["id"] == src_sdp_id:
-        #         attachment_circuits = sdp["attachment-circuits"]["attachment-circuit"]
-        #         if len(attachment_circuits) != 1:
-        #             raise Exception("All SDPs should have 1 attachment-circuit")
-        #         endpoint = EndPointId()
-        #         endpoint.topology_id.context_id.context_uuid.uuid = DEFAULT_CONTEXT_NAME
-        #         endpoint.device_id.device_uuid.uuid = sdp["node-id"]
-        #         endpoint.endpoint_uuid.uuid = attachment_circuits[0]["ac-tp-id"]
-        #         list_endpoints.append(endpoint)
-        #         break
-        # else:
-        #     raise Exception("Second SDP not found")
-        # for sdp in sdps:
-        #     if sdp["id"] == dst_sdp_id:
-        #         attachment_circuits = sdp["attachment-circuits"]["attachment-circuit"]
-        #         if len(attachment_circuits) != 1:
-        #             raise Exception("All SDPs should have 1 attachment-circuit")
-        #         endpoint = EndPointId()
-        #         endpoint.topology_id.context_id.context_uuid.uuid = DEFAULT_CONTEXT_NAME
-        #         endpoint.device_id.device_uuid.uuid = sdp["node-id"]
-        #         endpoint.endpoint_uuid.uuid = attachment_circuits[0]["ac-tp-id"]
-        #         list_endpoints.append(endpoint)
-        #         break
-        # else:
-        #     raise Exception("SDP not found")
-        # del slice_request.slice_endpoint_ids[:]
-        # slice_request.slice_endpoint_ids.extend(list_endpoints)
         return slice_request
 
     @staticmethod