diff --git a/src/monitoring/service/MetricsDBTools.py b/src/monitoring/service/MetricsDBTools.py
index 11574e8f6577db0bab4add96da8157496d40e6f5..fd9c092b2d061865cb8c3d625eef8b5d2ef0eab7 100644
--- a/src/monitoring/service/MetricsDBTools.py
+++ b/src/monitoring/service/MetricsDBTools.py
@@ -317,6 +317,7 @@ class MetricsDB():
                     elif (not inRange and kpiMinIsNone and not kpiMaxIsNone and not includeMaxValue):
                         if (kpi_value > kpiMaxValue):
                             alarm = True
+
                     if alarm:
                         valid_kpi_list.append(kpi)
                 if valid_kpi_list:
diff --git a/src/policy/src/test/java/eu/teraflow/policy/SerializerTest.java b/src/policy/src/test/java/eu/teraflow/policy/SerializerTest.java
index 31823e3f6a4b101a8e4deab967723b61a4dd0e97..32055a1820365ffc0f048fa70e99df5f3369fd81 100644
--- a/src/policy/src/test/java/eu/teraflow/policy/SerializerTest.java
+++ b/src/policy/src/test/java/eu/teraflow/policy/SerializerTest.java
@@ -4,7 +4,7 @@
 * 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
-*provideKpiValueRanges
+*
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
diff --git a/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java b/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java
index dc10cfe593fd977f05333ff82c182f2c2e5cc926..fa74d7c132eb2753ee941f5eacca7a564424288e 100644
--- a/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java
+++ b/src/policy/target/generated-sources/grpc/context/ContextOuterClass.java
@@ -11075,6 +11075,9 @@ public final class ContextOuterClass {
         return s;
       }
     }
+
+    public static final int NAME_FIELD_NUMBER = 2;
+    private volatile java.lang.Object name_;
     /**
      * <code>string name = 2;</code>
      * @return The bytes for name.
@@ -24638,11 +24641,15 @@ public final class ContextOuterClass {
           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);
+      /**
+       * <code>.context.DeviceOperationalStatusEnum device_operational_status = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearDeviceOperationalStatus() {
+        
+        deviceOperationalStatus_ = 0;
+        onChanged();
+        return this;
       }
 
 
@@ -24750,7 +24757,6 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -25199,6 +25205,9 @@ public final class ContextOuterClass {
       private com.google.protobuf.RepeatedFieldBuilderV3<
           context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdsBuilder_;
 
+      private context.ContextOuterClass.Uuid linkUuid_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> linkUuidBuilder_;
       /**
        * <code>repeated .context.LinkId link_ids = 1;</code>
        */
@@ -25258,6 +25267,7 @@ public final class ContextOuterClass {
         } else {
           linkIdsBuilder_.setMessage(index, builderForValue.build());
         }
+
         return this;
       }
       /**
@@ -25274,6 +25284,7 @@ public final class ContextOuterClass {
         } else {
           linkIdsBuilder_.addMessage(value);
         }
+
         return this;
       }
       /**
@@ -25347,6 +25358,7 @@ public final class ContextOuterClass {
         } else {
           linkIdsBuilder_.clear();
         }
+
         return this;
       }
       /**
@@ -25360,6 +25372,7 @@ public final class ContextOuterClass {
         } else {
           linkIdsBuilder_.remove(index);
         }
+
         return this;
       }
       /**
@@ -25555,6 +25568,25 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
+              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;
+            }
+            case 18: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              name_ = s;
+              break;
+            }
+            case 26: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                 links_ = new java.util.ArrayList<context.ContextOuterClass.Link>();
                 mutable_bitField0_ |= 0x00000001;
@@ -25622,6 +25654,9 @@ public final class ContextOuterClass {
     public int getLinksCount() {
       return links_.size();
     }
+
+    public static final int NAME_FIELD_NUMBER = 2;
+    private volatile java.lang.Object name_;
     /**
      * <code>repeated .context.Link links = 1;</code>
      */
@@ -25876,8 +25911,7 @@ public final class ContextOuterClass {
         } else {
           result.links_ = linksBuilder_.build();
         }
-        onBuilt();
-        return result;
+        return linkIdBuilder_;
       }
 
       @java.lang.Override
@@ -25917,8 +25951,7 @@ public final class ContextOuterClass {
         if (other instanceof context.ContextOuterClass.LinkList) {
           return mergeFrom((context.ContextOuterClass.LinkList)other);
         } else {
-          super.mergeFrom(other);
-          return this;
+          return (java.lang.String) ref;
         }
       }
 
@@ -25950,14 +25983,31 @@ public final class ContextOuterClass {
             }
           }
         }
-        this.mergeUnknownFields(other.unknownFields);
+      }
+      /**
+       * <code>string name = 2;</code>
+       * @param value The name to set.
+       * @return This builder for chaining.
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        name_ = value;
         onChanged();
         return this;
       }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
+      /**
+       * <code>string name = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearName() {
+        
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
       }
 
       @java.lang.Override
@@ -25978,7 +26028,6 @@ public final class ContextOuterClass {
         }
         return this;
       }
-      private int bitField0_;
 
       private java.util.List<context.ContextOuterClass.Link> links_ =
         java.util.Collections.emptyList();
@@ -26341,6 +26390,7 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
+      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -26374,7 +26424,8 @@ public final class ContextOuterClass {
                 subBuilder.mergeFrom(linkId_);
                 linkId_ = subBuilder.buildPartial();
               }
-
+              linkIds_.add(
+                  input.readMessage(context.ContextOuterClass.LinkId.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -26427,12 +26478,9 @@ public final class ContextOuterClass {
     public context.ContextOuterClass.Event getEvent() {
       return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
     }
-    /**
-     * <code>.context.Event event = 1;</code>
-     */
-    @java.lang.Override
-    public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-      return getEvent();
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return context.ContextOuterClass.internal_static_context_LinkIdList_descriptor;
     }
 
     public static final int LINK_ID_FIELD_NUMBER = 2;
@@ -26670,6 +26718,7 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getLinkIdsFieldBuilder();
         }
       }
       @java.lang.Override
@@ -26805,122 +26854,38 @@ public final class ContextOuterClass {
         }
         return this;
       }
+      private int bitField0_;
 
-      private context.ContextOuterClass.Event event_;
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> eventBuilder_;
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return Whether the event field is set.
-       */
-      public boolean hasEvent() {
-        return eventBuilder_ != null || event_ != null;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       * @return The event.
-       */
-      public context.ContextOuterClass.Event getEvent() {
-        if (eventBuilder_ == null) {
-          return event_ == null ? context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        } else {
-          return eventBuilder_.getMessage();
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (value == null) {
-            throw new NullPointerException();
-          }
-          event_ = value;
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(value);
-        }
-
-        return this;
+      private java.util.List<context.ContextOuterClass.LinkId> linkIds_ =
+        java.util.Collections.emptyList();
+      private void ensureLinkIdsIsMutable() {
+        if (!((bitField0_ & 0x00000001) != 0)) {
+          linkIds_ = new java.util.ArrayList<context.ContextOuterClass.LinkId>(linkIds_);
+          bitField0_ |= 0x00000001;
+         }
       }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder setEvent(
-          context.ContextOuterClass.Event.Builder builderForValue) {
-        if (eventBuilder_ == null) {
-          event_ = builderForValue.build();
-          onChanged();
-        } else {
-          eventBuilder_.setMessage(builderForValue.build());
-        }
 
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public Builder mergeEvent(context.ContextOuterClass.Event value) {
-        if (eventBuilder_ == null) {
-          if (event_ != null) {
-            event_ =
-              context.ContextOuterClass.Event.newBuilder(event_).mergeFrom(value).buildPartial();
-          } else {
-            event_ = value;
-          }
-          onChanged();
-        } else {
-          eventBuilder_.mergeFrom(value);
-        }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          context.ContextOuterClass.LinkId, context.ContextOuterClass.LinkId.Builder, context.ContextOuterClass.LinkIdOrBuilder> linkIdsBuilder_;
 
-        return this;
-      }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.LinkId link_ids = 1;</code>
        */
-      public Builder clearEvent() {
-        if (eventBuilder_ == null) {
-          event_ = null;
-          onChanged();
+      public java.util.List<context.ContextOuterClass.LinkId> getLinkIdsList() {
+        if (linkIdsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(linkIds_);
         } else {
-          event_ = null;
-          eventBuilder_ = null;
+          return linkIdsBuilder_.getMessageList();
         }
-
-        return this;
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      public context.ContextOuterClass.Event.Builder getEventBuilder() {
-        
-        onChanged();
-        return getEventFieldBuilder().getBuilder();
       }
       /**
-       * <code>.context.Event event = 1;</code>
+       * <code>repeated .context.LinkId link_ids = 1;</code>
        */
-      public context.ContextOuterClass.EventOrBuilder getEventOrBuilder() {
-        if (eventBuilder_ != null) {
-          return eventBuilder_.getMessageOrBuilder();
+      public int getLinkIdsCount() {
+        if (linkIdsBuilder_ == null) {
+          return linkIds_.size();
         } else {
-          return event_ == null ?
-              context.ContextOuterClass.Event.getDefaultInstance() : event_;
-        }
-      }
-      /**
-       * <code>.context.Event event = 1;</code>
-       */
-      private com.google.protobuf.SingleFieldBuilderV3<
-          context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder> 
-          getEventFieldBuilder() {
-        if (eventBuilder_ == null) {
-          eventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              context.ContextOuterClass.Event, context.ContextOuterClass.Event.Builder, context.ContextOuterClass.EventOrBuilder>(
-                  getEvent(),
-                  getParentForChildren(),
-                  isClean());
-          event_ = null;
+          return linkIdsBuilder_.getCount();
         }
         return eventBuilder_;
       }
@@ -26945,6 +26910,7 @@ public final class ContextOuterClass {
         } else {
           return linkIdBuilder_.getMessage();
         }
+        return this;
       }
       /**
        * <code>.context.LinkId link_id = 2;</code>
@@ -26959,7 +26925,6 @@ public final class ContextOuterClass {
         } else {
           linkIdBuilder_.setMessage(value);
         }
-
         return this;
       }
       /**
@@ -26973,7 +26938,6 @@ public final class ContextOuterClass {
         } else {
           linkIdBuilder_.setMessage(builderForValue.build());
         }
-
         return this;
       }
       /**
@@ -26991,7 +26955,6 @@ public final class ContextOuterClass {
         } else {
           linkIdBuilder_.mergeFrom(value);
         }
-
         return this;
       }
       /**
@@ -27005,7 +26968,6 @@ public final class ContextOuterClass {
           linkId_ = null;
           linkIdBuilder_ = null;
         }
-
         return this;
       }
       /**
@@ -27169,6 +27131,7 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
+      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -27202,7 +27165,8 @@ public final class ContextOuterClass {
                 subBuilder.mergeFrom(serviceUuid_);
                 serviceUuid_ = subBuilder.buildPartial();
               }
-
+              links_.add(
+                  input.readMessage(context.ContextOuterClass.Link.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -27220,6 +27184,9 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          links_ = java.util.Collections.unmodifiableList(links_);
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
@@ -27502,6 +27469,7 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getLinksFieldBuilder();
         }
       }
       @java.lang.Override
@@ -27596,8 +27564,7 @@ public final class ContextOuterClass {
         if (other instanceof context.ContextOuterClass.ServiceId) {
           return mergeFrom((context.ContextOuterClass.ServiceId)other);
         } else {
-          super.mergeFrom(other);
-          return this;
+          return linksBuilder_.getCount();
         }
       }
 
@@ -27609,14 +27576,6 @@ public final class ContextOuterClass {
         if (other.hasServiceUuid()) {
           mergeServiceUuid(other.getServiceUuid());
         }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
       }
 
       @java.lang.Override
@@ -27634,6 +27593,11 @@ public final class ContextOuterClass {
           if (parsedMessage != null) {
             mergeFrom(parsedMessage);
           }
+          ensureLinksIsMutable();
+          links_.set(index, value);
+          onChanged();
+        } else {
+          linksBuilder_.setMessage(index, value);
         }
         return this;
       }
@@ -27777,6 +27741,7 @@ public final class ContextOuterClass {
         } else {
           return serviceUuidBuilder_.getMessage();
         }
+        return this;
       }
       /**
        * <code>.context.Uuid service_uuid = 2;</code>
@@ -27791,7 +27756,6 @@ public final class ContextOuterClass {
         } else {
           serviceUuidBuilder_.setMessage(value);
         }
-
         return this;
       }
       /**
@@ -27805,7 +27769,6 @@ public final class ContextOuterClass {
         } else {
           serviceUuidBuilder_.setMessage(builderForValue.build());
         }
-
         return this;
       }
       /**
@@ -27823,7 +27786,6 @@ public final class ContextOuterClass {
         } else {
           serviceUuidBuilder_.mergeFrom(value);
         }
-
         return this;
       }
       /**
@@ -27837,7 +27799,6 @@ public final class ContextOuterClass {
           serviceUuid_ = null;
           serviceUuidBuilder_ = null;
         }
-
         return this;
       }
       /**
@@ -27858,6 +27819,7 @@ public final class ContextOuterClass {
           return serviceUuid_ == null ?
               context.ContextOuterClass.Uuid.getDefaultInstance() : serviceUuid_;
         }
+        return this;
       }
       /**
        * <code>.context.Uuid service_uuid = 2;</code>
@@ -28102,7 +28064,6 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -29022,7 +28983,6 @@ public final class ContextOuterClass {
         }
         return this;
       }
-      private int bitField0_;
 
       private context.ContextOuterClass.ServiceId serviceId_;
       private com.google.protobuf.SingleFieldBuilderV3<
@@ -29344,6 +29304,7 @@ public final class ContextOuterClass {
         } else {
           serviceEndpointIdsBuilder_.setMessage(index, builderForValue.build());
         }
+
         return this;
       }
       /**
@@ -29360,6 +29321,7 @@ public final class ContextOuterClass {
         } else {
           serviceEndpointIdsBuilder_.addMessage(value);
         }
+
         return this;
       }
       /**
@@ -29433,6 +29395,7 @@ public final class ContextOuterClass {
         } else {
           serviceEndpointIdsBuilder_.clear();
         }
+
         return this;
       }
       /**
@@ -29446,6 +29409,7 @@ public final class ContextOuterClass {
         } else {
           serviceEndpointIdsBuilder_.remove(index);
         }
+
         return this;
       }
       /**
@@ -30001,6 +29965,10 @@ public final class ContextOuterClass {
       public boolean hasTimestamp() {
         return timestampBuilder_ != null || timestamp_ != null;
       }
+
+      private context.ContextOuterClass.Uuid serviceUuid_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> serviceUuidBuilder_;
       /**
        * <code>.context.Timestamp timestamp = 8;</code>
        * @return The timestamp.
@@ -30552,6 +30520,15 @@ public final class ContextOuterClass {
         if (other.serviceStatus_ != 0) {
           setServiceStatusValue(other.getServiceStatusValue());
         }
+        if (other.hasServiceStatus()) {
+          mergeServiceStatus(other.getServiceStatus());
+        }
+        if (other.hasServiceConfig()) {
+          mergeServiceConfig(other.getServiceConfig());
+        }
+        if (other.hasTimestamp()) {
+          mergeTimestamp(other.getTimestamp());
+        }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
@@ -30562,6 +30539,270 @@ public final class ContextOuterClass {
         return true;
       }
 
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        context.ContextOuterClass.Service parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (context.ContextOuterClass.Service) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private context.ContextOuterClass.ServiceId serviceId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
+      /**
+       * <code>.context.ServiceId service_id = 1;</code>
+       * @return Whether the serviceId field is set.
+       */
+      public boolean hasServiceId() {
+        return serviceIdBuilder_ != null || serviceId_ != null;
+      }
+      /**
+       * <code>.context.ServiceId service_id = 1;</code>
+       * @return The serviceId.
+       */
+      public context.ContextOuterClass.ServiceId getServiceId() {
+        if (serviceIdBuilder_ == null) {
+          return serviceId_ == null ? context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+        } else {
+          return serviceIdBuilder_.getMessage();
+        }
+      }
+      /**
+       * <code>.context.ServiceId service_id = 1;</code>
+       */
+      public Builder setServiceId(context.ContextOuterClass.ServiceId value) {
+        if (serviceIdBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          serviceId_ = value;
+          onChanged();
+        } else {
+          serviceIdBuilder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ServiceId service_id = 1;</code>
+       */
+      public Builder setServiceId(
+          context.ContextOuterClass.ServiceId.Builder builderForValue) {
+        if (serviceIdBuilder_ == null) {
+          serviceId_ = builderForValue.build();
+          onChanged();
+        } else {
+          serviceIdBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ServiceId service_id = 1;</code>
+       */
+      public Builder mergeServiceId(context.ContextOuterClass.ServiceId value) {
+        if (serviceIdBuilder_ == null) {
+          if (serviceId_ != null) {
+            serviceId_ =
+              context.ContextOuterClass.ServiceId.newBuilder(serviceId_).mergeFrom(value).buildPartial();
+          } else {
+            serviceId_ = value;
+          }
+          onChanged();
+        } else {
+          serviceIdBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ServiceId service_id = 1;</code>
+       */
+      public Builder clearServiceId() {
+        if (serviceIdBuilder_ == null) {
+          serviceId_ = null;
+          onChanged();
+        } else {
+          serviceId_ = null;
+          serviceIdBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ServiceId service_id = 1;</code>
+       */
+      public context.ContextOuterClass.ServiceId.Builder getServiceIdBuilder() {
+        
+        onChanged();
+        return getServiceIdFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.ServiceId service_id = 1;</code>
+       */
+      public context.ContextOuterClass.ServiceIdOrBuilder getServiceIdOrBuilder() {
+        if (serviceIdBuilder_ != null) {
+          return serviceIdBuilder_.getMessageOrBuilder();
+        } else {
+          return serviceId_ == null ?
+              context.ContextOuterClass.ServiceId.getDefaultInstance() : serviceId_;
+        }
+      }
+      /**
+       * <code>.context.ServiceId service_id = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> 
+          getServiceIdFieldBuilder() {
+        if (serviceIdBuilder_ == null) {
+          serviceIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder>(
+                  getServiceId(),
+                  getParentForChildren(),
+                  isClean());
+          serviceId_ = null;
+        }
+        return serviceIdBuilder_;
+      }
+
+      private java.lang.Object name_ = "";
+      /**
+       * <code>string name = 2;</code>
+       * @return The name.
+       */
+      public java.lang.String getName() {
+        java.lang.Object ref = name_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          name_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>string name = 2;</code>
+       * @return The bytes for name.
+       */
+      public com.google.protobuf.ByteString
+          getNameBytes() {
+        java.lang.Object ref = name_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          name_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>string name = 2;</code>
+       * @param value The name to set.
+       * @return This builder for chaining.
+       */
+      public Builder setName(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        name_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>string name = 2;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearName() {
+        
+        name_ = getDefaultInstance().getName();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>string name = 2;</code>
+       * @param value The bytes for name to set.
+       * @return This builder for chaining.
+       */
+      public Builder setNameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        
+        name_ = value;
+        onChanged();
+        return this;
+      }
+
+      private int serviceType_ = 0;
+      /**
+       * <code>.context.ServiceTypeEnum service_type = 3;</code>
+       * @return The enum numeric value on the wire for serviceType.
+       */
+      @java.lang.Override public int getServiceTypeValue() {
+        return serviceType_;
+      }
+      /**
+       * <code>.context.ServiceTypeEnum service_type = 3;</code>
+       * @param value The enum numeric value on the wire for serviceType to set.
+       * @return This builder for chaining.
+       */
+      public Builder setServiceTypeValue(int value) {
+        
+        serviceType_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>.context.ServiceTypeEnum service_type = 3;</code>
+       * @return The serviceType.
+       */
+      @java.lang.Override
+      public context.ContextOuterClass.ServiceTypeEnum getServiceType() {
+        @SuppressWarnings("deprecation")
+        context.ContextOuterClass.ServiceTypeEnum result = context.ContextOuterClass.ServiceTypeEnum.valueOf(serviceType_);
+        return result == null ? context.ContextOuterClass.ServiceTypeEnum.UNRECOGNIZED : result;
+      }
+      /**
+       * <code>.context.ServiceTypeEnum service_type = 3;</code>
+       * @param value The serviceType to set.
+       * @return This builder for chaining.
+       */
+      public Builder setServiceType(context.ContextOuterClass.ServiceTypeEnum value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        
+        serviceType_ = value.getNumber();
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
+      }
+
       @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
@@ -30876,15 +31117,12 @@ public final class ContextOuterClass {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(1, configRules_.get(i));
       }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
-
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
+      /**
+       * <code>repeated .context.EndPointId service_endpoint_ids = 4;</code>
+       */
+      public context.ContextOuterClass.EndPointId.Builder getServiceEndpointIdsBuilder(
+          int index) {
+        return getServiceEndpointIdsFieldBuilder().getBuilder(index);
       }
       if (!(obj instanceof context.ContextOuterClass.ServiceConfig)) {
         return super.equals(obj);
@@ -30908,10 +31146,6 @@ public final class ContextOuterClass {
         hash = (37 * hash) + CONFIG_RULES_FIELD_NUMBER;
         hash = (53 * hash) + getConfigRulesList().hashCode();
       }
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
 
     public static context.ContextOuterClass.ServiceConfig parseFrom(
         java.nio.ByteBuffer data)
@@ -31027,17 +31261,29 @@ public final class ContextOuterClass {
       private Builder() {
         maybeForceBuilderInitialization();
       }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
+      /**
+       * <code>repeated .context.Constraint service_constraints = 5;</code>
+       */
+      public Builder setServiceConstraints(
+          int index, context.ContextOuterClass.Constraint value) {
+        if (serviceConstraintsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureServiceConstraintsIsMutable();
+          serviceConstraints_.set(index, value);
+          onChanged();
+        } else {
+          serviceConstraintsBuilder_.setMessage(index, value);
+        }
+        return this;
       }
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
           getConfigRulesFieldBuilder();
         }
+        return this;
       }
       @java.lang.Override
       public Builder clear() {
@@ -31068,7 +31314,97 @@ public final class ContextOuterClass {
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
-        return result;
+        return this;
+      }
+      /**
+       * <code>repeated .context.Constraint service_constraints = 5;</code>
+       */
+      public Builder clearServiceConstraints() {
+        if (serviceConstraintsBuilder_ == null) {
+          serviceConstraints_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000002);
+          onChanged();
+        } else {
+          serviceConstraintsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .context.Constraint service_constraints = 5;</code>
+       */
+      public Builder removeServiceConstraints(int index) {
+        if (serviceConstraintsBuilder_ == null) {
+          ensureServiceConstraintsIsMutable();
+          serviceConstraints_.remove(index);
+          onChanged();
+        } else {
+          serviceConstraintsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * <code>repeated .context.Constraint service_constraints = 5;</code>
+       */
+      public context.ContextOuterClass.Constraint.Builder getServiceConstraintsBuilder(
+          int index) {
+        return getServiceConstraintsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * <code>repeated .context.Constraint service_constraints = 5;</code>
+       */
+      public context.ContextOuterClass.ConstraintOrBuilder getServiceConstraintsOrBuilder(
+          int index) {
+        if (serviceConstraintsBuilder_ == null) {
+          return serviceConstraints_.get(index);  } else {
+          return serviceConstraintsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * <code>repeated .context.Constraint service_constraints = 5;</code>
+       */
+      public java.util.List<? extends context.ContextOuterClass.ConstraintOrBuilder> 
+           getServiceConstraintsOrBuilderList() {
+        if (serviceConstraintsBuilder_ != null) {
+          return serviceConstraintsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(serviceConstraints_);
+        }
+      }
+      /**
+       * <code>repeated .context.Constraint service_constraints = 5;</code>
+       */
+      public context.ContextOuterClass.Constraint.Builder addServiceConstraintsBuilder() {
+        return getServiceConstraintsFieldBuilder().addBuilder(
+            context.ContextOuterClass.Constraint.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .context.Constraint service_constraints = 5;</code>
+       */
+      public context.ContextOuterClass.Constraint.Builder addServiceConstraintsBuilder(
+          int index) {
+        return getServiceConstraintsFieldBuilder().addBuilder(
+            index, context.ContextOuterClass.Constraint.getDefaultInstance());
+      }
+      /**
+       * <code>repeated .context.Constraint service_constraints = 5;</code>
+       */
+      public java.util.List<context.ContextOuterClass.Constraint.Builder> 
+           getServiceConstraintsBuilderList() {
+        return getServiceConstraintsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder> 
+          getServiceConstraintsFieldBuilder() {
+        if (serviceConstraintsBuilder_ == null) {
+          serviceConstraintsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              context.ContextOuterClass.Constraint, context.ContextOuterClass.Constraint.Builder, context.ContextOuterClass.ConstraintOrBuilder>(
+                  serviceConstraints_,
+                  ((bitField0_ & 0x00000002) != 0),
+                  getParentForChildren(),
+                  isClean());
+          serviceConstraints_ = null;
+        }
+        return serviceConstraintsBuilder_;
       }
 
       @java.lang.Override
@@ -31084,51 +31420,16 @@ public final class ContextOuterClass {
         } else {
           result.configRules_ = configRulesBuilder_.build();
         }
-        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);
+        return this;
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof context.ContextOuterClass.ServiceConfig) {
           return mergeFrom((context.ContextOuterClass.ServiceConfig)other);
         } else {
-          super.mergeFrom(other);
-          return this;
+          serviceStatusBuilder_.mergeFrom(value);
         }
-      }
 
       public Builder mergeFrom(context.ContextOuterClass.ServiceConfig other) {
         if (other == context.ContextOuterClass.ServiceConfig.getDefaultInstance()) return this;
@@ -31162,10 +31463,19 @@ public final class ContextOuterClass {
         onChanged();
         return this;
       }
+      /**
+       * <code>.context.ServiceStatus service_status = 6;</code>
+       */
+      public Builder clearServiceStatus() {
+        if (serviceStatusBuilder_ == null) {
+          serviceStatus_ = null;
+          onChanged();
+        } else {
+          serviceStatus_ = null;
+          serviceStatusBuilder_ = null;
+        }
 
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
+        return this;
       }
 
       @java.lang.Override
@@ -31184,7 +31494,22 @@ public final class ContextOuterClass {
             mergeFrom(parsedMessage);
           }
         }
-        return this;
+      }
+      /**
+       * <code>.context.ServiceStatus service_status = 6;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.ServiceStatus, context.ContextOuterClass.ServiceStatus.Builder, context.ContextOuterClass.ServiceStatusOrBuilder> 
+          getServiceStatusFieldBuilder() {
+        if (serviceStatusBuilder_ == null) {
+          serviceStatusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.ServiceStatus, context.ContextOuterClass.ServiceStatus.Builder, context.ContextOuterClass.ServiceStatusOrBuilder>(
+                  getServiceStatus(),
+                  getParentForChildren(),
+                  isClean());
+          serviceStatus_ = null;
+        }
+        return serviceStatusBuilder_;
       }
       private int bitField0_;
 
@@ -33591,6 +33916,7 @@ public final class ContextOuterClass {
           super.mergeFrom(other);
           return this;
         }
+        return this;
       }
 
       public Builder mergeFrom(context.ContextOuterClass.ServiceFilter other) {
@@ -33656,6 +33982,7 @@ public final class ContextOuterClass {
         } else {
           return serviceIdsBuilder_.getMessage();
         }
+        return this;
       }
       /**
        * <code>.context.ServiceIdList service_ids = 1;</code>
@@ -33670,7 +33997,6 @@ public final class ContextOuterClass {
         } else {
           serviceIdsBuilder_.setMessage(value);
         }
-
         return this;
       }
       /**
@@ -33684,7 +34010,6 @@ public final class ContextOuterClass {
         } else {
           serviceIdsBuilder_.setMessage(builderForValue.build());
         }
-
         return this;
       }
       /**
@@ -33702,8 +34027,6 @@ public final class ContextOuterClass {
         } else {
           serviceIdsBuilder_.mergeFrom(value);
         }
-
-        return this;
       }
       /**
        * <code>.context.ServiceIdList service_ids = 1;</code>
@@ -33716,8 +34039,6 @@ public final class ContextOuterClass {
           serviceIds_ = null;
           serviceIdsBuilder_ = null;
         }
-
-        return this;
       }
       /**
        * <code>.context.ServiceIdList service_ids = 1;</code>
@@ -33969,6 +34290,7 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
+      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -34020,6 +34342,9 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          services_ = java.util.Collections.unmodifiableList(services_);
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
@@ -34298,6 +34623,7 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getServicesFieldBuilder();
         }
       }
       @java.lang.Override
@@ -35406,6 +35732,10 @@ public final class ContextOuterClass {
           return sliceUuidBuilder_.getMessage();
         }
       }
+
+      private context.ContextOuterClass.ServiceId serviceId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.ServiceId, context.ContextOuterClass.ServiceId.Builder, context.ContextOuterClass.ServiceIdOrBuilder> serviceIdBuilder_;
       /**
        * <code>.context.Uuid slice_uuid = 2;</code>
        */
@@ -35783,7 +36113,6 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
-      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -36113,6 +36442,9 @@ public final class ContextOuterClass {
     public int getSliceServiceIdsCount() {
       return sliceServiceIds_.size();
     }
+
+    public static final int SLICE_UUID_FIELD_NUMBER = 2;
+    private context.ContextOuterClass.Uuid sliceUuid_;
     /**
      * <code>repeated .context.ServiceId slice_service_ids = 5;</code>
      */
@@ -36998,6 +37330,10 @@ public final class ContextOuterClass {
 
         return this;
       }
+
+      private context.ContextOuterClass.Uuid sliceUuid_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> sliceUuidBuilder_;
       /**
        * <code>.context.SliceId slice_id = 1;</code>
        */
@@ -37082,6 +37418,8 @@ public final class ContextOuterClass {
         } else {
           return (java.lang.String) ref;
         }
+
+        return this;
       }
       /**
        * <code>string name = 2;</code>
@@ -37099,6 +37437,8 @@ public final class ContextOuterClass {
         } else {
           return (com.google.protobuf.ByteString) ref;
         }
+
+        return this;
       }
       /**
        * <code>string name = 2;</code>
@@ -38374,7 +38714,6 @@ public final class ContextOuterClass {
         } else {
           sliceOwnerBuilder_.setMessage(value);
         }
-
         return this;
       }
       /**
@@ -38388,7 +38727,6 @@ public final class ContextOuterClass {
         } else {
           sliceOwnerBuilder_.setMessage(builderForValue.build());
         }
-
         return this;
       }
       /**
@@ -38402,11 +38740,12 @@ public final class ContextOuterClass {
           } else {
             sliceOwner_ = value;
           }
+          ensureSliceServiceIdsIsMutable();
+          sliceServiceIds_.add(value);
           onChanged();
         } else {
           sliceOwnerBuilder_.mergeFrom(value);
         }
-
         return this;
       }
       /**
@@ -38420,7 +38759,6 @@ public final class ContextOuterClass {
           sliceOwner_ = null;
           sliceOwnerBuilder_ = null;
         }
-
         return this;
       }
       /**
@@ -38479,6 +38817,7 @@ public final class ContextOuterClass {
         } else {
           return timestampBuilder_.getMessage();
         }
+        return this;
       }
       /**
        * <code>.context.Timestamp timestamp = 10;</code>
@@ -38493,7 +38832,6 @@ public final class ContextOuterClass {
         } else {
           timestampBuilder_.setMessage(value);
         }
-
         return this;
       }
       /**
@@ -38507,7 +38845,6 @@ public final class ContextOuterClass {
         } else {
           timestampBuilder_.setMessage(builderForValue.build());
         }
-
         return this;
       }
       /**
@@ -38525,7 +38862,6 @@ public final class ContextOuterClass {
         } else {
           timestampBuilder_.mergeFrom(value);
         }
-
         return this;
       }
       /**
@@ -38539,7 +38875,6 @@ public final class ContextOuterClass {
           timestamp_ = null;
           timestampBuilder_ = null;
         }
-
         return this;
       }
       /**
@@ -38822,16 +39157,17 @@ public final class ContextOuterClass {
       }
     }
 
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
+      private java.util.List<context.ContextOuterClass.SliceId> sliceSubsliceIds_ =
+        java.util.Collections.emptyList();
+      private void ensureSliceSubsliceIdsIsMutable() {
+        if (!((bitField0_ & 0x00000008) != 0)) {
+          sliceSubsliceIds_ = new java.util.ArrayList<context.ContextOuterClass.SliceId>(sliceSubsliceIds_);
+          bitField0_ |= 0x00000008;
+         }
+      }
 
-      memoizedIsInitialized = 1;
-      return true;
-    }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceSubsliceIdsBuilder_;
 
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
@@ -38858,15 +39194,19 @@ public final class ContextOuterClass {
       if (!getOwnerStringBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, ownerString_);
       }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
-
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
+      /**
+       * <code>repeated .context.SliceId slice_subslice_ids = 6;</code>
+       */
+      public Builder setSliceSubsliceIds(
+          int index, context.ContextOuterClass.SliceId.Builder builderForValue) {
+        if (sliceSubsliceIdsBuilder_ == null) {
+          ensureSliceSubsliceIdsIsMutable();
+          sliceSubsliceIds_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          sliceSubsliceIdsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
       }
       if (!(obj instanceof context.ContextOuterClass.SliceOwner)) {
         return super.equals(obj);
@@ -39011,21 +39351,55 @@ public final class ContextOuterClass {
             .ensureFieldAccessorsInitialized(
                 context.ContextOuterClass.SliceOwner.class, context.ContextOuterClass.SliceOwner.Builder.class);
       }
+      /**
+       * <code>.context.SliceStatus slice_status = 7;</code>
+       */
+      public Builder setSliceStatus(context.ContextOuterClass.SliceStatus value) {
+        if (sliceStatusBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          sliceStatus_ = value;
+          onChanged();
+        } else {
+          sliceStatusBuilder_.setMessage(value);
+        }
 
       // Construct using context.ContextOuterClass.SliceOwner.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
+      /**
+       * <code>.context.SliceStatus slice_status = 7;</code>
+       */
+      public Builder setSliceStatus(
+          context.ContextOuterClass.SliceStatus.Builder builderForValue) {
+        if (sliceStatusBuilder_ == null) {
+          sliceStatus_ = builderForValue.build();
+          onChanged();
+        } else {
+          sliceStatusBuilder_.setMessage(builderForValue.build());
+        }
 
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
+        return this;
       }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
+      /**
+       * <code>.context.SliceStatus slice_status = 7;</code>
+       */
+      public Builder mergeSliceStatus(context.ContextOuterClass.SliceStatus value) {
+        if (sliceStatusBuilder_ == null) {
+          if (sliceStatus_ != null) {
+            sliceStatus_ =
+              context.ContextOuterClass.SliceStatus.newBuilder(sliceStatus_).mergeFrom(value).buildPartial();
+          } else {
+            sliceStatus_ = value;
+          }
+          onChanged();
+        } else {
+          sliceStatusBuilder_.mergeFrom(value);
         }
+
+        return this;
       }
       @java.lang.Override
       public Builder clear() {
@@ -39058,7 +39432,6 @@ public final class ContextOuterClass {
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
-        return result;
       }
 
       @java.lang.Override
@@ -39074,47 +39447,15 @@ public final class ContextOuterClass {
         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);
+        return this;
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof context.ContextOuterClass.SliceOwner) {
           return mergeFrom((context.ContextOuterClass.SliceOwner)other);
         } else {
-          super.mergeFrom(other);
-          return this;
+          sliceConfigBuilder_.mergeFrom(value);
         }
-      }
 
       public Builder mergeFrom(context.ContextOuterClass.SliceOwner other) {
         if (other == context.ContextOuterClass.SliceOwner.getDefaultInstance()) return this;
@@ -39129,10 +39470,19 @@ public final class ContextOuterClass {
         onChanged();
         return this;
       }
+      /**
+       * <code>.context.SliceConfig slice_config = 8;</code>
+       */
+      public Builder clearSliceConfig() {
+        if (sliceConfigBuilder_ == null) {
+          sliceConfig_ = null;
+          onChanged();
+        } else {
+          sliceConfig_ = null;
+          sliceConfigBuilder_ = null;
+        }
 
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
+        return this;
       }
 
       @java.lang.Override
@@ -39151,7 +39501,22 @@ public final class ContextOuterClass {
             mergeFrom(parsedMessage);
           }
         }
-        return this;
+      }
+      /**
+       * <code>.context.SliceConfig slice_config = 8;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.SliceConfig, context.ContextOuterClass.SliceConfig.Builder, context.ContextOuterClass.SliceConfigOrBuilder> 
+          getSliceConfigFieldBuilder() {
+        if (sliceConfigBuilder_ == null) {
+          sliceConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.SliceConfig, context.ContextOuterClass.SliceConfig.Builder, context.ContextOuterClass.SliceConfigOrBuilder>(
+                  getSliceConfig(),
+                  getParentForChildren(),
+                  isClean());
+          sliceConfig_ = null;
+        }
+        return sliceConfigBuilder_;
       }
 
       private context.ContextOuterClass.Uuid ownerUuid_;
@@ -39796,9 +40161,22 @@ public final class ContextOuterClass {
         return this;
       }
 
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code context.SliceOwner}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:context.SliceOwner)
+        context.ContextOuterClass.SliceOwnerOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return context.ContextOuterClass.internal_static_context_SliceOwner_descriptor;
       }
 
       @java.lang.Override
@@ -40287,6 +40665,7 @@ public final class ContextOuterClass {
         } else {
           configRulesBuilder_.clear();
         }
+
         return this;
       }
 
@@ -40498,7 +40877,6 @@ public final class ContextOuterClass {
         } else {
           configRulesBuilder_.setMessage(index, builderForValue.build());
         }
-        return this;
       }
       /**
        * <code>repeated .context.ConfigRule config_rules = 1;</code>
@@ -40514,6 +40892,8 @@ public final class ContextOuterClass {
         } else {
           configRulesBuilder_.addMessage(value);
         }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
         return this;
       }
       /**
@@ -40533,6 +40913,8 @@ public final class ContextOuterClass {
         }
         return this;
       }
+
+      private int sliceStatus_ = 0;
       /**
        * <code>repeated .context.ConfigRule config_rules = 1;</code>
        */
@@ -40587,6 +40969,9 @@ public final class ContextOuterClass {
         } else {
           configRulesBuilder_.clear();
         }
+        
+        sliceStatus_ = value.getNumber();
+        onChanged();
         return this;
       }
       /**
@@ -42389,6 +42774,7 @@ public final class ContextOuterClass {
       if (extensionRegistry == null) {
         throw new java.lang.NullPointerException();
       }
+      int mutable_bitField0_ = 0;
       com.google.protobuf.UnknownFieldSet.Builder unknownFields =
           com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
@@ -42452,6 +42838,9 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          slices_ = java.util.Collections.unmodifiableList(slices_);
+        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
@@ -42803,6 +43192,7 @@ public final class ContextOuterClass {
       private void maybeForceBuilderInitialization() {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
+          getSlicesFieldBuilder();
         }
       }
       @java.lang.Override
@@ -43955,6 +44345,10 @@ public final class ContextOuterClass {
           return sliceIdBuilder_.getMessage();
         }
       }
+
+      private context.ContextOuterClass.SliceId sliceId_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.SliceId, context.ContextOuterClass.SliceId.Builder, context.ContextOuterClass.SliceIdOrBuilder> sliceIdBuilder_;
       /**
        * <code>.context.SliceId slice_id = 2;</code>
        */
@@ -46097,6 +46491,8 @@ public final class ContextOuterClass {
         onChanged();
         return this;
       }
+
+      private int etherType_ ;
       /**
        * <code>string dst_mac_address = 2;</code>
        * @return This builder for chaining.
@@ -46206,6 +46602,8 @@ public final class ContextOuterClass {
         onChanged();
         return this;
       }
+
+      private int mplsTrafficClass_ ;
       /**
        * <code>uint32 mpls_label = 5;</code>
        * @return This builder for chaining.
@@ -48747,6 +49145,189 @@ public final class ContextOuterClass {
         return l0Builder_;
       }
 
+      private context.ContextOuterClass.ConnectionSettings_L2 l2_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.ConnectionSettings_L2, context.ContextOuterClass.ConnectionSettings_L2.Builder, context.ContextOuterClass.ConnectionSettings_L2OrBuilder> l2Builder_;
+      /**
+       * <code>.context.ConnectionSettings_L2 l2 = 2;</code>
+       * @return Whether the l2 field is set.
+       */
+      public boolean hasL2() {
+        return l2Builder_ != null || l2_ != null;
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof context.ContextOuterClass.ConnectionSettings) {
+          return mergeFrom((context.ContextOuterClass.ConnectionSettings)other);
+        } else {
+          return l2Builder_.getMessage();
+        }
+      }
+
+      public Builder mergeFrom(context.ContextOuterClass.ConnectionSettings other) {
+        if (other == context.ContextOuterClass.ConnectionSettings.getDefaultInstance()) return this;
+        if (other.hasL0()) {
+          mergeL0(other.getL0());
+        }
+        if (other.hasL2()) {
+          mergeL2(other.getL2());
+        }
+        if (other.hasL3()) {
+          mergeL3(other.getL3());
+        }
+        if (other.hasL4()) {
+          mergeL4(other.getL4());
+        }
+        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.ConnectionSettings parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (context.ContextOuterClass.ConnectionSettings) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+
+      private context.ContextOuterClass.ConnectionSettings_L0 l0_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder> l0Builder_;
+      /**
+       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       * @return Whether the l0 field is set.
+       */
+      public boolean hasL0() {
+        return l0Builder_ != null || l0_ != null;
+      }
+      /**
+       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       * @return The l0.
+       */
+      public context.ContextOuterClass.ConnectionSettings_L0 getL0() {
+        if (l0Builder_ == null) {
+          return l0_ == null ? context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
+        } else {
+          return l0Builder_.getMessage();
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       */
+      public Builder setL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
+        if (l0Builder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          l0_ = value;
+          onChanged();
+        } else {
+          l0Builder_.setMessage(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       */
+      public Builder setL0(
+          context.ContextOuterClass.ConnectionSettings_L0.Builder builderForValue) {
+        if (l0Builder_ == null) {
+          l0_ = builderForValue.build();
+          onChanged();
+        } else {
+          l0Builder_.setMessage(builderForValue.build());
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       */
+      public Builder mergeL0(context.ContextOuterClass.ConnectionSettings_L0 value) {
+        if (l0Builder_ == null) {
+          if (l0_ != null) {
+            l0_ =
+              context.ContextOuterClass.ConnectionSettings_L0.newBuilder(l0_).mergeFrom(value).buildPartial();
+          } else {
+            l0_ = value;
+          }
+          onChanged();
+        } else {
+          l0Builder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       */
+      public Builder clearL0() {
+        if (l0Builder_ == null) {
+          l0_ = null;
+          onChanged();
+        } else {
+          l0_ = null;
+          l0Builder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       */
+      public context.ContextOuterClass.ConnectionSettings_L0.Builder getL0Builder() {
+        
+        onChanged();
+        return getL0FieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       */
+      public context.ContextOuterClass.ConnectionSettings_L0OrBuilder getL0OrBuilder() {
+        if (l0Builder_ != null) {
+          return l0Builder_.getMessageOrBuilder();
+        } else {
+          return l0_ == null ?
+              context.ContextOuterClass.ConnectionSettings_L0.getDefaultInstance() : l0_;
+        }
+      }
+      /**
+       * <code>.context.ConnectionSettings_L0 l0 = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder> 
+          getL0FieldBuilder() {
+        if (l0Builder_ == null) {
+          l0Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.ConnectionSettings_L0, context.ContextOuterClass.ConnectionSettings_L0.Builder, context.ContextOuterClass.ConnectionSettings_L0OrBuilder>(
+                  getL0(),
+                  getParentForChildren(),
+                  isClean());
+          l0_ = null;
+        }
+        return l0Builder_;
+      }
+
       private context.ContextOuterClass.ConnectionSettings_L2 l2_;
       private com.google.protobuf.SingleFieldBuilderV3<
           context.ContextOuterClass.ConnectionSettings_L2, context.ContextOuterClass.ConnectionSettings_L2.Builder, context.ContextOuterClass.ConnectionSettings_L2OrBuilder> l2Builder_;
@@ -48903,6 +49484,10 @@ public final class ContextOuterClass {
 
         return this;
       }
+
+      private context.ContextOuterClass.ConnectionSettings_L3 l3_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.ConnectionSettings_L3, context.ContextOuterClass.ConnectionSettings_L3.Builder, context.ContextOuterClass.ConnectionSettings_L3OrBuilder> l3Builder_;
       /**
        * <code>.context.ConnectionSettings_L3 l3 = 3;</code>
        */
@@ -49006,6 +49591,10 @@ public final class ContextOuterClass {
           return l4Builder_.getMessage();
         }
       }
+
+      private context.ContextOuterClass.ConnectionSettings_L4 l4_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.ConnectionSettings_L4, context.ContextOuterClass.ConnectionSettings_L4.Builder, context.ContextOuterClass.ConnectionSettings_L4OrBuilder> l4Builder_;
       /**
        * <code>.context.ConnectionSettings_L4 l4 = 4;</code>
        */
@@ -49432,6 +50021,9 @@ public final class ContextOuterClass {
     public boolean hasServiceId() {
       return serviceId_ != null;
     }
+
+    public static final int SERVICE_ID_FIELD_NUMBER = 2;
+    private context.ContextOuterClass.ServiceId serviceId_;
     /**
      * <code>.context.ServiceId service_id = 2;</code>
      * @return The serviceId.
@@ -49585,7 +50177,9 @@ public final class ContextOuterClass {
       }
       unknownFields.writeTo(output);
     }
-
+    /**
+     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+     */
     @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
@@ -49616,7 +50210,9 @@ public final class ContextOuterClass {
       memoizedSize = size;
       return size;
     }
-
+    /**
+     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+     */
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -49649,7 +50245,9 @@ public final class ContextOuterClass {
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
-
+    /**
+     * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
+     */
     @java.lang.Override
     public int hashCode() {
       if (memoizedHashCode != 0) {
@@ -49752,25 +50350,31 @@ public final class ContextOuterClass {
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
+    public static final int SUB_SERVICE_IDS_FIELD_NUMBER = 4;
+    private java.util.List<context.ContextOuterClass.ServiceId> subServiceIds_;
+    /**
+     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+     */
     @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
+    public java.util.List<context.ContextOuterClass.ServiceId> getSubServiceIdsList() {
+      return subServiceIds_;
     }
     public static Builder newBuilder(context.ContextOuterClass.Connection prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
+    /**
+     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+     */
     @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
+    public int getSubServiceIdsCount() {
+      return subServiceIds_.size();
     }
-
+    /**
+     * <code>repeated .context.ServiceId sub_service_ids = 4;</code>
+     */
     @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
+    public context.ContextOuterClass.ServiceId getSubServiceIds(int index) {
+      return subServiceIds_.get(index);
     }
     /**
      * Protobuf type {@code context.Connection}
@@ -49906,37 +50510,14 @@ public final class ContextOuterClass {
         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 void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      if (connectionId_ != null) {
+        output.writeMessage(1, getConnectionId());
       }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+      if (serviceId_ != null) {
+        output.writeMessage(2, getServiceId());
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
@@ -50015,11 +50596,11 @@ public final class ContextOuterClass {
         onChanged();
         return this;
       }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
+      if (settings_ != null) {
+        output.writeMessage(5, getSettings());
       }
+      unknownFields.writeTo(output);
+    }
 
       @java.lang.Override
       public Builder mergeFrom(
@@ -50481,6 +51062,7 @@ public final class ContextOuterClass {
         } else {
           return java.util.Collections.unmodifiableList(pathHopsEndpointIds_);
         }
+        return this;
       }
       /**
        * <code>repeated .context.EndPointId path_hops_endpoint_ids = 3;</code>
@@ -51866,6 +52448,9 @@ public final class ContextOuterClass {
     public int getConnectionsCount() {
       return connections_.size();
     }
+
+    public static final int CONNECTIONS_FIELD_NUMBER = 1;
+    private java.util.List<context.ContextOuterClass.Connection> connections_;
     /**
      * <code>repeated .context.Connection connections = 1;</code>
      */
@@ -52232,6 +52817,14 @@ public final class ContextOuterClass {
           bitField0_ |= 0x00000001;
          }
       }
+      if (hasConnectionId()) {
+        hash = (37 * hash) + CONNECTION_ID_FIELD_NUMBER;
+        hash = (53 * hash) + getConnectionId().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
 
       private com.google.protobuf.RepeatedFieldBuilderV3<
           context.ContextOuterClass.Connection, context.ContextOuterClass.Connection.Builder, context.ContextOuterClass.ConnectionOrBuilder> connectionsBuilder_;
@@ -52311,7 +52904,6 @@ public final class ContextOuterClass {
         } else {
           connectionsBuilder_.addMessage(value);
         }
-        return this;
       }
       /**
        * <code>repeated .context.Connection connections = 1;</code>
@@ -52384,7 +52976,7 @@ public final class ContextOuterClass {
         } else {
           connectionsBuilder_.clear();
         }
-        return this;
+        return result;
       }
       /**
        * <code>repeated .context.Connection connections = 1;</code>
@@ -52426,6 +53018,8 @@ public final class ContextOuterClass {
         } else {
           return java.util.Collections.unmodifiableList(connections_);
         }
+        onBuilt();
+        return result;
       }
       /**
        * <code>repeated .context.Connection connections = 1;</code>
@@ -53527,6 +54121,9 @@ public final class ContextOuterClass {
     public context.ContextOuterClass.TopologyId getTopologyId() {
       return topologyId_ == null ? context.ContextOuterClass.TopologyId.getDefaultInstance() : topologyId_;
     }
+
+    public static final int ENDPOINT_UUID_FIELD_NUMBER = 3;
+    private context.ContextOuterClass.Uuid endpointUuid_;
     /**
      * <code>.context.TopologyId topology_id = 1;</code>
      */
@@ -54105,6 +54702,8 @@ public final class ContextOuterClass {
         } else {
           return deviceIdBuilder_.getMessage();
         }
+
+        return this;
       }
       /**
        * <code>.context.DeviceId device_id = 2;</code>
@@ -54747,6 +55346,9 @@ public final class ContextOuterClass {
     public kpi_sample_types.KpiSampleTypes.KpiSampleType getKpiSampleTypes(int index) {
       return kpiSampleTypes_converter_.convert(kpiSampleTypes_.get(index));
     }
+
+    public static final int NAME_FIELD_NUMBER = 2;
+    private volatile java.lang.Object name_;
     /**
      * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
      * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
@@ -55572,6 +56174,17 @@ public final class ContextOuterClass {
         onChanged();
         return this;
       }
+
+      private context.ContextOuterClass.Location endpointLocation_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Location, context.ContextOuterClass.Location.Builder, context.ContextOuterClass.LocationOrBuilder> endpointLocationBuilder_;
+      /**
+       * <code>.context.Location endpoint_location = 5;</code>
+       * @return Whether the endpointLocation field is set.
+       */
+      public boolean hasEndpointLocation() {
+        return endpointLocationBuilder_ != null || endpointLocation_ != null;
+      }
       /**
        * <code>repeated .kpi_sample_types.KpiSampleType kpi_sample_types = 4;</code>
        * @return A list containing the enum numeric values on the wire for kpiSampleTypes.
@@ -67065,6 +67678,11 @@ public final class ContextOuterClass {
               input.popLimit(oldLimit);
               break;
             }
+            case 29: {
+
+              availability_ = input.readFloat();
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -67158,6 +67776,21 @@ public final class ContextOuterClass {
     }
     private int isolationLevelMemoizedSerializedSize;
 
+    public static final int AVAILABILITY_FIELD_NUMBER = 3;
+    private float availability_;
+    /**
+     * <pre>
+     * 0.0 .. 100.0 percentage of availability
+     * </pre>
+     *
+     * <code>float availability = 3;</code>
+     * @return The availability.
+     */
+    @java.lang.Override
+    public float getAvailability() {
+      return availability_;
+    }
+
     private byte memoizedIsInitialized = -1;
     @java.lang.Override
     public final boolean isInitialized() {
@@ -67180,6 +67813,9 @@ public final class ContextOuterClass {
       for (int i = 0; i < isolationLevel_.size(); i++) {
         output.writeEnumNoTag(isolationLevel_.get(i));
       }
+      if (availability_ != 0F) {
+        output.writeFloat(3, availability_);
+      }
       unknownFields.writeTo(output);
     }
 
@@ -67201,6 +67837,10 @@ public final class ContextOuterClass {
             .computeUInt32SizeNoTag(dataSize);
         }isolationLevelMemoizedSerializedSize = dataSize;
       }
+      if (availability_ != 0F) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeFloatSize(3, availability_);
+      }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
@@ -67457,6 +68097,9 @@ public final class ContextOuterClass {
           }
           onChanged();
         }
+        if (other.getAvailability() != 0F) {
+          setAvailability(other.getAvailability());
+        }
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
@@ -67626,6 +68269,49 @@ public final class ContextOuterClass {
         onChanged();
         return this;
       }
+
+      private float availability_ ;
+      /**
+       * <pre>
+       * 0.0 .. 100.0 percentage of availability
+       * </pre>
+       *
+       * <code>float availability = 3;</code>
+       * @return The availability.
+       */
+      @java.lang.Override
+      public float getAvailability() {
+        return availability_;
+      }
+      /**
+       * <pre>
+       * 0.0 .. 100.0 percentage of availability
+       * </pre>
+       *
+       * <code>float availability = 3;</code>
+       * @param value The availability to set.
+       * @return This builder for chaining.
+       */
+      public Builder setAvailability(float value) {
+        
+        availability_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       * 0.0 .. 100.0 percentage of availability
+       * </pre>
+       *
+       * <code>float availability = 3;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearAvailability() {
+        
+        availability_ = 0F;
+        onChanged();
+        return this;
+      }
       @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {