diff --git a/go/afrouter/afrouter.pb.go b/go/afrouter/afrouter.pb.go
index fa8a57d..ffe8dc3 100644
--- a/go/afrouter/afrouter.pb.go
+++ b/go/afrouter/afrouter.pb.go
@@ -7,7 +7,7 @@
 	context "context"
 	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
-	common "github.com/opencord/voltha-protos/v3/go/common"
+	_ "github.com/opencord/voltha-protos/v3/go/common"
 	grpc "google.golang.org/grpc"
 	math "math"
 )
@@ -325,37 +325,34 @@
 func init() { proto.RegisterFile("voltha_protos/afrouter.proto", fileDescriptor_be7e2f565b9e1c96) }
 
 var fileDescriptor_be7e2f565b9e1c96 = []byte{
-	// 472 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x53, 0x4b, 0x8f, 0xd3, 0x30,
-	0x10, 0xee, 0xbb, 0xdd, 0x81, 0x3e, 0x30, 0x08, 0x59, 0x11, 0xa0, 0x2a, 0xa7, 0x5e, 0x48, 0x11,
-	0x05, 0x71, 0xe1, 0x02, 0x11, 0xea, 0xa5, 0xa7, 0xac, 0xb8, 0x70, 0x41, 0xa9, 0xe3, 0x64, 0xad,
-	0x6d, 0x3d, 0x91, 0xed, 0x44, 0x5a, 0x89, 0x1f, 0xc4, 0xaf, 0xe0, 0xb7, 0x21, 0xdb, 0x49, 0xdb,
-	0xad, 0xe0, 0xf6, 0x3d, 0x66, 0xec, 0xf9, 0xfc, 0x80, 0x57, 0x35, 0x1e, 0xcc, 0x5d, 0xfa, 0xb3,
-	0x54, 0x68, 0x50, 0xaf, 0xd3, 0x5c, 0x61, 0x65, 0xb8, 0x8a, 0x1c, 0x27, 0x93, 0x96, 0x07, 0xc1,
-	0xe3, 0x3a, 0x86, 0xc7, 0x23, 0x4a, 0x5f, 0x15, 0xee, 0x60, 0x94, 0x70, 0x5d, 0x1d, 0x0c, 0xa1,
-	0x30, 0xd6, 0x15, 0x63, 0x5c, 0x6b, 0xda, 0x5d, 0x76, 0x57, 0x93, 0xa4, 0xa5, 0xe4, 0x05, 0x0c,
-	0xb9, 0x52, 0xa8, 0x68, 0x6f, 0xd9, 0x5d, 0xdd, 0x24, 0x9e, 0x10, 0x02, 0x03, 0x21, 0x73, 0xa4,
-	0x7d, 0x27, 0x3a, 0x1c, 0x8e, 0x61, 0xf8, 0xed, 0x58, 0x9a, 0x87, 0xf0, 0x35, 0x0c, 0x63, 0xac,
-	0xa4, 0xb1, 0xbd, 0xcc, 0x02, 0xb7, 0xe6, 0x34, 0xf1, 0x24, 0xfc, 0xd3, 0x85, 0x41, 0x8c, 0x52,
-	0x92, 0x97, 0x30, 0xd2, 0x5c, 0xd5, 0x5c, 0x39, 0xff, 0x26, 0x69, 0x18, 0x59, 0x40, 0xbf, 0xbc,
-	0x2f, 0x9a, 0x0d, 0x2d, 0xb4, 0x8a, 0xae, 0x59, 0xb3, 0x9b, 0x85, 0x76, 0x60, 0x76, 0xa8, 0xb4,
-	0xe1, 0x8a, 0x0e, 0x9c, 0xda, 0x52, 0xeb, 0xec, 0x53, 0x76, 0xcf, 0x65, 0x46, 0x87, 0xde, 0x69,
-	0x28, 0x79, 0x03, 0xc0, 0x50, 0x4a, 0xce, 0x8c, 0x40, 0x49, 0x47, 0xce, 0xbc, 0x50, 0x6c, 0xa8,
-	0x34, 0xcb, 0x14, 0x1d, 0xfb, 0x50, 0x16, 0x5b, 0xad, 0x44, 0x65, 0xe8, 0x64, 0xd9, 0x5d, 0x0d,
-	0x12, 0x87, 0xc3, 0x5f, 0x30, 0xf9, 0x92, 0xe7, 0x42, 0x0a, 0xf3, 0x60, 0x33, 0xf8, 0x83, 0x6e,
-	0x33, 0x78, 0x66, 0xa3, 0x3b, 0xd4, 0x1e, 0x9b, 0x23, 0x97, 0x53, 0xf7, 0xff, 0x3b, 0xf5, 0xe0,
-	0xf1, 0xd4, 0x33, 0xe8, 0x89, 0x36, 0x4a, 0x4f, 0x64, 0xef, 0x7f, 0xf7, 0x60, 0x1a, 0xa3, 0xcc,
-	0x45, 0x51, 0xa9, 0xd4, 0xcd, 0xbd, 0x81, 0xe9, 0x2d, 0x37, 0xf1, 0x39, 0xc8, 0x2c, 0x3a, 0x3d,
-	0x07, 0xab, 0x06, 0x8b, 0x33, 0xf7, 0xf7, 0x1d, 0x76, 0xc8, 0x47, 0x78, 0x72, 0xcb, 0xcd, 0x29,
-	0x07, 0x39, 0x97, 0xb4, 0xda, 0x3f, 0xdb, 0x3e, 0xc1, 0xb3, 0x2d, 0x37, 0x5b, 0xb4, 0xba, 0x90,
-	0xdc, 0xdf, 0xf3, 0xfc, 0x5c, 0xe8, 0x5e, 0x40, 0x30, 0xbf, 0x1c, 0xc0, 0xde, 0x79, 0x87, 0x7c,
-	0x80, 0xd9, 0xf7, 0x32, 0x4b, 0x0d, 0xdf, 0x61, 0xb1, 0xe3, 0x35, 0x3f, 0x90, 0x79, 0xd4, 0x3c,
-	0xc6, 0x1d, 0x16, 0x85, 0x90, 0x45, 0x70, 0xbd, 0x4c, 0xd8, 0x21, 0x9f, 0xe1, 0xe9, 0x96, 0x9b,
-	0xb6, 0x45, 0x13, 0x7a, 0xd5, 0x13, 0xe3, 0xb1, 0x44, 0xc9, 0xa5, 0x09, 0x16, 0x57, 0x8e, 0x0e,
-	0x3b, 0x5f, 0xb7, 0xf0, 0x1c, 0x55, 0x11, 0x61, 0xc9, 0x25, 0x43, 0x95, 0x45, 0xfe, 0x2b, 0xfc,
-	0x78, 0x57, 0x08, 0x73, 0x57, 0xed, 0x6d, 0xc3, 0xba, 0xf5, 0xd6, 0xde, 0x7b, 0xdb, 0x7c, 0x93,
-	0x7a, 0xb3, 0x2e, 0xf0, 0xf4, 0xa9, 0xf6, 0x23, 0x27, 0x6f, 0xfe, 0x06, 0x00, 0x00, 0xff, 0xff,
-	0xa9, 0x0c, 0xed, 0xe3, 0x75, 0x03, 0x00, 0x00,
+	// 420 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x52, 0x4d, 0x8f, 0xd3, 0x30,
+	0x10, 0xdd, 0xb4, 0xe9, 0xc7, 0x0e, 0xea, 0xee, 0x62, 0x10, 0xb2, 0x2a, 0x40, 0x55, 0x4e, 0xbd,
+	0x90, 0x22, 0x2a, 0xc4, 0x19, 0x2a, 0xd4, 0x0b, 0xa7, 0xec, 0x8d, 0x0b, 0x4a, 0x1d, 0x27, 0x6b,
+	0x6d, 0xe3, 0x89, 0x6c, 0x27, 0xd2, 0x4a, 0xfc, 0x2c, 0xce, 0xfc, 0x36, 0x64, 0x3b, 0x6e, 0x5a,
+	0x89, 0xbd, 0xbd, 0x8f, 0x49, 0xfc, 0x9e, 0x3d, 0xf0, 0xb6, 0xc3, 0xa3, 0x79, 0xc8, 0x7f, 0x35,
+	0x0a, 0x0d, 0xea, 0x4d, 0x5e, 0x2a, 0x6c, 0x0d, 0x57, 0xa9, 0xe3, 0x64, 0x1e, 0xf8, 0x72, 0x79,
+	0x39, 0xc7, 0xb0, 0xae, 0x51, 0xfa, 0xa9, 0xe4, 0x07, 0x4c, 0x33, 0xae, 0xdb, 0xa3, 0x21, 0x14,
+	0x66, 0xba, 0x65, 0x8c, 0x6b, 0x4d, 0xa3, 0x55, 0xb4, 0x9e, 0x67, 0x81, 0x92, 0xd7, 0x30, 0xe1,
+	0x4a, 0xa1, 0xa2, 0xa3, 0x55, 0xb4, 0xbe, 0xce, 0x3c, 0x21, 0x04, 0x62, 0x21, 0x4b, 0xa4, 0x63,
+	0x27, 0x3a, 0x9c, 0xcc, 0x60, 0xf2, 0xbd, 0x6e, 0xcc, 0x53, 0xf2, 0x0e, 0x26, 0x3b, 0x6c, 0xa5,
+	0xb1, 0xdf, 0x32, 0x0b, 0xdc, 0x3f, 0x17, 0x99, 0x27, 0xc9, 0xdf, 0x08, 0xe2, 0x1d, 0x4a, 0x49,
+	0xde, 0xc0, 0x54, 0x73, 0xd5, 0x71, 0xe5, 0xfc, 0xeb, 0xac, 0x67, 0xe4, 0x0e, 0xc6, 0xcd, 0x63,
+	0xd5, 0x1f, 0x68, 0xa1, 0x55, 0x74, 0xc7, 0xfa, 0xd3, 0x2c, 0xb4, 0x81, 0xd9, 0xb1, 0xd5, 0x86,
+	0x2b, 0x1a, 0x3b, 0x35, 0x50, 0xeb, 0x1c, 0x72, 0xf6, 0xc8, 0x65, 0x41, 0x27, 0xde, 0xe9, 0x29,
+	0x79, 0x0f, 0xc0, 0x50, 0x4a, 0xce, 0x8c, 0x40, 0x49, 0xa7, 0xce, 0x3c, 0x53, 0x6c, 0xa9, 0xbc,
+	0x28, 0x14, 0x9d, 0xf9, 0x52, 0x16, 0x5b, 0xad, 0x41, 0x65, 0xe8, 0x7c, 0x15, 0xad, 0xe3, 0xcc,
+	0xe1, 0xe4, 0x37, 0xcc, 0xbf, 0x96, 0xa5, 0x90, 0xc2, 0x3c, 0xd9, 0x0e, 0xfe, 0xa2, 0x43, 0x07,
+	0xcf, 0x6c, 0x75, 0x87, 0xc2, 0xb5, 0x39, 0x72, 0x9e, 0x7a, 0xfc, 0x6c, 0xea, 0xf8, 0x32, 0xf5,
+	0x0d, 0x8c, 0x44, 0xa8, 0x32, 0x12, 0xc5, 0xa7, 0x3f, 0x11, 0x2c, 0x76, 0x28, 0x4b, 0x51, 0xb5,
+	0x2a, 0x77, 0xb9, 0xb7, 0xb0, 0xb8, 0xe7, 0x66, 0x37, 0x14, 0xb9, 0x49, 0x4f, 0xeb, 0x60, 0xd5,
+	0xe5, 0xdd, 0xc0, 0xfd, 0x7b, 0x27, 0x57, 0xe4, 0x33, 0xbc, 0xb8, 0xe7, 0xe6, 0xd4, 0x83, 0x0c,
+	0x23, 0x41, 0xfb, 0xef, 0x67, 0x5f, 0xe0, 0xe5, 0x9e, 0x9b, 0x3d, 0x5a, 0x5d, 0x48, 0xee, 0xdf,
+	0xf9, 0x76, 0x18, 0x74, 0x1b, 0xb0, 0xbc, 0x3d, 0x0f, 0x60, 0xdf, 0xfc, 0xea, 0xdb, 0x1e, 0x5e,
+	0xa1, 0xaa, 0x52, 0x6c, 0xb8, 0x64, 0xa8, 0x8a, 0xd4, 0xaf, 0xe5, 0xcf, 0x8f, 0x95, 0x30, 0x0f,
+	0xed, 0x21, 0x65, 0x58, 0x6f, 0x82, 0xb7, 0xf1, 0xde, 0x87, 0x7e, 0x65, 0xbb, 0xed, 0xa6, 0xc2,
+	0xd3, 0x82, 0x1f, 0xa6, 0x4e, 0xde, 0xfe, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x5d, 0x28, 0xe9, 0x22,
+	0x01, 0x03, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -373,8 +370,6 @@
 	SetConnection(ctx context.Context, in *Conn, opts ...grpc.CallOption) (*Result, error)
 	SetAffinity(ctx context.Context, in *Affinity, opts ...grpc.CallOption) (*Result, error)
 	GetGoroutineCount(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Count, error)
-	UpdateLogLevel(ctx context.Context, in *common.Logging, opts ...grpc.CallOption) (*Empty, error)
-	GetLogLevels(ctx context.Context, in *common.LoggingComponent, opts ...grpc.CallOption) (*common.Loggings, error)
 }
 
 type configurationClient struct {
@@ -412,31 +407,11 @@
 	return out, nil
 }
 
-func (c *configurationClient) UpdateLogLevel(ctx context.Context, in *common.Logging, opts ...grpc.CallOption) (*Empty, error) {
-	out := new(Empty)
-	err := c.cc.Invoke(ctx, "/afrouter.Configuration/UpdateLogLevel", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *configurationClient) GetLogLevels(ctx context.Context, in *common.LoggingComponent, opts ...grpc.CallOption) (*common.Loggings, error) {
-	out := new(common.Loggings)
-	err := c.cc.Invoke(ctx, "/afrouter.Configuration/GetLogLevels", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
 // ConfigurationServer is the server API for Configuration service.
 type ConfigurationServer interface {
 	SetConnection(context.Context, *Conn) (*Result, error)
 	SetAffinity(context.Context, *Affinity) (*Result, error)
 	GetGoroutineCount(context.Context, *Empty) (*Count, error)
-	UpdateLogLevel(context.Context, *common.Logging) (*Empty, error)
-	GetLogLevels(context.Context, *common.LoggingComponent) (*common.Loggings, error)
 }
 
 func RegisterConfigurationServer(s *grpc.Server, srv ConfigurationServer) {
@@ -497,42 +472,6 @@
 	return interceptor(ctx, in, info, handler)
 }
 
-func _Configuration_UpdateLogLevel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.Logging)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(ConfigurationServer).UpdateLogLevel(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/afrouter.Configuration/UpdateLogLevel",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(ConfigurationServer).UpdateLogLevel(ctx, req.(*common.Logging))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _Configuration_GetLogLevels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.LoggingComponent)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(ConfigurationServer).GetLogLevels(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/afrouter.Configuration/GetLogLevels",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(ConfigurationServer).GetLogLevels(ctx, req.(*common.LoggingComponent))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
 var _Configuration_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "afrouter.Configuration",
 	HandlerType: (*ConfigurationServer)(nil),
@@ -549,14 +488,6 @@
 			MethodName: "GetGoroutineCount",
 			Handler:    _Configuration_GetGoroutineCount_Handler,
 		},
-		{
-			MethodName: "UpdateLogLevel",
-			Handler:    _Configuration_UpdateLogLevel_Handler,
-		},
-		{
-			MethodName: "GetLogLevels",
-			Handler:    _Configuration_GetLogLevels_Handler,
-		},
 	},
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "voltha_protos/afrouter.proto",
