diff --git a/mocks/mockAdapterProxy.go b/mocks/mockAdapterProxy.go
index 19b59de..817e675 100644
--- a/mocks/mockAdapterProxy.go
+++ b/mocks/mockAdapterProxy.go
@@ -22,7 +22,7 @@
 	"errors"
 
 	"github.com/golang/protobuf/proto"
-	"github.com/opencord/voltha-protos/v2/go/inter_container"
+	"github.com/opencord/voltha-protos/v3/go/inter_container"
 )
 
 // MockAdapterProxy mocks the AdapterProxy interface.
diff --git a/mocks/mockCoreProxy.go b/mocks/mockCoreProxy.go
index 24f60c8..2c3a81c 100644
--- a/mocks/mockCoreProxy.go
+++ b/mocks/mockCoreProxy.go
@@ -22,8 +22,8 @@
 	"errors"
 	"fmt"
 
-	"github.com/opencord/voltha-lib-go/v2/pkg/kafka"
-	"github.com/opencord/voltha-protos/v2/go/voltha"
+	"github.com/opencord/voltha-lib-go/v3/pkg/kafka"
+	"github.com/opencord/voltha-protos/v3/go/voltha"
 )
 
 // MockCoreProxy mocks the CoreProxy interface
@@ -82,7 +82,7 @@
 }
 
 // PortsStateUpdate implements mock PortsStateUpdate
-func (mcp *MockCoreProxy) PortsStateUpdate(ctx context.Context, deviceID string, operStatus voltha.OperStatus_OperStatus) error {
+func (mcp *MockCoreProxy) PortsStateUpdate(ctx context.Context, deviceID string, operStatus voltha.OperStatus_Types) error {
 	if deviceID == "" {
 		return errors.New("no Device")
 	}
@@ -99,7 +99,7 @@
 
 // DeviceStateUpdate implements mock DeviceStateUpdate
 func (mcp *MockCoreProxy) DeviceStateUpdate(ctx context.Context, deviceID string,
-	connStatus voltha.ConnectStatus_ConnectStatus, operStatus voltha.OperStatus_OperStatus) error {
+	connStatus voltha.ConnectStatus_Types, operStatus voltha.OperStatus_Types) error {
 	if deviceID == "" {
 		return errors.New("no Device id")
 	}
@@ -209,6 +209,6 @@
 
 // PortStateUpdate implements mock PortStateUpdate
 func (mcp *MockCoreProxy) PortStateUpdate(ctx context.Context, deviceID string, pType voltha.Port_PortType, portNo uint32,
-	operStatus voltha.OperStatus_OperStatus) error {
+	operStatus voltha.OperStatus_Types) error {
 	return nil
 }
diff --git a/mocks/mockEventproxy.go b/mocks/mockEventproxy.go
index 605bfdd..d2621ab 100644
--- a/mocks/mockEventproxy.go
+++ b/mocks/mockEventproxy.go
@@ -20,7 +20,7 @@
 import (
 	"errors"
 
-	"github.com/opencord/voltha-protos/v2/go/voltha"
+	"github.com/opencord/voltha-protos/v3/go/voltha"
 )
 
 // MockEventProxy for mocking EventProxyIntf
@@ -28,8 +28,8 @@
 }
 
 // SendDeviceEvent mocks the SendDeviceEvent function
-func (me *MockEventProxy) SendDeviceEvent(deviceEvent *voltha.DeviceEvent, category voltha.EventCategory_EventCategory,
-	subCategory voltha.EventSubCategory_EventSubCategory, raisedTs int64) error {
+func (me *MockEventProxy) SendDeviceEvent(deviceEvent *voltha.DeviceEvent, category voltha.EventCategory_Types,
+	subCategory voltha.EventSubCategory_Types, raisedTs int64) error {
 	if raisedTs == 0 {
 		return errors.New("raisedTS cannot be zero")
 	}
@@ -37,8 +37,8 @@
 }
 
 // SendKpiEvent mocks the SendKpiEvent function
-func (me *MockEventProxy) SendKpiEvent(id string, deviceEvent *voltha.KpiEvent2, category voltha.EventCategory_EventCategory,
-	subCategory voltha.EventSubCategory_EventSubCategory, raisedTs int64) error {
+func (me *MockEventProxy) SendKpiEvent(id string, deviceEvent *voltha.KpiEvent2, category voltha.EventCategory_Types,
+	subCategory voltha.EventSubCategory_Types, raisedTs int64) error {
 	if raisedTs == 0 {
 		return errors.New("raisedTS cannot be zero")
 	}
diff --git a/mocks/mockKVClient.go b/mocks/mockKVClient.go
index b6ba991..7d12cac 100644
--- a/mocks/mockKVClient.go
+++ b/mocks/mockKVClient.go
@@ -23,12 +23,12 @@
 	"strconv"
 	"strings"
 
-	"github.com/opencord/voltha-lib-go/v2/pkg/log"
+	"github.com/opencord/voltha-lib-go/v3/pkg/log"
 	"github.com/opencord/voltha-openolt-adapter/adaptercore/resourcemanager"
 
-	"github.com/opencord/voltha-lib-go/v2/pkg/db/kvstore"
-	ofp "github.com/opencord/voltha-protos/v2/go/openflow_13"
-	openolt "github.com/opencord/voltha-protos/v2/go/openolt"
+	"github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore"
+	ofp "github.com/opencord/voltha-protos/v3/go/openflow_13"
+	openolt "github.com/opencord/voltha-protos/v3/go/openolt"
 )
 
 const (
@@ -46,6 +46,10 @@
 	GemportIDs = "gemport_ids"
 	// AllocIDs to extract alloc_ids
 	AllocIDs = "alloc_ids"
+	//FlowGroup flow_groups/<flow_group_id>
+	FlowGroup = "flow_groups"
+	//FlowGroupCached flow_groups_cached/<flow_group_id>
+	FlowGroupCached = "flow_groups_cached"
 )
 
 // MockKVClient mocks the AdapterProxy interface.
@@ -131,6 +135,7 @@
 				{
 					Flow:            &openolt.Flow{FlowId: 1, OnuId: 1, UniId: 1, GemportId: 1},
 					FlowStoreCookie: uint64(48132224281636694),
+					LogicalFlowID:   1,
 				},
 			}
 			log.Debug("Error Error Error Key:", FlowIDs)
@@ -147,6 +152,16 @@
 			str, _ := json.Marshal(1)
 			return kvstore.NewKVPair(key, str, "mock", 3000, 1), nil
 		}
+		if strings.Contains(key, FlowGroup) || strings.Contains(key, FlowGroupCached) {
+			log.Debug("Error Error Error Key:", FlowGroup)
+			groupInfo := resourcemanager.GroupInfo{
+				GroupID:  2,
+				OutPorts: []uint32{1},
+			}
+			str, _ := json.Marshal(&groupInfo)
+			return kvstore.NewKVPair(key, str, "mock", 3000, 1), nil
+		}
+
 		maps := make(map[string]*kvstore.KVPair)
 		maps[key] = &kvstore.KVPair{Key: key}
 		return maps[key], nil
diff --git a/mocks/mockOpenOltClient.go b/mocks/mockOpenOltClient.go
index 00a9fd5..652f959 100644
--- a/mocks/mockOpenOltClient.go
+++ b/mocks/mockOpenOltClient.go
@@ -22,8 +22,8 @@
 	"errors"
 	"io"
 
-	openolt "github.com/opencord/voltha-protos/v2/go/openolt"
-	tech_profile "github.com/opencord/voltha-protos/v2/go/tech_profile"
+	openolt "github.com/opencord/voltha-protos/v3/go/openolt"
+	tech_profile "github.com/opencord/voltha-protos/v3/go/tech_profile"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/metadata"
 )
@@ -222,3 +222,8 @@
 func (mock *mockOpenoltEnableIndicationClient) RecvMsg(m interface{}) error {
 	return nil
 }
+
+// PerformGroupOperation mocks the PerformGroupOperation function of Openoltclient.
+func (ooc *MockOpenoltClient) PerformGroupOperation(ctx context.Context, in *openolt.Group, opts ...grpc.CallOption) (*openolt.Empty, error) {
+	return &openolt.Empty{}, nil
+}
diff --git a/mocks/mockTechprofile.go b/mocks/mockTechprofile.go
index 6fa3c39..e4edf2f 100644
--- a/mocks/mockTechprofile.go
+++ b/mocks/mockTechprofile.go
@@ -18,10 +18,10 @@
 package mocks
 
 import (
-	"github.com/opencord/voltha-lib-go/v2/pkg/db"
-	"github.com/opencord/voltha-lib-go/v2/pkg/log"
-	tp "github.com/opencord/voltha-lib-go/v2/pkg/techprofile"
-	tp_pb "github.com/opencord/voltha-protos/v2/go/tech_profile"
+	"github.com/opencord/voltha-lib-go/v3/pkg/db"
+	"github.com/opencord/voltha-lib-go/v3/pkg/log"
+	tp "github.com/opencord/voltha-lib-go/v3/pkg/techprofile"
+	tp_pb "github.com/opencord/voltha-protos/v3/go/tech_profile"
 )
 
 // MockTechProfile mock struct for OpenoltClient.
