diff --git a/internal/pkg/common/interfaces.go b/internal/pkg/common/interfaces.go
index 25c8da7..e1cc2ec 100755
--- a/internal/pkg/common/interfaces.go
+++ b/internal/pkg/common/interfaces.go
@@ -132,6 +132,7 @@
 	GetPersSerialNumber() string
 	GetPersVendorID() string
 	GetPersEquipmentID() string
+	GetPersIsExtOmciSupported() bool
 
 	GetMibUploadFsmCommChan() chan Message
 	GetMibDownloadFsmCommChan() chan Message
diff --git a/internal/pkg/common/omci_cc.go b/internal/pkg/common/omci_cc.go
index ffe44ea..71c8116 100755
--- a/internal/pkg/common/omci_cc.go
+++ b/internal/pkg/common/omci_cc.go
@@ -880,13 +880,28 @@
 // SendMibUpload sends MibUploadRequest
 func (oo *OmciCC) SendMibUpload(ctx context.Context, timeout int, highPrio bool) error {
 	logger.Debugw(ctx, "send MibUpload-msg to:", log.Fields{"device-id": oo.deviceID})
+
+	tid := oo.GetNextTid(highPrio)
+	isExtended := oo.pOnuDeviceEntry.GetPersIsExtOmciSupported()
+
+	omciLayer := &omci.OMCI{
+		TransactionID: tid,
+		MessageType:   omci.MibUploadRequestType,
+	}
+	if isExtended {
+		omciLayer.DeviceIdentifier = omci.ExtendedIdent
+	}
 	request := &omci.MibUploadRequest{
 		MeBasePacket: omci.MeBasePacket{
 			EntityClass: me.OnuDataClassID,
+			Extended:    isExtended,
 		},
 	}
-	tid := oo.GetNextTid(highPrio)
-	pkt, err := Serialize(ctx, omci.MibUploadRequestType, request, tid)
+	var options gopacket.SerializeOptions
+	options.FixLengths = true
+
+	buffer := gopacket.NewSerializeBuffer()
+	err := gopacket.SerializeLayers(buffer, options, omciLayer, request)
 	if err != nil {
 		logger.Errorw(ctx, "Cannot serialize MibUploadRequest", log.Fields{
 			"Err": err, "device-id": oo.deviceID})
@@ -899,20 +914,35 @@
 		CbKey:   tid,
 		CbEntry: CallbackPairEntry{oo.pOnuDeviceEntry.GetMibUploadFsmCommChan(), oo.receiveOmciResponse, true},
 	}
-	return oo.Send(ctx, pkt, timeout, CDefaultRetries, highPrio, omciRxCallbackPair)
+	return oo.Send(ctx, buffer.Bytes(), timeout, CDefaultRetries, highPrio, omciRxCallbackPair)
 }
 
 // SendMibUploadNext sends MibUploadNextRequest
 func (oo *OmciCC) SendMibUploadNext(ctx context.Context, timeout int, highPrio bool) error {
 	logger.Debugw(ctx, "send MibUploadNext-msg to:", log.Fields{"device-id": oo.deviceID, "UploadSequNo": oo.UploadSequNo})
+
+	tid := oo.GetNextTid(highPrio)
+	isExtended := oo.pOnuDeviceEntry.GetPersIsExtOmciSupported()
+
+	omciLayer := &omci.OMCI{
+		TransactionID: tid,
+		MessageType:   omci.MibUploadNextRequestType,
+	}
+	if isExtended {
+		omciLayer.DeviceIdentifier = omci.ExtendedIdent
+	}
 	request := &omci.MibUploadNextRequest{
 		MeBasePacket: omci.MeBasePacket{
 			EntityClass: me.OnuDataClassID,
+			Extended:    isExtended,
 		},
 		CommandSequenceNumber: oo.UploadSequNo,
 	}
-	tid := oo.GetNextTid(highPrio)
-	pkt, err := Serialize(ctx, omci.MibUploadNextRequestType, request, tid)
+	var options gopacket.SerializeOptions
+	options.FixLengths = true
+
+	buffer := gopacket.NewSerializeBuffer()
+	err := gopacket.SerializeLayers(buffer, options, omciLayer, request)
 	if err != nil {
 		logger.Errorw(ctx, "Cannot serialize MibUploadNextRequest", log.Fields{
 			"Err": err, "device-id": oo.deviceID})
@@ -927,7 +957,7 @@
 		// compare also software upgrade download section handling
 		CbEntry: CallbackPairEntry{oo.pOnuDeviceEntry.GetMibUploadFsmCommChan(), oo.receiveOmciResponse, true},
 	}
-	return oo.Send(ctx, pkt, timeout, CDefaultRetries, highPrio, omciRxCallbackPair)
+	return oo.Send(ctx, buffer.Bytes(), timeout, CDefaultRetries, highPrio, omciRxCallbackPair)
 }
 
 // SendGetAllAlarm gets all alarm ME instances
