diff --git a/src/common/tools/grpc/Constraints.py b/src/common/tools/grpc/Constraints.py
index 53f7dfd9822eb3a2efd48bf1b628547339a3ca69..07f0b7782dbd93479774af6324683753f906c5a1 100644
--- a/src/common/tools/grpc/Constraints.py
+++ b/src/common/tools/grpc/Constraints.py
@@ -17,7 +17,7 @@
 
 
 import json
-from typing import Any, Dict, Optional, Tuple
+from typing import Any, Dict, List, Optional, Tuple
 from common.proto.context_pb2 import Constraint, EndPointId
 from common.tools.grpc.Tools import grpc_message_to_json_string
 
@@ -137,7 +137,31 @@ def update_constraint_endpoint_priority(constraints, endpoint_id : EndPointId, p
     constraint.endpoint_priority.priority = priority
     return constraint
 
-def update_constraint_sla_availability(constraints, num_disjoint_paths : int, all_active : bool) -> Constraint:
+def update_constraint_sla_capacity(constraints, capacity_gbps : float) -> Constraint:
+    for constraint in constraints:
+        if constraint.WhichOneof('constraint') != 'sla_capacity': continue
+        break   # found, end loop
+    else:
+        # not found, add it
+        constraint = constraints.add()      # pylint: disable=no-member
+
+    constraint.sla_capacity.capacity_gbps = capacity_gbps
+    return constraint
+
+def update_constraint_sla_latency(constraints, e2e_latency_ms : float) -> Constraint:
+    for constraint in constraints:
+        if constraint.WhichOneof('constraint') != 'sla_latency': continue
+        break   # found, end loop
+    else:
+        # not found, add it
+        constraint = constraints.add()      # pylint: disable=no-member
+
+    constraint.sla_latency.e2e_latency_ms = e2e_latency_ms
+    return constraint
+
+def update_constraint_sla_availability(
+    constraints, num_disjoint_paths : int, all_active : bool, availability : float
+) -> Constraint:
     for constraint in constraints:
         if constraint.WhichOneof('constraint') != 'sla_availability': continue
         break   # found, end loop
@@ -147,8 +171,21 @@ def update_constraint_sla_availability(constraints, num_disjoint_paths : int, al
 
     constraint.sla_availability.num_disjoint_paths = num_disjoint_paths
     constraint.sla_availability.all_active = all_active
+    constraint.sla_availability.availability = availability
     return constraint
 
+def update_constraint_sla_isolation(constraints, isolation_levels : List[int]) -> Constraint:
+    for constraint in constraints:
+        if constraint.WhichOneof('constraint') != 'sla_isolation': continue
+        break   # found, end loop
+    else:
+        # not found, add it
+        constraint = constraints.add()      # pylint: disable=no-member
+
+    for isolation_level in isolation_levels:
+        if isolation_level in constraint.sla_isolation.isolation_level: continue
+        constraint.sla_isolation.isolation_level.append(isolation_level)
+    return constraint
 
 def copy_constraints(source_constraints, target_constraints):
     for source_constraint in source_constraints:
@@ -189,11 +226,27 @@ def copy_constraints(source_constraints, target_constraints):
             priority = source_constraint.endpoint_priority.priority
             update_constraint_endpoint_priority(target_constraints, endpoint_id, priority)
 
+        elif constraint_kind == 'sla_capacity':
+            sla_capacity = source_constraint.sla_capacity
+            capacity_gbps = sla_capacity.capacity_gbps
+            update_constraint_sla_capacity(target_constraints, capacity_gbps)
+
+        elif constraint_kind == 'sla_latency':
+            sla_latency = source_constraint.sla_latency
+            e2e_latency_ms = sla_latency.e2e_latency_ms
+            update_constraint_sla_latency(target_constraints, e2e_latency_ms)
+
         elif constraint_kind == 'sla_availability':
             sla_availability = source_constraint.sla_availability
             num_disjoint_paths = sla_availability.num_disjoint_paths
             all_active = sla_availability.all_active
-            update_constraint_sla_availability(target_constraints, num_disjoint_paths, all_active)
+            availability = sla_availability.availability
+            update_constraint_sla_availability(target_constraints, num_disjoint_paths, all_active, availability)
+
+        elif constraint_kind == 'sla_isolation':
+            sla_isolation = source_constraint.sla_isolation
+            isolation_levels = sla_isolation.isolation_level
+            update_constraint_sla_isolation(target_constraints, isolation_levels)
 
         else:
             raise NotImplementedError('Constraint({:s})'.format(grpc_message_to_json_string(source_constraint)))