diff --git a/VERSION b/VERSION
index bc80560..ec802c6 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.5.0
+1.5.1-dev
diff --git a/internal/bbsim/devices/onu.go b/internal/bbsim/devices/onu.go
index 822ec6b..36fbb3e 100644
--- a/internal/bbsim/devices/onu.go
+++ b/internal/bbsim/devices/onu.go
@@ -650,7 +650,7 @@
 	case omci.MibUploadNextRequestType:
 		responsePkt, _ = omcilib.CreateMibUploadNextResponse(omciPkt, omciMsg)
 	case omci.GetRequestType:
-		responsePkt, _ = omcilib.CreateGetResponse(omciPkt, omciMsg)
+		responsePkt, _ = omcilib.CreateGetResponse(omciPkt, omciMsg, o.SerialNumber)
 	case omci.SetRequestType:
 		responsePkt, _ = omcilib.CreateSetResponse(omciPkt, omciMsg)
 
@@ -721,7 +721,6 @@
 				}).Error("send-TestResult-indication-failed")
 			}
 		}
-
 	default:
 		log.WithFields(log.Fields{
 			"omciMsgType":  omciMsg.MessageType,
diff --git a/internal/common/omci/get.go b/internal/common/omci/get.go
index 64a7968..78aa98e 100644
--- a/internal/common/omci/get.go
+++ b/internal/common/omci/get.go
@@ -23,6 +23,7 @@
 	"github.com/google/gopacket"
 	"github.com/opencord/omci-lib-go"
 	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/voltha-protos/v4/go/openolt"
 	log "github.com/sirupsen/logrus"
 	"strconv"
 )
@@ -43,7 +44,7 @@
 	return msgObj, nil
 }
 
-func CreateGetResponse(omciPkt gopacket.Packet, omciMsg *omci.OMCI) ([]byte, error) {
+func CreateGetResponse(omciPkt gopacket.Packet, omciMsg *omci.OMCI, onuSn *openolt.SerialNumber) ([]byte, error) {
 
 	msgObj, err := ParseGetRequest(omciPkt)
 
@@ -62,7 +63,7 @@
 	case me.Onu2GClassID:
 		response = createOnu2gResponse(msgObj.AttributeMask, msgObj.EntityInstance)
 	case me.OnuGClassID:
-		response = createOnugResponse(msgObj.AttributeMask, msgObj.EntityInstance)
+		response = createOnugResponse(msgObj.AttributeMask, msgObj.EntityInstance, onuSn)
 	case me.SoftwareImageClassID:
 		response = createSoftwareImageResponse(msgObj.AttributeMask, msgObj.EntityInstance)
 	case me.IpHostConfigDataClassID:
@@ -139,17 +140,15 @@
 	}
 }
 
-func createOnugResponse(attributeMask uint16, entityID uint16) *omci.GetResponse {
-	return &omci.GetResponse{
-		MeBasePacket: omci.MeBasePacket{
-			EntityClass:    me.OnuGClassID,
-			EntityInstance: entityID,
-		},
+func createOnugResponse(attributeMask uint16, entityID uint16, onuSn *openolt.SerialNumber) *omci.GetResponse {
+
+	managedEntity, meErr := me.NewOnuG(me.ParamData{
+		EntityID: entityID,
 		Attributes: me.AttributeValueMap{
 			"ManagedEntityId":         entityID,
 			"VendorId":                toOctets("BBSM", 4),
 			"Version":                 toOctets("v0.0.1", 14),
-			"SerialNumber":            toOctets("QkJTTQAKAAE=", 8),
+			"SerialNumber":            append(onuSn.VendorId, onuSn.VendorSpecific...),
 			"TrafficManagementOption": 0,
 			"Deprecated":              0,
 			"BatteryBackup":           0,
@@ -161,9 +160,33 @@
 			"CredentialsStatus":       0,
 			"ExtendedTcLayerOptions":  0,
 		},
-		Result:        me.Success,
-		AttributeMask: attributeMask,
+	})
+
+	if meErr.GetError() != nil {
+		omciLogger.Errorf("NewOnu2G %v", meErr.Error())
+		return nil
 	}
+
+	return &omci.GetResponse{
+		MeBasePacket: omci.MeBasePacket{
+			EntityClass: me.OnuGClassID,
+		},
+		Attributes:    managedEntity.GetAttributeValueMap(),
+		AttributeMask: attributeMask,
+		Result:        me.Success,
+	}
+
+	//return &omci.GetResponse{
+	//	MeBasePacket: omci.MeBasePacket{
+	//		EntityClass:    me.OnuGClassID,
+	//		EntityInstance: entityID,
+	//	},
+	//	Attributes: me.AttributeValueMap{
+	//
+	//	},
+	//	Result:        me.Success,
+	//	AttributeMask: attributeMask,
+	//}
 }
 
 func createSoftwareImageResponse(attributeMask uint16, entityInstance uint16) *omci.GetResponse {
diff --git a/internal/common/omci/get_test.go b/internal/common/omci/get_test.go
index 0ab6d04..7ba494b 100644
--- a/internal/common/omci/get_test.go
+++ b/internal/common/omci/get_test.go
@@ -17,9 +17,12 @@
 package omci
 
 import (
+	"encoding/hex"
+	"fmt"
 	"github.com/google/gopacket"
 	"github.com/opencord/omci-lib-go"
 	me "github.com/opencord/omci-lib-go/generated"
+	"github.com/opencord/voltha-protos/v4/go/openolt"
 	"gotest.tools/assert"
 	"testing"
 )
@@ -73,7 +76,11 @@
 }
 
 func TestCreateOnugResponse(t *testing.T) {
-	response := createOnugResponse(40960, 1)
+	sn := &openolt.SerialNumber{
+		VendorId:       []byte("BBSM"),
+		VendorSpecific: []byte{0, byte(1 % 256), byte(1), byte(1)},
+	}
+	response := createOnugResponse(40960, 1, sn)
 	data, _ := serialize(omci.GetResponseType, response, 1)
 
 	omciMsg, omciPkt := omciBytesToMsg(t, data)
@@ -83,4 +90,9 @@
 	getResponseLayer := omciToGetResponse(t, omciPkt)
 
 	assert.Equal(t, getResponseLayer.Result, me.Success)
+	snBytes := (getResponseLayer.Attributes["SerialNumber"]).([]byte)
+	snVendorPart := fmt.Sprintf("%s", snBytes[:4])
+	snNumberPart := hex.EncodeToString(snBytes[4:])
+	serialNumber := snVendorPart + snNumberPart
+	assert.Equal(t, serialNumber, "BBSM00010101")
 }
