diff --git a/src/context/service/database/ConfigRule.py b/src/context/service/database/ConfigRule.py
index dd60441ca70329b9431188e28c21d98d941ada14..09723cc6f6b31e2496bf5ab475f50d0aa58f95c2 100644
--- a/src/context/service/database/ConfigRule.py
+++ b/src/context/service/database/ConfigRule.py
@@ -80,7 +80,7 @@ def compose_config_rules_data(
     return dict_config_rules
 
 def upsert_config_rules(
-    session : Session, config_rules : List[Dict],
+    session : Session, config_rules : List[Dict], is_delete : bool = False,
     device_uuid : Optional[str] = None, service_uuid : Optional[str] = None, slice_uuid : Optional[str] = None,
 ) -> bool:
     uuids_to_delete : Set[str] = set()
@@ -89,7 +89,9 @@ def upsert_config_rules(
     for config_rule in config_rules:
         configrule_uuid = config_rule['configrule_uuid']
         configrule_action = config_rule['action']
-        if configrule_action == ORM_ConfigActionEnum.SET:
+        if is_delete or configrule_action == ORM_ConfigActionEnum.DELETE:
+            uuids_to_delete.add(configrule_uuid)
+        elif configrule_action == ORM_ConfigActionEnum.SET:
             position = uuids_to_upsert.get(configrule_uuid)
             if position is None:
                 # if not added, add it
@@ -98,8 +100,6 @@ def upsert_config_rules(
             else:
                 # if already added, update occurrence
                 rules_to_upsert[position] = config_rule
-        elif configrule_action == ORM_ConfigActionEnum.DELETE:
-            uuids_to_delete.add(configrule_uuid)
         else:
             MSG = 'Action for ConfigRule({:s}) is not supported '+\
                   '(device_uuid={:s}, service_uuid={:s}, slice_uuid={:s})'
diff --git a/src/context/service/database/Constraint.py b/src/context/service/database/Constraint.py
index b37d0dcadd8799f8f7f9d538a135ed0404e08684..5ebe36f99182c8a60ea145c0d902c6ce62475eb5 100644
--- a/src/context/service/database/Constraint.py
+++ b/src/context/service/database/Constraint.py
@@ -81,29 +81,31 @@ def compose_constraints_data(
     return dict_constraints
 
 def upsert_constraints(
-    session : Session, constraints : List[Dict],
+    session : Session, constraints : List[Dict], is_delete : bool = False,
     service_uuid : Optional[str] = None, slice_uuid : Optional[str] = None
 ) -> bool:
     uuids_to_upsert : Dict[str, int] = dict()
     rules_to_upsert : List[Dict] = list()
-    for constraint in constraints:
-        constraint_uuid = constraint['constraint_uuid']
-        position = uuids_to_upsert.get(constraint_uuid)
-        if position is None:
-            # if not added, add it
-            rules_to_upsert.append(constraint)
-            uuids_to_upsert[constraint_uuid] = len(rules_to_upsert) - 1
-        else:
-            # if already added, update occurrence
-            rules_to_upsert[position] = constraint
+    if not is_delete:
+        for constraint in constraints:
+            constraint_uuid = constraint['constraint_uuid']
+            position = uuids_to_upsert.get(constraint_uuid)
+            if position is None:
+                # if not added, add it
+                rules_to_upsert.append(constraint)
+                uuids_to_upsert[constraint_uuid] = len(rules_to_upsert) - 1
+            else:
+                # if already added, update occurrence
+                rules_to_upsert[position] = constraint
 
     # Delete all constraints not in uuids_to_upsert
     delete_affected = False
-    if len(uuids_to_upsert) > 0:
+    if is_delete or len(uuids_to_upsert) > 0:
         stmt = delete(ConstraintModel)
         if service_uuid is not None: stmt = stmt.where(ConstraintModel.service_uuid == service_uuid)
         if slice_uuid   is not None: stmt = stmt.where(ConstraintModel.slice_uuid   == slice_uuid  )
-        stmt = stmt.where(ConstraintModel.constraint_uuid.not_in(set(uuids_to_upsert.keys())))
+        if not is_delete:
+            stmt = stmt.where(ConstraintModel.constraint_uuid.not_in(set(uuids_to_upsert.keys())))
         #str_stmt = stmt.compile(dialect=postgresql.dialect(), compile_kwargs={"literal_binds": True})
         #LOGGER.warning('delete stmt={:s}'.format(str(str_stmt)))
         constraint_deletes = session.execute(stmt)
@@ -111,7 +113,7 @@ def upsert_constraints(
         delete_affected = int(constraint_deletes.rowcount) > 0
 
     upsert_affected = False
-    if len(constraints) > 0:
+    if not is_delete and len(constraints) > 0:
         stmt = insert(ConstraintModel).values(constraints)
         stmt = stmt.on_conflict_do_update(
             index_elements=[ConstraintModel.constraint_uuid],
diff --git a/src/context/service/database/Slice.py b/src/context/service/database/Slice.py
index 80af759defac88d69791b610b9bc093fef309db1..1d6781d53f7c85d8cb878b1b38b0de65b4ef5726 100644
--- a/src/context/service/database/Slice.py
+++ b/src/context/service/database/Slice.py
@@ -178,10 +178,6 @@ def slice_unset(db_engine : Engine, request : Slice) -> Tuple[Dict, bool]:
     slice_name = raw_slice_uuid if len(raw_slice_name) == 0 else raw_slice_name
     context_uuid,slice_uuid = slice_get_uuid(request.slice_id, slice_name=slice_name, allow_random=False)
 
-    if len(request.slice_constraints) > 0:         raise NotImplementedError('UnsetSlice: removal of constraints')
-    if len(request.slice_config.config_rules) > 0: raise NotImplementedError('UnsetSlice: removal of config rules')
-    #if len(request.slice_endpoint_ids) > 0:        raise NotImplementedError('UnsetSlice: removal of endpoints')
-
     slice_endpoint_uuids : Set[str] = set()
     for i,endpoint_id in enumerate(request.slice_endpoint_ids):
         endpoint_context_uuid = endpoint_id.topology_id.context_id.context_uuid.uuid
@@ -203,6 +199,10 @@ def slice_unset(db_engine : Engine, request : Slice) -> Tuple[Dict, bool]:
         for subslice_id in request.slice_subslice_ids
     }
 
+    now = datetime.datetime.utcnow()
+    constraints = compose_constraints_data(request.slice_constraints, now, slice_uuid=slice_uuid)
+    config_rules = compose_config_rules_data(request.slice_config.config_rules, now, slice_uuid=slice_uuid)
+
     def callback(session : Session) -> bool:
         num_deletes = 0
         if len(slice_service_uuids) > 0:
@@ -223,7 +223,11 @@ def slice_unset(db_engine : Engine, request : Slice) -> Tuple[Dict, bool]:
                     SliceEndPointModel.slice_uuid == slice_uuid,
                     SliceEndPointModel.endpoint_uuid.in_(slice_endpoint_uuids)
                 )).delete()
-        return num_deletes > 0
+
+        changed_constraints = upsert_constraints(session, constraints, is_delete=True, slice_uuid=slice_uuid)
+        changed_config_rules = upsert_config_rules(session, config_rules, is_delete=True, slice_uuid=slice_uuid)
+
+        return num_deletes > 0 or changed_constraints or changed_config_rules
 
     updated = run_transaction(sessionmaker(bind=db_engine), callback)
     return json_slice_id(slice_uuid, json_context_id(context_uuid)),updated