diff --git a/internal/common/omci/get.go b/internal/common/omci/get.go
index 1f76a0d..f8680a8 100644
--- a/internal/common/omci/get.go
+++ b/internal/common/omci/get.go
@@ -49,13 +49,10 @@
 func CreateGetResponse(omciPkt gopacket.Packet, omciMsg *omci.OMCI, onuSn *openolt.SerialNumber, mds uint8,
 	activeImageEntityId uint16, committedImageEntityId uint16, standbyImageVersion string, activeImageVersion string,
 	committedImageVersion string, onuDown bool) ([]byte, error) {
-
 	msgObj, err := ParseGetRequest(omciPkt)
-
 	if err != nil {
 		return nil, err
 	}
-
 	omciLogger.WithFields(log.Fields{
 		"EntityClass":    msgObj.EntityClass,
 		"EntityInstance": msgObj.EntityInstance,
@@ -688,25 +685,26 @@
 	if meClass != me.EthernetFrameExtendedPmClassID {
 		callback = me.NewEthernetFrameExtendedPm64Bit
 	}
+	attr := me.AttributeValueMap{
+		"ManagedEntityId":        entityID,
+		"DropEvents":             100,
+		"Octets":                 101,
+		"Frames":                 102,
+		"BroadcastFrames":        103,
+		"MulticastFrames":        104,
+		"CrcErroredFrames":       105,
+		"UndersizeFrames":        106,
+		"OversizeFrames":         107,
+		"Frames64Octets":         108,
+		"Frames65To127Octets":    109,
+		"Frames128To255Octets":   110,
+		"Frames256To511Octets":   111,
+		"Frames512To1023Octets":  112,
+		"Frames1024To1518Octets": 113,
+	}
 	managedEntity, meErr := callback(me.ParamData{
-		EntityID: entityID,
-		Attributes: me.AttributeValueMap{
-			"ManagedEntityId":        entityID,
-			"DropEvents":             rand.Intn(100),
-			"Octets":                 rand.Intn(100),
-			"Frames":                 rand.Intn(100),
-			"BroadcastFrames":        rand.Intn(100),
-			"MulticastFrames":        rand.Intn(100),
-			"CrcErroredFrames":       rand.Intn(100),
-			"UndersizeFrames":        rand.Intn(100),
-			"OversizeFrames":         rand.Intn(100),
-			"Frames64Octets":         rand.Intn(100),
-			"Frames65To127Octets":    rand.Intn(100),
-			"Frames128To255Octets":   rand.Intn(100),
-			"Frames256To511Octets":   rand.Intn(100),
-			"Frames512To1023Octets":  rand.Intn(100),
-			"Frames1024To1518Octets": rand.Intn(100),
-		},
+		EntityID:   entityID,
+		Attributes: attr,
 	})
 
 	if meErr.GetError() != nil {
diff --git a/internal/common/omci/get_test.go b/internal/common/omci/get_test.go
index 7a9c21f..6fde0dc 100644
--- a/internal/common/omci/get_test.go
+++ b/internal/common/omci/get_test.go
@@ -75,7 +75,6 @@
 		VendorId:       []byte("BBSM"),
 		VendorSpecific: []byte{0, byte(1 % 256), byte(1), byte(1)},
 	}
-
 	tests := []struct {
 		name string
 		args getArgs
@@ -129,6 +128,22 @@
 			getArgs{createSoftwareImageResponse(1024, 1, 1, 1, "BBSM_IMG_00000", "BBSM_IMG_00001", "BBSM_IMG_00001"), 2},
 			getWant{2, map[string]interface{}{"ImageHash": ToOctets("BBSM_IMG_00001", 25)}},
 		},
+		{"getEthernetFrameExtendedPMDataResponse",
+			getArgs{createEthernetFrameExtendedPmGetResponse(me.EthernetFrameExtendedPmClassID, 16128, 10), 2},
+			getWant{2, map[string]interface{}{"ManagedEntityId": uint16(10),
+				"DropEvents":       uint32(100),
+				"Octets":           uint32(101),
+				"Frames":           uint32(102),
+				"BroadcastFrames":  uint32(103),
+				"MulticastFrames":  uint32(104),
+				"CrcErroredFrames": uint32(105)}},
+		},
+		{"getEthernetFrameExtendedPM64BitDataResponse",
+			getArgs{createEthernetFrameExtendedPmGetResponse(me.EthernetFrameExtendedPm64BitClassID, 3, 10), 2},
+			getWant{2, map[string]interface{}{"ManagedEntityId": uint16(10),
+				"Frames512To1023Octets":  uint64(112),
+				"Frames1024To1518Octets": uint64(113)}},
+		},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
@@ -151,7 +166,6 @@
 			// the myb_sync.handleOmciMessage is called and then
 			// myb_sync.handleOmciGetResponseMessage where we extract the GetResponse layer
 			getResponseLayer := omciToGetResponse(t, omciPkt)
-
 			assert.Equal(t, getResponseLayer.Result, me.Success)
 
 			for k, v := range tt.want.attributes {
