diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index d6cb1e6..ff3aac8 100644
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -764,7 +764,6 @@
 
 func startCollector(dh *DeviceHandler) {
 	logger.Debugf("starting-collector")
-	context := make(map[string]string)
 	freq := dh.metrics.ToPmConfigs().DefaultFreq
 	for {
 		select {
@@ -772,18 +771,16 @@
 			logger.Debugw("stopping-collector-for-olt", log.Fields{"deviceID:": dh.device.Id})
 			return
 		case <-time.After(time.Duration(freq) * time.Second):
-			context["oltid"] = dh.device.Id
-			context["devicetype"] = dh.device.Type
+
 			ports := make([]*voltha.Port, len(dh.device.Ports))
 			copy(ports, dh.device.Ports)
-
 			for _, port := range ports {
 				// NNI Stats
 				if port.Type == voltha.Port_ETHERNET_NNI {
 					intfID := PortNoToIntfID(port.PortNo, voltha.Port_ETHERNET_NNI)
 					cmnni := dh.portStats.collectNNIMetrics(intfID)
 					logger.Debugw("collect-nni-metrics", log.Fields{"metrics": cmnni})
-					go dh.portStats.publishMetrics(cmnni, port, context, dh.device.Id)
+					go dh.portStats.publishMetrics(cmnni, port, dh.device.Id, dh.device.Type)
 					logger.Debugw("publish-nni-metrics", log.Fields{"nni-port": port.Label})
 				}
 				// PON Stats
@@ -792,7 +789,7 @@
 					if val, ok := dh.activePorts.Load(intfID); ok && val == true {
 						cmpon := dh.portStats.collectPONMetrics(intfID)
 						logger.Debugw("collect-pon-metrics", log.Fields{"metrics": cmpon})
-						go dh.portStats.publishMetrics(cmpon, port, context, dh.device.Id)
+						go dh.portStats.publishMetrics(cmpon, port, dh.device.Id, dh.device.Type)
 					}
 					logger.Debugw("publish-pon-metrics", log.Fields{"pon-port": port.Label})
 				}
diff --git a/internal/pkg/core/statsmanager.go b/internal/pkg/core/statsmanager.go
index 5d742d0..0cb148d 100755
--- a/internal/pkg/core/statsmanager.go
+++ b/internal/pkg/core/statsmanager.go
@@ -351,14 +351,17 @@
 
 // publishMatrics will publish the pon port metrics
 func (StatMgr OpenOltStatisticsMgr) publishMetrics(val map[string]float32,
-	port *voltha.Port, context map[string]string, devID string) {
+	port *voltha.Port, devID string, devType string) {
 	logger.Debugw("publish-metrics", log.Fields{"port": port.Label, "metrics": val})
 
 	var metricInfo voltha.MetricInformation
 	var ke voltha.KpiEvent2
 	var volthaEventSubCatgry voltha.EventSubCategory_Types
-	context["portlabel"] = port.Label
-	context["portno"] = strconv.Itoa(int(port.PortNo))
+	metricsContext := make(map[string]string)
+	metricsContext["oltid"] = devID
+	metricsContext["devicetype"] = devType
+	metricsContext["portlabel"] = port.Label
+	metricsContext["portno"] = strconv.Itoa(int(port.PortNo))
 
 	if port.Type == voltha.Port_ETHERNET_NNI {
 		volthaEventSubCatgry = voltha.EventSubCategory_NNI
@@ -370,7 +373,7 @@
 	mmd := voltha.MetricMetaData{
 		Title:    port.Type.String(),
 		Ts:       float64(raisedTs),
-		Context:  context,
+		Context:  metricsContext,
 		DeviceId: devID,
 	}
 
diff --git a/internal/pkg/core/statsmanager_test.go b/internal/pkg/core/statsmanager_test.go
index 499fda9..f7f8246 100644
--- a/internal/pkg/core/statsmanager_test.go
+++ b/internal/pkg/core/statsmanager_test.go
@@ -76,8 +76,6 @@
 		port     *voltha.Port
 		context  map[string]string
 	}
-	ctx := map[string]string{}
-	ctx["deviceID"] = "Test"
 	ponmap := map[uint32]*PonPort{}
 	ponmap[0] = &PonPort{
 		PONID:          0,
@@ -145,9 +143,8 @@
 				SouthBoundPort: nil,
 			},
 			args: args{
-				val:     nval,
-				port:    &voltha.Port{PortNo: 0, Label: fmt.Sprintf("%s%d", "nni-", 0), Type: voltha.Port_ETHERNET_NNI},
-				context: ctx,
+				val:  nval,
+				port: &voltha.Port{PortNo: 0, Label: fmt.Sprintf("%s%d", "nni-", 0), Type: voltha.Port_ETHERNET_NNI},
 			},
 		},
 		{
@@ -158,9 +155,8 @@
 				SouthBoundPort: ponmap,
 			},
 			args: args{
-				val:     pval,
-				port:    &voltha.Port{PortNo: 1, Label: fmt.Sprintf("%s%d", "pon-", 1), Type: voltha.Port_PON_OLT},
-				context: ctx,
+				val:  pval,
+				port: &voltha.Port{PortNo: 1, Label: fmt.Sprintf("%s%d", "pon-", 1), Type: voltha.Port_PON_OLT},
 			},
 		},
 		// TODO: Add test cases.
@@ -172,7 +168,7 @@
 				NorthBoundPort: tt.fields.NorthBoundPort,
 				SouthBoundPort: tt.fields.SouthBoundPort,
 			}
-			StatMgr.publishMetrics(tt.args.val, tt.args.port, tt.args.context, "onu1")
+			StatMgr.publishMetrics(tt.args.val, tt.args.port, "onu1", "openolt")
 		})
 	}
 }
