diff --git a/pkg/grpc/client_test.go b/pkg/grpc/client_test.go
index d8ea31d..e06ad7b 100644
--- a/pkg/grpc/client_test.go
+++ b/pkg/grpc/client_test.go
@@ -28,7 +28,8 @@
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	"github.com/opencord/voltha-lib-go/v7/pkg/probe"
 	"github.com/opencord/voltha-protos/v5/go/common"
-	"github.com/opencord/voltha-protos/v5/go/core"
+	"github.com/opencord/voltha-protos/v5/go/core_service"
+	"github.com/opencord/voltha-protos/v5/go/health"
 	"github.com/opencord/voltha-protos/v5/go/voltha"
 	"github.com/phayes/freeport"
 	"github.com/stretchr/testify/assert"
@@ -71,7 +72,7 @@
 	s.server = NewGrpcServer(s.apiEndPoint, nil, false, s.probe)
 
 	s.server.AddService(func(server *grpc.Server) {
-		core.RegisterCoreServiceServer(server, &MockCoreServiceHandler{})
+		core_service.RegisterCoreServiceServer(server, &MockCoreServiceHandler{})
 	})
 }
 
@@ -143,8 +144,8 @@
 	if conn == nil {
 		return nil
 	}
-	svc := core.NewCoreServiceClient(conn)
-	if h, err := svc.GetHealthStatus(ctx, &empty.Empty{}); err != nil || h.State != voltha.HealthStatus_HEALTHY {
+	svc := core_service.NewCoreServiceClient(conn)
+	if h, err := svc.GetHealthStatus(ctx, &empty.Empty{}); err != nil || h.State != health.HealthStatus_HEALTHY {
 		return nil
 	}
 	return svc
@@ -154,8 +155,8 @@
 	if conn == nil {
 		return nil
 	}
-	svc := core.NewCoreServiceClient(conn)
-	if h, err := svc.GetHealthStatus(ctx, &empty.Empty{}); err != nil || h.State != voltha.HealthStatus_HEALTHY {
+	svc := core_service.NewCoreServiceClient(conn)
+	if h, err := svc.GetHealthStatus(ctx, &empty.Empty{}); err != nil || h.State != health.HealthStatus_HEALTHY {
 		return nil
 	}
 	testForNoActivityCh <- time.Now()
@@ -174,10 +175,10 @@
 	c.client.Start(probeCtx, handler)
 }
 
-func (c *testClient) getClient(t *testing.T) core.CoreServiceClient {
+func (c *testClient) getClient(t *testing.T) core_service.CoreServiceClient {
 	gc, err := c.client.GetClient()
 	assert.Nil(t, err)
-	coreClient, ok := gc.(core.CoreServiceClient)
+	coreClient, ok := gc.(core_service.CoreServiceClient)
 	assert.True(t, ok)
 	return coreClient
 }
