diff --git a/src/pathcomp/frontend/service/algorithms/KDisjointPathAlgorithm.py b/src/pathcomp/frontend/service/algorithms/KDisjointPathAlgorithm.py
index a9fc4fa3d499f634f021d9ebbb4a749b4f8715c7..a6d39ee36949e075323613fceb71da5c77354fe5 100644
--- a/src/pathcomp/frontend/service/algorithms/KDisjointPathAlgorithm.py
+++ b/src/pathcomp/frontend/service/algorithms/KDisjointPathAlgorithm.py
@@ -54,13 +54,15 @@ class KDisjointPathAlgorithm(_Algorithm):
             self.services_details.setdefault(service_key, service_details)
 
             for constraint in service.service_constraints:
-                if constraint.WhichOneof('constraint') == 'custom':
+                kind = constraint.WhichOneof('constraint')
+
+                if kind == 'custom':
                     constraint_type = constraint.custom.constraint_type
                     if constraint_type not in CUSTOM_CONSTRAINTS: continue
                     constraint_value = constraint.custom.constraint_value
                     constraints[constraint_type] = constraint_value
 
-                if constraint.WhichOneof('constraint') == 'endpoint_location':
+                elif kind == 'endpoint_location':
                     endpoint_id = constraint.endpoint_location.endpoint_id
                     device_uuid = endpoint_id.device_id.device_uuid.uuid
                     device_uuid = self.device_name_mapping.get(device_uuid, device_uuid)
@@ -73,7 +75,7 @@ class KDisjointPathAlgorithm(_Algorithm):
                     site_id = constraint.endpoint_location.location.region
                     endpoints.setdefault((device_uuid, endpoint_uuid), dict())['site_id'] = site_id
 
-                if constraint.WhichOneof('constraint') == 'endpoint_priority':
+                elif kind == 'endpoint_priority':
                     endpoint_id = constraint.endpoint_priority.endpoint_id
                     device_uuid = endpoint_id.device_id.device_uuid.uuid
                     device_uuid = self.device_name_mapping.get(device_uuid, device_uuid)
@@ -82,9 +84,18 @@ class KDisjointPathAlgorithm(_Algorithm):
                     priority = constraint.endpoint_priority.priority
                     endpoints.setdefault((device_uuid, endpoint_uuid), dict())['priority'] = priority
 
+                elif kind == 'sla_capacity':
+                    capacity_gbps = constraint.sla_capacity.capacity_gbps
+                    constraints['bandwidth[gbps]'] = str(capacity_gbps)
+
+                elif kind == 'sla_latency':
+                    e2e_latency_ms = constraint.sla_latency.e2e_latency_ms
+                    constraints['latency[ms]'] = str(e2e_latency_ms)
+
             # TODO: ensure these constraints are provided in the request
             if 'bandwidth[gbps]' not in constraints: constraints['bandwidth[gbps]'] = '20.0'
             if 'latency[ms]' not in constraints: constraints['latency[ms]'] = '20.0'
+            #if 'jitter[us]' not in constraints: constraints['jitter[us]'] = '50.0'
 
     def get_link_from_endpoint(self, endpoint : Dict) -> Tuple[Dict, Link]:
         device_uuid = endpoint['device_id']
diff --git a/src/pathcomp/frontend/service/algorithms/tools/ComposeRequest.py b/src/pathcomp/frontend/service/algorithms/tools/ComposeRequest.py
index bfb4da05fb57bef03fb94fc8973271ceb45f619a..ee85f0bb083500c655e78798bbcd2bd00e8a4501 100644
--- a/src/pathcomp/frontend/service/algorithms/tools/ComposeRequest.py
+++ b/src/pathcomp/frontend/service/algorithms/tools/ComposeRequest.py
@@ -73,17 +73,22 @@ def compose_latency_characteristics(fixed_latency_characteristic : str) -> Dict:
     return {'fixed-latency-characteristic': fixed_latency_characteristic}
 
 def compose_constraint(constraint : Constraint) -> Dict:
-    if constraint.WhichOneof('constraint') != 'custom':
-        str_constraint = grpc_message_to_json_string(constraint)
-        LOGGER.warning('Ignoring unsupported Constraint({:s})'.format(str_constraint))
-        return None
-    constraint_type = constraint.custom.constraint_type
-    if constraint_type in {'diversity'}:
-        str_constraint = grpc_message_to_json_string(constraint)
-        LOGGER.warning('Ignoring unsupported Constraint({:s})'.format(str_constraint))
-        return None
-    constraint_value = constraint.custom.constraint_value
-    return {'constraint_type': constraint_type, 'constraint_value': constraint_value}
+    kind = constraint.WhichOneof('constraint')
+    if kind == 'custom':
+        constraint_type = constraint.custom.constraint_type
+        if constraint_type in {'bandwidth[gbps]', 'latency[ms]', 'jitter[us]'}:
+            constraint_value = constraint.custom.constraint_value
+            return {'constraint_type': constraint_type, 'constraint_value': constraint_value}
+    elif kind == 'sla_capacity':
+        capacity_gbps = constraint.sla_capacity.capacity_gbps
+        return {'constraint_type': 'bandwidth[gbps]', 'constraint_value': str(capacity_gbps)}
+    elif kind == 'sla_latency':
+        e2e_latency_ms = constraint.sla_latency.e2e_latency_ms
+        return {'constraint_type': 'latency[ms]', 'constraint_value': str(e2e_latency_ms)}
+
+    str_constraint = grpc_message_to_json_string(constraint)
+    LOGGER.warning('Ignoring unsupported Constraint({:s})'.format(str_constraint))
+    return None
 
 def compose_device(grpc_device : Device) -> Dict:
     device_uuid = grpc_device.device_id.device_uuid.uuid
@@ -144,6 +149,8 @@ def compose_service(grpc_service : Service) -> Dict:
         constraints.append({'constraint_type': 'bandwidth[gbps]', 'constraint_value': '20.0'})
     if 'latency[ms]' not in constraint_types:
         constraints.append({'constraint_type': 'latency[ms]', 'constraint_value': '20.0'})
+    #if 'jitter[us]' not in constraint_types:
+    #    constraints.append({'constraint_type': 'jitter[us]', 'constraint_value': '50.0'})
 
     return {
         'serviceId': service_id,
diff --git a/src/pathcomp/frontend/tests/Objects_A_B_C.py b/src/pathcomp/frontend/tests/Objects_A_B_C.py
index ca9764a34ef0550351c4a0ebcdbd041805c49dde..f26d74ce4c665663735bae69dcfb5a4e14311bfa 100644
--- a/src/pathcomp/frontend/tests/Objects_A_B_C.py
+++ b/src/pathcomp/frontend/tests/Objects_A_B_C.py
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME
-from common.tools.object_factory.Constraint import json_constraint_custom
+from common.tools.object_factory.Constraint import json_constraint_sla_capacity, json_constraint_sla_latency
 from common.tools.object_factory.Context import json_context, json_context_id
 from common.tools.object_factory.Device import json_device_emulated_packet_router_disabled, json_device_id
 from common.tools.object_factory.EndPoint import json_endpoints
@@ -97,8 +97,8 @@ LINK_C2_C3_ID, LINK_C2_C3 = compose_link(DEVICE_C2_ENDPOINTS[1], DEVICE_C3_ENDPO
 
 # ----- Service --------------------------------------------------------------------------------------------------------
 SERVICE_A1_B1 = compose_service(DEVICE_A1_ENDPOINTS[2], DEVICE_B1_ENDPOINTS[2], constraints=[
-    json_constraint_custom('bandwidth[gbps]', 10.0),
-    json_constraint_custom('latency[ms]',     12.0),
+    json_constraint_sla_capacity(10.0),
+    json_constraint_sla_latency(12.0),
 ])
 
 # ----- Containers -----------------------------------------------------------------------------------------------------
diff --git a/src/pathcomp/frontend/tests/Objects_DC_CSGW_TN.py b/src/pathcomp/frontend/tests/Objects_DC_CSGW_TN.py
index 1d057c10edcea30e1bf38f63d8a1ad0c6a0a4d46..9ee784e1f76026416bca9824aa8e54e2c4f874f2 100644
--- a/src/pathcomp/frontend/tests/Objects_DC_CSGW_TN.py
+++ b/src/pathcomp/frontend/tests/Objects_DC_CSGW_TN.py
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME
-from common.tools.object_factory.Constraint import json_constraint_custom
+from common.tools.object_factory.Constraint import json_constraint_sla_capacity, json_constraint_sla_latency
 from common.tools.object_factory.Context import json_context, json_context_id
 from common.tools.object_factory.Device import (
     json_device_emulated_connect_rules, json_device_emulated_datacenter_disabled,
@@ -139,8 +139,8 @@ LINK_TNR2_TNR4_ID, LINK_TNR2_TNR4 = compose_link(DEV_TNR2_EPS[4], DEV_TNR4_EPS[4
 
 # ----- Service --------------------------------------------------------------------------------------------------------
 SERVICE_DC1GW_DC2GW = compose_service(DEV_DC1GW_EPS[2], DEV_DC2GW_EPS[2], constraints=[
-    json_constraint_custom('bandwidth[gbps]', 10.0),
-    json_constraint_custom('latency[ms]',     20.0),
+    json_constraint_sla_capacity(10.0),
+    json_constraint_sla_latency(20.0),
 ])
 
 # ----- Containers -----------------------------------------------------------------------------------------------------
diff --git a/src/pathcomp/frontend/tests/Objects_DC_CSGW_TN_OLS.py b/src/pathcomp/frontend/tests/Objects_DC_CSGW_TN_OLS.py
index 8f6e88719f4019edbeea36c7b4a641fbd7abbea4..71510d088746bd791e4671686dd5114874dd5a2a 100644
--- a/src/pathcomp/frontend/tests/Objects_DC_CSGW_TN_OLS.py
+++ b/src/pathcomp/frontend/tests/Objects_DC_CSGW_TN_OLS.py
@@ -14,7 +14,7 @@
 
 import uuid
 from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME
-from common.tools.object_factory.Constraint import json_constraint_custom
+from common.tools.object_factory.Constraint import json_constraint_sla_capacity, json_constraint_sla_latency
 from common.tools.object_factory.Context import json_context, json_context_id
 from common.tools.object_factory.Device import (
     json_device_emulated_connect_rules, json_device_emulated_datacenter_disabled,
@@ -149,8 +149,8 @@ LINK_TNR4_TOLS_ID, LINK_TNR4_TOLS = compose_link(DEV_TNR4_EPS[2], DEV_TOLS_EPS[3
 
 # ----- Service --------------------------------------------------------------------------------------------------------
 SERVICE_DC1GW_DC2GW = compose_service(DEV_DC1GW_EPS[2], DEV_DC2GW_EPS[2], constraints=[
-    json_constraint_custom('bandwidth[gbps]', 10.0),
-    json_constraint_custom('latency[ms]',     20.0),
+    json_constraint_sla_capacity(10.0),
+    json_constraint_sla_latency(20.0),
 ])
 
 # ----- Containers -----------------------------------------------------------------------------------------------------
diff --git a/src/pathcomp/frontend/tests/test_unitary.py b/src/pathcomp/frontend/tests/test_unitary.py
index d0638623179d2774636f6ba5216232bf87ba330a..8088259b80b8ade2669568b74f004dcfa631dd9c 100644
--- a/src/pathcomp/frontend/tests/test_unitary.py
+++ b/src/pathcomp/frontend/tests/test_unitary.py
@@ -18,7 +18,7 @@ from common.proto.pathcomp_pb2 import PathCompRequest
 from common.tools.grpc.Tools import grpc_message_to_json
 from common.tools.object_factory.Constraint import (
     json_constraint_custom, json_constraint_endpoint_location_region, json_constraint_endpoint_priority,
-    json_constraint_sla_availability)
+    json_constraint_sla_availability, json_constraint_sla_capacity, json_constraint_sla_latency)
 from common.tools.object_factory.Device import json_device_id
 from common.tools.object_factory.EndPoint import json_endpoint_id
 from common.tools.object_factory.Service import json_service_l3nm_planned
@@ -89,8 +89,8 @@ def test_request_service_shortestpath(
 
     request_services = copy.deepcopy(SERVICES)
     #request_services[0]['service_constraints'] = [
-    #    json_constraint_custom('bandwidth[gbps]', 1000.0),
-    #    json_constraint_custom('latency[ms]',     1200.0),
+    #    json_constraint_sla_capacity(1000.0),
+    #    json_constraint_sla_latency(1200.0),
     #]
     pathcomp_request = PathCompRequest(services=request_services)
     pathcomp_request.shortest_path.Clear()  # hack to select the shortest path algorithm that has no attributes
@@ -201,9 +201,9 @@ def test_request_service_kdisjointpath(
     ]
     
     endpoint_ids, constraints = [], [
-        json_constraint_custom('bandwidth[gbps]', 10.0),
-        json_constraint_custom('latency[ms]',     12.0),
-        json_constraint_sla_availability(2, True),
+        json_constraint_sla_capacity(10.0),
+        json_constraint_sla_latency(12.0),
+        json_constraint_sla_availability(2, True, 50.0),
         json_constraint_custom('diversity', {'end-to-end-diverse': 'all-other-accesses'}),
     ]
 
diff --git a/src/pathcomp/misc/example-results-kdisjointpaths.json b/src/pathcomp/misc/example-results-kdisjointpaths.json
index 9eda25d484e45db53471ea3f655d511cbcc42c18..c1dbf3a3c7bc6335f0d0c765b6622ce070b7774e 100644
--- a/src/pathcomp/misc/example-results-kdisjointpaths.json
+++ b/src/pathcomp/misc/example-results-kdisjointpaths.json
@@ -64,8 +64,8 @@
             ],
             "service_status": {"service_status": "SERVICESTATUS_PLANNED"},
             "service_constraints": [
-                {"custom": {"constraint_type": "bandwidth[gbps]", "constraint_value": "10.0"}},
-                {"custom": {"constraint_type": "latency[ms]", "constraint_value": "12.0"}}
+                {"sla_capacity": {"capacity_gbps": 10.0}},
+                {"sla_latency": {"e2e_latency_ms": 12.0}}
             ],
             "service_config": {"config_rules": []}
         }