diff --git a/src/policy/pom.xml b/src/policy/pom.xml
index 267006311f82c11bce4db29f2d114f30c1832f88..ce873a2d8a1078ea00bf47230f4eca17b20f4442 100644
--- a/src/policy/pom.xml
+++ b/src/policy/pom.xml
@@ -19,7 +19,7 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <groupId>eu.teraflow</groupId>
+    <groupId>org.etsi.tfs</groupId>
     <artifactId>policy</artifactId>
     <version>0.1.0</version>
     <name>TeraFlow Policy Component</name>
diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyGateway.java b/src/policy/src/main/java/org/etsi/tfs/policy/PolicyGateway.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/PolicyGateway.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/PolicyGateway.java
index c5570af74136ea4b8afc465f10fcb7d269db41a0..2dd059ac898ef50ef9ed2859d55d60962e723f42 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/PolicyGateway.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/PolicyGateway.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
 import policy.PolicyService;
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyGatewayImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/PolicyGatewayImpl.java
similarity index 99%
rename from src/policy/src/main/java/eu/teraflow/policy/PolicyGatewayImpl.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/PolicyGatewayImpl.java
index 30e888d9fab1aae535dca345c7c56e28218bd2c2..c7bb58e5244f5b969bc468aaf1c6c3a4d27c3cb3 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/PolicyGatewayImpl.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/PolicyGatewayImpl.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
 import context.ContextOuterClass.ServiceId;
 import io.quarkus.grpc.GrpcService;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionFieldsGetter.java b/src/policy/src/main/java/org/etsi/tfs/policy/PolicyRuleConditionFieldsGetter.java
similarity index 89%
rename from src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionFieldsGetter.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/PolicyRuleConditionFieldsGetter.java
index 89330354ef0fae7ce0b4834e9f57640b3e8dc027..8a863abaa71388e7fb52a00327489fc4625a6744 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionFieldsGetter.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/PolicyRuleConditionFieldsGetter.java
@@ -14,14 +14,14 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
-import eu.teraflow.policy.model.NumericalOperator;
-import eu.teraflow.policy.model.PolicyRuleCondition;
-import eu.teraflow.policy.monitoring.model.KpiValue;
 import java.util.List;
 import java.util.stream.Collectors;
 import javax.inject.Singleton;
+import org.etsi.tfs.policy.model.NumericalOperator;
+import org.etsi.tfs.policy.model.PolicyRuleCondition;
+import org.etsi.tfs.policy.monitoring.model.KpiValue;
 
 @Singleton
 public class PolicyRuleConditionFieldsGetter {
diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionValidator.java b/src/policy/src/main/java/org/etsi/tfs/policy/PolicyRuleConditionValidator.java
similarity index 93%
rename from src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionValidator.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/PolicyRuleConditionValidator.java
index a1556ffbd715e0065681dcfa6001dd041ff89ef0..3e40cdb6cf2bfad989c1f0a36db41f09d7aef32b 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/PolicyRuleConditionValidator.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/PolicyRuleConditionValidator.java
@@ -14,19 +14,19 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
-
-import eu.teraflow.policy.context.ContextService;
-import eu.teraflow.policy.context.model.Device;
-import eu.teraflow.policy.context.model.EndPointId;
-import eu.teraflow.policy.context.model.Service;
-import eu.teraflow.policy.context.model.ServiceId;
-import eu.teraflow.policy.model.PolicyRuleService;
+package org.etsi.tfs.policy;
+
 import io.smallrye.mutiny.Uni;
 import java.util.ArrayList;
 import java.util.List;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
+import org.etsi.tfs.policy.context.ContextService;
+import org.etsi.tfs.policy.context.model.Device;
+import org.etsi.tfs.policy.context.model.EndPointId;
+import org.etsi.tfs.policy.context.model.Service;
+import org.etsi.tfs.policy.context.model.ServiceId;
+import org.etsi.tfs.policy.model.PolicyRuleService;
 import org.jboss.logging.Logger;
 
 @ApplicationScoped
diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyService.java b/src/policy/src/main/java/org/etsi/tfs/policy/PolicyService.java
similarity index 85%
rename from src/policy/src/main/java/eu/teraflow/policy/PolicyService.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/PolicyService.java
index 556e350322de1df29c38cbc852106b4845e25095..c0521c1925fbd2ff5e5762b9802b3f7f43c33788 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/PolicyService.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/PolicyService.java
@@ -14,12 +14,12 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
-import eu.teraflow.policy.model.PolicyRuleDevice;
-import eu.teraflow.policy.model.PolicyRuleService;
-import eu.teraflow.policy.model.PolicyRuleState;
 import io.smallrye.mutiny.Uni;
+import org.etsi.tfs.policy.model.PolicyRuleDevice;
+import org.etsi.tfs.policy.model.PolicyRuleService;
+import org.etsi.tfs.policy.model.PolicyRuleState;
 
 public interface PolicyService {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/PolicyServiceImpl.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/PolicyServiceImpl.java
index 48ca52dd6e4337441c433cafc1bef8bc4f6eb181..b5f1d85eb4d55668e16c0bdf32212e6ef559b8c9 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/PolicyServiceImpl.java
@@ -14,37 +14,8 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
-
-import eu.teraflow.policy.context.ContextService;
-import eu.teraflow.policy.context.model.ConfigActionEnum;
-import eu.teraflow.policy.context.model.ConfigRule;
-import eu.teraflow.policy.context.model.ConfigRuleCustom;
-import eu.teraflow.policy.context.model.ConfigRuleTypeCustom;
-import eu.teraflow.policy.context.model.Constraint;
-import eu.teraflow.policy.context.model.ConstraintCustom;
-import eu.teraflow.policy.context.model.ConstraintTypeCustom;
-import eu.teraflow.policy.context.model.ServiceConfig;
-import eu.teraflow.policy.device.DeviceService;
-import eu.teraflow.policy.model.BooleanOperator;
-import eu.teraflow.policy.model.PolicyRule;
-import eu.teraflow.policy.model.PolicyRuleAction;
-import eu.teraflow.policy.model.PolicyRuleActionConfig;
-import eu.teraflow.policy.model.PolicyRuleActionEnum;
-import eu.teraflow.policy.model.PolicyRuleBasic;
-import eu.teraflow.policy.model.PolicyRuleCondition;
-import eu.teraflow.policy.model.PolicyRuleDevice;
-import eu.teraflow.policy.model.PolicyRuleService;
-import eu.teraflow.policy.model.PolicyRuleState;
-import eu.teraflow.policy.model.PolicyRuleStateEnum;
-import eu.teraflow.policy.model.PolicyRuleTypeDevice;
-import eu.teraflow.policy.model.PolicyRuleTypeService;
-import eu.teraflow.policy.monitoring.MonitoringService;
-import eu.teraflow.policy.monitoring.model.AlarmDescriptor;
-import eu.teraflow.policy.monitoring.model.AlarmResponse;
-import eu.teraflow.policy.monitoring.model.AlarmSubscription;
-import eu.teraflow.policy.monitoring.model.KpiValueRange;
-import eu.teraflow.policy.service.ServiceService;
+package org.etsi.tfs.policy;
+
 import io.smallrye.mutiny.Multi;
 import io.smallrye.mutiny.Uni;
 import io.smallrye.mutiny.groups.UniJoin;
@@ -58,6 +29,35 @@ import java.util.Random;
 import java.util.concurrent.ConcurrentHashMap;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
+import org.etsi.tfs.policy.context.ContextService;
+import org.etsi.tfs.policy.context.model.ConfigActionEnum;
+import org.etsi.tfs.policy.context.model.ConfigRule;
+import org.etsi.tfs.policy.context.model.ConfigRuleCustom;
+import org.etsi.tfs.policy.context.model.ConfigRuleTypeCustom;
+import org.etsi.tfs.policy.context.model.Constraint;
+import org.etsi.tfs.policy.context.model.ConstraintCustom;
+import org.etsi.tfs.policy.context.model.ConstraintTypeCustom;
+import org.etsi.tfs.policy.context.model.ServiceConfig;
+import org.etsi.tfs.policy.device.DeviceService;
+import org.etsi.tfs.policy.model.BooleanOperator;
+import org.etsi.tfs.policy.model.PolicyRule;
+import org.etsi.tfs.policy.model.PolicyRuleAction;
+import org.etsi.tfs.policy.model.PolicyRuleActionConfig;
+import org.etsi.tfs.policy.model.PolicyRuleActionEnum;
+import org.etsi.tfs.policy.model.PolicyRuleBasic;
+import org.etsi.tfs.policy.model.PolicyRuleCondition;
+import org.etsi.tfs.policy.model.PolicyRuleDevice;
+import org.etsi.tfs.policy.model.PolicyRuleService;
+import org.etsi.tfs.policy.model.PolicyRuleState;
+import org.etsi.tfs.policy.model.PolicyRuleStateEnum;
+import org.etsi.tfs.policy.model.PolicyRuleTypeDevice;
+import org.etsi.tfs.policy.model.PolicyRuleTypeService;
+import org.etsi.tfs.policy.monitoring.MonitoringService;
+import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor;
+import org.etsi.tfs.policy.monitoring.model.AlarmResponse;
+import org.etsi.tfs.policy.monitoring.model.AlarmSubscription;
+import org.etsi.tfs.policy.monitoring.model.KpiValueRange;
+import org.etsi.tfs.policy.service.ServiceService;
 import org.jboss.logging.Logger;
 
 @ApplicationScoped
diff --git a/src/policy/src/main/java/eu/teraflow/policy/Serializer.java b/src/policy/src/main/java/org/etsi/tfs/policy/Serializer.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/Serializer.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/Serializer.java
index 4f0c600923b6004d3e4e260d9dad973d1396830c..b7de8ff99fe820ad80a555c97a42accfe21b1d7b 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/Serializer.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/Serializer.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
 import acl.Acl;
 import context.ContextOuterClass;
@@ -25,73 +25,6 @@ import context.ContextOuterClass.DeviceId;
 import context.ContextOuterClass.DeviceOperationalStatusEnum;
 import context.ContextOuterClass.Location.LocationCase;
 import context.ContextOuterClass.Uuid;
-import eu.teraflow.policy.acl.AclAction;
-import eu.teraflow.policy.acl.AclEntry;
-import eu.teraflow.policy.acl.AclForwardActionEnum;
-import eu.teraflow.policy.acl.AclLogActionEnum;
-import eu.teraflow.policy.acl.AclMatch;
-import eu.teraflow.policy.acl.AclRuleSet;
-import eu.teraflow.policy.acl.AclRuleTypeEnum;
-import eu.teraflow.policy.context.model.ConfigActionEnum;
-import eu.teraflow.policy.context.model.ConfigRule;
-import eu.teraflow.policy.context.model.ConfigRuleAcl;
-import eu.teraflow.policy.context.model.ConfigRuleCustom;
-import eu.teraflow.policy.context.model.ConfigRuleTypeAcl;
-import eu.teraflow.policy.context.model.ConfigRuleTypeCustom;
-import eu.teraflow.policy.context.model.Constraint;
-import eu.teraflow.policy.context.model.ConstraintCustom;
-import eu.teraflow.policy.context.model.ConstraintEndPointLocation;
-import eu.teraflow.policy.context.model.ConstraintSchedule;
-import eu.teraflow.policy.context.model.ConstraintSlaAvailability;
-import eu.teraflow.policy.context.model.ConstraintSlaCapacity;
-import eu.teraflow.policy.context.model.ConstraintSlaIsolationLevel;
-import eu.teraflow.policy.context.model.ConstraintSlaLatency;
-import eu.teraflow.policy.context.model.ConstraintTypeCustom;
-import eu.teraflow.policy.context.model.ConstraintTypeEndPointLocation;
-import eu.teraflow.policy.context.model.ConstraintTypeSchedule;
-import eu.teraflow.policy.context.model.ConstraintTypeSlaAvailability;
-import eu.teraflow.policy.context.model.ConstraintTypeSlaCapacity;
-import eu.teraflow.policy.context.model.ConstraintTypeSlaIsolationLevel;
-import eu.teraflow.policy.context.model.ConstraintTypeSlaLatency;
-import eu.teraflow.policy.context.model.Device;
-import eu.teraflow.policy.context.model.DeviceConfig;
-import eu.teraflow.policy.context.model.DeviceDriverEnum;
-import eu.teraflow.policy.context.model.DeviceOperationalStatus;
-import eu.teraflow.policy.context.model.Empty;
-import eu.teraflow.policy.context.model.EndPoint;
-import eu.teraflow.policy.context.model.EndPointId;
-import eu.teraflow.policy.context.model.Event;
-import eu.teraflow.policy.context.model.EventTypeEnum;
-import eu.teraflow.policy.context.model.GpsPosition;
-import eu.teraflow.policy.context.model.IsolationLevelEnum;
-import eu.teraflow.policy.context.model.Location;
-import eu.teraflow.policy.context.model.LocationTypeGpsPosition;
-import eu.teraflow.policy.context.model.LocationTypeRegion;
-import eu.teraflow.policy.context.model.Service;
-import eu.teraflow.policy.context.model.ServiceConfig;
-import eu.teraflow.policy.context.model.ServiceId;
-import eu.teraflow.policy.context.model.ServiceStatus;
-import eu.teraflow.policy.context.model.ServiceStatusEnum;
-import eu.teraflow.policy.context.model.ServiceTypeEnum;
-import eu.teraflow.policy.context.model.SliceId;
-import eu.teraflow.policy.context.model.TopologyId;
-import eu.teraflow.policy.kpi_sample_types.model.KpiSampleType;
-import eu.teraflow.policy.model.*;
-import eu.teraflow.policy.monitoring.model.AlarmDescriptor;
-import eu.teraflow.policy.monitoring.model.AlarmResponse;
-import eu.teraflow.policy.monitoring.model.AlarmSubscription;
-import eu.teraflow.policy.monitoring.model.BooleanKpiValue;
-import eu.teraflow.policy.monitoring.model.FloatKpiValue;
-import eu.teraflow.policy.monitoring.model.IntegerKpiValue;
-import eu.teraflow.policy.monitoring.model.Kpi;
-import eu.teraflow.policy.monitoring.model.KpiDescriptor;
-import eu.teraflow.policy.monitoring.model.KpiValue;
-import eu.teraflow.policy.monitoring.model.KpiValueRange;
-import eu.teraflow.policy.monitoring.model.LongKpiValue;
-import eu.teraflow.policy.monitoring.model.MonitorKpiRequest;
-import eu.teraflow.policy.monitoring.model.StringKpiValue;
-import eu.teraflow.policy.monitoring.model.SubsDescriptor;
-import eu.teraflow.policy.monitoring.model.SubsResponse;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -101,6 +34,73 @@ import monitoring.Monitoring;
 import monitoring.Monitoring.AlarmID;
 import monitoring.Monitoring.KpiId;
 import monitoring.Monitoring.SubscriptionID;
+import org.etsi.tfs.policy.acl.AclAction;
+import org.etsi.tfs.policy.acl.AclEntry;
+import org.etsi.tfs.policy.acl.AclForwardActionEnum;
+import org.etsi.tfs.policy.acl.AclLogActionEnum;
+import org.etsi.tfs.policy.acl.AclMatch;
+import org.etsi.tfs.policy.acl.AclRuleSet;
+import org.etsi.tfs.policy.acl.AclRuleTypeEnum;
+import org.etsi.tfs.policy.context.model.ConfigActionEnum;
+import org.etsi.tfs.policy.context.model.ConfigRule;
+import org.etsi.tfs.policy.context.model.ConfigRuleAcl;
+import org.etsi.tfs.policy.context.model.ConfigRuleCustom;
+import org.etsi.tfs.policy.context.model.ConfigRuleTypeAcl;
+import org.etsi.tfs.policy.context.model.ConfigRuleTypeCustom;
+import org.etsi.tfs.policy.context.model.Constraint;
+import org.etsi.tfs.policy.context.model.ConstraintCustom;
+import org.etsi.tfs.policy.context.model.ConstraintEndPointLocation;
+import org.etsi.tfs.policy.context.model.ConstraintSchedule;
+import org.etsi.tfs.policy.context.model.ConstraintSlaAvailability;
+import org.etsi.tfs.policy.context.model.ConstraintSlaCapacity;
+import org.etsi.tfs.policy.context.model.ConstraintSlaIsolationLevel;
+import org.etsi.tfs.policy.context.model.ConstraintSlaLatency;
+import org.etsi.tfs.policy.context.model.ConstraintTypeCustom;
+import org.etsi.tfs.policy.context.model.ConstraintTypeEndPointLocation;
+import org.etsi.tfs.policy.context.model.ConstraintTypeSchedule;
+import org.etsi.tfs.policy.context.model.ConstraintTypeSlaAvailability;
+import org.etsi.tfs.policy.context.model.ConstraintTypeSlaCapacity;
+import org.etsi.tfs.policy.context.model.ConstraintTypeSlaIsolationLevel;
+import org.etsi.tfs.policy.context.model.ConstraintTypeSlaLatency;
+import org.etsi.tfs.policy.context.model.Device;
+import org.etsi.tfs.policy.context.model.DeviceConfig;
+import org.etsi.tfs.policy.context.model.DeviceDriverEnum;
+import org.etsi.tfs.policy.context.model.DeviceOperationalStatus;
+import org.etsi.tfs.policy.context.model.Empty;
+import org.etsi.tfs.policy.context.model.EndPoint;
+import org.etsi.tfs.policy.context.model.EndPointId;
+import org.etsi.tfs.policy.context.model.Event;
+import org.etsi.tfs.policy.context.model.EventTypeEnum;
+import org.etsi.tfs.policy.context.model.GpsPosition;
+import org.etsi.tfs.policy.context.model.IsolationLevelEnum;
+import org.etsi.tfs.policy.context.model.Location;
+import org.etsi.tfs.policy.context.model.LocationTypeGpsPosition;
+import org.etsi.tfs.policy.context.model.LocationTypeRegion;
+import org.etsi.tfs.policy.context.model.Service;
+import org.etsi.tfs.policy.context.model.ServiceConfig;
+import org.etsi.tfs.policy.context.model.ServiceId;
+import org.etsi.tfs.policy.context.model.ServiceStatus;
+import org.etsi.tfs.policy.context.model.ServiceStatusEnum;
+import org.etsi.tfs.policy.context.model.ServiceTypeEnum;
+import org.etsi.tfs.policy.context.model.SliceId;
+import org.etsi.tfs.policy.context.model.TopologyId;
+import org.etsi.tfs.policy.kpi_sample_types.model.KpiSampleType;
+import org.etsi.tfs.policy.model.*;
+import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor;
+import org.etsi.tfs.policy.monitoring.model.AlarmResponse;
+import org.etsi.tfs.policy.monitoring.model.AlarmSubscription;
+import org.etsi.tfs.policy.monitoring.model.BooleanKpiValue;
+import org.etsi.tfs.policy.monitoring.model.FloatKpiValue;
+import org.etsi.tfs.policy.monitoring.model.IntegerKpiValue;
+import org.etsi.tfs.policy.monitoring.model.Kpi;
+import org.etsi.tfs.policy.monitoring.model.KpiDescriptor;
+import org.etsi.tfs.policy.monitoring.model.KpiValue;
+import org.etsi.tfs.policy.monitoring.model.KpiValueRange;
+import org.etsi.tfs.policy.monitoring.model.LongKpiValue;
+import org.etsi.tfs.policy.monitoring.model.MonitorKpiRequest;
+import org.etsi.tfs.policy.monitoring.model.StringKpiValue;
+import org.etsi.tfs.policy.monitoring.model.SubsDescriptor;
+import org.etsi.tfs.policy.monitoring.model.SubsResponse;
 import policy.Policy;
 import policy.Policy.PolicyRuleId;
 import policy.PolicyAction;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/SimpleLivenessCheck.java b/src/policy/src/main/java/org/etsi/tfs/policy/SimpleLivenessCheck.java
similarity index 97%
rename from src/policy/src/main/java/eu/teraflow/policy/SimpleLivenessCheck.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/SimpleLivenessCheck.java
index ec0859cb73fca89ec8c0b0d2651f5752baa8c590..b03d92076d04cf4d0c4a8985a4439b78fbf51cc4 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/SimpleLivenessCheck.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/SimpleLivenessCheck.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
 import javax.enterprise.context.ApplicationScoped;
 import org.eclipse.microprofile.health.HealthCheck;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/SimpleReadinessCheck.java b/src/policy/src/main/java/org/etsi/tfs/policy/SimpleReadinessCheck.java
similarity index 97%
rename from src/policy/src/main/java/eu/teraflow/policy/SimpleReadinessCheck.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/SimpleReadinessCheck.java
index 7bbfd38c3f8abff20daaf5633de79237db54b9c6..93728b48c8e66fdd93659f11be3d79f96572cd40 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/SimpleReadinessCheck.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/SimpleReadinessCheck.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
 import javax.enterprise.context.ApplicationScoped;
 import org.eclipse.microprofile.health.HealthCheck;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/acl/AclAction.java b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclAction.java
similarity index 97%
rename from src/policy/src/main/java/eu/teraflow/policy/acl/AclAction.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/acl/AclAction.java
index eb2fdc33be1b4d20020fe68b2fb29845a265c09a..e2328b184f8a50e2bb9c992962f1029e940e53e0 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/acl/AclAction.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclAction.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.acl;
+package org.etsi.tfs.policy.acl;
 
 public class AclAction {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/acl/AclEntry.java b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclEntry.java
similarity index 97%
rename from src/policy/src/main/java/eu/teraflow/policy/acl/AclEntry.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/acl/AclEntry.java
index 08ff7b0add7bf1a4531790b81b5a5780e03f920a..69d44e858c4541edd4f81976b6a1c78810c12c51 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/acl/AclEntry.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclEntry.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.acl;
+package org.etsi.tfs.policy.acl;
 
 public class AclEntry {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/acl/AclForwardActionEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclForwardActionEnum.java
similarity index 95%
rename from src/policy/src/main/java/eu/teraflow/policy/acl/AclForwardActionEnum.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/acl/AclForwardActionEnum.java
index b42fe12e6af90881035686c7166cd0d03f9b063a..667982d7ba49859292204b18899e9af5046a10bf 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/acl/AclForwardActionEnum.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclForwardActionEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.acl;
+package org.etsi.tfs.policy.acl;
 
 public enum AclForwardActionEnum {
     UNDEFINED,
diff --git a/src/policy/src/main/java/eu/teraflow/policy/acl/AclLogActionEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclLogActionEnum.java
similarity index 95%
rename from src/policy/src/main/java/eu/teraflow/policy/acl/AclLogActionEnum.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/acl/AclLogActionEnum.java
index df814f35d7694403a54bb509340fed7efdd07bc0..cd10e94216a7a44880efd76e24e135f32156487e 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/acl/AclLogActionEnum.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclLogActionEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.acl;
+package org.etsi.tfs.policy.acl;
 
 public enum AclLogActionEnum {
     UNDEFINED,
diff --git a/src/policy/src/main/java/eu/teraflow/policy/acl/AclMatch.java b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclMatch.java
similarity index 98%
rename from src/policy/src/main/java/eu/teraflow/policy/acl/AclMatch.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/acl/AclMatch.java
index b6ec8ff76de2f900f2080560369da08c23281f97..e9464fce7522be4f913db6cc66e8c815b4c6ae7a 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/acl/AclMatch.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclMatch.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.acl;
+package org.etsi.tfs.policy.acl;
 
 public class AclMatch {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/acl/AclRuleSet.java b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclRuleSet.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/acl/AclRuleSet.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/acl/AclRuleSet.java
index 584ae60977ce5984c8cb78e15d3ce24d9a344581..aa645725cef23502461e2b8a85afde4fb6d839b5 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/acl/AclRuleSet.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclRuleSet.java
@@ -14,10 +14,10 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.acl;
+package org.etsi.tfs.policy.acl;
 
-import eu.teraflow.policy.common.Util;
 import java.util.List;
+import org.etsi.tfs.policy.common.Util;
 
 public class AclRuleSet {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/acl/AclRuleTypeEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclRuleTypeEnum.java
similarity index 95%
rename from src/policy/src/main/java/eu/teraflow/policy/acl/AclRuleTypeEnum.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/acl/AclRuleTypeEnum.java
index 70788feda321df6d01cea25315d4440ccc05c551..a0dba786e78cd55f207624b37a1fdd8e21640bc7 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/acl/AclRuleTypeEnum.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/acl/AclRuleTypeEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.acl;
+package org.etsi.tfs.policy.acl;
 
 public enum AclRuleTypeEnum {
     UNDEFINED,
diff --git a/src/policy/src/main/java/eu/teraflow/policy/common/Util.java b/src/policy/src/main/java/org/etsi/tfs/policy/common/Util.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/common/Util.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/common/Util.java
index 889f44feef9df2eb66c5f3dfccb4198837fb037f..f15f7dddc51be915b24bbc9ed3e9b7d20a1e67bb 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/common/Util.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/common/Util.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.common;
+package org.etsi.tfs.policy.common;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/ContextGateway.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextGateway.java
similarity index 79%
rename from src/policy/src/main/java/eu/teraflow/policy/context/ContextGateway.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/ContextGateway.java
index de2d327721636bbfdbbdd46ac3a6a5853bf44025..42c82baa40a5b700a0f25852718ea05ae273f40b 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/ContextGateway.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextGateway.java
@@ -14,14 +14,14 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context;
+package org.etsi.tfs.policy.context;
 
-import eu.teraflow.policy.context.model.Device;
-import eu.teraflow.policy.context.model.Empty;
-import eu.teraflow.policy.context.model.Service;
-import eu.teraflow.policy.context.model.ServiceId;
-import eu.teraflow.policy.model.PolicyRule;
 import io.smallrye.mutiny.Uni;
+import org.etsi.tfs.policy.context.model.Device;
+import org.etsi.tfs.policy.context.model.Empty;
+import org.etsi.tfs.policy.context.model.Service;
+import org.etsi.tfs.policy.context.model.ServiceId;
+import org.etsi.tfs.policy.model.PolicyRule;
 
 public interface ContextGateway {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/ContextGatewayImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextGatewayImpl.java
similarity index 91%
rename from src/policy/src/main/java/eu/teraflow/policy/context/ContextGatewayImpl.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/ContextGatewayImpl.java
index 3b4754c8a61d2a8809af7ec0b60c5e55557cf05b..7a5c6345563ec58862ce86a1233151706db6d16e 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/ContextGatewayImpl.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextGatewayImpl.java
@@ -14,20 +14,20 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context;
+package org.etsi.tfs.policy.context;
 
 import context.MutinyContextServiceGrpc.MutinyContextServiceStub;
 import context_policy.MutinyContextPolicyServiceGrpc.MutinyContextPolicyServiceStub;
-import eu.teraflow.policy.Serializer;
-import eu.teraflow.policy.context.model.Device;
-import eu.teraflow.policy.context.model.Empty;
-import eu.teraflow.policy.context.model.Service;
-import eu.teraflow.policy.context.model.ServiceId;
-import eu.teraflow.policy.model.PolicyRule;
 import io.quarkus.grpc.GrpcClient;
 import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
+import org.etsi.tfs.policy.Serializer;
+import org.etsi.tfs.policy.context.model.Device;
+import org.etsi.tfs.policy.context.model.Empty;
+import org.etsi.tfs.policy.context.model.Service;
+import org.etsi.tfs.policy.context.model.ServiceId;
+import org.etsi.tfs.policy.model.PolicyRule;
 
 @ApplicationScoped
 public class ContextGatewayImpl implements ContextGateway {
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/ContextService.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextService.java
similarity index 78%
rename from src/policy/src/main/java/eu/teraflow/policy/context/ContextService.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/ContextService.java
index 20574e8af2a91563032f82393e4bccd65af2670e..a8a81ed313d9106fea018d32c53445a8bd27ece5 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/ContextService.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextService.java
@@ -14,14 +14,14 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context;
+package org.etsi.tfs.policy.context;
 
-import eu.teraflow.policy.context.model.Device;
-import eu.teraflow.policy.context.model.Empty;
-import eu.teraflow.policy.context.model.Service;
-import eu.teraflow.policy.context.model.ServiceId;
-import eu.teraflow.policy.model.PolicyRule;
 import io.smallrye.mutiny.Uni;
+import org.etsi.tfs.policy.context.model.Device;
+import org.etsi.tfs.policy.context.model.Empty;
+import org.etsi.tfs.policy.context.model.Service;
+import org.etsi.tfs.policy.context.model.ServiceId;
+import org.etsi.tfs.policy.model.PolicyRule;
 
 public interface ContextService {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/ContextServiceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextServiceImpl.java
similarity index 86%
rename from src/policy/src/main/java/eu/teraflow/policy/context/ContextServiceImpl.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/ContextServiceImpl.java
index 7e52ade3c6d3abb772414d715b1768d121f6c2e7..662ded654f36acbd6bf70fdc4a29f335fa246bf9 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/ContextServiceImpl.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/ContextServiceImpl.java
@@ -14,16 +14,16 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context;
+package org.etsi.tfs.policy.context;
 
-import eu.teraflow.policy.context.model.Device;
-import eu.teraflow.policy.context.model.Empty;
-import eu.teraflow.policy.context.model.Service;
-import eu.teraflow.policy.context.model.ServiceId;
-import eu.teraflow.policy.model.PolicyRule;
 import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
+import org.etsi.tfs.policy.context.model.Device;
+import org.etsi.tfs.policy.context.model.Empty;
+import org.etsi.tfs.policy.context.model.Service;
+import org.etsi.tfs.policy.context.model.ServiceId;
+import org.etsi.tfs.policy.model.PolicyRule;
 
 @ApplicationScoped
 public class ContextServiceImpl implements ContextService {
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigActionEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigActionEnum.java
similarity index 94%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigActionEnum.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigActionEnum.java
index c2de24402e0f605dcba7d274bb056afa6c76d0ff..d726ccfad134aaaf52b333261cce687942700080 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigActionEnum.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigActionEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public enum ConfigActionEnum {
     UNDEFINED,
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRule.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRule.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRule.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRule.java
index 60ffba56282f1d77ef376696721c5c07b51e72f5..72069456d999478fdfe94d19fc0652c4c6a046a0 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRule.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRule.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConfigRule {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleAcl.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleAcl.java
similarity index 93%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleAcl.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleAcl.java
index 9a022a9c62fe75dece83448986771ba67f0fc6ce..0412783640883d2fa59be6fb75cd16529ad67d80 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleAcl.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleAcl.java
@@ -14,9 +14,9 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
-import eu.teraflow.policy.acl.AclRuleSet;
+import org.etsi.tfs.policy.acl.AclRuleSet;
 
 public class ConfigRuleAcl {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleCustom.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleCustom.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleCustom.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleCustom.java
index c8e64f192011e0e3343197f06f02a68a7b24db5a..de726e9a212586e2308dabf3a4591820f44fb580 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleCustom.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleCustom.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConfigRuleCustom {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleType.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleType.java
similarity index 94%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleType.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleType.java
index 2cd3528bf486a2f9b7f5065f78ebf708c14aa0b7..4106c8e16b0e40c0cd8c73f4663fc4b3c77a95de 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleType.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleType.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public interface ConfigRuleType<T> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleTypeAcl.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleTypeAcl.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleTypeAcl.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleTypeAcl.java
index 35c63468d97847686115af53e92595115bf2fdb7..3f2ec9cfb77af6149379dc7b5ab1ab169b73b729 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleTypeAcl.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleTypeAcl.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConfigRuleTypeAcl implements ConfigRuleType<ConfigRuleAcl> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleTypeCustom.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleTypeCustom.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleTypeCustom.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleTypeCustom.java
index 5d6ac12468cf286a9060fd22b8e0126f66ff2b51..021562e70d0b689232f00292110259629106168f 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConfigRuleTypeCustom.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConfigRuleTypeCustom.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConfigRuleTypeCustom implements ConfigRuleType<ConfigRuleCustom> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/Constraint.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Constraint.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/Constraint.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/Constraint.java
index 7403a94f40d143f79d52907d31a5373d877540cd..359c8f4717d994aa8f21cb4f8414a134bfd8e926 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/Constraint.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Constraint.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class Constraint {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintCustom.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintCustom.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintCustom.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintCustom.java
index d5b196d3d60452214fcd672573d3e684eaa63646..43c907ddfab5e5b45c5a59a08d7e8b447a1d941e 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintCustom.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintCustom.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConstraintCustom {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintEndPointLocation.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintEndPointLocation.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintEndPointLocation.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintEndPointLocation.java
index 0852f2fe2a7b819d2a527554075f1d0e271bf544..79bbad2e0626aa8251dd0d062e532b6d27a90838 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintEndPointLocation.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintEndPointLocation.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConstraintEndPointLocation {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSchedule.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSchedule.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSchedule.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSchedule.java
index a450d2244a9e9b30608813df23e6dff3ad7b7e84..be31d0c23c7afae52252e8591efd1125b9722c59 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSchedule.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSchedule.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConstraintSchedule {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaAvailability.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaAvailability.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaAvailability.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaAvailability.java
index 9daf6e31a7ab8e149d7609db1fd19af591108792..af694eafa5a44bc25d774635cba6332f24dd4ccd 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaAvailability.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaAvailability.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConstraintSlaAvailability {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaCapacity.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaCapacity.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaCapacity.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaCapacity.java
index db3bc1cdd8512bf1f4fb80dfc57bd3b2940fddde..50f7225a0d9106c7b1f3784c7ce80c30740fae70 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaCapacity.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaCapacity.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConstraintSlaCapacity {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaIsolationLevel.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaIsolationLevel.java
similarity index 93%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaIsolationLevel.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaIsolationLevel.java
index 7d873694213544e938f7767781772959dfd4bc7f..da85e2db84a49117b9613c370159ef16b6772df8 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaIsolationLevel.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaIsolationLevel.java
@@ -14,10 +14,10 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
-import eu.teraflow.policy.common.Util;
 import java.util.List;
+import org.etsi.tfs.policy.common.Util;
 
 public class ConstraintSlaIsolationLevel {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaLatency.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaLatency.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaLatency.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaLatency.java
index ef28227bd904576f6f2609691bf02fe31db7c9f7..b99ead6d00d02e7d316bb927d69187330e4b9ac0 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintSlaLatency.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintSlaLatency.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConstraintSlaLatency {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintType.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintType.java
similarity index 94%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintType.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintType.java
index 0202399adad25ffe3609e47d7dd375e7524fc1f4..51845ed8d77aa18f3a3eb5c6991b806ecc49d2c0 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintType.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintType.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public interface ConstraintType<T> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeCustom.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeCustom.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeCustom.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeCustom.java
index 447a3edd3493fa71e57874f1b911abfd3a7b0220..1e85f4675ede1df9205ffb3b0092b127e56b11d6 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeCustom.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeCustom.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConstraintTypeCustom implements ConstraintType<ConstraintCustom> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeEndPointLocation.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeEndPointLocation.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeEndPointLocation.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeEndPointLocation.java
index b35832b7d2a6c4d2e6487c0b16192b9ad02b0124..76375f4affdcdeb85291e55004c1362db30a9a45 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeEndPointLocation.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeEndPointLocation.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConstraintTypeEndPointLocation implements ConstraintType<ConstraintEndPointLocation> {
     private final ConstraintEndPointLocation constraintEndPointLocation;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSchedule.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSchedule.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSchedule.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSchedule.java
index 3120d376cfdcd12c6885534219cfee55855275b6..9bd355590aa2d3a6e47a30c63930ffb1eebe6462 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSchedule.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSchedule.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConstraintTypeSchedule implements ConstraintType<ConstraintSchedule> {
     private final ConstraintSchedule constraintSchedule;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaAvailability.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaAvailability.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaAvailability.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaAvailability.java
index 1486c83be2522bc35dee7f88f0bdeada71cc36ed..00be6537d5632cf00cc92eff03aedf1d9396a1bf 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaAvailability.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaAvailability.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConstraintTypeSlaAvailability implements ConstraintType<ConstraintSlaAvailability> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaCapacity.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaCapacity.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaCapacity.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaCapacity.java
index dd3fd7037fffa171159f0323288717db917d7989..5965dafa8e414a66b86c3ae166136a3f3966a43a 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaCapacity.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaCapacity.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConstraintTypeSlaCapacity implements ConstraintType<ConstraintSlaCapacity> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaIsolationLevel.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaIsolationLevel.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaIsolationLevel.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaIsolationLevel.java
index 7cf05a416cdf5fe5acdc38a52e64ce2d38f1b7d5..bac00a37c046641edf34e185ee4eee90f115aa73 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaIsolationLevel.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaIsolationLevel.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConstraintTypeSlaIsolationLevel
         implements ConstraintType<ConstraintSlaIsolationLevel> {
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaLatency.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaLatency.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaLatency.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaLatency.java
index 20a285902a3364f2a7819e3970b915914ce32f19..0e970167b8a14044f6e62cfba630e3cc8739cb56 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ConstraintTypeSlaLatency.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ConstraintTypeSlaLatency.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ConstraintTypeSlaLatency implements ConstraintType<ConstraintSlaLatency> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/Device.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Device.java
similarity index 97%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/Device.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/Device.java
index 06c6d4c5c233af579a4aa5db832c2871b96bdd4e..3cff3decd5f8666da16b2801ee5985fdba71c9a6 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/Device.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Device.java
@@ -14,10 +14,10 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
-import eu.teraflow.policy.common.Util;
 import java.util.List;
+import org.etsi.tfs.policy.common.Util;
 
 public class Device {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceConfig.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceConfig.java
similarity index 92%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceConfig.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceConfig.java
index 815589b5572cd87a8bba18f77c46bf56c6fb9838..a6645cd934753f7cecba43efe46efbbc8c31c4a0 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceConfig.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceConfig.java
@@ -14,10 +14,10 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
-import eu.teraflow.policy.common.Util;
 import java.util.List;
+import org.etsi.tfs.policy.common.Util;
 
 public class DeviceConfig {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceDriverEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceDriverEnum.java
similarity index 94%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceDriverEnum.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceDriverEnum.java
index e4198b9d03a4afcaef71a6311a244072ded2eab0..63e96a4c61769fbb6a009acf208ef7b4c81200ad 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceDriverEnum.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceDriverEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public enum DeviceDriverEnum {
     UNDEFINED,
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceOperationalStatus.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceOperationalStatus.java
similarity index 94%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceOperationalStatus.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceOperationalStatus.java
index 4a7dc438c367ce1171ce01fbc33e56d4b73b7d67..d5d96064606a0d6145a1fbc994977a51715e3f73 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/DeviceOperationalStatus.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/DeviceOperationalStatus.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public enum DeviceOperationalStatus {
     UNDEFINED,
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/Empty.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Empty.java
similarity index 94%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/Empty.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/Empty.java
index a81bed099c181df3a519d50f9f6967f987912860..b334a0af63fb441f182426ccea716f3f856bfeb3 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/Empty.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Empty.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class Empty {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/EndPoint.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EndPoint.java
similarity index 95%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/EndPoint.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/EndPoint.java
index 6e1056408e799f78e3c71648dd65ec279085e4c8..ad1e847f9d0bcf83f3d592dc8a056d1bb419e566 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/EndPoint.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EndPoint.java
@@ -14,11 +14,11 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
-import eu.teraflow.policy.common.Util;
-import eu.teraflow.policy.kpi_sample_types.model.KpiSampleType;
 import java.util.List;
+import org.etsi.tfs.policy.common.Util;
+import org.etsi.tfs.policy.kpi_sample_types.model.KpiSampleType;
 
 public class EndPoint {
     private final EndPointId endPointId;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/EndPointId.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EndPointId.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/EndPointId.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/EndPointId.java
index 834081e5937006808a45cb05275c6fdd5f2f0e3d..6e626014c4c44c5cb09e9e383d23a411b2260109 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/EndPointId.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EndPointId.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class EndPointId {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/Event.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Event.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/Event.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/Event.java
index 05ba6451399598f958c2a055a4c938c6592627d1..49fcf3822f6aae1004902fb6c1800ff2cc349895 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/Event.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Event.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class Event {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/EventTypeEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EventTypeEnum.java
similarity index 94%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/EventTypeEnum.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/EventTypeEnum.java
index cde7e1885f67b66334bc559c8b5763a542cdf3cf..e2e331f669d79dec23515fe9c46670074e2aab8b 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/EventTypeEnum.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/EventTypeEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public enum EventTypeEnum {
     UNDEFINED,
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/GpsPosition.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/GpsPosition.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/GpsPosition.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/GpsPosition.java
index 14bd2cb9993d2a9c65e760f657088f515674bd69..ef214f754779cc2eca09a9d0829ed7f84770ca83 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/GpsPosition.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/GpsPosition.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class GpsPosition {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/IsolationLevelEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/IsolationLevelEnum.java
similarity index 95%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/IsolationLevelEnum.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/IsolationLevelEnum.java
index 4b6e129d1c1899da43d5cf48f0e43d87a56abb83..d5f5884d9975347ffca78d8f5a93008331309f49 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/IsolationLevelEnum.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/IsolationLevelEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public enum IsolationLevelEnum {
     NO_ISOLATION,
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/Location.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Location.java
similarity index 95%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/Location.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/Location.java
index c6a00a6a763405ffa6053e2a09aad2ac5aace871..01cdb7ac6d776f6f91f006695608c9ac825959c0 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/Location.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Location.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class Location {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationType.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationType.java
similarity index 94%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/LocationType.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationType.java
index f88d30db76c37c3ae5955fdc4a4d3cf8e002546d..35c1c11104d93b79aca49ad42bca19cb4be3c304 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationType.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationType.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public interface LocationType<T> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationTypeGpsPosition.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationTypeGpsPosition.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/LocationTypeGpsPosition.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationTypeGpsPosition.java
index f010024133fb12644a79eb1534f26e54874bd63b..6995b85565ea68649819475bbee2ce140cef8847 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationTypeGpsPosition.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationTypeGpsPosition.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class LocationTypeGpsPosition implements LocationType<GpsPosition> {
     private final GpsPosition gpsPosition;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationTypeRegion.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationTypeRegion.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/LocationTypeRegion.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationTypeRegion.java
index 94b88ca7a8be63b3096f65e76c739a8bb87c29f6..cd1ec621d1511fff75e8c03866ac6ca480838d43 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/LocationTypeRegion.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/LocationTypeRegion.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class LocationTypeRegion implements LocationType<String> {
     private final String region;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/Service.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Service.java
similarity index 97%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/Service.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/Service.java
index e3456b32607ed49d465b40db826124a15c6f7a84..5d8a3897e57dc0d95f46768d37fffe956e683479 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/Service.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/Service.java
@@ -14,10 +14,10 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
-import eu.teraflow.policy.common.Util;
 import java.util.List;
+import org.etsi.tfs.policy.common.Util;
 
 public class Service {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceConfig.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceConfig.java
similarity index 92%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceConfig.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceConfig.java
index a99c949d1fd63c8ad31f8d0b14fe6f460ad43a17..9fff5f0e23decfdcbe9222fdda894266e06687fe 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceConfig.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceConfig.java
@@ -14,10 +14,10 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
-import eu.teraflow.policy.common.Util;
 import java.util.List;
+import org.etsi.tfs.policy.common.Util;
 
 public class ServiceConfig {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceId.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceId.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceId.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceId.java
index 81763a9dec19881982a7ef0b14d9a8226eee2233..324cb8f140836af2c716d205ce7abdd1359fc45e 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceId.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceId.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ServiceId {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatus.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceStatus.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatus.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceStatus.java
index 5fd6dfa26e70bf5e4ee710052e6bbb15aeb2136f..81c12e790e13fe5e119097ed502658571149e192 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatus.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceStatus.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class ServiceStatus {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatusEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceStatusEnum.java
similarity index 94%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatusEnum.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceStatusEnum.java
index 353b78eba1ad261d6c65561d1fe3e4f64a914420..a9c4ea0546300ddabb3ee42d5dabdd1a4ae2602a 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceStatusEnum.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceStatusEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public enum ServiceStatusEnum {
     UNDEFINED,
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceTypeEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceTypeEnum.java
similarity index 94%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceTypeEnum.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceTypeEnum.java
index 45215ca00fc9c5f6be076519dc0cfc41b167b0f4..84730d25a6f12eb7646d228c240b6060597cef29 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/ServiceTypeEnum.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/ServiceTypeEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public enum ServiceTypeEnum {
     UNKNOWN,
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/SliceId.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/SliceId.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/SliceId.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/SliceId.java
index ee1dc7d2fddc8d523c5dcd41a060c5b13a304ab6..ddd453bc3aa7f608d371cd85b80ee707cb336739 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/SliceId.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/SliceId.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class SliceId {
     private final String contextId;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/model/TopologyId.java b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/TopologyId.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/context/model/TopologyId.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/context/model/TopologyId.java
index 5997291d1ebef92021fca361bf300b3da2871c1e..172286d33a44249e8393cfd1d40f99767143ccbd 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/context/model/TopologyId.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/context/model/TopologyId.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.context.model;
+package org.etsi.tfs.policy.context.model;
 
 public class TopologyId {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceGateway.java b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceGateway.java
similarity index 81%
rename from src/policy/src/main/java/eu/teraflow/policy/device/DeviceGateway.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceGateway.java
index bd2487fe5f7f33f7d94279ecbfcd96cb8fc11a9b..35e51e8d7a859f881c26c1d98995823e2b3727ac 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceGateway.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceGateway.java
@@ -14,12 +14,12 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.device;
+package org.etsi.tfs.policy.device;
 
-import eu.teraflow.policy.context.model.Device;
-import eu.teraflow.policy.context.model.DeviceConfig;
-import eu.teraflow.policy.context.model.Empty;
 import io.smallrye.mutiny.Uni;
+import org.etsi.tfs.policy.context.model.Device;
+import org.etsi.tfs.policy.context.model.DeviceConfig;
+import org.etsi.tfs.policy.context.model.Empty;
 
 public interface DeviceGateway {
     Uni<DeviceConfig> getInitialConfiguration(String deviceId);
diff --git a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceGatewayImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceGatewayImpl.java
similarity index 90%
rename from src/policy/src/main/java/eu/teraflow/policy/device/DeviceGatewayImpl.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceGatewayImpl.java
index 3cb88fe08095bc8b65a72a560b11f9bc3e3ba995..7233e8c02340813f53fbf7621fbc3f0f8cb5bd8d 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceGatewayImpl.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceGatewayImpl.java
@@ -14,17 +14,17 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.device;
+package org.etsi.tfs.policy.device;
 
 import device.DeviceService;
-import eu.teraflow.policy.Serializer;
-import eu.teraflow.policy.context.model.Device;
-import eu.teraflow.policy.context.model.DeviceConfig;
-import eu.teraflow.policy.context.model.Empty;
 import io.quarkus.grpc.GrpcClient;
 import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
+import org.etsi.tfs.policy.Serializer;
+import org.etsi.tfs.policy.context.model.Device;
+import org.etsi.tfs.policy.context.model.DeviceConfig;
+import org.etsi.tfs.policy.context.model.Empty;
 
 @ApplicationScoped
 public class DeviceGatewayImpl implements DeviceGateway {
diff --git a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceService.java b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceService.java
similarity index 81%
rename from src/policy/src/main/java/eu/teraflow/policy/device/DeviceService.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceService.java
index 4e7419a6a93c523a571f8f5e75d08b5cffba424c..e6c8989459b97bd51f1f2ad0af477aa264d881f8 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceService.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceService.java
@@ -14,12 +14,12 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.device;
+package org.etsi.tfs.policy.device;
 
-import eu.teraflow.policy.context.model.Device;
-import eu.teraflow.policy.context.model.DeviceConfig;
-import eu.teraflow.policy.context.model.Empty;
 import io.smallrye.mutiny.Uni;
+import org.etsi.tfs.policy.context.model.Device;
+import org.etsi.tfs.policy.context.model.DeviceConfig;
+import org.etsi.tfs.policy.context.model.Empty;
 
 public interface DeviceService {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceServiceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceServiceImpl.java
similarity index 88%
rename from src/policy/src/main/java/eu/teraflow/policy/device/DeviceServiceImpl.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceServiceImpl.java
index c7bae12145bd7e26871540a89b4056451d5d179c..ce6f82237b6b4ab00d016d3f669039a766fd53c6 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/device/DeviceServiceImpl.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/device/DeviceServiceImpl.java
@@ -14,14 +14,14 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.device;
+package org.etsi.tfs.policy.device;
 
-import eu.teraflow.policy.context.model.Device;
-import eu.teraflow.policy.context.model.DeviceConfig;
-import eu.teraflow.policy.context.model.Empty;
 import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
+import org.etsi.tfs.policy.context.model.Device;
+import org.etsi.tfs.policy.context.model.DeviceConfig;
+import org.etsi.tfs.policy.context.model.Empty;
 
 @ApplicationScoped
 public class DeviceServiceImpl implements DeviceService {
diff --git a/src/policy/src/main/java/eu/teraflow/policy/kpi_sample_types/model/KpiSampleType.java b/src/policy/src/main/java/org/etsi/tfs/policy/kpi_sample_types/model/KpiSampleType.java
similarity index 94%
rename from src/policy/src/main/java/eu/teraflow/policy/kpi_sample_types/model/KpiSampleType.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/kpi_sample_types/model/KpiSampleType.java
index 12551339d9ac5a11e32fbb48871f4c67e0c4700f..384d7e10f13cf5a05c9b0c1658d37c20eb0600ff 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/kpi_sample_types/model/KpiSampleType.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/kpi_sample_types/model/KpiSampleType.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.kpi_sample_types.model;
+package org.etsi.tfs.policy.kpi_sample_types.model;
 
 public enum KpiSampleType {
     UNKNOWN,
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/BooleanOperator.java b/src/policy/src/main/java/org/etsi/tfs/policy/model/BooleanOperator.java
similarity index 95%
rename from src/policy/src/main/java/eu/teraflow/policy/model/BooleanOperator.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/model/BooleanOperator.java
index 1c8208ebd2fc545b3cbdda090ee6a02658c8e55c..85133fc535ebfe4681e6452cc3872ae669b3776c 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/BooleanOperator.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/model/BooleanOperator.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.model;
+package org.etsi.tfs.policy.model;
 
 public enum BooleanOperator {
     POLICYRULE_CONDITION_BOOLEAN_UNDEFINED,
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/NumericalOperator.java b/src/policy/src/main/java/org/etsi/tfs/policy/model/NumericalOperator.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/model/NumericalOperator.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/model/NumericalOperator.java
index 3d59ac0a786ec4d5454711b739cc4337a8845450..bc66490ddd6a210779ff5da28ca1e480c53d5768 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/NumericalOperator.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/model/NumericalOperator.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.model;
+package org.etsi.tfs.policy.model;
 
 public enum NumericalOperator {
     POLICY_RULE_CONDITION_NUMERICAL_UNDEFINED,
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRule.java b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRule.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/model/PolicyRule.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRule.java
index 177bf85f69e00b793a4c4846f58677c0d619f536..b879dbd7b6a3dbfbaac5c0f785f9cd724d21c20f 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRule.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRule.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.model;
+package org.etsi.tfs.policy.model;
 
 public class PolicyRule {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleAction.java b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleAction.java
similarity index 98%
rename from src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleAction.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleAction.java
index 2c9bcae09826da7ec17f42f743515384f10cd886..f6b6d2e2fa88f581a93949378be89305a9c6ee22 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleAction.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleAction.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.model;
+package org.etsi.tfs.policy.model;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionConfig.java b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleActionConfig.java
similarity index 97%
rename from src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionConfig.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleActionConfig.java
index 871fd933a3143a94eea616eae00aedf63bbb8168..d815a3e9eb3a5af504d6e29daff33e7a657d30ad 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionConfig.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleActionConfig.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.model;
+package org.etsi.tfs.policy.model;
 
 public class PolicyRuleActionConfig {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleActionEnum.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionEnum.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleActionEnum.java
index 971dfbaf29bba86ce0043e2edc6bb1e21f181643..a29f4613391dd91b94e60688e3de3c57cc9c77fb 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionEnum.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleActionEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.model;
+package org.etsi.tfs.policy.model;
 
 public enum PolicyRuleActionEnum {
     POLICY_RULE_ACTION_NO_ACTION,
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleBasic.java b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleBasic.java
similarity index 98%
rename from src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleBasic.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleBasic.java
index 9b6c3282886a2373d8a60493add54422e11b4b07..ea00ea3fc2a2fc8492ef60a860df4e9baf220bfe 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleBasic.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleBasic.java
@@ -14,13 +14,13 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.model;
+package org.etsi.tfs.policy.model;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import eu.teraflow.policy.common.Util;
 import java.util.ArrayList;
 import java.util.List;
+import org.etsi.tfs.policy.common.Util;
 
 public class PolicyRuleBasic {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleCondition.java b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleCondition.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleCondition.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleCondition.java
index 9b7de240deb8a75316501dac1765a7c5518e97ab..a293395af73cf00ed24b3b515acb1c37edd9e4e7 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleCondition.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleCondition.java
@@ -14,12 +14,12 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.model;
+package org.etsi.tfs.policy.model;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
-import eu.teraflow.policy.monitoring.model.KpiValue;
+import org.etsi.tfs.policy.monitoring.model.KpiValue;
 
 public class PolicyRuleCondition {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleDevice.java b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleDevice.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleDevice.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleDevice.java
index 516cc969024e509c95c9cc41576f5f962c882ef2..9c23692a13827e7701a3877a64fa4d625e25f877 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleDevice.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleDevice.java
@@ -14,13 +14,13 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.model;
+package org.etsi.tfs.policy.model;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import eu.teraflow.policy.common.Util;
 import java.util.ArrayList;
 import java.util.List;
+import org.etsi.tfs.policy.common.Util;
 
 public class PolicyRuleDevice {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleService.java b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleService.java
similarity index 95%
rename from src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleService.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleService.java
index 9d362919aadb772f97199df394f851953b446619..1f507ebc944ceab6f8018b52c8d534f5b9795930 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleService.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleService.java
@@ -14,14 +14,14 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.model;
+package org.etsi.tfs.policy.model;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import eu.teraflow.policy.common.Util;
-import eu.teraflow.policy.context.model.ServiceId;
 import java.util.ArrayList;
 import java.util.List;
+import org.etsi.tfs.policy.common.Util;
+import org.etsi.tfs.policy.context.model.ServiceId;
 
 public class PolicyRuleService {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleState.java b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleState.java
similarity index 97%
rename from src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleState.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleState.java
index 1102e4778fec00d3f65b4cb43408b25d1254fb17..3a2c5ba428e4a0115d013e4ebd89524fbd9cb9c8 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleState.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleState.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.model;
+package org.etsi.tfs.policy.model;
 
 public class PolicyRuleState {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleStateEnum.java b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleStateEnum.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleStateEnum.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleStateEnum.java
index 749ca389e1f2ced8037078dea429938257ee8082..4e53491499559d085af7fc0ee58b9cdcd21010e5 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleStateEnum.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleStateEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.model;
+package org.etsi.tfs.policy.model;
 
 public enum PolicyRuleStateEnum {
     POLICY_UNDEFINED,
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleType.java b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleType.java
similarity index 95%
rename from src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleType.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleType.java
index b3389f6a99bcbd4f7c8f5b77f863b15891bf8db2..b013e48efa22d58e0e43accb3fdda68803389606 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleType.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleType.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.model;
+package org.etsi.tfs.policy.model;
 
 public interface PolicyRuleType<T> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleTypeDevice.java b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleTypeDevice.java
similarity index 97%
rename from src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleTypeDevice.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleTypeDevice.java
index d262f254bbb4583256bfc18e8526a12bd1c048f1..34c4dc3f00ee306b97a50abf02ff5f5824669ef3 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleTypeDevice.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleTypeDevice.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.model;
+package org.etsi.tfs.policy.model;
 
 public class PolicyRuleTypeDevice implements PolicyRuleType<PolicyRuleDevice> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleTypeService.java b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleTypeService.java
similarity index 97%
rename from src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleTypeService.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleTypeService.java
index 54978476f457581670184feaec679b59f07d45e2..88f83aa83799b3b4448407399e70953e99560bd6 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleTypeService.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/model/PolicyRuleTypeService.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.model;
+package org.etsi.tfs.policy.model;
 
 public class PolicyRuleTypeService implements PolicyRuleType<PolicyRuleService> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGateway.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringGateway.java
similarity index 72%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGateway.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringGateway.java
index 89e9152c6b5402d56c22afcd01ddaac7c81c6dde..63174b88077ff1248e47dd46a373c09d07ddb8a7 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGateway.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringGateway.java
@@ -14,18 +14,18 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring;
-
-import eu.teraflow.policy.context.model.Empty;
-import eu.teraflow.policy.monitoring.model.AlarmDescriptor;
-import eu.teraflow.policy.monitoring.model.AlarmResponse;
-import eu.teraflow.policy.monitoring.model.AlarmSubscription;
-import eu.teraflow.policy.monitoring.model.KpiDescriptor;
-import eu.teraflow.policy.monitoring.model.MonitorKpiRequest;
-import eu.teraflow.policy.monitoring.model.SubsDescriptor;
-import eu.teraflow.policy.monitoring.model.SubsResponse;
+package org.etsi.tfs.policy.monitoring;
+
 import io.smallrye.mutiny.Multi;
 import io.smallrye.mutiny.Uni;
+import org.etsi.tfs.policy.context.model.Empty;
+import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor;
+import org.etsi.tfs.policy.monitoring.model.AlarmResponse;
+import org.etsi.tfs.policy.monitoring.model.AlarmSubscription;
+import org.etsi.tfs.policy.monitoring.model.KpiDescriptor;
+import org.etsi.tfs.policy.monitoring.model.MonitorKpiRequest;
+import org.etsi.tfs.policy.monitoring.model.SubsDescriptor;
+import org.etsi.tfs.policy.monitoring.model.SubsResponse;
 
 public interface MonitoringGateway {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGatewayImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringGatewayImpl.java
similarity index 89%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGatewayImpl.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringGatewayImpl.java
index cc6c97f32e746dcf898bcd6880b8ffd3708e3e34..3c16dff7e12532f3c33f1c2890befabfa679ebe9 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringGatewayImpl.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringGatewayImpl.java
@@ -14,23 +14,23 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring;
-
-import eu.teraflow.policy.Serializer;
-import eu.teraflow.policy.context.model.Empty;
-import eu.teraflow.policy.monitoring.model.AlarmDescriptor;
-import eu.teraflow.policy.monitoring.model.AlarmResponse;
-import eu.teraflow.policy.monitoring.model.AlarmSubscription;
-import eu.teraflow.policy.monitoring.model.KpiDescriptor;
-import eu.teraflow.policy.monitoring.model.MonitorKpiRequest;
-import eu.teraflow.policy.monitoring.model.SubsDescriptor;
-import eu.teraflow.policy.monitoring.model.SubsResponse;
+package org.etsi.tfs.policy.monitoring;
+
 import io.quarkus.grpc.GrpcClient;
 import io.smallrye.mutiny.Multi;
 import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
 import monitoring.MutinyMonitoringServiceGrpc.MutinyMonitoringServiceStub;
+import org.etsi.tfs.policy.Serializer;
+import org.etsi.tfs.policy.context.model.Empty;
+import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor;
+import org.etsi.tfs.policy.monitoring.model.AlarmResponse;
+import org.etsi.tfs.policy.monitoring.model.AlarmSubscription;
+import org.etsi.tfs.policy.monitoring.model.KpiDescriptor;
+import org.etsi.tfs.policy.monitoring.model.MonitorKpiRequest;
+import org.etsi.tfs.policy.monitoring.model.SubsDescriptor;
+import org.etsi.tfs.policy.monitoring.model.SubsResponse;
 
 @ApplicationScoped
 public class MonitoringGatewayImpl implements MonitoringGateway {
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringService.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringService.java
similarity index 72%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringService.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringService.java
index 6010ec04a515dcfa9c84c7ce2363c9dea72640e1..5d8e289440a61542b6e76b8385201069dd54226e 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringService.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringService.java
@@ -14,18 +14,18 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring;
-
-import eu.teraflow.policy.context.model.Empty;
-import eu.teraflow.policy.monitoring.model.AlarmDescriptor;
-import eu.teraflow.policy.monitoring.model.AlarmResponse;
-import eu.teraflow.policy.monitoring.model.AlarmSubscription;
-import eu.teraflow.policy.monitoring.model.KpiDescriptor;
-import eu.teraflow.policy.monitoring.model.MonitorKpiRequest;
-import eu.teraflow.policy.monitoring.model.SubsDescriptor;
-import eu.teraflow.policy.monitoring.model.SubsResponse;
+package org.etsi.tfs.policy.monitoring;
+
 import io.smallrye.mutiny.Multi;
 import io.smallrye.mutiny.Uni;
+import org.etsi.tfs.policy.context.model.Empty;
+import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor;
+import org.etsi.tfs.policy.monitoring.model.AlarmResponse;
+import org.etsi.tfs.policy.monitoring.model.AlarmSubscription;
+import org.etsi.tfs.policy.monitoring.model.KpiDescriptor;
+import org.etsi.tfs.policy.monitoring.model.MonitorKpiRequest;
+import org.etsi.tfs.policy.monitoring.model.SubsDescriptor;
+import org.etsi.tfs.policy.monitoring.model.SubsResponse;
 
 public interface MonitoringService {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringServiceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringServiceImpl.java
similarity index 83%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringServiceImpl.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringServiceImpl.java
index a3f9f223bc1ef012263366af409214a427162c59..4da193b1dbb94e41c44031976968afd04a86e4fd 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/MonitoringServiceImpl.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/MonitoringServiceImpl.java
@@ -14,20 +14,20 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring;
+package org.etsi.tfs.policy.monitoring;
 
-import eu.teraflow.policy.context.model.Empty;
-import eu.teraflow.policy.monitoring.model.AlarmDescriptor;
-import eu.teraflow.policy.monitoring.model.AlarmResponse;
-import eu.teraflow.policy.monitoring.model.AlarmSubscription;
-import eu.teraflow.policy.monitoring.model.KpiDescriptor;
-import eu.teraflow.policy.monitoring.model.MonitorKpiRequest;
-import eu.teraflow.policy.monitoring.model.SubsDescriptor;
-import eu.teraflow.policy.monitoring.model.SubsResponse;
 import io.smallrye.mutiny.Multi;
 import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
+import org.etsi.tfs.policy.context.model.Empty;
+import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor;
+import org.etsi.tfs.policy.monitoring.model.AlarmResponse;
+import org.etsi.tfs.policy.monitoring.model.AlarmSubscription;
+import org.etsi.tfs.policy.monitoring.model.KpiDescriptor;
+import org.etsi.tfs.policy.monitoring.model.MonitorKpiRequest;
+import org.etsi.tfs.policy.monitoring.model.SubsDescriptor;
+import org.etsi.tfs.policy.monitoring.model.SubsResponse;
 
 @ApplicationScoped
 public class MonitoringServiceImpl implements MonitoringService {
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmDescriptor.java
similarity index 97%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmDescriptor.java
index 090237f947743b200d0217a00a4b87c251587623..31e5eb72185af173871b81e4730aa432e2600e96 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmDescriptor.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmDescriptor.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring.model;
+package org.etsi.tfs.policy.monitoring.model;
 
 public class AlarmDescriptor {
     private final String alarmId;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmResponse.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmResponse.java
similarity index 93%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmResponse.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmResponse.java
index a92ae4decfe54f9bce06db1dda53ccadea52946a..fb23ac53c3adcb8f2c3f69d831fce90b5d68560a 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmResponse.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmResponse.java
@@ -14,10 +14,10 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring.model;
+package org.etsi.tfs.policy.monitoring.model;
 
-import eu.teraflow.policy.common.Util;
 import java.util.List;
+import org.etsi.tfs.policy.common.Util;
 
 public class AlarmResponse {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmSubscription.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmSubscription.java
similarity index 97%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmSubscription.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmSubscription.java
index 7b99c20456987b6c56a0af00821fb5ef33954ada..c2d42c13cfbed6ea476126243350165c0511a0f6 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/AlarmSubscription.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/AlarmSubscription.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring.model;
+package org.etsi.tfs.policy.monitoring.model;
 
 public class AlarmSubscription {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/BooleanKpiValue.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/BooleanKpiValue.java
similarity index 95%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/model/BooleanKpiValue.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/BooleanKpiValue.java
index c93aeb520b6fe6ec68a3d745b5161450130045c2..b24901e6491c7043e0886f73cc5253624debafe6 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/BooleanKpiValue.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/BooleanKpiValue.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring.model;
+package org.etsi.tfs.policy.monitoring.model;
 
 public class BooleanKpiValue implements KpiValue<Boolean> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/FloatKpiValue.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/FloatKpiValue.java
similarity index 95%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/model/FloatKpiValue.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/FloatKpiValue.java
index 2e19b2b2be6dd4ec7dd25f52ad19c99227fa5ef4..7f723c3950270d09a2e093152ff489e69d672714 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/FloatKpiValue.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/FloatKpiValue.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring.model;
+package org.etsi.tfs.policy.monitoring.model;
 
 public class FloatKpiValue implements KpiValue<Float> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/IntegerKpiValue.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/IntegerKpiValue.java
similarity index 95%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/model/IntegerKpiValue.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/IntegerKpiValue.java
index cc3f92111d360271d3b85c152e6465d6e0a3bcc3..5c4a2b4d44ca80e8ffd963ed690710960d659d46 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/IntegerKpiValue.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/IntegerKpiValue.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring.model;
+package org.etsi.tfs.policy.monitoring.model;
 
 public class IntegerKpiValue implements KpiValue<Integer> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/Kpi.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/Kpi.java
index 92439d01f08b5f3ee55f15fe8c67ed484fa38306..d7b54a9599e66e2f124e0980a6974969e6d14e1e 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/Kpi.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/Kpi.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring.model;
+package org.etsi.tfs.policy.monitoring.model;
 
 public class Kpi {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiDescriptor.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiDescriptor.java
similarity index 89%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiDescriptor.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiDescriptor.java
index 0f7aeca64c97958c5417083ae49f1003667f6693..6bd16922cbed3b8e4552befe73de2153c7ac14b2 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiDescriptor.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiDescriptor.java
@@ -14,12 +14,12 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring.model;
+package org.etsi.tfs.policy.monitoring.model;
 
-import eu.teraflow.policy.context.model.EndPointId;
-import eu.teraflow.policy.context.model.ServiceId;
-import eu.teraflow.policy.context.model.SliceId;
-import eu.teraflow.policy.kpi_sample_types.model.KpiSampleType;
+import org.etsi.tfs.policy.context.model.EndPointId;
+import org.etsi.tfs.policy.context.model.ServiceId;
+import org.etsi.tfs.policy.context.model.SliceId;
+import org.etsi.tfs.policy.kpi_sample_types.model.KpiSampleType;
 
 public class KpiDescriptor {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValue.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiValue.java
similarity index 93%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValue.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiValue.java
index 0a4418d65bff29d5e0df0134ad15a409b7fd2d30..23e68416ad07232fe7492b2f5226f2eed56b587f 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValue.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiValue.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring.model;
+package org.etsi.tfs.policy.monitoring.model;
 
 public interface KpiValue<T> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValueRange.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiValueRange.java
similarity index 98%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValueRange.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiValueRange.java
index 6a0bba6c6a5af5fb53745768f01d1a0e5bf6c85d..8db7f05a518ccac940f6c9cd1ccc93b386fd8565 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/KpiValueRange.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/KpiValueRange.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring.model;
+package org.etsi.tfs.policy.monitoring.model;
 
 public class KpiValueRange {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/LongKpiValue.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/LongKpiValue.java
similarity index 95%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/model/LongKpiValue.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/LongKpiValue.java
index c57e605ffdda7f45de06fec47813a522c06d7b93..e20d1d5d0829bebdd111b456ff2ed1561b795045 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/LongKpiValue.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/LongKpiValue.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring.model;
+package org.etsi.tfs.policy.monitoring.model;
 
 public class LongKpiValue implements KpiValue<Long> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/MonitorKpiRequest.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/MonitorKpiRequest.java
similarity index 96%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/model/MonitorKpiRequest.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/MonitorKpiRequest.java
index 30aaad2e8e1514d788c4493bf15eb887f4d02d9b..253c0e3ef9eff8b698fd29380c0153a5297ef3cf 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/MonitorKpiRequest.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/MonitorKpiRequest.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring.model;
+package org.etsi.tfs.policy.monitoring.model;
 
 public class MonitorKpiRequest {
     private final String kpiId;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/StringKpiValue.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/StringKpiValue.java
similarity index 95%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/model/StringKpiValue.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/StringKpiValue.java
index 649d06ceeff84d2daf7ef5c9589c361873c23987..615cfb2e8566e423d482e1da1540f2f62ffade30 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/StringKpiValue.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/StringKpiValue.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring.model;
+package org.etsi.tfs.policy.monitoring.model;
 
 public class StringKpiValue implements KpiValue<String> {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/SubsDescriptor.java
similarity index 98%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/SubsDescriptor.java
index 96569bbc7fab5ef18b34ea78c5951949e804eafc..566f7d33b4d7b6dea711adc27128f4c5537a19bd 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsDescriptor.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/SubsDescriptor.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring.model;
+package org.etsi.tfs.policy.monitoring.model;
 
 public class SubsDescriptor {
     private final String subscriptionId;
diff --git a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsResponse.java b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/SubsResponse.java
similarity index 93%
rename from src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsResponse.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/SubsResponse.java
index b4a2b16a6dd73bfa2e91b9fd2d501f814af9531f..bf51f5743a9487fda13e70ac8e6b37cc088f72f4 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/monitoring/model/SubsResponse.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/monitoring/model/SubsResponse.java
@@ -14,10 +14,10 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.monitoring.model;
+package org.etsi.tfs.policy.monitoring.model;
 
-import eu.teraflow.policy.common.Util;
 import java.util.List;
+import org.etsi.tfs.policy.common.Util;
 
 public class SubsResponse {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceGateway.java b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceGateway.java
similarity index 81%
rename from src/policy/src/main/java/eu/teraflow/policy/service/ServiceGateway.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceGateway.java
index b8764efe312bae8b395beb3a22b1d2a57346b37d..15dbaf94c24ec2266d0b225c630ec2c0c44c5260 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceGateway.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceGateway.java
@@ -14,12 +14,12 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.service;
+package org.etsi.tfs.policy.service;
 
-import eu.teraflow.policy.context.model.Empty;
-import eu.teraflow.policy.context.model.Service;
-import eu.teraflow.policy.context.model.ServiceId;
 import io.smallrye.mutiny.Uni;
+import org.etsi.tfs.policy.context.model.Empty;
+import org.etsi.tfs.policy.context.model.Service;
+import org.etsi.tfs.policy.context.model.ServiceId;
 
 public interface ServiceGateway {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceGatewayImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceGatewayImpl.java
similarity index 91%
rename from src/policy/src/main/java/eu/teraflow/policy/service/ServiceGatewayImpl.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceGatewayImpl.java
index f8f38f7520f608b52f432e41b96e46448234a68e..7eccec7876e0f1cc037a9fa6edcf49f6ecfa0e02 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceGatewayImpl.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceGatewayImpl.java
@@ -14,16 +14,16 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.service;
+package org.etsi.tfs.policy.service;
 
-import eu.teraflow.policy.Serializer;
-import eu.teraflow.policy.context.model.Empty;
-import eu.teraflow.policy.context.model.Service;
-import eu.teraflow.policy.context.model.ServiceId;
 import io.quarkus.grpc.GrpcClient;
 import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
+import org.etsi.tfs.policy.Serializer;
+import org.etsi.tfs.policy.context.model.Empty;
+import org.etsi.tfs.policy.context.model.Service;
+import org.etsi.tfs.policy.context.model.ServiceId;
 import org.jboss.logging.Logger;
 import service.MutinyServiceServiceGrpc.MutinyServiceServiceStub;
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceService.java b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceService.java
similarity index 81%
rename from src/policy/src/main/java/eu/teraflow/policy/service/ServiceService.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceService.java
index aa4411ee9d79ea56c3d6f5b901f92b0125fe4b00..eadf77112b1326cf26994920ce3068afe13db665 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceService.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceService.java
@@ -14,12 +14,12 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.service;
+package org.etsi.tfs.policy.service;
 
-import eu.teraflow.policy.context.model.Empty;
-import eu.teraflow.policy.context.model.Service;
-import eu.teraflow.policy.context.model.ServiceId;
 import io.smallrye.mutiny.Uni;
+import org.etsi.tfs.policy.context.model.Empty;
+import org.etsi.tfs.policy.context.model.Service;
+import org.etsi.tfs.policy.context.model.ServiceId;
 
 public interface ServiceService {
 
diff --git a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceServiceImpl.java b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceServiceImpl.java
similarity index 87%
rename from src/policy/src/main/java/eu/teraflow/policy/service/ServiceServiceImpl.java
rename to src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceServiceImpl.java
index 109bcba261d4464313d5b6f21ee2bdde76b17879..21935f4a3b088c821160e6a175e7880c2d0d1f97 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/service/ServiceServiceImpl.java
+++ b/src/policy/src/main/java/org/etsi/tfs/policy/service/ServiceServiceImpl.java
@@ -14,14 +14,14 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy.service;
+package org.etsi.tfs.policy.service;
 
-import eu.teraflow.policy.context.model.Empty;
-import eu.teraflow.policy.context.model.Service;
-import eu.teraflow.policy.context.model.ServiceId;
 import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
+import org.etsi.tfs.policy.context.model.Empty;
+import org.etsi.tfs.policy.context.model.Service;
+import org.etsi.tfs.policy.context.model.ServiceId;
 
 @ApplicationScoped
 public class ServiceServiceImpl implements ServiceService {
diff --git a/src/policy/src/test/java/eu/teraflow/policy/ConfigRuleTypeTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/ConfigRuleTypeTest.java
similarity index 80%
rename from src/policy/src/test/java/eu/teraflow/policy/ConfigRuleTypeTest.java
rename to src/policy/src/test/java/org/etsi/tfs/policy/ConfigRuleTypeTest.java
index 2a32fc076853057f547df9d38abbba08611c21a0..5f36d6ac58c252f52cb6e5577a2cc3b5cd06a3c0 100644
--- a/src/policy/src/test/java/eu/teraflow/policy/ConfigRuleTypeTest.java
+++ b/src/policy/src/test/java/org/etsi/tfs/policy/ConfigRuleTypeTest.java
@@ -14,25 +14,25 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-import eu.teraflow.policy.acl.AclAction;
-import eu.teraflow.policy.acl.AclEntry;
-import eu.teraflow.policy.acl.AclForwardActionEnum;
-import eu.teraflow.policy.acl.AclLogActionEnum;
-import eu.teraflow.policy.acl.AclMatch;
-import eu.teraflow.policy.acl.AclRuleSet;
-import eu.teraflow.policy.acl.AclRuleTypeEnum;
-import eu.teraflow.policy.context.model.ConfigRuleAcl;
-import eu.teraflow.policy.context.model.ConfigRuleCustom;
-import eu.teraflow.policy.context.model.ConfigRuleTypeAcl;
-import eu.teraflow.policy.context.model.ConfigRuleTypeCustom;
-import eu.teraflow.policy.context.model.EndPointId;
-import eu.teraflow.policy.context.model.TopologyId;
 import io.quarkus.test.junit.QuarkusTest;
 import java.util.List;
+import org.etsi.tfs.policy.acl.AclAction;
+import org.etsi.tfs.policy.acl.AclEntry;
+import org.etsi.tfs.policy.acl.AclForwardActionEnum;
+import org.etsi.tfs.policy.acl.AclLogActionEnum;
+import org.etsi.tfs.policy.acl.AclMatch;
+import org.etsi.tfs.policy.acl.AclRuleSet;
+import org.etsi.tfs.policy.acl.AclRuleTypeEnum;
+import org.etsi.tfs.policy.context.model.ConfigRuleAcl;
+import org.etsi.tfs.policy.context.model.ConfigRuleCustom;
+import org.etsi.tfs.policy.context.model.ConfigRuleTypeAcl;
+import org.etsi.tfs.policy.context.model.ConfigRuleTypeCustom;
+import org.etsi.tfs.policy.context.model.EndPointId;
+import org.etsi.tfs.policy.context.model.TopologyId;
 import org.junit.jupiter.api.Test;
 
 @QuarkusTest
diff --git a/src/policy/src/test/java/eu/teraflow/policy/ConstraintTypeTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/ConstraintTypeTest.java
similarity index 79%
rename from src/policy/src/test/java/eu/teraflow/policy/ConstraintTypeTest.java
rename to src/policy/src/test/java/org/etsi/tfs/policy/ConstraintTypeTest.java
index 9dc97b4a1269580a93e58f495d28c0f8d81c1c31..7517e4e2f87d234d7ee9ab182d9a3bad5ae396b6 100644
--- a/src/policy/src/test/java/eu/teraflow/policy/ConstraintTypeTest.java
+++ b/src/policy/src/test/java/org/etsi/tfs/policy/ConstraintTypeTest.java
@@ -14,31 +14,31 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-import eu.teraflow.policy.context.model.ConstraintCustom;
-import eu.teraflow.policy.context.model.ConstraintEndPointLocation;
-import eu.teraflow.policy.context.model.ConstraintSchedule;
-import eu.teraflow.policy.context.model.ConstraintSlaAvailability;
-import eu.teraflow.policy.context.model.ConstraintSlaCapacity;
-import eu.teraflow.policy.context.model.ConstraintSlaIsolationLevel;
-import eu.teraflow.policy.context.model.ConstraintSlaLatency;
-import eu.teraflow.policy.context.model.ConstraintTypeCustom;
-import eu.teraflow.policy.context.model.ConstraintTypeEndPointLocation;
-import eu.teraflow.policy.context.model.ConstraintTypeSchedule;
-import eu.teraflow.policy.context.model.ConstraintTypeSlaAvailability;
-import eu.teraflow.policy.context.model.ConstraintTypeSlaCapacity;
-import eu.teraflow.policy.context.model.ConstraintTypeSlaIsolationLevel;
-import eu.teraflow.policy.context.model.ConstraintTypeSlaLatency;
-import eu.teraflow.policy.context.model.EndPointId;
-import eu.teraflow.policy.context.model.IsolationLevelEnum;
-import eu.teraflow.policy.context.model.Location;
-import eu.teraflow.policy.context.model.LocationTypeRegion;
-import eu.teraflow.policy.context.model.TopologyId;
 import io.quarkus.test.junit.QuarkusTest;
 import java.util.List;
+import org.etsi.tfs.policy.context.model.ConstraintCustom;
+import org.etsi.tfs.policy.context.model.ConstraintEndPointLocation;
+import org.etsi.tfs.policy.context.model.ConstraintSchedule;
+import org.etsi.tfs.policy.context.model.ConstraintSlaAvailability;
+import org.etsi.tfs.policy.context.model.ConstraintSlaCapacity;
+import org.etsi.tfs.policy.context.model.ConstraintSlaIsolationLevel;
+import org.etsi.tfs.policy.context.model.ConstraintSlaLatency;
+import org.etsi.tfs.policy.context.model.ConstraintTypeCustom;
+import org.etsi.tfs.policy.context.model.ConstraintTypeEndPointLocation;
+import org.etsi.tfs.policy.context.model.ConstraintTypeSchedule;
+import org.etsi.tfs.policy.context.model.ConstraintTypeSlaAvailability;
+import org.etsi.tfs.policy.context.model.ConstraintTypeSlaCapacity;
+import org.etsi.tfs.policy.context.model.ConstraintTypeSlaIsolationLevel;
+import org.etsi.tfs.policy.context.model.ConstraintTypeSlaLatency;
+import org.etsi.tfs.policy.context.model.EndPointId;
+import org.etsi.tfs.policy.context.model.IsolationLevelEnum;
+import org.etsi.tfs.policy.context.model.Location;
+import org.etsi.tfs.policy.context.model.LocationTypeRegion;
+import org.etsi.tfs.policy.context.model.TopologyId;
 import org.junit.jupiter.api.Test;
 
 @QuarkusTest
diff --git a/src/policy/src/test/java/eu/teraflow/policy/EndPointCreationTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/EndPointCreationTest.java
similarity index 93%
rename from src/policy/src/test/java/eu/teraflow/policy/EndPointCreationTest.java
rename to src/policy/src/test/java/org/etsi/tfs/policy/EndPointCreationTest.java
index 72501b3c6fc010a928a30edc5cad002deb38f440..ad6061264bb0d909c3e0702754aed8213280abcd 100644
--- a/src/policy/src/test/java/eu/teraflow/policy/EndPointCreationTest.java
+++ b/src/policy/src/test/java/org/etsi/tfs/policy/EndPointCreationTest.java
@@ -14,19 +14,19 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
 
-import eu.teraflow.policy.context.model.EndPoint;
-import eu.teraflow.policy.context.model.EndPointId;
-import eu.teraflow.policy.context.model.Location;
-import eu.teraflow.policy.context.model.LocationTypeRegion;
-import eu.teraflow.policy.context.model.TopologyId;
-import eu.teraflow.policy.kpi_sample_types.model.KpiSampleType;
 import io.quarkus.test.junit.QuarkusTest;
 import java.util.List;
+import org.etsi.tfs.policy.context.model.EndPoint;
+import org.etsi.tfs.policy.context.model.EndPointId;
+import org.etsi.tfs.policy.context.model.Location;
+import org.etsi.tfs.policy.context.model.LocationTypeRegion;
+import org.etsi.tfs.policy.context.model.TopologyId;
+import org.etsi.tfs.policy.kpi_sample_types.model.KpiSampleType;
 import org.junit.jupiter.api.Test;
 
 @QuarkusTest
diff --git a/src/policy/src/test/java/eu/teraflow/policy/LocationTypeTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/LocationTypeTest.java
similarity index 88%
rename from src/policy/src/test/java/eu/teraflow/policy/LocationTypeTest.java
rename to src/policy/src/test/java/org/etsi/tfs/policy/LocationTypeTest.java
index cc4813c76f02a23e6662cf2593680dc8f3b39962..f42933115d0e121d39eb6eaeb833b7ff7826fcb5 100644
--- a/src/policy/src/test/java/eu/teraflow/policy/LocationTypeTest.java
+++ b/src/policy/src/test/java/org/etsi/tfs/policy/LocationTypeTest.java
@@ -14,14 +14,14 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-import eu.teraflow.policy.context.model.GpsPosition;
-import eu.teraflow.policy.context.model.LocationTypeGpsPosition;
-import eu.teraflow.policy.context.model.LocationTypeRegion;
 import io.quarkus.test.junit.QuarkusTest;
+import org.etsi.tfs.policy.context.model.GpsPosition;
+import org.etsi.tfs.policy.context.model.LocationTypeGpsPosition;
+import org.etsi.tfs.policy.context.model.LocationTypeRegion;
 import org.junit.jupiter.api.Test;
 
 @QuarkusTest
diff --git a/src/policy/src/test/java/eu/teraflow/policy/PolicyRuleBasicValidationTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleBasicValidationTest.java
similarity index 96%
rename from src/policy/src/test/java/eu/teraflow/policy/PolicyRuleBasicValidationTest.java
rename to src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleBasicValidationTest.java
index 6e0f220535a239be4b98c895fd70efa4d05758b0..7f969329345aab2f235daf920b9fa7c045bd89fd 100644
--- a/src/policy/src/test/java/eu/teraflow/policy/PolicyRuleBasicValidationTest.java
+++ b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleBasicValidationTest.java
@@ -14,26 +14,26 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
 
-import eu.teraflow.policy.model.BooleanOperator;
-import eu.teraflow.policy.model.NumericalOperator;
-import eu.teraflow.policy.model.PolicyRuleAction;
-import eu.teraflow.policy.model.PolicyRuleActionConfig;
-import eu.teraflow.policy.model.PolicyRuleActionEnum;
-import eu.teraflow.policy.model.PolicyRuleBasic;
-import eu.teraflow.policy.model.PolicyRuleCondition;
-import eu.teraflow.policy.model.PolicyRuleState;
-import eu.teraflow.policy.model.PolicyRuleStateEnum;
-import eu.teraflow.policy.monitoring.model.IntegerKpiValue;
-import eu.teraflow.policy.monitoring.model.KpiValue;
 import io.quarkus.test.junit.QuarkusTest;
 import java.util.Collections;
 import java.util.List;
 import java.util.UUID;
+import org.etsi.tfs.policy.model.BooleanOperator;
+import org.etsi.tfs.policy.model.NumericalOperator;
+import org.etsi.tfs.policy.model.PolicyRuleAction;
+import org.etsi.tfs.policy.model.PolicyRuleActionConfig;
+import org.etsi.tfs.policy.model.PolicyRuleActionEnum;
+import org.etsi.tfs.policy.model.PolicyRuleBasic;
+import org.etsi.tfs.policy.model.PolicyRuleCondition;
+import org.etsi.tfs.policy.model.PolicyRuleState;
+import org.etsi.tfs.policy.model.PolicyRuleStateEnum;
+import org.etsi.tfs.policy.monitoring.model.IntegerKpiValue;
+import org.etsi.tfs.policy.monitoring.model.KpiValue;
 import org.junit.jupiter.api.Test;
 
 // TODO: Revisit PolicyRuleBasicValidationTest cases after handling exceptions in PolicyRuleBasic
diff --git a/src/policy/src/test/java/eu/teraflow/policy/PolicyRuleConditionValidationTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleConditionValidationTest.java
similarity index 92%
rename from src/policy/src/test/java/eu/teraflow/policy/PolicyRuleConditionValidationTest.java
rename to src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleConditionValidationTest.java
index fb7cb38abdaa383986215d9692129086332e1a48..d81149725664a91066a30248bda3fdf395b78d78 100644
--- a/src/policy/src/test/java/eu/teraflow/policy/PolicyRuleConditionValidationTest.java
+++ b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleConditionValidationTest.java
@@ -14,20 +14,20 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
 
-import eu.teraflow.policy.model.NumericalOperator;
-import eu.teraflow.policy.model.PolicyRuleCondition;
-import eu.teraflow.policy.monitoring.model.BooleanKpiValue;
-import eu.teraflow.policy.monitoring.model.FloatKpiValue;
-import eu.teraflow.policy.monitoring.model.IntegerKpiValue;
-import eu.teraflow.policy.monitoring.model.KpiValue;
-import eu.teraflow.policy.monitoring.model.StringKpiValue;
 import io.quarkus.test.junit.QuarkusTest;
 import java.util.stream.Stream;
+import org.etsi.tfs.policy.model.NumericalOperator;
+import org.etsi.tfs.policy.model.PolicyRuleCondition;
+import org.etsi.tfs.policy.monitoring.model.BooleanKpiValue;
+import org.etsi.tfs.policy.monitoring.model.FloatKpiValue;
+import org.etsi.tfs.policy.monitoring.model.IntegerKpiValue;
+import org.etsi.tfs.policy.monitoring.model.KpiValue;
+import org.etsi.tfs.policy.monitoring.model.StringKpiValue;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
diff --git a/src/policy/src/test/java/eu/teraflow/policy/PolicyRuleDeviceValidationTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleDeviceValidationTest.java
similarity index 91%
rename from src/policy/src/test/java/eu/teraflow/policy/PolicyRuleDeviceValidationTest.java
rename to src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleDeviceValidationTest.java
index aaaea41f8f292b409328e2e95e8797f9f250f47f..e0e23c8a8b40a4cf48139257f4df540369f5995e 100644
--- a/src/policy/src/test/java/eu/teraflow/policy/PolicyRuleDeviceValidationTest.java
+++ b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleDeviceValidationTest.java
@@ -14,25 +14,25 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-import eu.teraflow.policy.model.BooleanOperator;
-import eu.teraflow.policy.model.NumericalOperator;
-import eu.teraflow.policy.model.PolicyRuleAction;
-import eu.teraflow.policy.model.PolicyRuleActionConfig;
-import eu.teraflow.policy.model.PolicyRuleActionEnum;
-import eu.teraflow.policy.model.PolicyRuleBasic;
-import eu.teraflow.policy.model.PolicyRuleCondition;
-import eu.teraflow.policy.model.PolicyRuleDevice;
-import eu.teraflow.policy.model.PolicyRuleState;
-import eu.teraflow.policy.model.PolicyRuleStateEnum;
-import eu.teraflow.policy.monitoring.model.IntegerKpiValue;
-import eu.teraflow.policy.monitoring.model.KpiValue;
 import io.quarkus.test.junit.QuarkusTest;
 import java.util.List;
 import java.util.UUID;
+import org.etsi.tfs.policy.model.BooleanOperator;
+import org.etsi.tfs.policy.model.NumericalOperator;
+import org.etsi.tfs.policy.model.PolicyRuleAction;
+import org.etsi.tfs.policy.model.PolicyRuleActionConfig;
+import org.etsi.tfs.policy.model.PolicyRuleActionEnum;
+import org.etsi.tfs.policy.model.PolicyRuleBasic;
+import org.etsi.tfs.policy.model.PolicyRuleCondition;
+import org.etsi.tfs.policy.model.PolicyRuleDevice;
+import org.etsi.tfs.policy.model.PolicyRuleState;
+import org.etsi.tfs.policy.model.PolicyRuleStateEnum;
+import org.etsi.tfs.policy.monitoring.model.IntegerKpiValue;
+import org.etsi.tfs.policy.monitoring.model.KpiValue;
 import org.junit.jupiter.api.Test;
 
 @QuarkusTest
diff --git a/src/policy/src/test/java/eu/teraflow/policy/PolicyRuleServiceValidationTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleServiceValidationTest.java
similarity index 88%
rename from src/policy/src/test/java/eu/teraflow/policy/PolicyRuleServiceValidationTest.java
rename to src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleServiceValidationTest.java
index 95819965e77a4ba61d13ee240594e37c1eb4cd74..40094436c4d198450cecbdd512418d6b1df4b74e 100644
--- a/src/policy/src/test/java/eu/teraflow/policy/PolicyRuleServiceValidationTest.java
+++ b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyRuleServiceValidationTest.java
@@ -14,46 +14,46 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.when;
 
-import eu.teraflow.policy.context.ContextService;
-import eu.teraflow.policy.context.model.ConfigActionEnum;
-import eu.teraflow.policy.context.model.ConfigRule;
-import eu.teraflow.policy.context.model.ConfigRuleCustom;
-import eu.teraflow.policy.context.model.ConfigRuleTypeCustom;
-import eu.teraflow.policy.context.model.Device;
-import eu.teraflow.policy.context.model.DeviceConfig;
-import eu.teraflow.policy.context.model.DeviceDriverEnum;
-import eu.teraflow.policy.context.model.DeviceOperationalStatus;
-import eu.teraflow.policy.context.model.EndPoint.EndPointBuilder;
-import eu.teraflow.policy.context.model.EndPointId;
-import eu.teraflow.policy.context.model.Location;
-import eu.teraflow.policy.context.model.LocationTypeRegion;
-import eu.teraflow.policy.context.model.ServiceId;
-import eu.teraflow.policy.context.model.TopologyId;
-import eu.teraflow.policy.kpi_sample_types.model.KpiSampleType;
-import eu.teraflow.policy.model.BooleanOperator;
-import eu.teraflow.policy.model.NumericalOperator;
-import eu.teraflow.policy.model.PolicyRuleAction;
-import eu.teraflow.policy.model.PolicyRuleActionConfig;
-import eu.teraflow.policy.model.PolicyRuleActionEnum;
-import eu.teraflow.policy.model.PolicyRuleBasic;
-import eu.teraflow.policy.model.PolicyRuleCondition;
-import eu.teraflow.policy.model.PolicyRuleService;
-import eu.teraflow.policy.model.PolicyRuleState;
-import eu.teraflow.policy.model.PolicyRuleStateEnum;
-import eu.teraflow.policy.monitoring.model.IntegerKpiValue;
-import eu.teraflow.policy.monitoring.model.KpiValue;
 import io.quarkus.test.junit.QuarkusTest;
 import io.smallrye.mutiny.Uni;
 import java.util.Collections;
 import java.util.List;
 import java.util.UUID;
 import javax.inject.Inject;
+import org.etsi.tfs.policy.context.ContextService;
+import org.etsi.tfs.policy.context.model.ConfigActionEnum;
+import org.etsi.tfs.policy.context.model.ConfigRule;
+import org.etsi.tfs.policy.context.model.ConfigRuleCustom;
+import org.etsi.tfs.policy.context.model.ConfigRuleTypeCustom;
+import org.etsi.tfs.policy.context.model.Device;
+import org.etsi.tfs.policy.context.model.DeviceConfig;
+import org.etsi.tfs.policy.context.model.DeviceDriverEnum;
+import org.etsi.tfs.policy.context.model.DeviceOperationalStatus;
+import org.etsi.tfs.policy.context.model.EndPoint.EndPointBuilder;
+import org.etsi.tfs.policy.context.model.EndPointId;
+import org.etsi.tfs.policy.context.model.Location;
+import org.etsi.tfs.policy.context.model.LocationTypeRegion;
+import org.etsi.tfs.policy.context.model.ServiceId;
+import org.etsi.tfs.policy.context.model.TopologyId;
+import org.etsi.tfs.policy.kpi_sample_types.model.KpiSampleType;
+import org.etsi.tfs.policy.model.BooleanOperator;
+import org.etsi.tfs.policy.model.NumericalOperator;
+import org.etsi.tfs.policy.model.PolicyRuleAction;
+import org.etsi.tfs.policy.model.PolicyRuleActionConfig;
+import org.etsi.tfs.policy.model.PolicyRuleActionEnum;
+import org.etsi.tfs.policy.model.PolicyRuleBasic;
+import org.etsi.tfs.policy.model.PolicyRuleCondition;
+import org.etsi.tfs.policy.model.PolicyRuleService;
+import org.etsi.tfs.policy.model.PolicyRuleState;
+import org.etsi.tfs.policy.model.PolicyRuleStateEnum;
+import org.etsi.tfs.policy.monitoring.model.IntegerKpiValue;
+import org.etsi.tfs.policy.monitoring.model.KpiValue;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
diff --git a/src/policy/src/test/java/eu/teraflow/policy/PolicyServiceTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyServiceTest.java
similarity index 96%
rename from src/policy/src/test/java/eu/teraflow/policy/PolicyServiceTest.java
rename to src/policy/src/test/java/org/etsi/tfs/policy/PolicyServiceTest.java
index 2f5266c9591144fe4ab70bf38f7cc3943ef4cdd9..2d1a425a8d4166779d7e18e5deaecb9ff9ec49ca 100644
--- a/src/policy/src/test/java/eu/teraflow/policy/PolicyServiceTest.java
+++ b/src/policy/src/test/java/org/etsi/tfs/policy/PolicyServiceTest.java
@@ -14,14 +14,12 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
 import context.ContextOuterClass;
 import context.ContextOuterClass.Uuid;
-import eu.teraflow.policy.monitoring.model.FloatKpiValue;
-import eu.teraflow.policy.monitoring.model.IntegerKpiValue;
 import io.quarkus.grpc.GrpcClient;
 import io.quarkus.test.junit.QuarkusTest;
 import java.util.List;
@@ -32,6 +30,8 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import javax.inject.Inject;
 import monitoring.Monitoring.KpiId;
+import org.etsi.tfs.policy.monitoring.model.FloatKpiValue;
+import org.etsi.tfs.policy.monitoring.model.IntegerKpiValue;
 import org.jboss.logging.Logger;
 import org.junit.jupiter.api.Test;
 import policy.Policy;
@@ -112,13 +112,13 @@ class PolicyServiceTest {
         final var expectedPolicyRuleConditions =
                 List.of(firstExpectedPolicyRuleCondition, secondExpectedPolicyRuleCondition);
 
-        eu.teraflow.policy.model.PolicyRuleActionConfig policyRuleActionConfig_1 =
-                new eu.teraflow.policy.model.PolicyRuleActionConfig("paramater1", "parameter2");
+        org.etsi.tfs.policy.model.PolicyRuleActionConfig policyRuleActionConfig_1 =
+                new org.etsi.tfs.policy.model.PolicyRuleActionConfig("paramater1", "parameter2");
         final var serializedPolicyRuleActionConfigList_1 =
                 serializer.serialize(policyRuleActionConfig_1);
 
-        eu.teraflow.policy.model.PolicyRuleActionConfig policyRuleActionConfig_2 =
-                new eu.teraflow.policy.model.PolicyRuleActionConfig("paramater3", "parameter4");
+        org.etsi.tfs.policy.model.PolicyRuleActionConfig policyRuleActionConfig_2 =
+                new org.etsi.tfs.policy.model.PolicyRuleActionConfig("paramater3", "parameter4");
         final var serializedPolicyRuleActionConfigList_2 =
                 serializer.serialize(policyRuleActionConfig_2);
 
diff --git a/src/policy/src/test/java/eu/teraflow/policy/SerializerTest.java b/src/policy/src/test/java/org/etsi/tfs/policy/SerializerTest.java
similarity index 97%
rename from src/policy/src/test/java/eu/teraflow/policy/SerializerTest.java
rename to src/policy/src/test/java/org/etsi/tfs/policy/SerializerTest.java
index b57bdf10af1bbbfda187e89d7cb3d7951b200db6..f29ae3697a8842c14dc28716e325adc85a5c45af 100644
--- a/src/policy/src/test/java/eu/teraflow/policy/SerializerTest.java
+++ b/src/policy/src/test/java/org/etsi/tfs/policy/SerializerTest.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.policy;
+package org.etsi.tfs.policy;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@@ -25,79 +25,6 @@ import context.ContextOuterClass.ContextId;
 import context.ContextOuterClass.DeviceId;
 import context.ContextOuterClass.DeviceOperationalStatusEnum;
 import context.ContextOuterClass.Uuid;
-import eu.teraflow.policy.acl.AclAction;
-import eu.teraflow.policy.acl.AclEntry;
-import eu.teraflow.policy.acl.AclForwardActionEnum;
-import eu.teraflow.policy.acl.AclLogActionEnum;
-import eu.teraflow.policy.acl.AclMatch;
-import eu.teraflow.policy.acl.AclRuleSet;
-import eu.teraflow.policy.acl.AclRuleTypeEnum;
-import eu.teraflow.policy.context.model.ConfigActionEnum;
-import eu.teraflow.policy.context.model.ConfigRule;
-import eu.teraflow.policy.context.model.ConfigRuleAcl;
-import eu.teraflow.policy.context.model.ConfigRuleCustom;
-import eu.teraflow.policy.context.model.ConfigRuleTypeAcl;
-import eu.teraflow.policy.context.model.ConfigRuleTypeCustom;
-import eu.teraflow.policy.context.model.Constraint;
-import eu.teraflow.policy.context.model.ConstraintCustom;
-import eu.teraflow.policy.context.model.ConstraintEndPointLocation;
-import eu.teraflow.policy.context.model.ConstraintSchedule;
-import eu.teraflow.policy.context.model.ConstraintSlaAvailability;
-import eu.teraflow.policy.context.model.ConstraintSlaCapacity;
-import eu.teraflow.policy.context.model.ConstraintSlaIsolationLevel;
-import eu.teraflow.policy.context.model.ConstraintSlaLatency;
-import eu.teraflow.policy.context.model.ConstraintTypeCustom;
-import eu.teraflow.policy.context.model.ConstraintTypeEndPointLocation;
-import eu.teraflow.policy.context.model.ConstraintTypeSchedule;
-import eu.teraflow.policy.context.model.ConstraintTypeSlaAvailability;
-import eu.teraflow.policy.context.model.ConstraintTypeSlaCapacity;
-import eu.teraflow.policy.context.model.ConstraintTypeSlaIsolationLevel;
-import eu.teraflow.policy.context.model.ConstraintTypeSlaLatency;
-import eu.teraflow.policy.context.model.Device;
-import eu.teraflow.policy.context.model.DeviceConfig;
-import eu.teraflow.policy.context.model.DeviceDriverEnum;
-import eu.teraflow.policy.context.model.DeviceOperationalStatus;
-import eu.teraflow.policy.context.model.Empty;
-import eu.teraflow.policy.context.model.EndPoint.EndPointBuilder;
-import eu.teraflow.policy.context.model.EndPointId;
-import eu.teraflow.policy.context.model.Event;
-import eu.teraflow.policy.context.model.EventTypeEnum;
-import eu.teraflow.policy.context.model.GpsPosition;
-import eu.teraflow.policy.context.model.IsolationLevelEnum;
-import eu.teraflow.policy.context.model.Location;
-import eu.teraflow.policy.context.model.LocationTypeGpsPosition;
-import eu.teraflow.policy.context.model.LocationTypeRegion;
-import eu.teraflow.policy.context.model.Service;
-import eu.teraflow.policy.context.model.ServiceConfig;
-import eu.teraflow.policy.context.model.ServiceId;
-import eu.teraflow.policy.context.model.ServiceStatus;
-import eu.teraflow.policy.context.model.ServiceStatusEnum;
-import eu.teraflow.policy.context.model.ServiceTypeEnum;
-import eu.teraflow.policy.context.model.SliceId;
-import eu.teraflow.policy.context.model.TopologyId;
-import eu.teraflow.policy.kpi_sample_types.model.KpiSampleType;
-import eu.teraflow.policy.model.BooleanOperator;
-import eu.teraflow.policy.model.NumericalOperator;
-import eu.teraflow.policy.model.PolicyRuleAction;
-import eu.teraflow.policy.model.PolicyRuleActionConfig;
-import eu.teraflow.policy.model.PolicyRuleActionEnum;
-import eu.teraflow.policy.model.PolicyRuleBasic;
-import eu.teraflow.policy.model.PolicyRuleCondition;
-import eu.teraflow.policy.model.PolicyRuleDevice;
-import eu.teraflow.policy.model.PolicyRuleService;
-import eu.teraflow.policy.model.PolicyRuleState;
-import eu.teraflow.policy.model.PolicyRuleStateEnum;
-import eu.teraflow.policy.monitoring.model.AlarmDescriptor;
-import eu.teraflow.policy.monitoring.model.AlarmResponse;
-import eu.teraflow.policy.monitoring.model.BooleanKpiValue;
-import eu.teraflow.policy.monitoring.model.FloatKpiValue;
-import eu.teraflow.policy.monitoring.model.IntegerKpiValue;
-import eu.teraflow.policy.monitoring.model.Kpi;
-import eu.teraflow.policy.monitoring.model.KpiDescriptor;
-import eu.teraflow.policy.monitoring.model.KpiValue;
-import eu.teraflow.policy.monitoring.model.KpiValueRange;
-import eu.teraflow.policy.monitoring.model.StringKpiValue;
-import eu.teraflow.policy.monitoring.model.SubsDescriptor;
 import io.quarkus.test.junit.QuarkusTest;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -107,6 +34,79 @@ import kpi_sample_types.KpiSampleTypes;
 import monitoring.Monitoring;
 import monitoring.Monitoring.AlarmID;
 import monitoring.Monitoring.KpiId;
+import org.etsi.tfs.policy.acl.AclAction;
+import org.etsi.tfs.policy.acl.AclEntry;
+import org.etsi.tfs.policy.acl.AclForwardActionEnum;
+import org.etsi.tfs.policy.acl.AclLogActionEnum;
+import org.etsi.tfs.policy.acl.AclMatch;
+import org.etsi.tfs.policy.acl.AclRuleSet;
+import org.etsi.tfs.policy.acl.AclRuleTypeEnum;
+import org.etsi.tfs.policy.context.model.ConfigActionEnum;
+import org.etsi.tfs.policy.context.model.ConfigRule;
+import org.etsi.tfs.policy.context.model.ConfigRuleAcl;
+import org.etsi.tfs.policy.context.model.ConfigRuleCustom;
+import org.etsi.tfs.policy.context.model.ConfigRuleTypeAcl;
+import org.etsi.tfs.policy.context.model.ConfigRuleTypeCustom;
+import org.etsi.tfs.policy.context.model.Constraint;
+import org.etsi.tfs.policy.context.model.ConstraintCustom;
+import org.etsi.tfs.policy.context.model.ConstraintEndPointLocation;
+import org.etsi.tfs.policy.context.model.ConstraintSchedule;
+import org.etsi.tfs.policy.context.model.ConstraintSlaAvailability;
+import org.etsi.tfs.policy.context.model.ConstraintSlaCapacity;
+import org.etsi.tfs.policy.context.model.ConstraintSlaIsolationLevel;
+import org.etsi.tfs.policy.context.model.ConstraintSlaLatency;
+import org.etsi.tfs.policy.context.model.ConstraintTypeCustom;
+import org.etsi.tfs.policy.context.model.ConstraintTypeEndPointLocation;
+import org.etsi.tfs.policy.context.model.ConstraintTypeSchedule;
+import org.etsi.tfs.policy.context.model.ConstraintTypeSlaAvailability;
+import org.etsi.tfs.policy.context.model.ConstraintTypeSlaCapacity;
+import org.etsi.tfs.policy.context.model.ConstraintTypeSlaIsolationLevel;
+import org.etsi.tfs.policy.context.model.ConstraintTypeSlaLatency;
+import org.etsi.tfs.policy.context.model.Device;
+import org.etsi.tfs.policy.context.model.DeviceConfig;
+import org.etsi.tfs.policy.context.model.DeviceDriverEnum;
+import org.etsi.tfs.policy.context.model.DeviceOperationalStatus;
+import org.etsi.tfs.policy.context.model.Empty;
+import org.etsi.tfs.policy.context.model.EndPoint.EndPointBuilder;
+import org.etsi.tfs.policy.context.model.EndPointId;
+import org.etsi.tfs.policy.context.model.Event;
+import org.etsi.tfs.policy.context.model.EventTypeEnum;
+import org.etsi.tfs.policy.context.model.GpsPosition;
+import org.etsi.tfs.policy.context.model.IsolationLevelEnum;
+import org.etsi.tfs.policy.context.model.Location;
+import org.etsi.tfs.policy.context.model.LocationTypeGpsPosition;
+import org.etsi.tfs.policy.context.model.LocationTypeRegion;
+import org.etsi.tfs.policy.context.model.Service;
+import org.etsi.tfs.policy.context.model.ServiceConfig;
+import org.etsi.tfs.policy.context.model.ServiceId;
+import org.etsi.tfs.policy.context.model.ServiceStatus;
+import org.etsi.tfs.policy.context.model.ServiceStatusEnum;
+import org.etsi.tfs.policy.context.model.ServiceTypeEnum;
+import org.etsi.tfs.policy.context.model.SliceId;
+import org.etsi.tfs.policy.context.model.TopologyId;
+import org.etsi.tfs.policy.kpi_sample_types.model.KpiSampleType;
+import org.etsi.tfs.policy.model.BooleanOperator;
+import org.etsi.tfs.policy.model.NumericalOperator;
+import org.etsi.tfs.policy.model.PolicyRuleAction;
+import org.etsi.tfs.policy.model.PolicyRuleActionConfig;
+import org.etsi.tfs.policy.model.PolicyRuleActionEnum;
+import org.etsi.tfs.policy.model.PolicyRuleBasic;
+import org.etsi.tfs.policy.model.PolicyRuleCondition;
+import org.etsi.tfs.policy.model.PolicyRuleDevice;
+import org.etsi.tfs.policy.model.PolicyRuleService;
+import org.etsi.tfs.policy.model.PolicyRuleState;
+import org.etsi.tfs.policy.model.PolicyRuleStateEnum;
+import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor;
+import org.etsi.tfs.policy.monitoring.model.AlarmResponse;
+import org.etsi.tfs.policy.monitoring.model.BooleanKpiValue;
+import org.etsi.tfs.policy.monitoring.model.FloatKpiValue;
+import org.etsi.tfs.policy.monitoring.model.IntegerKpiValue;
+import org.etsi.tfs.policy.monitoring.model.Kpi;
+import org.etsi.tfs.policy.monitoring.model.KpiDescriptor;
+import org.etsi.tfs.policy.monitoring.model.KpiValue;
+import org.etsi.tfs.policy.monitoring.model.KpiValueRange;
+import org.etsi.tfs.policy.monitoring.model.StringKpiValue;
+import org.etsi.tfs.policy.monitoring.model.SubsDescriptor;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
@@ -862,7 +862,7 @@ class SerializerTest {
         final var aclRuleSet =
                 new AclRuleSet(
                         "aclRuleName",
-                        eu.teraflow.policy.acl.AclRuleTypeEnum.IPV4,
+                        org.etsi.tfs.policy.acl.AclRuleTypeEnum.IPV4,
                         "AclRuleDescription",
                         "userId",
                         List.of(aclEntry));
diff --git a/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java b/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java
index 85bc0d278365971bbf1bcb135d05fd8523392716..a25798b884d9006f9c1b218c133634784f8bf392 100644
--- a/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java
+++ b/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java
@@ -24504,6 +24504,568 @@ public final class ContextOuterClass {
 
   }
 
+  public interface LinkAttributesOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.LinkAttributes)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>float total_capacity_gbps = 1;</code>
+     * @return The totalCapacityGbps.
+     */
+    float getTotalCapacityGbps();
+
+    /**
+     * <code>float used_capacity_gbps = 2;</code>
+     * @return The usedCapacityGbps.
+     */
+    float getUsedCapacityGbps();
+  }
+  /**
+   * Protobuf type {@code context.LinkAttributes}
+   */
+  public static final class LinkAttributes extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:context.LinkAttributes)
+      LinkAttributesOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use LinkAttributes.newBuilder() to construct.
+    private LinkAttributes(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private LinkAttributes() {
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new LinkAttributes();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private LinkAttributes(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 13: {
+
+              totalCapacityGbps_ = input.readFloat();
+              break;
+            }
+            case 21: {
+
+              usedCapacityGbps_ = input.readFloat();
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return context.ContextOuterClass.internal_static_context_LinkAttributes_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              context.ContextOuterClass.LinkAttributes.class, context.ContextOuterClass.LinkAttributes.Builder.class);
+    }
+
+    public static final int TOTAL_CAPACITY_GBPS_FIELD_NUMBER = 1;
+    private float totalCapacityGbps_;
+    /**
+     * <code>float total_capacity_gbps = 1;</code>
+     * @return The totalCapacityGbps.
+     */
+    @java.lang.Override
+    public float getTotalCapacityGbps() {
+      return totalCapacityGbps_;
+    }
+
+    public static final int USED_CAPACITY_GBPS_FIELD_NUMBER = 2;
+    private float usedCapacityGbps_;
+    /**
+     * <code>float used_capacity_gbps = 2;</code>
+     * @return The usedCapacityGbps.
+     */
+    @java.lang.Override
+    public float getUsedCapacityGbps() {
+      return usedCapacityGbps_;
+    }
+
+    private byte memoizedIsInitialized = -1;
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      if (totalCapacityGbps_ != 0F) {
+        output.writeFloat(1, totalCapacityGbps_);
+      }
+      if (usedCapacityGbps_ != 0F) {
+        output.writeFloat(2, usedCapacityGbps_);
+      }
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (totalCapacityGbps_ != 0F) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeFloatSize(1, totalCapacityGbps_);
+      }
+      if (usedCapacityGbps_ != 0F) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeFloatSize(2, usedCapacityGbps_);
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof context.ContextOuterClass.LinkAttributes)) {
+        return super.equals(obj);
+      }
+      context.ContextOuterClass.LinkAttributes other = (context.ContextOuterClass.LinkAttributes) obj;
+
+      if (java.lang.Float.floatToIntBits(getTotalCapacityGbps())
+          != java.lang.Float.floatToIntBits(
+              other.getTotalCapacityGbps())) return false;
+      if (java.lang.Float.floatToIntBits(getUsedCapacityGbps())
+          != java.lang.Float.floatToIntBits(
+              other.getUsedCapacityGbps())) return false;
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (37 * hash) + TOTAL_CAPACITY_GBPS_FIELD_NUMBER;
+      hash = (53 * hash) + java.lang.Float.floatToIntBits(
+          getTotalCapacityGbps());
+      hash = (37 * hash) + USED_CAPACITY_GBPS_FIELD_NUMBER;
+      hash = (53 * hash) + java.lang.Float.floatToIntBits(
+          getUsedCapacityGbps());
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(context.ContextOuterClass.LinkAttributes prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code context.LinkAttributes}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:context.LinkAttributes)
+        context.ContextOuterClass.LinkAttributesOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return context.ContextOuterClass.internal_static_context_LinkAttributes_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                context.ContextOuterClass.LinkAttributes.class, context.ContextOuterClass.LinkAttributes.Builder.class);
+      }
+
+      // Construct using context.ContextOuterClass.LinkAttributes.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+        }
+      }
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        totalCapacityGbps_ = 0F;
+
+        usedCapacityGbps_ = 0F;
+
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
+      }
+
+      @java.lang.Override
+      public context.ContextOuterClass.LinkAttributes getDefaultInstanceForType() {
+        return context.ContextOuterClass.LinkAttributes.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public context.ContextOuterClass.LinkAttributes build() {
+        context.ContextOuterClass.LinkAttributes result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public context.ContextOuterClass.LinkAttributes buildPartial() {
+        context.ContextOuterClass.LinkAttributes result = new context.ContextOuterClass.LinkAttributes(this);
+        result.totalCapacityGbps_ = totalCapacityGbps_;
+        result.usedCapacityGbps_ = usedCapacityGbps_;
+        onBuilt();
+        return result;
+      }
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof context.ContextOuterClass.LinkAttributes) {
+          return mergeFrom((context.ContextOuterClass.LinkAttributes)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(context.ContextOuterClass.LinkAttributes other) {
+        if (other == context.ContextOuterClass.LinkAttributes.getDefaultInstance()) return this;
+        if (other.getTotalCapacityGbps() != 0F) {
+          setTotalCapacityGbps(other.getTotalCapacityGbps());
+        }
+        if (other.getUsedCapacityGbps() != 0F) {
+          setUsedCapacityGbps(other.getUsedCapacityGbps());
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        context.ContextOuterClass.LinkAttributes parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (context.ContextOuterClass.LinkAttributes) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+
+      private float totalCapacityGbps_ ;
+      /**
+       * <code>float total_capacity_gbps = 1;</code>
+       * @return The totalCapacityGbps.
+       */
+      @java.lang.Override
+      public float getTotalCapacityGbps() {
+        return totalCapacityGbps_;
+      }
+      /**
+       * <code>float total_capacity_gbps = 1;</code>
+       * @param value The totalCapacityGbps to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTotalCapacityGbps(float value) {
+        
+        totalCapacityGbps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>float total_capacity_gbps = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTotalCapacityGbps() {
+        
+        totalCapacityGbps_ = 0F;
+        onChanged();
+        return this;
+      }
+
+      private float usedCapacityGbps_ ;
+      /**
+       * <code>float used_capacity_gbps = 2;</code>
+       * @return The usedCapacityGbps.
+       */
+      @java.lang.Override
+      public float getUsedCapacityGbps() {
+        return usedCapacityGbps_;
+      }
+      /**
+       * <code>float used_capacity_gbps = 2;</code>
+       * @param value The usedCapacityGbps to set.
+       * @return This builder for chaining.
+       */
+      public Builder setUsedCapacityGbps(float value) {
+        
+        usedCapacityGbps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>float used_capacity_gbps = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearUsedCapacityGbps() {
+        
+        usedCapacityGbps_ = 0F;
+        onChanged();
+        return this;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:context.LinkAttributes)
+    }
+
+    // @@protoc_insertion_point(class_scope:context.LinkAttributes)
+    private static final context.ContextOuterClass.LinkAttributes DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkAttributes();
+    }
+
+    public static context.ContextOuterClass.LinkAttributes getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static final com.google.protobuf.Parser<LinkAttributes>
+        PARSER = new com.google.protobuf.AbstractParser<LinkAttributes>() {
+      @java.lang.Override
+      public LinkAttributes parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new LinkAttributes(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<LinkAttributes> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<LinkAttributes> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public context.ContextOuterClass.LinkAttributes getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
   public interface LinkOrBuilder extends
       // @@protoc_insertion_point(interface_extends:context.Link)
       com.google.protobuf.MessageOrBuilder {
@@ -24558,6 +25120,21 @@ public final class ContextOuterClass {
      */
     context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(
         int index);
+
+    /**
+     * <code>.context.LinkAttributes attributes = 4;</code>
+     * @return Whether the attributes field is set.
+     */
+    boolean hasAttributes();
+    /**
+     * <code>.context.LinkAttributes attributes = 4;</code>
+     * @return The attributes.
+     */
+    context.ContextOuterClass.LinkAttributes getAttributes();
+    /**
+     * <code>.context.LinkAttributes attributes = 4;</code>
+     */
+    context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder();
   }
   /**
    * Protobuf type {@code context.Link}
@@ -24635,6 +25212,19 @@ public final class ContextOuterClass {
                   input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
               break;
             }
+            case 34: {
+              context.ContextOuterClass.LinkAttributes.Builder subBuilder = null;
+              if (attributes_ != null) {
+                subBuilder = attributes_.toBuilder();
+              }
+              attributes_ = input.readMessage(context.ContextOuterClass.LinkAttributes.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(attributes_);
+                attributes_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -24774,6 +25364,32 @@ public final class ContextOuterClass {
       return linkEndpointIds_.get(index);
     }
 
+    public static final int ATTRIBUTES_FIELD_NUMBER = 4;
+    private context.ContextOuterClass.LinkAttributes attributes_;
+    /**
+     * <code>.context.LinkAttributes attributes = 4;</code>
+     * @return Whether the attributes field is set.
+     */
+    @java.lang.Override
+    public boolean hasAttributes() {
+      return attributes_ != null;
+    }
+    /**
+     * <code>.context.LinkAttributes attributes = 4;</code>
+     * @return The attributes.
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.LinkAttributes getAttributes() {
+      return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
+    }
+    /**
+     * <code>.context.LinkAttributes attributes = 4;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder() {
+      return getAttributes();
+    }
+
     private byte memoizedIsInitialized = -1;
     @java.lang.Override
     public final boolean isInitialized() {
@@ -24797,6 +25413,9 @@ public final class ContextOuterClass {
       for (int i = 0; i < linkEndpointIds_.size(); i++) {
         output.writeMessage(3, linkEndpointIds_.get(i));
       }
+      if (attributes_ != null) {
+        output.writeMessage(4, getAttributes());
+      }
       unknownFields.writeTo(output);
     }
 
@@ -24817,6 +25436,10 @@ public final class ContextOuterClass {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(3, linkEndpointIds_.get(i));
       }
+      if (attributes_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, getAttributes());
+      }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
@@ -24841,6 +25464,11 @@ public final class ContextOuterClass {
           .equals(other.getName())) return false;
       if (!getLinkEndpointIdsList()
           .equals(other.getLinkEndpointIdsList())) return false;
+      if (hasAttributes() != other.hasAttributes()) return false;
+      if (hasAttributes()) {
+        if (!getAttributes()
+            .equals(other.getAttributes())) return false;
+      }
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -24862,6 +25490,10 @@ public final class ContextOuterClass {
         hash = (37 * hash) + LINK_ENDPOINT_IDS_FIELD_NUMBER;
         hash = (53 * hash) + getLinkEndpointIdsList().hashCode();
       }
+      if (hasAttributes()) {
+        hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
+        hash = (53 * hash) + getAttributes().hashCode();
+      }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
@@ -25010,6 +25642,12 @@ public final class ContextOuterClass {
         } else {
           linkEndpointIdsBuilder_.clear();
         }
+        if (attributesBuilder_ == null) {
+          attributes_ = null;
+        } else {
+          attributes_ = null;
+          attributesBuilder_ = null;
+        }
         return this;
       }
 
@@ -25052,6 +25690,11 @@ public final class ContextOuterClass {
         } else {
           result.linkEndpointIds_ = linkEndpointIdsBuilder_.build();
         }
+        if (attributesBuilder_ == null) {
+          result.attributes_ = attributes_;
+        } else {
+          result.attributes_ = attributesBuilder_.build();
+        }
         onBuilt();
         return result;
       }
@@ -25133,6 +25776,9 @@ public final class ContextOuterClass {
             }
           }
         }
+        if (other.hasAttributes()) {
+          mergeAttributes(other.getAttributes());
+        }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
@@ -25597,6 +26243,125 @@ public final class ContextOuterClass {
         }
         return linkEndpointIdsBuilder_;
       }
+
+      private context.ContextOuterClass.LinkAttributes attributes_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.LinkAttributes, context.ContextOuterClass.LinkAttributes.Builder, context.ContextOuterClass.LinkAttributesOrBuilder> attributesBuilder_;
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       * @return Whether the attributes field is set.
+       */
+      public boolean hasAttributes() {
+        return attributesBuilder_ != null || attributes_ != null;
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       * @return The attributes.
+       */
+      public context.ContextOuterClass.LinkAttributes getAttributes() {
+        if (attributesBuilder_ == null) {
+          return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
+        } else {
+          return attributesBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       */
+      public Builder setAttributes(context.ContextOuterClass.LinkAttributes value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          attributes_ = value;
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       */
+      public Builder setAttributes(
+          context.ContextOuterClass.LinkAttributes.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          attributes_ = builderForValue.build();
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       */
+      public Builder mergeAttributes(context.ContextOuterClass.LinkAttributes value) {
+        if (attributesBuilder_ == null) {
+          if (attributes_ != null) {
+            attributes_ =
+              context.ContextOuterClass.LinkAttributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
+          } else {
+            attributes_ = value;
+          }
+          onChanged();
+        } else {
+          attributesBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       */
+      public Builder clearAttributes() {
+        if (attributesBuilder_ == null) {
+          attributes_ = null;
+          onChanged();
+        } else {
+          attributes_ = null;
+          attributesBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       */
+      public context.ContextOuterClass.LinkAttributes.Builder getAttributesBuilder() {
+        
+        onChanged();
+        return getAttributesFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       */
+      public context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder() {
+        if (attributesBuilder_ != null) {
+          return attributesBuilder_.getMessageOrBuilder();
+        } else {
+          return attributes_ == null ?
+              context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
+        }
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.LinkAttributes, context.ContextOuterClass.LinkAttributes.Builder, context.ContextOuterClass.LinkAttributesOrBuilder> 
+          getAttributesFieldBuilder() {
+        if (attributesBuilder_ == null) {
+          attributesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.LinkAttributes, context.ContextOuterClass.LinkAttributes.Builder, context.ContextOuterClass.LinkAttributesOrBuilder>(
+                  getAttributes(),
+                  getParentForChildren(),
+                  isClean());
+          attributes_ = null;
+        }
+        return attributesBuilder_;
+      }
       @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
@@ -74566,6 +75331,11 @@ public final class ContextOuterClass {
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_context_LinkId_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_context_LinkAttributes_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_context_LinkAttributes_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_context_Link_descriptor;
   private static final 
@@ -74899,268 +75669,271 @@ public final class ContextOuterClass {
       "nt\030\001 \001(\0132\016.context.Event\022$\n\tdevice_id\030\002 " +
       "\001(\0132\021.context.DeviceId\022,\n\rdevice_config\030" +
       "\003 \001(\0132\025.context.DeviceConfig\"*\n\006LinkId\022 " +
-      "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"f\n\004Link" +
-      "\022 \n\007link_id\030\001 \001(\0132\017.context.LinkId\022\014\n\004na" +
-      "me\030\002 \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132\023.co" +
-      "ntext.EndPointId\"/\n\nLinkIdList\022!\n\010link_i" +
-      "ds\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034\n" +
-      "\005links\030\001 \003(\0132\r.context.Link\"L\n\tLinkEvent" +
-      "\022\035\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link_" +
-      "id\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022&" +
-      "\n\ncontext_id\030\001 \001(\0132\022.context.ContextId\022#" +
-      "\n\014service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n\007" +
-      "Service\022&\n\nservice_id\030\001 \001(\0132\022.context.Se" +
-      "rviceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003 " +
-      "\001(\0162\030.context.ServiceTypeEnum\0221\n\024service" +
-      "_endpoint_ids\030\004 \003(\0132\023.context.EndPointId" +
-      "\0220\n\023service_constraints\030\005 \003(\0132\023.context." +
-      "Constraint\022.\n\016service_status\030\006 \001(\0132\026.con" +
-      "text.ServiceStatus\022.\n\016service_config\030\007 \001" +
-      "(\0132\026.context.ServiceConfig\022%\n\ttimestamp\030" +
-      "\010 \001(\0132\022.context.Timestamp\"C\n\rServiceStat" +
-      "us\0222\n\016service_status\030\001 \001(\0162\032.context.Ser" +
-      "viceStatusEnum\":\n\rServiceConfig\022)\n\014confi" +
-      "g_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rSe" +
-      "rviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.conte" +
-      "xt.ServiceId\"1\n\013ServiceList\022\"\n\010services\030" +
-      "\001 \003(\0132\020.context.Service\"\225\001\n\rServiceFilte" +
-      "r\022+\n\013service_ids\030\001 \001(\0132\026.context.Service" +
-      "IdList\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n\023" +
-      "include_constraints\030\003 \001(\010\022\034\n\024include_con" +
-      "fig_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005event" +
-      "\030\001 \001(\0132\016.context.Event\022&\n\nservice_id\030\002 \001" +
-      "(\0132\022.context.ServiceId\"T\n\007SliceId\022&\n\ncon" +
-      "text_id\030\001 \001(\0132\022.context.ContextId\022!\n\nsli" +
-      "ce_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022\"" +
-      "\n\010slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004na" +
-      "me\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023.c" +
-      "ontext.EndPointId\022.\n\021slice_constraints\030\004" +
-      " \003(\0132\023.context.Constraint\022-\n\021slice_servi" +
-      "ce_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022slic" +
-      "e_subslice_ids\030\006 \003(\0132\020.context.SliceId\022*" +
-      "\n\014slice_status\030\007 \001(\0132\024.context.SliceStat" +
-      "us\022*\n\014slice_config\030\010 \001(\0132\024.context.Slice" +
-      "Config\022(\n\013slice_owner\030\t \001(\0132\023.context.Sl" +
-      "iceOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.Ti" +
-      "mestamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001(" +
-      "\0132\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"=" +
-      "\n\013SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.co" +
-      "ntext.SliceStatusEnum\"8\n\013SliceConfig\022)\n\014" +
-      "config_rules\030\001 \003(\0132\023.context.ConfigRule\"" +
-      "2\n\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.cont" +
-      "ext.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(\013" +
-      "2\016.context.Slice\"\312\001\n\013SliceFilter\022\'\n\tslic" +
-      "e_ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024inc" +
-      "lude_endpoint_ids\030\002 \001(\010\022\033\n\023include_const" +
-      "raints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001(" +
-      "\010\022\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024inclu" +
-      "de_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005e" +
-      "vent\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030\002" +
-      " \001(\0132\020.context.SliceId\"6\n\014ConnectionId\022&" +
-      "\n\017connection_uuid\030\001 \001(\0132\r.context.Uuid\"2" +
-      "\n\025ConnectionSettings_L0\022\031\n\021lsp_symbolic_" +
-      "name\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n\017" +
-      "src_mac_address\030\001 \001(\t\022\027\n\017dst_mac_address" +
-      "\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004 " +
-      "\001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic_" +
-      "class\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n\016" +
-      "src_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030\002" +
-      " \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n\003" +
-      "ttl\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010sr" +
-      "c_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_fl" +
-      "ags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSet" +
-      "tings\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionSe" +
-      "ttings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connecti" +
-      "onSettings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Conn" +
-      "ectionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context." +
-      "ConnectionSettings_L4\"\363\001\n\nConnection\022,\n\r" +
-      "connection_id\030\001 \001(\0132\025.context.Connection" +
-      "Id\022&\n\nservice_id\030\002 \001(\0132\022.context.Service" +
-      "Id\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.con" +
-      "text.EndPointId\022+\n\017sub_service_ids\030\004 \003(\013" +
-      "2\022.context.ServiceId\022-\n\010settings\030\005 \001(\0132\033" +
-      ".context.ConnectionSettings\"A\n\020Connectio" +
-      "nIdList\022-\n\016connection_ids\030\001 \003(\0132\025.contex" +
-      "t.ConnectionId\":\n\016ConnectionList\022(\n\013conn" +
-      "ections\030\001 \003(\0132\023.context.Connection\"^\n\017Co" +
-      "nnectionEvent\022\035\n\005event\030\001 \001(\0132\016.context.E" +
-      "vent\022,\n\rconnection_id\030\002 \001(\0132\025.context.Co" +
-      "nnectionId\"\202\001\n\nEndPointId\022(\n\013topology_id" +
-      "\030\001 \001(\0132\023.context.TopologyId\022$\n\tdevice_id" +
-      "\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpoint_uu" +
-      "id\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010EndPoint\022(\n\013" +
-      "endpoint_id\030\001 \001(\0132\023.context.EndPointId\022\014" +
-      "\n\004name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020k" +
-      "pi_sample_types\030\004 \003(\0162\037.kpi_sample_types" +
-      ".KpiSampleType\022,\n\021endpoint_location\030\005 \001(" +
-      "\0132\021.context.Location\"{\n\014EndPointName\022(\n\013" +
-      "endpoint_id\030\001 \001(\0132\023.context.EndPointId\022\023" +
-      "\n\013device_name\030\002 \001(\t\022\025\n\rendpoint_name\030\003 \001" +
-      "(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016EndPointIdL" +
-      "ist\022)\n\014endpoint_ids\030\001 \003(\0132\023.context.EndP" +
-      "ointId\"A\n\020EndPointNameList\022-\n\016endpoint_n" +
-      "ames\030\001 \003(\0132\025.context.EndPointName\"A\n\021Con" +
-      "figRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022\026\n\016" +
-      "resource_value\030\002 \001(\t\"]\n\016ConfigRule_ACL\022(" +
-      "\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointId" +
-      "\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n\n" +
-      "ConfigRule\022)\n\006action\030\001 \001(\0162\031.context.Con" +
-      "figActionEnum\022,\n\006custom\030\002 \001(\0132\032.context." +
-      "ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.conte" +
-      "xt.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n\021Co" +
-      "nstraint_Custom\022\027\n\017constraint_type\030\001 \001(\t" +
-      "\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constraint" +
-      "_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n\rdu" +
-      "ration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010lat" +
-      "itude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Locati" +
-      "on\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030\002 \001" +
-      "(\0132\025.context.GPS_PositionH\000B\n\n\010location\"" +
-      "l\n\033Constraint_EndPointLocation\022(\n\013endpoi" +
-      "nt_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010loca" +
-      "tion\030\002 \001(\0132\021.context.Location\"Y\n\033Constra" +
-      "int_EndPointPriority\022(\n\013endpoint_id\030\001 \001(" +
-      "\0132\023.context.EndPointId\022\020\n\010priority\030\002 \001(\r" +
-      "\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_latenc" +
-      "y_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity\022\025\n" +
-      "\rcapacity_gbps\030\001 \001(\002\"c\n\033Constraint_SLA_A" +
-      "vailability\022\032\n\022num_disjoint_paths\030\001 \001(\r\022" +
-      "\022\n\nall_active\030\002 \001(\010\022\024\n\014availability\030\003 \001(" +
-      "\002\"V\n\036Constraint_SLA_Isolation_level\0224\n\017i" +
-      "solation_level\030\001 \003(\0162\033.context.Isolation" +
-      "LevelEnum\"\242\001\n\025Constraint_Exclusions\022\024\n\014i" +
-      "s_permanent\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021." +
-      "context.DeviceId\022)\n\014endpoint_ids\030\003 \003(\0132\023" +
-      ".context.EndPointId\022!\n\010link_ids\030\004 \003(\0132\017." +
-      "context.LinkId\"\333\004\n\nConstraint\022-\n\006action\030" +
-      "\001 \001(\0162\035.context.ConstraintActionEnum\022,\n\006" +
-      "custom\030\002 \001(\0132\032.context.Constraint_Custom" +
-      "H\000\0220\n\010schedule\030\003 \001(\0132\034.context.Constrain" +
-      "t_ScheduleH\000\022A\n\021endpoint_location\030\004 \001(\0132" +
-      "$.context.Constraint_EndPointLocationH\000\022" +
-      "A\n\021endpoint_priority\030\005 \001(\0132$.context.Con" +
-      "straint_EndPointPriorityH\000\0228\n\014sla_capaci" +
-      "ty\030\006 \001(\0132 .context.Constraint_SLA_Capaci" +
-      "tyH\000\0226\n\013sla_latency\030\007 \001(\0132\037.context.Cons" +
-      "traint_SLA_LatencyH\000\022@\n\020sla_availability" +
-      "\030\010 \001(\0132$.context.Constraint_SLA_Availabi" +
-      "lityH\000\022@\n\rsla_isolation\030\t \001(\0132\'.context." +
-      "Constraint_SLA_Isolation_levelH\000\0224\n\nexcl" +
-      "usions\030\n \001(\0132\036.context.Constraint_Exclus" +
-      "ionsH\000B\014\n\nconstraint\"^\n\022TeraFlowControll" +
-      "er\022&\n\ncontext_id\030\001 \001(\0132\022.context.Context" +
-      "Id\022\022\n\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n\024" +
-      "AuthenticationResult\022&\n\ncontext_id\030\001 \001(\013" +
-      "2\022.context.ContextId\022\025\n\rauthenticated\030\002 " +
-      "\001(\010*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UNDEFI" +
-      "NED\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTTYPE" +
-      "_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\231\002\n\020Devi" +
-      "ceDriverEnum\022\032\n\026DEVICEDRIVER_UNDEFINED\020\000" +
-      "\022\033\n\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVICED" +
-      "RIVER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER_P4" +
-      "\020\003\022&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOLOGY" +
-      "\020\004\022\033\n\027DEVICEDRIVER_ONF_TR_532\020\005\022\023\n\017DEVIC" +
-      "EDRIVER_XR\020\006\022\033\n\027DEVICEDRIVER_IETF_L2VPN\020" +
-      "\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010*\217\001\n\033" +
-      "DeviceOperationalStatusEnum\022%\n!DEVICEOPE" +
-      "RATIONALSTATUS_UNDEFINED\020\000\022$\n DEVICEOPER" +
-      "ATIONALSTATUS_DISABLED\020\001\022#\n\037DEVICEOPERAT" +
-      "IONALSTATUS_ENABLED\020\002*\225\001\n\017ServiceTypeEnu" +
-      "m\022\027\n\023SERVICETYPE_UNKNOWN\020\000\022\024\n\020SERVICETYP" +
-      "E_L3NM\020\001\022\024\n\020SERVICETYPE_L2NM\020\002\022)\n%SERVIC" +
-      "ETYPE_TAPI_CONNECTIVITY_SERVICE\020\003\022\022\n\016SER" +
-      "VICETYPE_TE\020\004*\304\001\n\021ServiceStatusEnum\022\033\n\027S" +
-      "ERVICESTATUS_UNDEFINED\020\000\022\031\n\025SERVICESTATU" +
-      "S_PLANNED\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022\032\n" +
-      "\026SERVICESTATUS_UPDATING\020\003\022!\n\035SERVICESTAT" +
-      "US_PENDING_REMOVAL\020\004\022\036\n\032SERVICESTATUS_SL" +
-      "A_VIOLATED\020\005*\251\001\n\017SliceStatusEnum\022\031\n\025SLIC" +
-      "ESTATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS_PLANN" +
-      "ED\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLICESTATU" +
-      "S_ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004\022\034\n\030SL" +
-      "ICESTATUS_SLA_VIOLATED\020\005*]\n\020ConfigAction" +
-      "Enum\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024\n\020CONF" +
-      "IGACTION_SET\020\001\022\027\n\023CONFIGACTION_DELETE\020\002*" +
-      "m\n\024ConstraintActionEnum\022\036\n\032CONSTRAINTACT" +
-      "ION_UNDEFINED\020\000\022\030\n\024CONSTRAINTACTION_SET\020" +
-      "\001\022\033\n\027CONSTRAINTACTION_DELETE\020\002*\203\002\n\022Isola" +
-      "tionLevelEnum\022\020\n\014NO_ISOLATION\020\000\022\026\n\022PHYSI" +
-      "CAL_ISOLATION\020\001\022\025\n\021LOGICAL_ISOLATION\020\002\022\025" +
-      "\n\021PROCESS_ISOLATION\020\003\022\035\n\031PHYSICAL_MEMORY" +
-      "_ISOLATION\020\004\022\036\n\032PHYSICAL_NETWORK_ISOLATI" +
-      "ON\020\005\022\036\n\032VIRTUAL_RESOURCE_ISOLATION\020\006\022\037\n\033" +
-      "NETWORK_FUNCTIONS_ISOLATION\020\007\022\025\n\021SERVICE" +
-      "_ISOLATION\020\0102\245\026\n\016ContextService\022:\n\016ListC" +
-      "ontextIds\022\016.context.Empty\032\026.context.Cont" +
-      "extIdList\"\000\0226\n\014ListContexts\022\016.context.Em" +
-      "pty\032\024.context.ContextList\"\000\0224\n\nGetContex" +
-      "t\022\022.context.ContextId\032\020.context.Context\"" +
-      "\000\0224\n\nSetContext\022\020.context.Context\032\022.cont" +
-      "ext.ContextId\"\000\0225\n\rRemoveContext\022\022.conte" +
-      "xt.ContextId\032\016.context.Empty\"\000\022=\n\020GetCon" +
-      "textEvents\022\016.context.Empty\032\025.context.Con" +
-      "textEvent\"\0000\001\022@\n\017ListTopologyIds\022\022.conte" +
-      "xt.ContextId\032\027.context.TopologyIdList\"\000\022" +
-      "=\n\016ListTopologies\022\022.context.ContextId\032\025." +
-      "context.TopologyList\"\000\0227\n\013GetTopology\022\023." +
-      "context.TopologyId\032\021.context.Topology\"\000\022" +
-      "E\n\022GetTopologyDetails\022\023.context.Topology" +
-      "Id\032\030.context.TopologyDetails\"\000\0227\n\013SetTop" +
-      "ology\022\021.context.Topology\032\023.context.Topol" +
-      "ogyId\"\000\0227\n\016RemoveTopology\022\023.context.Topo" +
-      "logyId\032\016.context.Empty\"\000\022?\n\021GetTopologyE" +
-      "vents\022\016.context.Empty\032\026.context.Topology" +
-      "Event\"\0000\001\0228\n\rListDeviceIds\022\016.context.Emp" +
-      "ty\032\025.context.DeviceIdList\"\000\0224\n\013ListDevic" +
-      "es\022\016.context.Empty\032\023.context.DeviceList\"" +
-      "\000\0221\n\tGetDevice\022\021.context.DeviceId\032\017.cont" +
-      "ext.Device\"\000\0221\n\tSetDevice\022\017.context.Devi" +
-      "ce\032\021.context.DeviceId\"\000\0223\n\014RemoveDevice\022" +
-      "\021.context.DeviceId\032\016.context.Empty\"\000\022;\n\017" +
-      "GetDeviceEvents\022\016.context.Empty\032\024.contex" +
-      "t.DeviceEvent\"\0000\001\022<\n\014SelectDevice\022\025.cont" +
-      "ext.DeviceFilter\032\023.context.DeviceList\"\000\022" +
-      "I\n\021ListEndPointNames\022\027.context.EndPointI" +
-      "dList\032\031.context.EndPointNameList\"\000\0224\n\013Li" +
-      "stLinkIds\022\016.context.Empty\032\023.context.Link" +
-      "IdList\"\000\0220\n\tListLinks\022\016.context.Empty\032\021." +
-      "context.LinkList\"\000\022+\n\007GetLink\022\017.context." +
-      "LinkId\032\r.context.Link\"\000\022+\n\007SetLink\022\r.con" +
-      "text.Link\032\017.context.LinkId\"\000\022/\n\nRemoveLi" +
-      "nk\022\017.context.LinkId\032\016.context.Empty\"\000\0227\n" +
-      "\rGetLinkEvents\022\016.context.Empty\032\022.context" +
-      ".LinkEvent\"\0000\001\022>\n\016ListServiceIds\022\022.conte" +
-      "xt.ContextId\032\026.context.ServiceIdList\"\000\022:" +
-      "\n\014ListServices\022\022.context.ContextId\032\024.con" +
-      "text.ServiceList\"\000\0224\n\nGetService\022\022.conte" +
-      "xt.ServiceId\032\020.context.Service\"\000\0224\n\nSetS" +
-      "ervice\022\020.context.Service\032\022.context.Servi" +
-      "ceId\"\000\0226\n\014UnsetService\022\020.context.Service" +
-      "\032\022.context.ServiceId\"\000\0225\n\rRemoveService\022" +
-      "\022.context.ServiceId\032\016.context.Empty\"\000\022=\n" +
-      "\020GetServiceEvents\022\016.context.Empty\032\025.cont" +
-      "ext.ServiceEvent\"\0000\001\022?\n\rSelectService\022\026." +
-      "context.ServiceFilter\032\024.context.ServiceL" +
-      "ist\"\000\022:\n\014ListSliceIds\022\022.context.ContextI" +
-      "d\032\024.context.SliceIdList\"\000\0226\n\nListSlices\022" +
-      "\022.context.ContextId\032\022.context.SliceList\"" +
-      "\000\022.\n\010GetSlice\022\020.context.SliceId\032\016.contex" +
-      "t.Slice\"\000\022.\n\010SetSlice\022\016.context.Slice\032\020." +
-      "context.SliceId\"\000\0220\n\nUnsetSlice\022\016.contex" +
-      "t.Slice\032\020.context.SliceId\"\000\0221\n\013RemoveSli" +
-      "ce\022\020.context.SliceId\032\016.context.Empty\"\000\0229" +
-      "\n\016GetSliceEvents\022\016.context.Empty\032\023.conte" +
-      "xt.SliceEvent\"\0000\001\0229\n\013SelectSlice\022\024.conte" +
-      "xt.SliceFilter\032\022.context.SliceList\"\000\022D\n\021" +
-      "ListConnectionIds\022\022.context.ServiceId\032\031." +
-      "context.ConnectionIdList\"\000\022@\n\017ListConnec" +
-      "tions\022\022.context.ServiceId\032\027.context.Conn" +
-      "ectionList\"\000\022=\n\rGetConnection\022\025.context." +
-      "ConnectionId\032\023.context.Connection\"\000\022=\n\rS" +
-      "etConnection\022\023.context.Connection\032\025.cont" +
-      "ext.ConnectionId\"\000\022;\n\020RemoveConnection\022\025" +
-      ".context.ConnectionId\032\016.context.Empty\"\000\022" +
-      "C\n\023GetConnectionEvents\022\016.context.Empty\032\030" +
-      ".context.ConnectionEvent\"\0000\001b\006proto3"
+      "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"I\n\016Link" +
+      "Attributes\022\033\n\023total_capacity_gbps\030\001 \001(\002\022" +
+      "\032\n\022used_capacity_gbps\030\002 \001(\002\"\223\001\n\004Link\022 \n\007" +
+      "link_id\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002" +
+      " \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132\023.contex" +
+      "t.EndPointId\022+\n\nattributes\030\004 \001(\0132\027.conte" +
+      "xt.LinkAttributes\"/\n\nLinkIdList\022!\n\010link_" +
+      "ids\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034" +
+      "\n\005links\030\001 \003(\0132\r.context.Link\"L\n\tLinkEven" +
+      "t\022\035\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link" +
+      "_id\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022" +
+      "&\n\ncontext_id\030\001 \001(\0132\022.context.ContextId\022" +
+      "#\n\014service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n" +
+      "\007Service\022&\n\nservice_id\030\001 \001(\0132\022.context.S" +
+      "erviceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003" +
+      " \001(\0162\030.context.ServiceTypeEnum\0221\n\024servic" +
+      "e_endpoint_ids\030\004 \003(\0132\023.context.EndPointI" +
+      "d\0220\n\023service_constraints\030\005 \003(\0132\023.context" +
+      ".Constraint\022.\n\016service_status\030\006 \001(\0132\026.co" +
+      "ntext.ServiceStatus\022.\n\016service_config\030\007 " +
+      "\001(\0132\026.context.ServiceConfig\022%\n\ttimestamp" +
+      "\030\010 \001(\0132\022.context.Timestamp\"C\n\rServiceSta" +
+      "tus\0222\n\016service_status\030\001 \001(\0162\032.context.Se" +
+      "rviceStatusEnum\":\n\rServiceConfig\022)\n\014conf" +
+      "ig_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rS" +
+      "erviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.cont" +
+      "ext.ServiceId\"1\n\013ServiceList\022\"\n\010services" +
+      "\030\001 \003(\0132\020.context.Service\"\225\001\n\rServiceFilt" +
+      "er\022+\n\013service_ids\030\001 \001(\0132\026.context.Servic" +
+      "eIdList\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n" +
+      "\023include_constraints\030\003 \001(\010\022\034\n\024include_co" +
+      "nfig_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005even" +
+      "t\030\001 \001(\0132\016.context.Event\022&\n\nservice_id\030\002 " +
+      "\001(\0132\022.context.ServiceId\"T\n\007SliceId\022&\n\nco" +
+      "ntext_id\030\001 \001(\0132\022.context.ContextId\022!\n\nsl" +
+      "ice_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022" +
+      "\"\n\010slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004n" +
+      "ame\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023." +
+      "context.EndPointId\022.\n\021slice_constraints\030" +
+      "\004 \003(\0132\023.context.Constraint\022-\n\021slice_serv" +
+      "ice_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022sli" +
+      "ce_subslice_ids\030\006 \003(\0132\020.context.SliceId\022" +
+      "*\n\014slice_status\030\007 \001(\0132\024.context.SliceSta" +
+      "tus\022*\n\014slice_config\030\010 \001(\0132\024.context.Slic" +
+      "eConfig\022(\n\013slice_owner\030\t \001(\0132\023.context.S" +
+      "liceOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.T" +
+      "imestamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001" +
+      "(\0132\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"" +
+      "=\n\013SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.c" +
+      "ontext.SliceStatusEnum\"8\n\013SliceConfig\022)\n" +
+      "\014config_rules\030\001 \003(\0132\023.context.ConfigRule" +
+      "\"2\n\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.con" +
+      "text.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(" +
+      "\0132\016.context.Slice\"\312\001\n\013SliceFilter\022\'\n\tsli" +
+      "ce_ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024in" +
+      "clude_endpoint_ids\030\002 \001(\010\022\033\n\023include_cons" +
+      "traints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001" +
+      "(\010\022\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024incl" +
+      "ude_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005" +
+      "event\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030" +
+      "\002 \001(\0132\020.context.SliceId\"6\n\014ConnectionId\022" +
+      "&\n\017connection_uuid\030\001 \001(\0132\r.context.Uuid\"" +
+      "2\n\025ConnectionSettings_L0\022\031\n\021lsp_symbolic" +
+      "_name\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n" +
+      "\017src_mac_address\030\001 \001(\t\022\027\n\017dst_mac_addres" +
+      "s\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004" +
+      " \001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic" +
+      "_class\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n" +
+      "\016src_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030" +
+      "\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n" +
+      "\003ttl\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010s" +
+      "rc_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_f" +
+      "lags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSe" +
+      "ttings\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionS" +
+      "ettings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connect" +
+      "ionSettings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Con" +
+      "nectionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context" +
+      ".ConnectionSettings_L4\"\363\001\n\nConnection\022,\n" +
+      "\rconnection_id\030\001 \001(\0132\025.context.Connectio" +
+      "nId\022&\n\nservice_id\030\002 \001(\0132\022.context.Servic" +
+      "eId\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.co" +
+      "ntext.EndPointId\022+\n\017sub_service_ids\030\004 \003(" +
+      "\0132\022.context.ServiceId\022-\n\010settings\030\005 \001(\0132" +
+      "\033.context.ConnectionSettings\"A\n\020Connecti" +
+      "onIdList\022-\n\016connection_ids\030\001 \003(\0132\025.conte" +
+      "xt.ConnectionId\":\n\016ConnectionList\022(\n\013con" +
+      "nections\030\001 \003(\0132\023.context.Connection\"^\n\017C" +
+      "onnectionEvent\022\035\n\005event\030\001 \001(\0132\016.context." +
+      "Event\022,\n\rconnection_id\030\002 \001(\0132\025.context.C" +
+      "onnectionId\"\202\001\n\nEndPointId\022(\n\013topology_i" +
+      "d\030\001 \001(\0132\023.context.TopologyId\022$\n\tdevice_i" +
+      "d\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpoint_u" +
+      "uid\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010EndPoint\022(\n" +
+      "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" +
+      "\014\n\004name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020" +
+      "kpi_sample_types\030\004 \003(\0162\037.kpi_sample_type" +
+      "s.KpiSampleType\022,\n\021endpoint_location\030\005 \001" +
+      "(\0132\021.context.Location\"{\n\014EndPointName\022(\n" +
+      "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" +
+      "\023\n\013device_name\030\002 \001(\t\022\025\n\rendpoint_name\030\003 " +
+      "\001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016EndPointId" +
+      "List\022)\n\014endpoint_ids\030\001 \003(\0132\023.context.End" +
+      "PointId\"A\n\020EndPointNameList\022-\n\016endpoint_" +
+      "names\030\001 \003(\0132\025.context.EndPointName\"A\n\021Co" +
+      "nfigRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022\026\n" +
+      "\016resource_value\030\002 \001(\t\"]\n\016ConfigRule_ACL\022" +
+      "(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointI" +
+      "d\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n" +
+      "\nConfigRule\022)\n\006action\030\001 \001(\0162\031.context.Co" +
+      "nfigActionEnum\022,\n\006custom\030\002 \001(\0132\032.context" +
+      ".ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.cont" +
+      "ext.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n\021C" +
+      "onstraint_Custom\022\027\n\017constraint_type\030\001 \001(" +
+      "\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constrain" +
+      "t_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n\rd" +
+      "uration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010la" +
+      "titude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Locat" +
+      "ion\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030\002 " +
+      "\001(\0132\025.context.GPS_PositionH\000B\n\n\010location" +
+      "\"l\n\033Constraint_EndPointLocation\022(\n\013endpo" +
+      "int_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010loc" +
+      "ation\030\002 \001(\0132\021.context.Location\"Y\n\033Constr" +
+      "aint_EndPointPriority\022(\n\013endpoint_id\030\001 \001" +
+      "(\0132\023.context.EndPointId\022\020\n\010priority\030\002 \001(" +
+      "\r\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_laten" +
+      "cy_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity\022\025" +
+      "\n\rcapacity_gbps\030\001 \001(\002\"c\n\033Constraint_SLA_" +
+      "Availability\022\032\n\022num_disjoint_paths\030\001 \001(\r" +
+      "\022\022\n\nall_active\030\002 \001(\010\022\024\n\014availability\030\003 \001" +
+      "(\002\"V\n\036Constraint_SLA_Isolation_level\0224\n\017" +
+      "isolation_level\030\001 \003(\0162\033.context.Isolatio" +
+      "nLevelEnum\"\242\001\n\025Constraint_Exclusions\022\024\n\014" +
+      "is_permanent\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021" +
+      ".context.DeviceId\022)\n\014endpoint_ids\030\003 \003(\0132" +
+      "\023.context.EndPointId\022!\n\010link_ids\030\004 \003(\0132\017" +
+      ".context.LinkId\"\333\004\n\nConstraint\022-\n\006action" +
+      "\030\001 \001(\0162\035.context.ConstraintActionEnum\022,\n" +
+      "\006custom\030\002 \001(\0132\032.context.Constraint_Custo" +
+      "mH\000\0220\n\010schedule\030\003 \001(\0132\034.context.Constrai" +
+      "nt_ScheduleH\000\022A\n\021endpoint_location\030\004 \001(\013" +
+      "2$.context.Constraint_EndPointLocationH\000" +
+      "\022A\n\021endpoint_priority\030\005 \001(\0132$.context.Co" +
+      "nstraint_EndPointPriorityH\000\0228\n\014sla_capac" +
+      "ity\030\006 \001(\0132 .context.Constraint_SLA_Capac" +
+      "ityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.context.Con" +
+      "straint_SLA_LatencyH\000\022@\n\020sla_availabilit" +
+      "y\030\010 \001(\0132$.context.Constraint_SLA_Availab" +
+      "ilityH\000\022@\n\rsla_isolation\030\t \001(\0132\'.context" +
+      ".Constraint_SLA_Isolation_levelH\000\0224\n\nexc" +
+      "lusions\030\n \001(\0132\036.context.Constraint_Exclu" +
+      "sionsH\000B\014\n\nconstraint\"^\n\022TeraFlowControl" +
+      "ler\022&\n\ncontext_id\030\001 \001(\0132\022.context.Contex" +
+      "tId\022\022\n\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n" +
+      "\024AuthenticationResult\022&\n\ncontext_id\030\001 \001(" +
+      "\0132\022.context.ContextId\022\025\n\rauthenticated\030\002" +
+      " \001(\010*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UNDEF" +
+      "INED\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTTYP" +
+      "E_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\231\002\n\020Dev" +
+      "iceDriverEnum\022\032\n\026DEVICEDRIVER_UNDEFINED\020" +
+      "\000\022\033\n\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVICE" +
+      "DRIVER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER_P" +
+      "4\020\003\022&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOLOG" +
+      "Y\020\004\022\033\n\027DEVICEDRIVER_ONF_TR_532\020\005\022\023\n\017DEVI" +
+      "CEDRIVER_XR\020\006\022\033\n\027DEVICEDRIVER_IETF_L2VPN" +
+      "\020\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010*\217\001\n" +
+      "\033DeviceOperationalStatusEnum\022%\n!DEVICEOP" +
+      "ERATIONALSTATUS_UNDEFINED\020\000\022$\n DEVICEOPE" +
+      "RATIONALSTATUS_DISABLED\020\001\022#\n\037DEVICEOPERA" +
+      "TIONALSTATUS_ENABLED\020\002*\225\001\n\017ServiceTypeEn" +
+      "um\022\027\n\023SERVICETYPE_UNKNOWN\020\000\022\024\n\020SERVICETY" +
+      "PE_L3NM\020\001\022\024\n\020SERVICETYPE_L2NM\020\002\022)\n%SERVI" +
+      "CETYPE_TAPI_CONNECTIVITY_SERVICE\020\003\022\022\n\016SE" +
+      "RVICETYPE_TE\020\004*\304\001\n\021ServiceStatusEnum\022\033\n\027" +
+      "SERVICESTATUS_UNDEFINED\020\000\022\031\n\025SERVICESTAT" +
+      "US_PLANNED\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022\032" +
+      "\n\026SERVICESTATUS_UPDATING\020\003\022!\n\035SERVICESTA" +
+      "TUS_PENDING_REMOVAL\020\004\022\036\n\032SERVICESTATUS_S" +
+      "LA_VIOLATED\020\005*\251\001\n\017SliceStatusEnum\022\031\n\025SLI" +
+      "CESTATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS_PLAN" +
+      "NED\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLICESTAT" +
+      "US_ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004\022\034\n\030S" +
+      "LICESTATUS_SLA_VIOLATED\020\005*]\n\020ConfigActio" +
+      "nEnum\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024\n\020CON" +
+      "FIGACTION_SET\020\001\022\027\n\023CONFIGACTION_DELETE\020\002" +
+      "*m\n\024ConstraintActionEnum\022\036\n\032CONSTRAINTAC" +
+      "TION_UNDEFINED\020\000\022\030\n\024CONSTRAINTACTION_SET" +
+      "\020\001\022\033\n\027CONSTRAINTACTION_DELETE\020\002*\203\002\n\022Isol" +
+      "ationLevelEnum\022\020\n\014NO_ISOLATION\020\000\022\026\n\022PHYS" +
+      "ICAL_ISOLATION\020\001\022\025\n\021LOGICAL_ISOLATION\020\002\022" +
+      "\025\n\021PROCESS_ISOLATION\020\003\022\035\n\031PHYSICAL_MEMOR" +
+      "Y_ISOLATION\020\004\022\036\n\032PHYSICAL_NETWORK_ISOLAT" +
+      "ION\020\005\022\036\n\032VIRTUAL_RESOURCE_ISOLATION\020\006\022\037\n" +
+      "\033NETWORK_FUNCTIONS_ISOLATION\020\007\022\025\n\021SERVIC" +
+      "E_ISOLATION\020\0102\245\026\n\016ContextService\022:\n\016List" +
+      "ContextIds\022\016.context.Empty\032\026.context.Con" +
+      "textIdList\"\000\0226\n\014ListContexts\022\016.context.E" +
+      "mpty\032\024.context.ContextList\"\000\0224\n\nGetConte" +
+      "xt\022\022.context.ContextId\032\020.context.Context" +
+      "\"\000\0224\n\nSetContext\022\020.context.Context\032\022.con" +
+      "text.ContextId\"\000\0225\n\rRemoveContext\022\022.cont" +
+      "ext.ContextId\032\016.context.Empty\"\000\022=\n\020GetCo" +
+      "ntextEvents\022\016.context.Empty\032\025.context.Co" +
+      "ntextEvent\"\0000\001\022@\n\017ListTopologyIds\022\022.cont" +
+      "ext.ContextId\032\027.context.TopologyIdList\"\000" +
+      "\022=\n\016ListTopologies\022\022.context.ContextId\032\025" +
+      ".context.TopologyList\"\000\0227\n\013GetTopology\022\023" +
+      ".context.TopologyId\032\021.context.Topology\"\000" +
+      "\022E\n\022GetTopologyDetails\022\023.context.Topolog" +
+      "yId\032\030.context.TopologyDetails\"\000\0227\n\013SetTo" +
+      "pology\022\021.context.Topology\032\023.context.Topo" +
+      "logyId\"\000\0227\n\016RemoveTopology\022\023.context.Top" +
+      "ologyId\032\016.context.Empty\"\000\022?\n\021GetTopology" +
+      "Events\022\016.context.Empty\032\026.context.Topolog" +
+      "yEvent\"\0000\001\0228\n\rListDeviceIds\022\016.context.Em" +
+      "pty\032\025.context.DeviceIdList\"\000\0224\n\013ListDevi" +
+      "ces\022\016.context.Empty\032\023.context.DeviceList" +
+      "\"\000\0221\n\tGetDevice\022\021.context.DeviceId\032\017.con" +
+      "text.Device\"\000\0221\n\tSetDevice\022\017.context.Dev" +
+      "ice\032\021.context.DeviceId\"\000\0223\n\014RemoveDevice" +
+      "\022\021.context.DeviceId\032\016.context.Empty\"\000\022;\n" +
+      "\017GetDeviceEvents\022\016.context.Empty\032\024.conte" +
+      "xt.DeviceEvent\"\0000\001\022<\n\014SelectDevice\022\025.con" +
+      "text.DeviceFilter\032\023.context.DeviceList\"\000" +
+      "\022I\n\021ListEndPointNames\022\027.context.EndPoint" +
+      "IdList\032\031.context.EndPointNameList\"\000\0224\n\013L" +
+      "istLinkIds\022\016.context.Empty\032\023.context.Lin" +
+      "kIdList\"\000\0220\n\tListLinks\022\016.context.Empty\032\021" +
+      ".context.LinkList\"\000\022+\n\007GetLink\022\017.context" +
+      ".LinkId\032\r.context.Link\"\000\022+\n\007SetLink\022\r.co" +
+      "ntext.Link\032\017.context.LinkId\"\000\022/\n\nRemoveL" +
+      "ink\022\017.context.LinkId\032\016.context.Empty\"\000\0227" +
+      "\n\rGetLinkEvents\022\016.context.Empty\032\022.contex" +
+      "t.LinkEvent\"\0000\001\022>\n\016ListServiceIds\022\022.cont" +
+      "ext.ContextId\032\026.context.ServiceIdList\"\000\022" +
+      ":\n\014ListServices\022\022.context.ContextId\032\024.co" +
+      "ntext.ServiceList\"\000\0224\n\nGetService\022\022.cont" +
+      "ext.ServiceId\032\020.context.Service\"\000\0224\n\nSet" +
+      "Service\022\020.context.Service\032\022.context.Serv" +
+      "iceId\"\000\0226\n\014UnsetService\022\020.context.Servic" +
+      "e\032\022.context.ServiceId\"\000\0225\n\rRemoveService" +
+      "\022\022.context.ServiceId\032\016.context.Empty\"\000\022=" +
+      "\n\020GetServiceEvents\022\016.context.Empty\032\025.con" +
+      "text.ServiceEvent\"\0000\001\022?\n\rSelectService\022\026" +
+      ".context.ServiceFilter\032\024.context.Service" +
+      "List\"\000\022:\n\014ListSliceIds\022\022.context.Context" +
+      "Id\032\024.context.SliceIdList\"\000\0226\n\nListSlices" +
+      "\022\022.context.ContextId\032\022.context.SliceList" +
+      "\"\000\022.\n\010GetSlice\022\020.context.SliceId\032\016.conte" +
+      "xt.Slice\"\000\022.\n\010SetSlice\022\016.context.Slice\032\020" +
+      ".context.SliceId\"\000\0220\n\nUnsetSlice\022\016.conte" +
+      "xt.Slice\032\020.context.SliceId\"\000\0221\n\013RemoveSl" +
+      "ice\022\020.context.SliceId\032\016.context.Empty\"\000\022" +
+      "9\n\016GetSliceEvents\022\016.context.Empty\032\023.cont" +
+      "ext.SliceEvent\"\0000\001\0229\n\013SelectSlice\022\024.cont" +
+      "ext.SliceFilter\032\022.context.SliceList\"\000\022D\n" +
+      "\021ListConnectionIds\022\022.context.ServiceId\032\031" +
+      ".context.ConnectionIdList\"\000\022@\n\017ListConne" +
+      "ctions\022\022.context.ServiceId\032\027.context.Con" +
+      "nectionList\"\000\022=\n\rGetConnection\022\025.context" +
+      ".ConnectionId\032\023.context.Connection\"\000\022=\n\r" +
+      "SetConnection\022\023.context.Connection\032\025.con" +
+      "text.ConnectionId\"\000\022;\n\020RemoveConnection\022" +
+      "\025.context.ConnectionId\032\016.context.Empty\"\000" +
+      "\022C\n\023GetConnectionEvents\022\016.context.Empty\032" +
+      "\030.context.ConnectionEvent\"\0000\001b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -75318,320 +76091,326 @@ public final class ContextOuterClass {
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_LinkId_descriptor,
         new java.lang.String[] { "LinkUuid", });
-    internal_static_context_Link_descriptor =
+    internal_static_context_LinkAttributes_descriptor =
       getDescriptor().getMessageTypes().get(24);
+    internal_static_context_LinkAttributes_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_context_LinkAttributes_descriptor,
+        new java.lang.String[] { "TotalCapacityGbps", "UsedCapacityGbps", });
+    internal_static_context_Link_descriptor =
+      getDescriptor().getMessageTypes().get(25);
     internal_static_context_Link_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Link_descriptor,
-        new java.lang.String[] { "LinkId", "Name", "LinkEndpointIds", });
+        new java.lang.String[] { "LinkId", "Name", "LinkEndpointIds", "Attributes", });
     internal_static_context_LinkIdList_descriptor =
-      getDescriptor().getMessageTypes().get(25);
+      getDescriptor().getMessageTypes().get(26);
     internal_static_context_LinkIdList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_LinkIdList_descriptor,
         new java.lang.String[] { "LinkIds", });
     internal_static_context_LinkList_descriptor =
-      getDescriptor().getMessageTypes().get(26);
+      getDescriptor().getMessageTypes().get(27);
     internal_static_context_LinkList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_LinkList_descriptor,
         new java.lang.String[] { "Links", });
     internal_static_context_LinkEvent_descriptor =
-      getDescriptor().getMessageTypes().get(27);
+      getDescriptor().getMessageTypes().get(28);
     internal_static_context_LinkEvent_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_LinkEvent_descriptor,
         new java.lang.String[] { "Event", "LinkId", });
     internal_static_context_ServiceId_descriptor =
-      getDescriptor().getMessageTypes().get(28);
+      getDescriptor().getMessageTypes().get(29);
     internal_static_context_ServiceId_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ServiceId_descriptor,
         new java.lang.String[] { "ContextId", "ServiceUuid", });
     internal_static_context_Service_descriptor =
-      getDescriptor().getMessageTypes().get(29);
+      getDescriptor().getMessageTypes().get(30);
     internal_static_context_Service_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Service_descriptor,
         new java.lang.String[] { "ServiceId", "Name", "ServiceType", "ServiceEndpointIds", "ServiceConstraints", "ServiceStatus", "ServiceConfig", "Timestamp", });
     internal_static_context_ServiceStatus_descriptor =
-      getDescriptor().getMessageTypes().get(30);
+      getDescriptor().getMessageTypes().get(31);
     internal_static_context_ServiceStatus_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ServiceStatus_descriptor,
         new java.lang.String[] { "ServiceStatus", });
     internal_static_context_ServiceConfig_descriptor =
-      getDescriptor().getMessageTypes().get(31);
+      getDescriptor().getMessageTypes().get(32);
     internal_static_context_ServiceConfig_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ServiceConfig_descriptor,
         new java.lang.String[] { "ConfigRules", });
     internal_static_context_ServiceIdList_descriptor =
-      getDescriptor().getMessageTypes().get(32);
+      getDescriptor().getMessageTypes().get(33);
     internal_static_context_ServiceIdList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ServiceIdList_descriptor,
         new java.lang.String[] { "ServiceIds", });
     internal_static_context_ServiceList_descriptor =
-      getDescriptor().getMessageTypes().get(33);
+      getDescriptor().getMessageTypes().get(34);
     internal_static_context_ServiceList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ServiceList_descriptor,
         new java.lang.String[] { "Services", });
     internal_static_context_ServiceFilter_descriptor =
-      getDescriptor().getMessageTypes().get(34);
+      getDescriptor().getMessageTypes().get(35);
     internal_static_context_ServiceFilter_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ServiceFilter_descriptor,
         new java.lang.String[] { "ServiceIds", "IncludeEndpointIds", "IncludeConstraints", "IncludeConfigRules", });
     internal_static_context_ServiceEvent_descriptor =
-      getDescriptor().getMessageTypes().get(35);
+      getDescriptor().getMessageTypes().get(36);
     internal_static_context_ServiceEvent_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ServiceEvent_descriptor,
         new java.lang.String[] { "Event", "ServiceId", });
     internal_static_context_SliceId_descriptor =
-      getDescriptor().getMessageTypes().get(36);
+      getDescriptor().getMessageTypes().get(37);
     internal_static_context_SliceId_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceId_descriptor,
         new java.lang.String[] { "ContextId", "SliceUuid", });
     internal_static_context_Slice_descriptor =
-      getDescriptor().getMessageTypes().get(37);
+      getDescriptor().getMessageTypes().get(38);
     internal_static_context_Slice_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Slice_descriptor,
         new java.lang.String[] { "SliceId", "Name", "SliceEndpointIds", "SliceConstraints", "SliceServiceIds", "SliceSubsliceIds", "SliceStatus", "SliceConfig", "SliceOwner", "Timestamp", });
     internal_static_context_SliceOwner_descriptor =
-      getDescriptor().getMessageTypes().get(38);
+      getDescriptor().getMessageTypes().get(39);
     internal_static_context_SliceOwner_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceOwner_descriptor,
         new java.lang.String[] { "OwnerUuid", "OwnerString", });
     internal_static_context_SliceStatus_descriptor =
-      getDescriptor().getMessageTypes().get(39);
+      getDescriptor().getMessageTypes().get(40);
     internal_static_context_SliceStatus_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceStatus_descriptor,
         new java.lang.String[] { "SliceStatus", });
     internal_static_context_SliceConfig_descriptor =
-      getDescriptor().getMessageTypes().get(40);
+      getDescriptor().getMessageTypes().get(41);
     internal_static_context_SliceConfig_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceConfig_descriptor,
         new java.lang.String[] { "ConfigRules", });
     internal_static_context_SliceIdList_descriptor =
-      getDescriptor().getMessageTypes().get(41);
+      getDescriptor().getMessageTypes().get(42);
     internal_static_context_SliceIdList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceIdList_descriptor,
         new java.lang.String[] { "SliceIds", });
     internal_static_context_SliceList_descriptor =
-      getDescriptor().getMessageTypes().get(42);
+      getDescriptor().getMessageTypes().get(43);
     internal_static_context_SliceList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceList_descriptor,
         new java.lang.String[] { "Slices", });
     internal_static_context_SliceFilter_descriptor =
-      getDescriptor().getMessageTypes().get(43);
+      getDescriptor().getMessageTypes().get(44);
     internal_static_context_SliceFilter_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceFilter_descriptor,
         new java.lang.String[] { "SliceIds", "IncludeEndpointIds", "IncludeConstraints", "IncludeServiceIds", "IncludeSubsliceIds", "IncludeConfigRules", });
     internal_static_context_SliceEvent_descriptor =
-      getDescriptor().getMessageTypes().get(44);
+      getDescriptor().getMessageTypes().get(45);
     internal_static_context_SliceEvent_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceEvent_descriptor,
         new java.lang.String[] { "Event", "SliceId", });
     internal_static_context_ConnectionId_descriptor =
-      getDescriptor().getMessageTypes().get(45);
+      getDescriptor().getMessageTypes().get(46);
     internal_static_context_ConnectionId_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionId_descriptor,
         new java.lang.String[] { "ConnectionUuid", });
     internal_static_context_ConnectionSettings_L0_descriptor =
-      getDescriptor().getMessageTypes().get(46);
+      getDescriptor().getMessageTypes().get(47);
     internal_static_context_ConnectionSettings_L0_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionSettings_L0_descriptor,
         new java.lang.String[] { "LspSymbolicName", });
     internal_static_context_ConnectionSettings_L2_descriptor =
-      getDescriptor().getMessageTypes().get(47);
+      getDescriptor().getMessageTypes().get(48);
     internal_static_context_ConnectionSettings_L2_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionSettings_L2_descriptor,
         new java.lang.String[] { "SrcMacAddress", "DstMacAddress", "EtherType", "VlanId", "MplsLabel", "MplsTrafficClass", });
     internal_static_context_ConnectionSettings_L3_descriptor =
-      getDescriptor().getMessageTypes().get(48);
+      getDescriptor().getMessageTypes().get(49);
     internal_static_context_ConnectionSettings_L3_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionSettings_L3_descriptor,
         new java.lang.String[] { "SrcIpAddress", "DstIpAddress", "Dscp", "Protocol", "Ttl", });
     internal_static_context_ConnectionSettings_L4_descriptor =
-      getDescriptor().getMessageTypes().get(49);
+      getDescriptor().getMessageTypes().get(50);
     internal_static_context_ConnectionSettings_L4_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionSettings_L4_descriptor,
         new java.lang.String[] { "SrcPort", "DstPort", "TcpFlags", "Ttl", });
     internal_static_context_ConnectionSettings_descriptor =
-      getDescriptor().getMessageTypes().get(50);
+      getDescriptor().getMessageTypes().get(51);
     internal_static_context_ConnectionSettings_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionSettings_descriptor,
         new java.lang.String[] { "L0", "L2", "L3", "L4", });
     internal_static_context_Connection_descriptor =
-      getDescriptor().getMessageTypes().get(51);
+      getDescriptor().getMessageTypes().get(52);
     internal_static_context_Connection_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Connection_descriptor,
         new java.lang.String[] { "ConnectionId", "ServiceId", "PathHopsEndpointIds", "SubServiceIds", "Settings", });
     internal_static_context_ConnectionIdList_descriptor =
-      getDescriptor().getMessageTypes().get(52);
+      getDescriptor().getMessageTypes().get(53);
     internal_static_context_ConnectionIdList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionIdList_descriptor,
         new java.lang.String[] { "ConnectionIds", });
     internal_static_context_ConnectionList_descriptor =
-      getDescriptor().getMessageTypes().get(53);
+      getDescriptor().getMessageTypes().get(54);
     internal_static_context_ConnectionList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionList_descriptor,
         new java.lang.String[] { "Connections", });
     internal_static_context_ConnectionEvent_descriptor =
-      getDescriptor().getMessageTypes().get(54);
+      getDescriptor().getMessageTypes().get(55);
     internal_static_context_ConnectionEvent_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionEvent_descriptor,
         new java.lang.String[] { "Event", "ConnectionId", });
     internal_static_context_EndPointId_descriptor =
-      getDescriptor().getMessageTypes().get(55);
+      getDescriptor().getMessageTypes().get(56);
     internal_static_context_EndPointId_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_EndPointId_descriptor,
         new java.lang.String[] { "TopologyId", "DeviceId", "EndpointUuid", });
     internal_static_context_EndPoint_descriptor =
-      getDescriptor().getMessageTypes().get(56);
+      getDescriptor().getMessageTypes().get(57);
     internal_static_context_EndPoint_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_EndPoint_descriptor,
         new java.lang.String[] { "EndpointId", "Name", "EndpointType", "KpiSampleTypes", "EndpointLocation", });
     internal_static_context_EndPointName_descriptor =
-      getDescriptor().getMessageTypes().get(57);
+      getDescriptor().getMessageTypes().get(58);
     internal_static_context_EndPointName_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_EndPointName_descriptor,
         new java.lang.String[] { "EndpointId", "DeviceName", "EndpointName", "EndpointType", });
     internal_static_context_EndPointIdList_descriptor =
-      getDescriptor().getMessageTypes().get(58);
+      getDescriptor().getMessageTypes().get(59);
     internal_static_context_EndPointIdList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_EndPointIdList_descriptor,
         new java.lang.String[] { "EndpointIds", });
     internal_static_context_EndPointNameList_descriptor =
-      getDescriptor().getMessageTypes().get(59);
+      getDescriptor().getMessageTypes().get(60);
     internal_static_context_EndPointNameList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_EndPointNameList_descriptor,
         new java.lang.String[] { "EndpointNames", });
     internal_static_context_ConfigRule_Custom_descriptor =
-      getDescriptor().getMessageTypes().get(60);
+      getDescriptor().getMessageTypes().get(61);
     internal_static_context_ConfigRule_Custom_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConfigRule_Custom_descriptor,
         new java.lang.String[] { "ResourceKey", "ResourceValue", });
     internal_static_context_ConfigRule_ACL_descriptor =
-      getDescriptor().getMessageTypes().get(61);
+      getDescriptor().getMessageTypes().get(62);
     internal_static_context_ConfigRule_ACL_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConfigRule_ACL_descriptor,
         new java.lang.String[] { "EndpointId", "RuleSet", });
     internal_static_context_ConfigRule_descriptor =
-      getDescriptor().getMessageTypes().get(62);
+      getDescriptor().getMessageTypes().get(63);
     internal_static_context_ConfigRule_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConfigRule_descriptor,
         new java.lang.String[] { "Action", "Custom", "Acl", "ConfigRule", });
     internal_static_context_Constraint_Custom_descriptor =
-      getDescriptor().getMessageTypes().get(63);
+      getDescriptor().getMessageTypes().get(64);
     internal_static_context_Constraint_Custom_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_Custom_descriptor,
         new java.lang.String[] { "ConstraintType", "ConstraintValue", });
     internal_static_context_Constraint_Schedule_descriptor =
-      getDescriptor().getMessageTypes().get(64);
+      getDescriptor().getMessageTypes().get(65);
     internal_static_context_Constraint_Schedule_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_Schedule_descriptor,
         new java.lang.String[] { "StartTimestamp", "DurationDays", });
     internal_static_context_GPS_Position_descriptor =
-      getDescriptor().getMessageTypes().get(65);
+      getDescriptor().getMessageTypes().get(66);
     internal_static_context_GPS_Position_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_GPS_Position_descriptor,
         new java.lang.String[] { "Latitude", "Longitude", });
     internal_static_context_Location_descriptor =
-      getDescriptor().getMessageTypes().get(66);
+      getDescriptor().getMessageTypes().get(67);
     internal_static_context_Location_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Location_descriptor,
         new java.lang.String[] { "Region", "GpsPosition", "Location", });
     internal_static_context_Constraint_EndPointLocation_descriptor =
-      getDescriptor().getMessageTypes().get(67);
+      getDescriptor().getMessageTypes().get(68);
     internal_static_context_Constraint_EndPointLocation_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_EndPointLocation_descriptor,
         new java.lang.String[] { "EndpointId", "Location", });
     internal_static_context_Constraint_EndPointPriority_descriptor =
-      getDescriptor().getMessageTypes().get(68);
+      getDescriptor().getMessageTypes().get(69);
     internal_static_context_Constraint_EndPointPriority_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_EndPointPriority_descriptor,
         new java.lang.String[] { "EndpointId", "Priority", });
     internal_static_context_Constraint_SLA_Latency_descriptor =
-      getDescriptor().getMessageTypes().get(69);
+      getDescriptor().getMessageTypes().get(70);
     internal_static_context_Constraint_SLA_Latency_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_SLA_Latency_descriptor,
         new java.lang.String[] { "E2ELatencyMs", });
     internal_static_context_Constraint_SLA_Capacity_descriptor =
-      getDescriptor().getMessageTypes().get(70);
+      getDescriptor().getMessageTypes().get(71);
     internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_SLA_Capacity_descriptor,
         new java.lang.String[] { "CapacityGbps", });
     internal_static_context_Constraint_SLA_Availability_descriptor =
-      getDescriptor().getMessageTypes().get(71);
+      getDescriptor().getMessageTypes().get(72);
     internal_static_context_Constraint_SLA_Availability_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_SLA_Availability_descriptor,
         new java.lang.String[] { "NumDisjointPaths", "AllActive", "Availability", });
     internal_static_context_Constraint_SLA_Isolation_level_descriptor =
-      getDescriptor().getMessageTypes().get(72);
+      getDescriptor().getMessageTypes().get(73);
     internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_SLA_Isolation_level_descriptor,
         new java.lang.String[] { "IsolationLevel", });
     internal_static_context_Constraint_Exclusions_descriptor =
-      getDescriptor().getMessageTypes().get(73);
+      getDescriptor().getMessageTypes().get(74);
     internal_static_context_Constraint_Exclusions_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_Exclusions_descriptor,
         new java.lang.String[] { "IsPermanent", "DeviceIds", "EndpointIds", "LinkIds", });
     internal_static_context_Constraint_descriptor =
-      getDescriptor().getMessageTypes().get(74);
+      getDescriptor().getMessageTypes().get(75);
     internal_static_context_Constraint_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_descriptor,
         new java.lang.String[] { "Action", "Custom", "Schedule", "EndpointLocation", "EndpointPriority", "SlaCapacity", "SlaLatency", "SlaAvailability", "SlaIsolation", "Exclusions", "Constraint", });
     internal_static_context_TeraFlowController_descriptor =
-      getDescriptor().getMessageTypes().get(75);
+      getDescriptor().getMessageTypes().get(76);
     internal_static_context_TeraFlowController_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_TeraFlowController_descriptor,
         new java.lang.String[] { "ContextId", "IpAddress", "Port", });
     internal_static_context_AuthenticationResult_descriptor =
-      getDescriptor().getMessageTypes().get(76);
+      getDescriptor().getMessageTypes().get(77);
     internal_static_context_AuthenticationResult_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_AuthenticationResult_descriptor,
diff --git a/src/policy/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java b/src/policy/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java
index 98bdbbd2c364953df27694a839eff3e8f0e1c114..66ce0f8f234c62f17c7e3af82d0f22a0a4c26c58 100644
--- a/src/policy/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java
+++ b/src/policy/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java
@@ -283,22 +283,24 @@ public final class KpiSampleTypes {
   static {
     java.lang.String[] descriptorData = {
       "\n\026kpi_sample_types.proto\022\020kpi_sample_typ" +
-      "es*\327\004\n\rKpiSampleType\022\031\n\025KPISAMPLETYPE_UN" +
+      "es*\260\005\n\rKpiSampleType\022\031\n\025KPISAMPLETYPE_UN" +
       "KNOWN\020\000\022%\n!KPISAMPLETYPE_PACKETS_TRANSMI" +
       "TTED\020e\022\"\n\036KPISAMPLETYPE_PACKETS_RECEIVED" +
       "\020f\022!\n\035KPISAMPLETYPE_PACKETS_DROPPED\020g\022$\n" +
       "\037KPISAMPLETYPE_BYTES_TRANSMITTED\020\311\001\022!\n\034K" +
       "PISAMPLETYPE_BYTES_RECEIVED\020\312\001\022 \n\033KPISAM" +
-      "PLETYPE_BYTES_DROPPED\020\313\001\022 \n\033KPISAMPLETYP" +
-      "E_ML_CONFIDENCE\020\221\003\022*\n%KPISAMPLETYPE_OPTI" +
-      "CAL_SECURITY_STATUS\020\365\003\022)\n$KPISAMPLETYPE_" +
-      "L3_UNIQUE_ATTACK_CONNS\020\331\004\022*\n%KPISAMPLETY" +
-      "PE_L3_TOTAL_DROPPED_PACKTS\020\332\004\022&\n!KPISAMP" +
-      "LETYPE_L3_UNIQUE_ATTACKERS\020\333\004\0220\n+KPISAMP" +
-      "LETYPE_L3_UNIQUE_COMPROMISED_CLIENTS\020\334\004\022" +
-      ",\n\'KPISAMPLETYPE_L3_SECURITY_STATUS_CRYP" +
-      "TO\020\335\004\022%\n KPISAMPLETYPE_SERVICE_LATENCY_M" +
-      "S\020\275\005b\006proto3"
+      "PLETYPE_BYTES_DROPPED\020\313\001\022+\n&KPISAMPLETYP" +
+      "E_LINK_TOTAL_CAPACITY_GBPS\020\255\002\022*\n%KPISAMP" +
+      "LETYPE_LINK_USED_CAPACITY_GBPS\020\256\002\022 \n\033KPI" +
+      "SAMPLETYPE_ML_CONFIDENCE\020\221\003\022*\n%KPISAMPLE" +
+      "TYPE_OPTICAL_SECURITY_STATUS\020\365\003\022)\n$KPISA" +
+      "MPLETYPE_L3_UNIQUE_ATTACK_CONNS\020\331\004\022*\n%KP" +
+      "ISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS\020\332\004\022&" +
+      "\n!KPISAMPLETYPE_L3_UNIQUE_ATTACKERS\020\333\004\0220" +
+      "\n+KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CL" +
+      "IENTS\020\334\004\022,\n\'KPISAMPLETYPE_L3_SECURITY_ST" +
+      "ATUS_CRYPTO\020\335\004\022%\n KPISAMPLETYPE_SERVICE_" +
+      "LATENCY_MS\020\275\005b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
diff --git a/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java b/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java
index 38f026eb1ac730e8f825e460916dc57469f0d312..ef9ef6be6341d87943f68503d7ddc535b3920140 100644
--- a/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java
+++ b/src/policy/target/generated-sources/grpc/monitoring/Monitoring.java
@@ -154,6 +154,21 @@ public final class Monitoring {
      * <code>.context.ConnectionId connection_id = 9;</code>
      */
     context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();
+
+    /**
+     * <code>.context.LinkId link_id = 10;</code>
+     * @return Whether the linkId field is set.
+     */
+    boolean hasLinkId();
+    /**
+     * <code>.context.LinkId link_id = 10;</code>
+     * @return The linkId.
+     */
+    context.ContextOuterClass.LinkId getLinkId();
+    /**
+     * <code>.context.LinkId link_id = 10;</code>
+     */
+    context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder();
   }
   /**
    * Protobuf type {@code monitoring.KpiDescriptor}
@@ -303,6 +318,19 @@ public final class Monitoring {
 
               break;
             }
+            case 82: {
+              context.ContextOuterClass.LinkId.Builder subBuilder = null;
+              if (linkId_ != null) {
+                subBuilder = linkId_.toBuilder();
+              }
+              linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(linkId_);
+                linkId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -591,6 +619,32 @@ public final class Monitoring {
       return getConnectionId();
     }
 
+    public static final int LINK_ID_FIELD_NUMBER = 10;
+    private context.ContextOuterClass.LinkId linkId_;
+    /**
+     * <code>.context.LinkId link_id = 10;</code>
+     * @return Whether the linkId field is set.
+     */
+    @java.lang.Override
+    public boolean hasLinkId() {
+      return linkId_ != null;
+    }
+    /**
+     * <code>.context.LinkId link_id = 10;</code>
+     * @return The linkId.
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.LinkId getLinkId() {
+      return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+    }
+    /**
+     * <code>.context.LinkId link_id = 10;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
+      return getLinkId();
+    }
+
     private byte memoizedIsInitialized = -1;
     @java.lang.Override
     public final boolean isInitialized() {
@@ -632,6 +686,9 @@ public final class Monitoring {
       if (connectionId_ != null) {
         output.writeMessage(9, getConnectionId());
       }
+      if (linkId_ != null) {
+        output.writeMessage(10, getLinkId());
+      }
       unknownFields.writeTo(output);
     }
 
@@ -676,6 +733,10 @@ public final class Monitoring {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(9, getConnectionId());
       }
+      if (linkId_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, getLinkId());
+      }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
@@ -726,6 +787,11 @@ public final class Monitoring {
         if (!getConnectionId()
             .equals(other.getConnectionId())) return false;
       }
+      if (hasLinkId() != other.hasLinkId()) return false;
+      if (hasLinkId()) {
+        if (!getLinkId()
+            .equals(other.getLinkId())) return false;
+      }
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -769,6 +835,10 @@ public final class Monitoring {
         hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
         hash = (53 * hash) + getConnectionId().hashCode();
       }
+      if (hasLinkId()) {
+        hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getLinkId().hashCode();
+      }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
@@ -949,6 +1019,12 @@ public final class Monitoring {
           connectionId_ = null;
           connectionIdBuilder_ = null;
         }
+        if (linkIdBuilder_ == null) {
+          linkId_ = null;
+        } else {
+          linkId_ = null;
+          linkIdBuilder_ = null;
+        }
         return this;
       }
 
@@ -1017,6 +1093,11 @@ public final class Monitoring {
         } else {
           result.connectionId_ = connectionIdBuilder_.build();
         }
+        if (linkIdBuilder_ == null) {
+          result.linkId_ = linkId_;
+        } else {
+          result.linkId_ = linkIdBuilder_.build();
+        }
         onBuilt();
         return result;
       }
@@ -1116,6 +1197,9 @@ public final class Monitoring {
         if (other.hasConnectionId()) {
           mergeConnectionId(other.getConnectionId());
         }
+        if (other.hasLinkId()) {
+          mergeLinkId(other.getLinkId());
+        }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
@@ -2229,6 +2313,125 @@ public final class Monitoring {
         }
         return connectionIdBuilder_;
       }
+
+      private context.ContextOuterClass.LinkId linkId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdBuilder_;
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       * @return Whether the linkId field is set.
+       */
+      public boolean hasLinkId() {
+        return linkIdBuilder_ != null || linkId_ != null;
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       * @return The linkId.
+       */
+      public context.ContextOuterClass.LinkId getLinkId() {
+        if (linkIdBuilder_ == null) {
+          return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+        } else {
+          return linkIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       */
+      public Builder setLinkId(context.ContextOuterClass.LinkId value) {
+        if (linkIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          linkId_ = value;
+          onChanged();
+        } else {
+          linkIdBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       */
+      public Builder setLinkId(
+          context.ContextOuterClass.LinkId.Builder builderForValue) {
+        if (linkIdBuilder_ == null) {
+          linkId_ = builderForValue.build();
+          onChanged();
+        } else {
+          linkIdBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       */
+      public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
+        if (linkIdBuilder_ == null) {
+          if (linkId_ != null) {
+            linkId_ =
+              context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
+          } else {
+            linkId_ = value;
+          }
+          onChanged();
+        } else {
+          linkIdBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       */
+      public Builder clearLinkId() {
+        if (linkIdBuilder_ == null) {
+          linkId_ = null;
+          onChanged();
+        } else {
+          linkId_ = null;
+          linkIdBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       */
+      public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
+        
+        onChanged();
+        return getLinkIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       */
+      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
+        if (linkIdBuilder_ != null) {
+          return linkIdBuilder_.getMessageOrBuilder();
+        } else {
+          return linkId_ == null ?
+              context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+        }
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> 
+          getLinkIdFieldBuilder() {
+        if (linkIdBuilder_ == null) {
+          linkIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(
+                  getLinkId(),
+                  getParentForChildren(),
+                  isClean());
+          linkId_ = null;
+        }
+        return linkIdBuilder_;
+      }
       @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
@@ -21361,7 +21564,7 @@ public final class Monitoring {
   static {
     java.lang.String[] descriptorData = {
       "\n\020monitoring.proto\022\nmonitoring\032\rcontext." +
-      "proto\032\026kpi_sample_types.proto\"\367\002\n\rKpiDes" +
+      "proto\032\026kpi_sample_types.proto\"\231\003\n\rKpiDes" +
       "criptor\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring.Kpi" +
       "Id\022\027\n\017kpi_description\030\002 \001(\t\022&\n\013kpi_id_li" +
       "st\030\003 \003(\0132\021.monitoring.KpiId\0228\n\017kpi_sampl" +
@@ -21371,91 +21574,92 @@ public final class Monitoring {
       "intId\022&\n\nservice_id\030\007 \001(\0132\022.context.Serv" +
       "iceId\022\"\n\010slice_id\030\010 \001(\0132\020.context.SliceI" +
       "d\022,\n\rconnection_id\030\t \001(\0132\025.context.Conne" +
-      "ctionId\"l\n\021MonitorKpiRequest\022!\n\006kpi_id\030\001" +
-      " \001(\0132\021.monitoring.KpiId\022\033\n\023monitoring_wi" +
-      "ndow_s\030\002 \001(\002\022\027\n\017sampling_rate_s\030\003 \001(\002\"\273\001" +
-      "\n\010KpiQuery\022\"\n\007kpi_ids\030\001 \003(\0132\021.monitoring" +
-      ".KpiId\022\033\n\023monitoring_window_s\030\002 \001(\002\022\026\n\016l" +
-      "ast_n_samples\030\003 \001(\r\022+\n\017start_timestamp\030\004" +
-      " \001(\0132\022.context.Timestamp\022)\n\rend_timestam" +
-      "p\030\005 \001(\0132\022.context.Timestamp\"X\n\006RawKpi\022%\n" +
-      "\ttimestamp\030\001 \001(\0132\022.context.Timestamp\022\'\n\t" +
-      "kpi_value\030\002 \001(\0132\024.monitoring.KpiValue\"U\n" +
-      "\nRawKpiList\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring" +
-      ".KpiId\022$\n\010raw_kpis\030\002 \003(\0132\022.monitoring.Ra" +
-      "wKpi\"<\n\013RawKpiTable\022-\n\rraw_kpi_lists\030\001 \003" +
-      "(\0132\026.monitoring.RawKpiList\"&\n\005KpiId\022\035\n\006k" +
-      "pi_id\030\001 \001(\0132\r.context.Uuid\"x\n\003Kpi\022!\n\006kpi" +
-      "_id\030\001 \001(\0132\021.monitoring.KpiId\022%\n\ttimestam" +
-      "p\030\002 \001(\0132\022.context.Timestamp\022\'\n\tkpi_value" +
-      "\030\003 \001(\0132\024.monitoring.KpiValue\"\250\001\n\rKpiValu" +
-      "eRange\022)\n\013kpiMinValue\030\001 \001(\0132\024.monitoring" +
-      ".KpiValue\022)\n\013kpiMaxValue\030\002 \001(\0132\024.monitor" +
-      "ing.KpiValue\022\017\n\007inRange\030\003 \001(\010\022\027\n\017include" +
-      "MinValue\030\004 \001(\010\022\027\n\017includeMaxValue\030\005 \001(\010\"" +
-      "\241\001\n\010KpiValue\022\022\n\010int32Val\030\001 \001(\005H\000\022\023\n\tuint" +
-      "32Val\030\002 \001(\rH\000\022\022\n\010int64Val\030\003 \001(\003H\000\022\023\n\tuin" +
-      "t64Val\030\004 \001(\004H\000\022\022\n\010floatVal\030\005 \001(\002H\000\022\023\n\tst" +
-      "ringVal\030\006 \001(\tH\000\022\021\n\007boolVal\030\007 \001(\010H\000B\007\n\005va" +
-      "lue\"\'\n\007KpiList\022\034\n\003kpi\030\001 \003(\0132\017.monitoring" +
-      ".Kpi\"K\n\021KpiDescriptorList\0226\n\023kpi_descrip" +
-      "tor_list\030\001 \003(\0132\031.monitoring.KpiDescripto" +
-      "r\"\362\001\n\016SubsDescriptor\022+\n\007subs_id\030\001 \001(\0132\032." +
-      "monitoring.SubscriptionID\022!\n\006kpi_id\030\002 \001(" +
-      "\0132\021.monitoring.KpiId\022\033\n\023sampling_duratio" +
-      "n_s\030\003 \001(\002\022\033\n\023sampling_interval_s\030\004 \001(\002\022+" +
-      "\n\017start_timestamp\030\005 \001(\0132\022.context.Timest" +
-      "amp\022)\n\rend_timestamp\030\006 \001(\0132\022.context.Tim" +
-      "estamp\"0\n\016SubscriptionID\022\036\n\007subs_id\030\001 \001(" +
-      "\0132\r.context.Uuid\"b\n\014SubsResponse\022+\n\007subs" +
-      "_id\030\001 \001(\0132\032.monitoring.SubscriptionID\022%\n" +
-      "\010kpi_list\030\002 \001(\0132\023.monitoring.KpiList\"?\n\010" +
-      "SubsList\0223\n\017subs_descriptor\030\001 \003(\0132\032.moni" +
-      "toring.SubsDescriptor\"\337\001\n\017AlarmDescripto" +
-      "r\022%\n\010alarm_id\030\001 \001(\0132\023.monitoring.AlarmID" +
-      "\022\031\n\021alarm_description\030\002 \001(\t\022\014\n\004name\030\003 \001(" +
-      "\t\022!\n\006kpi_id\030\004 \001(\0132\021.monitoring.KpiId\0222\n\017" +
-      "kpi_value_range\030\005 \001(\0132\031.monitoring.KpiVa" +
-      "lueRange\022%\n\ttimestamp\030\006 \001(\0132\022.context.Ti" +
-      "mestamp\"*\n\007AlarmID\022\037\n\010alarm_id\030\001 \001(\0132\r.c" +
-      "ontext.Uuid\"}\n\021AlarmSubscription\022%\n\010alar" +
-      "m_id\030\001 \001(\0132\023.monitoring.AlarmID\022\036\n\026subsc" +
-      "ription_timeout_s\030\002 \001(\002\022!\n\031subscription_" +
-      "frequency_ms\030\003 \001(\002\"k\n\rAlarmResponse\022%\n\010a" +
-      "larm_id\030\001 \001(\0132\023.monitoring.AlarmID\022\014\n\004te" +
-      "xt\030\002 \001(\t\022%\n\010kpi_list\030\003 \001(\0132\023.monitoring." +
-      "KpiList\"B\n\tAlarmList\0225\n\020alarm_descriptor" +
-      "\030\001 \003(\0132\033.monitoring.AlarmDescriptor2\234\t\n\021" +
-      "MonitoringService\0228\n\006SetKpi\022\031.monitoring" +
-      ".KpiDescriptor\032\021.monitoring.KpiId\"\000\0220\n\tD" +
-      "eleteKpi\022\021.monitoring.KpiId\032\016.context.Em" +
-      "pty\"\000\022B\n\020GetKpiDescriptor\022\021.monitoring.K" +
-      "piId\032\031.monitoring.KpiDescriptor\"\000\022G\n\024Get" +
-      "KpiDescriptorList\022\016.context.Empty\032\035.moni" +
-      "toring.KpiDescriptorList\"\000\022/\n\nIncludeKpi" +
-      "\022\017.monitoring.Kpi\032\016.context.Empty\"\000\022=\n\nM" +
-      "onitorKpi\022\035.monitoring.MonitorKpiRequest" +
-      "\032\016.context.Empty\"\000\022?\n\014QueryKpiData\022\024.mon" +
-      "itoring.KpiQuery\032\027.monitoring.RawKpiTabl" +
-      "e\"\000\022N\n\022SetKpiSubscription\022\032.monitoring.S" +
-      "ubsDescriptor\032\030.monitoring.SubsResponse\"" +
-      "\0000\001\022M\n\021GetSubsDescriptor\022\032.monitoring.Su" +
-      "bscriptionID\032\032.monitoring.SubsDescriptor" +
-      "\"\000\022:\n\020GetSubscriptions\022\016.context.Empty\032\024" +
-      ".monitoring.SubsList\"\000\022B\n\022DeleteSubscrip" +
-      "tion\022\032.monitoring.SubscriptionID\032\016.conte" +
-      "xt.Empty\"\000\022A\n\013SetKpiAlarm\022\033.monitoring.A" +
-      "larmDescriptor\032\023.monitoring.AlarmID\"\000\0224\n" +
-      "\tGetAlarms\022\016.context.Empty\032\025.monitoring." +
-      "AlarmList\"\000\022H\n\022GetAlarmDescriptor\022\023.moni" +
-      "toring.AlarmID\032\033.monitoring.AlarmDescrip" +
-      "tor\"\000\022V\n\026GetAlarmResponseStream\022\035.monito" +
-      "ring.AlarmSubscription\032\031.monitoring.Alar" +
-      "mResponse\"\0000\001\0224\n\013DeleteAlarm\022\023.monitorin" +
-      "g.AlarmID\032\016.context.Empty\"\000\0226\n\014GetStream" +
-      "Kpi\022\021.monitoring.KpiId\032\017.monitoring.Kpi\"" +
-      "\0000\001\0225\n\rGetInstantKpi\022\021.monitoring.KpiId\032" +
-      "\017.monitoring.Kpi\"\000b\006proto3"
+      "ctionId\022 \n\007link_id\030\n \001(\0132\017.context.LinkI" +
+      "d\"l\n\021MonitorKpiRequest\022!\n\006kpi_id\030\001 \001(\0132\021" +
+      ".monitoring.KpiId\022\033\n\023monitoring_window_s" +
+      "\030\002 \001(\002\022\027\n\017sampling_rate_s\030\003 \001(\002\"\273\001\n\010KpiQ" +
+      "uery\022\"\n\007kpi_ids\030\001 \003(\0132\021.monitoring.KpiId" +
+      "\022\033\n\023monitoring_window_s\030\002 \001(\002\022\026\n\016last_n_" +
+      "samples\030\003 \001(\r\022+\n\017start_timestamp\030\004 \001(\0132\022" +
+      ".context.Timestamp\022)\n\rend_timestamp\030\005 \001(" +
+      "\0132\022.context.Timestamp\"X\n\006RawKpi\022%\n\ttimes" +
+      "tamp\030\001 \001(\0132\022.context.Timestamp\022\'\n\tkpi_va" +
+      "lue\030\002 \001(\0132\024.monitoring.KpiValue\"U\n\nRawKp" +
+      "iList\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring.KpiId" +
+      "\022$\n\010raw_kpis\030\002 \003(\0132\022.monitoring.RawKpi\"<" +
+      "\n\013RawKpiTable\022-\n\rraw_kpi_lists\030\001 \003(\0132\026.m" +
+      "onitoring.RawKpiList\"&\n\005KpiId\022\035\n\006kpi_id\030" +
+      "\001 \001(\0132\r.context.Uuid\"x\n\003Kpi\022!\n\006kpi_id\030\001 " +
+      "\001(\0132\021.monitoring.KpiId\022%\n\ttimestamp\030\002 \001(" +
+      "\0132\022.context.Timestamp\022\'\n\tkpi_value\030\003 \001(\013" +
+      "2\024.monitoring.KpiValue\"\250\001\n\rKpiValueRange" +
+      "\022)\n\013kpiMinValue\030\001 \001(\0132\024.monitoring.KpiVa" +
+      "lue\022)\n\013kpiMaxValue\030\002 \001(\0132\024.monitoring.Kp" +
+      "iValue\022\017\n\007inRange\030\003 \001(\010\022\027\n\017includeMinVal" +
+      "ue\030\004 \001(\010\022\027\n\017includeMaxValue\030\005 \001(\010\"\241\001\n\010Kp" +
+      "iValue\022\022\n\010int32Val\030\001 \001(\005H\000\022\023\n\tuint32Val\030" +
+      "\002 \001(\rH\000\022\022\n\010int64Val\030\003 \001(\003H\000\022\023\n\tuint64Val" +
+      "\030\004 \001(\004H\000\022\022\n\010floatVal\030\005 \001(\002H\000\022\023\n\tstringVa" +
+      "l\030\006 \001(\tH\000\022\021\n\007boolVal\030\007 \001(\010H\000B\007\n\005value\"\'\n" +
+      "\007KpiList\022\034\n\003kpi\030\001 \003(\0132\017.monitoring.Kpi\"K" +
+      "\n\021KpiDescriptorList\0226\n\023kpi_descriptor_li" +
+      "st\030\001 \003(\0132\031.monitoring.KpiDescriptor\"\362\001\n\016" +
+      "SubsDescriptor\022+\n\007subs_id\030\001 \001(\0132\032.monito" +
+      "ring.SubscriptionID\022!\n\006kpi_id\030\002 \001(\0132\021.mo" +
+      "nitoring.KpiId\022\033\n\023sampling_duration_s\030\003 " +
+      "\001(\002\022\033\n\023sampling_interval_s\030\004 \001(\002\022+\n\017star" +
+      "t_timestamp\030\005 \001(\0132\022.context.Timestamp\022)\n" +
+      "\rend_timestamp\030\006 \001(\0132\022.context.Timestamp" +
+      "\"0\n\016SubscriptionID\022\036\n\007subs_id\030\001 \001(\0132\r.co" +
+      "ntext.Uuid\"b\n\014SubsResponse\022+\n\007subs_id\030\001 " +
+      "\001(\0132\032.monitoring.SubscriptionID\022%\n\010kpi_l" +
+      "ist\030\002 \001(\0132\023.monitoring.KpiList\"?\n\010SubsLi" +
+      "st\0223\n\017subs_descriptor\030\001 \003(\0132\032.monitoring" +
+      ".SubsDescriptor\"\337\001\n\017AlarmDescriptor\022%\n\010a" +
+      "larm_id\030\001 \001(\0132\023.monitoring.AlarmID\022\031\n\021al" +
+      "arm_description\030\002 \001(\t\022\014\n\004name\030\003 \001(\t\022!\n\006k" +
+      "pi_id\030\004 \001(\0132\021.monitoring.KpiId\0222\n\017kpi_va" +
+      "lue_range\030\005 \001(\0132\031.monitoring.KpiValueRan" +
+      "ge\022%\n\ttimestamp\030\006 \001(\0132\022.context.Timestam" +
+      "p\"*\n\007AlarmID\022\037\n\010alarm_id\030\001 \001(\0132\r.context" +
+      ".Uuid\"}\n\021AlarmSubscription\022%\n\010alarm_id\030\001" +
+      " \001(\0132\023.monitoring.AlarmID\022\036\n\026subscriptio" +
+      "n_timeout_s\030\002 \001(\002\022!\n\031subscription_freque" +
+      "ncy_ms\030\003 \001(\002\"k\n\rAlarmResponse\022%\n\010alarm_i" +
+      "d\030\001 \001(\0132\023.monitoring.AlarmID\022\014\n\004text\030\002 \001" +
+      "(\t\022%\n\010kpi_list\030\003 \001(\0132\023.monitoring.KpiLis" +
+      "t\"B\n\tAlarmList\0225\n\020alarm_descriptor\030\001 \003(\013" +
+      "2\033.monitoring.AlarmDescriptor2\234\t\n\021Monito" +
+      "ringService\0228\n\006SetKpi\022\031.monitoring.KpiDe" +
+      "scriptor\032\021.monitoring.KpiId\"\000\0220\n\tDeleteK" +
+      "pi\022\021.monitoring.KpiId\032\016.context.Empty\"\000\022" +
+      "B\n\020GetKpiDescriptor\022\021.monitoring.KpiId\032\031" +
+      ".monitoring.KpiDescriptor\"\000\022G\n\024GetKpiDes" +
+      "criptorList\022\016.context.Empty\032\035.monitoring" +
+      ".KpiDescriptorList\"\000\022/\n\nIncludeKpi\022\017.mon" +
+      "itoring.Kpi\032\016.context.Empty\"\000\022=\n\nMonitor" +
+      "Kpi\022\035.monitoring.MonitorKpiRequest\032\016.con" +
+      "text.Empty\"\000\022?\n\014QueryKpiData\022\024.monitorin" +
+      "g.KpiQuery\032\027.monitoring.RawKpiTable\"\000\022N\n" +
+      "\022SetKpiSubscription\022\032.monitoring.SubsDes" +
+      "criptor\032\030.monitoring.SubsResponse\"\0000\001\022M\n" +
+      "\021GetSubsDescriptor\022\032.monitoring.Subscrip" +
+      "tionID\032\032.monitoring.SubsDescriptor\"\000\022:\n\020" +
+      "GetSubscriptions\022\016.context.Empty\032\024.monit" +
+      "oring.SubsList\"\000\022B\n\022DeleteSubscription\022\032" +
+      ".monitoring.SubscriptionID\032\016.context.Emp" +
+      "ty\"\000\022A\n\013SetKpiAlarm\022\033.monitoring.AlarmDe" +
+      "scriptor\032\023.monitoring.AlarmID\"\000\0224\n\tGetAl" +
+      "arms\022\016.context.Empty\032\025.monitoring.AlarmL" +
+      "ist\"\000\022H\n\022GetAlarmDescriptor\022\023.monitoring" +
+      ".AlarmID\032\033.monitoring.AlarmDescriptor\"\000\022" +
+      "V\n\026GetAlarmResponseStream\022\035.monitoring.A" +
+      "larmSubscription\032\031.monitoring.AlarmRespo" +
+      "nse\"\0000\001\0224\n\013DeleteAlarm\022\023.monitoring.Alar" +
+      "mID\032\016.context.Empty\"\000\0226\n\014GetStreamKpi\022\021." +
+      "monitoring.KpiId\032\017.monitoring.Kpi\"\0000\001\0225\n" +
+      "\rGetInstantKpi\022\021.monitoring.KpiId\032\017.moni" +
+      "toring.Kpi\"\000b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -21468,7 +21672,7 @@ public final class Monitoring {
     internal_static_monitoring_KpiDescriptor_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiDescriptor_descriptor,
-        new java.lang.String[] { "KpiId", "KpiDescription", "KpiIdList", "KpiSampleType", "DeviceId", "EndpointId", "ServiceId", "SliceId", "ConnectionId", });
+        new java.lang.String[] { "KpiId", "KpiDescription", "KpiIdList", "KpiSampleType", "DeviceId", "EndpointId", "ServiceId", "SliceId", "ConnectionId", "LinkId", });
     internal_static_monitoring_MonitorKpiRequest_descriptor =
       getDescriptor().getMessageTypes().get(1);
     internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable = new
diff --git a/src/policy/target/kubernetes/kubernetes.yml b/src/policy/target/kubernetes/kubernetes.yml
index 5a576268f7423bb6b628ead856b0899c959abce1..5cd1f1c4c1b4ce437c16707018f83ef6ec60215a 100644
--- a/src/policy/target/kubernetes/kubernetes.yml
+++ b/src/policy/target/kubernetes/kubernetes.yml
@@ -1,23 +1,10 @@
-# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
 ---
 apiVersion: v1
 kind: Service
 metadata:
   annotations:
-    app.quarkus.io/commit-id: 447bcf0c8224e0b15715f54d82a0936dd93f5542
-    app.quarkus.io/build-timestamp: 2023-11-07 - 12:10:37 +0000
+    app.quarkus.io/commit-id: 46486023929121fc955e9550fc8fd625ded433d2
+    app.quarkus.io/build-timestamp: 2023-12-15 - 11:56:20 +0000
     prometheus.io/scrape: "true"
     prometheus.io/path: /q/metrics
     prometheus.io/port: "8080"
@@ -28,12 +15,12 @@ metadata:
   name: policyservice
 spec:
   ports:
-    - name: http
-      port: 9192
-      targetPort: 8080
     - name: grpc-server
       port: 6060
       targetPort: 6060
+    - name: http
+      port: 9192
+      targetPort: 8080
   selector:
     app.kubernetes.io/name: policyservice
   type: ClusterIP
@@ -42,8 +29,8 @@ apiVersion: apps/v1
 kind: Deployment
 metadata:
   annotations:
-    app.quarkus.io/commit-id: 447bcf0c8224e0b15715f54d82a0936dd93f5542
-    app.quarkus.io/build-timestamp: 2023-11-07 - 12:10:37 +0000
+    app.quarkus.io/commit-id: 46486023929121fc955e9550fc8fd625ded433d2
+    app.quarkus.io/build-timestamp: 2023-12-15 - 11:56:20 +0000
     prometheus.io/scrape: "true"
     prometheus.io/path: /q/metrics
     prometheus.io/port: "8080"
@@ -60,8 +47,8 @@ spec:
   template:
     metadata:
       annotations:
-        app.quarkus.io/commit-id: 447bcf0c8224e0b15715f54d82a0936dd93f5542
-        app.quarkus.io/build-timestamp: 2023-11-07 - 12:10:37 +0000
+        app.quarkus.io/commit-id: 46486023929121fc955e9550fc8fd625ded433d2
+        app.quarkus.io/build-timestamp: 2023-12-15 - 11:56:20 +0000
         prometheus.io/scrape: "true"
         prometheus.io/path: /q/metrics
         prometheus.io/port: "8080"
@@ -78,10 +65,10 @@ spec:
                   fieldPath: metadata.namespace
             - name: CONTEXT_SERVICE_HOST
               value: contextservice
-            - name: SERVICE_SERVICE_HOST
-              value: serviceservice
             - name: MONITORING_SERVICE_HOST
               value: monitoringservice
+            - name: SERVICE_SERVICE_HOST
+              value: serviceservice
           image: labs.etsi.org:5050/tfs/controller/policy:0.1.0
           imagePullPolicy: Always
           livenessProbe:
@@ -96,12 +83,12 @@ spec:
             timeoutSeconds: 10
           name: policyservice
           ports:
-            - containerPort: 8080
-              name: http
-              protocol: TCP
             - containerPort: 6060
               name: grpc-server
               protocol: TCP
+            - containerPort: 8080
+              name: http
+              protocol: TCP
           readinessProbe:
             failureThreshold: 3
             httpGet:
diff --git a/src/ztp/pom.xml b/src/ztp/pom.xml
index aeadbc57240032edcaf40960fcd8df3b5a48d2b5..c62f5d52e4792f47f925206aad8b1da52ea1221c 100644
--- a/src/ztp/pom.xml
+++ b/src/ztp/pom.xml
@@ -19,7 +19,7 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>eu.teraflow</groupId>
+  <groupId>org.etsi.tfs</groupId>
   <artifactId>ztp</artifactId>
   <version>0.2.0</version>
   <name>TeraFlow ZTP Component</name>
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/ContextSubscriber.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/ContextSubscriber.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/ContextSubscriber.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/ContextSubscriber.java
index 0d2c63209eaed3b9c9c19b6bd3ba6f7e561914f1..9afd60a57a72816e3a7f9e4f891da5d037c01e2d 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/ContextSubscriber.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/ContextSubscriber.java
@@ -14,16 +14,16 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
-import eu.teraflow.ztp.context.ContextService;
-import eu.teraflow.ztp.context.model.Event;
-import eu.teraflow.ztp.context.model.EventTypeEnum;
 import io.quarkus.runtime.StartupEvent;
 import java.time.Duration;
 import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.event.Observes;
 import javax.inject.Inject;
+import org.etsi.tfs.ztp.context.ContextService;
+import org.etsi.tfs.ztp.context.model.Event;
+import org.etsi.tfs.ztp.context.model.EventTypeEnum;
 import org.jboss.logging.Logger;
 
 @ApplicationScoped
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/Serializer.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/Serializer.java
similarity index 95%
rename from src/ztp/src/main/java/eu/teraflow/ztp/Serializer.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/Serializer.java
index 0a1bd670ab92dfe4d4ddccf3bf513cc88fa3f3c1..cf49280a856e5fb7f4afaef394b565b02e44a8c2 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/Serializer.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/Serializer.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
 import acl.Acl;
 import context.ContextOuterClass;
@@ -25,43 +25,43 @@ import context.ContextOuterClass.DeviceId;
 import context.ContextOuterClass.DeviceOperationalStatusEnum;
 import context.ContextOuterClass.Location.LocationCase;
 import context.ContextOuterClass.Uuid;
-import eu.teraflow.ztp.acl.AclAction;
-import eu.teraflow.ztp.acl.AclEntry;
-import eu.teraflow.ztp.acl.AclForwardActionEnum;
-import eu.teraflow.ztp.acl.AclLogActionEnum;
-import eu.teraflow.ztp.acl.AclMatch;
-import eu.teraflow.ztp.acl.AclRuleSet;
-import eu.teraflow.ztp.acl.AclRuleTypeEnum;
-import eu.teraflow.ztp.context.model.ConfigActionEnum;
-import eu.teraflow.ztp.context.model.ConfigRule;
-import eu.teraflow.ztp.context.model.ConfigRuleAcl;
-import eu.teraflow.ztp.context.model.ConfigRuleCustom;
-import eu.teraflow.ztp.context.model.ConfigRuleTypeAcl;
-import eu.teraflow.ztp.context.model.ConfigRuleTypeCustom;
-import eu.teraflow.ztp.context.model.Device;
-import eu.teraflow.ztp.context.model.DeviceConfig;
-import eu.teraflow.ztp.context.model.DeviceDriverEnum;
-import eu.teraflow.ztp.context.model.DeviceEvent;
-import eu.teraflow.ztp.context.model.DeviceOperationalStatus;
-import eu.teraflow.ztp.context.model.Empty;
-import eu.teraflow.ztp.context.model.EndPoint;
-import eu.teraflow.ztp.context.model.EndPointId;
-import eu.teraflow.ztp.context.model.Event;
-import eu.teraflow.ztp.context.model.EventTypeEnum;
-import eu.teraflow.ztp.context.model.GpsPosition;
-import eu.teraflow.ztp.context.model.Location;
-import eu.teraflow.ztp.context.model.LocationTypeGpsPosition;
-import eu.teraflow.ztp.context.model.LocationTypeRegion;
-import eu.teraflow.ztp.context.model.TopologyId;
-import eu.teraflow.ztp.kpi_sample_types.model.KpiSampleType;
-import eu.teraflow.ztp.model.DeviceRole;
-import eu.teraflow.ztp.model.DeviceRoleConfig;
-import eu.teraflow.ztp.model.DeviceRoleId;
-import eu.teraflow.ztp.model.DeviceRoleType;
-import eu.teraflow.ztp.model.DeviceState;
 import java.util.stream.Collectors;
 import javax.inject.Singleton;
 import kpi_sample_types.KpiSampleTypes;
+import org.etsi.tfs.ztp.acl.AclAction;
+import org.etsi.tfs.ztp.acl.AclEntry;
+import org.etsi.tfs.ztp.acl.AclForwardActionEnum;
+import org.etsi.tfs.ztp.acl.AclLogActionEnum;
+import org.etsi.tfs.ztp.acl.AclMatch;
+import org.etsi.tfs.ztp.acl.AclRuleSet;
+import org.etsi.tfs.ztp.acl.AclRuleTypeEnum;
+import org.etsi.tfs.ztp.context.model.ConfigActionEnum;
+import org.etsi.tfs.ztp.context.model.ConfigRule;
+import org.etsi.tfs.ztp.context.model.ConfigRuleAcl;
+import org.etsi.tfs.ztp.context.model.ConfigRuleCustom;
+import org.etsi.tfs.ztp.context.model.ConfigRuleTypeAcl;
+import org.etsi.tfs.ztp.context.model.ConfigRuleTypeCustom;
+import org.etsi.tfs.ztp.context.model.Device;
+import org.etsi.tfs.ztp.context.model.DeviceConfig;
+import org.etsi.tfs.ztp.context.model.DeviceDriverEnum;
+import org.etsi.tfs.ztp.context.model.DeviceEvent;
+import org.etsi.tfs.ztp.context.model.DeviceOperationalStatus;
+import org.etsi.tfs.ztp.context.model.Empty;
+import org.etsi.tfs.ztp.context.model.EndPoint;
+import org.etsi.tfs.ztp.context.model.EndPointId;
+import org.etsi.tfs.ztp.context.model.Event;
+import org.etsi.tfs.ztp.context.model.EventTypeEnum;
+import org.etsi.tfs.ztp.context.model.GpsPosition;
+import org.etsi.tfs.ztp.context.model.Location;
+import org.etsi.tfs.ztp.context.model.LocationTypeGpsPosition;
+import org.etsi.tfs.ztp.context.model.LocationTypeRegion;
+import org.etsi.tfs.ztp.context.model.TopologyId;
+import org.etsi.tfs.ztp.kpi_sample_types.model.KpiSampleType;
+import org.etsi.tfs.ztp.model.DeviceRole;
+import org.etsi.tfs.ztp.model.DeviceRoleConfig;
+import org.etsi.tfs.ztp.model.DeviceRoleId;
+import org.etsi.tfs.ztp.model.DeviceRoleType;
+import org.etsi.tfs.ztp.model.DeviceState;
 import ztp.Ztp;
 import ztp.Ztp.ZtpDeviceState;
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/SimpleLivenessCheck.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/SimpleLivenessCheck.java
similarity index 97%
rename from src/ztp/src/main/java/eu/teraflow/ztp/SimpleLivenessCheck.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/SimpleLivenessCheck.java
index b5d40e903e585664ea9fe975a82afb6236db33a5..70188bc47174e0c5c7e8a9655be4854885902b02 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/SimpleLivenessCheck.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/SimpleLivenessCheck.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
 import javax.enterprise.context.ApplicationScoped;
 import org.eclipse.microprofile.health.HealthCheck;
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/SimpleReadinessCheck.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/SimpleReadinessCheck.java
similarity index 97%
rename from src/ztp/src/main/java/eu/teraflow/ztp/SimpleReadinessCheck.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/SimpleReadinessCheck.java
index d98b3370d99c72d0ad259efc3f6d69d4ebe9f9fa..3e4b996baa45522b986824580920aae522298573 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/SimpleReadinessCheck.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/SimpleReadinessCheck.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
 import javax.enterprise.context.ApplicationScoped;
 import org.eclipse.microprofile.health.HealthCheck;
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/ZtpConfiguration.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpConfiguration.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/ZtpConfiguration.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpConfiguration.java
index 4e0ab96fa016ea26640949f7c14e5f420e289c03..3fafac9954a32899dbe6bd5a064077b78cfb3b0a 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/ZtpConfiguration.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpConfiguration.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
 import io.smallrye.config.ConfigMapping;
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/ZtpGateway.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpGateway.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/ZtpGateway.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpGateway.java
index 69b3f5550906b46acadb1de363760c843708e7ba..6fcda5ca6b1b031ea8e0a843e13392255abb8c6f 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/ZtpGateway.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpGateway.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
 import ztp.ZtpService;
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/ZtpGatewayImpl.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpGatewayImpl.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/ZtpGatewayImpl.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpGatewayImpl.java
index bc56048178cb5b301415a233af24d6d40be70605..a07b933bc191f5616c3f30281264847407b85c03 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/ZtpGatewayImpl.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpGatewayImpl.java
@@ -14,18 +14,18 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
 import context.ContextOuterClass;
-import eu.teraflow.ztp.context.model.Device;
-import eu.teraflow.ztp.model.DeviceRoleId;
-import eu.teraflow.ztp.model.DeviceState;
 import io.quarkus.grpc.GrpcService;
 import io.smallrye.mutiny.Uni;
 import javax.inject.Inject;
 import org.eclipse.microprofile.metrics.MetricUnits;
 import org.eclipse.microprofile.metrics.annotation.Counted;
 import org.eclipse.microprofile.metrics.annotation.Timed;
+import org.etsi.tfs.ztp.context.model.Device;
+import org.etsi.tfs.ztp.model.DeviceRoleId;
+import org.etsi.tfs.ztp.model.DeviceState;
 import ztp.Ztp;
 import ztp.Ztp.DeviceRoleConfig;
 import ztp.Ztp.DeviceRoleState;
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/ZtpService.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpService.java
similarity index 87%
rename from src/ztp/src/main/java/eu/teraflow/ztp/ZtpService.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpService.java
index a86aec75e1700022cf59fca33f917a4efd842418..4d842f977934e0e785895edd3303375df75c86ff 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/ZtpService.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpService.java
@@ -14,11 +14,11 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
-import eu.teraflow.ztp.context.model.Device;
-import eu.teraflow.ztp.context.model.DeviceConfig;
 import io.smallrye.mutiny.Uni;
+import org.etsi.tfs.ztp.context.model.Device;
+import org.etsi.tfs.ztp.context.model.DeviceConfig;
 
 public interface ZtpService {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/ZtpServiceImpl.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpServiceImpl.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/ZtpServiceImpl.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpServiceImpl.java
index f4bbfc3f79ecdc73b49795ecb9dbd3efe0458f88..28109871f3f2080c723ab1dfb4dd30fc3b01ec26 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/ZtpServiceImpl.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/ZtpServiceImpl.java
@@ -14,15 +14,15 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
-import eu.teraflow.ztp.context.ContextService;
-import eu.teraflow.ztp.context.model.Device;
-import eu.teraflow.ztp.context.model.DeviceConfig;
-import eu.teraflow.ztp.device.DeviceService;
 import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
+import org.etsi.tfs.ztp.context.ContextService;
+import org.etsi.tfs.ztp.context.model.Device;
+import org.etsi.tfs.ztp.context.model.DeviceConfig;
+import org.etsi.tfs.ztp.device.DeviceService;
 import org.jboss.logging.Logger;
 
 @ApplicationScoped
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclAction.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclAction.java
similarity index 97%
rename from src/ztp/src/main/java/eu/teraflow/ztp/acl/AclAction.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclAction.java
index 4f2b3c717490401392242a634d34862c540970d1..6364f53fcfde12a2e198fcbf66a93f60896bc46b 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclAction.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclAction.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.acl;
+package org.etsi.tfs.ztp.acl;
 
 public class AclAction {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclEntry.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclEntry.java
similarity index 98%
rename from src/ztp/src/main/java/eu/teraflow/ztp/acl/AclEntry.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclEntry.java
index 78ff008c8964333932a09cd32b7c4788713f2e04..97da7127a5ca5745c4dbb9a0a07701f3f7551906 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclEntry.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclEntry.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.acl;
+package org.etsi.tfs.ztp.acl;
 
 public class AclEntry {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclForwardActionEnum.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclForwardActionEnum.java
similarity index 95%
rename from src/ztp/src/main/java/eu/teraflow/ztp/acl/AclForwardActionEnum.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclForwardActionEnum.java
index 86afe71de10dd07cb27d317cc433e0d38bd02b67..a1fe20a0c4cf57c4605c5542f1367159c7546172 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclForwardActionEnum.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclForwardActionEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.acl;
+package org.etsi.tfs.ztp.acl;
 
 public enum AclForwardActionEnum {
     UNDEFINED,
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclLogActionEnum.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclLogActionEnum.java
similarity index 95%
rename from src/ztp/src/main/java/eu/teraflow/ztp/acl/AclLogActionEnum.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclLogActionEnum.java
index 0c7223532dbeca92e23c0734737f50c7ccf65911..340267ec1c7e9c38b55cb831dc8b8ea49247c54d 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclLogActionEnum.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclLogActionEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.acl;
+package org.etsi.tfs.ztp.acl;
 
 public enum AclLogActionEnum {
     UNDEFINED,
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclMatch.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclMatch.java
similarity index 98%
rename from src/ztp/src/main/java/eu/teraflow/ztp/acl/AclMatch.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclMatch.java
index 513bcaece0e715964c0c934118b9b251686cf99e..156ff74a1d4b201075a59e7dfa1c6d32e4d14cb9 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclMatch.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclMatch.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.acl;
+package org.etsi.tfs.ztp.acl;
 
 public class AclMatch {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclRuleSet.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclRuleSet.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/acl/AclRuleSet.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclRuleSet.java
index 2c5efbd383092ba4b2d3153052ad586d17ee2486..4e9c706add951da96497c1e939f42d8379b8a81b 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclRuleSet.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclRuleSet.java
@@ -14,10 +14,10 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.acl;
+package org.etsi.tfs.ztp.acl;
 
-import eu.teraflow.ztp.common.Util;
 import java.util.List;
+import org.etsi.tfs.ztp.common.Util;
 
 public class AclRuleSet {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclRuleTypeEnum.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclRuleTypeEnum.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/acl/AclRuleTypeEnum.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclRuleTypeEnum.java
index 5abf7ab9ac992b4b4ffe39160427a05eed0408f7..1c5256a2c371479b812a5f68159fbc69c40feddb 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclRuleTypeEnum.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/acl/AclRuleTypeEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.acl;
+package org.etsi.tfs.ztp.acl;
 
 public enum AclRuleTypeEnum {
     UNDEFINED,
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/common/Util.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/common/Util.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/common/Util.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/common/Util.java
index f5135113c2876956def02ac8a0d61e788d72f1f8..7586759a9e7c2b30a89f0cd55aff7ae24b2d9719 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/common/Util.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/common/Util.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.common;
+package org.etsi.tfs.ztp.common;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/ContextGateway.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextGateway.java
similarity index 86%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/ContextGateway.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextGateway.java
index 0d835ee7315fe031d684efaa2f8ce39be1a7f977..c51c6999e7ce1e1c1dae99f59610a335a049e357 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/ContextGateway.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextGateway.java
@@ -14,12 +14,12 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context;
+package org.etsi.tfs.ztp.context;
 
-import eu.teraflow.ztp.context.model.Device;
-import eu.teraflow.ztp.context.model.DeviceEvent;
 import io.smallrye.mutiny.Multi;
 import io.smallrye.mutiny.Uni;
+import org.etsi.tfs.ztp.context.model.Device;
+import org.etsi.tfs.ztp.context.model.DeviceEvent;
 
 public interface ContextGateway {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/ContextGatewayImpl.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextGatewayImpl.java
similarity index 91%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/ContextGatewayImpl.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextGatewayImpl.java
index 286242fe11d1302db184abc37671dc2fa8162ec8..405da63be14fc979d3a572de318489631c254006 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/ContextGatewayImpl.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextGatewayImpl.java
@@ -14,18 +14,18 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context;
+package org.etsi.tfs.ztp.context;
 
 import context.ContextOuterClass;
 import context.MutinyContextServiceGrpc.MutinyContextServiceStub;
-import eu.teraflow.ztp.Serializer;
-import eu.teraflow.ztp.context.model.Device;
-import eu.teraflow.ztp.context.model.DeviceEvent;
 import io.quarkus.grpc.GrpcClient;
 import io.smallrye.mutiny.Multi;
 import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
+import org.etsi.tfs.ztp.Serializer;
+import org.etsi.tfs.ztp.context.model.Device;
+import org.etsi.tfs.ztp.context.model.DeviceEvent;
 
 @ApplicationScoped
 public class ContextGatewayImpl implements ContextGateway {
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/ContextService.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextService.java
similarity index 86%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/ContextService.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextService.java
index d9942c16018bf91a72a4baa4d395beda01d3a3f8..754de60c62dcc70e1be024670cfb11ed50e5540d 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/ContextService.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextService.java
@@ -14,12 +14,12 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context;
+package org.etsi.tfs.ztp.context;
 
-import eu.teraflow.ztp.context.model.Device;
-import eu.teraflow.ztp.context.model.DeviceEvent;
 import io.smallrye.mutiny.Multi;
 import io.smallrye.mutiny.Uni;
+import org.etsi.tfs.ztp.context.model.Device;
+import org.etsi.tfs.ztp.context.model.DeviceEvent;
 
 public interface ContextService {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/ContextServiceImpl.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextServiceImpl.java
similarity index 90%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/ContextServiceImpl.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextServiceImpl.java
index 7a2bca7c3fe57b999a72c0831758d0f83c837bf3..cd0b09b38752d7f1d7c4d7f9c4abc576e655a980 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/ContextServiceImpl.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/ContextServiceImpl.java
@@ -14,14 +14,14 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context;
+package org.etsi.tfs.ztp.context;
 
-import eu.teraflow.ztp.context.model.Device;
-import eu.teraflow.ztp.context.model.DeviceEvent;
 import io.smallrye.mutiny.Multi;
 import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
+import org.etsi.tfs.ztp.context.model.Device;
+import org.etsi.tfs.ztp.context.model.DeviceEvent;
 
 @ApplicationScoped
 public class ContextServiceImpl implements ContextService {
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigActionEnum.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigActionEnum.java
similarity index 94%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigActionEnum.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigActionEnum.java
index f85dc5a89cc71c0fcc9fe84e82f24a4e90113b60..a91b212cffbf75fd57a752b3e50b1ae09ab041b5 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigActionEnum.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigActionEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public enum ConfigActionEnum {
     UNDEFINED,
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRule.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRule.java
similarity index 97%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRule.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRule.java
index a375101c1a53dbcfe6709b4647a5fbcee4198ca1..6f78bf1018e262cd15e8ba0f0b7384639d4c93df 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRule.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRule.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public class ConfigRule {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleAcl.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRuleAcl.java
similarity index 93%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleAcl.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRuleAcl.java
index 1a8942cf913cfcc7355b35614c9a0ffd910ce886..8503904cb29b5ca88bffee928e80554a12550f7b 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleAcl.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRuleAcl.java
@@ -14,9 +14,9 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
-import eu.teraflow.ztp.acl.AclRuleSet;
+import org.etsi.tfs.ztp.acl.AclRuleSet;
 
 public class ConfigRuleAcl {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleCustom.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRuleCustom.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleCustom.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRuleCustom.java
index 2cf6dd69fb9aad6b4e4c606d6205542bfbb90146..48cc64ed0f7de400da8adb669f0fc2c035b698b6 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleCustom.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRuleCustom.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public class ConfigRuleCustom {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleType.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRuleType.java
similarity index 94%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleType.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRuleType.java
index 2e11fc6b1628cc728025002595cdeb0ba4d767f5..fb040718cd032bef2bb919ca4e8100a06060a3c9 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleType.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRuleType.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public interface ConfigRuleType<T> {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeAcl.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRuleTypeAcl.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeAcl.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRuleTypeAcl.java
index 5405faa7348c72bb2798ebf0b1ee24ea696fbf24..c10b35568465a04c1841012781ea877fd0c4ea94 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeAcl.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRuleTypeAcl.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public class ConfigRuleTypeAcl implements ConfigRuleType<ConfigRuleAcl> {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeCustom.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRuleTypeCustom.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeCustom.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRuleTypeCustom.java
index 5cc4a17fb9a1377a88e330d49ab573bd35dfa4ea..55cac7bfb62dec26734aa7606197b3b2ad95b799 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeCustom.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/ConfigRuleTypeCustom.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public class ConfigRuleTypeCustom implements ConfigRuleType<ConfigRuleCustom> {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/Device.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/Device.java
similarity index 97%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/Device.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/Device.java
index 3bb1e7a3af1de99ccf113f02fab1df462c2c10a5..494a06fe54a5b4b0afb1f1f6aac12a7ba6997cbd 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/Device.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/Device.java
@@ -14,10 +14,10 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
-import eu.teraflow.ztp.common.Util;
 import java.util.List;
+import org.etsi.tfs.ztp.common.Util;
 
 public class Device {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceConfig.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceConfig.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceConfig.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceConfig.java
index 0775248428c5de66fecb0757fc944efce38597a9..e70a7ec75adb06ca2064dc52d96efd4f8bcca2dc 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceConfig.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceConfig.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 import java.util.List;
 import java.util.stream.Collectors;
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceDriverEnum.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceDriverEnum.java
similarity index 95%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceDriverEnum.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceDriverEnum.java
index fe623175a791517846d329de6c83571a3a043a26..7c87b0638272edb58ef3cd57d3aad7aa3365cca8 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceDriverEnum.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceDriverEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public enum DeviceDriverEnum {
     UNDEFINED,
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceEvent.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceEvent.java
similarity index 97%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceEvent.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceEvent.java
index 8ab56ec7c7dd5e079f000ab64003f12f6080f099..71b0d77af2c794675d44d0b8db7dc09d8db66e68 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceEvent.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceEvent.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 import java.util.Optional;
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceOperationalStatus.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceOperationalStatus.java
similarity index 94%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceOperationalStatus.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceOperationalStatus.java
index b171d31e1d30c768c3ae4d3f7bf5160170784285..373f928ca53bb15d43123738e3580edc8f0401fd 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceOperationalStatus.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/DeviceOperationalStatus.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public enum DeviceOperationalStatus {
     UNDEFINED,
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/Empty.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/Empty.java
similarity index 95%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/Empty.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/Empty.java
index adeaaaafc3e940f366b9ee84c08f931197ab5658..912788b5de68b8630c1f88761c6deaca14c3104f 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/Empty.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/Empty.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public class Empty {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/EndPoint.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/EndPoint.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/EndPoint.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/EndPoint.java
index 51378048e2e7387542ae59b7cd1909dd8ec6e8a7..634793a4f482d933f497562dba7b43e6d2953c7f 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/EndPoint.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/EndPoint.java
@@ -14,11 +14,11 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
-import eu.teraflow.ztp.common.Util;
-import eu.teraflow.ztp.kpi_sample_types.model.KpiSampleType;
 import java.util.List;
+import org.etsi.tfs.ztp.common.Util;
+import org.etsi.tfs.ztp.kpi_sample_types.model.KpiSampleType;
 
 public class EndPoint {
     private final EndPointId endPointId;
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/EndPointId.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/EndPointId.java
similarity index 97%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/EndPointId.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/EndPointId.java
index ddda2eb439301f8d77533974a337851ad2186ce9..059ebf3eb1f214ac906c40b1625cf41b3087b964 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/EndPointId.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/EndPointId.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public class EndPointId {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/Event.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/Event.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/Event.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/Event.java
index 045b8482bc45bf29460aedbbe1d9771afde8d948..552e2c2ec324aa9e4d28fcf3a14b8ada65c9a70f 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/Event.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/Event.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public class Event {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/EventTypeEnum.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/EventTypeEnum.java
similarity index 94%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/EventTypeEnum.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/EventTypeEnum.java
index b732a26cd7a6d3609f8e1d670c5e8b501e971f18..97f669136a128d3347ff0f733403a588ab4bad91 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/EventTypeEnum.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/EventTypeEnum.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public enum EventTypeEnum {
     UNDEFINED,
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/GpsPosition.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/GpsPosition.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/GpsPosition.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/GpsPosition.java
index c0dc6e3e788d1a1df8336ca97fc068857fc56495..67c6b58c16990f42265ccd9720ae7e297cb6ea91 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/GpsPosition.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/GpsPosition.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public class GpsPosition {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/Location.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/Location.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/Location.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/Location.java
index fa937d91cae6796594028d313d85509c6df5cd09..da514f711c42a22c41dcd4aa5c5e42704782f01b 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/Location.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/Location.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public class Location {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/LocationType.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/LocationType.java
similarity index 94%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/LocationType.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/LocationType.java
index e4338c42b7855223db39ad58a7f0e1076a3d4823..a376d428ca2be063c7b7a7964c705e418ce6084b 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/LocationType.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/LocationType.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public interface LocationType<T> {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/LocationTypeGpsPosition.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/LocationTypeGpsPosition.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/LocationTypeGpsPosition.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/LocationTypeGpsPosition.java
index f4d510e65e7cba97243df295755080f8d876e7ab..e8b8ce5a04e2afe5485c4b72f2b3529b1d3fa176 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/LocationTypeGpsPosition.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/LocationTypeGpsPosition.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public class LocationTypeGpsPosition implements LocationType<GpsPosition> {
     private final GpsPosition gpsPosition;
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/LocationTypeRegion.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/LocationTypeRegion.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/LocationTypeRegion.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/LocationTypeRegion.java
index 8691de64238c4c947335bfc834ef0a9ce194763e..92916dc9cb0dd11bf2b6c1ada93452222be1777a 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/LocationTypeRegion.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/LocationTypeRegion.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public class LocationTypeRegion implements LocationType<String> {
     private final String region;
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/TopologyId.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/TopologyId.java
similarity index 96%
rename from src/ztp/src/main/java/eu/teraflow/ztp/context/model/TopologyId.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/TopologyId.java
index 574c075d59bb801317aa67a9e22ccef05725a77a..c2c5720b468838bab25a2fa61f6f2147b2de9282 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/context/model/TopologyId.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/context/model/TopologyId.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.context.model;
+package org.etsi.tfs.ztp.context.model;
 
 public class TopologyId {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceGateway.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceGateway.java
similarity index 82%
rename from src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceGateway.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceGateway.java
index 7302abf48edd2588af41dce32ea0946f40acc070..87bf1b7598cc512cd44c056076fdcce453d94351 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceGateway.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceGateway.java
@@ -14,12 +14,12 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.device;
+package org.etsi.tfs.ztp.device;
 
-import eu.teraflow.ztp.context.model.Device;
-import eu.teraflow.ztp.context.model.DeviceConfig;
-import eu.teraflow.ztp.context.model.Empty;
 import io.smallrye.mutiny.Uni;
+import org.etsi.tfs.ztp.context.model.Device;
+import org.etsi.tfs.ztp.context.model.DeviceConfig;
+import org.etsi.tfs.ztp.context.model.Empty;
 
 public interface DeviceGateway {
     Uni<DeviceConfig> getInitialConfiguration(String deviceId);
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceGatewayImpl.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceGatewayImpl.java
similarity index 90%
rename from src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceGatewayImpl.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceGatewayImpl.java
index aea3368a0a242413bdd1791d181441076bc6474b..cb8ff578c9c42de3c6470c5542e072a5437fafa7 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceGatewayImpl.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceGatewayImpl.java
@@ -14,17 +14,17 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.device;
+package org.etsi.tfs.ztp.device;
 
 import device.DeviceService;
-import eu.teraflow.ztp.Serializer;
-import eu.teraflow.ztp.context.model.Device;
-import eu.teraflow.ztp.context.model.DeviceConfig;
-import eu.teraflow.ztp.context.model.Empty;
 import io.quarkus.grpc.GrpcClient;
 import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
+import org.etsi.tfs.ztp.Serializer;
+import org.etsi.tfs.ztp.context.model.Device;
+import org.etsi.tfs.ztp.context.model.DeviceConfig;
+import org.etsi.tfs.ztp.context.model.Empty;
 
 @ApplicationScoped
 public class DeviceGatewayImpl implements DeviceGateway {
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceService.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceService.java
similarity index 82%
rename from src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceService.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceService.java
index 1f2e6d9ad8de852f9cb929df580cdc24ecbb538e..e89f99bcd14e4521b2845b1db8cc7ca156ff4044 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceService.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceService.java
@@ -14,12 +14,12 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.device;
+package org.etsi.tfs.ztp.device;
 
-import eu.teraflow.ztp.context.model.Device;
-import eu.teraflow.ztp.context.model.DeviceConfig;
-import eu.teraflow.ztp.context.model.Empty;
 import io.smallrye.mutiny.Uni;
+import org.etsi.tfs.ztp.context.model.Device;
+import org.etsi.tfs.ztp.context.model.DeviceConfig;
+import org.etsi.tfs.ztp.context.model.Empty;
 
 public interface DeviceService {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceServiceImpl.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceServiceImpl.java
similarity index 88%
rename from src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceServiceImpl.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceServiceImpl.java
index 67446b8c20fb65cba6242547967d3adc714f96d0..1d889ec0a14f82182acedcb5e5a3f4c919c4b67b 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceServiceImpl.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/device/DeviceServiceImpl.java
@@ -14,14 +14,14 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.device;
+package org.etsi.tfs.ztp.device;
 
-import eu.teraflow.ztp.context.model.Device;
-import eu.teraflow.ztp.context.model.DeviceConfig;
-import eu.teraflow.ztp.context.model.Empty;
 import io.smallrye.mutiny.Uni;
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
+import org.etsi.tfs.ztp.context.model.Device;
+import org.etsi.tfs.ztp.context.model.DeviceConfig;
+import org.etsi.tfs.ztp.context.model.Empty;
 
 @ApplicationScoped
 public class DeviceServiceImpl implements DeviceService {
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/kpi_sample_types/model/KpiSampleType.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/kpi_sample_types/model/KpiSampleType.java
similarity index 94%
rename from src/ztp/src/main/java/eu/teraflow/ztp/kpi_sample_types/model/KpiSampleType.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/kpi_sample_types/model/KpiSampleType.java
index 6db242d9d1f1eda6aa221c6bdd60e4fd94045abf..53973637fbb7502ebccbe72dadeeb1b03d4b316d 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/kpi_sample_types/model/KpiSampleType.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/kpi_sample_types/model/KpiSampleType.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.kpi_sample_types.model;
+package org.etsi.tfs.ztp.kpi_sample_types.model;
 
 public enum KpiSampleType {
     UNKNOWN,
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRole.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/model/DeviceRole.java
similarity index 97%
rename from src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRole.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/model/DeviceRole.java
index 061d500bee94dd77279f8bcf0bf5be1194900022..50d44d27da03c428bc08e584a178581c9de38ece 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRole.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/model/DeviceRole.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.model;
+package org.etsi.tfs.ztp.model;
 
 public class DeviceRole {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRoleConfig.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/model/DeviceRoleConfig.java
similarity index 93%
rename from src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRoleConfig.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/model/DeviceRoleConfig.java
index badcf05889a2338d602e8dddda1435aaface0b40..8594c6fbc355fd4dd505bd3c8820f31416d27c6c 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRoleConfig.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/model/DeviceRoleConfig.java
@@ -14,9 +14,9 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.model;
+package org.etsi.tfs.ztp.model;
 
-import eu.teraflow.ztp.context.model.DeviceConfig;
+import org.etsi.tfs.ztp.context.model.DeviceConfig;
 
 public class DeviceRoleConfig {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRoleId.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/model/DeviceRoleId.java
similarity index 97%
rename from src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRoleId.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/model/DeviceRoleId.java
index dd482fb05e0fe0f5f3770df15c4161c9dae4c70f..ac51beb554e1562cfdda491f89469bd46dd2b514 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRoleId.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/model/DeviceRoleId.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.model;
+package org.etsi.tfs.ztp.model;
 
 public class DeviceRoleId {
 
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRoleType.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/model/DeviceRoleType.java
similarity index 95%
rename from src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRoleType.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/model/DeviceRoleType.java
index 7db0cab714cf493c46288ad1056fc6c1db974df2..8ca7e2f5f810ff5857587ac7ede5c2beeeade72d 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRoleType.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/model/DeviceRoleType.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.model;
+package org.etsi.tfs.ztp.model;
 
 public enum DeviceRoleType {
     NONE,
diff --git a/src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceState.java b/src/ztp/src/main/java/org/etsi/tfs/ztp/model/DeviceState.java
similarity index 95%
rename from src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceState.java
rename to src/ztp/src/main/java/org/etsi/tfs/ztp/model/DeviceState.java
index ee953862cf64707ba656d6cbe224fc83592367de..2b133f0e3c0c039b24e28b697e8fbae20d77c950 100644
--- a/src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceState.java
+++ b/src/ztp/src/main/java/org/etsi/tfs/ztp/model/DeviceState.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp.model;
+package org.etsi.tfs.ztp.model;
 
 public enum DeviceState {
     UNDEFINED,
diff --git a/src/ztp/src/test/java/eu/teraflow/ztp/ConfigRuleTypeTest.java b/src/ztp/src/test/java/org/etsi/tfs/ztp/ConfigRuleTypeTest.java
similarity index 81%
rename from src/ztp/src/test/java/eu/teraflow/ztp/ConfigRuleTypeTest.java
rename to src/ztp/src/test/java/org/etsi/tfs/ztp/ConfigRuleTypeTest.java
index 435164a35350623ec50fea406585100c01f48bc6..7bac8d8d93cccc758f1754123b3c54c69f3b73de 100644
--- a/src/ztp/src/test/java/eu/teraflow/ztp/ConfigRuleTypeTest.java
+++ b/src/ztp/src/test/java/org/etsi/tfs/ztp/ConfigRuleTypeTest.java
@@ -14,25 +14,25 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-import eu.teraflow.ztp.acl.AclAction;
-import eu.teraflow.ztp.acl.AclEntry;
-import eu.teraflow.ztp.acl.AclForwardActionEnum;
-import eu.teraflow.ztp.acl.AclLogActionEnum;
-import eu.teraflow.ztp.acl.AclMatch;
-import eu.teraflow.ztp.acl.AclRuleSet;
-import eu.teraflow.ztp.acl.AclRuleTypeEnum;
-import eu.teraflow.ztp.context.model.ConfigRuleAcl;
-import eu.teraflow.ztp.context.model.ConfigRuleCustom;
-import eu.teraflow.ztp.context.model.ConfigRuleTypeAcl;
-import eu.teraflow.ztp.context.model.ConfigRuleTypeCustom;
-import eu.teraflow.ztp.context.model.EndPointId;
-import eu.teraflow.ztp.context.model.TopologyId;
 import io.quarkus.test.junit.QuarkusTest;
 import java.util.List;
+import org.etsi.tfs.ztp.acl.AclAction;
+import org.etsi.tfs.ztp.acl.AclEntry;
+import org.etsi.tfs.ztp.acl.AclForwardActionEnum;
+import org.etsi.tfs.ztp.acl.AclLogActionEnum;
+import org.etsi.tfs.ztp.acl.AclMatch;
+import org.etsi.tfs.ztp.acl.AclRuleSet;
+import org.etsi.tfs.ztp.acl.AclRuleTypeEnum;
+import org.etsi.tfs.ztp.context.model.ConfigRuleAcl;
+import org.etsi.tfs.ztp.context.model.ConfigRuleCustom;
+import org.etsi.tfs.ztp.context.model.ConfigRuleTypeAcl;
+import org.etsi.tfs.ztp.context.model.ConfigRuleTypeCustom;
+import org.etsi.tfs.ztp.context.model.EndPointId;
+import org.etsi.tfs.ztp.context.model.TopologyId;
 import org.junit.jupiter.api.Test;
 
 @QuarkusTest
diff --git a/src/ztp/src/test/java/eu/teraflow/ztp/ContextSubscriberTest.java b/src/ztp/src/test/java/org/etsi/tfs/ztp/ContextSubscriberTest.java
similarity index 97%
rename from src/ztp/src/test/java/eu/teraflow/ztp/ContextSubscriberTest.java
rename to src/ztp/src/test/java/org/etsi/tfs/ztp/ContextSubscriberTest.java
index 9d3d6956c4b466456b8a148b7d3996d7ae1e5132..0265bbfad5b4a5a202ed3fa77d136aa8fc68381d 100644
--- a/src/ztp/src/test/java/eu/teraflow/ztp/ContextSubscriberTest.java
+++ b/src/ztp/src/test/java/org/etsi/tfs/ztp/ContextSubscriberTest.java
@@ -14,22 +14,22 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
 import context.ContextOuterClass;
-import eu.teraflow.ztp.context.ContextGateway;
-import eu.teraflow.ztp.context.model.DeviceEvent;
-import eu.teraflow.ztp.context.model.Event;
-import eu.teraflow.ztp.context.model.EventTypeEnum;
 import io.quarkus.runtime.StartupEvent;
 import io.quarkus.test.junit.QuarkusTest;
 import io.quarkus.test.junit.mockito.InjectMock;
 import io.smallrye.mutiny.Multi;
 import java.util.UUID;
 import javax.inject.Inject;
+import org.etsi.tfs.ztp.context.ContextGateway;
+import org.etsi.tfs.ztp.context.model.DeviceEvent;
+import org.etsi.tfs.ztp.context.model.Event;
+import org.etsi.tfs.ztp.context.model.EventTypeEnum;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
 import ztp.Ztp;
diff --git a/src/ztp/src/test/java/eu/teraflow/ztp/EndPointCreationTest.java b/src/ztp/src/test/java/org/etsi/tfs/ztp/EndPointCreationTest.java
similarity index 93%
rename from src/ztp/src/test/java/eu/teraflow/ztp/EndPointCreationTest.java
rename to src/ztp/src/test/java/org/etsi/tfs/ztp/EndPointCreationTest.java
index cb935cd4a9f24245e801341102649c3a5ffba5d7..e920bfa9bf4eef96165a26870c296c31059f6699 100644
--- a/src/ztp/src/test/java/eu/teraflow/ztp/EndPointCreationTest.java
+++ b/src/ztp/src/test/java/org/etsi/tfs/ztp/EndPointCreationTest.java
@@ -14,19 +14,19 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
 
-import eu.teraflow.ztp.context.model.EndPoint;
-import eu.teraflow.ztp.context.model.EndPointId;
-import eu.teraflow.ztp.context.model.Location;
-import eu.teraflow.ztp.context.model.LocationTypeRegion;
-import eu.teraflow.ztp.context.model.TopologyId;
-import eu.teraflow.ztp.kpi_sample_types.model.KpiSampleType;
 import io.quarkus.test.junit.QuarkusTest;
 import java.util.List;
+import org.etsi.tfs.ztp.context.model.EndPoint;
+import org.etsi.tfs.ztp.context.model.EndPointId;
+import org.etsi.tfs.ztp.context.model.Location;
+import org.etsi.tfs.ztp.context.model.LocationTypeRegion;
+import org.etsi.tfs.ztp.context.model.TopologyId;
+import org.etsi.tfs.ztp.kpi_sample_types.model.KpiSampleType;
 import org.junit.jupiter.api.Test;
 
 @QuarkusTest
diff --git a/src/ztp/src/test/java/eu/teraflow/ztp/LocationTypeTest.java b/src/ztp/src/test/java/org/etsi/tfs/ztp/LocationTypeTest.java
similarity index 88%
rename from src/ztp/src/test/java/eu/teraflow/ztp/LocationTypeTest.java
rename to src/ztp/src/test/java/org/etsi/tfs/ztp/LocationTypeTest.java
index 4f038a6adafacfc5a4b8beea8f83195501c86fb9..53e2711aa429a85360a67690191f4009ce577815 100644
--- a/src/ztp/src/test/java/eu/teraflow/ztp/LocationTypeTest.java
+++ b/src/ztp/src/test/java/org/etsi/tfs/ztp/LocationTypeTest.java
@@ -14,14 +14,14 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-import eu.teraflow.ztp.context.model.GpsPosition;
-import eu.teraflow.ztp.context.model.LocationTypeGpsPosition;
-import eu.teraflow.ztp.context.model.LocationTypeRegion;
 import io.quarkus.test.junit.QuarkusTest;
+import org.etsi.tfs.ztp.context.model.GpsPosition;
+import org.etsi.tfs.ztp.context.model.LocationTypeGpsPosition;
+import org.etsi.tfs.ztp.context.model.LocationTypeRegion;
 import org.junit.jupiter.api.Test;
 
 @QuarkusTest
diff --git a/src/ztp/src/test/java/eu/teraflow/ztp/MockZtpConfiguration.java b/src/ztp/src/test/java/org/etsi/tfs/ztp/MockZtpConfiguration.java
similarity index 97%
rename from src/ztp/src/test/java/eu/teraflow/ztp/MockZtpConfiguration.java
rename to src/ztp/src/test/java/org/etsi/tfs/ztp/MockZtpConfiguration.java
index aa554cbc3b76e73fa1952fb95a3d9045692eb0d9..bce235c7f96404b354bbf200a7ff50643503af57 100644
--- a/src/ztp/src/test/java/eu/teraflow/ztp/MockZtpConfiguration.java
+++ b/src/ztp/src/test/java/org/etsi/tfs/ztp/MockZtpConfiguration.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
 import io.smallrye.config.SmallRyeConfig;
 import javax.enterprise.context.ApplicationScoped;
diff --git a/src/ztp/src/test/java/eu/teraflow/ztp/SerializerTest.java b/src/ztp/src/test/java/org/etsi/tfs/ztp/SerializerTest.java
similarity index 97%
rename from src/ztp/src/test/java/eu/teraflow/ztp/SerializerTest.java
rename to src/ztp/src/test/java/org/etsi/tfs/ztp/SerializerTest.java
index 8441255f3a569662324a38aef7a025ddae815049..5a7887a049526e530874a597b2b0f96e2646a4f9 100644
--- a/src/ztp/src/test/java/eu/teraflow/ztp/SerializerTest.java
+++ b/src/ztp/src/test/java/org/etsi/tfs/ztp/SerializerTest.java
@@ -14,7 +14,7 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@@ -24,46 +24,46 @@ import context.ContextOuterClass;
 import context.ContextOuterClass.DeviceId;
 import context.ContextOuterClass.DeviceOperationalStatusEnum;
 import context.ContextOuterClass.Uuid;
-import eu.teraflow.ztp.acl.AclAction;
-import eu.teraflow.ztp.acl.AclEntry;
-import eu.teraflow.ztp.acl.AclForwardActionEnum;
-import eu.teraflow.ztp.acl.AclLogActionEnum;
-import eu.teraflow.ztp.acl.AclMatch;
-import eu.teraflow.ztp.acl.AclRuleSet;
-import eu.teraflow.ztp.acl.AclRuleTypeEnum;
-import eu.teraflow.ztp.context.model.ConfigActionEnum;
-import eu.teraflow.ztp.context.model.ConfigRule;
-import eu.teraflow.ztp.context.model.ConfigRuleAcl;
-import eu.teraflow.ztp.context.model.ConfigRuleCustom;
-import eu.teraflow.ztp.context.model.ConfigRuleTypeAcl;
-import eu.teraflow.ztp.context.model.ConfigRuleTypeCustom;
-import eu.teraflow.ztp.context.model.Device;
-import eu.teraflow.ztp.context.model.DeviceConfig;
-import eu.teraflow.ztp.context.model.DeviceDriverEnum;
-import eu.teraflow.ztp.context.model.DeviceEvent;
-import eu.teraflow.ztp.context.model.DeviceOperationalStatus;
-import eu.teraflow.ztp.context.model.Empty;
-import eu.teraflow.ztp.context.model.EndPoint.EndPointBuilder;
-import eu.teraflow.ztp.context.model.EndPointId;
-import eu.teraflow.ztp.context.model.Event;
-import eu.teraflow.ztp.context.model.EventTypeEnum;
-import eu.teraflow.ztp.context.model.GpsPosition;
-import eu.teraflow.ztp.context.model.Location;
-import eu.teraflow.ztp.context.model.LocationTypeGpsPosition;
-import eu.teraflow.ztp.context.model.LocationTypeRegion;
-import eu.teraflow.ztp.context.model.TopologyId;
-import eu.teraflow.ztp.kpi_sample_types.model.KpiSampleType;
-import eu.teraflow.ztp.model.DeviceRole;
-import eu.teraflow.ztp.model.DeviceRoleConfig;
-import eu.teraflow.ztp.model.DeviceRoleId;
-import eu.teraflow.ztp.model.DeviceRoleType;
-import eu.teraflow.ztp.model.DeviceState;
 import io.quarkus.test.junit.QuarkusTest;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import javax.inject.Inject;
 import kpi_sample_types.KpiSampleTypes;
+import org.etsi.tfs.ztp.acl.AclAction;
+import org.etsi.tfs.ztp.acl.AclEntry;
+import org.etsi.tfs.ztp.acl.AclForwardActionEnum;
+import org.etsi.tfs.ztp.acl.AclLogActionEnum;
+import org.etsi.tfs.ztp.acl.AclMatch;
+import org.etsi.tfs.ztp.acl.AclRuleSet;
+import org.etsi.tfs.ztp.acl.AclRuleTypeEnum;
+import org.etsi.tfs.ztp.context.model.ConfigActionEnum;
+import org.etsi.tfs.ztp.context.model.ConfigRule;
+import org.etsi.tfs.ztp.context.model.ConfigRuleAcl;
+import org.etsi.tfs.ztp.context.model.ConfigRuleCustom;
+import org.etsi.tfs.ztp.context.model.ConfigRuleTypeAcl;
+import org.etsi.tfs.ztp.context.model.ConfigRuleTypeCustom;
+import org.etsi.tfs.ztp.context.model.Device;
+import org.etsi.tfs.ztp.context.model.DeviceConfig;
+import org.etsi.tfs.ztp.context.model.DeviceDriverEnum;
+import org.etsi.tfs.ztp.context.model.DeviceEvent;
+import org.etsi.tfs.ztp.context.model.DeviceOperationalStatus;
+import org.etsi.tfs.ztp.context.model.Empty;
+import org.etsi.tfs.ztp.context.model.EndPoint.EndPointBuilder;
+import org.etsi.tfs.ztp.context.model.EndPointId;
+import org.etsi.tfs.ztp.context.model.Event;
+import org.etsi.tfs.ztp.context.model.EventTypeEnum;
+import org.etsi.tfs.ztp.context.model.GpsPosition;
+import org.etsi.tfs.ztp.context.model.Location;
+import org.etsi.tfs.ztp.context.model.LocationTypeGpsPosition;
+import org.etsi.tfs.ztp.context.model.LocationTypeRegion;
+import org.etsi.tfs.ztp.context.model.TopologyId;
+import org.etsi.tfs.ztp.kpi_sample_types.model.KpiSampleType;
+import org.etsi.tfs.ztp.model.DeviceRole;
+import org.etsi.tfs.ztp.model.DeviceRoleConfig;
+import org.etsi.tfs.ztp.model.DeviceRoleId;
+import org.etsi.tfs.ztp.model.DeviceRoleType;
+import org.etsi.tfs.ztp.model.DeviceState;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
@@ -1030,7 +1030,7 @@ class SerializerTest {
         final var aclRuleSet =
                 new AclRuleSet(
                         "aclRuleName",
-                        eu.teraflow.ztp.acl.AclRuleTypeEnum.IPV4,
+                        org.etsi.tfs.ztp.acl.AclRuleTypeEnum.IPV4,
                         "AclRuleDescription",
                         "userId",
                         List.of(aclEntry));
@@ -1116,7 +1116,7 @@ class SerializerTest {
         final var aclRuleSet =
                 new AclRuleSet(
                         "aclRuleName",
-                        eu.teraflow.ztp.acl.AclRuleTypeEnum.IPV4,
+                        org.etsi.tfs.ztp.acl.AclRuleTypeEnum.IPV4,
                         "AclRuleDescription",
                         "userId",
                         List.of(aclEntry));
diff --git a/src/ztp/src/test/java/eu/teraflow/ztp/ZtpFunctionalServiceTest.java b/src/ztp/src/test/java/org/etsi/tfs/ztp/ZtpFunctionalServiceTest.java
similarity index 95%
rename from src/ztp/src/test/java/eu/teraflow/ztp/ZtpFunctionalServiceTest.java
rename to src/ztp/src/test/java/org/etsi/tfs/ztp/ZtpFunctionalServiceTest.java
index 83b9f6f7f332e50e7d01fe6317b2623beafe0100..5f1030e7a382c1b5480625b05b88812303b70f5c 100644
--- a/src/ztp/src/test/java/eu/teraflow/ztp/ZtpFunctionalServiceTest.java
+++ b/src/ztp/src/test/java/org/etsi/tfs/ztp/ZtpFunctionalServiceTest.java
@@ -14,27 +14,11 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
 import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
 
 import context.ContextOuterClass;
-import eu.teraflow.ztp.context.ContextGateway;
-import eu.teraflow.ztp.context.model.ConfigActionEnum;
-import eu.teraflow.ztp.context.model.ConfigRule;
-import eu.teraflow.ztp.context.model.ConfigRuleCustom;
-import eu.teraflow.ztp.context.model.ConfigRuleTypeCustom;
-import eu.teraflow.ztp.context.model.Device;
-import eu.teraflow.ztp.context.model.DeviceConfig;
-import eu.teraflow.ztp.context.model.DeviceDriverEnum;
-import eu.teraflow.ztp.context.model.DeviceOperationalStatus;
-import eu.teraflow.ztp.context.model.EndPoint.EndPointBuilder;
-import eu.teraflow.ztp.context.model.EndPointId;
-import eu.teraflow.ztp.context.model.Location;
-import eu.teraflow.ztp.context.model.LocationTypeRegion;
-import eu.teraflow.ztp.context.model.TopologyId;
-import eu.teraflow.ztp.device.DeviceGateway;
-import eu.teraflow.ztp.kpi_sample_types.model.KpiSampleType;
 import io.quarkus.test.junit.QuarkusTest;
 import io.quarkus.test.junit.mockito.InjectMock;
 import io.smallrye.mutiny.Uni;
@@ -43,6 +27,22 @@ import java.util.List;
 import java.util.UUID;
 import javax.inject.Inject;
 import org.assertj.core.api.Assertions;
+import org.etsi.tfs.ztp.context.ContextGateway;
+import org.etsi.tfs.ztp.context.model.ConfigActionEnum;
+import org.etsi.tfs.ztp.context.model.ConfigRule;
+import org.etsi.tfs.ztp.context.model.ConfigRuleCustom;
+import org.etsi.tfs.ztp.context.model.ConfigRuleTypeCustom;
+import org.etsi.tfs.ztp.context.model.Device;
+import org.etsi.tfs.ztp.context.model.DeviceConfig;
+import org.etsi.tfs.ztp.context.model.DeviceDriverEnum;
+import org.etsi.tfs.ztp.context.model.DeviceOperationalStatus;
+import org.etsi.tfs.ztp.context.model.EndPoint.EndPointBuilder;
+import org.etsi.tfs.ztp.context.model.EndPointId;
+import org.etsi.tfs.ztp.context.model.Location;
+import org.etsi.tfs.ztp.context.model.LocationTypeRegion;
+import org.etsi.tfs.ztp.context.model.TopologyId;
+import org.etsi.tfs.ztp.device.DeviceGateway;
+import org.etsi.tfs.ztp.kpi_sample_types.model.KpiSampleType;
 import org.jboss.logging.Logger;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
diff --git a/src/ztp/src/test/java/eu/teraflow/ztp/ZtpServiceTest.java b/src/ztp/src/test/java/org/etsi/tfs/ztp/ZtpServiceTest.java
similarity index 93%
rename from src/ztp/src/test/java/eu/teraflow/ztp/ZtpServiceTest.java
rename to src/ztp/src/test/java/org/etsi/tfs/ztp/ZtpServiceTest.java
index f4c38f1fc0eb214db3f6cea120fe783bb5c03c5f..32b8ff850367cde6753f072885c75249719a81ec 100644
--- a/src/ztp/src/test/java/eu/teraflow/ztp/ZtpServiceTest.java
+++ b/src/ztp/src/test/java/org/etsi/tfs/ztp/ZtpServiceTest.java
@@ -14,31 +14,11 @@
 * limitations under the License.
 */
 
-package eu.teraflow.ztp;
+package org.etsi.tfs.ztp;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
 import context.ContextOuterClass;
-import eu.teraflow.ztp.context.ContextGateway;
-import eu.teraflow.ztp.context.model.ConfigActionEnum;
-import eu.teraflow.ztp.context.model.ConfigRule;
-import eu.teraflow.ztp.context.model.ConfigRuleCustom;
-import eu.teraflow.ztp.context.model.ConfigRuleTypeCustom;
-import eu.teraflow.ztp.context.model.Device;
-import eu.teraflow.ztp.context.model.DeviceConfig;
-import eu.teraflow.ztp.context.model.DeviceDriverEnum;
-import eu.teraflow.ztp.context.model.DeviceOperationalStatus;
-import eu.teraflow.ztp.context.model.EndPoint.EndPointBuilder;
-import eu.teraflow.ztp.context.model.EndPointId;
-import eu.teraflow.ztp.context.model.Location;
-import eu.teraflow.ztp.context.model.LocationTypeRegion;
-import eu.teraflow.ztp.context.model.TopologyId;
-import eu.teraflow.ztp.device.DeviceGateway;
-import eu.teraflow.ztp.kpi_sample_types.model.KpiSampleType;
-import eu.teraflow.ztp.model.DeviceRole;
-import eu.teraflow.ztp.model.DeviceRoleConfig;
-import eu.teraflow.ztp.model.DeviceRoleId;
-import eu.teraflow.ztp.model.DeviceRoleType;
 import io.quarkus.grpc.GrpcClient;
 import io.quarkus.test.junit.QuarkusTest;
 import io.quarkus.test.junit.mockito.InjectMock;
@@ -49,6 +29,26 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import javax.inject.Inject;
+import org.etsi.tfs.ztp.context.ContextGateway;
+import org.etsi.tfs.ztp.context.model.ConfigActionEnum;
+import org.etsi.tfs.ztp.context.model.ConfigRule;
+import org.etsi.tfs.ztp.context.model.ConfigRuleCustom;
+import org.etsi.tfs.ztp.context.model.ConfigRuleTypeCustom;
+import org.etsi.tfs.ztp.context.model.Device;
+import org.etsi.tfs.ztp.context.model.DeviceConfig;
+import org.etsi.tfs.ztp.context.model.DeviceDriverEnum;
+import org.etsi.tfs.ztp.context.model.DeviceOperationalStatus;
+import org.etsi.tfs.ztp.context.model.EndPoint.EndPointBuilder;
+import org.etsi.tfs.ztp.context.model.EndPointId;
+import org.etsi.tfs.ztp.context.model.Location;
+import org.etsi.tfs.ztp.context.model.LocationTypeRegion;
+import org.etsi.tfs.ztp.context.model.TopologyId;
+import org.etsi.tfs.ztp.device.DeviceGateway;
+import org.etsi.tfs.ztp.kpi_sample_types.model.KpiSampleType;
+import org.etsi.tfs.ztp.model.DeviceRole;
+import org.etsi.tfs.ztp.model.DeviceRoleConfig;
+import org.etsi.tfs.ztp.model.DeviceRoleId;
+import org.etsi.tfs.ztp.model.DeviceRoleType;
 import org.jboss.logging.Logger;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
diff --git a/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java b/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java
index 85bc0d278365971bbf1bcb135d05fd8523392716..a25798b884d9006f9c1b218c133634784f8bf392 100644
--- a/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java
+++ b/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java
@@ -24504,6 +24504,568 @@ public final class ContextOuterClass {
 
   }
 
+  public interface LinkAttributesOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:context.LinkAttributes)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <code>float total_capacity_gbps = 1;</code>
+     * @return The totalCapacityGbps.
+     */
+    float getTotalCapacityGbps();
+
+    /**
+     * <code>float used_capacity_gbps = 2;</code>
+     * @return The usedCapacityGbps.
+     */
+    float getUsedCapacityGbps();
+  }
+  /**
+   * Protobuf type {@code context.LinkAttributes}
+   */
+  public static final class LinkAttributes extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:context.LinkAttributes)
+      LinkAttributesOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use LinkAttributes.newBuilder() to construct.
+    private LinkAttributes(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private LinkAttributes() {
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new LinkAttributes();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private LinkAttributes(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 13: {
+
+              totalCapacityGbps_ = input.readFloat();
+              break;
+            }
+            case 21: {
+
+              usedCapacityGbps_ = input.readFloat();
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return context.ContextOuterClass.internal_static_context_LinkAttributes_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              context.ContextOuterClass.LinkAttributes.class, context.ContextOuterClass.LinkAttributes.Builder.class);
+    }
+
+    public static final int TOTAL_CAPACITY_GBPS_FIELD_NUMBER = 1;
+    private float totalCapacityGbps_;
+    /**
+     * <code>float total_capacity_gbps = 1;</code>
+     * @return The totalCapacityGbps.
+     */
+    @java.lang.Override
+    public float getTotalCapacityGbps() {
+      return totalCapacityGbps_;
+    }
+
+    public static final int USED_CAPACITY_GBPS_FIELD_NUMBER = 2;
+    private float usedCapacityGbps_;
+    /**
+     * <code>float used_capacity_gbps = 2;</code>
+     * @return The usedCapacityGbps.
+     */
+    @java.lang.Override
+    public float getUsedCapacityGbps() {
+      return usedCapacityGbps_;
+    }
+
+    private byte memoizedIsInitialized = -1;
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      if (totalCapacityGbps_ != 0F) {
+        output.writeFloat(1, totalCapacityGbps_);
+      }
+      if (usedCapacityGbps_ != 0F) {
+        output.writeFloat(2, usedCapacityGbps_);
+      }
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (totalCapacityGbps_ != 0F) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeFloatSize(1, totalCapacityGbps_);
+      }
+      if (usedCapacityGbps_ != 0F) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeFloatSize(2, usedCapacityGbps_);
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof context.ContextOuterClass.LinkAttributes)) {
+        return super.equals(obj);
+      }
+      context.ContextOuterClass.LinkAttributes other = (context.ContextOuterClass.LinkAttributes) obj;
+
+      if (java.lang.Float.floatToIntBits(getTotalCapacityGbps())
+          != java.lang.Float.floatToIntBits(
+              other.getTotalCapacityGbps())) return false;
+      if (java.lang.Float.floatToIntBits(getUsedCapacityGbps())
+          != java.lang.Float.floatToIntBits(
+              other.getUsedCapacityGbps())) return false;
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (37 * hash) + TOTAL_CAPACITY_GBPS_FIELD_NUMBER;
+      hash = (53 * hash) + java.lang.Float.floatToIntBits(
+          getTotalCapacityGbps());
+      hash = (37 * hash) + USED_CAPACITY_GBPS_FIELD_NUMBER;
+      hash = (53 * hash) + java.lang.Float.floatToIntBits(
+          getUsedCapacityGbps());
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static context.ContextOuterClass.LinkAttributes parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(context.ContextOuterClass.LinkAttributes prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code context.LinkAttributes}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:context.LinkAttributes)
+        context.ContextOuterClass.LinkAttributesOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return context.ContextOuterClass.internal_static_context_LinkAttributes_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                context.ContextOuterClass.LinkAttributes.class, context.ContextOuterClass.LinkAttributes.Builder.class);
+      }
+
+      // Construct using context.ContextOuterClass.LinkAttributes.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+        }
+      }
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        totalCapacityGbps_ = 0F;
+
+        usedCapacityGbps_ = 0F;
+
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return context.ContextOuterClass.internal_static_context_LinkAttributes_descriptor;
+      }
+
+      @java.lang.Override
+      public context.ContextOuterClass.LinkAttributes getDefaultInstanceForType() {
+        return context.ContextOuterClass.LinkAttributes.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public context.ContextOuterClass.LinkAttributes build() {
+        context.ContextOuterClass.LinkAttributes result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public context.ContextOuterClass.LinkAttributes buildPartial() {
+        context.ContextOuterClass.LinkAttributes result = new context.ContextOuterClass.LinkAttributes(this);
+        result.totalCapacityGbps_ = totalCapacityGbps_;
+        result.usedCapacityGbps_ = usedCapacityGbps_;
+        onBuilt();
+        return result;
+      }
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof context.ContextOuterClass.LinkAttributes) {
+          return mergeFrom((context.ContextOuterClass.LinkAttributes)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(context.ContextOuterClass.LinkAttributes other) {
+        if (other == context.ContextOuterClass.LinkAttributes.getDefaultInstance()) return this;
+        if (other.getTotalCapacityGbps() != 0F) {
+          setTotalCapacityGbps(other.getTotalCapacityGbps());
+        }
+        if (other.getUsedCapacityGbps() != 0F) {
+          setUsedCapacityGbps(other.getUsedCapacityGbps());
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        context.ContextOuterClass.LinkAttributes parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (context.ContextOuterClass.LinkAttributes) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+
+      private float totalCapacityGbps_ ;
+      /**
+       * <code>float total_capacity_gbps = 1;</code>
+       * @return The totalCapacityGbps.
+       */
+      @java.lang.Override
+      public float getTotalCapacityGbps() {
+        return totalCapacityGbps_;
+      }
+      /**
+       * <code>float total_capacity_gbps = 1;</code>
+       * @param value The totalCapacityGbps to set.
+       * @return This builder for chaining.
+       */
+      public Builder setTotalCapacityGbps(float value) {
+        
+        totalCapacityGbps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>float total_capacity_gbps = 1;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearTotalCapacityGbps() {
+        
+        totalCapacityGbps_ = 0F;
+        onChanged();
+        return this;
+      }
+
+      private float usedCapacityGbps_ ;
+      /**
+       * <code>float used_capacity_gbps = 2;</code>
+       * @return The usedCapacityGbps.
+       */
+      @java.lang.Override
+      public float getUsedCapacityGbps() {
+        return usedCapacityGbps_;
+      }
+      /**
+       * <code>float used_capacity_gbps = 2;</code>
+       * @param value The usedCapacityGbps to set.
+       * @return This builder for chaining.
+       */
+      public Builder setUsedCapacityGbps(float value) {
+        
+        usedCapacityGbps_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>float used_capacity_gbps = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearUsedCapacityGbps() {
+        
+        usedCapacityGbps_ = 0F;
+        onChanged();
+        return this;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:context.LinkAttributes)
+    }
+
+    // @@protoc_insertion_point(class_scope:context.LinkAttributes)
+    private static final context.ContextOuterClass.LinkAttributes DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new context.ContextOuterClass.LinkAttributes();
+    }
+
+    public static context.ContextOuterClass.LinkAttributes getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static final com.google.protobuf.Parser<LinkAttributes>
+        PARSER = new com.google.protobuf.AbstractParser<LinkAttributes>() {
+      @java.lang.Override
+      public LinkAttributes parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new LinkAttributes(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<LinkAttributes> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<LinkAttributes> getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public context.ContextOuterClass.LinkAttributes getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
   public interface LinkOrBuilder extends
       // @@protoc_insertion_point(interface_extends:context.Link)
       com.google.protobuf.MessageOrBuilder {
@@ -24558,6 +25120,21 @@ public final class ContextOuterClass {
      */
     context.ContextOuterClass.EndPointIdOrBuilder getLinkEndpointIdsOrBuilder(
         int index);
+
+    /**
+     * <code>.context.LinkAttributes attributes = 4;</code>
+     * @return Whether the attributes field is set.
+     */
+    boolean hasAttributes();
+    /**
+     * <code>.context.LinkAttributes attributes = 4;</code>
+     * @return The attributes.
+     */
+    context.ContextOuterClass.LinkAttributes getAttributes();
+    /**
+     * <code>.context.LinkAttributes attributes = 4;</code>
+     */
+    context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder();
   }
   /**
    * Protobuf type {@code context.Link}
@@ -24635,6 +25212,19 @@ public final class ContextOuterClass {
                   input.readMessage(context.ContextOuterClass.EndPointId.parser(), extensionRegistry));
               break;
             }
+            case 34: {
+              context.ContextOuterClass.LinkAttributes.Builder subBuilder = null;
+              if (attributes_ != null) {
+                subBuilder = attributes_.toBuilder();
+              }
+              attributes_ = input.readMessage(context.ContextOuterClass.LinkAttributes.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(attributes_);
+                attributes_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -24774,6 +25364,32 @@ public final class ContextOuterClass {
       return linkEndpointIds_.get(index);
     }
 
+    public static final int ATTRIBUTES_FIELD_NUMBER = 4;
+    private context.ContextOuterClass.LinkAttributes attributes_;
+    /**
+     * <code>.context.LinkAttributes attributes = 4;</code>
+     * @return Whether the attributes field is set.
+     */
+    @java.lang.Override
+    public boolean hasAttributes() {
+      return attributes_ != null;
+    }
+    /**
+     * <code>.context.LinkAttributes attributes = 4;</code>
+     * @return The attributes.
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.LinkAttributes getAttributes() {
+      return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
+    }
+    /**
+     * <code>.context.LinkAttributes attributes = 4;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder() {
+      return getAttributes();
+    }
+
     private byte memoizedIsInitialized = -1;
     @java.lang.Override
     public final boolean isInitialized() {
@@ -24797,6 +25413,9 @@ public final class ContextOuterClass {
       for (int i = 0; i < linkEndpointIds_.size(); i++) {
         output.writeMessage(3, linkEndpointIds_.get(i));
       }
+      if (attributes_ != null) {
+        output.writeMessage(4, getAttributes());
+      }
       unknownFields.writeTo(output);
     }
 
@@ -24817,6 +25436,10 @@ public final class ContextOuterClass {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(3, linkEndpointIds_.get(i));
       }
+      if (attributes_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(4, getAttributes());
+      }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
@@ -24841,6 +25464,11 @@ public final class ContextOuterClass {
           .equals(other.getName())) return false;
       if (!getLinkEndpointIdsList()
           .equals(other.getLinkEndpointIdsList())) return false;
+      if (hasAttributes() != other.hasAttributes()) return false;
+      if (hasAttributes()) {
+        if (!getAttributes()
+            .equals(other.getAttributes())) return false;
+      }
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -24862,6 +25490,10 @@ public final class ContextOuterClass {
         hash = (37 * hash) + LINK_ENDPOINT_IDS_FIELD_NUMBER;
         hash = (53 * hash) + getLinkEndpointIdsList().hashCode();
       }
+      if (hasAttributes()) {
+        hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
+        hash = (53 * hash) + getAttributes().hashCode();
+      }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
@@ -25010,6 +25642,12 @@ public final class ContextOuterClass {
         } else {
           linkEndpointIdsBuilder_.clear();
         }
+        if (attributesBuilder_ == null) {
+          attributes_ = null;
+        } else {
+          attributes_ = null;
+          attributesBuilder_ = null;
+        }
         return this;
       }
 
@@ -25052,6 +25690,11 @@ public final class ContextOuterClass {
         } else {
           result.linkEndpointIds_ = linkEndpointIdsBuilder_.build();
         }
+        if (attributesBuilder_ == null) {
+          result.attributes_ = attributes_;
+        } else {
+          result.attributes_ = attributesBuilder_.build();
+        }
         onBuilt();
         return result;
       }
@@ -25133,6 +25776,9 @@ public final class ContextOuterClass {
             }
           }
         }
+        if (other.hasAttributes()) {
+          mergeAttributes(other.getAttributes());
+        }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
@@ -25597,6 +26243,125 @@ public final class ContextOuterClass {
         }
         return linkEndpointIdsBuilder_;
       }
+
+      private context.ContextOuterClass.LinkAttributes attributes_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.LinkAttributes, context.ContextOuterClass.LinkAttributes.Builder, context.ContextOuterClass.LinkAttributesOrBuilder> attributesBuilder_;
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       * @return Whether the attributes field is set.
+       */
+      public boolean hasAttributes() {
+        return attributesBuilder_ != null || attributes_ != null;
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       * @return The attributes.
+       */
+      public context.ContextOuterClass.LinkAttributes getAttributes() {
+        if (attributesBuilder_ == null) {
+          return attributes_ == null ? context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
+        } else {
+          return attributesBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       */
+      public Builder setAttributes(context.ContextOuterClass.LinkAttributes value) {
+        if (attributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          attributes_ = value;
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       */
+      public Builder setAttributes(
+          context.ContextOuterClass.LinkAttributes.Builder builderForValue) {
+        if (attributesBuilder_ == null) {
+          attributes_ = builderForValue.build();
+          onChanged();
+        } else {
+          attributesBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       */
+      public Builder mergeAttributes(context.ContextOuterClass.LinkAttributes value) {
+        if (attributesBuilder_ == null) {
+          if (attributes_ != null) {
+            attributes_ =
+              context.ContextOuterClass.LinkAttributes.newBuilder(attributes_).mergeFrom(value).buildPartial();
+          } else {
+            attributes_ = value;
+          }
+          onChanged();
+        } else {
+          attributesBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       */
+      public Builder clearAttributes() {
+        if (attributesBuilder_ == null) {
+          attributes_ = null;
+          onChanged();
+        } else {
+          attributes_ = null;
+          attributesBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       */
+      public context.ContextOuterClass.LinkAttributes.Builder getAttributesBuilder() {
+        
+        onChanged();
+        return getAttributesFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       */
+      public context.ContextOuterClass.LinkAttributesOrBuilder getAttributesOrBuilder() {
+        if (attributesBuilder_ != null) {
+          return attributesBuilder_.getMessageOrBuilder();
+        } else {
+          return attributes_ == null ?
+              context.ContextOuterClass.LinkAttributes.getDefaultInstance() : attributes_;
+        }
+      }
+      /**
+       * <code>.context.LinkAttributes attributes = 4;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.LinkAttributes, context.ContextOuterClass.LinkAttributes.Builder, context.ContextOuterClass.LinkAttributesOrBuilder> 
+          getAttributesFieldBuilder() {
+        if (attributesBuilder_ == null) {
+          attributesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.LinkAttributes, context.ContextOuterClass.LinkAttributes.Builder, context.ContextOuterClass.LinkAttributesOrBuilder>(
+                  getAttributes(),
+                  getParentForChildren(),
+                  isClean());
+          attributes_ = null;
+        }
+        return attributesBuilder_;
+      }
       @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
@@ -74566,6 +75331,11 @@ public final class ContextOuterClass {
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_context_LinkId_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_context_LinkAttributes_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_context_LinkAttributes_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_context_Link_descriptor;
   private static final 
@@ -74899,268 +75669,271 @@ public final class ContextOuterClass {
       "nt\030\001 \001(\0132\016.context.Event\022$\n\tdevice_id\030\002 " +
       "\001(\0132\021.context.DeviceId\022,\n\rdevice_config\030" +
       "\003 \001(\0132\025.context.DeviceConfig\"*\n\006LinkId\022 " +
-      "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"f\n\004Link" +
-      "\022 \n\007link_id\030\001 \001(\0132\017.context.LinkId\022\014\n\004na" +
-      "me\030\002 \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132\023.co" +
-      "ntext.EndPointId\"/\n\nLinkIdList\022!\n\010link_i" +
-      "ds\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034\n" +
-      "\005links\030\001 \003(\0132\r.context.Link\"L\n\tLinkEvent" +
-      "\022\035\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link_" +
-      "id\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022&" +
-      "\n\ncontext_id\030\001 \001(\0132\022.context.ContextId\022#" +
-      "\n\014service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n\007" +
-      "Service\022&\n\nservice_id\030\001 \001(\0132\022.context.Se" +
-      "rviceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003 " +
-      "\001(\0162\030.context.ServiceTypeEnum\0221\n\024service" +
-      "_endpoint_ids\030\004 \003(\0132\023.context.EndPointId" +
-      "\0220\n\023service_constraints\030\005 \003(\0132\023.context." +
-      "Constraint\022.\n\016service_status\030\006 \001(\0132\026.con" +
-      "text.ServiceStatus\022.\n\016service_config\030\007 \001" +
-      "(\0132\026.context.ServiceConfig\022%\n\ttimestamp\030" +
-      "\010 \001(\0132\022.context.Timestamp\"C\n\rServiceStat" +
-      "us\0222\n\016service_status\030\001 \001(\0162\032.context.Ser" +
-      "viceStatusEnum\":\n\rServiceConfig\022)\n\014confi" +
-      "g_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rSe" +
-      "rviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.conte" +
-      "xt.ServiceId\"1\n\013ServiceList\022\"\n\010services\030" +
-      "\001 \003(\0132\020.context.Service\"\225\001\n\rServiceFilte" +
-      "r\022+\n\013service_ids\030\001 \001(\0132\026.context.Service" +
-      "IdList\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n\023" +
-      "include_constraints\030\003 \001(\010\022\034\n\024include_con" +
-      "fig_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005event" +
-      "\030\001 \001(\0132\016.context.Event\022&\n\nservice_id\030\002 \001" +
-      "(\0132\022.context.ServiceId\"T\n\007SliceId\022&\n\ncon" +
-      "text_id\030\001 \001(\0132\022.context.ContextId\022!\n\nsli" +
-      "ce_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022\"" +
-      "\n\010slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004na" +
-      "me\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023.c" +
-      "ontext.EndPointId\022.\n\021slice_constraints\030\004" +
-      " \003(\0132\023.context.Constraint\022-\n\021slice_servi" +
-      "ce_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022slic" +
-      "e_subslice_ids\030\006 \003(\0132\020.context.SliceId\022*" +
-      "\n\014slice_status\030\007 \001(\0132\024.context.SliceStat" +
-      "us\022*\n\014slice_config\030\010 \001(\0132\024.context.Slice" +
-      "Config\022(\n\013slice_owner\030\t \001(\0132\023.context.Sl" +
-      "iceOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.Ti" +
-      "mestamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001(" +
-      "\0132\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"=" +
-      "\n\013SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.co" +
-      "ntext.SliceStatusEnum\"8\n\013SliceConfig\022)\n\014" +
-      "config_rules\030\001 \003(\0132\023.context.ConfigRule\"" +
-      "2\n\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.cont" +
-      "ext.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(\013" +
-      "2\016.context.Slice\"\312\001\n\013SliceFilter\022\'\n\tslic" +
-      "e_ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024inc" +
-      "lude_endpoint_ids\030\002 \001(\010\022\033\n\023include_const" +
-      "raints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001(" +
-      "\010\022\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024inclu" +
-      "de_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005e" +
-      "vent\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030\002" +
-      " \001(\0132\020.context.SliceId\"6\n\014ConnectionId\022&" +
-      "\n\017connection_uuid\030\001 \001(\0132\r.context.Uuid\"2" +
-      "\n\025ConnectionSettings_L0\022\031\n\021lsp_symbolic_" +
-      "name\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n\017" +
-      "src_mac_address\030\001 \001(\t\022\027\n\017dst_mac_address" +
-      "\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004 " +
-      "\001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic_" +
-      "class\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n\016" +
-      "src_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030\002" +
-      " \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n\003" +
-      "ttl\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010sr" +
-      "c_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_fl" +
-      "ags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSet" +
-      "tings\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionSe" +
-      "ttings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connecti" +
-      "onSettings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Conn" +
-      "ectionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context." +
-      "ConnectionSettings_L4\"\363\001\n\nConnection\022,\n\r" +
-      "connection_id\030\001 \001(\0132\025.context.Connection" +
-      "Id\022&\n\nservice_id\030\002 \001(\0132\022.context.Service" +
-      "Id\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.con" +
-      "text.EndPointId\022+\n\017sub_service_ids\030\004 \003(\013" +
-      "2\022.context.ServiceId\022-\n\010settings\030\005 \001(\0132\033" +
-      ".context.ConnectionSettings\"A\n\020Connectio" +
-      "nIdList\022-\n\016connection_ids\030\001 \003(\0132\025.contex" +
-      "t.ConnectionId\":\n\016ConnectionList\022(\n\013conn" +
-      "ections\030\001 \003(\0132\023.context.Connection\"^\n\017Co" +
-      "nnectionEvent\022\035\n\005event\030\001 \001(\0132\016.context.E" +
-      "vent\022,\n\rconnection_id\030\002 \001(\0132\025.context.Co" +
-      "nnectionId\"\202\001\n\nEndPointId\022(\n\013topology_id" +
-      "\030\001 \001(\0132\023.context.TopologyId\022$\n\tdevice_id" +
-      "\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpoint_uu" +
-      "id\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010EndPoint\022(\n\013" +
-      "endpoint_id\030\001 \001(\0132\023.context.EndPointId\022\014" +
-      "\n\004name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020k" +
-      "pi_sample_types\030\004 \003(\0162\037.kpi_sample_types" +
-      ".KpiSampleType\022,\n\021endpoint_location\030\005 \001(" +
-      "\0132\021.context.Location\"{\n\014EndPointName\022(\n\013" +
-      "endpoint_id\030\001 \001(\0132\023.context.EndPointId\022\023" +
-      "\n\013device_name\030\002 \001(\t\022\025\n\rendpoint_name\030\003 \001" +
-      "(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016EndPointIdL" +
-      "ist\022)\n\014endpoint_ids\030\001 \003(\0132\023.context.EndP" +
-      "ointId\"A\n\020EndPointNameList\022-\n\016endpoint_n" +
-      "ames\030\001 \003(\0132\025.context.EndPointName\"A\n\021Con" +
-      "figRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022\026\n\016" +
-      "resource_value\030\002 \001(\t\"]\n\016ConfigRule_ACL\022(" +
-      "\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointId" +
-      "\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n\n" +
-      "ConfigRule\022)\n\006action\030\001 \001(\0162\031.context.Con" +
-      "figActionEnum\022,\n\006custom\030\002 \001(\0132\032.context." +
-      "ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.conte" +
-      "xt.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n\021Co" +
-      "nstraint_Custom\022\027\n\017constraint_type\030\001 \001(\t" +
-      "\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constraint" +
-      "_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n\rdu" +
-      "ration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010lat" +
-      "itude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Locati" +
-      "on\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030\002 \001" +
-      "(\0132\025.context.GPS_PositionH\000B\n\n\010location\"" +
-      "l\n\033Constraint_EndPointLocation\022(\n\013endpoi" +
-      "nt_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010loca" +
-      "tion\030\002 \001(\0132\021.context.Location\"Y\n\033Constra" +
-      "int_EndPointPriority\022(\n\013endpoint_id\030\001 \001(" +
-      "\0132\023.context.EndPointId\022\020\n\010priority\030\002 \001(\r" +
-      "\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_latenc" +
-      "y_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity\022\025\n" +
-      "\rcapacity_gbps\030\001 \001(\002\"c\n\033Constraint_SLA_A" +
-      "vailability\022\032\n\022num_disjoint_paths\030\001 \001(\r\022" +
-      "\022\n\nall_active\030\002 \001(\010\022\024\n\014availability\030\003 \001(" +
-      "\002\"V\n\036Constraint_SLA_Isolation_level\0224\n\017i" +
-      "solation_level\030\001 \003(\0162\033.context.Isolation" +
-      "LevelEnum\"\242\001\n\025Constraint_Exclusions\022\024\n\014i" +
-      "s_permanent\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021." +
-      "context.DeviceId\022)\n\014endpoint_ids\030\003 \003(\0132\023" +
-      ".context.EndPointId\022!\n\010link_ids\030\004 \003(\0132\017." +
-      "context.LinkId\"\333\004\n\nConstraint\022-\n\006action\030" +
-      "\001 \001(\0162\035.context.ConstraintActionEnum\022,\n\006" +
-      "custom\030\002 \001(\0132\032.context.Constraint_Custom" +
-      "H\000\0220\n\010schedule\030\003 \001(\0132\034.context.Constrain" +
-      "t_ScheduleH\000\022A\n\021endpoint_location\030\004 \001(\0132" +
-      "$.context.Constraint_EndPointLocationH\000\022" +
-      "A\n\021endpoint_priority\030\005 \001(\0132$.context.Con" +
-      "straint_EndPointPriorityH\000\0228\n\014sla_capaci" +
-      "ty\030\006 \001(\0132 .context.Constraint_SLA_Capaci" +
-      "tyH\000\0226\n\013sla_latency\030\007 \001(\0132\037.context.Cons" +
-      "traint_SLA_LatencyH\000\022@\n\020sla_availability" +
-      "\030\010 \001(\0132$.context.Constraint_SLA_Availabi" +
-      "lityH\000\022@\n\rsla_isolation\030\t \001(\0132\'.context." +
-      "Constraint_SLA_Isolation_levelH\000\0224\n\nexcl" +
-      "usions\030\n \001(\0132\036.context.Constraint_Exclus" +
-      "ionsH\000B\014\n\nconstraint\"^\n\022TeraFlowControll" +
-      "er\022&\n\ncontext_id\030\001 \001(\0132\022.context.Context" +
-      "Id\022\022\n\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n\024" +
-      "AuthenticationResult\022&\n\ncontext_id\030\001 \001(\013" +
-      "2\022.context.ContextId\022\025\n\rauthenticated\030\002 " +
-      "\001(\010*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UNDEFI" +
-      "NED\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTTYPE" +
-      "_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\231\002\n\020Devi" +
-      "ceDriverEnum\022\032\n\026DEVICEDRIVER_UNDEFINED\020\000" +
-      "\022\033\n\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVICED" +
-      "RIVER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER_P4" +
-      "\020\003\022&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOLOGY" +
-      "\020\004\022\033\n\027DEVICEDRIVER_ONF_TR_532\020\005\022\023\n\017DEVIC" +
-      "EDRIVER_XR\020\006\022\033\n\027DEVICEDRIVER_IETF_L2VPN\020" +
-      "\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010*\217\001\n\033" +
-      "DeviceOperationalStatusEnum\022%\n!DEVICEOPE" +
-      "RATIONALSTATUS_UNDEFINED\020\000\022$\n DEVICEOPER" +
-      "ATIONALSTATUS_DISABLED\020\001\022#\n\037DEVICEOPERAT" +
-      "IONALSTATUS_ENABLED\020\002*\225\001\n\017ServiceTypeEnu" +
-      "m\022\027\n\023SERVICETYPE_UNKNOWN\020\000\022\024\n\020SERVICETYP" +
-      "E_L3NM\020\001\022\024\n\020SERVICETYPE_L2NM\020\002\022)\n%SERVIC" +
-      "ETYPE_TAPI_CONNECTIVITY_SERVICE\020\003\022\022\n\016SER" +
-      "VICETYPE_TE\020\004*\304\001\n\021ServiceStatusEnum\022\033\n\027S" +
-      "ERVICESTATUS_UNDEFINED\020\000\022\031\n\025SERVICESTATU" +
-      "S_PLANNED\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022\032\n" +
-      "\026SERVICESTATUS_UPDATING\020\003\022!\n\035SERVICESTAT" +
-      "US_PENDING_REMOVAL\020\004\022\036\n\032SERVICESTATUS_SL" +
-      "A_VIOLATED\020\005*\251\001\n\017SliceStatusEnum\022\031\n\025SLIC" +
-      "ESTATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS_PLANN" +
-      "ED\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLICESTATU" +
-      "S_ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004\022\034\n\030SL" +
-      "ICESTATUS_SLA_VIOLATED\020\005*]\n\020ConfigAction" +
-      "Enum\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024\n\020CONF" +
-      "IGACTION_SET\020\001\022\027\n\023CONFIGACTION_DELETE\020\002*" +
-      "m\n\024ConstraintActionEnum\022\036\n\032CONSTRAINTACT" +
-      "ION_UNDEFINED\020\000\022\030\n\024CONSTRAINTACTION_SET\020" +
-      "\001\022\033\n\027CONSTRAINTACTION_DELETE\020\002*\203\002\n\022Isola" +
-      "tionLevelEnum\022\020\n\014NO_ISOLATION\020\000\022\026\n\022PHYSI" +
-      "CAL_ISOLATION\020\001\022\025\n\021LOGICAL_ISOLATION\020\002\022\025" +
-      "\n\021PROCESS_ISOLATION\020\003\022\035\n\031PHYSICAL_MEMORY" +
-      "_ISOLATION\020\004\022\036\n\032PHYSICAL_NETWORK_ISOLATI" +
-      "ON\020\005\022\036\n\032VIRTUAL_RESOURCE_ISOLATION\020\006\022\037\n\033" +
-      "NETWORK_FUNCTIONS_ISOLATION\020\007\022\025\n\021SERVICE" +
-      "_ISOLATION\020\0102\245\026\n\016ContextService\022:\n\016ListC" +
-      "ontextIds\022\016.context.Empty\032\026.context.Cont" +
-      "extIdList\"\000\0226\n\014ListContexts\022\016.context.Em" +
-      "pty\032\024.context.ContextList\"\000\0224\n\nGetContex" +
-      "t\022\022.context.ContextId\032\020.context.Context\"" +
-      "\000\0224\n\nSetContext\022\020.context.Context\032\022.cont" +
-      "ext.ContextId\"\000\0225\n\rRemoveContext\022\022.conte" +
-      "xt.ContextId\032\016.context.Empty\"\000\022=\n\020GetCon" +
-      "textEvents\022\016.context.Empty\032\025.context.Con" +
-      "textEvent\"\0000\001\022@\n\017ListTopologyIds\022\022.conte" +
-      "xt.ContextId\032\027.context.TopologyIdList\"\000\022" +
-      "=\n\016ListTopologies\022\022.context.ContextId\032\025." +
-      "context.TopologyList\"\000\0227\n\013GetTopology\022\023." +
-      "context.TopologyId\032\021.context.Topology\"\000\022" +
-      "E\n\022GetTopologyDetails\022\023.context.Topology" +
-      "Id\032\030.context.TopologyDetails\"\000\0227\n\013SetTop" +
-      "ology\022\021.context.Topology\032\023.context.Topol" +
-      "ogyId\"\000\0227\n\016RemoveTopology\022\023.context.Topo" +
-      "logyId\032\016.context.Empty\"\000\022?\n\021GetTopologyE" +
-      "vents\022\016.context.Empty\032\026.context.Topology" +
-      "Event\"\0000\001\0228\n\rListDeviceIds\022\016.context.Emp" +
-      "ty\032\025.context.DeviceIdList\"\000\0224\n\013ListDevic" +
-      "es\022\016.context.Empty\032\023.context.DeviceList\"" +
-      "\000\0221\n\tGetDevice\022\021.context.DeviceId\032\017.cont" +
-      "ext.Device\"\000\0221\n\tSetDevice\022\017.context.Devi" +
-      "ce\032\021.context.DeviceId\"\000\0223\n\014RemoveDevice\022" +
-      "\021.context.DeviceId\032\016.context.Empty\"\000\022;\n\017" +
-      "GetDeviceEvents\022\016.context.Empty\032\024.contex" +
-      "t.DeviceEvent\"\0000\001\022<\n\014SelectDevice\022\025.cont" +
-      "ext.DeviceFilter\032\023.context.DeviceList\"\000\022" +
-      "I\n\021ListEndPointNames\022\027.context.EndPointI" +
-      "dList\032\031.context.EndPointNameList\"\000\0224\n\013Li" +
-      "stLinkIds\022\016.context.Empty\032\023.context.Link" +
-      "IdList\"\000\0220\n\tListLinks\022\016.context.Empty\032\021." +
-      "context.LinkList\"\000\022+\n\007GetLink\022\017.context." +
-      "LinkId\032\r.context.Link\"\000\022+\n\007SetLink\022\r.con" +
-      "text.Link\032\017.context.LinkId\"\000\022/\n\nRemoveLi" +
-      "nk\022\017.context.LinkId\032\016.context.Empty\"\000\0227\n" +
-      "\rGetLinkEvents\022\016.context.Empty\032\022.context" +
-      ".LinkEvent\"\0000\001\022>\n\016ListServiceIds\022\022.conte" +
-      "xt.ContextId\032\026.context.ServiceIdList\"\000\022:" +
-      "\n\014ListServices\022\022.context.ContextId\032\024.con" +
-      "text.ServiceList\"\000\0224\n\nGetService\022\022.conte" +
-      "xt.ServiceId\032\020.context.Service\"\000\0224\n\nSetS" +
-      "ervice\022\020.context.Service\032\022.context.Servi" +
-      "ceId\"\000\0226\n\014UnsetService\022\020.context.Service" +
-      "\032\022.context.ServiceId\"\000\0225\n\rRemoveService\022" +
-      "\022.context.ServiceId\032\016.context.Empty\"\000\022=\n" +
-      "\020GetServiceEvents\022\016.context.Empty\032\025.cont" +
-      "ext.ServiceEvent\"\0000\001\022?\n\rSelectService\022\026." +
-      "context.ServiceFilter\032\024.context.ServiceL" +
-      "ist\"\000\022:\n\014ListSliceIds\022\022.context.ContextI" +
-      "d\032\024.context.SliceIdList\"\000\0226\n\nListSlices\022" +
-      "\022.context.ContextId\032\022.context.SliceList\"" +
-      "\000\022.\n\010GetSlice\022\020.context.SliceId\032\016.contex" +
-      "t.Slice\"\000\022.\n\010SetSlice\022\016.context.Slice\032\020." +
-      "context.SliceId\"\000\0220\n\nUnsetSlice\022\016.contex" +
-      "t.Slice\032\020.context.SliceId\"\000\0221\n\013RemoveSli" +
-      "ce\022\020.context.SliceId\032\016.context.Empty\"\000\0229" +
-      "\n\016GetSliceEvents\022\016.context.Empty\032\023.conte" +
-      "xt.SliceEvent\"\0000\001\0229\n\013SelectSlice\022\024.conte" +
-      "xt.SliceFilter\032\022.context.SliceList\"\000\022D\n\021" +
-      "ListConnectionIds\022\022.context.ServiceId\032\031." +
-      "context.ConnectionIdList\"\000\022@\n\017ListConnec" +
-      "tions\022\022.context.ServiceId\032\027.context.Conn" +
-      "ectionList\"\000\022=\n\rGetConnection\022\025.context." +
-      "ConnectionId\032\023.context.Connection\"\000\022=\n\rS" +
-      "etConnection\022\023.context.Connection\032\025.cont" +
-      "ext.ConnectionId\"\000\022;\n\020RemoveConnection\022\025" +
-      ".context.ConnectionId\032\016.context.Empty\"\000\022" +
-      "C\n\023GetConnectionEvents\022\016.context.Empty\032\030" +
-      ".context.ConnectionEvent\"\0000\001b\006proto3"
+      "\n\tlink_uuid\030\001 \001(\0132\r.context.Uuid\"I\n\016Link" +
+      "Attributes\022\033\n\023total_capacity_gbps\030\001 \001(\002\022" +
+      "\032\n\022used_capacity_gbps\030\002 \001(\002\"\223\001\n\004Link\022 \n\007" +
+      "link_id\030\001 \001(\0132\017.context.LinkId\022\014\n\004name\030\002" +
+      " \001(\t\022.\n\021link_endpoint_ids\030\003 \003(\0132\023.contex" +
+      "t.EndPointId\022+\n\nattributes\030\004 \001(\0132\027.conte" +
+      "xt.LinkAttributes\"/\n\nLinkIdList\022!\n\010link_" +
+      "ids\030\001 \003(\0132\017.context.LinkId\"(\n\010LinkList\022\034" +
+      "\n\005links\030\001 \003(\0132\r.context.Link\"L\n\tLinkEven" +
+      "t\022\035\n\005event\030\001 \001(\0132\016.context.Event\022 \n\007link" +
+      "_id\030\002 \001(\0132\017.context.LinkId\"X\n\tServiceId\022" +
+      "&\n\ncontext_id\030\001 \001(\0132\022.context.ContextId\022" +
+      "#\n\014service_uuid\030\002 \001(\0132\r.context.Uuid\"\333\002\n" +
+      "\007Service\022&\n\nservice_id\030\001 \001(\0132\022.context.S" +
+      "erviceId\022\014\n\004name\030\002 \001(\t\022.\n\014service_type\030\003" +
+      " \001(\0162\030.context.ServiceTypeEnum\0221\n\024servic" +
+      "e_endpoint_ids\030\004 \003(\0132\023.context.EndPointI" +
+      "d\0220\n\023service_constraints\030\005 \003(\0132\023.context" +
+      ".Constraint\022.\n\016service_status\030\006 \001(\0132\026.co" +
+      "ntext.ServiceStatus\022.\n\016service_config\030\007 " +
+      "\001(\0132\026.context.ServiceConfig\022%\n\ttimestamp" +
+      "\030\010 \001(\0132\022.context.Timestamp\"C\n\rServiceSta" +
+      "tus\0222\n\016service_status\030\001 \001(\0162\032.context.Se" +
+      "rviceStatusEnum\":\n\rServiceConfig\022)\n\014conf" +
+      "ig_rules\030\001 \003(\0132\023.context.ConfigRule\"8\n\rS" +
+      "erviceIdList\022\'\n\013service_ids\030\001 \003(\0132\022.cont" +
+      "ext.ServiceId\"1\n\013ServiceList\022\"\n\010services" +
+      "\030\001 \003(\0132\020.context.Service\"\225\001\n\rServiceFilt" +
+      "er\022+\n\013service_ids\030\001 \001(\0132\026.context.Servic" +
+      "eIdList\022\034\n\024include_endpoint_ids\030\002 \001(\010\022\033\n" +
+      "\023include_constraints\030\003 \001(\010\022\034\n\024include_co" +
+      "nfig_rules\030\004 \001(\010\"U\n\014ServiceEvent\022\035\n\005even" +
+      "t\030\001 \001(\0132\016.context.Event\022&\n\nservice_id\030\002 " +
+      "\001(\0132\022.context.ServiceId\"T\n\007SliceId\022&\n\nco" +
+      "ntext_id\030\001 \001(\0132\022.context.ContextId\022!\n\nsl" +
+      "ice_uuid\030\002 \001(\0132\r.context.Uuid\"\240\003\n\005Slice\022" +
+      "\"\n\010slice_id\030\001 \001(\0132\020.context.SliceId\022\014\n\004n" +
+      "ame\030\002 \001(\t\022/\n\022slice_endpoint_ids\030\003 \003(\0132\023." +
+      "context.EndPointId\022.\n\021slice_constraints\030" +
+      "\004 \003(\0132\023.context.Constraint\022-\n\021slice_serv" +
+      "ice_ids\030\005 \003(\0132\022.context.ServiceId\022,\n\022sli" +
+      "ce_subslice_ids\030\006 \003(\0132\020.context.SliceId\022" +
+      "*\n\014slice_status\030\007 \001(\0132\024.context.SliceSta" +
+      "tus\022*\n\014slice_config\030\010 \001(\0132\024.context.Slic" +
+      "eConfig\022(\n\013slice_owner\030\t \001(\0132\023.context.S" +
+      "liceOwner\022%\n\ttimestamp\030\n \001(\0132\022.context.T" +
+      "imestamp\"E\n\nSliceOwner\022!\n\nowner_uuid\030\001 \001" +
+      "(\0132\r.context.Uuid\022\024\n\014owner_string\030\002 \001(\t\"" +
+      "=\n\013SliceStatus\022.\n\014slice_status\030\001 \001(\0162\030.c" +
+      "ontext.SliceStatusEnum\"8\n\013SliceConfig\022)\n" +
+      "\014config_rules\030\001 \003(\0132\023.context.ConfigRule" +
+      "\"2\n\013SliceIdList\022#\n\tslice_ids\030\001 \003(\0132\020.con" +
+      "text.SliceId\"+\n\tSliceList\022\036\n\006slices\030\001 \003(" +
+      "\0132\016.context.Slice\"\312\001\n\013SliceFilter\022\'\n\tsli" +
+      "ce_ids\030\001 \001(\0132\024.context.SliceIdList\022\034\n\024in" +
+      "clude_endpoint_ids\030\002 \001(\010\022\033\n\023include_cons" +
+      "traints\030\003 \001(\010\022\033\n\023include_service_ids\030\004 \001" +
+      "(\010\022\034\n\024include_subslice_ids\030\005 \001(\010\022\034\n\024incl" +
+      "ude_config_rules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005" +
+      "event\030\001 \001(\0132\016.context.Event\022\"\n\010slice_id\030" +
+      "\002 \001(\0132\020.context.SliceId\"6\n\014ConnectionId\022" +
+      "&\n\017connection_uuid\030\001 \001(\0132\r.context.Uuid\"" +
+      "2\n\025ConnectionSettings_L0\022\031\n\021lsp_symbolic" +
+      "_name\030\001 \001(\t\"\236\001\n\025ConnectionSettings_L2\022\027\n" +
+      "\017src_mac_address\030\001 \001(\t\022\027\n\017dst_mac_addres" +
+      "s\030\002 \001(\t\022\022\n\nether_type\030\003 \001(\r\022\017\n\007vlan_id\030\004" +
+      " \001(\r\022\022\n\nmpls_label\030\005 \001(\r\022\032\n\022mpls_traffic" +
+      "_class\030\006 \001(\r\"t\n\025ConnectionSettings_L3\022\026\n" +
+      "\016src_ip_address\030\001 \001(\t\022\026\n\016dst_ip_address\030" +
+      "\002 \001(\t\022\014\n\004dscp\030\003 \001(\r\022\020\n\010protocol\030\004 \001(\r\022\013\n" +
+      "\003ttl\030\005 \001(\r\"[\n\025ConnectionSettings_L4\022\020\n\010s" +
+      "rc_port\030\001 \001(\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_f" +
+      "lags\030\003 \001(\r\022\013\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSe" +
+      "ttings\022*\n\002l0\030\001 \001(\0132\036.context.ConnectionS" +
+      "ettings_L0\022*\n\002l2\030\002 \001(\0132\036.context.Connect" +
+      "ionSettings_L2\022*\n\002l3\030\003 \001(\0132\036.context.Con" +
+      "nectionSettings_L3\022*\n\002l4\030\004 \001(\0132\036.context" +
+      ".ConnectionSettings_L4\"\363\001\n\nConnection\022,\n" +
+      "\rconnection_id\030\001 \001(\0132\025.context.Connectio" +
+      "nId\022&\n\nservice_id\030\002 \001(\0132\022.context.Servic" +
+      "eId\0223\n\026path_hops_endpoint_ids\030\003 \003(\0132\023.co" +
+      "ntext.EndPointId\022+\n\017sub_service_ids\030\004 \003(" +
+      "\0132\022.context.ServiceId\022-\n\010settings\030\005 \001(\0132" +
+      "\033.context.ConnectionSettings\"A\n\020Connecti" +
+      "onIdList\022-\n\016connection_ids\030\001 \003(\0132\025.conte" +
+      "xt.ConnectionId\":\n\016ConnectionList\022(\n\013con" +
+      "nections\030\001 \003(\0132\023.context.Connection\"^\n\017C" +
+      "onnectionEvent\022\035\n\005event\030\001 \001(\0132\016.context." +
+      "Event\022,\n\rconnection_id\030\002 \001(\0132\025.context.C" +
+      "onnectionId\"\202\001\n\nEndPointId\022(\n\013topology_i" +
+      "d\030\001 \001(\0132\023.context.TopologyId\022$\n\tdevice_i" +
+      "d\030\002 \001(\0132\021.context.DeviceId\022$\n\rendpoint_u" +
+      "uid\030\003 \001(\0132\r.context.Uuid\"\302\001\n\010EndPoint\022(\n" +
+      "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" +
+      "\014\n\004name\030\002 \001(\t\022\025\n\rendpoint_type\030\003 \001(\t\0229\n\020" +
+      "kpi_sample_types\030\004 \003(\0162\037.kpi_sample_type" +
+      "s.KpiSampleType\022,\n\021endpoint_location\030\005 \001" +
+      "(\0132\021.context.Location\"{\n\014EndPointName\022(\n" +
+      "\013endpoint_id\030\001 \001(\0132\023.context.EndPointId\022" +
+      "\023\n\013device_name\030\002 \001(\t\022\025\n\rendpoint_name\030\003 " +
+      "\001(\t\022\025\n\rendpoint_type\030\004 \001(\t\";\n\016EndPointId" +
+      "List\022)\n\014endpoint_ids\030\001 \003(\0132\023.context.End" +
+      "PointId\"A\n\020EndPointNameList\022-\n\016endpoint_" +
+      "names\030\001 \003(\0132\025.context.EndPointName\"A\n\021Co" +
+      "nfigRule_Custom\022\024\n\014resource_key\030\001 \001(\t\022\026\n" +
+      "\016resource_value\030\002 \001(\t\"]\n\016ConfigRule_ACL\022" +
+      "(\n\013endpoint_id\030\001 \001(\0132\023.context.EndPointI" +
+      "d\022!\n\010rule_set\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n" +
+      "\nConfigRule\022)\n\006action\030\001 \001(\0162\031.context.Co" +
+      "nfigActionEnum\022,\n\006custom\030\002 \001(\0132\032.context" +
+      ".ConfigRule_CustomH\000\022&\n\003acl\030\003 \001(\0132\027.cont" +
+      "ext.ConfigRule_ACLH\000B\r\n\013config_rule\"F\n\021C" +
+      "onstraint_Custom\022\027\n\017constraint_type\030\001 \001(" +
+      "\t\022\030\n\020constraint_value\030\002 \001(\t\"E\n\023Constrain" +
+      "t_Schedule\022\027\n\017start_timestamp\030\001 \001(\002\022\025\n\rd" +
+      "uration_days\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010la" +
+      "titude\030\001 \001(\002\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Locat" +
+      "ion\022\020\n\006region\030\001 \001(\tH\000\022-\n\014gps_position\030\002 " +
+      "\001(\0132\025.context.GPS_PositionH\000B\n\n\010location" +
+      "\"l\n\033Constraint_EndPointLocation\022(\n\013endpo" +
+      "int_id\030\001 \001(\0132\023.context.EndPointId\022#\n\010loc" +
+      "ation\030\002 \001(\0132\021.context.Location\"Y\n\033Constr" +
+      "aint_EndPointPriority\022(\n\013endpoint_id\030\001 \001" +
+      "(\0132\023.context.EndPointId\022\020\n\010priority\030\002 \001(" +
+      "\r\"0\n\026Constraint_SLA_Latency\022\026\n\016e2e_laten" +
+      "cy_ms\030\001 \001(\002\"0\n\027Constraint_SLA_Capacity\022\025" +
+      "\n\rcapacity_gbps\030\001 \001(\002\"c\n\033Constraint_SLA_" +
+      "Availability\022\032\n\022num_disjoint_paths\030\001 \001(\r" +
+      "\022\022\n\nall_active\030\002 \001(\010\022\024\n\014availability\030\003 \001" +
+      "(\002\"V\n\036Constraint_SLA_Isolation_level\0224\n\017" +
+      "isolation_level\030\001 \003(\0162\033.context.Isolatio" +
+      "nLevelEnum\"\242\001\n\025Constraint_Exclusions\022\024\n\014" +
+      "is_permanent\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021" +
+      ".context.DeviceId\022)\n\014endpoint_ids\030\003 \003(\0132" +
+      "\023.context.EndPointId\022!\n\010link_ids\030\004 \003(\0132\017" +
+      ".context.LinkId\"\333\004\n\nConstraint\022-\n\006action" +
+      "\030\001 \001(\0162\035.context.ConstraintActionEnum\022,\n" +
+      "\006custom\030\002 \001(\0132\032.context.Constraint_Custo" +
+      "mH\000\0220\n\010schedule\030\003 \001(\0132\034.context.Constrai" +
+      "nt_ScheduleH\000\022A\n\021endpoint_location\030\004 \001(\013" +
+      "2$.context.Constraint_EndPointLocationH\000" +
+      "\022A\n\021endpoint_priority\030\005 \001(\0132$.context.Co" +
+      "nstraint_EndPointPriorityH\000\0228\n\014sla_capac" +
+      "ity\030\006 \001(\0132 .context.Constraint_SLA_Capac" +
+      "ityH\000\0226\n\013sla_latency\030\007 \001(\0132\037.context.Con" +
+      "straint_SLA_LatencyH\000\022@\n\020sla_availabilit" +
+      "y\030\010 \001(\0132$.context.Constraint_SLA_Availab" +
+      "ilityH\000\022@\n\rsla_isolation\030\t \001(\0132\'.context" +
+      ".Constraint_SLA_Isolation_levelH\000\0224\n\nexc" +
+      "lusions\030\n \001(\0132\036.context.Constraint_Exclu" +
+      "sionsH\000B\014\n\nconstraint\"^\n\022TeraFlowControl" +
+      "ler\022&\n\ncontext_id\030\001 \001(\0132\022.context.Contex" +
+      "tId\022\022\n\nip_address\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n" +
+      "\024AuthenticationResult\022&\n\ncontext_id\030\001 \001(" +
+      "\0132\022.context.ContextId\022\025\n\rauthenticated\030\002" +
+      " \001(\010*j\n\rEventTypeEnum\022\027\n\023EVENTTYPE_UNDEF" +
+      "INED\020\000\022\024\n\020EVENTTYPE_CREATE\020\001\022\024\n\020EVENTTYP" +
+      "E_UPDATE\020\002\022\024\n\020EVENTTYPE_REMOVE\020\003*\231\002\n\020Dev" +
+      "iceDriverEnum\022\032\n\026DEVICEDRIVER_UNDEFINED\020" +
+      "\000\022\033\n\027DEVICEDRIVER_OPENCONFIG\020\001\022\036\n\032DEVICE" +
+      "DRIVER_TRANSPORT_API\020\002\022\023\n\017DEVICEDRIVER_P" +
+      "4\020\003\022&\n\"DEVICEDRIVER_IETF_NETWORK_TOPOLOG" +
+      "Y\020\004\022\033\n\027DEVICEDRIVER_ONF_TR_532\020\005\022\023\n\017DEVI" +
+      "CEDRIVER_XR\020\006\022\033\n\027DEVICEDRIVER_IETF_L2VPN" +
+      "\020\007\022 \n\034DEVICEDRIVER_GNMI_OPENCONFIG\020\010*\217\001\n" +
+      "\033DeviceOperationalStatusEnum\022%\n!DEVICEOP" +
+      "ERATIONALSTATUS_UNDEFINED\020\000\022$\n DEVICEOPE" +
+      "RATIONALSTATUS_DISABLED\020\001\022#\n\037DEVICEOPERA" +
+      "TIONALSTATUS_ENABLED\020\002*\225\001\n\017ServiceTypeEn" +
+      "um\022\027\n\023SERVICETYPE_UNKNOWN\020\000\022\024\n\020SERVICETY" +
+      "PE_L3NM\020\001\022\024\n\020SERVICETYPE_L2NM\020\002\022)\n%SERVI" +
+      "CETYPE_TAPI_CONNECTIVITY_SERVICE\020\003\022\022\n\016SE" +
+      "RVICETYPE_TE\020\004*\304\001\n\021ServiceStatusEnum\022\033\n\027" +
+      "SERVICESTATUS_UNDEFINED\020\000\022\031\n\025SERVICESTAT" +
+      "US_PLANNED\020\001\022\030\n\024SERVICESTATUS_ACTIVE\020\002\022\032" +
+      "\n\026SERVICESTATUS_UPDATING\020\003\022!\n\035SERVICESTA" +
+      "TUS_PENDING_REMOVAL\020\004\022\036\n\032SERVICESTATUS_S" +
+      "LA_VIOLATED\020\005*\251\001\n\017SliceStatusEnum\022\031\n\025SLI" +
+      "CESTATUS_UNDEFINED\020\000\022\027\n\023SLICESTATUS_PLAN" +
+      "NED\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022SLICESTAT" +
+      "US_ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINIT\020\004\022\034\n\030S" +
+      "LICESTATUS_SLA_VIOLATED\020\005*]\n\020ConfigActio" +
+      "nEnum\022\032\n\026CONFIGACTION_UNDEFINED\020\000\022\024\n\020CON" +
+      "FIGACTION_SET\020\001\022\027\n\023CONFIGACTION_DELETE\020\002" +
+      "*m\n\024ConstraintActionEnum\022\036\n\032CONSTRAINTAC" +
+      "TION_UNDEFINED\020\000\022\030\n\024CONSTRAINTACTION_SET" +
+      "\020\001\022\033\n\027CONSTRAINTACTION_DELETE\020\002*\203\002\n\022Isol" +
+      "ationLevelEnum\022\020\n\014NO_ISOLATION\020\000\022\026\n\022PHYS" +
+      "ICAL_ISOLATION\020\001\022\025\n\021LOGICAL_ISOLATION\020\002\022" +
+      "\025\n\021PROCESS_ISOLATION\020\003\022\035\n\031PHYSICAL_MEMOR" +
+      "Y_ISOLATION\020\004\022\036\n\032PHYSICAL_NETWORK_ISOLAT" +
+      "ION\020\005\022\036\n\032VIRTUAL_RESOURCE_ISOLATION\020\006\022\037\n" +
+      "\033NETWORK_FUNCTIONS_ISOLATION\020\007\022\025\n\021SERVIC" +
+      "E_ISOLATION\020\0102\245\026\n\016ContextService\022:\n\016List" +
+      "ContextIds\022\016.context.Empty\032\026.context.Con" +
+      "textIdList\"\000\0226\n\014ListContexts\022\016.context.E" +
+      "mpty\032\024.context.ContextList\"\000\0224\n\nGetConte" +
+      "xt\022\022.context.ContextId\032\020.context.Context" +
+      "\"\000\0224\n\nSetContext\022\020.context.Context\032\022.con" +
+      "text.ContextId\"\000\0225\n\rRemoveContext\022\022.cont" +
+      "ext.ContextId\032\016.context.Empty\"\000\022=\n\020GetCo" +
+      "ntextEvents\022\016.context.Empty\032\025.context.Co" +
+      "ntextEvent\"\0000\001\022@\n\017ListTopologyIds\022\022.cont" +
+      "ext.ContextId\032\027.context.TopologyIdList\"\000" +
+      "\022=\n\016ListTopologies\022\022.context.ContextId\032\025" +
+      ".context.TopologyList\"\000\0227\n\013GetTopology\022\023" +
+      ".context.TopologyId\032\021.context.Topology\"\000" +
+      "\022E\n\022GetTopologyDetails\022\023.context.Topolog" +
+      "yId\032\030.context.TopologyDetails\"\000\0227\n\013SetTo" +
+      "pology\022\021.context.Topology\032\023.context.Topo" +
+      "logyId\"\000\0227\n\016RemoveTopology\022\023.context.Top" +
+      "ologyId\032\016.context.Empty\"\000\022?\n\021GetTopology" +
+      "Events\022\016.context.Empty\032\026.context.Topolog" +
+      "yEvent\"\0000\001\0228\n\rListDeviceIds\022\016.context.Em" +
+      "pty\032\025.context.DeviceIdList\"\000\0224\n\013ListDevi" +
+      "ces\022\016.context.Empty\032\023.context.DeviceList" +
+      "\"\000\0221\n\tGetDevice\022\021.context.DeviceId\032\017.con" +
+      "text.Device\"\000\0221\n\tSetDevice\022\017.context.Dev" +
+      "ice\032\021.context.DeviceId\"\000\0223\n\014RemoveDevice" +
+      "\022\021.context.DeviceId\032\016.context.Empty\"\000\022;\n" +
+      "\017GetDeviceEvents\022\016.context.Empty\032\024.conte" +
+      "xt.DeviceEvent\"\0000\001\022<\n\014SelectDevice\022\025.con" +
+      "text.DeviceFilter\032\023.context.DeviceList\"\000" +
+      "\022I\n\021ListEndPointNames\022\027.context.EndPoint" +
+      "IdList\032\031.context.EndPointNameList\"\000\0224\n\013L" +
+      "istLinkIds\022\016.context.Empty\032\023.context.Lin" +
+      "kIdList\"\000\0220\n\tListLinks\022\016.context.Empty\032\021" +
+      ".context.LinkList\"\000\022+\n\007GetLink\022\017.context" +
+      ".LinkId\032\r.context.Link\"\000\022+\n\007SetLink\022\r.co" +
+      "ntext.Link\032\017.context.LinkId\"\000\022/\n\nRemoveL" +
+      "ink\022\017.context.LinkId\032\016.context.Empty\"\000\0227" +
+      "\n\rGetLinkEvents\022\016.context.Empty\032\022.contex" +
+      "t.LinkEvent\"\0000\001\022>\n\016ListServiceIds\022\022.cont" +
+      "ext.ContextId\032\026.context.ServiceIdList\"\000\022" +
+      ":\n\014ListServices\022\022.context.ContextId\032\024.co" +
+      "ntext.ServiceList\"\000\0224\n\nGetService\022\022.cont" +
+      "ext.ServiceId\032\020.context.Service\"\000\0224\n\nSet" +
+      "Service\022\020.context.Service\032\022.context.Serv" +
+      "iceId\"\000\0226\n\014UnsetService\022\020.context.Servic" +
+      "e\032\022.context.ServiceId\"\000\0225\n\rRemoveService" +
+      "\022\022.context.ServiceId\032\016.context.Empty\"\000\022=" +
+      "\n\020GetServiceEvents\022\016.context.Empty\032\025.con" +
+      "text.ServiceEvent\"\0000\001\022?\n\rSelectService\022\026" +
+      ".context.ServiceFilter\032\024.context.Service" +
+      "List\"\000\022:\n\014ListSliceIds\022\022.context.Context" +
+      "Id\032\024.context.SliceIdList\"\000\0226\n\nListSlices" +
+      "\022\022.context.ContextId\032\022.context.SliceList" +
+      "\"\000\022.\n\010GetSlice\022\020.context.SliceId\032\016.conte" +
+      "xt.Slice\"\000\022.\n\010SetSlice\022\016.context.Slice\032\020" +
+      ".context.SliceId\"\000\0220\n\nUnsetSlice\022\016.conte" +
+      "xt.Slice\032\020.context.SliceId\"\000\0221\n\013RemoveSl" +
+      "ice\022\020.context.SliceId\032\016.context.Empty\"\000\022" +
+      "9\n\016GetSliceEvents\022\016.context.Empty\032\023.cont" +
+      "ext.SliceEvent\"\0000\001\0229\n\013SelectSlice\022\024.cont" +
+      "ext.SliceFilter\032\022.context.SliceList\"\000\022D\n" +
+      "\021ListConnectionIds\022\022.context.ServiceId\032\031" +
+      ".context.ConnectionIdList\"\000\022@\n\017ListConne" +
+      "ctions\022\022.context.ServiceId\032\027.context.Con" +
+      "nectionList\"\000\022=\n\rGetConnection\022\025.context" +
+      ".ConnectionId\032\023.context.Connection\"\000\022=\n\r" +
+      "SetConnection\022\023.context.Connection\032\025.con" +
+      "text.ConnectionId\"\000\022;\n\020RemoveConnection\022" +
+      "\025.context.ConnectionId\032\016.context.Empty\"\000" +
+      "\022C\n\023GetConnectionEvents\022\016.context.Empty\032" +
+      "\030.context.ConnectionEvent\"\0000\001b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -75318,320 +76091,326 @@ public final class ContextOuterClass {
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_LinkId_descriptor,
         new java.lang.String[] { "LinkUuid", });
-    internal_static_context_Link_descriptor =
+    internal_static_context_LinkAttributes_descriptor =
       getDescriptor().getMessageTypes().get(24);
+    internal_static_context_LinkAttributes_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_context_LinkAttributes_descriptor,
+        new java.lang.String[] { "TotalCapacityGbps", "UsedCapacityGbps", });
+    internal_static_context_Link_descriptor =
+      getDescriptor().getMessageTypes().get(25);
     internal_static_context_Link_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Link_descriptor,
-        new java.lang.String[] { "LinkId", "Name", "LinkEndpointIds", });
+        new java.lang.String[] { "LinkId", "Name", "LinkEndpointIds", "Attributes", });
     internal_static_context_LinkIdList_descriptor =
-      getDescriptor().getMessageTypes().get(25);
+      getDescriptor().getMessageTypes().get(26);
     internal_static_context_LinkIdList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_LinkIdList_descriptor,
         new java.lang.String[] { "LinkIds", });
     internal_static_context_LinkList_descriptor =
-      getDescriptor().getMessageTypes().get(26);
+      getDescriptor().getMessageTypes().get(27);
     internal_static_context_LinkList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_LinkList_descriptor,
         new java.lang.String[] { "Links", });
     internal_static_context_LinkEvent_descriptor =
-      getDescriptor().getMessageTypes().get(27);
+      getDescriptor().getMessageTypes().get(28);
     internal_static_context_LinkEvent_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_LinkEvent_descriptor,
         new java.lang.String[] { "Event", "LinkId", });
     internal_static_context_ServiceId_descriptor =
-      getDescriptor().getMessageTypes().get(28);
+      getDescriptor().getMessageTypes().get(29);
     internal_static_context_ServiceId_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ServiceId_descriptor,
         new java.lang.String[] { "ContextId", "ServiceUuid", });
     internal_static_context_Service_descriptor =
-      getDescriptor().getMessageTypes().get(29);
+      getDescriptor().getMessageTypes().get(30);
     internal_static_context_Service_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Service_descriptor,
         new java.lang.String[] { "ServiceId", "Name", "ServiceType", "ServiceEndpointIds", "ServiceConstraints", "ServiceStatus", "ServiceConfig", "Timestamp", });
     internal_static_context_ServiceStatus_descriptor =
-      getDescriptor().getMessageTypes().get(30);
+      getDescriptor().getMessageTypes().get(31);
     internal_static_context_ServiceStatus_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ServiceStatus_descriptor,
         new java.lang.String[] { "ServiceStatus", });
     internal_static_context_ServiceConfig_descriptor =
-      getDescriptor().getMessageTypes().get(31);
+      getDescriptor().getMessageTypes().get(32);
     internal_static_context_ServiceConfig_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ServiceConfig_descriptor,
         new java.lang.String[] { "ConfigRules", });
     internal_static_context_ServiceIdList_descriptor =
-      getDescriptor().getMessageTypes().get(32);
+      getDescriptor().getMessageTypes().get(33);
     internal_static_context_ServiceIdList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ServiceIdList_descriptor,
         new java.lang.String[] { "ServiceIds", });
     internal_static_context_ServiceList_descriptor =
-      getDescriptor().getMessageTypes().get(33);
+      getDescriptor().getMessageTypes().get(34);
     internal_static_context_ServiceList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ServiceList_descriptor,
         new java.lang.String[] { "Services", });
     internal_static_context_ServiceFilter_descriptor =
-      getDescriptor().getMessageTypes().get(34);
+      getDescriptor().getMessageTypes().get(35);
     internal_static_context_ServiceFilter_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ServiceFilter_descriptor,
         new java.lang.String[] { "ServiceIds", "IncludeEndpointIds", "IncludeConstraints", "IncludeConfigRules", });
     internal_static_context_ServiceEvent_descriptor =
-      getDescriptor().getMessageTypes().get(35);
+      getDescriptor().getMessageTypes().get(36);
     internal_static_context_ServiceEvent_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ServiceEvent_descriptor,
         new java.lang.String[] { "Event", "ServiceId", });
     internal_static_context_SliceId_descriptor =
-      getDescriptor().getMessageTypes().get(36);
+      getDescriptor().getMessageTypes().get(37);
     internal_static_context_SliceId_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceId_descriptor,
         new java.lang.String[] { "ContextId", "SliceUuid", });
     internal_static_context_Slice_descriptor =
-      getDescriptor().getMessageTypes().get(37);
+      getDescriptor().getMessageTypes().get(38);
     internal_static_context_Slice_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Slice_descriptor,
         new java.lang.String[] { "SliceId", "Name", "SliceEndpointIds", "SliceConstraints", "SliceServiceIds", "SliceSubsliceIds", "SliceStatus", "SliceConfig", "SliceOwner", "Timestamp", });
     internal_static_context_SliceOwner_descriptor =
-      getDescriptor().getMessageTypes().get(38);
+      getDescriptor().getMessageTypes().get(39);
     internal_static_context_SliceOwner_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceOwner_descriptor,
         new java.lang.String[] { "OwnerUuid", "OwnerString", });
     internal_static_context_SliceStatus_descriptor =
-      getDescriptor().getMessageTypes().get(39);
+      getDescriptor().getMessageTypes().get(40);
     internal_static_context_SliceStatus_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceStatus_descriptor,
         new java.lang.String[] { "SliceStatus", });
     internal_static_context_SliceConfig_descriptor =
-      getDescriptor().getMessageTypes().get(40);
+      getDescriptor().getMessageTypes().get(41);
     internal_static_context_SliceConfig_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceConfig_descriptor,
         new java.lang.String[] { "ConfigRules", });
     internal_static_context_SliceIdList_descriptor =
-      getDescriptor().getMessageTypes().get(41);
+      getDescriptor().getMessageTypes().get(42);
     internal_static_context_SliceIdList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceIdList_descriptor,
         new java.lang.String[] { "SliceIds", });
     internal_static_context_SliceList_descriptor =
-      getDescriptor().getMessageTypes().get(42);
+      getDescriptor().getMessageTypes().get(43);
     internal_static_context_SliceList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceList_descriptor,
         new java.lang.String[] { "Slices", });
     internal_static_context_SliceFilter_descriptor =
-      getDescriptor().getMessageTypes().get(43);
+      getDescriptor().getMessageTypes().get(44);
     internal_static_context_SliceFilter_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceFilter_descriptor,
         new java.lang.String[] { "SliceIds", "IncludeEndpointIds", "IncludeConstraints", "IncludeServiceIds", "IncludeSubsliceIds", "IncludeConfigRules", });
     internal_static_context_SliceEvent_descriptor =
-      getDescriptor().getMessageTypes().get(44);
+      getDescriptor().getMessageTypes().get(45);
     internal_static_context_SliceEvent_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_SliceEvent_descriptor,
         new java.lang.String[] { "Event", "SliceId", });
     internal_static_context_ConnectionId_descriptor =
-      getDescriptor().getMessageTypes().get(45);
+      getDescriptor().getMessageTypes().get(46);
     internal_static_context_ConnectionId_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionId_descriptor,
         new java.lang.String[] { "ConnectionUuid", });
     internal_static_context_ConnectionSettings_L0_descriptor =
-      getDescriptor().getMessageTypes().get(46);
+      getDescriptor().getMessageTypes().get(47);
     internal_static_context_ConnectionSettings_L0_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionSettings_L0_descriptor,
         new java.lang.String[] { "LspSymbolicName", });
     internal_static_context_ConnectionSettings_L2_descriptor =
-      getDescriptor().getMessageTypes().get(47);
+      getDescriptor().getMessageTypes().get(48);
     internal_static_context_ConnectionSettings_L2_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionSettings_L2_descriptor,
         new java.lang.String[] { "SrcMacAddress", "DstMacAddress", "EtherType", "VlanId", "MplsLabel", "MplsTrafficClass", });
     internal_static_context_ConnectionSettings_L3_descriptor =
-      getDescriptor().getMessageTypes().get(48);
+      getDescriptor().getMessageTypes().get(49);
     internal_static_context_ConnectionSettings_L3_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionSettings_L3_descriptor,
         new java.lang.String[] { "SrcIpAddress", "DstIpAddress", "Dscp", "Protocol", "Ttl", });
     internal_static_context_ConnectionSettings_L4_descriptor =
-      getDescriptor().getMessageTypes().get(49);
+      getDescriptor().getMessageTypes().get(50);
     internal_static_context_ConnectionSettings_L4_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionSettings_L4_descriptor,
         new java.lang.String[] { "SrcPort", "DstPort", "TcpFlags", "Ttl", });
     internal_static_context_ConnectionSettings_descriptor =
-      getDescriptor().getMessageTypes().get(50);
+      getDescriptor().getMessageTypes().get(51);
     internal_static_context_ConnectionSettings_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionSettings_descriptor,
         new java.lang.String[] { "L0", "L2", "L3", "L4", });
     internal_static_context_Connection_descriptor =
-      getDescriptor().getMessageTypes().get(51);
+      getDescriptor().getMessageTypes().get(52);
     internal_static_context_Connection_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Connection_descriptor,
         new java.lang.String[] { "ConnectionId", "ServiceId", "PathHopsEndpointIds", "SubServiceIds", "Settings", });
     internal_static_context_ConnectionIdList_descriptor =
-      getDescriptor().getMessageTypes().get(52);
+      getDescriptor().getMessageTypes().get(53);
     internal_static_context_ConnectionIdList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionIdList_descriptor,
         new java.lang.String[] { "ConnectionIds", });
     internal_static_context_ConnectionList_descriptor =
-      getDescriptor().getMessageTypes().get(53);
+      getDescriptor().getMessageTypes().get(54);
     internal_static_context_ConnectionList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionList_descriptor,
         new java.lang.String[] { "Connections", });
     internal_static_context_ConnectionEvent_descriptor =
-      getDescriptor().getMessageTypes().get(54);
+      getDescriptor().getMessageTypes().get(55);
     internal_static_context_ConnectionEvent_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConnectionEvent_descriptor,
         new java.lang.String[] { "Event", "ConnectionId", });
     internal_static_context_EndPointId_descriptor =
-      getDescriptor().getMessageTypes().get(55);
+      getDescriptor().getMessageTypes().get(56);
     internal_static_context_EndPointId_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_EndPointId_descriptor,
         new java.lang.String[] { "TopologyId", "DeviceId", "EndpointUuid", });
     internal_static_context_EndPoint_descriptor =
-      getDescriptor().getMessageTypes().get(56);
+      getDescriptor().getMessageTypes().get(57);
     internal_static_context_EndPoint_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_EndPoint_descriptor,
         new java.lang.String[] { "EndpointId", "Name", "EndpointType", "KpiSampleTypes", "EndpointLocation", });
     internal_static_context_EndPointName_descriptor =
-      getDescriptor().getMessageTypes().get(57);
+      getDescriptor().getMessageTypes().get(58);
     internal_static_context_EndPointName_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_EndPointName_descriptor,
         new java.lang.String[] { "EndpointId", "DeviceName", "EndpointName", "EndpointType", });
     internal_static_context_EndPointIdList_descriptor =
-      getDescriptor().getMessageTypes().get(58);
+      getDescriptor().getMessageTypes().get(59);
     internal_static_context_EndPointIdList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_EndPointIdList_descriptor,
         new java.lang.String[] { "EndpointIds", });
     internal_static_context_EndPointNameList_descriptor =
-      getDescriptor().getMessageTypes().get(59);
+      getDescriptor().getMessageTypes().get(60);
     internal_static_context_EndPointNameList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_EndPointNameList_descriptor,
         new java.lang.String[] { "EndpointNames", });
     internal_static_context_ConfigRule_Custom_descriptor =
-      getDescriptor().getMessageTypes().get(60);
+      getDescriptor().getMessageTypes().get(61);
     internal_static_context_ConfigRule_Custom_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConfigRule_Custom_descriptor,
         new java.lang.String[] { "ResourceKey", "ResourceValue", });
     internal_static_context_ConfigRule_ACL_descriptor =
-      getDescriptor().getMessageTypes().get(61);
+      getDescriptor().getMessageTypes().get(62);
     internal_static_context_ConfigRule_ACL_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConfigRule_ACL_descriptor,
         new java.lang.String[] { "EndpointId", "RuleSet", });
     internal_static_context_ConfigRule_descriptor =
-      getDescriptor().getMessageTypes().get(62);
+      getDescriptor().getMessageTypes().get(63);
     internal_static_context_ConfigRule_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_ConfigRule_descriptor,
         new java.lang.String[] { "Action", "Custom", "Acl", "ConfigRule", });
     internal_static_context_Constraint_Custom_descriptor =
-      getDescriptor().getMessageTypes().get(63);
+      getDescriptor().getMessageTypes().get(64);
     internal_static_context_Constraint_Custom_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_Custom_descriptor,
         new java.lang.String[] { "ConstraintType", "ConstraintValue", });
     internal_static_context_Constraint_Schedule_descriptor =
-      getDescriptor().getMessageTypes().get(64);
+      getDescriptor().getMessageTypes().get(65);
     internal_static_context_Constraint_Schedule_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_Schedule_descriptor,
         new java.lang.String[] { "StartTimestamp", "DurationDays", });
     internal_static_context_GPS_Position_descriptor =
-      getDescriptor().getMessageTypes().get(65);
+      getDescriptor().getMessageTypes().get(66);
     internal_static_context_GPS_Position_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_GPS_Position_descriptor,
         new java.lang.String[] { "Latitude", "Longitude", });
     internal_static_context_Location_descriptor =
-      getDescriptor().getMessageTypes().get(66);
+      getDescriptor().getMessageTypes().get(67);
     internal_static_context_Location_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Location_descriptor,
         new java.lang.String[] { "Region", "GpsPosition", "Location", });
     internal_static_context_Constraint_EndPointLocation_descriptor =
-      getDescriptor().getMessageTypes().get(67);
+      getDescriptor().getMessageTypes().get(68);
     internal_static_context_Constraint_EndPointLocation_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_EndPointLocation_descriptor,
         new java.lang.String[] { "EndpointId", "Location", });
     internal_static_context_Constraint_EndPointPriority_descriptor =
-      getDescriptor().getMessageTypes().get(68);
+      getDescriptor().getMessageTypes().get(69);
     internal_static_context_Constraint_EndPointPriority_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_EndPointPriority_descriptor,
         new java.lang.String[] { "EndpointId", "Priority", });
     internal_static_context_Constraint_SLA_Latency_descriptor =
-      getDescriptor().getMessageTypes().get(69);
+      getDescriptor().getMessageTypes().get(70);
     internal_static_context_Constraint_SLA_Latency_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_SLA_Latency_descriptor,
         new java.lang.String[] { "E2ELatencyMs", });
     internal_static_context_Constraint_SLA_Capacity_descriptor =
-      getDescriptor().getMessageTypes().get(70);
+      getDescriptor().getMessageTypes().get(71);
     internal_static_context_Constraint_SLA_Capacity_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_SLA_Capacity_descriptor,
         new java.lang.String[] { "CapacityGbps", });
     internal_static_context_Constraint_SLA_Availability_descriptor =
-      getDescriptor().getMessageTypes().get(71);
+      getDescriptor().getMessageTypes().get(72);
     internal_static_context_Constraint_SLA_Availability_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_SLA_Availability_descriptor,
         new java.lang.String[] { "NumDisjointPaths", "AllActive", "Availability", });
     internal_static_context_Constraint_SLA_Isolation_level_descriptor =
-      getDescriptor().getMessageTypes().get(72);
+      getDescriptor().getMessageTypes().get(73);
     internal_static_context_Constraint_SLA_Isolation_level_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_SLA_Isolation_level_descriptor,
         new java.lang.String[] { "IsolationLevel", });
     internal_static_context_Constraint_Exclusions_descriptor =
-      getDescriptor().getMessageTypes().get(73);
+      getDescriptor().getMessageTypes().get(74);
     internal_static_context_Constraint_Exclusions_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_Exclusions_descriptor,
         new java.lang.String[] { "IsPermanent", "DeviceIds", "EndpointIds", "LinkIds", });
     internal_static_context_Constraint_descriptor =
-      getDescriptor().getMessageTypes().get(74);
+      getDescriptor().getMessageTypes().get(75);
     internal_static_context_Constraint_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Constraint_descriptor,
         new java.lang.String[] { "Action", "Custom", "Schedule", "EndpointLocation", "EndpointPriority", "SlaCapacity", "SlaLatency", "SlaAvailability", "SlaIsolation", "Exclusions", "Constraint", });
     internal_static_context_TeraFlowController_descriptor =
-      getDescriptor().getMessageTypes().get(75);
+      getDescriptor().getMessageTypes().get(76);
     internal_static_context_TeraFlowController_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_TeraFlowController_descriptor,
         new java.lang.String[] { "ContextId", "IpAddress", "Port", });
     internal_static_context_AuthenticationResult_descriptor =
-      getDescriptor().getMessageTypes().get(76);
+      getDescriptor().getMessageTypes().get(77);
     internal_static_context_AuthenticationResult_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_AuthenticationResult_descriptor,
diff --git a/src/ztp/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java b/src/ztp/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java
index 98bdbbd2c364953df27694a839eff3e8f0e1c114..66ce0f8f234c62f17c7e3af82d0f22a0a4c26c58 100644
--- a/src/ztp/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java
+++ b/src/ztp/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java
@@ -283,22 +283,24 @@ public final class KpiSampleTypes {
   static {
     java.lang.String[] descriptorData = {
       "\n\026kpi_sample_types.proto\022\020kpi_sample_typ" +
-      "es*\327\004\n\rKpiSampleType\022\031\n\025KPISAMPLETYPE_UN" +
+      "es*\260\005\n\rKpiSampleType\022\031\n\025KPISAMPLETYPE_UN" +
       "KNOWN\020\000\022%\n!KPISAMPLETYPE_PACKETS_TRANSMI" +
       "TTED\020e\022\"\n\036KPISAMPLETYPE_PACKETS_RECEIVED" +
       "\020f\022!\n\035KPISAMPLETYPE_PACKETS_DROPPED\020g\022$\n" +
       "\037KPISAMPLETYPE_BYTES_TRANSMITTED\020\311\001\022!\n\034K" +
       "PISAMPLETYPE_BYTES_RECEIVED\020\312\001\022 \n\033KPISAM" +
-      "PLETYPE_BYTES_DROPPED\020\313\001\022 \n\033KPISAMPLETYP" +
-      "E_ML_CONFIDENCE\020\221\003\022*\n%KPISAMPLETYPE_OPTI" +
-      "CAL_SECURITY_STATUS\020\365\003\022)\n$KPISAMPLETYPE_" +
-      "L3_UNIQUE_ATTACK_CONNS\020\331\004\022*\n%KPISAMPLETY" +
-      "PE_L3_TOTAL_DROPPED_PACKTS\020\332\004\022&\n!KPISAMP" +
-      "LETYPE_L3_UNIQUE_ATTACKERS\020\333\004\0220\n+KPISAMP" +
-      "LETYPE_L3_UNIQUE_COMPROMISED_CLIENTS\020\334\004\022" +
-      ",\n\'KPISAMPLETYPE_L3_SECURITY_STATUS_CRYP" +
-      "TO\020\335\004\022%\n KPISAMPLETYPE_SERVICE_LATENCY_M" +
-      "S\020\275\005b\006proto3"
+      "PLETYPE_BYTES_DROPPED\020\313\001\022+\n&KPISAMPLETYP" +
+      "E_LINK_TOTAL_CAPACITY_GBPS\020\255\002\022*\n%KPISAMP" +
+      "LETYPE_LINK_USED_CAPACITY_GBPS\020\256\002\022 \n\033KPI" +
+      "SAMPLETYPE_ML_CONFIDENCE\020\221\003\022*\n%KPISAMPLE" +
+      "TYPE_OPTICAL_SECURITY_STATUS\020\365\003\022)\n$KPISA" +
+      "MPLETYPE_L3_UNIQUE_ATTACK_CONNS\020\331\004\022*\n%KP" +
+      "ISAMPLETYPE_L3_TOTAL_DROPPED_PACKTS\020\332\004\022&" +
+      "\n!KPISAMPLETYPE_L3_UNIQUE_ATTACKERS\020\333\004\0220" +
+      "\n+KPISAMPLETYPE_L3_UNIQUE_COMPROMISED_CL" +
+      "IENTS\020\334\004\022,\n\'KPISAMPLETYPE_L3_SECURITY_ST" +
+      "ATUS_CRYPTO\020\335\004\022%\n KPISAMPLETYPE_SERVICE_" +
+      "LATENCY_MS\020\275\005b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
diff --git a/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java b/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java
index 38f026eb1ac730e8f825e460916dc57469f0d312..ef9ef6be6341d87943f68503d7ddc535b3920140 100644
--- a/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java
+++ b/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java
@@ -154,6 +154,21 @@ public final class Monitoring {
      * <code>.context.ConnectionId connection_id = 9;</code>
      */
     context.ContextOuterClass.ConnectionIdOrBuilder getConnectionIdOrBuilder();
+
+    /**
+     * <code>.context.LinkId link_id = 10;</code>
+     * @return Whether the linkId field is set.
+     */
+    boolean hasLinkId();
+    /**
+     * <code>.context.LinkId link_id = 10;</code>
+     * @return The linkId.
+     */
+    context.ContextOuterClass.LinkId getLinkId();
+    /**
+     * <code>.context.LinkId link_id = 10;</code>
+     */
+    context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder();
   }
   /**
    * Protobuf type {@code monitoring.KpiDescriptor}
@@ -303,6 +318,19 @@ public final class Monitoring {
 
               break;
             }
+            case 82: {
+              context.ContextOuterClass.LinkId.Builder subBuilder = null;
+              if (linkId_ != null) {
+                subBuilder = linkId_.toBuilder();
+              }
+              linkId_ = input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(linkId_);
+                linkId_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -591,6 +619,32 @@ public final class Monitoring {
       return getConnectionId();
     }
 
+    public static final int LINK_ID_FIELD_NUMBER = 10;
+    private context.ContextOuterClass.LinkId linkId_;
+    /**
+     * <code>.context.LinkId link_id = 10;</code>
+     * @return Whether the linkId field is set.
+     */
+    @java.lang.Override
+    public boolean hasLinkId() {
+      return linkId_ != null;
+    }
+    /**
+     * <code>.context.LinkId link_id = 10;</code>
+     * @return The linkId.
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.LinkId getLinkId() {
+      return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+    }
+    /**
+     * <code>.context.LinkId link_id = 10;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
+      return getLinkId();
+    }
+
     private byte memoizedIsInitialized = -1;
     @java.lang.Override
     public final boolean isInitialized() {
@@ -632,6 +686,9 @@ public final class Monitoring {
       if (connectionId_ != null) {
         output.writeMessage(9, getConnectionId());
       }
+      if (linkId_ != null) {
+        output.writeMessage(10, getLinkId());
+      }
       unknownFields.writeTo(output);
     }
 
@@ -676,6 +733,10 @@ public final class Monitoring {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(9, getConnectionId());
       }
+      if (linkId_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(10, getLinkId());
+      }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
@@ -726,6 +787,11 @@ public final class Monitoring {
         if (!getConnectionId()
             .equals(other.getConnectionId())) return false;
       }
+      if (hasLinkId() != other.hasLinkId()) return false;
+      if (hasLinkId()) {
+        if (!getLinkId()
+            .equals(other.getLinkId())) return false;
+      }
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -769,6 +835,10 @@ public final class Monitoring {
         hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
         hash = (53 * hash) + getConnectionId().hashCode();
       }
+      if (hasLinkId()) {
+        hash = (37 * hash) + LINK_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getLinkId().hashCode();
+      }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
@@ -949,6 +1019,12 @@ public final class Monitoring {
           connectionId_ = null;
           connectionIdBuilder_ = null;
         }
+        if (linkIdBuilder_ == null) {
+          linkId_ = null;
+        } else {
+          linkId_ = null;
+          linkIdBuilder_ = null;
+        }
         return this;
       }
 
@@ -1017,6 +1093,11 @@ public final class Monitoring {
         } else {
           result.connectionId_ = connectionIdBuilder_.build();
         }
+        if (linkIdBuilder_ == null) {
+          result.linkId_ = linkId_;
+        } else {
+          result.linkId_ = linkIdBuilder_.build();
+        }
         onBuilt();
         return result;
       }
@@ -1116,6 +1197,9 @@ public final class Monitoring {
         if (other.hasConnectionId()) {
           mergeConnectionId(other.getConnectionId());
         }
+        if (other.hasLinkId()) {
+          mergeLinkId(other.getLinkId());
+        }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
@@ -2229,6 +2313,125 @@ public final class Monitoring {
         }
         return connectionIdBuilder_;
       }
+
+      private context.ContextOuterClass.LinkId linkId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdBuilder_;
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       * @return Whether the linkId field is set.
+       */
+      public boolean hasLinkId() {
+        return linkIdBuilder_ != null || linkId_ != null;
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       * @return The linkId.
+       */
+      public context.ContextOuterClass.LinkId getLinkId() {
+        if (linkIdBuilder_ == null) {
+          return linkId_ == null ? context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+        } else {
+          return linkIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       */
+      public Builder setLinkId(context.ContextOuterClass.LinkId value) {
+        if (linkIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          linkId_ = value;
+          onChanged();
+        } else {
+          linkIdBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       */
+      public Builder setLinkId(
+          context.ContextOuterClass.LinkId.Builder builderForValue) {
+        if (linkIdBuilder_ == null) {
+          linkId_ = builderForValue.build();
+          onChanged();
+        } else {
+          linkIdBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       */
+      public Builder mergeLinkId(context.ContextOuterClass.LinkId value) {
+        if (linkIdBuilder_ == null) {
+          if (linkId_ != null) {
+            linkId_ =
+              context.ContextOuterClass.LinkId.newBuilder(linkId_).mergeFrom(value).buildPartial();
+          } else {
+            linkId_ = value;
+          }
+          onChanged();
+        } else {
+          linkIdBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       */
+      public Builder clearLinkId() {
+        if (linkIdBuilder_ == null) {
+          linkId_ = null;
+          onChanged();
+        } else {
+          linkId_ = null;
+          linkIdBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       */
+      public context.ContextOuterClass.LinkId.Builder getLinkIdBuilder() {
+        
+        onChanged();
+        return getLinkIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       */
+      public context.ContextOuterClass.LinkIdOrBuilder getLinkIdOrBuilder() {
+        if (linkIdBuilder_ != null) {
+          return linkIdBuilder_.getMessageOrBuilder();
+        } else {
+          return linkId_ == null ?
+              context.ContextOuterClass.LinkId.getDefaultInstance() : linkId_;
+        }
+      }
+      /**
+       * <code>.context.LinkId link_id = 10;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> 
+          getLinkIdFieldBuilder() {
+        if (linkIdBuilder_ == null) {
+          linkIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder>(
+                  getLinkId(),
+                  getParentForChildren(),
+                  isClean());
+          linkId_ = null;
+        }
+        return linkIdBuilder_;
+      }
       @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
@@ -21361,7 +21564,7 @@ public final class Monitoring {
   static {
     java.lang.String[] descriptorData = {
       "\n\020monitoring.proto\022\nmonitoring\032\rcontext." +
-      "proto\032\026kpi_sample_types.proto\"\367\002\n\rKpiDes" +
+      "proto\032\026kpi_sample_types.proto\"\231\003\n\rKpiDes" +
       "criptor\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring.Kpi" +
       "Id\022\027\n\017kpi_description\030\002 \001(\t\022&\n\013kpi_id_li" +
       "st\030\003 \003(\0132\021.monitoring.KpiId\0228\n\017kpi_sampl" +
@@ -21371,91 +21574,92 @@ public final class Monitoring {
       "intId\022&\n\nservice_id\030\007 \001(\0132\022.context.Serv" +
       "iceId\022\"\n\010slice_id\030\010 \001(\0132\020.context.SliceI" +
       "d\022,\n\rconnection_id\030\t \001(\0132\025.context.Conne" +
-      "ctionId\"l\n\021MonitorKpiRequest\022!\n\006kpi_id\030\001" +
-      " \001(\0132\021.monitoring.KpiId\022\033\n\023monitoring_wi" +
-      "ndow_s\030\002 \001(\002\022\027\n\017sampling_rate_s\030\003 \001(\002\"\273\001" +
-      "\n\010KpiQuery\022\"\n\007kpi_ids\030\001 \003(\0132\021.monitoring" +
-      ".KpiId\022\033\n\023monitoring_window_s\030\002 \001(\002\022\026\n\016l" +
-      "ast_n_samples\030\003 \001(\r\022+\n\017start_timestamp\030\004" +
-      " \001(\0132\022.context.Timestamp\022)\n\rend_timestam" +
-      "p\030\005 \001(\0132\022.context.Timestamp\"X\n\006RawKpi\022%\n" +
-      "\ttimestamp\030\001 \001(\0132\022.context.Timestamp\022\'\n\t" +
-      "kpi_value\030\002 \001(\0132\024.monitoring.KpiValue\"U\n" +
-      "\nRawKpiList\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring" +
-      ".KpiId\022$\n\010raw_kpis\030\002 \003(\0132\022.monitoring.Ra" +
-      "wKpi\"<\n\013RawKpiTable\022-\n\rraw_kpi_lists\030\001 \003" +
-      "(\0132\026.monitoring.RawKpiList\"&\n\005KpiId\022\035\n\006k" +
-      "pi_id\030\001 \001(\0132\r.context.Uuid\"x\n\003Kpi\022!\n\006kpi" +
-      "_id\030\001 \001(\0132\021.monitoring.KpiId\022%\n\ttimestam" +
-      "p\030\002 \001(\0132\022.context.Timestamp\022\'\n\tkpi_value" +
-      "\030\003 \001(\0132\024.monitoring.KpiValue\"\250\001\n\rKpiValu" +
-      "eRange\022)\n\013kpiMinValue\030\001 \001(\0132\024.monitoring" +
-      ".KpiValue\022)\n\013kpiMaxValue\030\002 \001(\0132\024.monitor" +
-      "ing.KpiValue\022\017\n\007inRange\030\003 \001(\010\022\027\n\017include" +
-      "MinValue\030\004 \001(\010\022\027\n\017includeMaxValue\030\005 \001(\010\"" +
-      "\241\001\n\010KpiValue\022\022\n\010int32Val\030\001 \001(\005H\000\022\023\n\tuint" +
-      "32Val\030\002 \001(\rH\000\022\022\n\010int64Val\030\003 \001(\003H\000\022\023\n\tuin" +
-      "t64Val\030\004 \001(\004H\000\022\022\n\010floatVal\030\005 \001(\002H\000\022\023\n\tst" +
-      "ringVal\030\006 \001(\tH\000\022\021\n\007boolVal\030\007 \001(\010H\000B\007\n\005va" +
-      "lue\"\'\n\007KpiList\022\034\n\003kpi\030\001 \003(\0132\017.monitoring" +
-      ".Kpi\"K\n\021KpiDescriptorList\0226\n\023kpi_descrip" +
-      "tor_list\030\001 \003(\0132\031.monitoring.KpiDescripto" +
-      "r\"\362\001\n\016SubsDescriptor\022+\n\007subs_id\030\001 \001(\0132\032." +
-      "monitoring.SubscriptionID\022!\n\006kpi_id\030\002 \001(" +
-      "\0132\021.monitoring.KpiId\022\033\n\023sampling_duratio" +
-      "n_s\030\003 \001(\002\022\033\n\023sampling_interval_s\030\004 \001(\002\022+" +
-      "\n\017start_timestamp\030\005 \001(\0132\022.context.Timest" +
-      "amp\022)\n\rend_timestamp\030\006 \001(\0132\022.context.Tim" +
-      "estamp\"0\n\016SubscriptionID\022\036\n\007subs_id\030\001 \001(" +
-      "\0132\r.context.Uuid\"b\n\014SubsResponse\022+\n\007subs" +
-      "_id\030\001 \001(\0132\032.monitoring.SubscriptionID\022%\n" +
-      "\010kpi_list\030\002 \001(\0132\023.monitoring.KpiList\"?\n\010" +
-      "SubsList\0223\n\017subs_descriptor\030\001 \003(\0132\032.moni" +
-      "toring.SubsDescriptor\"\337\001\n\017AlarmDescripto" +
-      "r\022%\n\010alarm_id\030\001 \001(\0132\023.monitoring.AlarmID" +
-      "\022\031\n\021alarm_description\030\002 \001(\t\022\014\n\004name\030\003 \001(" +
-      "\t\022!\n\006kpi_id\030\004 \001(\0132\021.monitoring.KpiId\0222\n\017" +
-      "kpi_value_range\030\005 \001(\0132\031.monitoring.KpiVa" +
-      "lueRange\022%\n\ttimestamp\030\006 \001(\0132\022.context.Ti" +
-      "mestamp\"*\n\007AlarmID\022\037\n\010alarm_id\030\001 \001(\0132\r.c" +
-      "ontext.Uuid\"}\n\021AlarmSubscription\022%\n\010alar" +
-      "m_id\030\001 \001(\0132\023.monitoring.AlarmID\022\036\n\026subsc" +
-      "ription_timeout_s\030\002 \001(\002\022!\n\031subscription_" +
-      "frequency_ms\030\003 \001(\002\"k\n\rAlarmResponse\022%\n\010a" +
-      "larm_id\030\001 \001(\0132\023.monitoring.AlarmID\022\014\n\004te" +
-      "xt\030\002 \001(\t\022%\n\010kpi_list\030\003 \001(\0132\023.monitoring." +
-      "KpiList\"B\n\tAlarmList\0225\n\020alarm_descriptor" +
-      "\030\001 \003(\0132\033.monitoring.AlarmDescriptor2\234\t\n\021" +
-      "MonitoringService\0228\n\006SetKpi\022\031.monitoring" +
-      ".KpiDescriptor\032\021.monitoring.KpiId\"\000\0220\n\tD" +
-      "eleteKpi\022\021.monitoring.KpiId\032\016.context.Em" +
-      "pty\"\000\022B\n\020GetKpiDescriptor\022\021.monitoring.K" +
-      "piId\032\031.monitoring.KpiDescriptor\"\000\022G\n\024Get" +
-      "KpiDescriptorList\022\016.context.Empty\032\035.moni" +
-      "toring.KpiDescriptorList\"\000\022/\n\nIncludeKpi" +
-      "\022\017.monitoring.Kpi\032\016.context.Empty\"\000\022=\n\nM" +
-      "onitorKpi\022\035.monitoring.MonitorKpiRequest" +
-      "\032\016.context.Empty\"\000\022?\n\014QueryKpiData\022\024.mon" +
-      "itoring.KpiQuery\032\027.monitoring.RawKpiTabl" +
-      "e\"\000\022N\n\022SetKpiSubscription\022\032.monitoring.S" +
-      "ubsDescriptor\032\030.monitoring.SubsResponse\"" +
-      "\0000\001\022M\n\021GetSubsDescriptor\022\032.monitoring.Su" +
-      "bscriptionID\032\032.monitoring.SubsDescriptor" +
-      "\"\000\022:\n\020GetSubscriptions\022\016.context.Empty\032\024" +
-      ".monitoring.SubsList\"\000\022B\n\022DeleteSubscrip" +
-      "tion\022\032.monitoring.SubscriptionID\032\016.conte" +
-      "xt.Empty\"\000\022A\n\013SetKpiAlarm\022\033.monitoring.A" +
-      "larmDescriptor\032\023.monitoring.AlarmID\"\000\0224\n" +
-      "\tGetAlarms\022\016.context.Empty\032\025.monitoring." +
-      "AlarmList\"\000\022H\n\022GetAlarmDescriptor\022\023.moni" +
-      "toring.AlarmID\032\033.monitoring.AlarmDescrip" +
-      "tor\"\000\022V\n\026GetAlarmResponseStream\022\035.monito" +
-      "ring.AlarmSubscription\032\031.monitoring.Alar" +
-      "mResponse\"\0000\001\0224\n\013DeleteAlarm\022\023.monitorin" +
-      "g.AlarmID\032\016.context.Empty\"\000\0226\n\014GetStream" +
-      "Kpi\022\021.monitoring.KpiId\032\017.monitoring.Kpi\"" +
-      "\0000\001\0225\n\rGetInstantKpi\022\021.monitoring.KpiId\032" +
-      "\017.monitoring.Kpi\"\000b\006proto3"
+      "ctionId\022 \n\007link_id\030\n \001(\0132\017.context.LinkI" +
+      "d\"l\n\021MonitorKpiRequest\022!\n\006kpi_id\030\001 \001(\0132\021" +
+      ".monitoring.KpiId\022\033\n\023monitoring_window_s" +
+      "\030\002 \001(\002\022\027\n\017sampling_rate_s\030\003 \001(\002\"\273\001\n\010KpiQ" +
+      "uery\022\"\n\007kpi_ids\030\001 \003(\0132\021.monitoring.KpiId" +
+      "\022\033\n\023monitoring_window_s\030\002 \001(\002\022\026\n\016last_n_" +
+      "samples\030\003 \001(\r\022+\n\017start_timestamp\030\004 \001(\0132\022" +
+      ".context.Timestamp\022)\n\rend_timestamp\030\005 \001(" +
+      "\0132\022.context.Timestamp\"X\n\006RawKpi\022%\n\ttimes" +
+      "tamp\030\001 \001(\0132\022.context.Timestamp\022\'\n\tkpi_va" +
+      "lue\030\002 \001(\0132\024.monitoring.KpiValue\"U\n\nRawKp" +
+      "iList\022!\n\006kpi_id\030\001 \001(\0132\021.monitoring.KpiId" +
+      "\022$\n\010raw_kpis\030\002 \003(\0132\022.monitoring.RawKpi\"<" +
+      "\n\013RawKpiTable\022-\n\rraw_kpi_lists\030\001 \003(\0132\026.m" +
+      "onitoring.RawKpiList\"&\n\005KpiId\022\035\n\006kpi_id\030" +
+      "\001 \001(\0132\r.context.Uuid\"x\n\003Kpi\022!\n\006kpi_id\030\001 " +
+      "\001(\0132\021.monitoring.KpiId\022%\n\ttimestamp\030\002 \001(" +
+      "\0132\022.context.Timestamp\022\'\n\tkpi_value\030\003 \001(\013" +
+      "2\024.monitoring.KpiValue\"\250\001\n\rKpiValueRange" +
+      "\022)\n\013kpiMinValue\030\001 \001(\0132\024.monitoring.KpiVa" +
+      "lue\022)\n\013kpiMaxValue\030\002 \001(\0132\024.monitoring.Kp" +
+      "iValue\022\017\n\007inRange\030\003 \001(\010\022\027\n\017includeMinVal" +
+      "ue\030\004 \001(\010\022\027\n\017includeMaxValue\030\005 \001(\010\"\241\001\n\010Kp" +
+      "iValue\022\022\n\010int32Val\030\001 \001(\005H\000\022\023\n\tuint32Val\030" +
+      "\002 \001(\rH\000\022\022\n\010int64Val\030\003 \001(\003H\000\022\023\n\tuint64Val" +
+      "\030\004 \001(\004H\000\022\022\n\010floatVal\030\005 \001(\002H\000\022\023\n\tstringVa" +
+      "l\030\006 \001(\tH\000\022\021\n\007boolVal\030\007 \001(\010H\000B\007\n\005value\"\'\n" +
+      "\007KpiList\022\034\n\003kpi\030\001 \003(\0132\017.monitoring.Kpi\"K" +
+      "\n\021KpiDescriptorList\0226\n\023kpi_descriptor_li" +
+      "st\030\001 \003(\0132\031.monitoring.KpiDescriptor\"\362\001\n\016" +
+      "SubsDescriptor\022+\n\007subs_id\030\001 \001(\0132\032.monito" +
+      "ring.SubscriptionID\022!\n\006kpi_id\030\002 \001(\0132\021.mo" +
+      "nitoring.KpiId\022\033\n\023sampling_duration_s\030\003 " +
+      "\001(\002\022\033\n\023sampling_interval_s\030\004 \001(\002\022+\n\017star" +
+      "t_timestamp\030\005 \001(\0132\022.context.Timestamp\022)\n" +
+      "\rend_timestamp\030\006 \001(\0132\022.context.Timestamp" +
+      "\"0\n\016SubscriptionID\022\036\n\007subs_id\030\001 \001(\0132\r.co" +
+      "ntext.Uuid\"b\n\014SubsResponse\022+\n\007subs_id\030\001 " +
+      "\001(\0132\032.monitoring.SubscriptionID\022%\n\010kpi_l" +
+      "ist\030\002 \001(\0132\023.monitoring.KpiList\"?\n\010SubsLi" +
+      "st\0223\n\017subs_descriptor\030\001 \003(\0132\032.monitoring" +
+      ".SubsDescriptor\"\337\001\n\017AlarmDescriptor\022%\n\010a" +
+      "larm_id\030\001 \001(\0132\023.monitoring.AlarmID\022\031\n\021al" +
+      "arm_description\030\002 \001(\t\022\014\n\004name\030\003 \001(\t\022!\n\006k" +
+      "pi_id\030\004 \001(\0132\021.monitoring.KpiId\0222\n\017kpi_va" +
+      "lue_range\030\005 \001(\0132\031.monitoring.KpiValueRan" +
+      "ge\022%\n\ttimestamp\030\006 \001(\0132\022.context.Timestam" +
+      "p\"*\n\007AlarmID\022\037\n\010alarm_id\030\001 \001(\0132\r.context" +
+      ".Uuid\"}\n\021AlarmSubscription\022%\n\010alarm_id\030\001" +
+      " \001(\0132\023.monitoring.AlarmID\022\036\n\026subscriptio" +
+      "n_timeout_s\030\002 \001(\002\022!\n\031subscription_freque" +
+      "ncy_ms\030\003 \001(\002\"k\n\rAlarmResponse\022%\n\010alarm_i" +
+      "d\030\001 \001(\0132\023.monitoring.AlarmID\022\014\n\004text\030\002 \001" +
+      "(\t\022%\n\010kpi_list\030\003 \001(\0132\023.monitoring.KpiLis" +
+      "t\"B\n\tAlarmList\0225\n\020alarm_descriptor\030\001 \003(\013" +
+      "2\033.monitoring.AlarmDescriptor2\234\t\n\021Monito" +
+      "ringService\0228\n\006SetKpi\022\031.monitoring.KpiDe" +
+      "scriptor\032\021.monitoring.KpiId\"\000\0220\n\tDeleteK" +
+      "pi\022\021.monitoring.KpiId\032\016.context.Empty\"\000\022" +
+      "B\n\020GetKpiDescriptor\022\021.monitoring.KpiId\032\031" +
+      ".monitoring.KpiDescriptor\"\000\022G\n\024GetKpiDes" +
+      "criptorList\022\016.context.Empty\032\035.monitoring" +
+      ".KpiDescriptorList\"\000\022/\n\nIncludeKpi\022\017.mon" +
+      "itoring.Kpi\032\016.context.Empty\"\000\022=\n\nMonitor" +
+      "Kpi\022\035.monitoring.MonitorKpiRequest\032\016.con" +
+      "text.Empty\"\000\022?\n\014QueryKpiData\022\024.monitorin" +
+      "g.KpiQuery\032\027.monitoring.RawKpiTable\"\000\022N\n" +
+      "\022SetKpiSubscription\022\032.monitoring.SubsDes" +
+      "criptor\032\030.monitoring.SubsResponse\"\0000\001\022M\n" +
+      "\021GetSubsDescriptor\022\032.monitoring.Subscrip" +
+      "tionID\032\032.monitoring.SubsDescriptor\"\000\022:\n\020" +
+      "GetSubscriptions\022\016.context.Empty\032\024.monit" +
+      "oring.SubsList\"\000\022B\n\022DeleteSubscription\022\032" +
+      ".monitoring.SubscriptionID\032\016.context.Emp" +
+      "ty\"\000\022A\n\013SetKpiAlarm\022\033.monitoring.AlarmDe" +
+      "scriptor\032\023.monitoring.AlarmID\"\000\0224\n\tGetAl" +
+      "arms\022\016.context.Empty\032\025.monitoring.AlarmL" +
+      "ist\"\000\022H\n\022GetAlarmDescriptor\022\023.monitoring" +
+      ".AlarmID\032\033.monitoring.AlarmDescriptor\"\000\022" +
+      "V\n\026GetAlarmResponseStream\022\035.monitoring.A" +
+      "larmSubscription\032\031.monitoring.AlarmRespo" +
+      "nse\"\0000\001\0224\n\013DeleteAlarm\022\023.monitoring.Alar" +
+      "mID\032\016.context.Empty\"\000\0226\n\014GetStreamKpi\022\021." +
+      "monitoring.KpiId\032\017.monitoring.Kpi\"\0000\001\0225\n" +
+      "\rGetInstantKpi\022\021.monitoring.KpiId\032\017.moni" +
+      "toring.Kpi\"\000b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -21468,7 +21672,7 @@ public final class Monitoring {
     internal_static_monitoring_KpiDescriptor_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_monitoring_KpiDescriptor_descriptor,
-        new java.lang.String[] { "KpiId", "KpiDescription", "KpiIdList", "KpiSampleType", "DeviceId", "EndpointId", "ServiceId", "SliceId", "ConnectionId", });
+        new java.lang.String[] { "KpiId", "KpiDescription", "KpiIdList", "KpiSampleType", "DeviceId", "EndpointId", "ServiceId", "SliceId", "ConnectionId", "LinkId", });
     internal_static_monitoring_MonitorKpiRequest_descriptor =
       getDescriptor().getMessageTypes().get(1);
     internal_static_monitoring_MonitorKpiRequest_fieldAccessorTable = new
diff --git a/src/ztp/target/kubernetes/kubernetes.yml b/src/ztp/target/kubernetes/kubernetes.yml
index e3f3633657e236716fa9feaaca4c8f4af6d61a9c..f3e4a6d6dda261c4eac983552b01bb6a4f901e9f 100644
--- a/src/ztp/target/kubernetes/kubernetes.yml
+++ b/src/ztp/target/kubernetes/kubernetes.yml
@@ -3,8 +3,8 @@ apiVersion: v1
 kind: Service
 metadata:
   annotations:
-    app.quarkus.io/commit-id: 9d36a29ba5ef1fb46f7b51a5c477bdc4410ba548
-    app.quarkus.io/build-timestamp: 2023-11-08 - 11:15:43 +0000
+    app.quarkus.io/commit-id: 46486023929121fc955e9550fc8fd625ded433d2
+    app.quarkus.io/build-timestamp: 2023-12-15 - 12:04:12 +0000
     prometheus.io/scrape: "true"
     prometheus.io/path: /q/metrics
     prometheus.io/port: "8080"
@@ -29,8 +29,8 @@ apiVersion: apps/v1
 kind: Deployment
 metadata:
   annotations:
-    app.quarkus.io/commit-id: 9d36a29ba5ef1fb46f7b51a5c477bdc4410ba548
-    app.quarkus.io/build-timestamp: 2023-11-08 - 11:15:43 +0000
+    app.quarkus.io/commit-id: 46486023929121fc955e9550fc8fd625ded433d2
+    app.quarkus.io/build-timestamp: 2023-12-15 - 12:04:12 +0000
     prometheus.io/scrape: "true"
     prometheus.io/path: /q/metrics
     prometheus.io/port: "8080"
@@ -47,8 +47,8 @@ spec:
   template:
     metadata:
       annotations:
-        app.quarkus.io/commit-id: 9d36a29ba5ef1fb46f7b51a5c477bdc4410ba548
-        app.quarkus.io/build-timestamp: 2023-11-08 - 11:15:43 +0000
+        app.quarkus.io/commit-id: 46486023929121fc955e9550fc8fd625ded433d2
+        app.quarkus.io/build-timestamp: 2023-12-15 - 12:04:12 +0000
         prometheus.io/scrape: "true"
         prometheus.io/path: /q/metrics
         prometheus.io/port: "8080"