diff --git a/internal/pkg/mib/mib_sync.go b/internal/pkg/mib/mib_sync.go
index b5d1ff9..60eb72f 100755
--- a/internal/pkg/mib/mib_sync.go
+++ b/internal/pkg/mib/mib_sync.go
@@ -634,7 +634,6 @@
 
 func (oo *OnuDeviceEntry) handleOmciMibUploadNextResponseMessage(ctx context.Context, msg cmn.OmciMessage) {
 	msgLayer := (*msg.OmciPacket).Layer(omci.LayerTypeMibUploadNextResponse)
-
 	if msgLayer != nil {
 		msgObj, msgOk := msgLayer.(*omci.MibUploadNextResponse)
 		if !msgOk {
@@ -676,6 +675,38 @@
 			}
 			oo.pOnuDB.PutMe(ctx, meClassID, meEntityID, msgObj.ReportedME.GetAttributeValueMap())
 		}
+		if msg.OmciMsg.DeviceIdentifier == omci.ExtendedIdent {
+			for _, additionalME := range msgObj.AdditionalMEs {
+				meName := additionalME.GetName()
+				meClassID := additionalME.GetClassID()
+				meEntityID := additionalME.GetEntityID()
+				attributes := additionalME.GetAttributeValueMap()
+
+				if meName == devdb.CUnknownItuG988ManagedEntity || meName == devdb.CUnknownVendorSpecificManagedEntity {
+					attribMask := additionalME.GetAttributeMask()
+					logger.Debugw(ctx, "MibUploadNextResponse AdditionalData contains unknown ME", log.Fields{"device-id": oo.deviceID,
+						"Me-Name": devdb.UnknownMeOrAttribName(meName), "Me-ClassId": meClassID, "Me-InstId": meEntityID,
+						"unknown mask": attribMask})
+
+					attribValues := make([]byte, 0)
+					for key, value := range attributes {
+						if key != cmn.CGenericManagedEntityIDName {
+							data, err := me.InterfaceToOctets(value)
+							if err != nil {
+								logger.Infow(ctx, "MibUploadNextResponse unknown ME AdditionalData attrib - could not decode", log.Fields{"device-id": oo.deviceID, "key": key})
+							} else {
+								attribValues = append(attribValues[:], data[:]...)
+								logger.Debugw(ctx, "MibUploadNextResponse unknown ME AdditionalData attrib", log.Fields{"device-id": oo.deviceID, "attribValues": attribValues, "data": data, "key": key})
+							}
+						}
+					}
+					oo.pOnuDB.PutUnknownMeOrAttrib(ctx, devdb.UnknownMeOrAttribName(meName), meClassID, meEntityID, attribMask, attribValues)
+				} else {
+					logger.Debugw(ctx, "MibUploadNextResponse AdditionalData for:", log.Fields{"device-id": oo.deviceID, "meName": meName, "meEntityID": meEntityID, "attributes": attributes})
+					oo.pOnuDB.PutMe(ctx, meClassID, meEntityID, attributes)
+				}
+			}
+		}
 	} else {
 		logger.Errorw(ctx, "Omci Msg layer could not be detected", log.Fields{"device-id": oo.deviceID})
 		//as long as omci-lib does not support decoding of table attribute as 'unknown/unspecified' attribute
diff --git a/internal/pkg/mib/onu_device_entry.go b/internal/pkg/mib/onu_device_entry.go
index 51f1cd3..5dc3e50 100755
--- a/internal/pkg/mib/onu_device_entry.go
+++ b/internal/pkg/mib/onu_device_entry.go
@@ -940,6 +940,14 @@
 	return value
 }
 
+// GetPersIsExtOmciSupported - TODO: add comment
+func (oo *OnuDeviceEntry) GetPersIsExtOmciSupported() bool {
+	oo.MutexPersOnuConfig.RLock()
+	defer oo.MutexPersOnuConfig.RUnlock()
+	value := oo.SOnuPersistentData.PersIsExtOmciSupported
+	return value
+}
+
 // GetPersEquipmentID - TODO: add comment
 func (oo *OnuDeviceEntry) GetPersEquipmentID() string {
 	oo.MutexPersOnuConfig.RLock()
