From 9d36a29ba5ef1fb46f7b51a5c477bdc4410ba548 Mon Sep 17 00:00:00 2001
From: pfamelis <pfamelis@ubitech.eu>
Date: Wed, 8 Nov 2023 13:13:48 +0200
Subject: [PATCH] refactor: renamed automation dir to ztp

---
 .../grpc/automation/AutomationService.java    |   26 -
 .../automation/AutomationServiceClient.java   |   48 -
 .../automation/AutomationServiceGrpc.java     |  645 ------
 src/{automation => ztp}/.dockerignore         |    0
 src/{automation => ztp}/.env.example          |    0
 src/{automation => ztp}/.gitignore            |    0
 src/{automation => ztp}/.gitlab-ci.yml        |    0
 src/{automation => ztp}/.java-version         |    0
 .../.mvn/wrapper/MavenWrapperDownloader.java  |    0
 .../.mvn/wrapper/maven-wrapper.jar            |  Bin
 .../.mvn/wrapper/maven-wrapper.properties     |    0
 src/{automation => ztp}/Dockerfile            |    0
 src/{automation => ztp}/README.md             |    0
 src/{automation => ztp}/mvnw                  |    0
 src/{automation => ztp}/mvnw.cmd              |    0
 src/{automation => ztp}/pom.xml               |    0
 .../src/main/docker/Dockerfile.multistage.jvm |    0
 .../eu/teraflow/ztp/ContextSubscriber.java    |    0
 .../main/java/eu/teraflow/ztp/Serializer.java |    0
 .../eu/teraflow/ztp/SimpleLivenessCheck.java  |    0
 .../eu/teraflow/ztp/SimpleReadinessCheck.java |    0
 .../eu/teraflow/ztp/ZtpConfiguration.java     |    0
 .../main/java/eu/teraflow/ztp/ZtpGateway.java |    0
 .../java/eu/teraflow/ztp/ZtpGatewayImpl.java  |    0
 .../main/java/eu/teraflow/ztp/ZtpService.java |    0
 .../java/eu/teraflow/ztp/ZtpServiceImpl.java  |    0
 .../java/eu/teraflow/ztp/acl/AclAction.java   |    0
 .../java/eu/teraflow/ztp/acl/AclEntry.java    |    0
 .../ztp/acl/AclForwardActionEnum.java         |    0
 .../eu/teraflow/ztp/acl/AclLogActionEnum.java |    0
 .../java/eu/teraflow/ztp/acl/AclMatch.java    |    0
 .../java/eu/teraflow/ztp/acl/AclRuleSet.java  |    0
 .../eu/teraflow/ztp/acl/AclRuleTypeEnum.java  |    0
 .../java/eu/teraflow/ztp/common/Util.java     |    0
 .../teraflow/ztp/context/ContextGateway.java  |    0
 .../ztp/context/ContextGatewayImpl.java       |    0
 .../teraflow/ztp/context/ContextService.java  |    0
 .../ztp/context/ContextServiceImpl.java       |    0
 .../ztp/context/model/ConfigActionEnum.java   |    0
 .../ztp/context/model/ConfigRule.java         |    0
 .../ztp/context/model/ConfigRuleAcl.java      |    0
 .../ztp/context/model/ConfigRuleCustom.java   |    0
 .../ztp/context/model/ConfigRuleType.java     |    0
 .../ztp/context/model/ConfigRuleTypeAcl.java  |    0
 .../context/model/ConfigRuleTypeCustom.java   |    0
 .../eu/teraflow/ztp/context/model/Device.java |    0
 .../ztp/context/model/DeviceConfig.java       |    0
 .../ztp/context/model/DeviceDriverEnum.java   |    0
 .../ztp/context/model/DeviceEvent.java        |    0
 .../model/DeviceOperationalStatus.java        |    0
 .../eu/teraflow/ztp/context/model/Empty.java  |    0
 .../teraflow/ztp/context/model/EndPoint.java  |    0
 .../ztp/context/model/EndPointId.java         |    0
 .../eu/teraflow/ztp/context/model/Event.java  |    0
 .../ztp/context/model/EventTypeEnum.java      |    0
 .../ztp/context/model/GpsPosition.java        |    0
 .../teraflow/ztp/context/model/Location.java  |    0
 .../ztp/context/model/LocationType.java       |    0
 .../model/LocationTypeGpsPosition.java        |    0
 .../ztp/context/model/LocationTypeRegion.java |    0
 .../ztp/context/model/TopologyId.java         |    0
 .../eu/teraflow/ztp/device/DeviceGateway.java |    0
 .../ztp/device/DeviceGatewayImpl.java         |    0
 .../eu/teraflow/ztp/device/DeviceService.java |    0
 .../ztp/device/DeviceServiceImpl.java         |    0
 .../kpi_sample_types/model/KpiSampleType.java |    0
 .../eu/teraflow/ztp/model/DeviceRole.java     |    0
 .../teraflow/ztp/model/DeviceRoleConfig.java  |    0
 .../eu/teraflow/ztp/model/DeviceRoleId.java   |    0
 .../eu/teraflow/ztp/model/DeviceRoleType.java |    0
 .../eu/teraflow/ztp/model/DeviceState.java    |    0
 .../src/main/proto/acl.proto                  |    0
 .../src/main/proto/context.proto              |    0
 .../src/main/proto/device.proto               |    0
 .../src/main/proto/kpi_sample_types.proto     |    0
 .../src/main/proto/monitoring.proto           |    0
 .../src/main/proto/ztp.proto                  |    0
 .../src/main/resources/application.yml        |    0
 .../main/resources/teraflow-ztp-banner.txt    |    0
 .../eu/teraflow/ztp/ConfigRuleTypeTest.java   |    0
 .../teraflow/ztp/ContextSubscriberTest.java   |    0
 .../eu/teraflow/ztp/EndPointCreationTest.java |    0
 .../eu/teraflow/ztp/LocationTypeTest.java     |    0
 .../eu/teraflow/ztp/MockZtpConfiguration.java |    0
 .../java/eu/teraflow/ztp/SerializerTest.java  |    0
 .../ztp/ZtpFunctionalServiceTest.java         |    0
 .../java/eu/teraflow/ztp/ZtpServiceTest.java  |    0
 .../generated-sources/grpc/acl/Acl.java       |    0
 .../grpc/context/ContextOuterClass.java       | 1979 ++++++++++++-----
 .../grpc/context/ContextService.java          |    0
 .../grpc/context/ContextServiceBean.java      |    0
 .../grpc/context/ContextServiceClient.java    |    0
 .../grpc/context/ContextServiceGrpc.java      |    0
 .../context/MutinyContextServiceGrpc.java     |    0
 .../generated-sources/grpc/device/Device.java |    0
 .../grpc/device/DeviceService.java            |    0
 .../grpc/device/DeviceServiceBean.java        |    0
 .../grpc/device/DeviceServiceClient.java      |    0
 .../grpc/device/DeviceServiceGrpc.java        |    0
 .../grpc/device/MutinyDeviceServiceGrpc.java  |    0
 .../grpc/kpi_sample_types/KpiSampleTypes.java |    0
 .../grpc/monitoring/Monitoring.java           |    0
 .../grpc/monitoring/MonitoringService.java    |    0
 .../monitoring/MonitoringServiceBean.java     |    0
 .../monitoring/MonitoringServiceClient.java   |    0
 .../monitoring/MonitoringServiceGrpc.java     |    0
 .../MutinyMonitoringServiceGrpc.java          |    0
 .../grpc/ztp/MutinyZtpServiceGrpc.java}       |  114 +-
 .../generated-sources/grpc/ztp/Ztp.java}      | 1116 +++++-----
 .../grpc/ztp/ZtpService.java                  |   26 +
 .../grpc/ztp/ZtpServiceBean.java}             |   22 +-
 .../grpc/ztp/ZtpServiceClient.java            |   48 +
 .../grpc/ztp/ZtpServiceGrpc.java              |  645 ++++++
 .../target/kubernetes/kubernetes.yml          |   65 +-
 src/{automation => ztp}/util/set_version.sh   |    0
 115 files changed, 2783 insertions(+), 1951 deletions(-)
 delete mode 100644 src/automation/target/generated-sources/grpc/automation/AutomationService.java
 delete mode 100644 src/automation/target/generated-sources/grpc/automation/AutomationServiceClient.java
 delete mode 100644 src/automation/target/generated-sources/grpc/automation/AutomationServiceGrpc.java
 rename src/{automation => ztp}/.dockerignore (100%)
 rename src/{automation => ztp}/.env.example (100%)
 rename src/{automation => ztp}/.gitignore (100%)
 rename src/{automation => ztp}/.gitlab-ci.yml (100%)
 rename src/{automation => ztp}/.java-version (100%)
 rename src/{automation => ztp}/.mvn/wrapper/MavenWrapperDownloader.java (100%)
 rename src/{automation => ztp}/.mvn/wrapper/maven-wrapper.jar (100%)
 rename src/{automation => ztp}/.mvn/wrapper/maven-wrapper.properties (100%)
 rename src/{automation => ztp}/Dockerfile (100%)
 rename src/{automation => ztp}/README.md (100%)
 rename src/{automation => ztp}/mvnw (100%)
 rename src/{automation => ztp}/mvnw.cmd (100%)
 rename src/{automation => ztp}/pom.xml (100%)
 rename src/{automation => ztp}/src/main/docker/Dockerfile.multistage.jvm (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/ContextSubscriber.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/Serializer.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/SimpleLivenessCheck.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/SimpleReadinessCheck.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/ZtpConfiguration.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/ZtpGateway.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/ZtpGatewayImpl.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/ZtpService.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/ZtpServiceImpl.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/acl/AclAction.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/acl/AclEntry.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/acl/AclForwardActionEnum.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/acl/AclLogActionEnum.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/acl/AclMatch.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/acl/AclRuleSet.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/acl/AclRuleTypeEnum.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/common/Util.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/ContextGateway.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/ContextGatewayImpl.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/ContextService.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/ContextServiceImpl.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/ConfigActionEnum.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/ConfigRule.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleAcl.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleCustom.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleType.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeAcl.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeCustom.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/Device.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/DeviceConfig.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/DeviceDriverEnum.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/DeviceEvent.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/DeviceOperationalStatus.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/Empty.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/EndPoint.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/EndPointId.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/Event.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/EventTypeEnum.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/GpsPosition.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/Location.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/LocationType.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/LocationTypeGpsPosition.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/LocationTypeRegion.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/context/model/TopologyId.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/device/DeviceGateway.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/device/DeviceGatewayImpl.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/device/DeviceService.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/device/DeviceServiceImpl.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/kpi_sample_types/model/KpiSampleType.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/model/DeviceRole.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/model/DeviceRoleConfig.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/model/DeviceRoleId.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/model/DeviceRoleType.java (100%)
 rename src/{automation => ztp}/src/main/java/eu/teraflow/ztp/model/DeviceState.java (100%)
 rename src/{automation => ztp}/src/main/proto/acl.proto (100%)
 rename src/{automation => ztp}/src/main/proto/context.proto (100%)
 rename src/{automation => ztp}/src/main/proto/device.proto (100%)
 rename src/{automation => ztp}/src/main/proto/kpi_sample_types.proto (100%)
 rename src/{automation => ztp}/src/main/proto/monitoring.proto (100%)
 rename src/{automation => ztp}/src/main/proto/ztp.proto (100%)
 rename src/{automation => ztp}/src/main/resources/application.yml (100%)
 rename src/{automation => ztp}/src/main/resources/teraflow-ztp-banner.txt (100%)
 rename src/{automation => ztp}/src/test/java/eu/teraflow/ztp/ConfigRuleTypeTest.java (100%)
 rename src/{automation => ztp}/src/test/java/eu/teraflow/ztp/ContextSubscriberTest.java (100%)
 rename src/{automation => ztp}/src/test/java/eu/teraflow/ztp/EndPointCreationTest.java (100%)
 rename src/{automation => ztp}/src/test/java/eu/teraflow/ztp/LocationTypeTest.java (100%)
 rename src/{automation => ztp}/src/test/java/eu/teraflow/ztp/MockZtpConfiguration.java (100%)
 rename src/{automation => ztp}/src/test/java/eu/teraflow/ztp/SerializerTest.java (100%)
 rename src/{automation => ztp}/src/test/java/eu/teraflow/ztp/ZtpFunctionalServiceTest.java (100%)
 rename src/{automation => ztp}/src/test/java/eu/teraflow/ztp/ZtpServiceTest.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/acl/Acl.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/context/ContextOuterClass.java (97%)
 rename src/{automation => ztp}/target/generated-sources/grpc/context/ContextService.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/context/ContextServiceBean.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/context/ContextServiceClient.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/context/ContextServiceGrpc.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/device/Device.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/device/DeviceService.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/device/DeviceServiceBean.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/device/DeviceServiceClient.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/device/DeviceServiceGrpc.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/device/MutinyDeviceServiceGrpc.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/monitoring/Monitoring.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/monitoring/MonitoringService.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java (100%)
 rename src/{automation => ztp}/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java (100%)
 rename src/{automation/target/generated-sources/grpc/automation/MutinyAutomationServiceGrpc.java => ztp/target/generated-sources/grpc/ztp/MutinyZtpServiceGrpc.java} (56%)
 rename src/{automation/target/generated-sources/grpc/automation/Automation.java => ztp/target/generated-sources/grpc/ztp/Ztp.java} (75%)
 create mode 100644 src/ztp/target/generated-sources/grpc/ztp/ZtpService.java
 rename src/{automation/target/generated-sources/grpc/automation/AutomationServiceBean.java => ztp/target/generated-sources/grpc/ztp/ZtpServiceBean.java} (58%)
 create mode 100644 src/ztp/target/generated-sources/grpc/ztp/ZtpServiceClient.java
 create mode 100644 src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java
 rename src/{automation => ztp}/target/kubernetes/kubernetes.yml (58%)
 rename src/{automation => ztp}/util/set_version.sh (100%)

diff --git a/src/automation/target/generated-sources/grpc/automation/AutomationService.java b/src/automation/target/generated-sources/grpc/automation/AutomationService.java
deleted file mode 100644
index 8ef578481..000000000
--- a/src/automation/target/generated-sources/grpc/automation/AutomationService.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package automation;
-
-import io.quarkus.grpc.runtime.MutinyService;
-
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: automation.proto")
-public interface AutomationService extends MutinyService {
-
-    
-    io.smallrye.mutiny.Uni<automation.Automation.DeviceRole> ztpGetDeviceRole(automation.Automation.DeviceRoleId request);
-    
-    io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request);
-    
-    io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleState> ztpAdd(automation.Automation.DeviceRole request);
-    
-    io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleState> ztpUpdate(automation.Automation.DeviceRoleConfig request);
-    
-    io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleState> ztpDelete(automation.Automation.DeviceRole request);
-    
-    io.smallrye.mutiny.Uni<automation.Automation.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request);
-    
-    
-    
-
-}
\ No newline at end of file
diff --git a/src/automation/target/generated-sources/grpc/automation/AutomationServiceClient.java b/src/automation/target/generated-sources/grpc/automation/AutomationServiceClient.java
deleted file mode 100644
index 13d13c431..000000000
--- a/src/automation/target/generated-sources/grpc/automation/AutomationServiceClient.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package automation;
-
-import java.util.function.BiFunction;
-
-import io.quarkus.grpc.runtime.MutinyClient;
-
-@javax.annotation.Generated(
-value = "by Mutiny Grpc generator",
-comments = "Source: automation.proto")
-public class AutomationServiceClient implements AutomationService, MutinyClient<MutinyAutomationServiceGrpc.MutinyAutomationServiceStub> {
-
-    private final MutinyAutomationServiceGrpc.MutinyAutomationServiceStub stub;
-
-    public AutomationServiceClient(String name, io.grpc.Channel channel, BiFunction<String, MutinyAutomationServiceGrpc.MutinyAutomationServiceStub, MutinyAutomationServiceGrpc.MutinyAutomationServiceStub> stubConfigurator) {
-       this.stub = stubConfigurator.apply(name,MutinyAutomationServiceGrpc.newMutinyStub(channel));
-    }
-
-    @Override
-    public MutinyAutomationServiceGrpc.MutinyAutomationServiceStub getStub() {
-       return stub;
-    }
-
-    @Override
-    public io.smallrye.mutiny.Uni<automation.Automation.DeviceRole> ztpGetDeviceRole(automation.Automation.DeviceRoleId request) {
-       return stub.ztpGetDeviceRole(request);
-    }
-    @Override
-    public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
-       return stub.ztpGetDeviceRolesByDeviceId(request);
-    }
-    @Override
-    public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleState> ztpAdd(automation.Automation.DeviceRole request) {
-       return stub.ztpAdd(request);
-    }
-    @Override
-    public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleState> ztpUpdate(automation.Automation.DeviceRoleConfig request) {
-       return stub.ztpUpdate(request);
-    }
-    @Override
-    public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleState> ztpDelete(automation.Automation.DeviceRole request) {
-       return stub.ztpDelete(request);
-    }
-    @Override
-    public io.smallrye.mutiny.Uni<automation.Automation.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request) {
-       return stub.ztpDeleteAll(request);
-    }
-
-}
\ No newline at end of file
diff --git a/src/automation/target/generated-sources/grpc/automation/AutomationServiceGrpc.java b/src/automation/target/generated-sources/grpc/automation/AutomationServiceGrpc.java
deleted file mode 100644
index 841994ea7..000000000
--- a/src/automation/target/generated-sources/grpc/automation/AutomationServiceGrpc.java
+++ /dev/null
@@ -1,645 +0,0 @@
-package automation;
-
-import static io.grpc.MethodDescriptor.generateFullMethodName;
-
-/**
- */
-@javax.annotation.Generated(
-    value = "by gRPC proto compiler (version 1.38.1)",
-    comments = "Source: automation.proto")
-public final class AutomationServiceGrpc {
-
-  private AutomationServiceGrpc() {}
-
-  public static final String SERVICE_NAME = "automation.AutomationService";
-
-  // Static method descriptors that strictly reflect the proto.
-  private static volatile io.grpc.MethodDescriptor<automation.Automation.DeviceRoleId,
-      automation.Automation.DeviceRole> getZtpGetDeviceRoleMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ZtpGetDeviceRole",
-      requestType = automation.Automation.DeviceRoleId.class,
-      responseType = automation.Automation.DeviceRole.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<automation.Automation.DeviceRoleId,
-      automation.Automation.DeviceRole> getZtpGetDeviceRoleMethod() {
-    io.grpc.MethodDescriptor<automation.Automation.DeviceRoleId, automation.Automation.DeviceRole> getZtpGetDeviceRoleMethod;
-    if ((getZtpGetDeviceRoleMethod = AutomationServiceGrpc.getZtpGetDeviceRoleMethod) == null) {
-      synchronized (AutomationServiceGrpc.class) {
-        if ((getZtpGetDeviceRoleMethod = AutomationServiceGrpc.getZtpGetDeviceRoleMethod) == null) {
-          AutomationServiceGrpc.getZtpGetDeviceRoleMethod = getZtpGetDeviceRoleMethod =
-              io.grpc.MethodDescriptor.<automation.Automation.DeviceRoleId, automation.Automation.DeviceRole>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpGetDeviceRole"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  automation.Automation.DeviceRoleId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  automation.Automation.DeviceRole.getDefaultInstance()))
-              .setSchemaDescriptor(new AutomationServiceMethodDescriptorSupplier("ZtpGetDeviceRole"))
-              .build();
-        }
-      }
-    }
-    return getZtpGetDeviceRoleMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId,
-      automation.Automation.DeviceRoleList> getZtpGetDeviceRolesByDeviceIdMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ZtpGetDeviceRolesByDeviceId",
-      requestType = context.ContextOuterClass.DeviceId.class,
-      responseType = automation.Automation.DeviceRoleList.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId,
-      automation.Automation.DeviceRoleList> getZtpGetDeviceRolesByDeviceIdMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, automation.Automation.DeviceRoleList> getZtpGetDeviceRolesByDeviceIdMethod;
-    if ((getZtpGetDeviceRolesByDeviceIdMethod = AutomationServiceGrpc.getZtpGetDeviceRolesByDeviceIdMethod) == null) {
-      synchronized (AutomationServiceGrpc.class) {
-        if ((getZtpGetDeviceRolesByDeviceIdMethod = AutomationServiceGrpc.getZtpGetDeviceRolesByDeviceIdMethod) == null) {
-          AutomationServiceGrpc.getZtpGetDeviceRolesByDeviceIdMethod = getZtpGetDeviceRolesByDeviceIdMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.DeviceId, automation.Automation.DeviceRoleList>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpGetDeviceRolesByDeviceId"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.DeviceId.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  automation.Automation.DeviceRoleList.getDefaultInstance()))
-              .setSchemaDescriptor(new AutomationServiceMethodDescriptorSupplier("ZtpGetDeviceRolesByDeviceId"))
-              .build();
-        }
-      }
-    }
-    return getZtpGetDeviceRolesByDeviceIdMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<automation.Automation.DeviceRole,
-      automation.Automation.DeviceRoleState> getZtpAddMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ZtpAdd",
-      requestType = automation.Automation.DeviceRole.class,
-      responseType = automation.Automation.DeviceRoleState.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<automation.Automation.DeviceRole,
-      automation.Automation.DeviceRoleState> getZtpAddMethod() {
-    io.grpc.MethodDescriptor<automation.Automation.DeviceRole, automation.Automation.DeviceRoleState> getZtpAddMethod;
-    if ((getZtpAddMethod = AutomationServiceGrpc.getZtpAddMethod) == null) {
-      synchronized (AutomationServiceGrpc.class) {
-        if ((getZtpAddMethod = AutomationServiceGrpc.getZtpAddMethod) == null) {
-          AutomationServiceGrpc.getZtpAddMethod = getZtpAddMethod =
-              io.grpc.MethodDescriptor.<automation.Automation.DeviceRole, automation.Automation.DeviceRoleState>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpAdd"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  automation.Automation.DeviceRole.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  automation.Automation.DeviceRoleState.getDefaultInstance()))
-              .setSchemaDescriptor(new AutomationServiceMethodDescriptorSupplier("ZtpAdd"))
-              .build();
-        }
-      }
-    }
-    return getZtpAddMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<automation.Automation.DeviceRoleConfig,
-      automation.Automation.DeviceRoleState> getZtpUpdateMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ZtpUpdate",
-      requestType = automation.Automation.DeviceRoleConfig.class,
-      responseType = automation.Automation.DeviceRoleState.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<automation.Automation.DeviceRoleConfig,
-      automation.Automation.DeviceRoleState> getZtpUpdateMethod() {
-    io.grpc.MethodDescriptor<automation.Automation.DeviceRoleConfig, automation.Automation.DeviceRoleState> getZtpUpdateMethod;
-    if ((getZtpUpdateMethod = AutomationServiceGrpc.getZtpUpdateMethod) == null) {
-      synchronized (AutomationServiceGrpc.class) {
-        if ((getZtpUpdateMethod = AutomationServiceGrpc.getZtpUpdateMethod) == null) {
-          AutomationServiceGrpc.getZtpUpdateMethod = getZtpUpdateMethod =
-              io.grpc.MethodDescriptor.<automation.Automation.DeviceRoleConfig, automation.Automation.DeviceRoleState>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpUpdate"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  automation.Automation.DeviceRoleConfig.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  automation.Automation.DeviceRoleState.getDefaultInstance()))
-              .setSchemaDescriptor(new AutomationServiceMethodDescriptorSupplier("ZtpUpdate"))
-              .build();
-        }
-      }
-    }
-    return getZtpUpdateMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<automation.Automation.DeviceRole,
-      automation.Automation.DeviceRoleState> getZtpDeleteMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ZtpDelete",
-      requestType = automation.Automation.DeviceRole.class,
-      responseType = automation.Automation.DeviceRoleState.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<automation.Automation.DeviceRole,
-      automation.Automation.DeviceRoleState> getZtpDeleteMethod() {
-    io.grpc.MethodDescriptor<automation.Automation.DeviceRole, automation.Automation.DeviceRoleState> getZtpDeleteMethod;
-    if ((getZtpDeleteMethod = AutomationServiceGrpc.getZtpDeleteMethod) == null) {
-      synchronized (AutomationServiceGrpc.class) {
-        if ((getZtpDeleteMethod = AutomationServiceGrpc.getZtpDeleteMethod) == null) {
-          AutomationServiceGrpc.getZtpDeleteMethod = getZtpDeleteMethod =
-              io.grpc.MethodDescriptor.<automation.Automation.DeviceRole, automation.Automation.DeviceRoleState>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpDelete"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  automation.Automation.DeviceRole.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  automation.Automation.DeviceRoleState.getDefaultInstance()))
-              .setSchemaDescriptor(new AutomationServiceMethodDescriptorSupplier("ZtpDelete"))
-              .build();
-        }
-      }
-    }
-    return getZtpDeleteMethod;
-  }
-
-  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      automation.Automation.DeviceDeletionResult> getZtpDeleteAllMethod;
-
-  @io.grpc.stub.annotations.RpcMethod(
-      fullMethodName = SERVICE_NAME + '/' + "ZtpDeleteAll",
-      requestType = context.ContextOuterClass.Empty.class,
-      responseType = automation.Automation.DeviceDeletionResult.class,
-      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
-  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
-      automation.Automation.DeviceDeletionResult> getZtpDeleteAllMethod() {
-    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, automation.Automation.DeviceDeletionResult> getZtpDeleteAllMethod;
-    if ((getZtpDeleteAllMethod = AutomationServiceGrpc.getZtpDeleteAllMethod) == null) {
-      synchronized (AutomationServiceGrpc.class) {
-        if ((getZtpDeleteAllMethod = AutomationServiceGrpc.getZtpDeleteAllMethod) == null) {
-          AutomationServiceGrpc.getZtpDeleteAllMethod = getZtpDeleteAllMethod =
-              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, automation.Automation.DeviceDeletionResult>newBuilder()
-              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
-              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpDeleteAll"))
-              .setSampledToLocalTracing(true)
-              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  context.ContextOuterClass.Empty.getDefaultInstance()))
-              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
-                  automation.Automation.DeviceDeletionResult.getDefaultInstance()))
-              .setSchemaDescriptor(new AutomationServiceMethodDescriptorSupplier("ZtpDeleteAll"))
-              .build();
-        }
-      }
-    }
-    return getZtpDeleteAllMethod;
-  }
-
-  /**
-   * Creates a new async stub that supports all call types for the service
-   */
-  public static AutomationServiceStub newStub(io.grpc.Channel channel) {
-    io.grpc.stub.AbstractStub.StubFactory<AutomationServiceStub> factory =
-      new io.grpc.stub.AbstractStub.StubFactory<AutomationServiceStub>() {
-        @java.lang.Override
-        public AutomationServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-          return new AutomationServiceStub(channel, callOptions);
-        }
-      };
-    return AutomationServiceStub.newStub(factory, channel);
-  }
-
-  /**
-   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
-   */
-  public static AutomationServiceBlockingStub newBlockingStub(
-      io.grpc.Channel channel) {
-    io.grpc.stub.AbstractStub.StubFactory<AutomationServiceBlockingStub> factory =
-      new io.grpc.stub.AbstractStub.StubFactory<AutomationServiceBlockingStub>() {
-        @java.lang.Override
-        public AutomationServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-          return new AutomationServiceBlockingStub(channel, callOptions);
-        }
-      };
-    return AutomationServiceBlockingStub.newStub(factory, channel);
-  }
-
-  /**
-   * Creates a new ListenableFuture-style stub that supports unary calls on the service
-   */
-  public static AutomationServiceFutureStub newFutureStub(
-      io.grpc.Channel channel) {
-    io.grpc.stub.AbstractStub.StubFactory<AutomationServiceFutureStub> factory =
-      new io.grpc.stub.AbstractStub.StubFactory<AutomationServiceFutureStub>() {
-        @java.lang.Override
-        public AutomationServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-          return new AutomationServiceFutureStub(channel, callOptions);
-        }
-      };
-    return AutomationServiceFutureStub.newStub(factory, channel);
-  }
-
-  /**
-   */
-  public static abstract class AutomationServiceImplBase implements io.grpc.BindableService {
-
-    /**
-     */
-    public void ztpGetDeviceRole(automation.Automation.DeviceRoleId request,
-        io.grpc.stub.StreamObserver<automation.Automation.DeviceRole> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpGetDeviceRoleMethod(), responseObserver);
-    }
-
-    /**
-     */
-    public void ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request,
-        io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleList> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpGetDeviceRolesByDeviceIdMethod(), responseObserver);
-    }
-
-    /**
-     */
-    public void ztpAdd(automation.Automation.DeviceRole request,
-        io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleState> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpAddMethod(), responseObserver);
-    }
-
-    /**
-     */
-    public void ztpUpdate(automation.Automation.DeviceRoleConfig request,
-        io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleState> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpUpdateMethod(), responseObserver);
-    }
-
-    /**
-     */
-    public void ztpDelete(automation.Automation.DeviceRole request,
-        io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleState> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpDeleteMethod(), responseObserver);
-    }
-
-    /**
-     */
-    public void ztpDeleteAll(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<automation.Automation.DeviceDeletionResult> responseObserver) {
-      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpDeleteAllMethod(), responseObserver);
-    }
-
-    @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
-      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
-          .addMethod(
-            getZtpGetDeviceRoleMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                automation.Automation.DeviceRoleId,
-                automation.Automation.DeviceRole>(
-                  this, METHODID_ZTP_GET_DEVICE_ROLE)))
-          .addMethod(
-            getZtpGetDeviceRolesByDeviceIdMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.DeviceId,
-                automation.Automation.DeviceRoleList>(
-                  this, METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID)))
-          .addMethod(
-            getZtpAddMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                automation.Automation.DeviceRole,
-                automation.Automation.DeviceRoleState>(
-                  this, METHODID_ZTP_ADD)))
-          .addMethod(
-            getZtpUpdateMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                automation.Automation.DeviceRoleConfig,
-                automation.Automation.DeviceRoleState>(
-                  this, METHODID_ZTP_UPDATE)))
-          .addMethod(
-            getZtpDeleteMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                automation.Automation.DeviceRole,
-                automation.Automation.DeviceRoleState>(
-                  this, METHODID_ZTP_DELETE)))
-          .addMethod(
-            getZtpDeleteAllMethod(),
-            io.grpc.stub.ServerCalls.asyncUnaryCall(
-              new MethodHandlers<
-                context.ContextOuterClass.Empty,
-                automation.Automation.DeviceDeletionResult>(
-                  this, METHODID_ZTP_DELETE_ALL)))
-          .build();
-    }
-  }
-
-  /**
-   */
-  public static final class AutomationServiceStub extends io.grpc.stub.AbstractAsyncStub<AutomationServiceStub> {
-    private AutomationServiceStub(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
-
-    @java.lang.Override
-    protected AutomationServiceStub build(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new AutomationServiceStub(channel, callOptions);
-    }
-
-    /**
-     */
-    public void ztpGetDeviceRole(automation.Automation.DeviceRoleId request,
-        io.grpc.stub.StreamObserver<automation.Automation.DeviceRole> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getZtpGetDeviceRoleMethod(), getCallOptions()), request, responseObserver);
-    }
-
-    /**
-     */
-    public void ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request,
-        io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleList> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getZtpGetDeviceRolesByDeviceIdMethod(), getCallOptions()), request, responseObserver);
-    }
-
-    /**
-     */
-    public void ztpAdd(automation.Automation.DeviceRole request,
-        io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleState> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getZtpAddMethod(), getCallOptions()), request, responseObserver);
-    }
-
-    /**
-     */
-    public void ztpUpdate(automation.Automation.DeviceRoleConfig request,
-        io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleState> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getZtpUpdateMethod(), getCallOptions()), request, responseObserver);
-    }
-
-    /**
-     */
-    public void ztpDelete(automation.Automation.DeviceRole request,
-        io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleState> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getZtpDeleteMethod(), getCallOptions()), request, responseObserver);
-    }
-
-    /**
-     */
-    public void ztpDeleteAll(context.ContextOuterClass.Empty request,
-        io.grpc.stub.StreamObserver<automation.Automation.DeviceDeletionResult> responseObserver) {
-      io.grpc.stub.ClientCalls.asyncUnaryCall(
-          getChannel().newCall(getZtpDeleteAllMethod(), getCallOptions()), request, responseObserver);
-    }
-  }
-
-  /**
-   */
-  public static final class AutomationServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<AutomationServiceBlockingStub> {
-    private AutomationServiceBlockingStub(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
-
-    @java.lang.Override
-    protected AutomationServiceBlockingStub build(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new AutomationServiceBlockingStub(channel, callOptions);
-    }
-
-    /**
-     */
-    public automation.Automation.DeviceRole ztpGetDeviceRole(automation.Automation.DeviceRoleId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getZtpGetDeviceRoleMethod(), getCallOptions(), request);
-    }
-
-    /**
-     */
-    public automation.Automation.DeviceRoleList ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getZtpGetDeviceRolesByDeviceIdMethod(), getCallOptions(), request);
-    }
-
-    /**
-     */
-    public automation.Automation.DeviceRoleState ztpAdd(automation.Automation.DeviceRole request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getZtpAddMethod(), getCallOptions(), request);
-    }
-
-    /**
-     */
-    public automation.Automation.DeviceRoleState ztpUpdate(automation.Automation.DeviceRoleConfig request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getZtpUpdateMethod(), getCallOptions(), request);
-    }
-
-    /**
-     */
-    public automation.Automation.DeviceRoleState ztpDelete(automation.Automation.DeviceRole request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getZtpDeleteMethod(), getCallOptions(), request);
-    }
-
-    /**
-     */
-    public automation.Automation.DeviceDeletionResult ztpDeleteAll(context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.blockingUnaryCall(
-          getChannel(), getZtpDeleteAllMethod(), getCallOptions(), request);
-    }
-  }
-
-  /**
-   */
-  public static final class AutomationServiceFutureStub extends io.grpc.stub.AbstractFutureStub<AutomationServiceFutureStub> {
-    private AutomationServiceFutureStub(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      super(channel, callOptions);
-    }
-
-    @java.lang.Override
-    protected AutomationServiceFutureStub build(
-        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-      return new AutomationServiceFutureStub(channel, callOptions);
-    }
-
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<automation.Automation.DeviceRole> ztpGetDeviceRole(
-        automation.Automation.DeviceRoleId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getZtpGetDeviceRoleMethod(), getCallOptions()), request);
-    }
-
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<automation.Automation.DeviceRoleList> ztpGetDeviceRolesByDeviceId(
-        context.ContextOuterClass.DeviceId request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getZtpGetDeviceRolesByDeviceIdMethod(), getCallOptions()), request);
-    }
-
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<automation.Automation.DeviceRoleState> ztpAdd(
-        automation.Automation.DeviceRole request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getZtpAddMethod(), getCallOptions()), request);
-    }
-
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<automation.Automation.DeviceRoleState> ztpUpdate(
-        automation.Automation.DeviceRoleConfig request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getZtpUpdateMethod(), getCallOptions()), request);
-    }
-
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<automation.Automation.DeviceRoleState> ztpDelete(
-        automation.Automation.DeviceRole request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getZtpDeleteMethod(), getCallOptions()), request);
-    }
-
-    /**
-     */
-    public com.google.common.util.concurrent.ListenableFuture<automation.Automation.DeviceDeletionResult> ztpDeleteAll(
-        context.ContextOuterClass.Empty request) {
-      return io.grpc.stub.ClientCalls.futureUnaryCall(
-          getChannel().newCall(getZtpDeleteAllMethod(), getCallOptions()), request);
-    }
-  }
-
-  private static final int METHODID_ZTP_GET_DEVICE_ROLE = 0;
-  private static final int METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID = 1;
-  private static final int METHODID_ZTP_ADD = 2;
-  private static final int METHODID_ZTP_UPDATE = 3;
-  private static final int METHODID_ZTP_DELETE = 4;
-  private static final int METHODID_ZTP_DELETE_ALL = 5;
-
-  private static final class MethodHandlers<Req, Resp> implements
-      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
-      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
-    private final AutomationServiceImplBase serviceImpl;
-    private final int methodId;
-
-    MethodHandlers(AutomationServiceImplBase serviceImpl, int methodId) {
-      this.serviceImpl = serviceImpl;
-      this.methodId = methodId;
-    }
-
-    @java.lang.Override
-    @java.lang.SuppressWarnings("unchecked")
-    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
-      switch (methodId) {
-        case METHODID_ZTP_GET_DEVICE_ROLE:
-          serviceImpl.ztpGetDeviceRole((automation.Automation.DeviceRoleId) request,
-              (io.grpc.stub.StreamObserver<automation.Automation.DeviceRole>) responseObserver);
-          break;
-        case METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID:
-          serviceImpl.ztpGetDeviceRolesByDeviceId((context.ContextOuterClass.DeviceId) request,
-              (io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleList>) responseObserver);
-          break;
-        case METHODID_ZTP_ADD:
-          serviceImpl.ztpAdd((automation.Automation.DeviceRole) request,
-              (io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleState>) responseObserver);
-          break;
-        case METHODID_ZTP_UPDATE:
-          serviceImpl.ztpUpdate((automation.Automation.DeviceRoleConfig) request,
-              (io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleState>) responseObserver);
-          break;
-        case METHODID_ZTP_DELETE:
-          serviceImpl.ztpDelete((automation.Automation.DeviceRole) request,
-              (io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleState>) responseObserver);
-          break;
-        case METHODID_ZTP_DELETE_ALL:
-          serviceImpl.ztpDeleteAll((context.ContextOuterClass.Empty) request,
-              (io.grpc.stub.StreamObserver<automation.Automation.DeviceDeletionResult>) responseObserver);
-          break;
-        default:
-          throw new AssertionError();
-      }
-    }
-
-    @java.lang.Override
-    @java.lang.SuppressWarnings("unchecked")
-    public io.grpc.stub.StreamObserver<Req> invoke(
-        io.grpc.stub.StreamObserver<Resp> responseObserver) {
-      switch (methodId) {
-        default:
-          throw new AssertionError();
-      }
-    }
-  }
-
-  private static abstract class AutomationServiceBaseDescriptorSupplier
-      implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
-    AutomationServiceBaseDescriptorSupplier() {}
-
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
-      return automation.Automation.getDescriptor();
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
-      return getFileDescriptor().findServiceByName("AutomationService");
-    }
-  }
-
-  private static final class AutomationServiceFileDescriptorSupplier
-      extends AutomationServiceBaseDescriptorSupplier {
-    AutomationServiceFileDescriptorSupplier() {}
-  }
-
-  private static final class AutomationServiceMethodDescriptorSupplier
-      extends AutomationServiceBaseDescriptorSupplier
-      implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
-    private final String methodName;
-
-    AutomationServiceMethodDescriptorSupplier(String methodName) {
-      this.methodName = methodName;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
-      return getServiceDescriptor().findMethodByName(methodName);
-    }
-  }
-
-  private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
-
-  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
-    io.grpc.ServiceDescriptor result = serviceDescriptor;
-    if (result == null) {
-      synchronized (AutomationServiceGrpc.class) {
-        result = serviceDescriptor;
-        if (result == null) {
-          serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
-              .setSchemaDescriptor(new AutomationServiceFileDescriptorSupplier())
-              .addMethod(getZtpGetDeviceRoleMethod())
-              .addMethod(getZtpGetDeviceRolesByDeviceIdMethod())
-              .addMethod(getZtpAddMethod())
-              .addMethod(getZtpUpdateMethod())
-              .addMethod(getZtpDeleteMethod())
-              .addMethod(getZtpDeleteAllMethod())
-              .build();
-        }
-      }
-    }
-    return result;
-  }
-}
diff --git a/src/automation/.dockerignore b/src/ztp/.dockerignore
similarity index 100%
rename from src/automation/.dockerignore
rename to src/ztp/.dockerignore
diff --git a/src/automation/.env.example b/src/ztp/.env.example
similarity index 100%
rename from src/automation/.env.example
rename to src/ztp/.env.example
diff --git a/src/automation/.gitignore b/src/ztp/.gitignore
similarity index 100%
rename from src/automation/.gitignore
rename to src/ztp/.gitignore
diff --git a/src/automation/.gitlab-ci.yml b/src/ztp/.gitlab-ci.yml
similarity index 100%
rename from src/automation/.gitlab-ci.yml
rename to src/ztp/.gitlab-ci.yml
diff --git a/src/automation/.java-version b/src/ztp/.java-version
similarity index 100%
rename from src/automation/.java-version
rename to src/ztp/.java-version
diff --git a/src/automation/.mvn/wrapper/MavenWrapperDownloader.java b/src/ztp/.mvn/wrapper/MavenWrapperDownloader.java
similarity index 100%
rename from src/automation/.mvn/wrapper/MavenWrapperDownloader.java
rename to src/ztp/.mvn/wrapper/MavenWrapperDownloader.java
diff --git a/src/automation/.mvn/wrapper/maven-wrapper.jar b/src/ztp/.mvn/wrapper/maven-wrapper.jar
similarity index 100%
rename from src/automation/.mvn/wrapper/maven-wrapper.jar
rename to src/ztp/.mvn/wrapper/maven-wrapper.jar
diff --git a/src/automation/.mvn/wrapper/maven-wrapper.properties b/src/ztp/.mvn/wrapper/maven-wrapper.properties
similarity index 100%
rename from src/automation/.mvn/wrapper/maven-wrapper.properties
rename to src/ztp/.mvn/wrapper/maven-wrapper.properties
diff --git a/src/automation/Dockerfile b/src/ztp/Dockerfile
similarity index 100%
rename from src/automation/Dockerfile
rename to src/ztp/Dockerfile
diff --git a/src/automation/README.md b/src/ztp/README.md
similarity index 100%
rename from src/automation/README.md
rename to src/ztp/README.md
diff --git a/src/automation/mvnw b/src/ztp/mvnw
similarity index 100%
rename from src/automation/mvnw
rename to src/ztp/mvnw
diff --git a/src/automation/mvnw.cmd b/src/ztp/mvnw.cmd
similarity index 100%
rename from src/automation/mvnw.cmd
rename to src/ztp/mvnw.cmd
diff --git a/src/automation/pom.xml b/src/ztp/pom.xml
similarity index 100%
rename from src/automation/pom.xml
rename to src/ztp/pom.xml
diff --git a/src/automation/src/main/docker/Dockerfile.multistage.jvm b/src/ztp/src/main/docker/Dockerfile.multistage.jvm
similarity index 100%
rename from src/automation/src/main/docker/Dockerfile.multistage.jvm
rename to src/ztp/src/main/docker/Dockerfile.multistage.jvm
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/ContextSubscriber.java b/src/ztp/src/main/java/eu/teraflow/ztp/ContextSubscriber.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/ContextSubscriber.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/ContextSubscriber.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/Serializer.java b/src/ztp/src/main/java/eu/teraflow/ztp/Serializer.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/Serializer.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/Serializer.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/SimpleLivenessCheck.java b/src/ztp/src/main/java/eu/teraflow/ztp/SimpleLivenessCheck.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/SimpleLivenessCheck.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/SimpleLivenessCheck.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/SimpleReadinessCheck.java b/src/ztp/src/main/java/eu/teraflow/ztp/SimpleReadinessCheck.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/SimpleReadinessCheck.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/SimpleReadinessCheck.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/ZtpConfiguration.java b/src/ztp/src/main/java/eu/teraflow/ztp/ZtpConfiguration.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/ZtpConfiguration.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/ZtpConfiguration.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/ZtpGateway.java b/src/ztp/src/main/java/eu/teraflow/ztp/ZtpGateway.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/ZtpGateway.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/ZtpGateway.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/ZtpGatewayImpl.java b/src/ztp/src/main/java/eu/teraflow/ztp/ZtpGatewayImpl.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/ZtpGatewayImpl.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/ZtpGatewayImpl.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/ZtpService.java b/src/ztp/src/main/java/eu/teraflow/ztp/ZtpService.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/ZtpService.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/ZtpService.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/ZtpServiceImpl.java b/src/ztp/src/main/java/eu/teraflow/ztp/ZtpServiceImpl.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/ZtpServiceImpl.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/ZtpServiceImpl.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/acl/AclAction.java b/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclAction.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/acl/AclAction.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/acl/AclAction.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/acl/AclEntry.java b/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclEntry.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/acl/AclEntry.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/acl/AclEntry.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/acl/AclForwardActionEnum.java b/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclForwardActionEnum.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/acl/AclForwardActionEnum.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/acl/AclForwardActionEnum.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/acl/AclLogActionEnum.java b/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclLogActionEnum.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/acl/AclLogActionEnum.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/acl/AclLogActionEnum.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/acl/AclMatch.java b/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclMatch.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/acl/AclMatch.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/acl/AclMatch.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/acl/AclRuleSet.java b/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclRuleSet.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/acl/AclRuleSet.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/acl/AclRuleSet.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/acl/AclRuleTypeEnum.java b/src/ztp/src/main/java/eu/teraflow/ztp/acl/AclRuleTypeEnum.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/acl/AclRuleTypeEnum.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/acl/AclRuleTypeEnum.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/common/Util.java b/src/ztp/src/main/java/eu/teraflow/ztp/common/Util.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/common/Util.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/common/Util.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/ContextGateway.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/ContextGateway.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/ContextGateway.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/ContextGateway.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/ContextGatewayImpl.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/ContextGatewayImpl.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/ContextGatewayImpl.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/ContextGatewayImpl.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/ContextService.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/ContextService.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/ContextService.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/ContextService.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/ContextServiceImpl.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/ContextServiceImpl.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/ContextServiceImpl.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/ContextServiceImpl.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/ConfigActionEnum.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigActionEnum.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/ConfigActionEnum.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigActionEnum.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/ConfigRule.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRule.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/ConfigRule.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRule.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleAcl.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleAcl.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleAcl.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleAcl.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleCustom.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleCustom.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleCustom.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleCustom.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleType.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleType.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleType.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleType.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeAcl.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeAcl.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeAcl.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeAcl.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeCustom.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeCustom.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeCustom.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/ConfigRuleTypeCustom.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/Device.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/Device.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/Device.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/Device.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/DeviceConfig.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceConfig.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/DeviceConfig.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceConfig.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/DeviceDriverEnum.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceDriverEnum.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/DeviceDriverEnum.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceDriverEnum.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/DeviceEvent.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceEvent.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/DeviceEvent.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceEvent.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/DeviceOperationalStatus.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceOperationalStatus.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/DeviceOperationalStatus.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/DeviceOperationalStatus.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/Empty.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/Empty.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/Empty.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/Empty.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/EndPoint.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/EndPoint.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/EndPoint.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/EndPoint.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/EndPointId.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/EndPointId.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/EndPointId.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/EndPointId.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/Event.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/Event.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/Event.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/Event.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/EventTypeEnum.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/EventTypeEnum.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/EventTypeEnum.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/EventTypeEnum.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/GpsPosition.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/GpsPosition.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/GpsPosition.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/GpsPosition.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/Location.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/Location.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/Location.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/Location.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/LocationType.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/LocationType.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/LocationType.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/LocationType.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/LocationTypeGpsPosition.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/LocationTypeGpsPosition.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/LocationTypeGpsPosition.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/LocationTypeGpsPosition.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/LocationTypeRegion.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/LocationTypeRegion.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/LocationTypeRegion.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/LocationTypeRegion.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/context/model/TopologyId.java b/src/ztp/src/main/java/eu/teraflow/ztp/context/model/TopologyId.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/context/model/TopologyId.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/context/model/TopologyId.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/device/DeviceGateway.java b/src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceGateway.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/device/DeviceGateway.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceGateway.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/device/DeviceGatewayImpl.java b/src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceGatewayImpl.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/device/DeviceGatewayImpl.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceGatewayImpl.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/device/DeviceService.java b/src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceService.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/device/DeviceService.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceService.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/device/DeviceServiceImpl.java b/src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceServiceImpl.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/device/DeviceServiceImpl.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/device/DeviceServiceImpl.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/kpi_sample_types/model/KpiSampleType.java b/src/ztp/src/main/java/eu/teraflow/ztp/kpi_sample_types/model/KpiSampleType.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/kpi_sample_types/model/KpiSampleType.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/kpi_sample_types/model/KpiSampleType.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/model/DeviceRole.java b/src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRole.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/model/DeviceRole.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRole.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/model/DeviceRoleConfig.java b/src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRoleConfig.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/model/DeviceRoleConfig.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRoleConfig.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/model/DeviceRoleId.java b/src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRoleId.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/model/DeviceRoleId.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRoleId.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/model/DeviceRoleType.java b/src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRoleType.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/model/DeviceRoleType.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceRoleType.java
diff --git a/src/automation/src/main/java/eu/teraflow/ztp/model/DeviceState.java b/src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceState.java
similarity index 100%
rename from src/automation/src/main/java/eu/teraflow/ztp/model/DeviceState.java
rename to src/ztp/src/main/java/eu/teraflow/ztp/model/DeviceState.java
diff --git a/src/automation/src/main/proto/acl.proto b/src/ztp/src/main/proto/acl.proto
similarity index 100%
rename from src/automation/src/main/proto/acl.proto
rename to src/ztp/src/main/proto/acl.proto
diff --git a/src/automation/src/main/proto/context.proto b/src/ztp/src/main/proto/context.proto
similarity index 100%
rename from src/automation/src/main/proto/context.proto
rename to src/ztp/src/main/proto/context.proto
diff --git a/src/automation/src/main/proto/device.proto b/src/ztp/src/main/proto/device.proto
similarity index 100%
rename from src/automation/src/main/proto/device.proto
rename to src/ztp/src/main/proto/device.proto
diff --git a/src/automation/src/main/proto/kpi_sample_types.proto b/src/ztp/src/main/proto/kpi_sample_types.proto
similarity index 100%
rename from src/automation/src/main/proto/kpi_sample_types.proto
rename to src/ztp/src/main/proto/kpi_sample_types.proto
diff --git a/src/automation/src/main/proto/monitoring.proto b/src/ztp/src/main/proto/monitoring.proto
similarity index 100%
rename from src/automation/src/main/proto/monitoring.proto
rename to src/ztp/src/main/proto/monitoring.proto
diff --git a/src/automation/src/main/proto/ztp.proto b/src/ztp/src/main/proto/ztp.proto
similarity index 100%
rename from src/automation/src/main/proto/ztp.proto
rename to src/ztp/src/main/proto/ztp.proto
diff --git a/src/automation/src/main/resources/application.yml b/src/ztp/src/main/resources/application.yml
similarity index 100%
rename from src/automation/src/main/resources/application.yml
rename to src/ztp/src/main/resources/application.yml
diff --git a/src/automation/src/main/resources/teraflow-ztp-banner.txt b/src/ztp/src/main/resources/teraflow-ztp-banner.txt
similarity index 100%
rename from src/automation/src/main/resources/teraflow-ztp-banner.txt
rename to src/ztp/src/main/resources/teraflow-ztp-banner.txt
diff --git a/src/automation/src/test/java/eu/teraflow/ztp/ConfigRuleTypeTest.java b/src/ztp/src/test/java/eu/teraflow/ztp/ConfigRuleTypeTest.java
similarity index 100%
rename from src/automation/src/test/java/eu/teraflow/ztp/ConfigRuleTypeTest.java
rename to src/ztp/src/test/java/eu/teraflow/ztp/ConfigRuleTypeTest.java
diff --git a/src/automation/src/test/java/eu/teraflow/ztp/ContextSubscriberTest.java b/src/ztp/src/test/java/eu/teraflow/ztp/ContextSubscriberTest.java
similarity index 100%
rename from src/automation/src/test/java/eu/teraflow/ztp/ContextSubscriberTest.java
rename to src/ztp/src/test/java/eu/teraflow/ztp/ContextSubscriberTest.java
diff --git a/src/automation/src/test/java/eu/teraflow/ztp/EndPointCreationTest.java b/src/ztp/src/test/java/eu/teraflow/ztp/EndPointCreationTest.java
similarity index 100%
rename from src/automation/src/test/java/eu/teraflow/ztp/EndPointCreationTest.java
rename to src/ztp/src/test/java/eu/teraflow/ztp/EndPointCreationTest.java
diff --git a/src/automation/src/test/java/eu/teraflow/ztp/LocationTypeTest.java b/src/ztp/src/test/java/eu/teraflow/ztp/LocationTypeTest.java
similarity index 100%
rename from src/automation/src/test/java/eu/teraflow/ztp/LocationTypeTest.java
rename to src/ztp/src/test/java/eu/teraflow/ztp/LocationTypeTest.java
diff --git a/src/automation/src/test/java/eu/teraflow/ztp/MockZtpConfiguration.java b/src/ztp/src/test/java/eu/teraflow/ztp/MockZtpConfiguration.java
similarity index 100%
rename from src/automation/src/test/java/eu/teraflow/ztp/MockZtpConfiguration.java
rename to src/ztp/src/test/java/eu/teraflow/ztp/MockZtpConfiguration.java
diff --git a/src/automation/src/test/java/eu/teraflow/ztp/SerializerTest.java b/src/ztp/src/test/java/eu/teraflow/ztp/SerializerTest.java
similarity index 100%
rename from src/automation/src/test/java/eu/teraflow/ztp/SerializerTest.java
rename to src/ztp/src/test/java/eu/teraflow/ztp/SerializerTest.java
diff --git a/src/automation/src/test/java/eu/teraflow/ztp/ZtpFunctionalServiceTest.java b/src/ztp/src/test/java/eu/teraflow/ztp/ZtpFunctionalServiceTest.java
similarity index 100%
rename from src/automation/src/test/java/eu/teraflow/ztp/ZtpFunctionalServiceTest.java
rename to src/ztp/src/test/java/eu/teraflow/ztp/ZtpFunctionalServiceTest.java
diff --git a/src/automation/src/test/java/eu/teraflow/ztp/ZtpServiceTest.java b/src/ztp/src/test/java/eu/teraflow/ztp/ZtpServiceTest.java
similarity index 100%
rename from src/automation/src/test/java/eu/teraflow/ztp/ZtpServiceTest.java
rename to src/ztp/src/test/java/eu/teraflow/ztp/ZtpServiceTest.java
diff --git a/src/automation/target/generated-sources/grpc/acl/Acl.java b/src/ztp/target/generated-sources/grpc/acl/Acl.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/acl/Acl.java
rename to src/ztp/target/generated-sources/grpc/acl/Acl.java
diff --git a/src/automation/target/generated-sources/grpc/context/ContextOuterClass.java b/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java
similarity index 97%
rename from src/automation/target/generated-sources/grpc/context/ContextOuterClass.java
rename to src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java
index be7596350..85bc0d278 100644
--- a/src/automation/target/generated-sources/grpc/context/ContextOuterClass.java
+++ b/src/ztp/target/generated-sources/grpc/context/ContextOuterClass.java
@@ -457,6 +457,10 @@ public final class ContextOuterClass {
      * <code>SERVICETYPE_TAPI_CONNECTIVITY_SERVICE = 3;</code>
      */
     SERVICETYPE_TAPI_CONNECTIVITY_SERVICE(3),
+    /**
+     * <code>SERVICETYPE_TE = 4;</code>
+     */
+    SERVICETYPE_TE(4),
     UNRECOGNIZED(-1),
     ;
 
@@ -476,6 +480,10 @@ public final class ContextOuterClass {
      * <code>SERVICETYPE_TAPI_CONNECTIVITY_SERVICE = 3;</code>
      */
     public static final int SERVICETYPE_TAPI_CONNECTIVITY_SERVICE_VALUE = 3;
+    /**
+     * <code>SERVICETYPE_TE = 4;</code>
+     */
+    public static final int SERVICETYPE_TE_VALUE = 4;
 
 
     public final int getNumber() {
@@ -506,6 +514,7 @@ public final class ContextOuterClass {
         case 1: return SERVICETYPE_L3NM;
         case 2: return SERVICETYPE_L2NM;
         case 3: return SERVICETYPE_TAPI_CONNECTIVITY_SERVICE;
+        case 4: return SERVICETYPE_TE;
         default: return null;
       }
     }
@@ -15641,43 +15650,43 @@ public final class ContextOuterClass {
      * Used for inventory
      * </pre>
      *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.Component components = 8;</code>
      */
     java.util.List<context.ContextOuterClass.Component> 
-        getComponentList();
+        getComponentsList();
     /**
      * <pre>
      * Used for inventory
      * </pre>
      *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.Component components = 8;</code>
      */
-    context.ContextOuterClass.Component getComponent(int index);
+    context.ContextOuterClass.Component getComponents(int index);
     /**
      * <pre>
      * Used for inventory
      * </pre>
      *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.Component components = 8;</code>
      */
-    int getComponentCount();
+    int getComponentsCount();
     /**
      * <pre>
      * Used for inventory
      * </pre>
      *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.Component components = 8;</code>
      */
     java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> 
-        getComponentOrBuilderList();
+        getComponentsOrBuilderList();
     /**
      * <pre>
      * Used for inventory
      * </pre>
      *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.Component components = 8;</code>
      */
-    context.ContextOuterClass.ComponentOrBuilder getComponentOrBuilder(
+    context.ContextOuterClass.ComponentOrBuilder getComponentsOrBuilder(
         int index);
 
     /**
@@ -15725,7 +15734,7 @@ public final class ContextOuterClass {
       deviceOperationalStatus_ = 0;
       deviceDrivers_ = java.util.Collections.emptyList();
       deviceEndpoints_ = java.util.Collections.emptyList();
-      component_ = java.util.Collections.emptyList();
+      components_ = java.util.Collections.emptyList();
     }
 
     @java.lang.Override
@@ -15837,10 +15846,10 @@ public final class ContextOuterClass {
             }
             case 66: {
               if (!((mutable_bitField0_ & 0x00000004) != 0)) {
-                component_ = new java.util.ArrayList<context.ContextOuterClass.Component>();
+                components_ = new java.util.ArrayList<context.ContextOuterClass.Component>();
                 mutable_bitField0_ |= 0x00000004;
               }
-              component_.add(
+              components_.add(
                   input.readMessage(context.ContextOuterClass.Component.parser(), extensionRegistry));
               break;
             }
@@ -15879,7 +15888,7 @@ public final class ContextOuterClass {
           deviceEndpoints_ = java.util.Collections.unmodifiableList(deviceEndpoints_);
         }
         if (((mutable_bitField0_ & 0x00000004) != 0)) {
-          component_ = java.util.Collections.unmodifiableList(component_);
+          components_ = java.util.Collections.unmodifiableList(components_);
         }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
@@ -16143,64 +16152,64 @@ public final class ContextOuterClass {
       return deviceEndpoints_.get(index);
     }
 
-    public static final int COMPONENT_FIELD_NUMBER = 8;
-    private java.util.List<context.ContextOuterClass.Component> component_;
+    public static final int COMPONENTS_FIELD_NUMBER = 8;
+    private java.util.List<context.ContextOuterClass.Component> components_;
     /**
      * <pre>
      * Used for inventory
      * </pre>
      *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.Component components = 8;</code>
      */
     @java.lang.Override
-    public java.util.List<context.ContextOuterClass.Component> getComponentList() {
-      return component_;
+    public java.util.List<context.ContextOuterClass.Component> getComponentsList() {
+      return components_;
     }
     /**
      * <pre>
      * Used for inventory
      * </pre>
      *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.Component components = 8;</code>
      */
     @java.lang.Override
     public java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> 
-        getComponentOrBuilderList() {
-      return component_;
+        getComponentsOrBuilderList() {
+      return components_;
     }
     /**
      * <pre>
      * Used for inventory
      * </pre>
      *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.Component components = 8;</code>
      */
     @java.lang.Override
-    public int getComponentCount() {
-      return component_.size();
+    public int getComponentsCount() {
+      return components_.size();
     }
     /**
      * <pre>
      * Used for inventory
      * </pre>
      *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.Component components = 8;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.Component getComponent(int index) {
-      return component_.get(index);
+    public context.ContextOuterClass.Component getComponents(int index) {
+      return components_.get(index);
     }
     /**
      * <pre>
      * Used for inventory
      * </pre>
      *
-     * <code>repeated .context.Component component = 8;</code>
+     * <code>repeated .context.Component components = 8;</code>
      */
     @java.lang.Override
-    public context.ContextOuterClass.ComponentOrBuilder getComponentOrBuilder(
+    public context.ContextOuterClass.ComponentOrBuilder getComponentsOrBuilder(
         int index) {
-      return component_.get(index);
+      return components_.get(index);
     }
 
     public static final int CONTROLLER_ID_FIELD_NUMBER = 9;
@@ -16281,8 +16290,8 @@ public final class ContextOuterClass {
       for (int i = 0; i < deviceEndpoints_.size(); i++) {
         output.writeMessage(7, deviceEndpoints_.get(i));
       }
-      for (int i = 0; i < component_.size(); i++) {
-        output.writeMessage(8, component_.get(i));
+      for (int i = 0; i < components_.size(); i++) {
+        output.writeMessage(8, components_.get(i));
       }
       if (controllerId_ != null) {
         output.writeMessage(9, getControllerId());
@@ -16330,9 +16339,9 @@ public final class ContextOuterClass {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(7, deviceEndpoints_.get(i));
       }
-      for (int i = 0; i < component_.size(); i++) {
+      for (int i = 0; i < components_.size(); i++) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(8, component_.get(i));
+          .computeMessageSize(8, components_.get(i));
       }
       if (controllerId_ != null) {
         size += com.google.protobuf.CodedOutputStream
@@ -16371,8 +16380,8 @@ public final class ContextOuterClass {
       if (!deviceDrivers_.equals(other.deviceDrivers_)) return false;
       if (!getDeviceEndpointsList()
           .equals(other.getDeviceEndpointsList())) return false;
-      if (!getComponentList()
-          .equals(other.getComponentList())) return false;
+      if (!getComponentsList()
+          .equals(other.getComponentsList())) return false;
       if (hasControllerId() != other.hasControllerId()) return false;
       if (hasControllerId()) {
         if (!getControllerId()
@@ -16411,9 +16420,9 @@ public final class ContextOuterClass {
         hash = (37 * hash) + DEVICE_ENDPOINTS_FIELD_NUMBER;
         hash = (53 * hash) + getDeviceEndpointsList().hashCode();
       }
-      if (getComponentCount() > 0) {
-        hash = (37 * hash) + COMPONENT_FIELD_NUMBER;
-        hash = (53 * hash) + getComponentList().hashCode();
+      if (getComponentsCount() > 0) {
+        hash = (37 * hash) + COMPONENTS_FIELD_NUMBER;
+        hash = (53 * hash) + getComponentsList().hashCode();
       }
       if (hasControllerId()) {
         hash = (37 * hash) + CONTROLLER_ID_FIELD_NUMBER;
@@ -16548,7 +16557,7 @@ public final class ContextOuterClass {
         if (com.google.protobuf.GeneratedMessageV3
                 .alwaysUseFieldBuilders) {
           getDeviceEndpointsFieldBuilder();
-          getComponentFieldBuilder();
+          getComponentsFieldBuilder();
         }
       }
       @java.lang.Override
@@ -16580,11 +16589,11 @@ public final class ContextOuterClass {
         } else {
           deviceEndpointsBuilder_.clear();
         }
-        if (componentBuilder_ == null) {
-          component_ = java.util.Collections.emptyList();
+        if (componentsBuilder_ == null) {
+          components_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000004);
         } else {
-          componentBuilder_.clear();
+          componentsBuilder_.clear();
         }
         if (controllerIdBuilder_ == null) {
           controllerId_ = null;
@@ -16646,14 +16655,14 @@ public final class ContextOuterClass {
         } else {
           result.deviceEndpoints_ = deviceEndpointsBuilder_.build();
         }
-        if (componentBuilder_ == null) {
+        if (componentsBuilder_ == null) {
           if (((bitField0_ & 0x00000004) != 0)) {
-            component_ = java.util.Collections.unmodifiableList(component_);
+            components_ = java.util.Collections.unmodifiableList(components_);
             bitField0_ = (bitField0_ & ~0x00000004);
           }
-          result.component_ = component_;
+          result.components_ = components_;
         } else {
-          result.component_ = componentBuilder_.build();
+          result.components_ = componentsBuilder_.build();
         }
         if (controllerIdBuilder_ == null) {
           result.controllerId_ = controllerId_;
@@ -16761,29 +16770,29 @@ public final class ContextOuterClass {
             }
           }
         }
-        if (componentBuilder_ == null) {
-          if (!other.component_.isEmpty()) {
-            if (component_.isEmpty()) {
-              component_ = other.component_;
+        if (componentsBuilder_ == null) {
+          if (!other.components_.isEmpty()) {
+            if (components_.isEmpty()) {
+              components_ = other.components_;
               bitField0_ = (bitField0_ & ~0x00000004);
             } else {
-              ensureComponentIsMutable();
-              component_.addAll(other.component_);
+              ensureComponentsIsMutable();
+              components_.addAll(other.components_);
             }
             onChanged();
           }
         } else {
-          if (!other.component_.isEmpty()) {
-            if (componentBuilder_.isEmpty()) {
-              componentBuilder_.dispose();
-              componentBuilder_ = null;
-              component_ = other.component_;
+          if (!other.components_.isEmpty()) {
+            if (componentsBuilder_.isEmpty()) {
+              componentsBuilder_.dispose();
+              componentsBuilder_ = null;
+              components_ = other.components_;
               bitField0_ = (bitField0_ & ~0x00000004);
-              componentBuilder_ = 
+              componentsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
-                   getComponentFieldBuilder() : null;
+                   getComponentsFieldBuilder() : null;
             } else {
-              componentBuilder_.addAllMessages(other.component_);
+              componentsBuilder_.addAllMessages(other.components_);
             }
           }
         }
@@ -17644,30 +17653,30 @@ public final class ContextOuterClass {
         return deviceEndpointsBuilder_;
       }
 
-      private java.util.List<context.ContextOuterClass.Component> component_ =
+      private java.util.List<context.ContextOuterClass.Component> components_ =
         java.util.Collections.emptyList();
-      private void ensureComponentIsMutable() {
+      private void ensureComponentsIsMutable() {
         if (!((bitField0_ & 0x00000004) != 0)) {
-          component_ = new java.util.ArrayList<context.ContextOuterClass.Component>(component_);
+          components_ = new java.util.ArrayList<context.ContextOuterClass.Component>(components_);
           bitField0_ |= 0x00000004;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder> componentBuilder_;
+          context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder> componentsBuilder_;
 
       /**
        * <pre>
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public java.util.List<context.ContextOuterClass.Component> getComponentList() {
-        if (componentBuilder_ == null) {
-          return java.util.Collections.unmodifiableList(component_);
+      public java.util.List<context.ContextOuterClass.Component> getComponentsList() {
+        if (componentsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(components_);
         } else {
-          return componentBuilder_.getMessageList();
+          return componentsBuilder_.getMessageList();
         }
       }
       /**
@@ -17675,13 +17684,13 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public int getComponentCount() {
-        if (componentBuilder_ == null) {
-          return component_.size();
+      public int getComponentsCount() {
+        if (componentsBuilder_ == null) {
+          return components_.size();
         } else {
-          return componentBuilder_.getCount();
+          return componentsBuilder_.getCount();
         }
       }
       /**
@@ -17689,13 +17698,13 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public context.ContextOuterClass.Component getComponent(int index) {
-        if (componentBuilder_ == null) {
-          return component_.get(index);
+      public context.ContextOuterClass.Component getComponents(int index) {
+        if (componentsBuilder_ == null) {
+          return components_.get(index);
         } else {
-          return componentBuilder_.getMessage(index);
+          return componentsBuilder_.getMessage(index);
         }
       }
       /**
@@ -17703,19 +17712,19 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public Builder setComponent(
+      public Builder setComponents(
           int index, context.ContextOuterClass.Component value) {
-        if (componentBuilder_ == null) {
+        if (componentsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureComponentIsMutable();
-          component_.set(index, value);
+          ensureComponentsIsMutable();
+          components_.set(index, value);
           onChanged();
         } else {
-          componentBuilder_.setMessage(index, value);
+          componentsBuilder_.setMessage(index, value);
         }
         return this;
       }
@@ -17724,16 +17733,16 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public Builder setComponent(
+      public Builder setComponents(
           int index, context.ContextOuterClass.Component.Builder builderForValue) {
-        if (componentBuilder_ == null) {
-          ensureComponentIsMutable();
-          component_.set(index, builderForValue.build());
+        if (componentsBuilder_ == null) {
+          ensureComponentsIsMutable();
+          components_.set(index, builderForValue.build());
           onChanged();
         } else {
-          componentBuilder_.setMessage(index, builderForValue.build());
+          componentsBuilder_.setMessage(index, builderForValue.build());
         }
         return this;
       }
@@ -17742,18 +17751,18 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public Builder addComponent(context.ContextOuterClass.Component value) {
-        if (componentBuilder_ == null) {
+      public Builder addComponents(context.ContextOuterClass.Component value) {
+        if (componentsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureComponentIsMutable();
-          component_.add(value);
+          ensureComponentsIsMutable();
+          components_.add(value);
           onChanged();
         } else {
-          componentBuilder_.addMessage(value);
+          componentsBuilder_.addMessage(value);
         }
         return this;
       }
@@ -17762,19 +17771,19 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public Builder addComponent(
+      public Builder addComponents(
           int index, context.ContextOuterClass.Component value) {
-        if (componentBuilder_ == null) {
+        if (componentsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
-          ensureComponentIsMutable();
-          component_.add(index, value);
+          ensureComponentsIsMutable();
+          components_.add(index, value);
           onChanged();
         } else {
-          componentBuilder_.addMessage(index, value);
+          componentsBuilder_.addMessage(index, value);
         }
         return this;
       }
@@ -17783,16 +17792,16 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public Builder addComponent(
+      public Builder addComponents(
           context.ContextOuterClass.Component.Builder builderForValue) {
-        if (componentBuilder_ == null) {
-          ensureComponentIsMutable();
-          component_.add(builderForValue.build());
+        if (componentsBuilder_ == null) {
+          ensureComponentsIsMutable();
+          components_.add(builderForValue.build());
           onChanged();
         } else {
-          componentBuilder_.addMessage(builderForValue.build());
+          componentsBuilder_.addMessage(builderForValue.build());
         }
         return this;
       }
@@ -17801,16 +17810,16 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public Builder addComponent(
+      public Builder addComponents(
           int index, context.ContextOuterClass.Component.Builder builderForValue) {
-        if (componentBuilder_ == null) {
-          ensureComponentIsMutable();
-          component_.add(index, builderForValue.build());
+        if (componentsBuilder_ == null) {
+          ensureComponentsIsMutable();
+          components_.add(index, builderForValue.build());
           onChanged();
         } else {
-          componentBuilder_.addMessage(index, builderForValue.build());
+          componentsBuilder_.addMessage(index, builderForValue.build());
         }
         return this;
       }
@@ -17819,17 +17828,17 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public Builder addAllComponent(
+      public Builder addAllComponents(
           java.lang.Iterable<? extends context.ContextOuterClass.Component> values) {
-        if (componentBuilder_ == null) {
-          ensureComponentIsMutable();
+        if (componentsBuilder_ == null) {
+          ensureComponentsIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
-              values, component_);
+              values, components_);
           onChanged();
         } else {
-          componentBuilder_.addAllMessages(values);
+          componentsBuilder_.addAllMessages(values);
         }
         return this;
       }
@@ -17838,15 +17847,15 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public Builder clearComponent() {
-        if (componentBuilder_ == null) {
-          component_ = java.util.Collections.emptyList();
+      public Builder clearComponents() {
+        if (componentsBuilder_ == null) {
+          components_ = java.util.Collections.emptyList();
           bitField0_ = (bitField0_ & ~0x00000004);
           onChanged();
         } else {
-          componentBuilder_.clear();
+          componentsBuilder_.clear();
         }
         return this;
       }
@@ -17855,15 +17864,15 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public Builder removeComponent(int index) {
-        if (componentBuilder_ == null) {
-          ensureComponentIsMutable();
-          component_.remove(index);
+      public Builder removeComponents(int index) {
+        if (componentsBuilder_ == null) {
+          ensureComponentsIsMutable();
+          components_.remove(index);
           onChanged();
         } else {
-          componentBuilder_.remove(index);
+          componentsBuilder_.remove(index);
         }
         return this;
       }
@@ -17872,24 +17881,24 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public context.ContextOuterClass.Component.Builder getComponentBuilder(
+      public context.ContextOuterClass.Component.Builder getComponentsBuilder(
           int index) {
-        return getComponentFieldBuilder().getBuilder(index);
+        return getComponentsFieldBuilder().getBuilder(index);
       }
       /**
        * <pre>
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public context.ContextOuterClass.ComponentOrBuilder getComponentOrBuilder(
+      public context.ContextOuterClass.ComponentOrBuilder getComponentsOrBuilder(
           int index) {
-        if (componentBuilder_ == null) {
-          return component_.get(index);  } else {
-          return componentBuilder_.getMessageOrBuilder(index);
+        if (componentsBuilder_ == null) {
+          return components_.get(index);  } else {
+          return componentsBuilder_.getMessageOrBuilder(index);
         }
       }
       /**
@@ -17897,14 +17906,14 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
       public java.util.List<? extends context.ContextOuterClass.ComponentOrBuilder> 
-           getComponentOrBuilderList() {
-        if (componentBuilder_ != null) {
-          return componentBuilder_.getMessageOrBuilderList();
+           getComponentsOrBuilderList() {
+        if (componentsBuilder_ != null) {
+          return componentsBuilder_.getMessageOrBuilderList();
         } else {
-          return java.util.Collections.unmodifiableList(component_);
+          return java.util.Collections.unmodifiableList(components_);
         }
       }
       /**
@@ -17912,10 +17921,10 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public context.ContextOuterClass.Component.Builder addComponentBuilder() {
-        return getComponentFieldBuilder().addBuilder(
+      public context.ContextOuterClass.Component.Builder addComponentsBuilder() {
+        return getComponentsFieldBuilder().addBuilder(
             context.ContextOuterClass.Component.getDefaultInstance());
       }
       /**
@@ -17923,11 +17932,11 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
-      public context.ContextOuterClass.Component.Builder addComponentBuilder(
+      public context.ContextOuterClass.Component.Builder addComponentsBuilder(
           int index) {
-        return getComponentFieldBuilder().addBuilder(
+        return getComponentsFieldBuilder().addBuilder(
             index, context.ContextOuterClass.Component.getDefaultInstance());
       }
       /**
@@ -17935,25 +17944,25 @@ public final class ContextOuterClass {
        * Used for inventory
        * </pre>
        *
-       * <code>repeated .context.Component component = 8;</code>
+       * <code>repeated .context.Component components = 8;</code>
        */
       public java.util.List<context.ContextOuterClass.Component.Builder> 
-           getComponentBuilderList() {
-        return getComponentFieldBuilder().getBuilderList();
+           getComponentsBuilderList() {
+        return getComponentsFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
           context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder> 
-          getComponentFieldBuilder() {
-        if (componentBuilder_ == null) {
-          componentBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+          getComponentsFieldBuilder() {
+        if (componentsBuilder_ == null) {
+          componentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
               context.ContextOuterClass.Component, context.ContextOuterClass.Component.Builder, context.ContextOuterClass.ComponentOrBuilder>(
-                  component_,
+                  components_,
                   ((bitField0_ & 0x00000004) != 0),
                   getParentForChildren(),
                   isClean());
-          component_ = null;
+          components_ = null;
         }
-        return componentBuilder_;
+        return componentsBuilder_;
       }
 
       private context.ContextOuterClass.DeviceId controllerId_;
@@ -18168,31 +18177,115 @@ public final class ContextOuterClass {
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated string comp_string = 1;</code>
-     * @return A list containing the compString.
+     * <code>.context.Uuid component_uuid = 1;</code>
+     * @return Whether the componentUuid field is set.
      */
-    java.util.List<java.lang.String>
-        getCompStringList();
+    boolean hasComponentUuid();
     /**
-     * <code>repeated string comp_string = 1;</code>
-     * @return The count of compString.
+     * <code>.context.Uuid component_uuid = 1;</code>
+     * @return The componentUuid.
      */
-    int getCompStringCount();
+    context.ContextOuterClass.Uuid getComponentUuid();
     /**
-     * <code>repeated string comp_string = 1;</code>
-     * @param index The index of the element to return.
-     * @return The compString at the given index.
+     * <code>.context.Uuid component_uuid = 1;</code>
      */
-    java.lang.String getCompString(int index);
+    context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder();
+
     /**
-     * <code>repeated string comp_string = 1;</code>
-     * @param index The index of the value to return.
-     * @return The bytes of the compString at the given index.
+     * <code>string name = 2;</code>
+     * @return The name.
+     */
+    java.lang.String getName();
+    /**
+     * <code>string name = 2;</code>
+     * @return The bytes for name.
+     */
+    com.google.protobuf.ByteString
+        getNameBytes();
+
+    /**
+     * <code>string type = 3;</code>
+     * @return The type.
+     */
+    java.lang.String getType();
+    /**
+     * <code>string type = 3;</code>
+     * @return The bytes for type.
+     */
+    com.google.protobuf.ByteString
+        getTypeBytes();
+
+    /**
+     * <pre>
+     * dict[attr.name =&gt; json.dumps(attr.value)]
+     * </pre>
+     *
+     * <code>map&lt;string, string&gt; attributes = 4;</code>
+     */
+    int getAttributesCount();
+    /**
+     * <pre>
+     * dict[attr.name =&gt; json.dumps(attr.value)]
+     * </pre>
+     *
+     * <code>map&lt;string, string&gt; attributes = 4;</code>
+     */
+    boolean containsAttributes(
+        java.lang.String key);
+    /**
+     * Use {@link #getAttributesMap()} instead.
+     */
+    @java.lang.Deprecated
+    java.util.Map<java.lang.String, java.lang.String>
+    getAttributes();
+    /**
+     * <pre>
+     * dict[attr.name =&gt; json.dumps(attr.value)]
+     * </pre>
+     *
+     * <code>map&lt;string, string&gt; attributes = 4;</code>
+     */
+    java.util.Map<java.lang.String, java.lang.String>
+    getAttributesMap();
+    /**
+     * <pre>
+     * dict[attr.name =&gt; json.dumps(attr.value)]
+     * </pre>
+     *
+     * <code>map&lt;string, string&gt; attributes = 4;</code>
+     */
+
+    java.lang.String getAttributesOrDefault(
+        java.lang.String key,
+        java.lang.String defaultValue);
+    /**
+     * <pre>
+     * dict[attr.name =&gt; json.dumps(attr.value)]
+     * </pre>
+     *
+     * <code>map&lt;string, string&gt; attributes = 4;</code>
+     */
+
+    java.lang.String getAttributesOrThrow(
+        java.lang.String key);
+
+    /**
+     * <code>string parent = 5;</code>
+     * @return The parent.
+     */
+    java.lang.String getParent();
+    /**
+     * <code>string parent = 5;</code>
+     * @return The bytes for parent.
      */
     com.google.protobuf.ByteString
-        getCompStringBytes(int index);
+        getParentBytes();
   }
   /**
+   * <pre>
+   *Defined previously to this section - Tested OK
+   * </pre>
+   *
    * Protobuf type {@code context.Component}
    */
   public static final class Component extends
@@ -18205,7 +18298,9 @@ public final class ContextOuterClass {
       super(builder);
     }
     private Component() {
-      compString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+      name_ = "";
+      type_ = "";
+      parent_ = "";
     }
 
     @java.lang.Override
@@ -18240,12 +18335,47 @@ public final class ContextOuterClass {
               done = true;
               break;
             case 10: {
+              context.ContextOuterClass.Uuid.Builder subBuilder = null;
+              if (componentUuid_ != null) {
+                subBuilder = componentUuid_.toBuilder();
+              }
+              componentUuid_ = input.readMessage(context.ContextOuterClass.Uuid.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(componentUuid_);
+                componentUuid_ = subBuilder.buildPartial();
+              }
+
+              break;
+            }
+            case 18: {
               java.lang.String s = input.readStringRequireUtf8();
+
+              name_ = s;
+              break;
+            }
+            case 26: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              type_ = s;
+              break;
+            }
+            case 34: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                compString_ = new com.google.protobuf.LazyStringArrayList();
+                attributes_ = com.google.protobuf.MapField.newMapField(
+                    AttributesDefaultEntryHolder.defaultEntry);
                 mutable_bitField0_ |= 0x00000001;
               }
-              compString_.add(s);
+              com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
+              attributes__ = input.readMessage(
+                  AttributesDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
+              attributes_.getMutableMap().put(
+                  attributes__.getKey(), attributes__.getValue());
+              break;
+            }
+            case 42: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              parent_ = s;
               break;
             }
             default: {
@@ -18263,9 +18393,6 @@ public final class ContextOuterClass {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
-          compString_ = compString_.getUnmodifiableView();
-        }
         this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
@@ -18275,6 +18402,18 @@ public final class ContextOuterClass {
       return context.ContextOuterClass.internal_static_context_Component_descriptor;
     }
 
+    @SuppressWarnings({"rawtypes"})
+    @java.lang.Override
+    protected com.google.protobuf.MapField internalGetMapField(
+        int number) {
+      switch (number) {
+        case 4:
+          return internalGetAttributes();
+        default:
+          throw new RuntimeException(
+              "Invalid map field number: " + number);
+      }
+    }
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
@@ -18283,39 +18422,241 @@ public final class ContextOuterClass {
               context.ContextOuterClass.Component.class, context.ContextOuterClass.Component.Builder.class);
     }
 
-    public static final int COMP_STRING_FIELD_NUMBER = 1;
-    private com.google.protobuf.LazyStringList compString_;
+    public static final int COMPONENT_UUID_FIELD_NUMBER = 1;
+    private context.ContextOuterClass.Uuid componentUuid_;
     /**
-     * <code>repeated string comp_string = 1;</code>
-     * @return A list containing the compString.
+     * <code>.context.Uuid component_uuid = 1;</code>
+     * @return Whether the componentUuid field is set.
      */
-    public com.google.protobuf.ProtocolStringList
-        getCompStringList() {
-      return compString_;
+    @java.lang.Override
+    public boolean hasComponentUuid() {
+      return componentUuid_ != null;
     }
     /**
-     * <code>repeated string comp_string = 1;</code>
-     * @return The count of compString.
+     * <code>.context.Uuid component_uuid = 1;</code>
+     * @return The componentUuid.
      */
-    public int getCompStringCount() {
-      return compString_.size();
+    @java.lang.Override
+    public context.ContextOuterClass.Uuid getComponentUuid() {
+      return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
     }
     /**
-     * <code>repeated string comp_string = 1;</code>
-     * @param index The index of the element to return.
-     * @return The compString at the given index.
+     * <code>.context.Uuid component_uuid = 1;</code>
+     */
+    @java.lang.Override
+    public context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder() {
+      return getComponentUuid();
+    }
+
+    public static final int NAME_FIELD_NUMBER = 2;
+    private volatile java.lang.Object name_;
+    /**
+     * <code>string name = 2;</code>
+     * @return The name.
      */
-    public java.lang.String getCompString(int index) {
-      return compString_.get(index);
+    @java.lang.Override
+    public java.lang.String getName() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        name_ = s;
+        return s;
+      }
     }
     /**
-     * <code>repeated string comp_string = 1;</code>
-     * @param index The index of the value to return.
-     * @return The bytes of the compString at the given index.
+     * <code>string name = 2;</code>
+     * @return The bytes for name.
      */
+    @java.lang.Override
     public com.google.protobuf.ByteString
-        getCompStringBytes(int index) {
-      return compString_.getByteString(index);
+        getNameBytes() {
+      java.lang.Object ref = name_;
+      if (ref instanceof java.lang.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;
+      }
+    }
+
+    public static final int TYPE_FIELD_NUMBER = 3;
+    private volatile java.lang.Object type_;
+    /**
+     * <code>string type = 3;</code>
+     * @return The type.
+     */
+    @java.lang.Override
+    public java.lang.String getType() {
+      java.lang.Object ref = type_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        type_ = s;
+        return s;
+      }
+    }
+    /**
+     * <code>string type = 3;</code>
+     * @return The bytes for type.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getTypeBytes() {
+      java.lang.Object ref = type_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        type_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int ATTRIBUTES_FIELD_NUMBER = 4;
+    private static final class AttributesDefaultEntryHolder {
+      static final com.google.protobuf.MapEntry<
+          java.lang.String, java.lang.String> defaultEntry =
+              com.google.protobuf.MapEntry
+              .<java.lang.String, java.lang.String>newDefaultInstance(
+                  context.ContextOuterClass.internal_static_context_Component_AttributesEntry_descriptor, 
+                  com.google.protobuf.WireFormat.FieldType.STRING,
+                  "",
+                  com.google.protobuf.WireFormat.FieldType.STRING,
+                  "");
+    }
+    private com.google.protobuf.MapField<
+        java.lang.String, java.lang.String> attributes_;
+    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
+    internalGetAttributes() {
+      if (attributes_ == null) {
+        return com.google.protobuf.MapField.emptyMapField(
+            AttributesDefaultEntryHolder.defaultEntry);
+      }
+      return attributes_;
+    }
+
+    public int getAttributesCount() {
+      return internalGetAttributes().getMap().size();
+    }
+    /**
+     * <pre>
+     * dict[attr.name =&gt; json.dumps(attr.value)]
+     * </pre>
+     *
+     * <code>map&lt;string, string&gt; attributes = 4;</code>
+     */
+
+    @java.lang.Override
+    public boolean containsAttributes(
+        java.lang.String key) {
+      if (key == null) { throw new java.lang.NullPointerException(); }
+      return internalGetAttributes().getMap().containsKey(key);
+    }
+    /**
+     * Use {@link #getAttributesMap()} instead.
+     */
+    @java.lang.Override
+    @java.lang.Deprecated
+    public java.util.Map<java.lang.String, java.lang.String> getAttributes() {
+      return getAttributesMap();
+    }
+    /**
+     * <pre>
+     * dict[attr.name =&gt; json.dumps(attr.value)]
+     * </pre>
+     *
+     * <code>map&lt;string, string&gt; attributes = 4;</code>
+     */
+    @java.lang.Override
+
+    public java.util.Map<java.lang.String, java.lang.String> getAttributesMap() {
+      return internalGetAttributes().getMap();
+    }
+    /**
+     * <pre>
+     * dict[attr.name =&gt; json.dumps(attr.value)]
+     * </pre>
+     *
+     * <code>map&lt;string, string&gt; attributes = 4;</code>
+     */
+    @java.lang.Override
+
+    public java.lang.String getAttributesOrDefault(
+        java.lang.String key,
+        java.lang.String defaultValue) {
+      if (key == null) { throw new java.lang.NullPointerException(); }
+      java.util.Map<java.lang.String, java.lang.String> map =
+          internalGetAttributes().getMap();
+      return map.containsKey(key) ? map.get(key) : defaultValue;
+    }
+    /**
+     * <pre>
+     * dict[attr.name =&gt; json.dumps(attr.value)]
+     * </pre>
+     *
+     * <code>map&lt;string, string&gt; attributes = 4;</code>
+     */
+    @java.lang.Override
+
+    public java.lang.String getAttributesOrThrow(
+        java.lang.String key) {
+      if (key == null) { throw new java.lang.NullPointerException(); }
+      java.util.Map<java.lang.String, java.lang.String> map =
+          internalGetAttributes().getMap();
+      if (!map.containsKey(key)) {
+        throw new java.lang.IllegalArgumentException();
+      }
+      return map.get(key);
+    }
+
+    public static final int PARENT_FIELD_NUMBER = 5;
+    private volatile java.lang.Object parent_;
+    /**
+     * <code>string parent = 5;</code>
+     * @return The parent.
+     */
+    @java.lang.Override
+    public java.lang.String getParent() {
+      java.lang.Object ref = parent_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        parent_ = s;
+        return s;
+      }
+    }
+    /**
+     * <code>string parent = 5;</code>
+     * @return The bytes for parent.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getParentBytes() {
+      java.lang.Object ref = parent_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        parent_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
     }
 
     private byte memoizedIsInitialized = -1;
@@ -18332,8 +18673,23 @@ public final class ContextOuterClass {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      for (int i = 0; i < compString_.size(); i++) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, compString_.getRaw(i));
+      if (componentUuid_ != null) {
+        output.writeMessage(1, getComponentUuid());
+      }
+      if (!getNameBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
+      }
+      if (!getTypeBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, type_);
+      }
+      com.google.protobuf.GeneratedMessageV3
+        .serializeStringMapTo(
+          output,
+          internalGetAttributes(),
+          AttributesDefaultEntryHolder.defaultEntry,
+          4);
+      if (!getParentBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, parent_);
       }
       unknownFields.writeTo(output);
     }
@@ -18344,13 +18700,28 @@ public final class ContextOuterClass {
       if (size != -1) return size;
 
       size = 0;
-      {
-        int dataSize = 0;
-        for (int i = 0; i < compString_.size(); i++) {
-          dataSize += computeStringSizeNoTag(compString_.getRaw(i));
-        }
-        size += dataSize;
-        size += 1 * getCompStringList().size();
+      if (componentUuid_ != null) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, getComponentUuid());
+      }
+      if (!getNameBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
+      }
+      if (!getTypeBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, type_);
+      }
+      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
+           : internalGetAttributes().getMap().entrySet()) {
+        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
+        attributes__ = AttributesDefaultEntryHolder.defaultEntry.newBuilderForType()
+            .setKey(entry.getKey())
+            .setValue(entry.getValue())
+            .build();
+        size += com.google.protobuf.CodedOutputStream
+            .computeMessageSize(4, attributes__);
+      }
+      if (!getParentBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, parent_);
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -18367,8 +18738,19 @@ public final class ContextOuterClass {
       }
       context.ContextOuterClass.Component other = (context.ContextOuterClass.Component) obj;
 
-      if (!getCompStringList()
-          .equals(other.getCompStringList())) return false;
+      if (hasComponentUuid() != other.hasComponentUuid()) return false;
+      if (hasComponentUuid()) {
+        if (!getComponentUuid()
+            .equals(other.getComponentUuid())) return false;
+      }
+      if (!getName()
+          .equals(other.getName())) return false;
+      if (!getType()
+          .equals(other.getType())) return false;
+      if (!internalGetAttributes().equals(
+          other.internalGetAttributes())) return false;
+      if (!getParent()
+          .equals(other.getParent())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -18380,10 +18762,20 @@ public final class ContextOuterClass {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      if (getCompStringCount() > 0) {
-        hash = (37 * hash) + COMP_STRING_FIELD_NUMBER;
-        hash = (53 * hash) + getCompStringList().hashCode();
+      if (hasComponentUuid()) {
+        hash = (37 * hash) + COMPONENT_UUID_FIELD_NUMBER;
+        hash = (53 * hash) + getComponentUuid().hashCode();
       }
+      hash = (37 * hash) + NAME_FIELD_NUMBER;
+      hash = (53 * hash) + getName().hashCode();
+      hash = (37 * hash) + TYPE_FIELD_NUMBER;
+      hash = (53 * hash) + getType().hashCode();
+      if (!internalGetAttributes().getMap().isEmpty()) {
+        hash = (37 * hash) + ATTRIBUTES_FIELD_NUMBER;
+        hash = (53 * hash) + internalGetAttributes().hashCode();
+      }
+      hash = (37 * hash) + PARENT_FIELD_NUMBER;
+      hash = (53 * hash) + getParent().hashCode();
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
@@ -18480,6 +18872,10 @@ public final class ContextOuterClass {
       return builder;
     }
     /**
+     * <pre>
+     *Defined previously to this section - Tested OK
+     * </pre>
+     *
      * Protobuf type {@code context.Component}
      */
     public static final class Builder extends
@@ -18491,6 +18887,28 @@ public final class ContextOuterClass {
         return context.ContextOuterClass.internal_static_context_Component_descriptor;
       }
 
+      @SuppressWarnings({"rawtypes"})
+      protected com.google.protobuf.MapField internalGetMapField(
+          int number) {
+        switch (number) {
+          case 4:
+            return internalGetAttributes();
+          default:
+            throw new RuntimeException(
+                "Invalid map field number: " + number);
+        }
+      }
+      @SuppressWarnings({"rawtypes"})
+      protected com.google.protobuf.MapField internalGetMutableMapField(
+          int number) {
+        switch (number) {
+          case 4:
+            return internalGetMutableAttributes();
+          default:
+            throw new RuntimeException(
+                "Invalid map field number: " + number);
+        }
+      }
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
@@ -18517,8 +18935,19 @@ public final class ContextOuterClass {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        compString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000001);
+        if (componentUuidBuilder_ == null) {
+          componentUuid_ = null;
+        } else {
+          componentUuid_ = null;
+          componentUuidBuilder_ = null;
+        }
+        name_ = "";
+
+        type_ = "";
+
+        internalGetMutableAttributes().clear();
+        parent_ = "";
+
         return this;
       }
 
@@ -18546,11 +18975,16 @@ public final class ContextOuterClass {
       public context.ContextOuterClass.Component buildPartial() {
         context.ContextOuterClass.Component result = new context.ContextOuterClass.Component(this);
         int from_bitField0_ = bitField0_;
-        if (((bitField0_ & 0x00000001) != 0)) {
-          compString_ = compString_.getUnmodifiableView();
-          bitField0_ = (bitField0_ & ~0x00000001);
+        if (componentUuidBuilder_ == null) {
+          result.componentUuid_ = componentUuid_;
+        } else {
+          result.componentUuid_ = componentUuidBuilder_.build();
         }
-        result.compString_ = compString_;
+        result.name_ = name_;
+        result.type_ = type_;
+        result.attributes_ = internalGetAttributes();
+        result.attributes_.makeImmutable();
+        result.parent_ = parent_;
         onBuilt();
         return result;
       }
@@ -18599,14 +19033,21 @@ public final class ContextOuterClass {
 
       public Builder mergeFrom(context.ContextOuterClass.Component other) {
         if (other == context.ContextOuterClass.Component.getDefaultInstance()) return this;
-        if (!other.compString_.isEmpty()) {
-          if (compString_.isEmpty()) {
-            compString_ = other.compString_;
-            bitField0_ = (bitField0_ & ~0x00000001);
-          } else {
-            ensureCompStringIsMutable();
-            compString_.addAll(other.compString_);
-          }
+        if (other.hasComponentUuid()) {
+          mergeComponentUuid(other.getComponentUuid());
+        }
+        if (!other.getName().isEmpty()) {
+          name_ = other.name_;
+          onChanged();
+        }
+        if (!other.getType().isEmpty()) {
+          type_ = other.type_;
+          onChanged();
+        }
+        internalGetMutableAttributes().mergeFrom(
+            other.internalGetAttributes());
+        if (!other.getParent().isEmpty()) {
+          parent_ = other.parent_;
           onChanged();
         }
         this.mergeUnknownFields(other.unknownFields);
@@ -18639,112 +19080,505 @@ public final class ContextOuterClass {
       }
       private int bitField0_;
 
-      private com.google.protobuf.LazyStringList compString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-      private void ensureCompStringIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
-          compString_ = new com.google.protobuf.LazyStringArrayList(compString_);
-          bitField0_ |= 0x00000001;
-         }
+      private context.ContextOuterClass.Uuid componentUuid_;
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> componentUuidBuilder_;
+      /**
+       * <code>.context.Uuid component_uuid = 1;</code>
+       * @return Whether the componentUuid field is set.
+       */
+      public boolean hasComponentUuid() {
+        return componentUuidBuilder_ != null || componentUuid_ != null;
       }
       /**
-       * <code>repeated string comp_string = 1;</code>
-       * @return A list containing the compString.
+       * <code>.context.Uuid component_uuid = 1;</code>
+       * @return The componentUuid.
        */
-      public com.google.protobuf.ProtocolStringList
-          getCompStringList() {
-        return compString_.getUnmodifiableView();
+      public context.ContextOuterClass.Uuid getComponentUuid() {
+        if (componentUuidBuilder_ == null) {
+          return componentUuid_ == null ? context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
+        } else {
+          return componentUuidBuilder_.getMessage();
+        }
       }
       /**
-       * <code>repeated string comp_string = 1;</code>
-       * @return The count of compString.
+       * <code>.context.Uuid component_uuid = 1;</code>
        */
-      public int getCompStringCount() {
-        return compString_.size();
+      public Builder setComponentUuid(context.ContextOuterClass.Uuid value) {
+        if (componentUuidBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          componentUuid_ = value;
+          onChanged();
+        } else {
+          componentUuidBuilder_.setMessage(value);
+        }
+
+        return this;
       }
       /**
-       * <code>repeated string comp_string = 1;</code>
-       * @param index The index of the element to return.
-       * @return The compString at the given index.
+       * <code>.context.Uuid component_uuid = 1;</code>
        */
-      public java.lang.String getCompString(int index) {
-        return compString_.get(index);
+      public Builder setComponentUuid(
+          context.ContextOuterClass.Uuid.Builder builderForValue) {
+        if (componentUuidBuilder_ == null) {
+          componentUuid_ = builderForValue.build();
+          onChanged();
+        } else {
+          componentUuidBuilder_.setMessage(builderForValue.build());
+        }
+
+        return this;
       }
       /**
-       * <code>repeated string comp_string = 1;</code>
-       * @param index The index of the value to return.
-       * @return The bytes of the compString at the given index.
+       * <code>.context.Uuid component_uuid = 1;</code>
+       */
+      public Builder mergeComponentUuid(context.ContextOuterClass.Uuid value) {
+        if (componentUuidBuilder_ == null) {
+          if (componentUuid_ != null) {
+            componentUuid_ =
+              context.ContextOuterClass.Uuid.newBuilder(componentUuid_).mergeFrom(value).buildPartial();
+          } else {
+            componentUuid_ = value;
+          }
+          onChanged();
+        } else {
+          componentUuidBuilder_.mergeFrom(value);
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.Uuid component_uuid = 1;</code>
+       */
+      public Builder clearComponentUuid() {
+        if (componentUuidBuilder_ == null) {
+          componentUuid_ = null;
+          onChanged();
+        } else {
+          componentUuid_ = null;
+          componentUuidBuilder_ = null;
+        }
+
+        return this;
+      }
+      /**
+       * <code>.context.Uuid component_uuid = 1;</code>
+       */
+      public context.ContextOuterClass.Uuid.Builder getComponentUuidBuilder() {
+        
+        onChanged();
+        return getComponentUuidFieldBuilder().getBuilder();
+      }
+      /**
+       * <code>.context.Uuid component_uuid = 1;</code>
+       */
+      public context.ContextOuterClass.UuidOrBuilder getComponentUuidOrBuilder() {
+        if (componentUuidBuilder_ != null) {
+          return componentUuidBuilder_.getMessageOrBuilder();
+        } else {
+          return componentUuid_ == null ?
+              context.ContextOuterClass.Uuid.getDefaultInstance() : componentUuid_;
+        }
+      }
+      /**
+       * <code>.context.Uuid component_uuid = 1;</code>
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder> 
+          getComponentUuidFieldBuilder() {
+        if (componentUuidBuilder_ == null) {
+          componentUuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              context.ContextOuterClass.Uuid, context.ContextOuterClass.Uuid.Builder, context.ContextOuterClass.UuidOrBuilder>(
+                  getComponentUuid(),
+                  getParentForChildren(),
+                  isClean());
+          componentUuid_ = null;
+        }
+        return componentUuidBuilder_;
+      }
+
+      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
-          getCompStringBytes(int index) {
-        return compString_.getByteString(index);
+          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>repeated string comp_string = 1;</code>
-       * @param index The index to set the value at.
-       * @param value The compString to set.
+       * <code>string name = 2;</code>
+       * @param value The name to set.
        * @return This builder for chaining.
        */
-      public Builder setCompString(
-          int index, java.lang.String value) {
+      public Builder setName(
+          java.lang.String value) {
         if (value == null) {
     throw new NullPointerException();
   }
-  ensureCompStringIsMutable();
-        compString_.set(index, value);
+  
+        name_ = value;
         onChanged();
         return this;
       }
       /**
-       * <code>repeated string comp_string = 1;</code>
-       * @param value The compString to add.
+       * <code>string name = 2;</code>
        * @return This builder for chaining.
        */
-      public Builder addCompString(
+      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 java.lang.Object type_ = "";
+      /**
+       * <code>string type = 3;</code>
+       * @return The type.
+       */
+      public java.lang.String getType() {
+        java.lang.Object ref = type_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          type_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>string type = 3;</code>
+       * @return The bytes for type.
+       */
+      public com.google.protobuf.ByteString
+          getTypeBytes() {
+        java.lang.Object ref = type_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          type_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>string type = 3;</code>
+       * @param value The type to set.
+       * @return This builder for chaining.
+       */
+      public Builder setType(
           java.lang.String value) {
         if (value == null) {
     throw new NullPointerException();
   }
-  ensureCompStringIsMutable();
-        compString_.add(value);
+  
+        type_ = value;
         onChanged();
         return this;
       }
       /**
-       * <code>repeated string comp_string = 1;</code>
-       * @param values The compString to add.
+       * <code>string type = 3;</code>
        * @return This builder for chaining.
        */
-      public Builder addAllCompString(
-          java.lang.Iterable<java.lang.String> values) {
-        ensureCompStringIsMutable();
-        com.google.protobuf.AbstractMessageLite.Builder.addAll(
-            values, compString_);
+      public Builder clearType() {
+        
+        type_ = getDefaultInstance().getType();
         onChanged();
         return this;
       }
       /**
-       * <code>repeated string comp_string = 1;</code>
+       * <code>string type = 3;</code>
+       * @param value The bytes for type to set.
        * @return This builder for chaining.
        */
-      public Builder clearCompString() {
-        compString_ = com.google.protobuf.LazyStringArrayList.EMPTY;
-        bitField0_ = (bitField0_ & ~0x00000001);
+      public Builder setTypeBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        
+        type_ = value;
+        onChanged();
+        return this;
+      }
+
+      private com.google.protobuf.MapField<
+          java.lang.String, java.lang.String> attributes_;
+      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
+      internalGetAttributes() {
+        if (attributes_ == null) {
+          return com.google.protobuf.MapField.emptyMapField(
+              AttributesDefaultEntryHolder.defaultEntry);
+        }
+        return attributes_;
+      }
+      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
+      internalGetMutableAttributes() {
+        onChanged();;
+        if (attributes_ == null) {
+          attributes_ = com.google.protobuf.MapField.newMapField(
+              AttributesDefaultEntryHolder.defaultEntry);
+        }
+        if (!attributes_.isMutable()) {
+          attributes_ = attributes_.copy();
+        }
+        return attributes_;
+      }
+
+      public int getAttributesCount() {
+        return internalGetAttributes().getMap().size();
+      }
+      /**
+       * <pre>
+       * dict[attr.name =&gt; json.dumps(attr.value)]
+       * </pre>
+       *
+       * <code>map&lt;string, string&gt; attributes = 4;</code>
+       */
+
+      @java.lang.Override
+      public boolean containsAttributes(
+          java.lang.String key) {
+        if (key == null) { throw new java.lang.NullPointerException(); }
+        return internalGetAttributes().getMap().containsKey(key);
+      }
+      /**
+       * Use {@link #getAttributesMap()} instead.
+       */
+      @java.lang.Override
+      @java.lang.Deprecated
+      public java.util.Map<java.lang.String, java.lang.String> getAttributes() {
+        return getAttributesMap();
+      }
+      /**
+       * <pre>
+       * dict[attr.name =&gt; json.dumps(attr.value)]
+       * </pre>
+       *
+       * <code>map&lt;string, string&gt; attributes = 4;</code>
+       */
+      @java.lang.Override
+
+      public java.util.Map<java.lang.String, java.lang.String> getAttributesMap() {
+        return internalGetAttributes().getMap();
+      }
+      /**
+       * <pre>
+       * dict[attr.name =&gt; json.dumps(attr.value)]
+       * </pre>
+       *
+       * <code>map&lt;string, string&gt; attributes = 4;</code>
+       */
+      @java.lang.Override
+
+      public java.lang.String getAttributesOrDefault(
+          java.lang.String key,
+          java.lang.String defaultValue) {
+        if (key == null) { throw new java.lang.NullPointerException(); }
+        java.util.Map<java.lang.String, java.lang.String> map =
+            internalGetAttributes().getMap();
+        return map.containsKey(key) ? map.get(key) : defaultValue;
+      }
+      /**
+       * <pre>
+       * dict[attr.name =&gt; json.dumps(attr.value)]
+       * </pre>
+       *
+       * <code>map&lt;string, string&gt; attributes = 4;</code>
+       */
+      @java.lang.Override
+
+      public java.lang.String getAttributesOrThrow(
+          java.lang.String key) {
+        if (key == null) { throw new java.lang.NullPointerException(); }
+        java.util.Map<java.lang.String, java.lang.String> map =
+            internalGetAttributes().getMap();
+        if (!map.containsKey(key)) {
+          throw new java.lang.IllegalArgumentException();
+        }
+        return map.get(key);
+      }
+
+      public Builder clearAttributes() {
+        internalGetMutableAttributes().getMutableMap()
+            .clear();
+        return this;
+      }
+      /**
+       * <pre>
+       * dict[attr.name =&gt; json.dumps(attr.value)]
+       * </pre>
+       *
+       * <code>map&lt;string, string&gt; attributes = 4;</code>
+       */
+
+      public Builder removeAttributes(
+          java.lang.String key) {
+        if (key == null) { throw new java.lang.NullPointerException(); }
+        internalGetMutableAttributes().getMutableMap()
+            .remove(key);
+        return this;
+      }
+      /**
+       * Use alternate mutation accessors instead.
+       */
+      @java.lang.Deprecated
+      public java.util.Map<java.lang.String, java.lang.String>
+      getMutableAttributes() {
+        return internalGetMutableAttributes().getMutableMap();
+      }
+      /**
+       * <pre>
+       * dict[attr.name =&gt; json.dumps(attr.value)]
+       * </pre>
+       *
+       * <code>map&lt;string, string&gt; attributes = 4;</code>
+       */
+      public Builder putAttributes(
+          java.lang.String key,
+          java.lang.String value) {
+        if (key == null) { throw new java.lang.NullPointerException(); }
+        if (value == null) { throw new java.lang.NullPointerException(); }
+        internalGetMutableAttributes().getMutableMap()
+            .put(key, value);
+        return this;
+      }
+      /**
+       * <pre>
+       * dict[attr.name =&gt; json.dumps(attr.value)]
+       * </pre>
+       *
+       * <code>map&lt;string, string&gt; attributes = 4;</code>
+       */
+
+      public Builder putAllAttributes(
+          java.util.Map<java.lang.String, java.lang.String> values) {
+        internalGetMutableAttributes().getMutableMap()
+            .putAll(values);
+        return this;
+      }
+
+      private java.lang.Object parent_ = "";
+      /**
+       * <code>string parent = 5;</code>
+       * @return The parent.
+       */
+      public java.lang.String getParent() {
+        java.lang.Object ref = parent_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          parent_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>string parent = 5;</code>
+       * @return The bytes for parent.
+       */
+      public com.google.protobuf.ByteString
+          getParentBytes() {
+        java.lang.Object ref = parent_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          parent_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>string parent = 5;</code>
+       * @param value The parent to set.
+       * @return This builder for chaining.
+       */
+      public Builder setParent(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        parent_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>string parent = 5;</code>
+       * @return This builder for chaining.
+       */
+      public Builder clearParent() {
+        
+        parent_ = getDefaultInstance().getParent();
         onChanged();
         return this;
       }
       /**
-       * <code>repeated string comp_string = 1;</code>
-       * @param value The bytes of the compString to add.
+       * <code>string parent = 5;</code>
+       * @param value The bytes for parent to set.
        * @return This builder for chaining.
        */
-      public Builder addCompStringBytes(
+      public Builder setParentBytes(
           com.google.protobuf.ByteString value) {
         if (value == null) {
     throw new NullPointerException();
   }
   checkByteStringIsUtf8(value);
-        ensureCompStringIsMutable();
-        compString_.add(value);
+        
+        parent_ = value;
         onChanged();
         return this;
       }
@@ -73697,6 +74531,11 @@ public final class ContextOuterClass {
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_context_Component_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_context_Component_AttributesEntry_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_context_Component_AttributesEntry_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_context_DeviceConfig_descriptor;
   private static final 
@@ -74034,290 +74873,294 @@ public final class ContextOuterClass {
       "vent\022\035\n\005event\030\001 \001(\0132\016.context.Event\022(\n\013t" +
       "opology_id\030\002 \001(\0132\023.context.TopologyId\".\n" +
       "\010DeviceId\022\"\n\013device_uuid\030\001 \001(\0132\r.context" +
-      ".Uuid\"\371\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" +
+      ".Uuid\"\372\002\n\006Device\022$\n\tdevice_id\030\001 \001(\0132\021.co" +
       "ntext.DeviceId\022\014\n\004name\030\002 \001(\t\022\023\n\013device_t" +
       "ype\030\003 \001(\t\022,\n\rdevice_config\030\004 \001(\0132\025.conte" +
       "xt.DeviceConfig\022G\n\031device_operational_st" +
       "atus\030\005 \001(\0162$.context.DeviceOperationalSt" +
       "atusEnum\0221\n\016device_drivers\030\006 \003(\0162\031.conte" +
       "xt.DeviceDriverEnum\022+\n\020device_endpoints\030" +
-      "\007 \003(\0132\021.context.EndPoint\022%\n\tcomponent\030\010 " +
-      "\003(\0132\022.context.Component\022(\n\rcontroller_id" +
-      "\030\t \001(\0132\021.context.DeviceId\" \n\tComponent\022\023" +
-      "\n\013comp_string\030\001 \003(\t\"9\n\014DeviceConfig\022)\n\014c" +
-      "onfig_rules\030\001 \003(\0132\023.context.ConfigRule\"5" +
-      "\n\014DeviceIdList\022%\n\ndevice_ids\030\001 \003(\0132\021.con" +
-      "text.DeviceId\".\n\nDeviceList\022 \n\007devices\030\001" +
-      " \003(\0132\017.context.Device\"\216\001\n\014DeviceFilter\022)" +
-      "\n\ndevice_ids\030\001 \001(\0132\025.context.DeviceIdLis" +
-      "t\022\031\n\021include_endpoints\030\002 \001(\010\022\034\n\024include_" +
-      "config_rules\030\003 \001(\010\022\032\n\022include_components" +
-      "\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005event\030\001 \001(\0132\016." +
-      "context.Event\022$\n\tdevice_id\030\002 \001(\0132\021.conte" +
-      "xt.DeviceId\022,\n\rdevice_config\030\003 \001(\0132\025.con" +
-      "text.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\004name\030\002 \001(\t\022.\n" +
-      "\021link_endpoint_ids\030\003 \003(\0132\023.context.EndPo" +
-      "intId\"/\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\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_i" +
-      "d\030\001 \001(\0132\022.context.ContextId\022#\n\014service_u" +
-      "uid\030\002 \001(\0132\r.context.Uuid\"\333\002\n\007Service\022&\n\n" +
-      "service_id\030\001 \001(\0132\022.context.ServiceId\022\014\n\004" +
-      "name\030\002 \001(\t\022.\n\014service_type\030\003 \001(\0162\030.conte" +
-      "xt.ServiceTypeEnum\0221\n\024service_endpoint_i" +
-      "ds\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.context.Servic" +
-      "eStatus\022.\n\016service_config\030\007 \001(\0132\026.contex" +
-      "t.ServiceConfig\022%\n\ttimestamp\030\010 \001(\0132\022.con" +
-      "text.Timestamp\"C\n\rServiceStatus\0222\n\016servi" +
-      "ce_status\030\001 \001(\0162\032.context.ServiceStatusE" +
-      "num\":\n\rServiceConfig\022)\n\014config_rules\030\001 \003" +
-      "(\0132\023.context.ConfigRule\"8\n\rServiceIdList" +
-      "\022\'\n\013service_ids\030\001 \003(\0132\022.context.ServiceI" +
-      "d\"1\n\013ServiceList\022\"\n\010services\030\001 \003(\0132\020.con" +
-      "text.Service\"\225\001\n\rServiceFilter\022+\n\013servic" +
-      "e_ids\030\001 \001(\0132\026.context.ServiceIdList\022\034\n\024i" +
-      "nclude_endpoint_ids\030\002 \001(\010\022\033\n\023include_con" +
-      "straints\030\003 \001(\010\022\034\n\024include_config_rules\030\004" +
-      " \001(\010\"U\n\014ServiceEvent\022\035\n\005event\030\001 \001(\0132\016.co" +
-      "ntext.Event\022&\n\nservice_id\030\002 \001(\0132\022.contex" +
-      "t.ServiceId\"T\n\007SliceId\022&\n\ncontext_id\030\001 \001" +
-      "(\0132\022.context.ContextId\022!\n\nslice_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\004name\030\002 \001(\t\022/\n" +
-      "\022slice_endpoint_ids\030\003 \003(\0132\023.context.EndP" +
-      "ointId\022.\n\021slice_constraints\030\004 \003(\0132\023.cont" +
-      "ext.Constraint\022-\n\021slice_service_ids\030\005 \003(" +
-      "\0132\022.context.ServiceId\022,\n\022slice_subslice_" +
-      "ids\030\006 \003(\0132\020.context.SliceId\022*\n\014slice_sta" +
-      "tus\030\007 \001(\0132\024.context.SliceStatus\022*\n\014slice" +
-      "_config\030\010 \001(\0132\024.context.SliceConfig\022(\n\013s" +
-      "lice_owner\030\t \001(\0132\023.context.SliceOwner\022%\n" +
-      "\ttimestamp\030\n \001(\0132\022.context.Timestamp\"E\n\n" +
-      "SliceOwner\022!\n\nowner_uuid\030\001 \001(\0132\r.context" +
-      ".Uuid\022\024\n\014owner_string\030\002 \001(\t\"=\n\013SliceStat" +
-      "us\022.\n\014slice_status\030\001 \001(\0162\030.context.Slice" +
-      "StatusEnum\"8\n\013SliceConfig\022)\n\014config_rule" +
-      "s\030\001 \003(\0132\023.context.ConfigRule\"2\n\013SliceIdL" +
-      "ist\022#\n\tslice_ids\030\001 \003(\0132\020.context.SliceId" +
-      "\"+\n\tSliceList\022\036\n\006slices\030\001 \003(\0132\016.context." +
-      "Slice\"\312\001\n\013SliceFilter\022\'\n\tslice_ids\030\001 \001(\013" +
-      "2\024.context.SliceIdList\022\034\n\024include_endpoi" +
-      "nt_ids\030\002 \001(\010\022\033\n\023include_constraints\030\003 \001(" +
-      "\010\022\033\n\023include_service_ids\030\004 \001(\010\022\034\n\024includ" +
-      "e_subslice_ids\030\005 \001(\010\022\034\n\024include_config_r" +
-      "ules\030\006 \001(\010\"O\n\nSliceEvent\022\035\n\005event\030\001 \001(\0132" +
-      "\016.context.Event\022\"\n\010slice_id\030\002 \001(\0132\020.cont" +
-      "ext.SliceId\"6\n\014ConnectionId\022&\n\017connectio" +
-      "n_uuid\030\001 \001(\0132\r.context.Uuid\"2\n\025Connectio" +
-      "nSettings_L0\022\031\n\021lsp_symbolic_name\030\001 \001(\t\"" +
-      "\236\001\n\025ConnectionSettings_L2\022\027\n\017src_mac_add" +
-      "ress\030\001 \001(\t\022\027\n\017dst_mac_address\030\002 \001(\t\022\022\n\ne" +
-      "ther_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_addr" +
-      "ess\030\001 \001(\t\022\026\n\016dst_ip_address\030\002 \001(\t\022\014\n\004dsc" +
-      "p\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\010src_port\030\001 \001(" +
-      "\r\022\020\n\010dst_port\030\002 \001(\r\022\021\n\ttcp_flags\030\003 \001(\r\022\013" +
-      "\n\003ttl\030\004 \001(\r\"\304\001\n\022ConnectionSettings\022*\n\002l0" +
-      "\030\001 \001(\0132\036.context.ConnectionSettings_L0\022*" +
-      "\n\002l2\030\002 \001(\0132\036.context.ConnectionSettings_" +
-      "L2\022*\n\002l3\030\003 \001(\0132\036.context.ConnectionSetti" +
-      "ngs_L3\022*\n\002l4\030\004 \001(\0132\036.context.ConnectionS" +
-      "ettings_L4\"\363\001\n\nConnection\022,\n\rconnection_" +
-      "id\030\001 \001(\0132\025.context.ConnectionId\022&\n\nservi" +
-      "ce_id\030\002 \001(\0132\022.context.ServiceId\0223\n\026path_" +
-      "hops_endpoint_ids\030\003 \003(\0132\023.context.EndPoi" +
-      "ntId\022+\n\017sub_service_ids\030\004 \003(\0132\022.context." +
-      "ServiceId\022-\n\010settings\030\005 \001(\0132\033.context.Co" +
-      "nnectionSettings\"A\n\020ConnectionIdList\022-\n\016" +
-      "connection_ids\030\001 \003(\0132\025.context.Connectio" +
-      "nId\":\n\016ConnectionList\022(\n\013connections\030\001 \003" +
-      "(\0132\023.context.Connection\"^\n\017ConnectionEve" +
-      "nt\022\035\n\005event\030\001 \001(\0132\016.context.Event\022,\n\rcon" +
-      "nection_id\030\002 \001(\0132\025.context.ConnectionId\"" +
-      "\202\001\n\nEndPointId\022(\n\013topology_id\030\001 \001(\0132\023.co" +
-      "ntext.TopologyId\022$\n\tdevice_id\030\002 \001(\0132\021.co" +
-      "ntext.DeviceId\022$\n\rendpoint_uuid\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\020kpi_sample_t" +
-      "ypes\030\004 \003(\0162\037.kpi_sample_types.KpiSampleT" +
-      "ype\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_na" +
-      "me\030\002 \001(\t\022\025\n\rendpoint_name\030\003 \001(\t\022\025\n\rendpo" +
-      "int_type\030\004 \001(\t\";\n\016EndPointIdList\022)\n\014endp" +
-      "oint_ids\030\001 \003(\0132\023.context.EndPointId\"A\n\020E" +
-      "ndPointNameList\022-\n\016endpoint_names\030\001 \003(\0132" +
-      "\025.context.EndPointName\"A\n\021ConfigRule_Cus" +
-      "tom\022\024\n\014resource_key\030\001 \001(\t\022\026\n\016resource_va" +
-      "lue\030\002 \001(\t\"]\n\016ConfigRule_ACL\022(\n\013endpoint_" +
-      "id\030\001 \001(\0132\023.context.EndPointId\022!\n\010rule_se" +
-      "t\030\002 \001(\0132\017.acl.AclRuleSet\"\234\001\n\nConfigRule\022" +
-      ")\n\006action\030\001 \001(\0162\031.context.ConfigActionEn" +
-      "um\022,\n\006custom\030\002 \001(\0132\032.context.ConfigRule_" +
-      "CustomH\000\022&\n\003acl\030\003 \001(\0132\027.context.ConfigRu" +
-      "le_ACLH\000B\r\n\013config_rule\"F\n\021Constraint_Cu" +
-      "stom\022\027\n\017constraint_type\030\001 \001(\t\022\030\n\020constra" +
-      "int_value\030\002 \001(\t\"E\n\023Constraint_Schedule\022\027" +
-      "\n\017start_timestamp\030\001 \001(\002\022\025\n\rduration_days" +
-      "\030\002 \001(\002\"3\n\014GPS_Position\022\020\n\010latitude\030\001 \001(\002" +
-      "\022\021\n\tlongitude\030\002 \001(\002\"W\n\010Location\022\020\n\006regio" +
-      "n\030\001 \001(\tH\000\022-\n\014gps_position\030\002 \001(\0132\025.contex" +
-      "t.GPS_PositionH\000B\n\n\010location\"l\n\033Constrai" +
-      "nt_EndPointLocation\022(\n\013endpoint_id\030\001 \001(\013" +
-      "2\023.context.EndPointId\022#\n\010location\030\002 \001(\0132" +
-      "\021.context.Location\"Y\n\033Constraint_EndPoin" +
-      "tPriority\022(\n\013endpoint_id\030\001 \001(\0132\023.context" +
-      ".EndPointId\022\020\n\010priority\030\002 \001(\r\"0\n\026Constra" +
-      "int_SLA_Latency\022\026\n\016e2e_latency_ms\030\001 \001(\002\"" +
-      "0\n\027Constraint_SLA_Capacity\022\025\n\rcapacity_g" +
-      "bps\030\001 \001(\002\"c\n\033Constraint_SLA_Availability" +
-      "\022\032\n\022num_disjoint_paths\030\001 \001(\r\022\022\n\nall_acti" +
-      "ve\030\002 \001(\010\022\024\n\014availability\030\003 \001(\002\"V\n\036Constr" +
-      "aint_SLA_Isolation_level\0224\n\017isolation_le" +
-      "vel\030\001 \003(\0162\033.context.IsolationLevelEnum\"\242" +
-      "\001\n\025Constraint_Exclusions\022\024\n\014is_permanent" +
-      "\030\001 \001(\010\022%\n\ndevice_ids\030\002 \003(\0132\021.context.Dev" +
-      "iceId\022)\n\014endpoint_ids\030\003 \003(\0132\023.context.En" +
-      "dPointId\022!\n\010link_ids\030\004 \003(\0132\017.context.Lin" +
-      "kId\"\333\004\n\nConstraint\022-\n\006action\030\001 \001(\0162\035.con" +
-      "text.ConstraintActionEnum\022,\n\006custom\030\002 \001(" +
-      "\0132\032.context.Constraint_CustomH\000\0220\n\010sched" +
-      "ule\030\003 \001(\0132\034.context.Constraint_ScheduleH" +
-      "\000\022A\n\021endpoint_location\030\004 \001(\0132$.context.C" +
-      "onstraint_EndPointLocationH\000\022A\n\021endpoint" +
-      "_priority\030\005 \001(\0132$.context.Constraint_End" +
-      "PointPriorityH\000\0228\n\014sla_capacity\030\006 \001(\0132 ." +
-      "context.Constraint_SLA_CapacityH\000\0226\n\013sla" +
-      "_latency\030\007 \001(\0132\037.context.Constraint_SLA_" +
-      "LatencyH\000\022@\n\020sla_availability\030\010 \001(\0132$.co" +
-      "ntext.Constraint_SLA_AvailabilityH\000\022@\n\rs" +
-      "la_isolation\030\t \001(\0132\'.context.Constraint_" +
-      "SLA_Isolation_levelH\000\0224\n\nexclusions\030\n \001(" +
-      "\0132\036.context.Constraint_ExclusionsH\000B\014\n\nc" +
-      "onstraint\"^\n\022TeraFlowController\022&\n\nconte" +
-      "xt_id\030\001 \001(\0132\022.context.ContextId\022\022\n\nip_ad" +
-      "dress\030\002 \001(\t\022\014\n\004port\030\003 \001(\r\"U\n\024Authenticat" +
-      "ionResult\022&\n\ncontext_id\030\001 \001(\0132\022.context." +
-      "ContextId\022\025\n\rauthenticated\030\002 \001(\010*j\n\rEven" +
-      "tTypeEnum\022\027\n\023EVENTTYPE_UNDEFINED\020\000\022\024\n\020EV" +
-      "ENTTYPE_CREATE\020\001\022\024\n\020EVENTTYPE_UPDATE\020\002\022\024" +
-      "\n\020EVENTTYPE_REMOVE\020\003*\231\002\n\020DeviceDriverEnu" +
-      "m\022\032\n\026DEVICEDRIVER_UNDEFINED\020\000\022\033\n\027DEVICED" +
-      "RIVER_OPENCONFIG\020\001\022\036\n\032DEVICEDRIVER_TRANS" +
-      "PORT_API\020\002\022\023\n\017DEVICEDRIVER_P4\020\003\022&\n\"DEVIC" +
-      "EDRIVER_IETF_NETWORK_TOPOLOGY\020\004\022\033\n\027DEVIC" +
-      "EDRIVER_ONF_TR_532\020\005\022\023\n\017DEVICEDRIVER_XR\020" +
-      "\006\022\033\n\027DEVICEDRIVER_IETF_L2VPN\020\007\022 \n\034DEVICE" +
-      "DRIVER_GNMI_OPENCONFIG\020\010*\217\001\n\033DeviceOpera" +
-      "tionalStatusEnum\022%\n!DEVICEOPERATIONALSTA" +
-      "TUS_UNDEFINED\020\000\022$\n DEVICEOPERATIONALSTAT" +
-      "US_DISABLED\020\001\022#\n\037DEVICEOPERATIONALSTATUS" +
-      "_ENABLED\020\002*\201\001\n\017ServiceTypeEnum\022\027\n\023SERVIC" +
-      "ETYPE_UNKNOWN\020\000\022\024\n\020SERVICETYPE_L3NM\020\001\022\024\n" +
-      "\020SERVICETYPE_L2NM\020\002\022)\n%SERVICETYPE_TAPI_" +
-      "CONNECTIVITY_SERVICE\020\003*\304\001\n\021ServiceStatus" +
-      "Enum\022\033\n\027SERVICESTATUS_UNDEFINED\020\000\022\031\n\025SER" +
-      "VICESTATUS_PLANNED\020\001\022\030\n\024SERVICESTATUS_AC" +
-      "TIVE\020\002\022\032\n\026SERVICESTATUS_UPDATING\020\003\022!\n\035SE" +
-      "RVICESTATUS_PENDING_REMOVAL\020\004\022\036\n\032SERVICE" +
-      "STATUS_SLA_VIOLATED\020\005*\251\001\n\017SliceStatusEnu" +
-      "m\022\031\n\025SLICESTATUS_UNDEFINED\020\000\022\027\n\023SLICESTA" +
-      "TUS_PLANNED\020\001\022\024\n\020SLICESTATUS_INIT\020\002\022\026\n\022S" +
-      "LICESTATUS_ACTIVE\020\003\022\026\n\022SLICESTATUS_DEINI" +
-      "T\020\004\022\034\n\030SLICESTATUS_SLA_VIOLATED\020\005*]\n\020Con" +
-      "figActionEnum\022\032\n\026CONFIGACTION_UNDEFINED\020" +
-      "\000\022\024\n\020CONFIGACTION_SET\020\001\022\027\n\023CONFIGACTION_" +
-      "DELETE\020\002*m\n\024ConstraintActionEnum\022\036\n\032CONS" +
-      "TRAINTACTION_UNDEFINED\020\000\022\030\n\024CONSTRAINTAC" +
-      "TION_SET\020\001\022\033\n\027CONSTRAINTACTION_DELETE\020\002*" +
-      "\203\002\n\022IsolationLevelEnum\022\020\n\014NO_ISOLATION\020\000" +
-      "\022\026\n\022PHYSICAL_ISOLATION\020\001\022\025\n\021LOGICAL_ISOL" +
-      "ATION\020\002\022\025\n\021PROCESS_ISOLATION\020\003\022\035\n\031PHYSIC" +
-      "AL_MEMORY_ISOLATION\020\004\022\036\n\032PHYSICAL_NETWOR" +
-      "K_ISOLATION\020\005\022\036\n\032VIRTUAL_RESOURCE_ISOLAT" +
-      "ION\020\006\022\037\n\033NETWORK_FUNCTIONS_ISOLATION\020\007\022\025" +
-      "\n\021SERVICE_ISOLATION\020\0102\245\026\n\016ContextService" +
-      "\022:\n\016ListContextIds\022\016.context.Empty\032\026.con" +
-      "text.ContextIdList\"\000\0226\n\014ListContexts\022\016.c" +
-      "ontext.Empty\032\024.context.ContextList\"\000\0224\n\n" +
-      "GetContext\022\022.context.ContextId\032\020.context" +
-      ".Context\"\000\0224\n\nSetContext\022\020.context.Conte" +
-      "xt\032\022.context.ContextId\"\000\0225\n\rRemoveContex" +
-      "t\022\022.context.ContextId\032\016.context.Empty\"\000\022" +
-      "=\n\020GetContextEvents\022\016.context.Empty\032\025.co" +
-      "ntext.ContextEvent\"\0000\001\022@\n\017ListTopologyId" +
-      "s\022\022.context.ContextId\032\027.context.Topology" +
-      "IdList\"\000\022=\n\016ListTopologies\022\022.context.Con" +
-      "textId\032\025.context.TopologyList\"\000\0227\n\013GetTo" +
-      "pology\022\023.context.TopologyId\032\021.context.To" +
-      "pology\"\000\022E\n\022GetTopologyDetails\022\023.context" +
-      ".TopologyId\032\030.context.TopologyDetails\"\000\022" +
-      "7\n\013SetTopology\022\021.context.Topology\032\023.cont" +
-      "ext.TopologyId\"\000\0227\n\016RemoveTopology\022\023.con" +
-      "text.TopologyId\032\016.context.Empty\"\000\022?\n\021Get" +
-      "TopologyEvents\022\016.context.Empty\032\026.context" +
-      ".TopologyEvent\"\0000\001\0228\n\rListDeviceIds\022\016.co" +
-      "ntext.Empty\032\025.context.DeviceIdList\"\000\0224\n\013" +
-      "ListDevices\022\016.context.Empty\032\023.context.De" +
-      "viceList\"\000\0221\n\tGetDevice\022\021.context.Device" +
-      "Id\032\017.context.Device\"\000\0221\n\tSetDevice\022\017.con" +
-      "text.Device\032\021.context.DeviceId\"\000\0223\n\014Remo" +
-      "veDevice\022\021.context.DeviceId\032\016.context.Em" +
-      "pty\"\000\022;\n\017GetDeviceEvents\022\016.context.Empty" +
-      "\032\024.context.DeviceEvent\"\0000\001\022<\n\014SelectDevi" +
-      "ce\022\025.context.DeviceFilter\032\023.context.Devi" +
-      "ceList\"\000\022I\n\021ListEndPointNames\022\027.context." +
-      "EndPointIdList\032\031.context.EndPointNameLis" +
-      "t\"\000\0224\n\013ListLinkIds\022\016.context.Empty\032\023.con" +
-      "text.LinkIdList\"\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\007SetL" +
-      "ink\022\r.context.Link\032\017.context.LinkId\"\000\022/\n" +
-      "\nRemoveLink\022\017.context.LinkId\032\016.context.E" +
-      "mpty\"\000\0227\n\rGetLinkEvents\022\016.context.Empty\032" +
-      "\022.context.LinkEvent\"\0000\001\022>\n\016ListServiceId" +
-      "s\022\022.context.ContextId\032\026.context.ServiceI" +
-      "dList\"\000\022:\n\014ListServices\022\022.context.Contex" +
-      "tId\032\024.context.ServiceList\"\000\0224\n\nGetServic" +
-      "e\022\022.context.ServiceId\032\020.context.Service\"" +
-      "\000\0224\n\nSetService\022\020.context.Service\032\022.cont" +
-      "ext.ServiceId\"\000\0226\n\014UnsetService\022\020.contex" +
-      "t.Service\032\022.context.ServiceId\"\000\0225\n\rRemov" +
-      "eService\022\022.context.ServiceId\032\016.context.E" +
-      "mpty\"\000\022=\n\020GetServiceEvents\022\016.context.Emp" +
-      "ty\032\025.context.ServiceEvent\"\0000\001\022?\n\rSelectS" +
-      "ervice\022\026.context.ServiceFilter\032\024.context" +
-      ".ServiceList\"\000\022:\n\014ListSliceIds\022\022.context" +
-      ".ContextId\032\024.context.SliceIdList\"\000\0226\n\nLi" +
-      "stSlices\022\022.context.ContextId\032\022.context.S" +
-      "liceList\"\000\022.\n\010GetSlice\022\020.context.SliceId" +
-      "\032\016.context.Slice\"\000\022.\n\010SetSlice\022\016.context" +
-      ".Slice\032\020.context.SliceId\"\000\0220\n\nUnsetSlice" +
-      "\022\016.context.Slice\032\020.context.SliceId\"\000\0221\n\013" +
-      "RemoveSlice\022\020.context.SliceId\032\016.context." +
-      "Empty\"\000\0229\n\016GetSliceEvents\022\016.context.Empt" +
-      "y\032\023.context.SliceEvent\"\0000\001\0229\n\013SelectSlic" +
-      "e\022\024.context.SliceFilter\032\022.context.SliceL" +
-      "ist\"\000\022D\n\021ListConnectionIds\022\022.context.Ser" +
-      "viceId\032\031.context.ConnectionIdList\"\000\022@\n\017L" +
-      "istConnections\022\022.context.ServiceId\032\027.con" +
-      "text.ConnectionList\"\000\022=\n\rGetConnection\022\025" +
-      ".context.ConnectionId\032\023.context.Connecti" +
-      "on\"\000\022=\n\rSetConnection\022\023.context.Connecti" +
-      "on\032\025.context.ConnectionId\"\000\022;\n\020RemoveCon" +
-      "nection\022\025.context.ConnectionId\032\016.context" +
-      ".Empty\"\000\022C\n\023GetConnectionEvents\022\016.contex" +
-      "t.Empty\032\030.context.ConnectionEvent\"\0000\001b\006p" +
-      "roto3"
+      "\007 \003(\0132\021.context.EndPoint\022&\n\ncomponents\030\010" +
+      " \003(\0132\022.context.Component\022(\n\rcontroller_i" +
+      "d\030\t \001(\0132\021.context.DeviceId\"\311\001\n\tComponent" +
+      "\022%\n\016component_uuid\030\001 \001(\0132\r.context.Uuid\022" +
+      "\014\n\004name\030\002 \001(\t\022\014\n\004type\030\003 \001(\t\0226\n\nattribute" +
+      "s\030\004 \003(\0132\".context.Component.AttributesEn" +
+      "try\022\016\n\006parent\030\005 \001(\t\0321\n\017AttributesEntry\022\013" +
+      "\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"9\n\014Device" +
+      "Config\022)\n\014config_rules\030\001 \003(\0132\023.context.C" +
+      "onfigRule\"5\n\014DeviceIdList\022%\n\ndevice_ids\030" +
+      "\001 \003(\0132\021.context.DeviceId\".\n\nDeviceList\022 " +
+      "\n\007devices\030\001 \003(\0132\017.context.Device\"\216\001\n\014Dev" +
+      "iceFilter\022)\n\ndevice_ids\030\001 \001(\0132\025.context." +
+      "DeviceIdList\022\031\n\021include_endpoints\030\002 \001(\010\022" +
+      "\034\n\024include_config_rules\030\003 \001(\010\022\032\n\022include" +
+      "_components\030\004 \001(\010\"\200\001\n\013DeviceEvent\022\035\n\005eve" +
+      "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"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -74426,13 +75269,19 @@ public final class ContextOuterClass {
     internal_static_context_Device_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Device_descriptor,
-        new java.lang.String[] { "DeviceId", "Name", "DeviceType", "DeviceConfig", "DeviceOperationalStatus", "DeviceDrivers", "DeviceEndpoints", "Component", "ControllerId", });
+        new java.lang.String[] { "DeviceId", "Name", "DeviceType", "DeviceConfig", "DeviceOperationalStatus", "DeviceDrivers", "DeviceEndpoints", "Components", "ControllerId", });
     internal_static_context_Component_descriptor =
       getDescriptor().getMessageTypes().get(17);
     internal_static_context_Component_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_context_Component_descriptor,
-        new java.lang.String[] { "CompString", });
+        new java.lang.String[] { "ComponentUuid", "Name", "Type", "Attributes", "Parent", });
+    internal_static_context_Component_AttributesEntry_descriptor =
+      internal_static_context_Component_descriptor.getNestedTypes().get(0);
+    internal_static_context_Component_AttributesEntry_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_context_Component_AttributesEntry_descriptor,
+        new java.lang.String[] { "Key", "Value", });
     internal_static_context_DeviceConfig_descriptor =
       getDescriptor().getMessageTypes().get(18);
     internal_static_context_DeviceConfig_fieldAccessorTable = new
diff --git a/src/automation/target/generated-sources/grpc/context/ContextService.java b/src/ztp/target/generated-sources/grpc/context/ContextService.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/context/ContextService.java
rename to src/ztp/target/generated-sources/grpc/context/ContextService.java
diff --git a/src/automation/target/generated-sources/grpc/context/ContextServiceBean.java b/src/ztp/target/generated-sources/grpc/context/ContextServiceBean.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/context/ContextServiceBean.java
rename to src/ztp/target/generated-sources/grpc/context/ContextServiceBean.java
diff --git a/src/automation/target/generated-sources/grpc/context/ContextServiceClient.java b/src/ztp/target/generated-sources/grpc/context/ContextServiceClient.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/context/ContextServiceClient.java
rename to src/ztp/target/generated-sources/grpc/context/ContextServiceClient.java
diff --git a/src/automation/target/generated-sources/grpc/context/ContextServiceGrpc.java b/src/ztp/target/generated-sources/grpc/context/ContextServiceGrpc.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/context/ContextServiceGrpc.java
rename to src/ztp/target/generated-sources/grpc/context/ContextServiceGrpc.java
diff --git a/src/automation/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java b/src/ztp/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java
rename to src/ztp/target/generated-sources/grpc/context/MutinyContextServiceGrpc.java
diff --git a/src/automation/target/generated-sources/grpc/device/Device.java b/src/ztp/target/generated-sources/grpc/device/Device.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/device/Device.java
rename to src/ztp/target/generated-sources/grpc/device/Device.java
diff --git a/src/automation/target/generated-sources/grpc/device/DeviceService.java b/src/ztp/target/generated-sources/grpc/device/DeviceService.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/device/DeviceService.java
rename to src/ztp/target/generated-sources/grpc/device/DeviceService.java
diff --git a/src/automation/target/generated-sources/grpc/device/DeviceServiceBean.java b/src/ztp/target/generated-sources/grpc/device/DeviceServiceBean.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/device/DeviceServiceBean.java
rename to src/ztp/target/generated-sources/grpc/device/DeviceServiceBean.java
diff --git a/src/automation/target/generated-sources/grpc/device/DeviceServiceClient.java b/src/ztp/target/generated-sources/grpc/device/DeviceServiceClient.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/device/DeviceServiceClient.java
rename to src/ztp/target/generated-sources/grpc/device/DeviceServiceClient.java
diff --git a/src/automation/target/generated-sources/grpc/device/DeviceServiceGrpc.java b/src/ztp/target/generated-sources/grpc/device/DeviceServiceGrpc.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/device/DeviceServiceGrpc.java
rename to src/ztp/target/generated-sources/grpc/device/DeviceServiceGrpc.java
diff --git a/src/automation/target/generated-sources/grpc/device/MutinyDeviceServiceGrpc.java b/src/ztp/target/generated-sources/grpc/device/MutinyDeviceServiceGrpc.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/device/MutinyDeviceServiceGrpc.java
rename to src/ztp/target/generated-sources/grpc/device/MutinyDeviceServiceGrpc.java
diff --git a/src/automation/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java b/src/ztp/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java
rename to src/ztp/target/generated-sources/grpc/kpi_sample_types/KpiSampleTypes.java
diff --git a/src/automation/target/generated-sources/grpc/monitoring/Monitoring.java b/src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/monitoring/Monitoring.java
rename to src/ztp/target/generated-sources/grpc/monitoring/Monitoring.java
diff --git a/src/automation/target/generated-sources/grpc/monitoring/MonitoringService.java b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringService.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/monitoring/MonitoringService.java
rename to src/ztp/target/generated-sources/grpc/monitoring/MonitoringService.java
diff --git a/src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java
rename to src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceBean.java
diff --git a/src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java
rename to src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceClient.java
diff --git a/src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java b/src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
rename to src/ztp/target/generated-sources/grpc/monitoring/MonitoringServiceGrpc.java
diff --git a/src/automation/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java b/src/ztp/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java
similarity index 100%
rename from src/automation/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java
rename to src/ztp/target/generated-sources/grpc/monitoring/MutinyMonitoringServiceGrpc.java
diff --git a/src/automation/target/generated-sources/grpc/automation/MutinyAutomationServiceGrpc.java b/src/ztp/target/generated-sources/grpc/ztp/MutinyZtpServiceGrpc.java
similarity index 56%
rename from src/automation/target/generated-sources/grpc/automation/MutinyAutomationServiceGrpc.java
rename to src/ztp/target/generated-sources/grpc/ztp/MutinyZtpServiceGrpc.java
index 64565286c..d46fdffb7 100644
--- a/src/automation/target/generated-sources/grpc/automation/MutinyAutomationServiceGrpc.java
+++ b/src/ztp/target/generated-sources/grpc/ztp/MutinyZtpServiceGrpc.java
@@ -1,6 +1,6 @@
-package automation;
+package ztp;
 
-import static automation.AutomationServiceGrpc.getServiceDescriptor;
+import static ztp.ZtpServiceGrpc.getServiceDescriptor;
 import static io.grpc.stub.ServerCalls.asyncUnaryCall;
 import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
 import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
@@ -8,67 +8,67 @@ import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
 
 @javax.annotation.Generated(
 value = "by Mutiny Grpc generator",
-comments = "Source: automation.proto")
-public final class MutinyAutomationServiceGrpc implements io.quarkus.grpc.runtime.MutinyGrpc {
-    private MutinyAutomationServiceGrpc() {}
+comments = "Source: ztp.proto")
+public final class MutinyZtpServiceGrpc implements io.quarkus.grpc.runtime.MutinyGrpc {
+    private MutinyZtpServiceGrpc() {}
 
-    public static MutinyAutomationServiceStub newMutinyStub(io.grpc.Channel channel) {
-        return new MutinyAutomationServiceStub(channel);
+    public static MutinyZtpServiceStub newMutinyStub(io.grpc.Channel channel) {
+        return new MutinyZtpServiceStub(channel);
     }
 
     
-    public static final class MutinyAutomationServiceStub extends io.grpc.stub.AbstractStub<MutinyAutomationServiceStub> implements io.quarkus.grpc.runtime.MutinyStub {
-        private AutomationServiceGrpc.AutomationServiceStub delegateStub;
+    public static final class MutinyZtpServiceStub extends io.grpc.stub.AbstractStub<MutinyZtpServiceStub> implements io.quarkus.grpc.runtime.MutinyStub {
+        private ZtpServiceGrpc.ZtpServiceStub delegateStub;
 
-        private MutinyAutomationServiceStub(io.grpc.Channel channel) {
+        private MutinyZtpServiceStub(io.grpc.Channel channel) {
             super(channel);
-            delegateStub = AutomationServiceGrpc.newStub(channel);
+            delegateStub = ZtpServiceGrpc.newStub(channel);
         }
 
-        private MutinyAutomationServiceStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+        private MutinyZtpServiceStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
             super(channel, callOptions);
-            delegateStub = AutomationServiceGrpc.newStub(channel).build(channel, callOptions);
+            delegateStub = ZtpServiceGrpc.newStub(channel).build(channel, callOptions);
         }
 
         @Override
-        protected MutinyAutomationServiceStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
-            return new MutinyAutomationServiceStub(channel, callOptions);
+        protected MutinyZtpServiceStub build(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+            return new MutinyZtpServiceStub(channel, callOptions);
         }
 
         
-        public io.smallrye.mutiny.Uni<automation.Automation.DeviceRole> ztpGetDeviceRole(automation.Automation.DeviceRoleId request) {
+        public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRole> ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request) {
             return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::ztpGetDeviceRole);
         }
 
         
-        public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
+        public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
             return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::ztpGetDeviceRolesByDeviceId);
         }
 
         
-        public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleState> ztpAdd(automation.Automation.DeviceRole request) {
+        public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpAdd(ztp.Ztp.DeviceRole request) {
             return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::ztpAdd);
         }
 
         
-        public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleState> ztpUpdate(automation.Automation.DeviceRoleConfig request) {
+        public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpUpdate(ztp.Ztp.DeviceRoleConfig request) {
             return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::ztpUpdate);
         }
 
         
-        public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleState> ztpDelete(automation.Automation.DeviceRole request) {
+        public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpDelete(ztp.Ztp.DeviceRole request) {
             return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::ztpDelete);
         }
 
         
-        public io.smallrye.mutiny.Uni<automation.Automation.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request) {
+        public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request) {
             return io.quarkus.grpc.runtime.ClientCalls.oneToOne(request, delegateStub::ztpDeleteAll);
         }
 
     }
 
     
-    public static abstract class AutomationServiceImplBase implements io.grpc.BindableService {
+    public static abstract class ZtpServiceImplBase implements io.grpc.BindableService {
 
         private String compression;
         /**
@@ -76,85 +76,85 @@ public final class MutinyAutomationServiceGrpc implements io.quarkus.grpc.runtim
         *
         * @param compression the compression, e.g {@code gzip}
         */
-        public AutomationServiceImplBase withCompression(String compression) {
+        public ZtpServiceImplBase withCompression(String compression) {
         this.compression = compression;
         return this;
         }
 
 
         
-        public io.smallrye.mutiny.Uni<automation.Automation.DeviceRole> ztpGetDeviceRole(automation.Automation.DeviceRoleId request) {
+        public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRole> ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
+        public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleState> ztpAdd(automation.Automation.DeviceRole request) {
+        public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpAdd(ztp.Ztp.DeviceRole request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleState> ztpUpdate(automation.Automation.DeviceRoleConfig request) {
+        public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpUpdate(ztp.Ztp.DeviceRoleConfig request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleState> ztpDelete(automation.Automation.DeviceRole request) {
+        public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpDelete(ztp.Ztp.DeviceRole request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         
-        public io.smallrye.mutiny.Uni<automation.Automation.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request) {
+        public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request) {
             throw new io.grpc.StatusRuntimeException(io.grpc.Status.UNIMPLEMENTED);
         }
 
         @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
             return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
                     .addMethod(
-                            automation.AutomationServiceGrpc.getZtpGetDeviceRoleMethod(),
+                            ztp.ZtpServiceGrpc.getZtpGetDeviceRoleMethod(),
                             asyncUnaryCall(
                                     new MethodHandlers<
-                                            automation.Automation.DeviceRoleId,
-                                            automation.Automation.DeviceRole>(
+                                            ztp.Ztp.DeviceRoleId,
+                                            ztp.Ztp.DeviceRole>(
                                             this, METHODID_ZTP_GET_DEVICE_ROLE, compression)))
                     .addMethod(
-                            automation.AutomationServiceGrpc.getZtpGetDeviceRolesByDeviceIdMethod(),
+                            ztp.ZtpServiceGrpc.getZtpGetDeviceRolesByDeviceIdMethod(),
                             asyncUnaryCall(
                                     new MethodHandlers<
                                             context.ContextOuterClass.DeviceId,
-                                            automation.Automation.DeviceRoleList>(
+                                            ztp.Ztp.DeviceRoleList>(
                                             this, METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID, compression)))
                     .addMethod(
-                            automation.AutomationServiceGrpc.getZtpAddMethod(),
+                            ztp.ZtpServiceGrpc.getZtpAddMethod(),
                             asyncUnaryCall(
                                     new MethodHandlers<
-                                            automation.Automation.DeviceRole,
-                                            automation.Automation.DeviceRoleState>(
+                                            ztp.Ztp.DeviceRole,
+                                            ztp.Ztp.DeviceRoleState>(
                                             this, METHODID_ZTP_ADD, compression)))
                     .addMethod(
-                            automation.AutomationServiceGrpc.getZtpUpdateMethod(),
+                            ztp.ZtpServiceGrpc.getZtpUpdateMethod(),
                             asyncUnaryCall(
                                     new MethodHandlers<
-                                            automation.Automation.DeviceRoleConfig,
-                                            automation.Automation.DeviceRoleState>(
+                                            ztp.Ztp.DeviceRoleConfig,
+                                            ztp.Ztp.DeviceRoleState>(
                                             this, METHODID_ZTP_UPDATE, compression)))
                     .addMethod(
-                            automation.AutomationServiceGrpc.getZtpDeleteMethod(),
+                            ztp.ZtpServiceGrpc.getZtpDeleteMethod(),
                             asyncUnaryCall(
                                     new MethodHandlers<
-                                            automation.Automation.DeviceRole,
-                                            automation.Automation.DeviceRoleState>(
+                                            ztp.Ztp.DeviceRole,
+                                            ztp.Ztp.DeviceRoleState>(
                                             this, METHODID_ZTP_DELETE, compression)))
                     .addMethod(
-                            automation.AutomationServiceGrpc.getZtpDeleteAllMethod(),
+                            ztp.ZtpServiceGrpc.getZtpDeleteAllMethod(),
                             asyncUnaryCall(
                                     new MethodHandlers<
                                             context.ContextOuterClass.Empty,
-                                            automation.Automation.DeviceDeletionResult>(
+                                            ztp.Ztp.DeviceDeletionResult>(
                                             this, METHODID_ZTP_DELETE_ALL, compression)))
                     .build();
         }
@@ -172,11 +172,11 @@ public final class MutinyAutomationServiceGrpc implements io.quarkus.grpc.runtim
             io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
             io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
             io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
-        private final AutomationServiceImplBase serviceImpl;
+        private final ZtpServiceImplBase serviceImpl;
         private final int methodId;
         private final String compression;
 
-        MethodHandlers(AutomationServiceImplBase serviceImpl, int methodId, String compression) {
+        MethodHandlers(ZtpServiceImplBase serviceImpl, int methodId, String compression) {
             this.serviceImpl = serviceImpl;
             this.methodId = methodId;
             this.compression = compression;
@@ -187,38 +187,38 @@ public final class MutinyAutomationServiceGrpc implements io.quarkus.grpc.runtim
         public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
             switch (methodId) {
                 case METHODID_ZTP_GET_DEVICE_ROLE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((automation.Automation.DeviceRoleId) request,
-                            (io.grpc.stub.StreamObserver<automation.Automation.DeviceRole>) responseObserver,
+                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((ztp.Ztp.DeviceRoleId) request,
+                            (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRole>) responseObserver,
                             compression,
                             serviceImpl::ztpGetDeviceRole);
                     break;
                 case METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID:
                     io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.DeviceId) request,
-                            (io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleList>) responseObserver,
+                            (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleList>) responseObserver,
                             compression,
                             serviceImpl::ztpGetDeviceRolesByDeviceId);
                     break;
                 case METHODID_ZTP_ADD:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((automation.Automation.DeviceRole) request,
-                            (io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleState>) responseObserver,
+                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((ztp.Ztp.DeviceRole) request,
+                            (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver,
                             compression,
                             serviceImpl::ztpAdd);
                     break;
                 case METHODID_ZTP_UPDATE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((automation.Automation.DeviceRoleConfig) request,
-                            (io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleState>) responseObserver,
+                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((ztp.Ztp.DeviceRoleConfig) request,
+                            (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver,
                             compression,
                             serviceImpl::ztpUpdate);
                     break;
                 case METHODID_ZTP_DELETE:
-                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((automation.Automation.DeviceRole) request,
-                            (io.grpc.stub.StreamObserver<automation.Automation.DeviceRoleState>) responseObserver,
+                    io.quarkus.grpc.runtime.ServerCalls.oneToOne((ztp.Ztp.DeviceRole) request,
+                            (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver,
                             compression,
                             serviceImpl::ztpDelete);
                     break;
                 case METHODID_ZTP_DELETE_ALL:
                     io.quarkus.grpc.runtime.ServerCalls.oneToOne((context.ContextOuterClass.Empty) request,
-                            (io.grpc.stub.StreamObserver<automation.Automation.DeviceDeletionResult>) responseObserver,
+                            (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceDeletionResult>) responseObserver,
                             compression,
                             serviceImpl::ztpDeleteAll);
                     break;
diff --git a/src/automation/target/generated-sources/grpc/automation/Automation.java b/src/ztp/target/generated-sources/grpc/ztp/Ztp.java
similarity index 75%
rename from src/automation/target/generated-sources/grpc/automation/Automation.java
rename to src/ztp/target/generated-sources/grpc/ztp/Ztp.java
index cd82f7423..c9ff87a27 100644
--- a/src/automation/target/generated-sources/grpc/automation/Automation.java
+++ b/src/ztp/target/generated-sources/grpc/ztp/Ztp.java
@@ -1,10 +1,10 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: automation.proto
+// source: ztp.proto
 
-package automation;
+package ztp;
 
-public final class Automation {
-  private Automation() {}
+public final class Ztp {
+  private Ztp() {}
   public static void registerAllExtensions(
       com.google.protobuf.ExtensionRegistryLite registry) {
   }
@@ -15,7 +15,7 @@ public final class Automation {
         (com.google.protobuf.ExtensionRegistryLite) registry);
   }
   /**
-   * Protobuf enum {@code automation.DeviceRoleType}
+   * Protobuf enum {@code ztp.DeviceRoleType}
    */
   public enum DeviceRoleType
       implements com.google.protobuf.ProtocolMessageEnum {
@@ -114,7 +114,7 @@ public final class Automation {
     }
     public static final com.google.protobuf.Descriptors.EnumDescriptor
         getDescriptor() {
-      return automation.Automation.getDescriptor().getEnumTypes().get(0);
+      return ztp.Ztp.getDescriptor().getEnumTypes().get(0);
     }
 
     private static final DeviceRoleType[] VALUES = values();
@@ -137,11 +137,11 @@ public final class Automation {
       this.value = value;
     }
 
-    // @@protoc_insertion_point(enum_scope:automation.DeviceRoleType)
+    // @@protoc_insertion_point(enum_scope:ztp.DeviceRoleType)
   }
 
   /**
-   * Protobuf enum {@code automation.ZtpDeviceState}
+   * Protobuf enum {@code ztp.ZtpDeviceState}
    */
   public enum ZtpDeviceState
       implements com.google.protobuf.ProtocolMessageEnum {
@@ -240,7 +240,7 @@ public final class Automation {
     }
     public static final com.google.protobuf.Descriptors.EnumDescriptor
         getDescriptor() {
-      return automation.Automation.getDescriptor().getEnumTypes().get(1);
+      return ztp.Ztp.getDescriptor().getEnumTypes().get(1);
     }
 
     private static final ZtpDeviceState[] VALUES = values();
@@ -263,11 +263,11 @@ public final class Automation {
       this.value = value;
     }
 
-    // @@protoc_insertion_point(enum_scope:automation.ZtpDeviceState)
+    // @@protoc_insertion_point(enum_scope:ztp.ZtpDeviceState)
   }
 
   public interface DeviceRoleIdOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:automation.DeviceRoleId)
+      // @@protoc_insertion_point(interface_extends:ztp.DeviceRoleId)
       com.google.protobuf.MessageOrBuilder {
 
     /**
@@ -301,11 +301,11 @@ public final class Automation {
     context.ContextOuterClass.DeviceIdOrBuilder getDevIdOrBuilder();
   }
   /**
-   * Protobuf type {@code automation.DeviceRoleId}
+   * Protobuf type {@code ztp.DeviceRoleId}
    */
   public static final class DeviceRoleId extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:automation.DeviceRoleId)
+      // @@protoc_insertion_point(message_implements:ztp.DeviceRoleId)
       DeviceRoleIdOrBuilder {
   private static final long serialVersionUID = 0L;
     // Use DeviceRoleId.newBuilder() to construct.
@@ -392,15 +392,15 @@ public final class Automation {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return automation.Automation.internal_static_automation_DeviceRoleId_descriptor;
+      return ztp.Ztp.internal_static_ztp_DeviceRoleId_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return automation.Automation.internal_static_automation_DeviceRoleId_fieldAccessorTable
+      return ztp.Ztp.internal_static_ztp_DeviceRoleId_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              automation.Automation.DeviceRoleId.class, automation.Automation.DeviceRoleId.Builder.class);
+              ztp.Ztp.DeviceRoleId.class, ztp.Ztp.DeviceRoleId.Builder.class);
     }
 
     public static final int DEVROLEID_FIELD_NUMBER = 1;
@@ -502,10 +502,10 @@ public final class Automation {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof automation.Automation.DeviceRoleId)) {
+      if (!(obj instanceof ztp.Ztp.DeviceRoleId)) {
         return super.equals(obj);
       }
-      automation.Automation.DeviceRoleId other = (automation.Automation.DeviceRoleId) obj;
+      ztp.Ztp.DeviceRoleId other = (ztp.Ztp.DeviceRoleId) obj;
 
       if (hasDevRoleId() != other.hasDevRoleId()) return false;
       if (hasDevRoleId()) {
@@ -541,69 +541,69 @@ public final class Automation {
       return hash;
     }
 
-    public static automation.Automation.DeviceRoleId parseFrom(
+    public static ztp.Ztp.DeviceRoleId parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceRoleId parseFrom(
+    public static ztp.Ztp.DeviceRoleId parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceRoleId parseFrom(
+    public static ztp.Ztp.DeviceRoleId parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceRoleId parseFrom(
+    public static ztp.Ztp.DeviceRoleId parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceRoleId parseFrom(byte[] data)
+    public static ztp.Ztp.DeviceRoleId parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceRoleId parseFrom(
+    public static ztp.Ztp.DeviceRoleId parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceRoleId parseFrom(java.io.InputStream input)
+    public static ztp.Ztp.DeviceRoleId parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceRoleId parseFrom(
+    public static ztp.Ztp.DeviceRoleId 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 automation.Automation.DeviceRoleId parseDelimitedFrom(java.io.InputStream input)
+    public static ztp.Ztp.DeviceRoleId parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceRoleId parseDelimitedFrom(
+    public static ztp.Ztp.DeviceRoleId 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 automation.Automation.DeviceRoleId parseFrom(
+    public static ztp.Ztp.DeviceRoleId parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceRoleId parseFrom(
+    public static ztp.Ztp.DeviceRoleId parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -616,7 +616,7 @@ public final class Automation {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(automation.Automation.DeviceRoleId prototype) {
+    public static Builder newBuilder(ztp.Ztp.DeviceRoleId prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -632,26 +632,26 @@ public final class Automation {
       return builder;
     }
     /**
-     * Protobuf type {@code automation.DeviceRoleId}
+     * Protobuf type {@code ztp.DeviceRoleId}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:automation.DeviceRoleId)
-        automation.Automation.DeviceRoleIdOrBuilder {
+        // @@protoc_insertion_point(builder_implements:ztp.DeviceRoleId)
+        ztp.Ztp.DeviceRoleIdOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return automation.Automation.internal_static_automation_DeviceRoleId_descriptor;
+        return ztp.Ztp.internal_static_ztp_DeviceRoleId_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return automation.Automation.internal_static_automation_DeviceRoleId_fieldAccessorTable
+        return ztp.Ztp.internal_static_ztp_DeviceRoleId_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                automation.Automation.DeviceRoleId.class, automation.Automation.DeviceRoleId.Builder.class);
+                ztp.Ztp.DeviceRoleId.class, ztp.Ztp.DeviceRoleId.Builder.class);
       }
 
-      // Construct using automation.Automation.DeviceRoleId.newBuilder()
+      // Construct using ztp.Ztp.DeviceRoleId.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -687,17 +687,17 @@ public final class Automation {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return automation.Automation.internal_static_automation_DeviceRoleId_descriptor;
+        return ztp.Ztp.internal_static_ztp_DeviceRoleId_descriptor;
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceRoleId getDefaultInstanceForType() {
-        return automation.Automation.DeviceRoleId.getDefaultInstance();
+      public ztp.Ztp.DeviceRoleId getDefaultInstanceForType() {
+        return ztp.Ztp.DeviceRoleId.getDefaultInstance();
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceRoleId build() {
-        automation.Automation.DeviceRoleId result = buildPartial();
+      public ztp.Ztp.DeviceRoleId build() {
+        ztp.Ztp.DeviceRoleId result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -705,8 +705,8 @@ public final class Automation {
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceRoleId buildPartial() {
-        automation.Automation.DeviceRoleId result = new automation.Automation.DeviceRoleId(this);
+      public ztp.Ztp.DeviceRoleId buildPartial() {
+        ztp.Ztp.DeviceRoleId result = new ztp.Ztp.DeviceRoleId(this);
         if (devRoleIdBuilder_ == null) {
           result.devRoleId_ = devRoleId_;
         } else {
@@ -755,16 +755,16 @@ public final class Automation {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof automation.Automation.DeviceRoleId) {
-          return mergeFrom((automation.Automation.DeviceRoleId)other);
+        if (other instanceof ztp.Ztp.DeviceRoleId) {
+          return mergeFrom((ztp.Ztp.DeviceRoleId)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(automation.Automation.DeviceRoleId other) {
-        if (other == automation.Automation.DeviceRoleId.getDefaultInstance()) return this;
+      public Builder mergeFrom(ztp.Ztp.DeviceRoleId other) {
+        if (other == ztp.Ztp.DeviceRoleId.getDefaultInstance()) return this;
         if (other.hasDevRoleId()) {
           mergeDevRoleId(other.getDevRoleId());
         }
@@ -786,11 +786,11 @@ public final class Automation {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        automation.Automation.DeviceRoleId parsedMessage = null;
+        ztp.Ztp.DeviceRoleId parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (automation.Automation.DeviceRoleId) e.getUnfinishedMessage();
+          parsedMessage = (ztp.Ztp.DeviceRoleId) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -1050,16 +1050,16 @@ public final class Automation {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:automation.DeviceRoleId)
+      // @@protoc_insertion_point(builder_scope:ztp.DeviceRoleId)
     }
 
-    // @@protoc_insertion_point(class_scope:automation.DeviceRoleId)
-    private static final automation.Automation.DeviceRoleId DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:ztp.DeviceRoleId)
+    private static final ztp.Ztp.DeviceRoleId DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new automation.Automation.DeviceRoleId();
+      DEFAULT_INSTANCE = new ztp.Ztp.DeviceRoleId();
     }
 
-    public static automation.Automation.DeviceRoleId getDefaultInstance() {
+    public static ztp.Ztp.DeviceRoleId getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -1084,48 +1084,48 @@ public final class Automation {
     }
 
     @java.lang.Override
-    public automation.Automation.DeviceRoleId getDefaultInstanceForType() {
+    public ztp.Ztp.DeviceRoleId getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
   public interface DeviceRoleOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:automation.DeviceRole)
+      // @@protoc_insertion_point(interface_extends:ztp.DeviceRole)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
      * @return Whether the devRoleId field is set.
      */
     boolean hasDevRoleId();
     /**
-     * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
      * @return The devRoleId.
      */
-    automation.Automation.DeviceRoleId getDevRoleId();
+    ztp.Ztp.DeviceRoleId getDevRoleId();
     /**
-     * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
      */
-    automation.Automation.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder();
+    ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder();
 
     /**
-     * <code>.automation.DeviceRoleType devRoleType = 2;</code>
+     * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
      * @return The enum numeric value on the wire for devRoleType.
      */
     int getDevRoleTypeValue();
     /**
-     * <code>.automation.DeviceRoleType devRoleType = 2;</code>
+     * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
      * @return The devRoleType.
      */
-    automation.Automation.DeviceRoleType getDevRoleType();
+    ztp.Ztp.DeviceRoleType getDevRoleType();
   }
   /**
-   * Protobuf type {@code automation.DeviceRole}
+   * Protobuf type {@code ztp.DeviceRole}
    */
   public static final class DeviceRole extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:automation.DeviceRole)
+      // @@protoc_insertion_point(message_implements:ztp.DeviceRole)
       DeviceRoleOrBuilder {
   private static final long serialVersionUID = 0L;
     // Use DeviceRole.newBuilder() to construct.
@@ -1167,11 +1167,11 @@ public final class Automation {
               done = true;
               break;
             case 10: {
-              automation.Automation.DeviceRoleId.Builder subBuilder = null;
+              ztp.Ztp.DeviceRoleId.Builder subBuilder = null;
               if (devRoleId_ != null) {
                 subBuilder = devRoleId_.toBuilder();
               }
-              devRoleId_ = input.readMessage(automation.Automation.DeviceRoleId.parser(), extensionRegistry);
+              devRoleId_ = input.readMessage(ztp.Ztp.DeviceRoleId.parser(), extensionRegistry);
               if (subBuilder != null) {
                 subBuilder.mergeFrom(devRoleId_);
                 devRoleId_ = subBuilder.buildPartial();
@@ -1206,21 +1206,21 @@ public final class Automation {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return automation.Automation.internal_static_automation_DeviceRole_descriptor;
+      return ztp.Ztp.internal_static_ztp_DeviceRole_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return automation.Automation.internal_static_automation_DeviceRole_fieldAccessorTable
+      return ztp.Ztp.internal_static_ztp_DeviceRole_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              automation.Automation.DeviceRole.class, automation.Automation.DeviceRole.Builder.class);
+              ztp.Ztp.DeviceRole.class, ztp.Ztp.DeviceRole.Builder.class);
     }
 
     public static final int DEVROLEID_FIELD_NUMBER = 1;
-    private automation.Automation.DeviceRoleId devRoleId_;
+    private ztp.Ztp.DeviceRoleId devRoleId_;
     /**
-     * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
      * @return Whether the devRoleId field is set.
      */
     @java.lang.Override
@@ -1228,38 +1228,38 @@ public final class Automation {
       return devRoleId_ != null;
     }
     /**
-     * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
      * @return The devRoleId.
      */
     @java.lang.Override
-    public automation.Automation.DeviceRoleId getDevRoleId() {
-      return devRoleId_ == null ? automation.Automation.DeviceRoleId.getDefaultInstance() : devRoleId_;
+    public ztp.Ztp.DeviceRoleId getDevRoleId() {
+      return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
     }
     /**
-     * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
      */
     @java.lang.Override
-    public automation.Automation.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
+    public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
       return getDevRoleId();
     }
 
     public static final int DEVROLETYPE_FIELD_NUMBER = 2;
     private int devRoleType_;
     /**
-     * <code>.automation.DeviceRoleType devRoleType = 2;</code>
+     * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
      * @return The enum numeric value on the wire for devRoleType.
      */
     @java.lang.Override public int getDevRoleTypeValue() {
       return devRoleType_;
     }
     /**
-     * <code>.automation.DeviceRoleType devRoleType = 2;</code>
+     * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
      * @return The devRoleType.
      */
-    @java.lang.Override public automation.Automation.DeviceRoleType getDevRoleType() {
+    @java.lang.Override public ztp.Ztp.DeviceRoleType getDevRoleType() {
       @SuppressWarnings("deprecation")
-      automation.Automation.DeviceRoleType result = automation.Automation.DeviceRoleType.valueOf(devRoleType_);
-      return result == null ? automation.Automation.DeviceRoleType.UNRECOGNIZED : result;
+      ztp.Ztp.DeviceRoleType result = ztp.Ztp.DeviceRoleType.valueOf(devRoleType_);
+      return result == null ? ztp.Ztp.DeviceRoleType.UNRECOGNIZED : result;
     }
 
     private byte memoizedIsInitialized = -1;
@@ -1279,7 +1279,7 @@ public final class Automation {
       if (devRoleId_ != null) {
         output.writeMessage(1, getDevRoleId());
       }
-      if (devRoleType_ != automation.Automation.DeviceRoleType.NONE.getNumber()) {
+      if (devRoleType_ != ztp.Ztp.DeviceRoleType.NONE.getNumber()) {
         output.writeEnum(2, devRoleType_);
       }
       unknownFields.writeTo(output);
@@ -1295,7 +1295,7 @@ public final class Automation {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(1, getDevRoleId());
       }
-      if (devRoleType_ != automation.Automation.DeviceRoleType.NONE.getNumber()) {
+      if (devRoleType_ != ztp.Ztp.DeviceRoleType.NONE.getNumber()) {
         size += com.google.protobuf.CodedOutputStream
           .computeEnumSize(2, devRoleType_);
       }
@@ -1309,10 +1309,10 @@ public final class Automation {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof automation.Automation.DeviceRole)) {
+      if (!(obj instanceof ztp.Ztp.DeviceRole)) {
         return super.equals(obj);
       }
-      automation.Automation.DeviceRole other = (automation.Automation.DeviceRole) obj;
+      ztp.Ztp.DeviceRole other = (ztp.Ztp.DeviceRole) obj;
 
       if (hasDevRoleId() != other.hasDevRoleId()) return false;
       if (hasDevRoleId()) {
@@ -1342,69 +1342,69 @@ public final class Automation {
       return hash;
     }
 
-    public static automation.Automation.DeviceRole parseFrom(
+    public static ztp.Ztp.DeviceRole parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceRole parseFrom(
+    public static ztp.Ztp.DeviceRole parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceRole parseFrom(
+    public static ztp.Ztp.DeviceRole parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceRole parseFrom(
+    public static ztp.Ztp.DeviceRole parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceRole parseFrom(byte[] data)
+    public static ztp.Ztp.DeviceRole parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceRole parseFrom(
+    public static ztp.Ztp.DeviceRole parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceRole parseFrom(java.io.InputStream input)
+    public static ztp.Ztp.DeviceRole parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceRole parseFrom(
+    public static ztp.Ztp.DeviceRole 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 automation.Automation.DeviceRole parseDelimitedFrom(java.io.InputStream input)
+    public static ztp.Ztp.DeviceRole parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceRole parseDelimitedFrom(
+    public static ztp.Ztp.DeviceRole 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 automation.Automation.DeviceRole parseFrom(
+    public static ztp.Ztp.DeviceRole parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceRole parseFrom(
+    public static ztp.Ztp.DeviceRole parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -1417,7 +1417,7 @@ public final class Automation {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(automation.Automation.DeviceRole prototype) {
+    public static Builder newBuilder(ztp.Ztp.DeviceRole prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -1433,26 +1433,26 @@ public final class Automation {
       return builder;
     }
     /**
-     * Protobuf type {@code automation.DeviceRole}
+     * Protobuf type {@code ztp.DeviceRole}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:automation.DeviceRole)
-        automation.Automation.DeviceRoleOrBuilder {
+        // @@protoc_insertion_point(builder_implements:ztp.DeviceRole)
+        ztp.Ztp.DeviceRoleOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return automation.Automation.internal_static_automation_DeviceRole_descriptor;
+        return ztp.Ztp.internal_static_ztp_DeviceRole_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return automation.Automation.internal_static_automation_DeviceRole_fieldAccessorTable
+        return ztp.Ztp.internal_static_ztp_DeviceRole_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                automation.Automation.DeviceRole.class, automation.Automation.DeviceRole.Builder.class);
+                ztp.Ztp.DeviceRole.class, ztp.Ztp.DeviceRole.Builder.class);
       }
 
-      // Construct using automation.Automation.DeviceRole.newBuilder()
+      // Construct using ztp.Ztp.DeviceRole.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -1484,17 +1484,17 @@ public final class Automation {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return automation.Automation.internal_static_automation_DeviceRole_descriptor;
+        return ztp.Ztp.internal_static_ztp_DeviceRole_descriptor;
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceRole getDefaultInstanceForType() {
-        return automation.Automation.DeviceRole.getDefaultInstance();
+      public ztp.Ztp.DeviceRole getDefaultInstanceForType() {
+        return ztp.Ztp.DeviceRole.getDefaultInstance();
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceRole build() {
-        automation.Automation.DeviceRole result = buildPartial();
+      public ztp.Ztp.DeviceRole build() {
+        ztp.Ztp.DeviceRole result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -1502,8 +1502,8 @@ public final class Automation {
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceRole buildPartial() {
-        automation.Automation.DeviceRole result = new automation.Automation.DeviceRole(this);
+      public ztp.Ztp.DeviceRole buildPartial() {
+        ztp.Ztp.DeviceRole result = new ztp.Ztp.DeviceRole(this);
         if (devRoleIdBuilder_ == null) {
           result.devRoleId_ = devRoleId_;
         } else {
@@ -1548,16 +1548,16 @@ public final class Automation {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof automation.Automation.DeviceRole) {
-          return mergeFrom((automation.Automation.DeviceRole)other);
+        if (other instanceof ztp.Ztp.DeviceRole) {
+          return mergeFrom((ztp.Ztp.DeviceRole)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(automation.Automation.DeviceRole other) {
-        if (other == automation.Automation.DeviceRole.getDefaultInstance()) return this;
+      public Builder mergeFrom(ztp.Ztp.DeviceRole other) {
+        if (other == ztp.Ztp.DeviceRole.getDefaultInstance()) return this;
         if (other.hasDevRoleId()) {
           mergeDevRoleId(other.getDevRoleId());
         }
@@ -1579,11 +1579,11 @@ public final class Automation {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        automation.Automation.DeviceRole parsedMessage = null;
+        ztp.Ztp.DeviceRole parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (automation.Automation.DeviceRole) e.getUnfinishedMessage();
+          parsedMessage = (ztp.Ztp.DeviceRole) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -1593,31 +1593,31 @@ public final class Automation {
         return this;
       }
 
-      private automation.Automation.DeviceRoleId devRoleId_;
+      private ztp.Ztp.DeviceRoleId devRoleId_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          automation.Automation.DeviceRoleId, automation.Automation.DeviceRoleId.Builder, automation.Automation.DeviceRoleIdOrBuilder> devRoleIdBuilder_;
+          ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder> devRoleIdBuilder_;
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        * @return Whether the devRoleId field is set.
        */
       public boolean hasDevRoleId() {
         return devRoleIdBuilder_ != null || devRoleId_ != null;
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        * @return The devRoleId.
        */
-      public automation.Automation.DeviceRoleId getDevRoleId() {
+      public ztp.Ztp.DeviceRoleId getDevRoleId() {
         if (devRoleIdBuilder_ == null) {
-          return devRoleId_ == null ? automation.Automation.DeviceRoleId.getDefaultInstance() : devRoleId_;
+          return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
         } else {
           return devRoleIdBuilder_.getMessage();
         }
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        */
-      public Builder setDevRoleId(automation.Automation.DeviceRoleId value) {
+      public Builder setDevRoleId(ztp.Ztp.DeviceRoleId value) {
         if (devRoleIdBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -1631,10 +1631,10 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        */
       public Builder setDevRoleId(
-          automation.Automation.DeviceRoleId.Builder builderForValue) {
+          ztp.Ztp.DeviceRoleId.Builder builderForValue) {
         if (devRoleIdBuilder_ == null) {
           devRoleId_ = builderForValue.build();
           onChanged();
@@ -1645,13 +1645,13 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        */
-      public Builder mergeDevRoleId(automation.Automation.DeviceRoleId value) {
+      public Builder mergeDevRoleId(ztp.Ztp.DeviceRoleId value) {
         if (devRoleIdBuilder_ == null) {
           if (devRoleId_ != null) {
             devRoleId_ =
-              automation.Automation.DeviceRoleId.newBuilder(devRoleId_).mergeFrom(value).buildPartial();
+              ztp.Ztp.DeviceRoleId.newBuilder(devRoleId_).mergeFrom(value).buildPartial();
           } else {
             devRoleId_ = value;
           }
@@ -1663,7 +1663,7 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        */
       public Builder clearDevRoleId() {
         if (devRoleIdBuilder_ == null) {
@@ -1677,33 +1677,33 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        */
-      public automation.Automation.DeviceRoleId.Builder getDevRoleIdBuilder() {
+      public ztp.Ztp.DeviceRoleId.Builder getDevRoleIdBuilder() {
         
         onChanged();
         return getDevRoleIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        */
-      public automation.Automation.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
+      public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
         if (devRoleIdBuilder_ != null) {
           return devRoleIdBuilder_.getMessageOrBuilder();
         } else {
           return devRoleId_ == null ?
-              automation.Automation.DeviceRoleId.getDefaultInstance() : devRoleId_;
+              ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
         }
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          automation.Automation.DeviceRoleId, automation.Automation.DeviceRoleId.Builder, automation.Automation.DeviceRoleIdOrBuilder> 
+          ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder> 
           getDevRoleIdFieldBuilder() {
         if (devRoleIdBuilder_ == null) {
           devRoleIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              automation.Automation.DeviceRoleId, automation.Automation.DeviceRoleId.Builder, automation.Automation.DeviceRoleIdOrBuilder>(
+              ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder>(
                   getDevRoleId(),
                   getParentForChildren(),
                   isClean());
@@ -1714,14 +1714,14 @@ public final class Automation {
 
       private int devRoleType_ = 0;
       /**
-       * <code>.automation.DeviceRoleType devRoleType = 2;</code>
+       * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
        * @return The enum numeric value on the wire for devRoleType.
        */
       @java.lang.Override public int getDevRoleTypeValue() {
         return devRoleType_;
       }
       /**
-       * <code>.automation.DeviceRoleType devRoleType = 2;</code>
+       * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
        * @param value The enum numeric value on the wire for devRoleType to set.
        * @return This builder for chaining.
        */
@@ -1732,21 +1732,21 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.DeviceRoleType devRoleType = 2;</code>
+       * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
        * @return The devRoleType.
        */
       @java.lang.Override
-      public automation.Automation.DeviceRoleType getDevRoleType() {
+      public ztp.Ztp.DeviceRoleType getDevRoleType() {
         @SuppressWarnings("deprecation")
-        automation.Automation.DeviceRoleType result = automation.Automation.DeviceRoleType.valueOf(devRoleType_);
-        return result == null ? automation.Automation.DeviceRoleType.UNRECOGNIZED : result;
+        ztp.Ztp.DeviceRoleType result = ztp.Ztp.DeviceRoleType.valueOf(devRoleType_);
+        return result == null ? ztp.Ztp.DeviceRoleType.UNRECOGNIZED : result;
       }
       /**
-       * <code>.automation.DeviceRoleType devRoleType = 2;</code>
+       * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
        * @param value The devRoleType to set.
        * @return This builder for chaining.
        */
-      public Builder setDevRoleType(automation.Automation.DeviceRoleType value) {
+      public Builder setDevRoleType(ztp.Ztp.DeviceRoleType value) {
         if (value == null) {
           throw new NullPointerException();
         }
@@ -1756,7 +1756,7 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.DeviceRoleType devRoleType = 2;</code>
+       * <code>.ztp.DeviceRoleType devRoleType = 2;</code>
        * @return This builder for chaining.
        */
       public Builder clearDevRoleType() {
@@ -1778,16 +1778,16 @@ public final class Automation {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:automation.DeviceRole)
+      // @@protoc_insertion_point(builder_scope:ztp.DeviceRole)
     }
 
-    // @@protoc_insertion_point(class_scope:automation.DeviceRole)
-    private static final automation.Automation.DeviceRole DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:ztp.DeviceRole)
+    private static final ztp.Ztp.DeviceRole DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new automation.Automation.DeviceRole();
+      DEFAULT_INSTANCE = new ztp.Ztp.DeviceRole();
     }
 
-    public static automation.Automation.DeviceRole getDefaultInstance() {
+    public static ztp.Ztp.DeviceRole getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -1812,30 +1812,30 @@ public final class Automation {
     }
 
     @java.lang.Override
-    public automation.Automation.DeviceRole getDefaultInstanceForType() {
+    public ztp.Ztp.DeviceRole getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
   public interface DeviceRoleConfigOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:automation.DeviceRoleConfig)
+      // @@protoc_insertion_point(interface_extends:ztp.DeviceRoleConfig)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.automation.DeviceRole devRole = 1;</code>
+     * <code>.ztp.DeviceRole devRole = 1;</code>
      * @return Whether the devRole field is set.
      */
     boolean hasDevRole();
     /**
-     * <code>.automation.DeviceRole devRole = 1;</code>
+     * <code>.ztp.DeviceRole devRole = 1;</code>
      * @return The devRole.
      */
-    automation.Automation.DeviceRole getDevRole();
+    ztp.Ztp.DeviceRole getDevRole();
     /**
-     * <code>.automation.DeviceRole devRole = 1;</code>
+     * <code>.ztp.DeviceRole devRole = 1;</code>
      */
-    automation.Automation.DeviceRoleOrBuilder getDevRoleOrBuilder();
+    ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder();
 
     /**
      * <code>.context.DeviceConfig devConfig = 2;</code>
@@ -1853,11 +1853,11 @@ public final class Automation {
     context.ContextOuterClass.DeviceConfigOrBuilder getDevConfigOrBuilder();
   }
   /**
-   * Protobuf type {@code automation.DeviceRoleConfig}
+   * Protobuf type {@code ztp.DeviceRoleConfig}
    */
   public static final class DeviceRoleConfig extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:automation.DeviceRoleConfig)
+      // @@protoc_insertion_point(message_implements:ztp.DeviceRoleConfig)
       DeviceRoleConfigOrBuilder {
   private static final long serialVersionUID = 0L;
     // Use DeviceRoleConfig.newBuilder() to construct.
@@ -1898,11 +1898,11 @@ public final class Automation {
               done = true;
               break;
             case 10: {
-              automation.Automation.DeviceRole.Builder subBuilder = null;
+              ztp.Ztp.DeviceRole.Builder subBuilder = null;
               if (devRole_ != null) {
                 subBuilder = devRole_.toBuilder();
               }
-              devRole_ = input.readMessage(automation.Automation.DeviceRole.parser(), extensionRegistry);
+              devRole_ = input.readMessage(ztp.Ztp.DeviceRole.parser(), extensionRegistry);
               if (subBuilder != null) {
                 subBuilder.mergeFrom(devRole_);
                 devRole_ = subBuilder.buildPartial();
@@ -1944,21 +1944,21 @@ public final class Automation {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return automation.Automation.internal_static_automation_DeviceRoleConfig_descriptor;
+      return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return automation.Automation.internal_static_automation_DeviceRoleConfig_fieldAccessorTable
+      return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              automation.Automation.DeviceRoleConfig.class, automation.Automation.DeviceRoleConfig.Builder.class);
+              ztp.Ztp.DeviceRoleConfig.class, ztp.Ztp.DeviceRoleConfig.Builder.class);
     }
 
     public static final int DEVROLE_FIELD_NUMBER = 1;
-    private automation.Automation.DeviceRole devRole_;
+    private ztp.Ztp.DeviceRole devRole_;
     /**
-     * <code>.automation.DeviceRole devRole = 1;</code>
+     * <code>.ztp.DeviceRole devRole = 1;</code>
      * @return Whether the devRole field is set.
      */
     @java.lang.Override
@@ -1966,18 +1966,18 @@ public final class Automation {
       return devRole_ != null;
     }
     /**
-     * <code>.automation.DeviceRole devRole = 1;</code>
+     * <code>.ztp.DeviceRole devRole = 1;</code>
      * @return The devRole.
      */
     @java.lang.Override
-    public automation.Automation.DeviceRole getDevRole() {
-      return devRole_ == null ? automation.Automation.DeviceRole.getDefaultInstance() : devRole_;
+    public ztp.Ztp.DeviceRole getDevRole() {
+      return devRole_ == null ? ztp.Ztp.DeviceRole.getDefaultInstance() : devRole_;
     }
     /**
-     * <code>.automation.DeviceRole devRole = 1;</code>
+     * <code>.ztp.DeviceRole devRole = 1;</code>
      */
     @java.lang.Override
-    public automation.Automation.DeviceRoleOrBuilder getDevRoleOrBuilder() {
+    public ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder() {
       return getDevRole();
     }
 
@@ -2054,10 +2054,10 @@ public final class Automation {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof automation.Automation.DeviceRoleConfig)) {
+      if (!(obj instanceof ztp.Ztp.DeviceRoleConfig)) {
         return super.equals(obj);
       }
-      automation.Automation.DeviceRoleConfig other = (automation.Automation.DeviceRoleConfig) obj;
+      ztp.Ztp.DeviceRoleConfig other = (ztp.Ztp.DeviceRoleConfig) obj;
 
       if (hasDevRole() != other.hasDevRole()) return false;
       if (hasDevRole()) {
@@ -2093,69 +2093,69 @@ public final class Automation {
       return hash;
     }
 
-    public static automation.Automation.DeviceRoleConfig parseFrom(
+    public static ztp.Ztp.DeviceRoleConfig parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceRoleConfig parseFrom(
+    public static ztp.Ztp.DeviceRoleConfig parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceRoleConfig parseFrom(
+    public static ztp.Ztp.DeviceRoleConfig parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceRoleConfig parseFrom(
+    public static ztp.Ztp.DeviceRoleConfig parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceRoleConfig parseFrom(byte[] data)
+    public static ztp.Ztp.DeviceRoleConfig parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceRoleConfig parseFrom(
+    public static ztp.Ztp.DeviceRoleConfig parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceRoleConfig parseFrom(java.io.InputStream input)
+    public static ztp.Ztp.DeviceRoleConfig parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceRoleConfig parseFrom(
+    public static ztp.Ztp.DeviceRoleConfig 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 automation.Automation.DeviceRoleConfig parseDelimitedFrom(java.io.InputStream input)
+    public static ztp.Ztp.DeviceRoleConfig parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceRoleConfig parseDelimitedFrom(
+    public static ztp.Ztp.DeviceRoleConfig 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 automation.Automation.DeviceRoleConfig parseFrom(
+    public static ztp.Ztp.DeviceRoleConfig parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceRoleConfig parseFrom(
+    public static ztp.Ztp.DeviceRoleConfig parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -2168,7 +2168,7 @@ public final class Automation {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(automation.Automation.DeviceRoleConfig prototype) {
+    public static Builder newBuilder(ztp.Ztp.DeviceRoleConfig prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -2184,26 +2184,26 @@ public final class Automation {
       return builder;
     }
     /**
-     * Protobuf type {@code automation.DeviceRoleConfig}
+     * Protobuf type {@code ztp.DeviceRoleConfig}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:automation.DeviceRoleConfig)
-        automation.Automation.DeviceRoleConfigOrBuilder {
+        // @@protoc_insertion_point(builder_implements:ztp.DeviceRoleConfig)
+        ztp.Ztp.DeviceRoleConfigOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return automation.Automation.internal_static_automation_DeviceRoleConfig_descriptor;
+        return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return automation.Automation.internal_static_automation_DeviceRoleConfig_fieldAccessorTable
+        return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                automation.Automation.DeviceRoleConfig.class, automation.Automation.DeviceRoleConfig.Builder.class);
+                ztp.Ztp.DeviceRoleConfig.class, ztp.Ztp.DeviceRoleConfig.Builder.class);
       }
 
-      // Construct using automation.Automation.DeviceRoleConfig.newBuilder()
+      // Construct using ztp.Ztp.DeviceRoleConfig.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -2239,17 +2239,17 @@ public final class Automation {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return automation.Automation.internal_static_automation_DeviceRoleConfig_descriptor;
+        return ztp.Ztp.internal_static_ztp_DeviceRoleConfig_descriptor;
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceRoleConfig getDefaultInstanceForType() {
-        return automation.Automation.DeviceRoleConfig.getDefaultInstance();
+      public ztp.Ztp.DeviceRoleConfig getDefaultInstanceForType() {
+        return ztp.Ztp.DeviceRoleConfig.getDefaultInstance();
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceRoleConfig build() {
-        automation.Automation.DeviceRoleConfig result = buildPartial();
+      public ztp.Ztp.DeviceRoleConfig build() {
+        ztp.Ztp.DeviceRoleConfig result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -2257,8 +2257,8 @@ public final class Automation {
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceRoleConfig buildPartial() {
-        automation.Automation.DeviceRoleConfig result = new automation.Automation.DeviceRoleConfig(this);
+      public ztp.Ztp.DeviceRoleConfig buildPartial() {
+        ztp.Ztp.DeviceRoleConfig result = new ztp.Ztp.DeviceRoleConfig(this);
         if (devRoleBuilder_ == null) {
           result.devRole_ = devRole_;
         } else {
@@ -2307,16 +2307,16 @@ public final class Automation {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof automation.Automation.DeviceRoleConfig) {
-          return mergeFrom((automation.Automation.DeviceRoleConfig)other);
+        if (other instanceof ztp.Ztp.DeviceRoleConfig) {
+          return mergeFrom((ztp.Ztp.DeviceRoleConfig)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(automation.Automation.DeviceRoleConfig other) {
-        if (other == automation.Automation.DeviceRoleConfig.getDefaultInstance()) return this;
+      public Builder mergeFrom(ztp.Ztp.DeviceRoleConfig other) {
+        if (other == ztp.Ztp.DeviceRoleConfig.getDefaultInstance()) return this;
         if (other.hasDevRole()) {
           mergeDevRole(other.getDevRole());
         }
@@ -2338,11 +2338,11 @@ public final class Automation {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        automation.Automation.DeviceRoleConfig parsedMessage = null;
+        ztp.Ztp.DeviceRoleConfig parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (automation.Automation.DeviceRoleConfig) e.getUnfinishedMessage();
+          parsedMessage = (ztp.Ztp.DeviceRoleConfig) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -2352,31 +2352,31 @@ public final class Automation {
         return this;
       }
 
-      private automation.Automation.DeviceRole devRole_;
+      private ztp.Ztp.DeviceRole devRole_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          automation.Automation.DeviceRole, automation.Automation.DeviceRole.Builder, automation.Automation.DeviceRoleOrBuilder> devRoleBuilder_;
+          ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder> devRoleBuilder_;
       /**
-       * <code>.automation.DeviceRole devRole = 1;</code>
+       * <code>.ztp.DeviceRole devRole = 1;</code>
        * @return Whether the devRole field is set.
        */
       public boolean hasDevRole() {
         return devRoleBuilder_ != null || devRole_ != null;
       }
       /**
-       * <code>.automation.DeviceRole devRole = 1;</code>
+       * <code>.ztp.DeviceRole devRole = 1;</code>
        * @return The devRole.
        */
-      public automation.Automation.DeviceRole getDevRole() {
+      public ztp.Ztp.DeviceRole getDevRole() {
         if (devRoleBuilder_ == null) {
-          return devRole_ == null ? automation.Automation.DeviceRole.getDefaultInstance() : devRole_;
+          return devRole_ == null ? ztp.Ztp.DeviceRole.getDefaultInstance() : devRole_;
         } else {
           return devRoleBuilder_.getMessage();
         }
       }
       /**
-       * <code>.automation.DeviceRole devRole = 1;</code>
+       * <code>.ztp.DeviceRole devRole = 1;</code>
        */
-      public Builder setDevRole(automation.Automation.DeviceRole value) {
+      public Builder setDevRole(ztp.Ztp.DeviceRole value) {
         if (devRoleBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -2390,10 +2390,10 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.DeviceRole devRole = 1;</code>
+       * <code>.ztp.DeviceRole devRole = 1;</code>
        */
       public Builder setDevRole(
-          automation.Automation.DeviceRole.Builder builderForValue) {
+          ztp.Ztp.DeviceRole.Builder builderForValue) {
         if (devRoleBuilder_ == null) {
           devRole_ = builderForValue.build();
           onChanged();
@@ -2404,13 +2404,13 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.DeviceRole devRole = 1;</code>
+       * <code>.ztp.DeviceRole devRole = 1;</code>
        */
-      public Builder mergeDevRole(automation.Automation.DeviceRole value) {
+      public Builder mergeDevRole(ztp.Ztp.DeviceRole value) {
         if (devRoleBuilder_ == null) {
           if (devRole_ != null) {
             devRole_ =
-              automation.Automation.DeviceRole.newBuilder(devRole_).mergeFrom(value).buildPartial();
+              ztp.Ztp.DeviceRole.newBuilder(devRole_).mergeFrom(value).buildPartial();
           } else {
             devRole_ = value;
           }
@@ -2422,7 +2422,7 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.DeviceRole devRole = 1;</code>
+       * <code>.ztp.DeviceRole devRole = 1;</code>
        */
       public Builder clearDevRole() {
         if (devRoleBuilder_ == null) {
@@ -2436,33 +2436,33 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.DeviceRole devRole = 1;</code>
+       * <code>.ztp.DeviceRole devRole = 1;</code>
        */
-      public automation.Automation.DeviceRole.Builder getDevRoleBuilder() {
+      public ztp.Ztp.DeviceRole.Builder getDevRoleBuilder() {
         
         onChanged();
         return getDevRoleFieldBuilder().getBuilder();
       }
       /**
-       * <code>.automation.DeviceRole devRole = 1;</code>
+       * <code>.ztp.DeviceRole devRole = 1;</code>
        */
-      public automation.Automation.DeviceRoleOrBuilder getDevRoleOrBuilder() {
+      public ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder() {
         if (devRoleBuilder_ != null) {
           return devRoleBuilder_.getMessageOrBuilder();
         } else {
           return devRole_ == null ?
-              automation.Automation.DeviceRole.getDefaultInstance() : devRole_;
+              ztp.Ztp.DeviceRole.getDefaultInstance() : devRole_;
         }
       }
       /**
-       * <code>.automation.DeviceRole devRole = 1;</code>
+       * <code>.ztp.DeviceRole devRole = 1;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          automation.Automation.DeviceRole, automation.Automation.DeviceRole.Builder, automation.Automation.DeviceRoleOrBuilder> 
+          ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder> 
           getDevRoleFieldBuilder() {
         if (devRoleBuilder_ == null) {
           devRoleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              automation.Automation.DeviceRole, automation.Automation.DeviceRole.Builder, automation.Automation.DeviceRoleOrBuilder>(
+              ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder>(
                   getDevRole(),
                   getParentForChildren(),
                   isClean());
@@ -2602,16 +2602,16 @@ public final class Automation {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:automation.DeviceRoleConfig)
+      // @@protoc_insertion_point(builder_scope:ztp.DeviceRoleConfig)
     }
 
-    // @@protoc_insertion_point(class_scope:automation.DeviceRoleConfig)
-    private static final automation.Automation.DeviceRoleConfig DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:ztp.DeviceRoleConfig)
+    private static final ztp.Ztp.DeviceRoleConfig DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new automation.Automation.DeviceRoleConfig();
+      DEFAULT_INSTANCE = new ztp.Ztp.DeviceRoleConfig();
     }
 
-    public static automation.Automation.DeviceRoleConfig getDefaultInstance() {
+    public static ztp.Ztp.DeviceRoleConfig getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -2636,46 +2636,46 @@ public final class Automation {
     }
 
     @java.lang.Override
-    public automation.Automation.DeviceRoleConfig getDefaultInstanceForType() {
+    public ztp.Ztp.DeviceRoleConfig getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
   public interface DeviceRoleListOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:automation.DeviceRoleList)
+      // @@protoc_insertion_point(interface_extends:ztp.DeviceRoleList)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>repeated .automation.DeviceRole devRole = 1;</code>
+     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
      */
-    java.util.List<automation.Automation.DeviceRole> 
+    java.util.List<ztp.Ztp.DeviceRole> 
         getDevRoleList();
     /**
-     * <code>repeated .automation.DeviceRole devRole = 1;</code>
+     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
      */
-    automation.Automation.DeviceRole getDevRole(int index);
+    ztp.Ztp.DeviceRole getDevRole(int index);
     /**
-     * <code>repeated .automation.DeviceRole devRole = 1;</code>
+     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
      */
     int getDevRoleCount();
     /**
-     * <code>repeated .automation.DeviceRole devRole = 1;</code>
+     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
      */
-    java.util.List<? extends automation.Automation.DeviceRoleOrBuilder> 
+    java.util.List<? extends ztp.Ztp.DeviceRoleOrBuilder> 
         getDevRoleOrBuilderList();
     /**
-     * <code>repeated .automation.DeviceRole devRole = 1;</code>
+     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
      */
-    automation.Automation.DeviceRoleOrBuilder getDevRoleOrBuilder(
+    ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder(
         int index);
   }
   /**
-   * Protobuf type {@code automation.DeviceRoleList}
+   * Protobuf type {@code ztp.DeviceRoleList}
    */
   public static final class DeviceRoleList extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:automation.DeviceRoleList)
+      // @@protoc_insertion_point(message_implements:ztp.DeviceRoleList)
       DeviceRoleListOrBuilder {
   private static final long serialVersionUID = 0L;
     // Use DeviceRoleList.newBuilder() to construct.
@@ -2719,11 +2719,11 @@ public final class Automation {
               break;
             case 10: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                devRole_ = new java.util.ArrayList<automation.Automation.DeviceRole>();
+                devRole_ = new java.util.ArrayList<ztp.Ztp.DeviceRole>();
                 mutable_bitField0_ |= 0x00000001;
               }
               devRole_.add(
-                  input.readMessage(automation.Automation.DeviceRole.parser(), extensionRegistry));
+                  input.readMessage(ztp.Ztp.DeviceRole.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -2750,53 +2750,53 @@ public final class Automation {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return automation.Automation.internal_static_automation_DeviceRoleList_descriptor;
+      return ztp.Ztp.internal_static_ztp_DeviceRoleList_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return automation.Automation.internal_static_automation_DeviceRoleList_fieldAccessorTable
+      return ztp.Ztp.internal_static_ztp_DeviceRoleList_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              automation.Automation.DeviceRoleList.class, automation.Automation.DeviceRoleList.Builder.class);
+              ztp.Ztp.DeviceRoleList.class, ztp.Ztp.DeviceRoleList.Builder.class);
     }
 
     public static final int DEVROLE_FIELD_NUMBER = 1;
-    private java.util.List<automation.Automation.DeviceRole> devRole_;
+    private java.util.List<ztp.Ztp.DeviceRole> devRole_;
     /**
-     * <code>repeated .automation.DeviceRole devRole = 1;</code>
+     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<automation.Automation.DeviceRole> getDevRoleList() {
+    public java.util.List<ztp.Ztp.DeviceRole> getDevRoleList() {
       return devRole_;
     }
     /**
-     * <code>repeated .automation.DeviceRole devRole = 1;</code>
+     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
      */
     @java.lang.Override
-    public java.util.List<? extends automation.Automation.DeviceRoleOrBuilder> 
+    public java.util.List<? extends ztp.Ztp.DeviceRoleOrBuilder> 
         getDevRoleOrBuilderList() {
       return devRole_;
     }
     /**
-     * <code>repeated .automation.DeviceRole devRole = 1;</code>
+     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
      */
     @java.lang.Override
     public int getDevRoleCount() {
       return devRole_.size();
     }
     /**
-     * <code>repeated .automation.DeviceRole devRole = 1;</code>
+     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
      */
     @java.lang.Override
-    public automation.Automation.DeviceRole getDevRole(int index) {
+    public ztp.Ztp.DeviceRole getDevRole(int index) {
       return devRole_.get(index);
     }
     /**
-     * <code>repeated .automation.DeviceRole devRole = 1;</code>
+     * <code>repeated .ztp.DeviceRole devRole = 1;</code>
      */
     @java.lang.Override
-    public automation.Automation.DeviceRoleOrBuilder getDevRoleOrBuilder(
+    public ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder(
         int index) {
       return devRole_.get(index);
     }
@@ -2841,10 +2841,10 @@ public final class Automation {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof automation.Automation.DeviceRoleList)) {
+      if (!(obj instanceof ztp.Ztp.DeviceRoleList)) {
         return super.equals(obj);
       }
-      automation.Automation.DeviceRoleList other = (automation.Automation.DeviceRoleList) obj;
+      ztp.Ztp.DeviceRoleList other = (ztp.Ztp.DeviceRoleList) obj;
 
       if (!getDevRoleList()
           .equals(other.getDevRoleList())) return false;
@@ -2868,69 +2868,69 @@ public final class Automation {
       return hash;
     }
 
-    public static automation.Automation.DeviceRoleList parseFrom(
+    public static ztp.Ztp.DeviceRoleList parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceRoleList parseFrom(
+    public static ztp.Ztp.DeviceRoleList parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceRoleList parseFrom(
+    public static ztp.Ztp.DeviceRoleList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceRoleList parseFrom(
+    public static ztp.Ztp.DeviceRoleList parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceRoleList parseFrom(byte[] data)
+    public static ztp.Ztp.DeviceRoleList parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceRoleList parseFrom(
+    public static ztp.Ztp.DeviceRoleList parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceRoleList parseFrom(java.io.InputStream input)
+    public static ztp.Ztp.DeviceRoleList parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceRoleList parseFrom(
+    public static ztp.Ztp.DeviceRoleList 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 automation.Automation.DeviceRoleList parseDelimitedFrom(java.io.InputStream input)
+    public static ztp.Ztp.DeviceRoleList parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceRoleList parseDelimitedFrom(
+    public static ztp.Ztp.DeviceRoleList 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 automation.Automation.DeviceRoleList parseFrom(
+    public static ztp.Ztp.DeviceRoleList parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceRoleList parseFrom(
+    public static ztp.Ztp.DeviceRoleList parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -2943,7 +2943,7 @@ public final class Automation {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(automation.Automation.DeviceRoleList prototype) {
+    public static Builder newBuilder(ztp.Ztp.DeviceRoleList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -2959,26 +2959,26 @@ public final class Automation {
       return builder;
     }
     /**
-     * Protobuf type {@code automation.DeviceRoleList}
+     * Protobuf type {@code ztp.DeviceRoleList}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:automation.DeviceRoleList)
-        automation.Automation.DeviceRoleListOrBuilder {
+        // @@protoc_insertion_point(builder_implements:ztp.DeviceRoleList)
+        ztp.Ztp.DeviceRoleListOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return automation.Automation.internal_static_automation_DeviceRoleList_descriptor;
+        return ztp.Ztp.internal_static_ztp_DeviceRoleList_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return automation.Automation.internal_static_automation_DeviceRoleList_fieldAccessorTable
+        return ztp.Ztp.internal_static_ztp_DeviceRoleList_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                automation.Automation.DeviceRoleList.class, automation.Automation.DeviceRoleList.Builder.class);
+                ztp.Ztp.DeviceRoleList.class, ztp.Ztp.DeviceRoleList.Builder.class);
       }
 
-      // Construct using automation.Automation.DeviceRoleList.newBuilder()
+      // Construct using ztp.Ztp.DeviceRoleList.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -3009,17 +3009,17 @@ public final class Automation {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return automation.Automation.internal_static_automation_DeviceRoleList_descriptor;
+        return ztp.Ztp.internal_static_ztp_DeviceRoleList_descriptor;
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceRoleList getDefaultInstanceForType() {
-        return automation.Automation.DeviceRoleList.getDefaultInstance();
+      public ztp.Ztp.DeviceRoleList getDefaultInstanceForType() {
+        return ztp.Ztp.DeviceRoleList.getDefaultInstance();
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceRoleList build() {
-        automation.Automation.DeviceRoleList result = buildPartial();
+      public ztp.Ztp.DeviceRoleList build() {
+        ztp.Ztp.DeviceRoleList result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -3027,8 +3027,8 @@ public final class Automation {
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceRoleList buildPartial() {
-        automation.Automation.DeviceRoleList result = new automation.Automation.DeviceRoleList(this);
+      public ztp.Ztp.DeviceRoleList buildPartial() {
+        ztp.Ztp.DeviceRoleList result = new ztp.Ztp.DeviceRoleList(this);
         int from_bitField0_ = bitField0_;
         if (devRoleBuilder_ == null) {
           if (((bitField0_ & 0x00000001) != 0)) {
@@ -3077,16 +3077,16 @@ public final class Automation {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof automation.Automation.DeviceRoleList) {
-          return mergeFrom((automation.Automation.DeviceRoleList)other);
+        if (other instanceof ztp.Ztp.DeviceRoleList) {
+          return mergeFrom((ztp.Ztp.DeviceRoleList)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(automation.Automation.DeviceRoleList other) {
-        if (other == automation.Automation.DeviceRoleList.getDefaultInstance()) return this;
+      public Builder mergeFrom(ztp.Ztp.DeviceRoleList other) {
+        if (other == ztp.Ztp.DeviceRoleList.getDefaultInstance()) return this;
         if (devRoleBuilder_ == null) {
           if (!other.devRole_.isEmpty()) {
             if (devRole_.isEmpty()) {
@@ -3128,11 +3128,11 @@ public final class Automation {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        automation.Automation.DeviceRoleList parsedMessage = null;
+        ztp.Ztp.DeviceRoleList parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (automation.Automation.DeviceRoleList) e.getUnfinishedMessage();
+          parsedMessage = (ztp.Ztp.DeviceRoleList) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -3143,22 +3143,22 @@ public final class Automation {
       }
       private int bitField0_;
 
-      private java.util.List<automation.Automation.DeviceRole> devRole_ =
+      private java.util.List<ztp.Ztp.DeviceRole> devRole_ =
         java.util.Collections.emptyList();
       private void ensureDevRoleIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          devRole_ = new java.util.ArrayList<automation.Automation.DeviceRole>(devRole_);
+          devRole_ = new java.util.ArrayList<ztp.Ztp.DeviceRole>(devRole_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          automation.Automation.DeviceRole, automation.Automation.DeviceRole.Builder, automation.Automation.DeviceRoleOrBuilder> devRoleBuilder_;
+          ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder> devRoleBuilder_;
 
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
-      public java.util.List<automation.Automation.DeviceRole> getDevRoleList() {
+      public java.util.List<ztp.Ztp.DeviceRole> getDevRoleList() {
         if (devRoleBuilder_ == null) {
           return java.util.Collections.unmodifiableList(devRole_);
         } else {
@@ -3166,7 +3166,7 @@ public final class Automation {
         }
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
       public int getDevRoleCount() {
         if (devRoleBuilder_ == null) {
@@ -3176,9 +3176,9 @@ public final class Automation {
         }
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
-      public automation.Automation.DeviceRole getDevRole(int index) {
+      public ztp.Ztp.DeviceRole getDevRole(int index) {
         if (devRoleBuilder_ == null) {
           return devRole_.get(index);
         } else {
@@ -3186,10 +3186,10 @@ public final class Automation {
         }
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
       public Builder setDevRole(
-          int index, automation.Automation.DeviceRole value) {
+          int index, ztp.Ztp.DeviceRole value) {
         if (devRoleBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -3203,10 +3203,10 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
       public Builder setDevRole(
-          int index, automation.Automation.DeviceRole.Builder builderForValue) {
+          int index, ztp.Ztp.DeviceRole.Builder builderForValue) {
         if (devRoleBuilder_ == null) {
           ensureDevRoleIsMutable();
           devRole_.set(index, builderForValue.build());
@@ -3217,9 +3217,9 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
-      public Builder addDevRole(automation.Automation.DeviceRole value) {
+      public Builder addDevRole(ztp.Ztp.DeviceRole value) {
         if (devRoleBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -3233,10 +3233,10 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
       public Builder addDevRole(
-          int index, automation.Automation.DeviceRole value) {
+          int index, ztp.Ztp.DeviceRole value) {
         if (devRoleBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -3250,10 +3250,10 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
       public Builder addDevRole(
-          automation.Automation.DeviceRole.Builder builderForValue) {
+          ztp.Ztp.DeviceRole.Builder builderForValue) {
         if (devRoleBuilder_ == null) {
           ensureDevRoleIsMutable();
           devRole_.add(builderForValue.build());
@@ -3264,10 +3264,10 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
       public Builder addDevRole(
-          int index, automation.Automation.DeviceRole.Builder builderForValue) {
+          int index, ztp.Ztp.DeviceRole.Builder builderForValue) {
         if (devRoleBuilder_ == null) {
           ensureDevRoleIsMutable();
           devRole_.add(index, builderForValue.build());
@@ -3278,10 +3278,10 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
       public Builder addAllDevRole(
-          java.lang.Iterable<? extends automation.Automation.DeviceRole> values) {
+          java.lang.Iterable<? extends ztp.Ztp.DeviceRole> values) {
         if (devRoleBuilder_ == null) {
           ensureDevRoleIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -3293,7 +3293,7 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
       public Builder clearDevRole() {
         if (devRoleBuilder_ == null) {
@@ -3306,7 +3306,7 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
       public Builder removeDevRole(int index) {
         if (devRoleBuilder_ == null) {
@@ -3319,16 +3319,16 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
-      public automation.Automation.DeviceRole.Builder getDevRoleBuilder(
+      public ztp.Ztp.DeviceRole.Builder getDevRoleBuilder(
           int index) {
         return getDevRoleFieldBuilder().getBuilder(index);
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
-      public automation.Automation.DeviceRoleOrBuilder getDevRoleOrBuilder(
+      public ztp.Ztp.DeviceRoleOrBuilder getDevRoleOrBuilder(
           int index) {
         if (devRoleBuilder_ == null) {
           return devRole_.get(index);  } else {
@@ -3336,9 +3336,9 @@ public final class Automation {
         }
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
-      public java.util.List<? extends automation.Automation.DeviceRoleOrBuilder> 
+      public java.util.List<? extends ztp.Ztp.DeviceRoleOrBuilder> 
            getDevRoleOrBuilderList() {
         if (devRoleBuilder_ != null) {
           return devRoleBuilder_.getMessageOrBuilderList();
@@ -3347,33 +3347,33 @@ public final class Automation {
         }
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
-      public automation.Automation.DeviceRole.Builder addDevRoleBuilder() {
+      public ztp.Ztp.DeviceRole.Builder addDevRoleBuilder() {
         return getDevRoleFieldBuilder().addBuilder(
-            automation.Automation.DeviceRole.getDefaultInstance());
+            ztp.Ztp.DeviceRole.getDefaultInstance());
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
-      public automation.Automation.DeviceRole.Builder addDevRoleBuilder(
+      public ztp.Ztp.DeviceRole.Builder addDevRoleBuilder(
           int index) {
         return getDevRoleFieldBuilder().addBuilder(
-            index, automation.Automation.DeviceRole.getDefaultInstance());
+            index, ztp.Ztp.DeviceRole.getDefaultInstance());
       }
       /**
-       * <code>repeated .automation.DeviceRole devRole = 1;</code>
+       * <code>repeated .ztp.DeviceRole devRole = 1;</code>
        */
-      public java.util.List<automation.Automation.DeviceRole.Builder> 
+      public java.util.List<ztp.Ztp.DeviceRole.Builder> 
            getDevRoleBuilderList() {
         return getDevRoleFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          automation.Automation.DeviceRole, automation.Automation.DeviceRole.Builder, automation.Automation.DeviceRoleOrBuilder> 
+          ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder> 
           getDevRoleFieldBuilder() {
         if (devRoleBuilder_ == null) {
           devRoleBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              automation.Automation.DeviceRole, automation.Automation.DeviceRole.Builder, automation.Automation.DeviceRoleOrBuilder>(
+              ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRole.Builder, ztp.Ztp.DeviceRoleOrBuilder>(
                   devRole_,
                   ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
@@ -3395,16 +3395,16 @@ public final class Automation {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:automation.DeviceRoleList)
+      // @@protoc_insertion_point(builder_scope:ztp.DeviceRoleList)
     }
 
-    // @@protoc_insertion_point(class_scope:automation.DeviceRoleList)
-    private static final automation.Automation.DeviceRoleList DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:ztp.DeviceRoleList)
+    private static final ztp.Ztp.DeviceRoleList DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new automation.Automation.DeviceRoleList();
+      DEFAULT_INSTANCE = new ztp.Ztp.DeviceRoleList();
     }
 
-    public static automation.Automation.DeviceRoleList getDefaultInstance() {
+    public static ztp.Ztp.DeviceRoleList getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -3429,48 +3429,48 @@ public final class Automation {
     }
 
     @java.lang.Override
-    public automation.Automation.DeviceRoleList getDefaultInstanceForType() {
+    public ztp.Ztp.DeviceRoleList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
   public interface DeviceRoleStateOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:automation.DeviceRoleState)
+      // @@protoc_insertion_point(interface_extends:ztp.DeviceRoleState)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
      * @return Whether the devRoleId field is set.
      */
     boolean hasDevRoleId();
     /**
-     * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
      * @return The devRoleId.
      */
-    automation.Automation.DeviceRoleId getDevRoleId();
+    ztp.Ztp.DeviceRoleId getDevRoleId();
     /**
-     * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
      */
-    automation.Automation.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder();
+    ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder();
 
     /**
-     * <code>.automation.ZtpDeviceState devRoleState = 2;</code>
+     * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
      * @return The enum numeric value on the wire for devRoleState.
      */
     int getDevRoleStateValue();
     /**
-     * <code>.automation.ZtpDeviceState devRoleState = 2;</code>
+     * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
      * @return The devRoleState.
      */
-    automation.Automation.ZtpDeviceState getDevRoleState();
+    ztp.Ztp.ZtpDeviceState getDevRoleState();
   }
   /**
-   * Protobuf type {@code automation.DeviceRoleState}
+   * Protobuf type {@code ztp.DeviceRoleState}
    */
   public static final class DeviceRoleState extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:automation.DeviceRoleState)
+      // @@protoc_insertion_point(message_implements:ztp.DeviceRoleState)
       DeviceRoleStateOrBuilder {
   private static final long serialVersionUID = 0L;
     // Use DeviceRoleState.newBuilder() to construct.
@@ -3512,11 +3512,11 @@ public final class Automation {
               done = true;
               break;
             case 10: {
-              automation.Automation.DeviceRoleId.Builder subBuilder = null;
+              ztp.Ztp.DeviceRoleId.Builder subBuilder = null;
               if (devRoleId_ != null) {
                 subBuilder = devRoleId_.toBuilder();
               }
-              devRoleId_ = input.readMessage(automation.Automation.DeviceRoleId.parser(), extensionRegistry);
+              devRoleId_ = input.readMessage(ztp.Ztp.DeviceRoleId.parser(), extensionRegistry);
               if (subBuilder != null) {
                 subBuilder.mergeFrom(devRoleId_);
                 devRoleId_ = subBuilder.buildPartial();
@@ -3551,21 +3551,21 @@ public final class Automation {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return automation.Automation.internal_static_automation_DeviceRoleState_descriptor;
+      return ztp.Ztp.internal_static_ztp_DeviceRoleState_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return automation.Automation.internal_static_automation_DeviceRoleState_fieldAccessorTable
+      return ztp.Ztp.internal_static_ztp_DeviceRoleState_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              automation.Automation.DeviceRoleState.class, automation.Automation.DeviceRoleState.Builder.class);
+              ztp.Ztp.DeviceRoleState.class, ztp.Ztp.DeviceRoleState.Builder.class);
     }
 
     public static final int DEVROLEID_FIELD_NUMBER = 1;
-    private automation.Automation.DeviceRoleId devRoleId_;
+    private ztp.Ztp.DeviceRoleId devRoleId_;
     /**
-     * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
      * @return Whether the devRoleId field is set.
      */
     @java.lang.Override
@@ -3573,38 +3573,38 @@ public final class Automation {
       return devRoleId_ != null;
     }
     /**
-     * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
      * @return The devRoleId.
      */
     @java.lang.Override
-    public automation.Automation.DeviceRoleId getDevRoleId() {
-      return devRoleId_ == null ? automation.Automation.DeviceRoleId.getDefaultInstance() : devRoleId_;
+    public ztp.Ztp.DeviceRoleId getDevRoleId() {
+      return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
     }
     /**
-     * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+     * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
      */
     @java.lang.Override
-    public automation.Automation.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
+    public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
       return getDevRoleId();
     }
 
     public static final int DEVROLESTATE_FIELD_NUMBER = 2;
     private int devRoleState_;
     /**
-     * <code>.automation.ZtpDeviceState devRoleState = 2;</code>
+     * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
      * @return The enum numeric value on the wire for devRoleState.
      */
     @java.lang.Override public int getDevRoleStateValue() {
       return devRoleState_;
     }
     /**
-     * <code>.automation.ZtpDeviceState devRoleState = 2;</code>
+     * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
      * @return The devRoleState.
      */
-    @java.lang.Override public automation.Automation.ZtpDeviceState getDevRoleState() {
+    @java.lang.Override public ztp.Ztp.ZtpDeviceState getDevRoleState() {
       @SuppressWarnings("deprecation")
-      automation.Automation.ZtpDeviceState result = automation.Automation.ZtpDeviceState.valueOf(devRoleState_);
-      return result == null ? automation.Automation.ZtpDeviceState.UNRECOGNIZED : result;
+      ztp.Ztp.ZtpDeviceState result = ztp.Ztp.ZtpDeviceState.valueOf(devRoleState_);
+      return result == null ? ztp.Ztp.ZtpDeviceState.UNRECOGNIZED : result;
     }
 
     private byte memoizedIsInitialized = -1;
@@ -3624,7 +3624,7 @@ public final class Automation {
       if (devRoleId_ != null) {
         output.writeMessage(1, getDevRoleId());
       }
-      if (devRoleState_ != automation.Automation.ZtpDeviceState.ZTP_DEV_STATE_UNDEFINED.getNumber()) {
+      if (devRoleState_ != ztp.Ztp.ZtpDeviceState.ZTP_DEV_STATE_UNDEFINED.getNumber()) {
         output.writeEnum(2, devRoleState_);
       }
       unknownFields.writeTo(output);
@@ -3640,7 +3640,7 @@ public final class Automation {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(1, getDevRoleId());
       }
-      if (devRoleState_ != automation.Automation.ZtpDeviceState.ZTP_DEV_STATE_UNDEFINED.getNumber()) {
+      if (devRoleState_ != ztp.Ztp.ZtpDeviceState.ZTP_DEV_STATE_UNDEFINED.getNumber()) {
         size += com.google.protobuf.CodedOutputStream
           .computeEnumSize(2, devRoleState_);
       }
@@ -3654,10 +3654,10 @@ public final class Automation {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof automation.Automation.DeviceRoleState)) {
+      if (!(obj instanceof ztp.Ztp.DeviceRoleState)) {
         return super.equals(obj);
       }
-      automation.Automation.DeviceRoleState other = (automation.Automation.DeviceRoleState) obj;
+      ztp.Ztp.DeviceRoleState other = (ztp.Ztp.DeviceRoleState) obj;
 
       if (hasDevRoleId() != other.hasDevRoleId()) return false;
       if (hasDevRoleId()) {
@@ -3687,69 +3687,69 @@ public final class Automation {
       return hash;
     }
 
-    public static automation.Automation.DeviceRoleState parseFrom(
+    public static ztp.Ztp.DeviceRoleState parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceRoleState parseFrom(
+    public static ztp.Ztp.DeviceRoleState parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceRoleState parseFrom(
+    public static ztp.Ztp.DeviceRoleState parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceRoleState parseFrom(
+    public static ztp.Ztp.DeviceRoleState parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceRoleState parseFrom(byte[] data)
+    public static ztp.Ztp.DeviceRoleState parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceRoleState parseFrom(
+    public static ztp.Ztp.DeviceRoleState parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceRoleState parseFrom(java.io.InputStream input)
+    public static ztp.Ztp.DeviceRoleState parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceRoleState parseFrom(
+    public static ztp.Ztp.DeviceRoleState 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 automation.Automation.DeviceRoleState parseDelimitedFrom(java.io.InputStream input)
+    public static ztp.Ztp.DeviceRoleState parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceRoleState parseDelimitedFrom(
+    public static ztp.Ztp.DeviceRoleState 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 automation.Automation.DeviceRoleState parseFrom(
+    public static ztp.Ztp.DeviceRoleState parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceRoleState parseFrom(
+    public static ztp.Ztp.DeviceRoleState parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -3762,7 +3762,7 @@ public final class Automation {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(automation.Automation.DeviceRoleState prototype) {
+    public static Builder newBuilder(ztp.Ztp.DeviceRoleState prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -3778,26 +3778,26 @@ public final class Automation {
       return builder;
     }
     /**
-     * Protobuf type {@code automation.DeviceRoleState}
+     * Protobuf type {@code ztp.DeviceRoleState}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:automation.DeviceRoleState)
-        automation.Automation.DeviceRoleStateOrBuilder {
+        // @@protoc_insertion_point(builder_implements:ztp.DeviceRoleState)
+        ztp.Ztp.DeviceRoleStateOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return automation.Automation.internal_static_automation_DeviceRoleState_descriptor;
+        return ztp.Ztp.internal_static_ztp_DeviceRoleState_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return automation.Automation.internal_static_automation_DeviceRoleState_fieldAccessorTable
+        return ztp.Ztp.internal_static_ztp_DeviceRoleState_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                automation.Automation.DeviceRoleState.class, automation.Automation.DeviceRoleState.Builder.class);
+                ztp.Ztp.DeviceRoleState.class, ztp.Ztp.DeviceRoleState.Builder.class);
       }
 
-      // Construct using automation.Automation.DeviceRoleState.newBuilder()
+      // Construct using ztp.Ztp.DeviceRoleState.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -3829,17 +3829,17 @@ public final class Automation {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return automation.Automation.internal_static_automation_DeviceRoleState_descriptor;
+        return ztp.Ztp.internal_static_ztp_DeviceRoleState_descriptor;
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceRoleState getDefaultInstanceForType() {
-        return automation.Automation.DeviceRoleState.getDefaultInstance();
+      public ztp.Ztp.DeviceRoleState getDefaultInstanceForType() {
+        return ztp.Ztp.DeviceRoleState.getDefaultInstance();
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceRoleState build() {
-        automation.Automation.DeviceRoleState result = buildPartial();
+      public ztp.Ztp.DeviceRoleState build() {
+        ztp.Ztp.DeviceRoleState result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -3847,8 +3847,8 @@ public final class Automation {
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceRoleState buildPartial() {
-        automation.Automation.DeviceRoleState result = new automation.Automation.DeviceRoleState(this);
+      public ztp.Ztp.DeviceRoleState buildPartial() {
+        ztp.Ztp.DeviceRoleState result = new ztp.Ztp.DeviceRoleState(this);
         if (devRoleIdBuilder_ == null) {
           result.devRoleId_ = devRoleId_;
         } else {
@@ -3893,16 +3893,16 @@ public final class Automation {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof automation.Automation.DeviceRoleState) {
-          return mergeFrom((automation.Automation.DeviceRoleState)other);
+        if (other instanceof ztp.Ztp.DeviceRoleState) {
+          return mergeFrom((ztp.Ztp.DeviceRoleState)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(automation.Automation.DeviceRoleState other) {
-        if (other == automation.Automation.DeviceRoleState.getDefaultInstance()) return this;
+      public Builder mergeFrom(ztp.Ztp.DeviceRoleState other) {
+        if (other == ztp.Ztp.DeviceRoleState.getDefaultInstance()) return this;
         if (other.hasDevRoleId()) {
           mergeDevRoleId(other.getDevRoleId());
         }
@@ -3924,11 +3924,11 @@ public final class Automation {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        automation.Automation.DeviceRoleState parsedMessage = null;
+        ztp.Ztp.DeviceRoleState parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (automation.Automation.DeviceRoleState) e.getUnfinishedMessage();
+          parsedMessage = (ztp.Ztp.DeviceRoleState) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -3938,31 +3938,31 @@ public final class Automation {
         return this;
       }
 
-      private automation.Automation.DeviceRoleId devRoleId_;
+      private ztp.Ztp.DeviceRoleId devRoleId_;
       private com.google.protobuf.SingleFieldBuilderV3<
-          automation.Automation.DeviceRoleId, automation.Automation.DeviceRoleId.Builder, automation.Automation.DeviceRoleIdOrBuilder> devRoleIdBuilder_;
+          ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder> devRoleIdBuilder_;
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        * @return Whether the devRoleId field is set.
        */
       public boolean hasDevRoleId() {
         return devRoleIdBuilder_ != null || devRoleId_ != null;
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        * @return The devRoleId.
        */
-      public automation.Automation.DeviceRoleId getDevRoleId() {
+      public ztp.Ztp.DeviceRoleId getDevRoleId() {
         if (devRoleIdBuilder_ == null) {
-          return devRoleId_ == null ? automation.Automation.DeviceRoleId.getDefaultInstance() : devRoleId_;
+          return devRoleId_ == null ? ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
         } else {
           return devRoleIdBuilder_.getMessage();
         }
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        */
-      public Builder setDevRoleId(automation.Automation.DeviceRoleId value) {
+      public Builder setDevRoleId(ztp.Ztp.DeviceRoleId value) {
         if (devRoleIdBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -3976,10 +3976,10 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        */
       public Builder setDevRoleId(
-          automation.Automation.DeviceRoleId.Builder builderForValue) {
+          ztp.Ztp.DeviceRoleId.Builder builderForValue) {
         if (devRoleIdBuilder_ == null) {
           devRoleId_ = builderForValue.build();
           onChanged();
@@ -3990,13 +3990,13 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        */
-      public Builder mergeDevRoleId(automation.Automation.DeviceRoleId value) {
+      public Builder mergeDevRoleId(ztp.Ztp.DeviceRoleId value) {
         if (devRoleIdBuilder_ == null) {
           if (devRoleId_ != null) {
             devRoleId_ =
-              automation.Automation.DeviceRoleId.newBuilder(devRoleId_).mergeFrom(value).buildPartial();
+              ztp.Ztp.DeviceRoleId.newBuilder(devRoleId_).mergeFrom(value).buildPartial();
           } else {
             devRoleId_ = value;
           }
@@ -4008,7 +4008,7 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        */
       public Builder clearDevRoleId() {
         if (devRoleIdBuilder_ == null) {
@@ -4022,33 +4022,33 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        */
-      public automation.Automation.DeviceRoleId.Builder getDevRoleIdBuilder() {
+      public ztp.Ztp.DeviceRoleId.Builder getDevRoleIdBuilder() {
         
         onChanged();
         return getDevRoleIdFieldBuilder().getBuilder();
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        */
-      public automation.Automation.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
+      public ztp.Ztp.DeviceRoleIdOrBuilder getDevRoleIdOrBuilder() {
         if (devRoleIdBuilder_ != null) {
           return devRoleIdBuilder_.getMessageOrBuilder();
         } else {
           return devRoleId_ == null ?
-              automation.Automation.DeviceRoleId.getDefaultInstance() : devRoleId_;
+              ztp.Ztp.DeviceRoleId.getDefaultInstance() : devRoleId_;
         }
       }
       /**
-       * <code>.automation.DeviceRoleId devRoleId = 1;</code>
+       * <code>.ztp.DeviceRoleId devRoleId = 1;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          automation.Automation.DeviceRoleId, automation.Automation.DeviceRoleId.Builder, automation.Automation.DeviceRoleIdOrBuilder> 
+          ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder> 
           getDevRoleIdFieldBuilder() {
         if (devRoleIdBuilder_ == null) {
           devRoleIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              automation.Automation.DeviceRoleId, automation.Automation.DeviceRoleId.Builder, automation.Automation.DeviceRoleIdOrBuilder>(
+              ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRoleId.Builder, ztp.Ztp.DeviceRoleIdOrBuilder>(
                   getDevRoleId(),
                   getParentForChildren(),
                   isClean());
@@ -4059,14 +4059,14 @@ public final class Automation {
 
       private int devRoleState_ = 0;
       /**
-       * <code>.automation.ZtpDeviceState devRoleState = 2;</code>
+       * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
        * @return The enum numeric value on the wire for devRoleState.
        */
       @java.lang.Override public int getDevRoleStateValue() {
         return devRoleState_;
       }
       /**
-       * <code>.automation.ZtpDeviceState devRoleState = 2;</code>
+       * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
        * @param value The enum numeric value on the wire for devRoleState to set.
        * @return This builder for chaining.
        */
@@ -4077,21 +4077,21 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.ZtpDeviceState devRoleState = 2;</code>
+       * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
        * @return The devRoleState.
        */
       @java.lang.Override
-      public automation.Automation.ZtpDeviceState getDevRoleState() {
+      public ztp.Ztp.ZtpDeviceState getDevRoleState() {
         @SuppressWarnings("deprecation")
-        automation.Automation.ZtpDeviceState result = automation.Automation.ZtpDeviceState.valueOf(devRoleState_);
-        return result == null ? automation.Automation.ZtpDeviceState.UNRECOGNIZED : result;
+        ztp.Ztp.ZtpDeviceState result = ztp.Ztp.ZtpDeviceState.valueOf(devRoleState_);
+        return result == null ? ztp.Ztp.ZtpDeviceState.UNRECOGNIZED : result;
       }
       /**
-       * <code>.automation.ZtpDeviceState devRoleState = 2;</code>
+       * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
        * @param value The devRoleState to set.
        * @return This builder for chaining.
        */
-      public Builder setDevRoleState(automation.Automation.ZtpDeviceState value) {
+      public Builder setDevRoleState(ztp.Ztp.ZtpDeviceState value) {
         if (value == null) {
           throw new NullPointerException();
         }
@@ -4101,7 +4101,7 @@ public final class Automation {
         return this;
       }
       /**
-       * <code>.automation.ZtpDeviceState devRoleState = 2;</code>
+       * <code>.ztp.ZtpDeviceState devRoleState = 2;</code>
        * @return This builder for chaining.
        */
       public Builder clearDevRoleState() {
@@ -4123,16 +4123,16 @@ public final class Automation {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:automation.DeviceRoleState)
+      // @@protoc_insertion_point(builder_scope:ztp.DeviceRoleState)
     }
 
-    // @@protoc_insertion_point(class_scope:automation.DeviceRoleState)
-    private static final automation.Automation.DeviceRoleState DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:ztp.DeviceRoleState)
+    private static final ztp.Ztp.DeviceRoleState DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new automation.Automation.DeviceRoleState();
+      DEFAULT_INSTANCE = new ztp.Ztp.DeviceRoleState();
     }
 
-    public static automation.Automation.DeviceRoleState getDefaultInstance() {
+    public static ztp.Ztp.DeviceRoleState getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -4157,14 +4157,14 @@ public final class Automation {
     }
 
     @java.lang.Override
-    public automation.Automation.DeviceRoleState getDefaultInstanceForType() {
+    public ztp.Ztp.DeviceRoleState getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
   public interface DeviceDeletionResultOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:automation.DeviceDeletionResult)
+      // @@protoc_insertion_point(interface_extends:ztp.DeviceDeletionResult)
       com.google.protobuf.MessageOrBuilder {
 
     /**
@@ -4193,11 +4193,11 @@ public final class Automation {
         getDeletedBytes(int index);
   }
   /**
-   * Protobuf type {@code automation.DeviceDeletionResult}
+   * Protobuf type {@code ztp.DeviceDeletionResult}
    */
   public static final class DeviceDeletionResult extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:automation.DeviceDeletionResult)
+      // @@protoc_insertion_point(message_implements:ztp.DeviceDeletionResult)
       DeviceDeletionResultOrBuilder {
   private static final long serialVersionUID = 0L;
     // Use DeviceDeletionResult.newBuilder() to construct.
@@ -4272,15 +4272,15 @@ public final class Automation {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return automation.Automation.internal_static_automation_DeviceDeletionResult_descriptor;
+      return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return automation.Automation.internal_static_automation_DeviceDeletionResult_fieldAccessorTable
+      return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              automation.Automation.DeviceDeletionResult.class, automation.Automation.DeviceDeletionResult.Builder.class);
+              ztp.Ztp.DeviceDeletionResult.class, ztp.Ztp.DeviceDeletionResult.Builder.class);
     }
 
     public static final int DELETED_FIELD_NUMBER = 1;
@@ -4362,10 +4362,10 @@ public final class Automation {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof automation.Automation.DeviceDeletionResult)) {
+      if (!(obj instanceof ztp.Ztp.DeviceDeletionResult)) {
         return super.equals(obj);
       }
-      automation.Automation.DeviceDeletionResult other = (automation.Automation.DeviceDeletionResult) obj;
+      ztp.Ztp.DeviceDeletionResult other = (ztp.Ztp.DeviceDeletionResult) obj;
 
       if (!getDeletedList()
           .equals(other.getDeletedList())) return false;
@@ -4389,69 +4389,69 @@ public final class Automation {
       return hash;
     }
 
-    public static automation.Automation.DeviceDeletionResult parseFrom(
+    public static ztp.Ztp.DeviceDeletionResult parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceDeletionResult parseFrom(
+    public static ztp.Ztp.DeviceDeletionResult parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceDeletionResult parseFrom(
+    public static ztp.Ztp.DeviceDeletionResult parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceDeletionResult parseFrom(
+    public static ztp.Ztp.DeviceDeletionResult parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceDeletionResult parseFrom(byte[] data)
+    public static ztp.Ztp.DeviceDeletionResult parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static automation.Automation.DeviceDeletionResult parseFrom(
+    public static ztp.Ztp.DeviceDeletionResult parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static automation.Automation.DeviceDeletionResult parseFrom(java.io.InputStream input)
+    public static ztp.Ztp.DeviceDeletionResult parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceDeletionResult parseFrom(
+    public static ztp.Ztp.DeviceDeletionResult 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 automation.Automation.DeviceDeletionResult parseDelimitedFrom(java.io.InputStream input)
+    public static ztp.Ztp.DeviceDeletionResult parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceDeletionResult parseDelimitedFrom(
+    public static ztp.Ztp.DeviceDeletionResult 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 automation.Automation.DeviceDeletionResult parseFrom(
+    public static ztp.Ztp.DeviceDeletionResult parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static automation.Automation.DeviceDeletionResult parseFrom(
+    public static ztp.Ztp.DeviceDeletionResult parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -4464,7 +4464,7 @@ public final class Automation {
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(automation.Automation.DeviceDeletionResult prototype) {
+    public static Builder newBuilder(ztp.Ztp.DeviceDeletionResult prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -4480,26 +4480,26 @@ public final class Automation {
       return builder;
     }
     /**
-     * Protobuf type {@code automation.DeviceDeletionResult}
+     * Protobuf type {@code ztp.DeviceDeletionResult}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
-        // @@protoc_insertion_point(builder_implements:automation.DeviceDeletionResult)
-        automation.Automation.DeviceDeletionResultOrBuilder {
+        // @@protoc_insertion_point(builder_implements:ztp.DeviceDeletionResult)
+        ztp.Ztp.DeviceDeletionResultOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return automation.Automation.internal_static_automation_DeviceDeletionResult_descriptor;
+        return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return automation.Automation.internal_static_automation_DeviceDeletionResult_fieldAccessorTable
+        return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                automation.Automation.DeviceDeletionResult.class, automation.Automation.DeviceDeletionResult.Builder.class);
+                ztp.Ztp.DeviceDeletionResult.class, ztp.Ztp.DeviceDeletionResult.Builder.class);
       }
 
-      // Construct using automation.Automation.DeviceDeletionResult.newBuilder()
+      // Construct using ztp.Ztp.DeviceDeletionResult.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -4525,17 +4525,17 @@ public final class Automation {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return automation.Automation.internal_static_automation_DeviceDeletionResult_descriptor;
+        return ztp.Ztp.internal_static_ztp_DeviceDeletionResult_descriptor;
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceDeletionResult getDefaultInstanceForType() {
-        return automation.Automation.DeviceDeletionResult.getDefaultInstance();
+      public ztp.Ztp.DeviceDeletionResult getDefaultInstanceForType() {
+        return ztp.Ztp.DeviceDeletionResult.getDefaultInstance();
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceDeletionResult build() {
-        automation.Automation.DeviceDeletionResult result = buildPartial();
+      public ztp.Ztp.DeviceDeletionResult build() {
+        ztp.Ztp.DeviceDeletionResult result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -4543,8 +4543,8 @@ public final class Automation {
       }
 
       @java.lang.Override
-      public automation.Automation.DeviceDeletionResult buildPartial() {
-        automation.Automation.DeviceDeletionResult result = new automation.Automation.DeviceDeletionResult(this);
+      public ztp.Ztp.DeviceDeletionResult buildPartial() {
+        ztp.Ztp.DeviceDeletionResult result = new ztp.Ztp.DeviceDeletionResult(this);
         int from_bitField0_ = bitField0_;
         if (((bitField0_ & 0x00000001) != 0)) {
           deleted_ = deleted_.getUnmodifiableView();
@@ -4589,16 +4589,16 @@ public final class Automation {
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof automation.Automation.DeviceDeletionResult) {
-          return mergeFrom((automation.Automation.DeviceDeletionResult)other);
+        if (other instanceof ztp.Ztp.DeviceDeletionResult) {
+          return mergeFrom((ztp.Ztp.DeviceDeletionResult)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(automation.Automation.DeviceDeletionResult other) {
-        if (other == automation.Automation.DeviceDeletionResult.getDefaultInstance()) return this;
+      public Builder mergeFrom(ztp.Ztp.DeviceDeletionResult other) {
+        if (other == ztp.Ztp.DeviceDeletionResult.getDefaultInstance()) return this;
         if (!other.deleted_.isEmpty()) {
           if (deleted_.isEmpty()) {
             deleted_ = other.deleted_;
@@ -4624,11 +4624,11 @@ public final class Automation {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        automation.Automation.DeviceDeletionResult parsedMessage = null;
+        ztp.Ztp.DeviceDeletionResult parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (automation.Automation.DeviceDeletionResult) e.getUnfinishedMessage();
+          parsedMessage = (ztp.Ztp.DeviceDeletionResult) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -4761,16 +4761,16 @@ public final class Automation {
       }
 
 
-      // @@protoc_insertion_point(builder_scope:automation.DeviceDeletionResult)
+      // @@protoc_insertion_point(builder_scope:ztp.DeviceDeletionResult)
     }
 
-    // @@protoc_insertion_point(class_scope:automation.DeviceDeletionResult)
-    private static final automation.Automation.DeviceDeletionResult DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:ztp.DeviceDeletionResult)
+    private static final ztp.Ztp.DeviceDeletionResult DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new automation.Automation.DeviceDeletionResult();
+      DEFAULT_INSTANCE = new ztp.Ztp.DeviceDeletionResult();
     }
 
-    public static automation.Automation.DeviceDeletionResult getDefaultInstance() {
+    public static ztp.Ztp.DeviceDeletionResult getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
@@ -4795,42 +4795,42 @@ public final class Automation {
     }
 
     @java.lang.Override
-    public automation.Automation.DeviceDeletionResult getDefaultInstanceForType() {
+    public ztp.Ztp.DeviceDeletionResult getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
   }
 
   private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_automation_DeviceRoleId_descriptor;
+    internal_static_ztp_DeviceRoleId_descriptor;
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_automation_DeviceRoleId_fieldAccessorTable;
+      internal_static_ztp_DeviceRoleId_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_automation_DeviceRole_descriptor;
+    internal_static_ztp_DeviceRole_descriptor;
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_automation_DeviceRole_fieldAccessorTable;
+      internal_static_ztp_DeviceRole_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_automation_DeviceRoleConfig_descriptor;
+    internal_static_ztp_DeviceRoleConfig_descriptor;
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_automation_DeviceRoleConfig_fieldAccessorTable;
+      internal_static_ztp_DeviceRoleConfig_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_automation_DeviceRoleList_descriptor;
+    internal_static_ztp_DeviceRoleList_descriptor;
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_automation_DeviceRoleList_fieldAccessorTable;
+      internal_static_ztp_DeviceRoleList_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_automation_DeviceRoleState_descriptor;
+    internal_static_ztp_DeviceRoleState_descriptor;
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_automation_DeviceRoleState_fieldAccessorTable;
+      internal_static_ztp_DeviceRoleState_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_automation_DeviceDeletionResult_descriptor;
+    internal_static_ztp_DeviceDeletionResult_descriptor;
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_automation_DeviceDeletionResult_fieldAccessorTable;
+      internal_static_ztp_DeviceDeletionResult_fieldAccessorTable;
 
   public static com.google.protobuf.Descriptors.FileDescriptor
       getDescriptor() {
@@ -4840,78 +4840,74 @@ public final class Automation {
       descriptor;
   static {
     java.lang.String[] descriptorData = {
-      "\n\020automation.proto\022\nautomation\032\rcontext." +
-      "proto\"R\n\014DeviceRoleId\022 \n\tdevRoleId\030\001 \001(\013" +
-      "2\r.context.Uuid\022 \n\005devId\030\002 \001(\0132\021.context" +
-      ".DeviceId\"j\n\nDeviceRole\022+\n\tdevRoleId\030\001 \001" +
-      "(\0132\030.automation.DeviceRoleId\022/\n\013devRoleT" +
-      "ype\030\002 \001(\0162\032.automation.DeviceRoleType\"e\n" +
-      "\020DeviceRoleConfig\022\'\n\007devRole\030\001 \001(\0132\026.aut" +
-      "omation.DeviceRole\022(\n\tdevConfig\030\002 \001(\0132\025." +
-      "context.DeviceConfig\"9\n\016DeviceRoleList\022\'" +
-      "\n\007devRole\030\001 \003(\0132\026.automation.DeviceRole\"" +
-      "p\n\017DeviceRoleState\022+\n\tdevRoleId\030\001 \001(\0132\030." +
-      "automation.DeviceRoleId\0220\n\014devRoleState\030" +
-      "\002 \001(\0162\032.automation.ZtpDeviceState\"\'\n\024Dev" +
-      "iceDeletionResult\022\017\n\007deleted\030\001 \003(\t*H\n\016De" +
-      "viceRoleType\022\010\n\004NONE\020\000\022\013\n\007DEV_OPS\020\001\022\014\n\010D" +
-      "EV_CONF\020\002\022\021\n\rPIPELINE_CONF\020\003*~\n\016ZtpDevic" +
-      "eState\022\033\n\027ZTP_DEV_STATE_UNDEFINED\020\000\022\031\n\025Z" +
-      "TP_DEV_STATE_CREATED\020\001\022\031\n\025ZTP_DEV_STATE_" +
-      "UPDATED\020\002\022\031\n\025ZTP_DEV_STATE_DELETED\020\0032\276\003\n" +
-      "\021AutomationService\022F\n\020ZtpGetDeviceRole\022\030" +
-      ".automation.DeviceRoleId\032\026.automation.De" +
-      "viceRole\"\000\022N\n\033ZtpGetDeviceRolesByDeviceI" +
-      "d\022\021.context.DeviceId\032\032.automation.Device" +
-      "RoleList\"\000\022?\n\006ZtpAdd\022\026.automation.Device" +
-      "Role\032\033.automation.DeviceRoleState\"\000\022H\n\tZ" +
-      "tpUpdate\022\034.automation.DeviceRoleConfig\032\033" +
-      ".automation.DeviceRoleState\"\000\022B\n\tZtpDele" +
-      "te\022\026.automation.DeviceRole\032\033.automation." +
-      "DeviceRoleState\"\000\022B\n\014ZtpDeleteAll\022\016.cont" +
-      "ext.Empty\032 .automation.DeviceDeletionRes" +
-      "ult\"\000b\006proto3"
+      "\n\tztp.proto\022\003ztp\032\rcontext.proto\"R\n\014Devic" +
+      "eRoleId\022 \n\tdevRoleId\030\001 \001(\0132\r.context.Uui" +
+      "d\022 \n\005devId\030\002 \001(\0132\021.context.DeviceId\"\\\n\nD" +
+      "eviceRole\022$\n\tdevRoleId\030\001 \001(\0132\021.ztp.Devic" +
+      "eRoleId\022(\n\013devRoleType\030\002 \001(\0162\023.ztp.Devic" +
+      "eRoleType\"^\n\020DeviceRoleConfig\022 \n\007devRole" +
+      "\030\001 \001(\0132\017.ztp.DeviceRole\022(\n\tdevConfig\030\002 \001" +
+      "(\0132\025.context.DeviceConfig\"2\n\016DeviceRoleL" +
+      "ist\022 \n\007devRole\030\001 \003(\0132\017.ztp.DeviceRole\"b\n" +
+      "\017DeviceRoleState\022$\n\tdevRoleId\030\001 \001(\0132\021.zt" +
+      "p.DeviceRoleId\022)\n\014devRoleState\030\002 \001(\0162\023.z" +
+      "tp.ZtpDeviceState\"\'\n\024DeviceDeletionResul" +
+      "t\022\017\n\007deleted\030\001 \003(\t*H\n\016DeviceRoleType\022\010\n\004" +
+      "NONE\020\000\022\013\n\007DEV_OPS\020\001\022\014\n\010DEV_CONF\020\002\022\021\n\rPIP" +
+      "ELINE_CONF\020\003*~\n\016ZtpDeviceState\022\033\n\027ZTP_DE" +
+      "V_STATE_UNDEFINED\020\000\022\031\n\025ZTP_DEV_STATE_CRE" +
+      "ATED\020\001\022\031\n\025ZTP_DEV_STATE_UPDATED\020\002\022\031\n\025ZTP" +
+      "_DEV_STATE_DELETED\020\0032\361\002\n\nZtpService\0228\n\020Z" +
+      "tpGetDeviceRole\022\021.ztp.DeviceRoleId\032\017.ztp" +
+      ".DeviceRole\"\000\022G\n\033ZtpGetDeviceRolesByDevi" +
+      "ceId\022\021.context.DeviceId\032\023.ztp.DeviceRole" +
+      "List\"\000\0221\n\006ZtpAdd\022\017.ztp.DeviceRole\032\024.ztp." +
+      "DeviceRoleState\"\000\022:\n\tZtpUpdate\022\025.ztp.Dev" +
+      "iceRoleConfig\032\024.ztp.DeviceRoleState\"\000\0224\n" +
+      "\tZtpDelete\022\017.ztp.DeviceRole\032\024.ztp.Device" +
+      "RoleState\"\000\022;\n\014ZtpDeleteAll\022\016.context.Em" +
+      "pty\032\031.ztp.DeviceDeletionResult\"\000b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
         new com.google.protobuf.Descriptors.FileDescriptor[] {
           context.ContextOuterClass.getDescriptor(),
         });
-    internal_static_automation_DeviceRoleId_descriptor =
+    internal_static_ztp_DeviceRoleId_descriptor =
       getDescriptor().getMessageTypes().get(0);
-    internal_static_automation_DeviceRoleId_fieldAccessorTable = new
+    internal_static_ztp_DeviceRoleId_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_automation_DeviceRoleId_descriptor,
+        internal_static_ztp_DeviceRoleId_descriptor,
         new java.lang.String[] { "DevRoleId", "DevId", });
-    internal_static_automation_DeviceRole_descriptor =
+    internal_static_ztp_DeviceRole_descriptor =
       getDescriptor().getMessageTypes().get(1);
-    internal_static_automation_DeviceRole_fieldAccessorTable = new
+    internal_static_ztp_DeviceRole_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_automation_DeviceRole_descriptor,
+        internal_static_ztp_DeviceRole_descriptor,
         new java.lang.String[] { "DevRoleId", "DevRoleType", });
-    internal_static_automation_DeviceRoleConfig_descriptor =
+    internal_static_ztp_DeviceRoleConfig_descriptor =
       getDescriptor().getMessageTypes().get(2);
-    internal_static_automation_DeviceRoleConfig_fieldAccessorTable = new
+    internal_static_ztp_DeviceRoleConfig_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_automation_DeviceRoleConfig_descriptor,
+        internal_static_ztp_DeviceRoleConfig_descriptor,
         new java.lang.String[] { "DevRole", "DevConfig", });
-    internal_static_automation_DeviceRoleList_descriptor =
+    internal_static_ztp_DeviceRoleList_descriptor =
       getDescriptor().getMessageTypes().get(3);
-    internal_static_automation_DeviceRoleList_fieldAccessorTable = new
+    internal_static_ztp_DeviceRoleList_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_automation_DeviceRoleList_descriptor,
+        internal_static_ztp_DeviceRoleList_descriptor,
         new java.lang.String[] { "DevRole", });
-    internal_static_automation_DeviceRoleState_descriptor =
+    internal_static_ztp_DeviceRoleState_descriptor =
       getDescriptor().getMessageTypes().get(4);
-    internal_static_automation_DeviceRoleState_fieldAccessorTable = new
+    internal_static_ztp_DeviceRoleState_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_automation_DeviceRoleState_descriptor,
+        internal_static_ztp_DeviceRoleState_descriptor,
         new java.lang.String[] { "DevRoleId", "DevRoleState", });
-    internal_static_automation_DeviceDeletionResult_descriptor =
+    internal_static_ztp_DeviceDeletionResult_descriptor =
       getDescriptor().getMessageTypes().get(5);
-    internal_static_automation_DeviceDeletionResult_fieldAccessorTable = new
+    internal_static_ztp_DeviceDeletionResult_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_automation_DeviceDeletionResult_descriptor,
+        internal_static_ztp_DeviceDeletionResult_descriptor,
         new java.lang.String[] { "Deleted", });
     context.ContextOuterClass.getDescriptor();
   }
diff --git a/src/ztp/target/generated-sources/grpc/ztp/ZtpService.java b/src/ztp/target/generated-sources/grpc/ztp/ZtpService.java
new file mode 100644
index 000000000..6afcf457f
--- /dev/null
+++ b/src/ztp/target/generated-sources/grpc/ztp/ZtpService.java
@@ -0,0 +1,26 @@
+package ztp;
+
+import io.quarkus.grpc.runtime.MutinyService;
+
+@javax.annotation.Generated(
+value = "by Mutiny Grpc generator",
+comments = "Source: ztp.proto")
+public interface ZtpService extends MutinyService {
+
+    
+    io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRole> ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request);
+    
+    io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request);
+    
+    io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpAdd(ztp.Ztp.DeviceRole request);
+    
+    io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpUpdate(ztp.Ztp.DeviceRoleConfig request);
+    
+    io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpDelete(ztp.Ztp.DeviceRole request);
+    
+    io.smallrye.mutiny.Uni<ztp.Ztp.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request);
+    
+    
+    
+
+}
\ No newline at end of file
diff --git a/src/automation/target/generated-sources/grpc/automation/AutomationServiceBean.java b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceBean.java
similarity index 58%
rename from src/automation/target/generated-sources/grpc/automation/AutomationServiceBean.java
rename to src/ztp/target/generated-sources/grpc/ztp/ZtpServiceBean.java
index 3c7923a0c..bc1590312 100644
--- a/src/automation/target/generated-sources/grpc/automation/AutomationServiceBean.java
+++ b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceBean.java
@@ -1,4 +1,4 @@
-package automation;
+package ztp;
 
 import io.grpc.BindableService;
 import io.quarkus.grpc.GrpcService;
@@ -6,17 +6,17 @@ import io.quarkus.grpc.runtime.MutinyBean;
 
 @javax.annotation.Generated(
 value = "by Mutiny Grpc generator",
-comments = "Source: automation.proto")
-public class AutomationServiceBean extends MutinyAutomationServiceGrpc.AutomationServiceImplBase implements BindableService, MutinyBean {
+comments = "Source: ztp.proto")
+public class ZtpServiceBean extends MutinyZtpServiceGrpc.ZtpServiceImplBase implements BindableService, MutinyBean {
 
-    private final AutomationService delegate;
+    private final ZtpService delegate;
 
-    AutomationServiceBean(@GrpcService AutomationService delegate) {
+    ZtpServiceBean(@GrpcService ZtpService delegate) {
        this.delegate = delegate;
     }
 
     @Override
-    public io.smallrye.mutiny.Uni<automation.Automation.DeviceRole> ztpGetDeviceRole(automation.Automation.DeviceRoleId request) {
+    public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRole> ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request) {
        try {
          return delegate.ztpGetDeviceRole(request);
        } catch (UnsupportedOperationException e) {
@@ -24,7 +24,7 @@ public class AutomationServiceBean extends MutinyAutomationServiceGrpc.Automatio
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
+    public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
        try {
          return delegate.ztpGetDeviceRolesByDeviceId(request);
        } catch (UnsupportedOperationException e) {
@@ -32,7 +32,7 @@ public class AutomationServiceBean extends MutinyAutomationServiceGrpc.Automatio
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleState> ztpAdd(automation.Automation.DeviceRole request) {
+    public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpAdd(ztp.Ztp.DeviceRole request) {
        try {
          return delegate.ztpAdd(request);
        } catch (UnsupportedOperationException e) {
@@ -40,7 +40,7 @@ public class AutomationServiceBean extends MutinyAutomationServiceGrpc.Automatio
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleState> ztpUpdate(automation.Automation.DeviceRoleConfig request) {
+    public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpUpdate(ztp.Ztp.DeviceRoleConfig request) {
        try {
          return delegate.ztpUpdate(request);
        } catch (UnsupportedOperationException e) {
@@ -48,7 +48,7 @@ public class AutomationServiceBean extends MutinyAutomationServiceGrpc.Automatio
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<automation.Automation.DeviceRoleState> ztpDelete(automation.Automation.DeviceRole request) {
+    public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpDelete(ztp.Ztp.DeviceRole request) {
        try {
          return delegate.ztpDelete(request);
        } catch (UnsupportedOperationException e) {
@@ -56,7 +56,7 @@ public class AutomationServiceBean extends MutinyAutomationServiceGrpc.Automatio
        }
     }
     @Override
-    public io.smallrye.mutiny.Uni<automation.Automation.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request) {
+    public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request) {
        try {
          return delegate.ztpDeleteAll(request);
        } catch (UnsupportedOperationException e) {
diff --git a/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceClient.java b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceClient.java
new file mode 100644
index 000000000..00abbc181
--- /dev/null
+++ b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceClient.java
@@ -0,0 +1,48 @@
+package ztp;
+
+import java.util.function.BiFunction;
+
+import io.quarkus.grpc.runtime.MutinyClient;
+
+@javax.annotation.Generated(
+value = "by Mutiny Grpc generator",
+comments = "Source: ztp.proto")
+public class ZtpServiceClient implements ZtpService, MutinyClient<MutinyZtpServiceGrpc.MutinyZtpServiceStub> {
+
+    private final MutinyZtpServiceGrpc.MutinyZtpServiceStub stub;
+
+    public ZtpServiceClient(String name, io.grpc.Channel channel, BiFunction<String, MutinyZtpServiceGrpc.MutinyZtpServiceStub, MutinyZtpServiceGrpc.MutinyZtpServiceStub> stubConfigurator) {
+       this.stub = stubConfigurator.apply(name,MutinyZtpServiceGrpc.newMutinyStub(channel));
+    }
+
+    @Override
+    public MutinyZtpServiceGrpc.MutinyZtpServiceStub getStub() {
+       return stub;
+    }
+
+    @Override
+    public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRole> ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request) {
+       return stub.ztpGetDeviceRole(request);
+    }
+    @Override
+    public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleList> ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
+       return stub.ztpGetDeviceRolesByDeviceId(request);
+    }
+    @Override
+    public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpAdd(ztp.Ztp.DeviceRole request) {
+       return stub.ztpAdd(request);
+    }
+    @Override
+    public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpUpdate(ztp.Ztp.DeviceRoleConfig request) {
+       return stub.ztpUpdate(request);
+    }
+    @Override
+    public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceRoleState> ztpDelete(ztp.Ztp.DeviceRole request) {
+       return stub.ztpDelete(request);
+    }
+    @Override
+    public io.smallrye.mutiny.Uni<ztp.Ztp.DeviceDeletionResult> ztpDeleteAll(context.ContextOuterClass.Empty request) {
+       return stub.ztpDeleteAll(request);
+    }
+
+}
\ No newline at end of file
diff --git a/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java
new file mode 100644
index 000000000..ece33078b
--- /dev/null
+++ b/src/ztp/target/generated-sources/grpc/ztp/ZtpServiceGrpc.java
@@ -0,0 +1,645 @@
+package ztp;
+
+import static io.grpc.MethodDescriptor.generateFullMethodName;
+
+/**
+ */
+@javax.annotation.Generated(
+    value = "by gRPC proto compiler (version 1.38.1)",
+    comments = "Source: ztp.proto")
+public final class ZtpServiceGrpc {
+
+  private ZtpServiceGrpc() {}
+
+  public static final String SERVICE_NAME = "ztp.ZtpService";
+
+  // Static method descriptors that strictly reflect the proto.
+  private static volatile io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleId,
+      ztp.Ztp.DeviceRole> getZtpGetDeviceRoleMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "ZtpGetDeviceRole",
+      requestType = ztp.Ztp.DeviceRoleId.class,
+      responseType = ztp.Ztp.DeviceRole.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+  public static io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleId,
+      ztp.Ztp.DeviceRole> getZtpGetDeviceRoleMethod() {
+    io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRole> getZtpGetDeviceRoleMethod;
+    if ((getZtpGetDeviceRoleMethod = ZtpServiceGrpc.getZtpGetDeviceRoleMethod) == null) {
+      synchronized (ZtpServiceGrpc.class) {
+        if ((getZtpGetDeviceRoleMethod = ZtpServiceGrpc.getZtpGetDeviceRoleMethod) == null) {
+          ZtpServiceGrpc.getZtpGetDeviceRoleMethod = getZtpGetDeviceRoleMethod =
+              io.grpc.MethodDescriptor.<ztp.Ztp.DeviceRoleId, ztp.Ztp.DeviceRole>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpGetDeviceRole"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  ztp.Ztp.DeviceRoleId.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  ztp.Ztp.DeviceRole.getDefaultInstance()))
+              .setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpGetDeviceRole"))
+              .build();
+        }
+      }
+    }
+    return getZtpGetDeviceRoleMethod;
+  }
+
+  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId,
+      ztp.Ztp.DeviceRoleList> getZtpGetDeviceRolesByDeviceIdMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "ZtpGetDeviceRolesByDeviceId",
+      requestType = context.ContextOuterClass.DeviceId.class,
+      responseType = ztp.Ztp.DeviceRoleList.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+  public static io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId,
+      ztp.Ztp.DeviceRoleList> getZtpGetDeviceRolesByDeviceIdMethod() {
+    io.grpc.MethodDescriptor<context.ContextOuterClass.DeviceId, ztp.Ztp.DeviceRoleList> getZtpGetDeviceRolesByDeviceIdMethod;
+    if ((getZtpGetDeviceRolesByDeviceIdMethod = ZtpServiceGrpc.getZtpGetDeviceRolesByDeviceIdMethod) == null) {
+      synchronized (ZtpServiceGrpc.class) {
+        if ((getZtpGetDeviceRolesByDeviceIdMethod = ZtpServiceGrpc.getZtpGetDeviceRolesByDeviceIdMethod) == null) {
+          ZtpServiceGrpc.getZtpGetDeviceRolesByDeviceIdMethod = getZtpGetDeviceRolesByDeviceIdMethod =
+              io.grpc.MethodDescriptor.<context.ContextOuterClass.DeviceId, ztp.Ztp.DeviceRoleList>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpGetDeviceRolesByDeviceId"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  context.ContextOuterClass.DeviceId.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  ztp.Ztp.DeviceRoleList.getDefaultInstance()))
+              .setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpGetDeviceRolesByDeviceId"))
+              .build();
+        }
+      }
+    }
+    return getZtpGetDeviceRolesByDeviceIdMethod;
+  }
+
+  private static volatile io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole,
+      ztp.Ztp.DeviceRoleState> getZtpAddMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "ZtpAdd",
+      requestType = ztp.Ztp.DeviceRole.class,
+      responseType = ztp.Ztp.DeviceRoleState.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+  public static io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole,
+      ztp.Ztp.DeviceRoleState> getZtpAddMethod() {
+    io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState> getZtpAddMethod;
+    if ((getZtpAddMethod = ZtpServiceGrpc.getZtpAddMethod) == null) {
+      synchronized (ZtpServiceGrpc.class) {
+        if ((getZtpAddMethod = ZtpServiceGrpc.getZtpAddMethod) == null) {
+          ZtpServiceGrpc.getZtpAddMethod = getZtpAddMethod =
+              io.grpc.MethodDescriptor.<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpAdd"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  ztp.Ztp.DeviceRole.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  ztp.Ztp.DeviceRoleState.getDefaultInstance()))
+              .setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpAdd"))
+              .build();
+        }
+      }
+    }
+    return getZtpAddMethod;
+  }
+
+  private static volatile io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleConfig,
+      ztp.Ztp.DeviceRoleState> getZtpUpdateMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "ZtpUpdate",
+      requestType = ztp.Ztp.DeviceRoleConfig.class,
+      responseType = ztp.Ztp.DeviceRoleState.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+  public static io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleConfig,
+      ztp.Ztp.DeviceRoleState> getZtpUpdateMethod() {
+    io.grpc.MethodDescriptor<ztp.Ztp.DeviceRoleConfig, ztp.Ztp.DeviceRoleState> getZtpUpdateMethod;
+    if ((getZtpUpdateMethod = ZtpServiceGrpc.getZtpUpdateMethod) == null) {
+      synchronized (ZtpServiceGrpc.class) {
+        if ((getZtpUpdateMethod = ZtpServiceGrpc.getZtpUpdateMethod) == null) {
+          ZtpServiceGrpc.getZtpUpdateMethod = getZtpUpdateMethod =
+              io.grpc.MethodDescriptor.<ztp.Ztp.DeviceRoleConfig, ztp.Ztp.DeviceRoleState>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpUpdate"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  ztp.Ztp.DeviceRoleConfig.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  ztp.Ztp.DeviceRoleState.getDefaultInstance()))
+              .setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpUpdate"))
+              .build();
+        }
+      }
+    }
+    return getZtpUpdateMethod;
+  }
+
+  private static volatile io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole,
+      ztp.Ztp.DeviceRoleState> getZtpDeleteMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "ZtpDelete",
+      requestType = ztp.Ztp.DeviceRole.class,
+      responseType = ztp.Ztp.DeviceRoleState.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+  public static io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole,
+      ztp.Ztp.DeviceRoleState> getZtpDeleteMethod() {
+    io.grpc.MethodDescriptor<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState> getZtpDeleteMethod;
+    if ((getZtpDeleteMethod = ZtpServiceGrpc.getZtpDeleteMethod) == null) {
+      synchronized (ZtpServiceGrpc.class) {
+        if ((getZtpDeleteMethod = ZtpServiceGrpc.getZtpDeleteMethod) == null) {
+          ZtpServiceGrpc.getZtpDeleteMethod = getZtpDeleteMethod =
+              io.grpc.MethodDescriptor.<ztp.Ztp.DeviceRole, ztp.Ztp.DeviceRoleState>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpDelete"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  ztp.Ztp.DeviceRole.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  ztp.Ztp.DeviceRoleState.getDefaultInstance()))
+              .setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpDelete"))
+              .build();
+        }
+      }
+    }
+    return getZtpDeleteMethod;
+  }
+
+  private static volatile io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
+      ztp.Ztp.DeviceDeletionResult> getZtpDeleteAllMethod;
+
+  @io.grpc.stub.annotations.RpcMethod(
+      fullMethodName = SERVICE_NAME + '/' + "ZtpDeleteAll",
+      requestType = context.ContextOuterClass.Empty.class,
+      responseType = ztp.Ztp.DeviceDeletionResult.class,
+      methodType = io.grpc.MethodDescriptor.MethodType.UNARY)
+  public static io.grpc.MethodDescriptor<context.ContextOuterClass.Empty,
+      ztp.Ztp.DeviceDeletionResult> getZtpDeleteAllMethod() {
+    io.grpc.MethodDescriptor<context.ContextOuterClass.Empty, ztp.Ztp.DeviceDeletionResult> getZtpDeleteAllMethod;
+    if ((getZtpDeleteAllMethod = ZtpServiceGrpc.getZtpDeleteAllMethod) == null) {
+      synchronized (ZtpServiceGrpc.class) {
+        if ((getZtpDeleteAllMethod = ZtpServiceGrpc.getZtpDeleteAllMethod) == null) {
+          ZtpServiceGrpc.getZtpDeleteAllMethod = getZtpDeleteAllMethod =
+              io.grpc.MethodDescriptor.<context.ContextOuterClass.Empty, ztp.Ztp.DeviceDeletionResult>newBuilder()
+              .setType(io.grpc.MethodDescriptor.MethodType.UNARY)
+              .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ZtpDeleteAll"))
+              .setSampledToLocalTracing(true)
+              .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  context.ContextOuterClass.Empty.getDefaultInstance()))
+              .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller(
+                  ztp.Ztp.DeviceDeletionResult.getDefaultInstance()))
+              .setSchemaDescriptor(new ZtpServiceMethodDescriptorSupplier("ZtpDeleteAll"))
+              .build();
+        }
+      }
+    }
+    return getZtpDeleteAllMethod;
+  }
+
+  /**
+   * Creates a new async stub that supports all call types for the service
+   */
+  public static ZtpServiceStub newStub(io.grpc.Channel channel) {
+    io.grpc.stub.AbstractStub.StubFactory<ZtpServiceStub> factory =
+      new io.grpc.stub.AbstractStub.StubFactory<ZtpServiceStub>() {
+        @java.lang.Override
+        public ZtpServiceStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+          return new ZtpServiceStub(channel, callOptions);
+        }
+      };
+    return ZtpServiceStub.newStub(factory, channel);
+  }
+
+  /**
+   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
+   */
+  public static ZtpServiceBlockingStub newBlockingStub(
+      io.grpc.Channel channel) {
+    io.grpc.stub.AbstractStub.StubFactory<ZtpServiceBlockingStub> factory =
+      new io.grpc.stub.AbstractStub.StubFactory<ZtpServiceBlockingStub>() {
+        @java.lang.Override
+        public ZtpServiceBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+          return new ZtpServiceBlockingStub(channel, callOptions);
+        }
+      };
+    return ZtpServiceBlockingStub.newStub(factory, channel);
+  }
+
+  /**
+   * Creates a new ListenableFuture-style stub that supports unary calls on the service
+   */
+  public static ZtpServiceFutureStub newFutureStub(
+      io.grpc.Channel channel) {
+    io.grpc.stub.AbstractStub.StubFactory<ZtpServiceFutureStub> factory =
+      new io.grpc.stub.AbstractStub.StubFactory<ZtpServiceFutureStub>() {
+        @java.lang.Override
+        public ZtpServiceFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+          return new ZtpServiceFutureStub(channel, callOptions);
+        }
+      };
+    return ZtpServiceFutureStub.newStub(factory, channel);
+  }
+
+  /**
+   */
+  public static abstract class ZtpServiceImplBase implements io.grpc.BindableService {
+
+    /**
+     */
+    public void ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request,
+        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRole> responseObserver) {
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpGetDeviceRoleMethod(), responseObserver);
+    }
+
+    /**
+     */
+    public void ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request,
+        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleList> responseObserver) {
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpGetDeviceRolesByDeviceIdMethod(), responseObserver);
+    }
+
+    /**
+     */
+    public void ztpAdd(ztp.Ztp.DeviceRole request,
+        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpAddMethod(), responseObserver);
+    }
+
+    /**
+     */
+    public void ztpUpdate(ztp.Ztp.DeviceRoleConfig request,
+        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpUpdateMethod(), responseObserver);
+    }
+
+    /**
+     */
+    public void ztpDelete(ztp.Ztp.DeviceRole request,
+        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpDeleteMethod(), responseObserver);
+    }
+
+    /**
+     */
+    public void ztpDeleteAll(context.ContextOuterClass.Empty request,
+        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceDeletionResult> responseObserver) {
+      io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getZtpDeleteAllMethod(), responseObserver);
+    }
+
+    @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() {
+      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+          .addMethod(
+            getZtpGetDeviceRoleMethod(),
+            io.grpc.stub.ServerCalls.asyncUnaryCall(
+              new MethodHandlers<
+                ztp.Ztp.DeviceRoleId,
+                ztp.Ztp.DeviceRole>(
+                  this, METHODID_ZTP_GET_DEVICE_ROLE)))
+          .addMethod(
+            getZtpGetDeviceRolesByDeviceIdMethod(),
+            io.grpc.stub.ServerCalls.asyncUnaryCall(
+              new MethodHandlers<
+                context.ContextOuterClass.DeviceId,
+                ztp.Ztp.DeviceRoleList>(
+                  this, METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID)))
+          .addMethod(
+            getZtpAddMethod(),
+            io.grpc.stub.ServerCalls.asyncUnaryCall(
+              new MethodHandlers<
+                ztp.Ztp.DeviceRole,
+                ztp.Ztp.DeviceRoleState>(
+                  this, METHODID_ZTP_ADD)))
+          .addMethod(
+            getZtpUpdateMethod(),
+            io.grpc.stub.ServerCalls.asyncUnaryCall(
+              new MethodHandlers<
+                ztp.Ztp.DeviceRoleConfig,
+                ztp.Ztp.DeviceRoleState>(
+                  this, METHODID_ZTP_UPDATE)))
+          .addMethod(
+            getZtpDeleteMethod(),
+            io.grpc.stub.ServerCalls.asyncUnaryCall(
+              new MethodHandlers<
+                ztp.Ztp.DeviceRole,
+                ztp.Ztp.DeviceRoleState>(
+                  this, METHODID_ZTP_DELETE)))
+          .addMethod(
+            getZtpDeleteAllMethod(),
+            io.grpc.stub.ServerCalls.asyncUnaryCall(
+              new MethodHandlers<
+                context.ContextOuterClass.Empty,
+                ztp.Ztp.DeviceDeletionResult>(
+                  this, METHODID_ZTP_DELETE_ALL)))
+          .build();
+    }
+  }
+
+  /**
+   */
+  public static final class ZtpServiceStub extends io.grpc.stub.AbstractAsyncStub<ZtpServiceStub> {
+    private ZtpServiceStub(
+        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected ZtpServiceStub build(
+        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+      return new ZtpServiceStub(channel, callOptions);
+    }
+
+    /**
+     */
+    public void ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request,
+        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRole> responseObserver) {
+      io.grpc.stub.ClientCalls.asyncUnaryCall(
+          getChannel().newCall(getZtpGetDeviceRoleMethod(), getCallOptions()), request, responseObserver);
+    }
+
+    /**
+     */
+    public void ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request,
+        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleList> responseObserver) {
+      io.grpc.stub.ClientCalls.asyncUnaryCall(
+          getChannel().newCall(getZtpGetDeviceRolesByDeviceIdMethod(), getCallOptions()), request, responseObserver);
+    }
+
+    /**
+     */
+    public void ztpAdd(ztp.Ztp.DeviceRole request,
+        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
+      io.grpc.stub.ClientCalls.asyncUnaryCall(
+          getChannel().newCall(getZtpAddMethod(), getCallOptions()), request, responseObserver);
+    }
+
+    /**
+     */
+    public void ztpUpdate(ztp.Ztp.DeviceRoleConfig request,
+        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
+      io.grpc.stub.ClientCalls.asyncUnaryCall(
+          getChannel().newCall(getZtpUpdateMethod(), getCallOptions()), request, responseObserver);
+    }
+
+    /**
+     */
+    public void ztpDelete(ztp.Ztp.DeviceRole request,
+        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState> responseObserver) {
+      io.grpc.stub.ClientCalls.asyncUnaryCall(
+          getChannel().newCall(getZtpDeleteMethod(), getCallOptions()), request, responseObserver);
+    }
+
+    /**
+     */
+    public void ztpDeleteAll(context.ContextOuterClass.Empty request,
+        io.grpc.stub.StreamObserver<ztp.Ztp.DeviceDeletionResult> responseObserver) {
+      io.grpc.stub.ClientCalls.asyncUnaryCall(
+          getChannel().newCall(getZtpDeleteAllMethod(), getCallOptions()), request, responseObserver);
+    }
+  }
+
+  /**
+   */
+  public static final class ZtpServiceBlockingStub extends io.grpc.stub.AbstractBlockingStub<ZtpServiceBlockingStub> {
+    private ZtpServiceBlockingStub(
+        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected ZtpServiceBlockingStub build(
+        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+      return new ZtpServiceBlockingStub(channel, callOptions);
+    }
+
+    /**
+     */
+    public ztp.Ztp.DeviceRole ztpGetDeviceRole(ztp.Ztp.DeviceRoleId request) {
+      return io.grpc.stub.ClientCalls.blockingUnaryCall(
+          getChannel(), getZtpGetDeviceRoleMethod(), getCallOptions(), request);
+    }
+
+    /**
+     */
+    public ztp.Ztp.DeviceRoleList ztpGetDeviceRolesByDeviceId(context.ContextOuterClass.DeviceId request) {
+      return io.grpc.stub.ClientCalls.blockingUnaryCall(
+          getChannel(), getZtpGetDeviceRolesByDeviceIdMethod(), getCallOptions(), request);
+    }
+
+    /**
+     */
+    public ztp.Ztp.DeviceRoleState ztpAdd(ztp.Ztp.DeviceRole request) {
+      return io.grpc.stub.ClientCalls.blockingUnaryCall(
+          getChannel(), getZtpAddMethod(), getCallOptions(), request);
+    }
+
+    /**
+     */
+    public ztp.Ztp.DeviceRoleState ztpUpdate(ztp.Ztp.DeviceRoleConfig request) {
+      return io.grpc.stub.ClientCalls.blockingUnaryCall(
+          getChannel(), getZtpUpdateMethod(), getCallOptions(), request);
+    }
+
+    /**
+     */
+    public ztp.Ztp.DeviceRoleState ztpDelete(ztp.Ztp.DeviceRole request) {
+      return io.grpc.stub.ClientCalls.blockingUnaryCall(
+          getChannel(), getZtpDeleteMethod(), getCallOptions(), request);
+    }
+
+    /**
+     */
+    public ztp.Ztp.DeviceDeletionResult ztpDeleteAll(context.ContextOuterClass.Empty request) {
+      return io.grpc.stub.ClientCalls.blockingUnaryCall(
+          getChannel(), getZtpDeleteAllMethod(), getCallOptions(), request);
+    }
+  }
+
+  /**
+   */
+  public static final class ZtpServiceFutureStub extends io.grpc.stub.AbstractFutureStub<ZtpServiceFutureStub> {
+    private ZtpServiceFutureStub(
+        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected ZtpServiceFutureStub build(
+        io.grpc.Channel channel, io.grpc.CallOptions callOptions) {
+      return new ZtpServiceFutureStub(channel, callOptions);
+    }
+
+    /**
+     */
+    public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceRole> ztpGetDeviceRole(
+        ztp.Ztp.DeviceRoleId request) {
+      return io.grpc.stub.ClientCalls.futureUnaryCall(
+          getChannel().newCall(getZtpGetDeviceRoleMethod(), getCallOptions()), request);
+    }
+
+    /**
+     */
+    public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceRoleList> ztpGetDeviceRolesByDeviceId(
+        context.ContextOuterClass.DeviceId request) {
+      return io.grpc.stub.ClientCalls.futureUnaryCall(
+          getChannel().newCall(getZtpGetDeviceRolesByDeviceIdMethod(), getCallOptions()), request);
+    }
+
+    /**
+     */
+    public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceRoleState> ztpAdd(
+        ztp.Ztp.DeviceRole request) {
+      return io.grpc.stub.ClientCalls.futureUnaryCall(
+          getChannel().newCall(getZtpAddMethod(), getCallOptions()), request);
+    }
+
+    /**
+     */
+    public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceRoleState> ztpUpdate(
+        ztp.Ztp.DeviceRoleConfig request) {
+      return io.grpc.stub.ClientCalls.futureUnaryCall(
+          getChannel().newCall(getZtpUpdateMethod(), getCallOptions()), request);
+    }
+
+    /**
+     */
+    public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceRoleState> ztpDelete(
+        ztp.Ztp.DeviceRole request) {
+      return io.grpc.stub.ClientCalls.futureUnaryCall(
+          getChannel().newCall(getZtpDeleteMethod(), getCallOptions()), request);
+    }
+
+    /**
+     */
+    public com.google.common.util.concurrent.ListenableFuture<ztp.Ztp.DeviceDeletionResult> ztpDeleteAll(
+        context.ContextOuterClass.Empty request) {
+      return io.grpc.stub.ClientCalls.futureUnaryCall(
+          getChannel().newCall(getZtpDeleteAllMethod(), getCallOptions()), request);
+    }
+  }
+
+  private static final int METHODID_ZTP_GET_DEVICE_ROLE = 0;
+  private static final int METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID = 1;
+  private static final int METHODID_ZTP_ADD = 2;
+  private static final int METHODID_ZTP_UPDATE = 3;
+  private static final int METHODID_ZTP_DELETE = 4;
+  private static final int METHODID_ZTP_DELETE_ALL = 5;
+
+  private static final class MethodHandlers<Req, Resp> implements
+      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+    private final ZtpServiceImplBase serviceImpl;
+    private final int methodId;
+
+    MethodHandlers(ZtpServiceImplBase serviceImpl, int methodId) {
+      this.serviceImpl = serviceImpl;
+      this.methodId = methodId;
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        case METHODID_ZTP_GET_DEVICE_ROLE:
+          serviceImpl.ztpGetDeviceRole((ztp.Ztp.DeviceRoleId) request,
+              (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRole>) responseObserver);
+          break;
+        case METHODID_ZTP_GET_DEVICE_ROLES_BY_DEVICE_ID:
+          serviceImpl.ztpGetDeviceRolesByDeviceId((context.ContextOuterClass.DeviceId) request,
+              (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleList>) responseObserver);
+          break;
+        case METHODID_ZTP_ADD:
+          serviceImpl.ztpAdd((ztp.Ztp.DeviceRole) request,
+              (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver);
+          break;
+        case METHODID_ZTP_UPDATE:
+          serviceImpl.ztpUpdate((ztp.Ztp.DeviceRoleConfig) request,
+              (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver);
+          break;
+        case METHODID_ZTP_DELETE:
+          serviceImpl.ztpDelete((ztp.Ztp.DeviceRole) request,
+              (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceRoleState>) responseObserver);
+          break;
+        case METHODID_ZTP_DELETE_ALL:
+          serviceImpl.ztpDeleteAll((context.ContextOuterClass.Empty) request,
+              (io.grpc.stub.StreamObserver<ztp.Ztp.DeviceDeletionResult>) responseObserver);
+          break;
+        default:
+          throw new AssertionError();
+      }
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public io.grpc.stub.StreamObserver<Req> invoke(
+        io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        default:
+          throw new AssertionError();
+      }
+    }
+  }
+
+  private static abstract class ZtpServiceBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier {
+    ZtpServiceBaseDescriptorSupplier() {}
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() {
+      return ztp.Ztp.getDescriptor();
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() {
+      return getFileDescriptor().findServiceByName("ZtpService");
+    }
+  }
+
+  private static final class ZtpServiceFileDescriptorSupplier
+      extends ZtpServiceBaseDescriptorSupplier {
+    ZtpServiceFileDescriptorSupplier() {}
+  }
+
+  private static final class ZtpServiceMethodDescriptorSupplier
+      extends ZtpServiceBaseDescriptorSupplier
+      implements io.grpc.protobuf.ProtoMethodDescriptorSupplier {
+    private final String methodName;
+
+    ZtpServiceMethodDescriptorSupplier(String methodName) {
+      this.methodName = methodName;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() {
+      return getServiceDescriptor().findMethodByName(methodName);
+    }
+  }
+
+  private static volatile io.grpc.ServiceDescriptor serviceDescriptor;
+
+  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+    io.grpc.ServiceDescriptor result = serviceDescriptor;
+    if (result == null) {
+      synchronized (ZtpServiceGrpc.class) {
+        result = serviceDescriptor;
+        if (result == null) {
+          serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME)
+              .setSchemaDescriptor(new ZtpServiceFileDescriptorSupplier())
+              .addMethod(getZtpGetDeviceRoleMethod())
+              .addMethod(getZtpGetDeviceRolesByDeviceIdMethod())
+              .addMethod(getZtpAddMethod())
+              .addMethod(getZtpUpdateMethod())
+              .addMethod(getZtpDeleteMethod())
+              .addMethod(getZtpDeleteAllMethod())
+              .build();
+        }
+      }
+    }
+    return result;
+  }
+}
diff --git a/src/automation/target/kubernetes/kubernetes.yml b/src/ztp/target/kubernetes/kubernetes.yml
similarity index 58%
rename from src/automation/target/kubernetes/kubernetes.yml
rename to src/ztp/target/kubernetes/kubernetes.yml
index e0dc96c13..cc6745bbf 100644
--- a/src/automation/target/kubernetes/kubernetes.yml
+++ b/src/ztp/target/kubernetes/kubernetes.yml
@@ -1,74 +1,61 @@
-# 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: 8d0654b519e90fe0127e7d1419adce25fa3a179d
-    app.quarkus.io/build-timestamp: 2023-07-10 - 09:42:53 +0000
+    app.quarkus.io/commit-id: 17d40a0ca26855b14e5fc1828af157235dcd3ce1
+    app.quarkus.io/build-timestamp: 2023-11-08 - 11:12:54 +0000
     prometheus.io/scrape: "true"
     prometheus.io/path: /q/metrics
     prometheus.io/port: "8080"
     prometheus.io/scheme: http
   labels:
-    app.kubernetes.io/name: automationservice
-    app: automationservice
-  name: automationservice
+    app.kubernetes.io/name: ztpservice
+    app: ztpservice
+  name: ztpservice
 spec:
   ports:
-    - name: http
-      port: 9192
-      targetPort: 8080
     - name: grpc-server
       port: 5050
       targetPort: 5050
+    - name: http
+      port: 9192
+      targetPort: 8080
   selector:
-    app.kubernetes.io/name: automationservice
+    app.kubernetes.io/name: ztpservice
   type: ClusterIP
 ---
 apiVersion: apps/v1
 kind: Deployment
 metadata:
   annotations:
-    app.quarkus.io/commit-id: 8d0654b519e90fe0127e7d1419adce25fa3a179d
-    app.quarkus.io/build-timestamp: 2023-07-10 - 09:42:53 +0000
+    app.quarkus.io/commit-id: 17d40a0ca26855b14e5fc1828af157235dcd3ce1
+    app.quarkus.io/build-timestamp: 2023-11-08 - 11:12:54 +0000
     prometheus.io/scrape: "true"
     prometheus.io/path: /q/metrics
     prometheus.io/port: "8080"
     prometheus.io/scheme: http
   labels:
-    app: automationservice
-    app.kubernetes.io/name: automationservice
-  name: automationservice
+    app: ztpservice
+    app.kubernetes.io/name: ztpservice
+  name: ztpservice
 spec:
   replicas: 1
   selector:
     matchLabels:
-      app.kubernetes.io/name: automationservice
+      app.kubernetes.io/name: ztpservice
   template:
     metadata:
       annotations:
-        app.quarkus.io/commit-id: 8d0654b519e90fe0127e7d1419adce25fa3a179d
-        app.quarkus.io/build-timestamp: 2023-07-10 - 09:42:53 +0000
+        app.quarkus.io/commit-id: 17d40a0ca26855b14e5fc1828af157235dcd3ce1
+        app.quarkus.io/build-timestamp: 2023-11-08 - 11:12:54 +0000
         prometheus.io/scrape: "true"
         prometheus.io/path: /q/metrics
         prometheus.io/port: "8080"
         prometheus.io/scheme: http
       labels:
-        app: automationservice
-        app.kubernetes.io/name: automationservice
+        app: ztpservice
+        app.kubernetes.io/name: ztpservice
     spec:
       containers:
         - env:
@@ -76,11 +63,11 @@ spec:
               valueFrom:
                 fieldRef:
                   fieldPath: metadata.namespace
-            - name: DEVICE_SERVICE_HOST
-              value: deviceservice
             - name: CONTEXT_SERVICE_HOST
               value: contextservice
-          image: labs.etsi.org:5050/tfs/controller/automation:0.2.0
+            - name: DEVICE_SERVICE_HOST
+              value: deviceservice
+          image: labs.etsi.org:5050/tfs/controller/ztp:0.2.0
           imagePullPolicy: Always
           livenessProbe:
             failureThreshold: 3
@@ -92,14 +79,14 @@ spec:
             periodSeconds: 10
             successThreshold: 1
             timeoutSeconds: 10
-          name: automationservice
+          name: ztpservice
           ports:
-            - containerPort: 8080
-              name: http
-              protocol: TCP
             - containerPort: 5050
               name: grpc-server
               protocol: TCP
+            - containerPort: 8080
+              name: http
+              protocol: TCP
           readinessProbe:
             failureThreshold: 3
             httpGet:
diff --git a/src/automation/util/set_version.sh b/src/ztp/util/set_version.sh
similarity index 100%
rename from src/automation/util/set_version.sh
rename to src/ztp/util/set_version.sh
-- 
GitLab