diff --git a/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionService.java b/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionService.java
index 744941f..e697a7a 100644
--- a/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionService.java
+++ b/incubator/protobuf/services/nb/src/main/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionService.java
@@ -15,11 +15,9 @@
 */
 
 package org.onosproject.incubator.protobuf.services.nb;
-import org.onosproject.incubator.protobuf.models.net.RegionProtoTranslator;
 
 import com.google.common.annotations.Beta;
-import io.grpc.Server;
-import io.grpc.ServerBuilder;
+import io.grpc.BindableService;
 import io.grpc.stub.StreamObserver;
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
@@ -27,28 +25,22 @@
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onosproject.grpc.nb.net.region.RegionServiceGrpc.RegionServiceImplBase;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.region.RegionId;
-import org.onosproject.net.region.Region;
-import org.onosproject.net.region.RegionService;
-
-
-import java.io.IOException;
-
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionsRequest;
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionsReply;
-
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionRequest;
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionReply;
-
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionForDeviceRequest;
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionForDeviceReply;
-
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionDevicesRequest;
 import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionDevicesReply;
-
-import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionHostsRequest;
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionDevicesRequest;
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionForDeviceReply;
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionForDeviceRequest;
 import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionHostsReply;
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionHostsRequest;
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionReply;
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionRequest;
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionsReply;
+import org.onosproject.grpc.nb.net.region.RegionServiceNb.getRegionsRequest;
+import org.onosproject.incubator.protobuf.models.net.RegionProtoTranslator;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.region.Region;
+import org.onosproject.net.region.RegionId;
+import org.onosproject.net.region.RegionService;
+import org.onosproject.protobuf.api.GrpcServiceRegistry;
 import org.slf4j.Logger;
 
 import static org.slf4j.LoggerFactory.getLogger;
@@ -60,30 +52,44 @@
 @Component(immediate = true)
 public class GrpcNbRegionService {
 
-    private Server server;
     private final Logger log = getLogger(getClass());
-    private RegionServiceNBServerInternal innerClassInstance = null;
+
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    protected GrpcServiceRegistry registry;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected RegionService regionService;
 
+    private RegionServiceNbServerInternal innerClassInstance = null;
+
     @Activate
     public void activate() {
-        server = ServerBuilder.forPort(64000).addService(new RegionServiceNBServerInternal()).build();
-        try {
-            server.start();
-        } catch (IOException e) {
-            log.error("Failed to start server", e);
-            throw new RuntimeException("Failed to start server", e);
-        }
+
+        registry.register(getInnerClassInstance());
+        log.info("Started.");
     }
 
     @Deactivate
     public void deactivate() {
-        server.shutdown();
+
+        registry.unregister(getInnerClassInstance());
+        log.info("Stopped.");
     }
 
-    public class RegionServiceNBServerInternal extends RegionServiceImplBase {
+    /**
+     * Register Region Service, used for unit testing purposes.
+     *
+     * @return An instance of binding Region service
+     */
+    public InProcessServer<BindableService> registerInProcessServer() {
+        InProcessServer<BindableService> inprocessServer =
+                new InProcessServer(GrpcNbRegionService.RegionServiceNbServerInternal.class);
+        inprocessServer.addServiceToBind(getInnerClassInstance());
+
+        return inprocessServer;
+    }
+
+    private final class RegionServiceNbServerInternal extends RegionServiceImplBase {
         /**
          * Service for interacting with inventory of network control regions.
          */
@@ -153,9 +159,9 @@
         }
     }
 
-    public RegionServiceNBServerInternal getInnerClassInstance() {
+    private RegionServiceNbServerInternal getInnerClassInstance() {
         if (innerClassInstance == null) {
-            innerClassInstance = new RegionServiceNBServerInternal();
+            innerClassInstance = new RegionServiceNbServerInternal();
         }
         return innerClassInstance;
     }
diff --git a/incubator/protobuf/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionServiceTest.java b/incubator/protobuf/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionServiceTest.java
index 7b93d8e..7e03dce 100644
--- a/incubator/protobuf/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionServiceTest.java
+++ b/incubator/protobuf/services/nb/src/test/java/org/onosproject/incubator/protobuf/services/nb/GrpcNbRegionServiceTest.java
@@ -16,29 +16,29 @@
 
 package org.onosproject.incubator.protobuf.services.nb;
 
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.ImmutableList;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.onosproject.cluster.NodeId;
-import org.onosproject.grpc.net.models.RegionProtoOuterClass;
-
-import static org.junit.Assert.assertTrue;
-import static org.onosproject.cluster.NodeId.nodeId;
-import static org.onosproject.net.DeviceId.deviceId;
-import static org.onosproject.net.HostId.hostId;
-
+import com.google.common.collect.ImmutableSet;
+import io.grpc.BindableService;
 import io.grpc.ManagedChannel;
 import io.grpc.inprocess.InProcessChannelBuilder;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onosproject.cluster.NodeId;
+import org.onosproject.grpc.nb.net.region.RegionServiceGrpc;
+import org.onosproject.grpc.nb.net.region.RegionServiceGrpc.RegionServiceBlockingStub;
+import org.onosproject.grpc.nb.net.region.RegionServiceNb;
+import org.onosproject.grpc.net.models.RegionProtoOuterClass;
+import org.onosproject.incubator.protobuf.models.net.RegionProtoTranslator;
 import org.onosproject.net.DefaultAnnotations;
-
 import org.onosproject.net.DefaultDevice;
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
-
 import org.onosproject.net.HostId;
 import org.onosproject.net.provider.ProviderId;
 import org.onosproject.net.region.DefaultRegion;
+import org.onosproject.net.region.Region;
+import org.onosproject.net.region.RegionId;
 import org.onosproject.net.region.RegionListener;
 import org.onosproject.net.region.RegionService;
 
@@ -50,20 +50,16 @@
 import java.util.Map;
 import java.util.Set;
 
-import org.junit.Test;
-
-import org.onosproject.incubator.protobuf.models.net.RegionProtoTranslator;
-import org.onosproject.grpc.nb.net.region.RegionServiceGrpc;
-import org.onosproject.grpc.nb.net.region.RegionServiceGrpc.RegionServiceBlockingStub;
-import org.onosproject.grpc.nb.net.region.RegionServiceNb;
-import org.onosproject.incubator.protobuf.services.nb.GrpcNbRegionService.RegionServiceNBServerInternal;
-import org.onosproject.net.region.Region;
-import org.onosproject.net.region.RegionId;
+import static org.junit.Assert.assertTrue;
+import static org.onosproject.cluster.NodeId.nodeId;
+import static org.onosproject.net.DeviceId.deviceId;
+import static org.onosproject.net.HostId.hostId;
 
 public class GrpcNbRegionServiceTest {
-    private static InProcessServer<GrpcNbRegionService.RegionServiceNBServerInternal> inprocessServer;
-    private static ManagedChannel channel;
+
+    private static InProcessServer<BindableService> inprocessServer;
     private static RegionServiceBlockingStub blockingStub;
+    private static ManagedChannel channel;
 
     private static final String C1 = "C1";
     private static final String C2 = "C2";
@@ -287,14 +283,11 @@
 
     @BeforeClass
     public static void beforeClass() throws InstantiationException, IllegalAccessException, IOException {
-        inprocessServer = new InProcessServer<RegionServiceNBServerInternal>(RegionServiceNBServerInternal.class);
-
-        GrpcNbRegionService outer = new GrpcNbRegionService();
-        GrpcNbRegionService.RegionServiceNBServerInternal inner = outer.getInnerClassInstance();
-        outer.regionService = MOCK_REGION;
-        inprocessServer.addServiceToBind(inner);
-
+        GrpcNbRegionService regionService = new GrpcNbRegionService();
+        regionService.regionService = MOCK_REGION;
+        inprocessServer = regionService.registerInProcessServer();
         inprocessServer.start();
+
         channel = InProcessChannelBuilder.forName("test").directExecutor()
                 // Channels are secure by default (via SSL/TLS). For the example we disable TLS to avoid
                 // needing certificates.
