diff --git a/internal/pkg/almgr/alarm_manager.go b/internal/pkg/almgr/alarm_manager.go
index 91651fe..fa4bc9f 100755
--- a/internal/pkg/almgr/alarm_manager.go
+++ b/internal/pkg/almgr/alarm_manager.go
@@ -26,8 +26,8 @@
 	"time"
 
 	"github.com/looplab/fsm"
-	"github.com/opencord/omci-lib-go"
-	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/omci-lib-go/v2"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/opencord/voltha-lib-go/v7/pkg/events/eventif"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	cmn "github.com/opencord/voltha-openonu-adapter-go/internal/pkg/common"
diff --git a/internal/pkg/avcfg/omci_ani_config.go b/internal/pkg/avcfg/omci_ani_config.go
index d4c8082..34ed185 100755
--- a/internal/pkg/avcfg/omci_ani_config.go
+++ b/internal/pkg/avcfg/omci_ani_config.go
@@ -28,8 +28,8 @@
 
 	"github.com/cevaris/ordered_map"
 	"github.com/looplab/fsm"
-	"github.com/opencord/omci-lib-go"
-	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/omci-lib-go/v2"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 
 	//ic "github.com/opencord/voltha-protos/v5/go/inter_container"
diff --git a/internal/pkg/avcfg/omci_vlan_config.go b/internal/pkg/avcfg/omci_vlan_config.go
index 7d6dcfe..5613306 100755
--- a/internal/pkg/avcfg/omci_vlan_config.go
+++ b/internal/pkg/avcfg/omci_vlan_config.go
@@ -32,8 +32,8 @@
 
 	gp "github.com/google/gopacket"
 	"github.com/looplab/fsm"
-	"github.com/opencord/omci-lib-go"
-	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/omci-lib-go/v2"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	cmn "github.com/opencord/voltha-openonu-adapter-go/internal/pkg/common"
 	"github.com/opencord/voltha-openonu-adapter-go/internal/pkg/devdb"
diff --git a/internal/pkg/common/defines.go b/internal/pkg/common/defines.go
index d7ca0f5..270e6fe 100755
--- a/internal/pkg/common/defines.go
+++ b/internal/pkg/common/defines.go
@@ -23,7 +23,7 @@
 
 	gp "github.com/google/gopacket"
 	"github.com/looplab/fsm"
-	"github.com/opencord/omci-lib-go"
+	"github.com/opencord/omci-lib-go/v2"
 	vc "github.com/opencord/voltha-protos/v5/go/common"
 	"github.com/opencord/voltha-protos/v5/go/voltha"
 )
diff --git a/internal/pkg/common/omci_cc.go b/internal/pkg/common/omci_cc.go
index 9224d61..f591bc4 100755
--- a/internal/pkg/common/omci_cc.go
+++ b/internal/pkg/common/omci_cc.go
@@ -31,8 +31,9 @@
 	// TODO!!! Some references could be resolved auto, but some need specific context ....
 	gp "github.com/google/gopacket"
 
-	"github.com/opencord/omci-lib-go"
-	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/omci-lib-go/v2"
+	me "github.com/opencord/omci-lib-go/v2/generated"
+	oframe "github.com/opencord/omci-lib-go/v2/meframe"
 
 	vgrpc "github.com/opencord/voltha-lib-go/v7/pkg/grpc"
 
@@ -332,6 +333,18 @@
 		oo.printRxMessage(ctx, rxMsg)
 		return fmt.Errorf("could not decode omci layer %s", oo.deviceID)
 	}
+	// insert some check on detected OMCI decoding issues and log them
+	// e.g. should indicate problems when detecting some unknown attribute mask content (independent from message type)
+	//   even though allowed from omci-lib due to set relaxed decoding
+	// application may dig into further details if wanted/needed on their own [but info is not transferred from here so far]
+	//   (compare mib_sync.go unknownAttrLayer)
+	errLayer := packet.Layer(gopacket.LayerTypeDecodeFailure)
+	if failure, decodeOk := errLayer.(*gopacket.DecodeFailure); decodeOk {
+		errMsg := failure.Error()
+		logger.Warnw(ctx, "Detected decode issue on received OMCI frame", log.Fields{
+			"device-id": oo.deviceID, "issue": errMsg})
+	}
+	//anyway try continue OMCI decoding further on message type layer
 	omciMsg, ok := omciLayer.(*omci.OMCI)
 	if !ok {
 		logger.Errorw(ctx, "omci-message could not assign omci layer", log.Fields{"device-id": oo.deviceID})
@@ -340,6 +353,7 @@
 	}
 	logger.Debugw(ctx, "omci-message-decoded:", log.Fields{"omciMsgType": omciMsg.MessageType,
 		"transCorrId": strconv.FormatInt(int64(omciMsg.TransactionID), 16), "DeviceIdent": omciMsg.DeviceIdentifier})
+
 	// TestResult is asynchronous indication that carries the same TID as the TestResponse.
 	// We expect to find the TID in the oo.rxSchedulerMap
 	if byte(omciMsg.MessageType)&me.AK == 0 && omciMsg.MessageType != omci.TestResultType {
@@ -885,7 +899,7 @@
 	meInstance, omciErr := me.NewGalEthernetProfile(meParams)
 	if omciErr.GetError() == nil {
 		//all setByCreate parameters already set, no default option required ...
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode GalEnetProfileInstance for create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -934,7 +948,7 @@
 	}
 	meInstance, omciErr := me.NewOnu2G(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode ONU2-G instance for set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -988,8 +1002,8 @@
 	meInstance, omciErr := me.NewMacBridgeServiceProfile(meParams)
 	if omciErr.GetError() == nil {
 		//obviously we have to set all 'untouched' parameters to default by some additional option parameter!!
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType,
-			omci.TransactionID(tid), omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType,
+			oframe.TransactionID(tid), oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode MBSP for create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1046,8 +1060,8 @@
 	meInstance, omciErr := me.NewMacBridgePortConfigurationData(meParams)
 	if omciErr.GetError() == nil {
 		//obviously we have to set all 'untouched' parameters to default by some additional option parameter!!
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType,
-			omci.TransactionID(tid), omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType,
+			oframe.TransactionID(tid), oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode MBPCD for create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1100,12 +1114,14 @@
 		Attributes: me.AttributeValueMap{
 			"AssociationType":     assType,
 			"AssociatedMePointer": aPUniPort.EntityID,
+			//EnhancedMode not yet supported, used with default options
 		},
 	}
 	meInstance, omciErr := me.NewExtendedVlanTaggingOperationConfigurationData(meParams)
 	if omciErr.GetError() == nil {
 		//all setByCreate parameters already set, no default option required ...
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType,
+			oframe.TransactionID(tid), oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode EVTOCD for create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1151,7 +1167,7 @@
 	}
 	meInstance, omciErr := me.NewOnuG(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode ONU-G instance for set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1197,7 +1213,7 @@
 	}
 	meInstance, omciErr := me.NewPhysicalPathTerminationPointEthernetUni(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode PPTPEthUni instance for set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1244,7 +1260,7 @@
 	}
 	meInstance, omciErr := me.NewUniG(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx,"Cannot encode UNI-G instance for set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1291,7 +1307,7 @@
 	}
 	meInstance, omciErr := me.NewVirtualEthernetInterfacePoint(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode VEIP instance for set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1338,7 +1354,7 @@
 	meInstance, omciErr := me.LoadManagedEntityDefinition(classID, meParams)
 	if omciErr.GetError() == nil {
 		meClassIDName := meInstance.GetName()
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.GetRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.GetRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorf(ctx, "Cannot encode instance for get-request", log.Fields{"meClassIDName": meClassIDName, "Err": err, "device-id": oo.deviceID})
 			return nil, err
@@ -1423,8 +1439,8 @@
 	meInstance, omciErr := me.NewIeee8021PMapperServiceProfile(meParams)
 	if omciErr.GetError() == nil {
 		//we have to set all 'untouched' parameters to default by some additional option parameter!!
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType,
-			omci.TransactionID(tid), omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType,
+			oframe.TransactionID(tid), oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode .1pMapper for create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1467,8 +1483,8 @@
 	meInstance, omciErr := me.NewMacBridgePortConfigurationData(params[0])
 	if omciErr.GetError() == nil {
 		//obviously we have to set all 'untouched' parameters to default by some additional option parameter!!
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType,
-			omci.TransactionID(tid), omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType,
+			oframe.TransactionID(tid), oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode MBPCD for create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1511,8 +1527,8 @@
 	meInstance, omciErr := me.NewGemPortNetworkCtp(params[0])
 	if omciErr.GetError() == nil {
 		//obviously we have to set all 'untouched' parameters to default by some additional option parameter!!
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType,
-			omci.TransactionID(tid), omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType,
+			oframe.TransactionID(tid), oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode GemNCTP for create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1554,8 +1570,8 @@
 	meInstance, omciErr := me.NewGemPortNetworkCtp(params[0])
 	if omciErr.GetError() == nil {
 		//obviously we have to set all 'untouched' parameters to default by some additional option parameter!!
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType,
-			omci.TransactionID(tid), omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType,
+			oframe.TransactionID(tid), oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode GemNCTP for set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1598,8 +1614,8 @@
 	meInstance, omciErr := me.NewGemInterworkingTerminationPoint(params[0])
 	if omciErr.GetError() == nil {
 		//all SetByCreate Parameters (assumed to be) set here, for optimisation no 'AddDefaults'
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode GemIwTp for create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1641,7 +1657,7 @@
 
 	meInstance, omciErr := me.NewTCont(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode TCont for set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1683,7 +1699,7 @@
 
 	meInstance, omciErr := me.NewPriorityQueue(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode PrioQueue for set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1725,7 +1741,7 @@
 
 	meInstance, omciErr := me.NewIeee8021PMapperServiceProfile(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode 1PMapper for set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1768,8 +1784,8 @@
 	meInstance, omciErr := me.NewVlanTaggingFilterData(params[0])
 	if omciErr.GetError() == nil {
 		//all SetByCreate Parameters (assumed to be) set here, for optimisation no 'AddDefaults'
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode VTFD for create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1814,8 +1830,8 @@
 
 	meInstance, omciErr := me.NewVlanTaggingFilterData(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode VTFD for set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1860,7 +1876,9 @@
 
 	meInstance, omciErr := me.NewExtendedVlanTaggingOperationConfigurationData(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid))
+		//EnhancedMode not yet supported, used with default options
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType,
+			oframe.TransactionID(tid), oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode EVTOCD for create", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1902,7 +1920,7 @@
 
 	meInstance, omciErr := me.NewExtendedVlanTaggingOperationConfigurationData(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode EVTOCD for set", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1944,7 +1962,7 @@
 
 	meInstance, omciErr := me.NewExtendedVlanTaggingOperationConfigurationData(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode EVTOCD for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -1987,8 +2005,8 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewVlanTaggingFilterData(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode VTFD for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2031,7 +2049,7 @@
 		"InstId": strconv.FormatInt(int64(params[0].EntityID), 16)})
 	meInstance, omciErr := me.NewTrafficDescriptor(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode TD for create", log.Fields{"Err": err, "device-id": oo.deviceID})
 			return nil, err
@@ -2067,7 +2085,7 @@
 
 	meInstance, omciErr := me.NewTrafficDescriptor(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode TD for set", log.Fields{"Err": err, "device-id": oo.deviceID})
 			return nil, err
@@ -2105,7 +2123,7 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewTrafficDescriptor(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode TD for delete", log.Fields{"Err": err, "device-id": oo.deviceID})
 			return nil, err
@@ -2143,8 +2161,8 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewGemInterworkingTerminationPoint(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode GemIwTp for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2190,8 +2208,8 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewGemPortNetworkCtp(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode GemNCtp for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2237,8 +2255,8 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewIeee8021PMapperServiceProfile(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode .1pMapper for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2284,8 +2302,8 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewMacBridgePortConfigurationData(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode MBPCD for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2330,8 +2348,8 @@
 
 	meInstance, omciErr := me.NewMulticastGemInterworkingTerminationPoint(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode MulticastGEMIWTP for create", log.Fields{"Err": err, "device-id": oo.deviceID})
 			return nil, err
@@ -2369,8 +2387,8 @@
 
 	meInstance, omciErr := me.NewMulticastGemInterworkingTerminationPoint(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode MulticastGEMIWTP for set", log.Fields{"Err": err, "device-id": oo.deviceID})
 			return nil, err
@@ -2408,8 +2426,8 @@
 
 	meInstance, omciErr := me.NewMulticastOperationsProfile(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode MulticastOperationProfile for create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2450,8 +2468,8 @@
 
 	meInstance, omciErr := me.NewMulticastOperationsProfile(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode MulticastOperationProfile for create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2492,8 +2510,8 @@
 
 	meInstance, omciErr := me.NewMulticastSubscriberConfigInfo(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode MulticastSubConfigInfo for create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2534,8 +2552,8 @@
 
 	meInstance, omciErr := me.NewVoipVoiceCtp(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode VoipVoiceCTP for create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2576,8 +2594,8 @@
 
 	meInstance, omciErr := me.NewVoipVoiceCtp(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode VoipVoiceCTP for set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2619,8 +2637,8 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewVoipVoiceCtp(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode VoipVoiceCTP for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2665,8 +2683,8 @@
 
 	meInstance, omciErr := me.NewVoipMediaProfile(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode VoipMediaProfile for create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2707,8 +2725,8 @@
 
 	meInstance, omciErr := me.NewVoipMediaProfile(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode VoipMediaProfile for set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2750,8 +2768,8 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewVoipMediaProfile(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode VoipMediaProfile for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2793,8 +2811,8 @@
 
 	meInstance, omciErr := me.NewVoiceServiceProfile(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode VoiceServiceProfile for create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2835,8 +2853,8 @@
 
 	meInstance, omciErr := me.NewVoiceServiceProfile(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode VoiceServiceProfile for set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2878,8 +2896,8 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewVoiceServiceProfile(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode VoiceServiceProfile for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -2921,8 +2939,8 @@
 
 	meInstance, omciErr := me.NewSipUserData(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode SIPUserData for create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -2963,8 +2981,8 @@
 
 	meInstance, omciErr := me.NewSipUserData(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode SIPUserData for set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3006,8 +3024,8 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewSipUserData(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode SIPUserData for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -3049,8 +3067,8 @@
 
 	meInstance, omciErr := me.NewVoipApplicationServiceProfile(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode VoipApplicationServiceProfile for create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3091,8 +3109,8 @@
 
 	meInstance, omciErr := me.NewVoipApplicationServiceProfile(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode VoipApplicationServiceProfile for set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3134,8 +3152,8 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewVoipApplicationServiceProfile(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode SIPVoipApplicationServiceProfile for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -3177,8 +3195,8 @@
 
 	meInstance, omciErr := me.NewSipAgentConfigData(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode SIPAgentConfigData for create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3219,8 +3237,8 @@
 
 	meInstance, omciErr := me.NewSipAgentConfigData(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode SIPAgentConfigData for set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3262,8 +3280,8 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewSipAgentConfigData(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode SIPAgentConfigData for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -3305,8 +3323,8 @@
 
 	meInstance, omciErr := me.NewTcpUdpConfigData(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode TCPUDPConfigData for create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3347,8 +3365,8 @@
 
 	meInstance, omciErr := me.NewTcpUdpConfigData(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode TCPUDPConfigData for set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3390,8 +3408,8 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewTcpUdpConfigData(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode TCPUDPConfigData for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -3433,8 +3451,8 @@
 
 	meInstance, omciErr := me.NewIpHostConfigData(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode IPHostConfigData for create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3475,8 +3493,8 @@
 
 	meInstance, omciErr := me.NewIpHostConfigData(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode IPHostConfigData for set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3518,8 +3536,8 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewIpHostConfigData(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode IPHostConfigData for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -3561,8 +3579,8 @@
 
 	meInstance, omciErr := me.NewRtpProfileData(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode RTPProfileData for create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3603,8 +3621,8 @@
 
 	meInstance, omciErr := me.NewRtpProfileData(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode RTPProfileData for set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3646,8 +3664,8 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewRtpProfileData(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode RTPProfileData for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -3689,8 +3707,8 @@
 
 	meInstance, omciErr := me.NewNetworkDialPlanTable(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode NetworkDialPlanTable for create", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3731,8 +3749,8 @@
 
 	meInstance, omciErr := me.NewNetworkDialPlanTable(params[0])
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid),
-			omci.AddDefaults(true))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid),
+			oframe.AddDefaults(true))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode NetworkDialPlanTable for set", log.Fields{"Err": err,
 				"device-id": oo.deviceID})
@@ -3774,8 +3792,8 @@
 	meParams := me.ParamData{EntityID: aInstID}
 	meInstance, omciErr := me.NewNetworkDialPlanTable(meParams)
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.DeleteRequestType,
-			omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.DeleteRequestType,
+			oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode NetworkDialPlanTable for delete", log.Fields{
 				"Err": err, "device-id": oo.deviceID})
@@ -3872,11 +3890,11 @@
 		var msgLayer gopacket.SerializableLayer
 		var err error
 		if create {
-			omciLayer, msgLayer, err = omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-				omci.AddDefaults(true))
+			omciLayer, msgLayer, err = oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+				oframe.AddDefaults(true))
 		} else {
-			omciLayer, msgLayer, err = omci.EncodeFrame(meInstance, omci.DeleteRequestType, omci.TransactionID(tid),
-				omci.AddDefaults(true))
+			omciLayer, msgLayer, err = oframe.EncodeFrame(meInstance, omci.DeleteRequestType, oframe.TransactionID(tid),
+				oframe.AddDefaults(true))
 		}
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode ethernet frame performance monitoring history data ME",
@@ -3925,11 +3943,11 @@
 		var msgLayer gopacket.SerializableLayer
 		var err error
 		if create {
-			omciLayer, msgLayer, err = omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-				omci.AddDefaults(true))
+			omciLayer, msgLayer, err = oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+				oframe.AddDefaults(true))
 		} else {
-			omciLayer, msgLayer, err = omci.EncodeFrame(meInstance, omci.DeleteRequestType, omci.TransactionID(tid),
-				omci.AddDefaults(true))
+			omciLayer, msgLayer, err = oframe.EncodeFrame(meInstance, omci.DeleteRequestType, oframe.TransactionID(tid),
+				oframe.AddDefaults(true))
 		}
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode ethernet uni history data ME",
@@ -3978,11 +3996,11 @@
 		var msgLayer gopacket.SerializableLayer
 		var err error
 		if create {
-			omciLayer, msgLayer, err = omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-				omci.AddDefaults(true))
+			omciLayer, msgLayer, err = oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+				oframe.AddDefaults(true))
 		} else {
-			omciLayer, msgLayer, err = omci.EncodeFrame(meInstance, omci.DeleteRequestType, omci.TransactionID(tid),
-				omci.AddDefaults(true))
+			omciLayer, msgLayer, err = oframe.EncodeFrame(meInstance, omci.DeleteRequestType, oframe.TransactionID(tid),
+				oframe.AddDefaults(true))
 		}
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode fec history data ME",
@@ -4031,11 +4049,11 @@
 		var msgLayer gopacket.SerializableLayer
 		var err error
 		if create {
-			omciLayer, msgLayer, err = omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-				omci.AddDefaults(true))
+			omciLayer, msgLayer, err = oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+				oframe.AddDefaults(true))
 		} else {
-			omciLayer, msgLayer, err = omci.EncodeFrame(meInstance, omci.DeleteRequestType, omci.TransactionID(tid),
-				omci.AddDefaults(true))
+			omciLayer, msgLayer, err = oframe.EncodeFrame(meInstance, omci.DeleteRequestType, oframe.TransactionID(tid),
+				oframe.AddDefaults(true))
 		}
 		if err != nil {
 			logger.Errorw(ctx, "Cannot encode gemport history data ME",
@@ -4552,11 +4570,11 @@
 		var msgLayer gopacket.SerializableLayer
 		var err error
 		if create {
-			omciLayer, msgLayer, err = omci.EncodeFrame(meInstance, omci.CreateRequestType, omci.TransactionID(tid),
-				omci.AddDefaults(true))
+			omciLayer, msgLayer, err = oframe.EncodeFrame(meInstance, omci.CreateRequestType, oframe.TransactionID(tid),
+				oframe.AddDefaults(true))
 		} else {
-			omciLayer, msgLayer, err = omci.EncodeFrame(meInstance, omci.DeleteRequestType, omci.TransactionID(tid),
-				omci.AddDefaults(true))
+			omciLayer, msgLayer, err = oframe.EncodeFrame(meInstance, omci.DeleteRequestType, oframe.TransactionID(tid),
+				oframe.AddDefaults(true))
 		}
 		if err != nil {
 			logger.Errorw(ctx, "cannot-encode-ethernet-frame-extended-pm-me",
@@ -4629,7 +4647,7 @@
 	}
 
 	if omciErr.GetError() == nil {
-		omciLayer, msgLayer, err := omci.EncodeFrame(meInstance, omci.SetRequestType, omci.TransactionID(tid))
+		omciLayer, msgLayer, err := oframe.EncodeFrame(meInstance, omci.SetRequestType, oframe.TransactionID(tid))
 		if err != nil {
 			logger.Errorw(ctx, "cannot-encode-ethernet-frame-extended-pm-me",
 				log.Fields{"err": err, "device-id": oo.deviceID, "inst-id": strconv.FormatInt(int64(entityID), 16)})
diff --git a/internal/pkg/common/utils.go b/internal/pkg/common/utils.go
index 6e28976..e8a161c 100755
--- a/internal/pkg/common/utils.go
+++ b/internal/pkg/common/utils.go
@@ -29,7 +29,7 @@
 	"strings"
 
 	"github.com/looplab/fsm"
-	me "github.com/opencord/omci-lib-go/generated"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 )
 
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index f2cd542..f875553 100755
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -29,7 +29,7 @@
 
 	"github.com/gogo/protobuf/proto"
 	"github.com/looplab/fsm"
-	me "github.com/opencord/omci-lib-go/generated"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/opencord/voltha-lib-go/v7/pkg/db"
 	"github.com/opencord/voltha-lib-go/v7/pkg/events/eventif"
 	flow "github.com/opencord/voltha-lib-go/v7/pkg/flows"
diff --git a/internal/pkg/devdb/onu_device_db.go b/internal/pkg/devdb/onu_device_db.go
index 1bee2ec..008c37c 100755
--- a/internal/pkg/devdb/onu_device_db.go
+++ b/internal/pkg/devdb/onu_device_db.go
@@ -24,7 +24,7 @@
 	"sort"
 	"sync"
 
-	me "github.com/opencord/omci-lib-go/generated"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 )
 
diff --git a/internal/pkg/mib/mib_download.go b/internal/pkg/mib/mib_download.go
index 9c49f9b..691ec1b 100755
--- a/internal/pkg/mib/mib_download.go
+++ b/internal/pkg/mib/mib_download.go
@@ -24,8 +24,8 @@
 
 	"github.com/looplab/fsm"
 
-	"github.com/opencord/omci-lib-go"
-	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/omci-lib-go/v2"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	//ic "github.com/opencord/voltha-protos/v5/go/inter_container"
 	//"github.com/opencord/voltha-protos/v5/go/openflow_13"
diff --git a/internal/pkg/mib/mib_sync.go b/internal/pkg/mib/mib_sync.go
index a26422d..d3b3543 100755
--- a/internal/pkg/mib/mib_sync.go
+++ b/internal/pkg/mib/mib_sync.go
@@ -30,8 +30,8 @@
 
 	"time"
 
-	"github.com/opencord/omci-lib-go"
-	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/omci-lib-go/v2"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	cmn "github.com/opencord/voltha-openonu-adapter-go/internal/pkg/common"
@@ -551,6 +551,28 @@
 		meClassID := msgObj.ReportedME.GetClassID()
 		meEntityID := msgObj.ReportedME.GetEntityID()
 		meAttributes := msgObj.ReportedME.GetAttributeValueMap()
+
+		//with relaxed decoding set in the OMCI-LIB we have the chance to detect if there are some unknown attributes appended which we cannot decode
+		if unknownAttrLayer := (*msg.OmciPacket).Layer(omci.LayerTypeUnknownAttributes); unknownAttrLayer != nil {
+			logger.Warnw(ctx, "MibUploadNextResponse contains unknown attributes", log.Fields{"device-id": oo.deviceID})
+			if unknownAttributes, ok := unknownAttrLayer.(*omci.UnknownAttributes); ok {
+				// provide a loop over several ME's here already in preparation of OMCI extended message format
+				for _, unknown := range unknownAttributes.Attributes {
+					unknownAttrClassID := unknown.EntityClass // ClassID
+					unknownAttrInst := unknown.EntityInstance // uint16
+					unknownAttrMask := unknown.AttributeMask  // ui
+					unknownAttrBlob := unknown.AttributeData  // []byte
+					logger.Warnw(ctx, "unknown attributes detected for", log.Fields{"device-id": oo.deviceID,
+						"Me-ClassId": unknownAttrClassID, "Me-InstId": unknownAttrInst, "unknown mask": unknownAttrMask,
+						"unknown attributes": unknownAttrBlob})
+					//TODO!!! We have to find a way to put this extra information into the (MIB)DB, see below pOnuDB.PutMe
+					//  this probably requires an (add-on) extension in the DB, that should not harm any other (get) processing -> later as a second step
+				} // for all included ME's with unknown attributes
+			} else {
+				logger.Errorw(ctx, "unknownAttrLayer could not be decoded", log.Fields{"device-id": oo.deviceID})
+			}
+		}
+
 		oo.pOnuDB.PutMe(ctx, meClassID, meEntityID, meAttributes)
 	}
 	if oo.PDevOmciCC.UploadSequNo < oo.PDevOmciCC.UploadNoOfCmds {
diff --git a/internal/pkg/mib/onu_device_entry.go b/internal/pkg/mib/onu_device_entry.go
index ebf8de8..c35377f 100755
--- a/internal/pkg/mib/onu_device_entry.go
+++ b/internal/pkg/mib/onu_device_entry.go
@@ -26,8 +26,8 @@
 	"time"
 
 	"github.com/looplab/fsm"
-	"github.com/opencord/omci-lib-go"
-	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/omci-lib-go/v2"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/opencord/voltha-lib-go/v7/pkg/db"
 	"github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore"
 	vgrpc "github.com/opencord/voltha-lib-go/v7/pkg/grpc"
diff --git a/internal/pkg/omcitst/omci_self_test_handler.go b/internal/pkg/omcitst/omci_self_test_handler.go
index 5809228..93b32ce 100755
--- a/internal/pkg/omcitst/omci_self_test_handler.go
+++ b/internal/pkg/omcitst/omci_self_test_handler.go
@@ -24,9 +24,9 @@
 	"time"
 
 	"github.com/looplab/fsm"
-	"github.com/opencord/omci-lib-go"
-	"github.com/opencord/omci-lib-go/generated"
-	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/omci-lib-go/v2"
+	"github.com/opencord/omci-lib-go/v2/generated"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	cmn "github.com/opencord/voltha-openonu-adapter-go/internal/pkg/common"
 	"github.com/opencord/voltha-protos/v5/go/extension"
diff --git a/internal/pkg/omcitst/omci_test_request.go b/internal/pkg/omcitst/omci_test_request.go
index 33db828..9f802a4 100755
--- a/internal/pkg/omcitst/omci_test_request.go
+++ b/internal/pkg/omcitst/omci_test_request.go
@@ -22,8 +22,8 @@
 	"fmt"
 
 	gp "github.com/google/gopacket"
-	"github.com/opencord/omci-lib-go"
-	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/omci-lib-go/v2"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	cmn "github.com/opencord/voltha-openonu-adapter-go/internal/pkg/common"
 
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
diff --git a/internal/pkg/pmmgr/onu_metrics_manager.go b/internal/pkg/pmmgr/onu_metrics_manager.go
index ce258de..a71beed 100755
--- a/internal/pkg/pmmgr/onu_metrics_manager.go
+++ b/internal/pkg/pmmgr/onu_metrics_manager.go
@@ -26,8 +26,8 @@
 	"time"
 
 	"github.com/looplab/fsm"
-	"github.com/opencord/omci-lib-go"
-	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/omci-lib-go/v2"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/opencord/voltha-lib-go/v7/pkg/db"
 	"github.com/opencord/voltha-lib-go/v7/pkg/db/kvstore"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
diff --git a/internal/pkg/swupg/omci_onu_upgrade.go b/internal/pkg/swupg/omci_onu_upgrade.go
index 668e7b1..140c6f9 100755
--- a/internal/pkg/swupg/omci_onu_upgrade.go
+++ b/internal/pkg/swupg/omci_onu_upgrade.go
@@ -27,8 +27,8 @@
 
 	"github.com/boguslaw-wojcik/crc32a"
 	"github.com/looplab/fsm"
-	"github.com/opencord/omci-lib-go"
-	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/omci-lib-go/v2"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	cmn "github.com/opencord/voltha-openonu-adapter-go/internal/pkg/common"
 	"github.com/opencord/voltha-openonu-adapter-go/internal/pkg/devdb"
diff --git a/internal/pkg/swupg/onu_image_status.go b/internal/pkg/swupg/onu_image_status.go
index 4e1215f..bb2d820 100755
--- a/internal/pkg/swupg/onu_image_status.go
+++ b/internal/pkg/swupg/onu_image_status.go
@@ -24,8 +24,8 @@
 	"sync"
 	"time"
 
-	"github.com/opencord/omci-lib-go"
-	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/omci-lib-go/v2"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	cmn "github.com/opencord/voltha-openonu-adapter-go/internal/pkg/common"
 	"github.com/opencord/voltha-protos/v5/go/voltha"
diff --git a/internal/pkg/uniprt/uniportadmin.go b/internal/pkg/uniprt/uniportadmin.go
index 60f210e..0706fba 100755
--- a/internal/pkg/uniprt/uniportadmin.go
+++ b/internal/pkg/uniprt/uniportadmin.go
@@ -25,8 +25,8 @@
 
 	"github.com/looplab/fsm"
 
-	"github.com/opencord/omci-lib-go"
-	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/omci-lib-go/v2"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	cmn "github.com/opencord/voltha-openonu-adapter-go/internal/pkg/common"
 )
diff --git a/internal/pkg/uniprt/uniportstatus.go b/internal/pkg/uniprt/uniportstatus.go
index 8f8dedd..b088d41 100755
--- a/internal/pkg/uniprt/uniportstatus.go
+++ b/internal/pkg/uniprt/uniportstatus.go
@@ -21,8 +21,8 @@
 	"context"
 	"time"
 
-	"github.com/opencord/omci-lib-go"
-	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/omci-lib-go/v2"
+	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	cmn "github.com/opencord/voltha-openonu-adapter-go/internal/pkg/common"
 	"github.com/opencord/voltha-protos/v5/go/extension"
