diff --git a/Gopkg.lock b/Gopkg.lock
index 5d9ed06..94ab340 100644
--- a/Gopkg.lock
+++ b/Gopkg.lock
@@ -66,12 +66,20 @@
   revision = "f62e125fcbfec116f56051e523699d5cce1d33f8"
 
 [[projects]]
-  digest = "1:573ca21d3669500ff845bdebee890eb7fc7f0f50c59f2132f2a0c6b03d85086a"
+  digest = "1:e990969aa1e50a90b32339bde4ba5bea3f81e8da8c15f20f62786c4dfb8ae45b"
   name = "github.com/golang/protobuf"
-  packages = ["proto"]
+  packages = [
+    "proto",
+    "protoc-gen-go/descriptor",
+    "ptypes",
+    "ptypes/any",
+    "ptypes/duration",
+    "ptypes/empty",
+    "ptypes/timestamp",
+  ]
   pruneopts = "UT"
-  revision = "6c65a5562fc06764971b7c5d05c76c75e84bdbf7"
-  version = "v1.3.2"
+  revision = "1b794fe86dd6a0c7c52ae69b5c9cb0aeedc52afa"
+  version = "v1.4.0"
 
 [[projects]]
   digest = "1:e4f5819333ac698d294fe04dbf640f84719658d5c7ce195b10060cc37292ce79"
@@ -117,6 +125,19 @@
   version = "v1.0.1"
 
 [[projects]]
+  digest = "1:c2b2d407417b550f4e45ae161bce8cc511f275d3af400d13ce1df9679755cec7"
+  name = "github.com/opencord/voltha-protos"
+  packages = [
+    "go/common",
+    "go/omci",
+    "go/openflow_13",
+    "go/voltha",
+  ]
+  pruneopts = "UT"
+  revision = "b6b797cceae987556bc705acc6273b1c7e43ce05"
+  version = "v1.0.3"
+
+[[projects]]
   digest = "1:f690a0a27cefae695fa9587aa3ed23652e593be1d98b35f8184d10bccec30444"
   name = "github.com/pierrec/lz4"
   packages = [
@@ -128,7 +149,7 @@
   version = "v2.2.4"
 
 [[projects]]
-  digest = "1:eb04f69c8991e52eff33c428bd729e04208bf03235be88e4df0d88497c6861b9"
+  digest = "1:e89f2cdede55684adbe44b5566f55838ad2aee1dff348d14b73ccf733607b671"
   name = "github.com/prometheus/client_golang"
   packages = [
     "prometheus",
@@ -136,8 +157,8 @@
     "prometheus/promhttp",
   ]
   pruneopts = "UT"
-  revision = "4ab88e80c249ed361d3299e2930427d9ac43ef8d"
-  version = "v1.0.0"
+  revision = "2641b987480bca71fb39738eb8c8b0d577cb1d76"
+  version = "v0.9.4"
 
 [[projects]]
   branch = "master"
@@ -199,27 +220,155 @@
 
 [[projects]]
   branch = "master"
-  digest = "1:3e0062766e6b0bcfe1ba1ed1d3f08a8e1e99cd5831426e2596dc9537d28f2adb"
+  digest = "1:6709f392f6c8449ec1d23face6328ffe1f1cd7f4b28422bbc3218314ff78bf33"
   name = "golang.org/x/net"
   packages = [
+    "http/httpguts",
+    "http2",
+    "http2/hpack",
+    "idna",
     "internal/socks",
+    "internal/timeseries",
     "proxy",
+    "trace",
   ]
   pruneopts = "UT"
   revision = "da137c7871d730100384dbcf36e6f8fa493aef5b"
 
 [[projects]]
   branch = "master"
-  digest = "1:31d44814b45607afa77c6e8ef20ea8bacc1d1053fe084440c874f311732e7ec3"
+  digest = "1:5632b0c4d972da51b5914f09fc5c1a8535e9d8d5d937e95ef83c423a0dd67f13"
   name = "golang.org/x/sys"
-  packages = [
-    "unix",
-    "windows",
-  ]
+  packages = ["unix"]
   pruneopts = "UT"
   revision = "fae7ac547cb717d141c433a2a173315e216b64c4"
 
 [[projects]]
+  digest = "1:8d8faad6b12a3a4c819a3f9618cb6ee1fa1cfc33253abeeea8b55336721e3405"
+  name = "golang.org/x/text"
+  packages = [
+    "collate",
+    "collate/build",
+    "internal/colltab",
+    "internal/gen",
+    "internal/language",
+    "internal/language/compact",
+    "internal/tag",
+    "internal/triegen",
+    "internal/ucd",
+    "language",
+    "secure/bidirule",
+    "transform",
+    "unicode/bidi",
+    "unicode/cldr",
+    "unicode/norm",
+    "unicode/rangetable",
+  ]
+  pruneopts = "UT"
+  revision = "342b2e1fbaa52c93f31447ad2c6abc048c63e475"
+  version = "v0.3.2"
+
+[[projects]]
+  branch = "master"
+  digest = "1:23dd3fce7112bfe3398e02c3d31da8ed4e657b3a37d37c21bea9a091c6505ac0"
+  name = "google.golang.org/genproto"
+  packages = [
+    "googleapis/api/annotations",
+    "googleapis/rpc/status",
+  ]
+  pruneopts = "UT"
+  revision = "bca184e23272c97429f0cb78a825f71ede0635fc"
+
+[[projects]]
+  digest = "1:712fa3cb36bfb9e0d333e10f8dcb9b1e64aa2ec30cabed56c114b5e64d775823"
+  name = "google.golang.org/grpc"
+  packages = [
+    ".",
+    "attributes",
+    "backoff",
+    "balancer",
+    "balancer/base",
+    "balancer/roundrobin",
+    "binarylog/grpc_binarylog_v1",
+    "codes",
+    "connectivity",
+    "credentials",
+    "credentials/internal",
+    "encoding",
+    "encoding/proto",
+    "grpclog",
+    "internal",
+    "internal/backoff",
+    "internal/balancerload",
+    "internal/binarylog",
+    "internal/buffer",
+    "internal/channelz",
+    "internal/envconfig",
+    "internal/grpclog",
+    "internal/grpcrand",
+    "internal/grpcsync",
+    "internal/grpcutil",
+    "internal/resolver/dns",
+    "internal/resolver/passthrough",
+    "internal/status",
+    "internal/syscall",
+    "internal/transport",
+    "keepalive",
+    "metadata",
+    "naming",
+    "peer",
+    "resolver",
+    "serviceconfig",
+    "stats",
+    "status",
+    "tap",
+  ]
+  pruneopts = "UT"
+  revision = "754ee590a4f386d0910d887f3b8776354042260b"
+  version = "v1.29.1"
+
+[[projects]]
+  digest = "1:e98a83a6464ab71657c759d986a8a1dd9757885bc6c0e4167dffa9f5233c97cf"
+  name = "google.golang.org/protobuf"
+  packages = [
+    "encoding/prototext",
+    "encoding/protowire",
+    "internal/descfmt",
+    "internal/descopts",
+    "internal/detrand",
+    "internal/encoding/defval",
+    "internal/encoding/messageset",
+    "internal/encoding/tag",
+    "internal/encoding/text",
+    "internal/errors",
+    "internal/fieldnum",
+    "internal/fieldsort",
+    "internal/filedesc",
+    "internal/filetype",
+    "internal/flags",
+    "internal/genname",
+    "internal/impl",
+    "internal/mapsort",
+    "internal/pragma",
+    "internal/set",
+    "internal/strs",
+    "internal/version",
+    "proto",
+    "reflect/protoreflect",
+    "reflect/protoregistry",
+    "runtime/protoiface",
+    "runtime/protoimpl",
+    "types/descriptorpb",
+    "types/known/anypb",
+    "types/known/durationpb",
+    "types/known/emptypb",
+    "types/known/timestamppb",
+  ]
+  pruneopts = "UT"
+  revision = "3b9eee12916ce611400f93d6c2fed2fc2911b0ad"
+  version = "v1.21.0"
+
+[[projects]]
   digest = "1:c902038ee2d6f964d3b9f2c718126571410c5d81251cbab9fe58abd37803513c"
   name = "gopkg.in/jcmturner/aescts.v1"
   packages = ["."]
@@ -299,6 +448,8 @@
   input-imports = [
     "github.com/Shopify/sarama",
     "github.com/gfremex/logrus-kafka-hook",
+    "github.com/golang/protobuf/proto",
+    "github.com/opencord/voltha-protos/go/voltha",
     "github.com/prometheus/client_golang/prometheus",
     "github.com/prometheus/client_golang/prometheus/promhttp",
     "github.com/sirupsen/logrus",
diff --git a/Gopkg.toml b/Gopkg.toml
index ebbf24e..be6f760 100644
--- a/Gopkg.toml
+++ b/Gopkg.toml
@@ -62,3 +62,7 @@
 [prune]
   go-tests = true
   unused-packages = true
+
+[[constraint]]
+  name = "github.com/golang/protobuf"
+  version = "1.3.2"
diff --git a/config/conf.yaml b/config/conf.yaml
index 398e4f2..a1ec3fa 100644
--- a/config/conf.yaml
+++ b/config/conf.yaml
@@ -8,7 +8,7 @@
     - onos.kpis
     - onos.aaa.stats.kpis
     - bng.stats
-    - voltha.kpis
+    - voltha.events
 logger:
   loglevel: debug
   host: cord-kafka.default.svc.cluster.local:9092
diff --git a/main.go b/main.go
index 752882b..6838cd7 100644
--- a/main.go
+++ b/main.go
@@ -71,23 +71,80 @@
 	err := http.ListenAndServe(":"+strconv.Itoa(target.Port), nil)
 	if err != nil {
 		logger.Error("HTTP Server Error: %s", err.Error())
-       }
+	}
 }
 
 func init() {
 	// register metrics within Prometheus
-	prometheus.MustRegister(volthaTxBytesTotal)
-	prometheus.MustRegister(volthaRxBytesTotal)
-	prometheus.MustRegister(volthaTxPacketsTotal)
-	prometheus.MustRegister(volthaRxPacketsTotal)
-	prometheus.MustRegister(volthaTxErrorPacketsTotal)
-	prometheus.MustRegister(volthaRxErrorPacketsTotal)
+	prometheus.MustRegister(volthaOltTxBytesTotal)
+	prometheus.MustRegister(volthaOltRxBytesTotal)
+	prometheus.MustRegister(volthaOltTxPacketsTotal)
+	prometheus.MustRegister(volthaOltRxPacketsTotal)
+	prometheus.MustRegister(volthaOltTxErrorPacketsTotal)
+	prometheus.MustRegister(volthaOltRxErrorPacketsTotal)
+	prometheus.MustRegister(volthaOltTxBroadcastPacketsTotal)
+	prometheus.MustRegister(volthaOltTxUnicastPacketsTotal)
+	prometheus.MustRegister(volthaOltTxMulticastPacketsTotal)
+	prometheus.MustRegister(volthaOltRxBroadcastPacketsTotal)
+	prometheus.MustRegister(volthaOltRxUnicastPacketsTotal)
+	prometheus.MustRegister(volthaOltRxMulticastPacketsTotal)
 
 	prometheus.MustRegister(VolthaOnuLaserBiasCurrent)
 	prometheus.MustRegister(volthaOnuTemperature)
 	prometheus.MustRegister(VolthaOnuPowerFeedVoltage)
 	prometheus.MustRegister(VolthaOnuMeanOpticalLaunchPower)
 	prometheus.MustRegister(VolthaOnuReceivedOpticalPower)
+	prometheus.MustRegister(VolthaOnuTransmtOpticalPower)
+
+	prometheus.MustRegister(volthaOnuFecCorrectedCodewordsTotal)
+	prometheus.MustRegister(volthaOnuFecCodewordsTotal)
+	prometheus.MustRegister(volthaOnuFecCorrectedBytesTotal)
+	prometheus.MustRegister(volthaOnuFecSecondsTotal)
+	prometheus.MustRegister(volthaOnuFecUncorrectablewordsTotal)
+
+	prometheus.MustRegister(volthaEthernetUniSingleCollisionTotal)
+	prometheus.MustRegister(volthaEthernetUniMacLayerTramsmitErrorTotal)
+	prometheus.MustRegister(volthaEthernetUniMultiCollisionTotal)
+	prometheus.MustRegister(volthaEthernetUniFramestooLongTotal)
+	prometheus.MustRegister(volthaEthernetUniAlignmentErrorTotal)
+	prometheus.MustRegister(volthaEthernetUniCarrierErrorTotal)
+	prometheus.MustRegister(volthaEthernetUniExcessiveCollisionErrorTotal)
+	prometheus.MustRegister(volthaEthernetUniDeferredTxTotal)
+	prometheus.MustRegister(volthaEthernetUniLateCollisionTotal)
+	prometheus.MustRegister(volthaEthernetUniBufferOverflowsRxErrorTotal)
+	prometheus.MustRegister(volthaEthernetUniFcsErrorTotal)
+	prometheus.MustRegister(volthaEthernetUniSqeErrorTotal)
+	prometheus.MustRegister(volthaEthernetUniBufferOverflowsTxErrorTotal)
+
+	prometheus.MustRegister(volthaOnuBridgePortRxBytesTotal)
+	prometheus.MustRegister(volthaOnuBridgePortRxPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePort_64octetRxPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePort_65_127_octetRxPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePort_128_255_octetRxPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePort_256_511_octetRxPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePort_512_1023_octetRxPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePort_1024_1518_octetRxPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePortRxMulticastPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePortRxBroadcastPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePortRxOversizePacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePortRxCrcErrorPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePortRxUndersizePacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePortRxDropEventsTotal)
+
+	prometheus.MustRegister(volthaOnuBridgePortTxBytesTotal)
+	prometheus.MustRegister(volthaOnuBridgePortTxPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePort_64octetTxPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePort_65_127_octetTxPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePort_128_255_octetTxPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePort_256_511_octetTxPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePort_512_1023_octetTxPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePort_1024_1518_octetTxPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePortTxMulticastPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePortTxBroadcastPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePortTxOversizePacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePortTxCrcErrorPacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePortTxUndersizePacketsTotal)
+	prometheus.MustRegister(volthaOnuBridgePortTxDropEventsTotal)
 
 	prometheus.MustRegister(onosTxBytesTotal)
 	prometheus.MustRegister(onosRxBytesTotal)
@@ -134,7 +191,7 @@
 	prometheus.MustRegister(onosaaaEapPktTxAuthChooseEap)
 	prometheus.MustRegister(onosaaaTxRespnotNak)
 
-        prometheus.MustRegister(onosaaaEapolFramesTx)
+	prometheus.MustRegister(onosaaaEapolFramesTx)
 	prometheus.MustRegister(onosaaaAuthStateIdle)
 	prometheus.MustRegister(onosaaaRequestIdFramesTx)
 	prometheus.MustRegister(onosaaaRequestEapFramesTx)
diff --git a/topic-exporter.go b/topic-exporter.go
index 4532c28..2923c87 100644
--- a/topic-exporter.go
+++ b/topic-exporter.go
@@ -17,6 +17,8 @@
 import (
 	"encoding/json"
 	"gerrit.opencord.org/kafka-topic-exporter/common/logger"
+	"github.com/golang/protobuf/proto"
+	"github.com/opencord/voltha-protos/go/voltha"
 	"github.com/prometheus/client_golang/prometheus"
 	log "github.com/sirupsen/logrus"
 	"strconv"
@@ -25,51 +27,99 @@
 
 var (
 	// voltha kpis
-	volthaTxBytesTotal = prometheus.NewGaugeVec(
+	volthaOltTxBytesTotal = prometheus.NewGaugeVec(
 		prometheus.GaugeOpts{
-			Name: "voltha_tx_bytes_total",
+			Name: "voltha_olt_tx_bytes_total",
 			Help: "Number of total bytes transmitted",
 		},
 		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
 	)
-	volthaRxBytesTotal = prometheus.NewGaugeVec(
+	volthaOltRxBytesTotal = prometheus.NewGaugeVec(
 		prometheus.GaugeOpts{
-			Name: "voltha_rx_bytes_total",
+			Name: "voltha_olt_rx_bytes_total",
 			Help: "Number of total bytes received",
 		},
 		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
 	)
-	volthaTxPacketsTotal = prometheus.NewGaugeVec(
+	volthaOltTxPacketsTotal = prometheus.NewGaugeVec(
 		prometheus.GaugeOpts{
-			Name: "voltha_tx_packets_total",
+			Name: "voltha_olt_tx_packets_total",
 			Help: "Number of total packets transmitted",
 		},
 		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
 	)
-	volthaRxPacketsTotal = prometheus.NewGaugeVec(
+	volthaOltRxPacketsTotal = prometheus.NewGaugeVec(
 		prometheus.GaugeOpts{
-			Name: "voltha_rx_packets_total",
+			Name: "voltha_olt_rx_packets_total",
 			Help: "Number of total packets received",
 		},
 		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
 	)
 
-	volthaTxErrorPacketsTotal = prometheus.NewGaugeVec(
+	volthaOltTxErrorPacketsTotal = prometheus.NewGaugeVec(
 		prometheus.GaugeOpts{
-			Name: "voltha_tx_error_packets_total",
+			Name: "voltha_olt_tx_error_packets_total",
 			Help: "Number of total transmitted packets error",
 		},
 		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
 	)
 
-	volthaRxErrorPacketsTotal = prometheus.NewGaugeVec(
+	volthaOltRxErrorPacketsTotal = prometheus.NewGaugeVec(
 		prometheus.GaugeOpts{
-			Name: "voltha_rx_error_packets_total",
+			Name: "voltha_olt_rx_error_packets_total",
 			Help: "Number of total received packets error",
 		},
 		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
 	)
 
+	volthaOltTxBroadcastPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_olt_tx_broadcast_packets_total",
+			Help: "Number of total broadcast packets transmitted",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+
+	volthaOltTxUnicastPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_olt_tx_unicast_packets_total",
+			Help: "Number of total unicast packets transmitted",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+
+	volthaOltTxMulticastPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_olt_tx_multicast_packets_total",
+			Help: "Number of total multicast packets transmitted",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+
+	volthaOltRxBroadcastPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_olt_rx_broadcast_packets_total",
+			Help: "Number of total broadcast packets received",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+
+	volthaOltRxUnicastPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_olt_rx_unicast_packets_total",
+			Help: "Number of total unicast packets received",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+
+	volthaOltRxMulticastPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_olt_rx_multicast_packets_total",
+			Help: "Number of total multicast packets received",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+
 	// optical parameters
 	VolthaOnuLaserBiasCurrent = prometheus.NewGaugeVec(
 		prometheus.GaugeOpts{
@@ -111,6 +161,363 @@
 		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
 	)
 
+	VolthaOnuTransmtOpticalPower = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_transmit_optical_power",
+			Help: "ONU transmited optical power",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "pon_id", "port_number", "title"},
+	)
+
+	// FEC parameters
+	volthaOnuFecCorrectedCodewordsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_fec_corrected_code_words",
+			Help: "Number of total code words corrected",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuFecCodewordsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_fec_code_words_total",
+			Help: "Number of total code words",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuFecCorrectedBytesTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_fec_corrected_bytes_total",
+			Help: "Number of total corrected bytes",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuFecSecondsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_fec_corrected_fec_seconds_total",
+			Help: "Number of fec seconds total",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuFecUncorrectablewordsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_fec_uncorrectable_words_total",
+			Help: "Number of fec uncorrectable words",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+	//Etheret UNI
+
+	volthaEthernetUniSingleCollisionTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_ethernet_uni_single_collision_frame_counter",
+			Help: "successfully transmitted frames but delayed by exactly one collision.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "port_number", "title"},
+	)
+
+	volthaEthernetUniMacLayerTramsmitErrorTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_ethernet_uni_internal_mac_rx_error_counter",
+			Help: "transmission failed due to an internal MAC sublayer transmit error.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "port_number", "title"},
+	)
+
+	volthaEthernetUniMultiCollisionTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_ethernet_uni_multiple_collisions_frame_counter",
+			Help: "successfully transmitted frames but delayed by multiple collisions.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "port_number", "title"},
+	)
+
+	volthaEthernetUniFramestooLongTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_ethernet_uni_frames_too_long",
+			Help: "frames that exceeded the maximum permitted frame size.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "port_number", "title"},
+	)
+
+	volthaEthernetUniAlignmentErrorTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_ethernet_uni_alignment_error_counter",
+			Help: "frames that were not an integral number of octets in length and did not pass the FCS check.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "port_number", "title"},
+	)
+	volthaEthernetUniCarrierErrorTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_ethernet_uni_carrier_sense_error_counter",
+			Help: "number of times that carrier sense was lost or never asserted when attempting to transmit a frame.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "port_number", "title"},
+	)
+	volthaEthernetUniExcessiveCollisionErrorTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_ethernet_uni_excessive_collision_counter",
+			Help: "frames whose transmission failed due to excessive collisions.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "port_number", "title"},
+	)
+	volthaEthernetUniDeferredTxTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_ethernet_uni_deferred_tx_counter",
+			Help: "frames whose first transmission attempt was delayed because the medium was busy.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "port_number", "title"},
+	)
+	volthaEthernetUniLateCollisionTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_ethernet_uni_late_collision_counter",
+			Help: "number of times that a collision was detected later than 512 bit times into the transmission of a packet.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "port_number", "title"},
+	)
+	volthaEthernetUniBufferOverflowsRxErrorTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_ethernet_uni_buffer_overflows_on_rx",
+			Help: "number of times that the receive buffer overflowed.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "port_number", "title"},
+	)
+	volthaEthernetUniFcsErrorTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_ethernet_uni_fcs_errors",
+			Help: " frames failed the frame check sequence (FCS) check.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "port_number", "title"},
+	)
+	volthaEthernetUniSqeErrorTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_ethernet_uni_sqe_counter",
+			Help: "number of times that the SQE test error message was generated by the PLS sublayer",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "port_number", "title"},
+	)
+	volthaEthernetUniBufferOverflowsTxErrorTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_ethernet_uni_buffer_overflows_on_tx",
+			Help: " number of times that the transmit buffer overflowed.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "interface_id", "port_number", "title"},
+	)
+	//Ethernet_Bridge_Port
+
+	volthaOnuBridgePortTxBytesTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_tx_bytes_total",
+			Help: "Number of total bytes transmitted",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+	volthaOnuBridgePortRxBytesTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_rx_bytes_total",
+			Help: "Number of total bytes received",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+	volthaOnuBridgePortTxPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_tx_packets_total",
+			Help: "Number of total packets transmitted",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+	volthaOnuBridgePortRxPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_rx_packets_total",
+			Help: "Number of total packets received",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuBridgePort_64octetTxPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_64_octets_Txpackets",
+			Help: "packets (including bad packets) that were 64 octets long",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuBridgePort_65_127_octetTxPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_65_to_127_octet_Txpackets",
+			Help: "packets (including bad packets) that were 65..127 octets long, excluding framing bits but including FCS.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuBridgePort_128_255_octetTxPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_128_to_255_octet_Txpackets",
+			Help: "packets (including bad packets) received that were 128..255 octets long, excluding framing bits but including FCS.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuBridgePort_256_511_octetTxPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_256_to_511_octet_Txpackets",
+			Help: "packets (including bad packets) received that were 256..511 octets long, excluding framing bits but including FCS.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuBridgePort_512_1023_octetTxPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_512_to_1023_octet_Txpackets",
+			Help: "packets (including bad packets) received that were 512..1 023 octets long, excluding framing bits but including FCS.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuBridgePort_1024_1518_octetTxPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_1024_to_1518_octet_Txpackets",
+			Help: "packets (including bad packets) received that were 1024..1518 octets long, excluding framing bits, but including FCS.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+	volthaOnuBridgePortTxMulticastPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_multicast_Txpackets",
+			Help: "packets received that were directed to a multicast address.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+	volthaOnuBridgePortTxBroadcastPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_broadcast_Txpackets",
+			Help: "packets received that were directed to the broadcast address.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+	volthaOnuBridgePortTxOversizePacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_oversize_Txpackets",
+			Help: " packets received that were longer than 1518 octets",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+	volthaOnuBridgePortTxCrcErrorPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_crc_errored_Txpackets",
+			Help: "Packets with CRC errors",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+	volthaOnuBridgePortTxUndersizePacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_undersize_Txpackets",
+			Help: "Packets received that were less than 64 octets long, but were otherwise well formed",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuBridgePortTxDropEventsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_Txdrop_events",
+			Help: "total number of events in which packets were dropped due to a lack of resources. ",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+	volthaOnuBridgePort_64octetRxPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_64_octets_Rxpackets",
+			Help: "packets (including bad packets) that were 64 octets long",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuBridgePort_65_127_octetRxPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_65_to_127_octet_Rxpackets",
+			Help: "packets (including bad packets) that were 65..127 octets long, excluding framing bits but including FCS.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuBridgePort_128_255_octetRxPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_128_to_255_octet_packets",
+			Help: "packets (including bad packets) received that were 128..255 octets long, excluding framing bits but including FCS.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuBridgePort_256_511_octetRxPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_256_to_511_octet_Rxpackets",
+			Help: "packets (including bad packets) received that were 256..511 octets long, excluding framing bits but including FCS.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuBridgePort_512_1023_octetRxPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_512_to_1023_octet_Rxpackets",
+			Help: "packets (including bad packets) received that were 512..1 023 octets long, excluding framing bits but including FCS.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuBridgePort_1024_1518_octetRxPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_1024_to_1518_octet_Rxpackets",
+			Help: "packets (including bad packets) received that were 1024..1518 octets long, excluding framing bits, but including FCS.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+	volthaOnuBridgePortRxMulticastPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_multicast_Rxpackets",
+			Help: "packets received that were directed to a multicast address.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+	volthaOnuBridgePortRxBroadcastPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_broadcast_Rxpackets",
+			Help: "packets received that were directed to the broadcast address.",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+	volthaOnuBridgePortRxOversizePacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_oversize_Rxpackets",
+			Help: " packets received that were longer than 1518 octets",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+	volthaOnuBridgePortRxCrcErrorPacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_crc_errored_Rxpackets",
+			Help: "Packets with CRC errors",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+	volthaOnuBridgePortRxUndersizePacketsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_undersize_Rxpackets",
+			Help: "Packets received that were less than 64 octets long, but were otherwise well formed",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
+	volthaOnuBridgePortRxDropEventsTotal = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "voltha_onu_bridge_port_Rxdrop_events",
+			Help: "total number of events in which packets were dropped due to a lack of resources. ",
+		},
+		[]string{"logical_device_id", "serial_number", "device_id", "title"},
+	)
+
 	// onos kpis
 	onosTxBytesTotal = prometheus.NewGaugeVec(
 		prometheus.GaugeOpts{
@@ -433,249 +840,527 @@
 		})
 )
 
-func exportVolthaKPI(kpi VolthaKPI) {
+func exportVolthaEthernetPonStats(data *voltha.MetricInformation) {
 
-	for _, data := range kpi.SliceDatas {
-		switch title := data.Metadata.Title; title {
-		case "Ethernet", "PON":
-			volthaTxBytesTotal.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.TxBytes)
+	volthaOltTxBytesTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		"NA", // InterfaceID
+		"NA", // PonID
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["TxBytes"]))
 
-			volthaRxBytesTotal.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.RxBytes)
+	volthaOltRxBytesTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		"NA", // InterfaceID
+		"NA", // PonID
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["RxBytes"]))
 
-			volthaTxPacketsTotal.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.TxPackets)
+	volthaOltTxPacketsTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		"NA", // InterfaceID
+		"NA", // PonID
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["TxPackets"]))
 
-			volthaRxPacketsTotal.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.RxPackets)
+	volthaOltRxPacketsTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		"NA", // InterfaceID
+		"NA", // PonID
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["RxPackets"]))
 
-			volthaTxErrorPacketsTotal.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.TxErrorPackets)
+	volthaOltTxErrorPacketsTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		"NA", // InterfaceID
+		"NA", // PonID
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["TxErrorPackets"]))
 
-			volthaRxErrorPacketsTotal.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.RxErrorPackets)
+	volthaOltRxErrorPacketsTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		"NA", // InterfaceID
+		"NA", // PonID
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["RxErrorPackets"]))
 
-			// TODO add metrics for:
-			// TxBcastPackets
-			// TxUnicastPackets
-			// TxMulticastPackets
-			// RxBcastPackets
-			// RxMulticastPackets
+	volthaOltTxBroadcastPacketsTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		"NA", // InterfaceID
+		"NA", // PonID
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["TxBcastPackets"]))
 
+	volthaOltTxUnicastPacketsTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		"NA", // InterfaceID
+		"NA", // PonID
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["TxUcastPackets"]))
+
+	volthaOltTxMulticastPacketsTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		"NA", // InterfaceID
+		"NA", // PonID
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["TxMcastPackets"]))
+
+	volthaOltRxBroadcastPacketsTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		"NA", // InterfaceID
+		"NA", // PonID
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["RxBcastPackets"]))
+
+	volthaOltRxUnicastPacketsTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		"NA", // InterfaceID
+		"NA", // PonID
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["RxUcastPackets"]))
+
+	volthaOltRxMulticastPacketsTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		"NA", // InterfaceID
+		"NA", // PonID
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["RxMcastPackets"]))
+}
+
+func exportVolthaOnuEthernetBridgePortStats(data *voltha.MetricInformation) {
+
+	if (data.GetMetadata().GetContext()["upstream"]) == "True" {
+		// ONU. Extended Ethernet statistics.
+		volthaOnuBridgePortTxPacketsTotal.WithLabelValues(
+			data.Metadata.GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["packets"]))
+
+		volthaOnuBridgePortTxBytesTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.GetMetadata().GetSerialNo(),
+			data.GetMetadata().GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["octets"]))
+
+		volthaOnuBridgePort_64octetTxPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["64_octets"]))
+
+		volthaOnuBridgePort_65_127_octetTxPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["65_to_127_octets"]))
+
+		volthaOnuBridgePort_128_255_octetTxPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["128_to_255_octets"]))
+
+		volthaOnuBridgePort_256_511_octetTxPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["256_to_511_octets"]))
+
+		volthaOnuBridgePort_512_1023_octetTxPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["512_to_1023_octets"]))
+
+		volthaOnuBridgePort_1024_1518_octetTxPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["1024_to_1518_octets"]))
+
+		volthaOnuBridgePortTxMulticastPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["multicast_packets"]))
+
+		volthaOnuBridgePortTxBroadcastPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["broadcast_packets"]))
+
+		volthaOnuBridgePortTxOversizePacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["oversize_packets"]))
+
+		volthaOnuBridgePortTxCrcErrorPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["crc_errored_packets"]))
+
+		volthaOnuBridgePortTxUndersizePacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["undersize_packets"]))
+
+		volthaOnuBridgePortTxDropEventsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["drop_events"]))
+
+	} else {
+
+		// ONU. Extended Ethernet statistics.
+		volthaOnuBridgePortRxPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.GetMetadata().GetSerialNo(),
+			data.GetMetadata().GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["packets"]))
+
+		volthaOnuBridgePortRxBytesTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.GetMetadata().GetSerialNo(),
+			data.GetMetadata().GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["octets"]))
+
+		volthaOnuBridgePort_64octetRxPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["64_octets"]))
+
+		volthaOnuBridgePort_65_127_octetRxPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["65_to_127_octets"]))
+
+		volthaOnuBridgePort_128_255_octetRxPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["128_to_255_octets"]))
+
+		volthaOnuBridgePort_256_511_octetRxPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["256_to_511_octets"]))
+
+		volthaOnuBridgePort_512_1023_octetRxPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["512_to_1023_octets"]))
+
+		volthaOnuBridgePort_1024_1518_octetRxPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["1024_to_1518_octets"]))
+
+		volthaOnuBridgePortRxMulticastPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["multicast_packets"]))
+
+		volthaOnuBridgePortRxBroadcastPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["broadcast_packets"]))
+
+		volthaOnuBridgePortRxOversizePacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["oversize_packets"]))
+
+		volthaOnuBridgePortRxCrcErrorPacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["crc_errored_packets"]))
+
+		volthaOnuBridgePortRxUndersizePacketsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["undersize_packets"]))
+
+		volthaOnuBridgePortRxDropEventsTotal.WithLabelValues(
+			data.GetMetadata().GetLogicalDeviceId(),
+			data.Metadata.GetSerialNo(),
+			data.Metadata.GetDeviceId(),
+			data.GetMetadata().GetTitle(),
+		).Add(float64(data.GetMetrics()["drop_events"]))
+
+	}
+}
+
+func exportVolthaOnuPonOpticalStats(data *voltha.MetricInformation) {
+	VolthaOnuTransmtOpticalPower.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetContext()["intf_id"],
+		"NA", // PonID,
+		"NA", //PortNumber
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["transmit_power"]))
+
+	VolthaOnuReceivedOpticalPower.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetContext()["intf_id"],
+		"NA", // PonID,
+		"NA", //PortNumber
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["receive_power"]))
+}
+func exportVolthaOnuFecStats(data *voltha.MetricInformation) {
+	volthaOnuFecCorrectedCodewordsTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["corrected_code_words"]))
+
+	volthaOnuFecCodewordsTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["total_code_words"]))
+
+	volthaOnuFecCorrectedBytesTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["corrected_bytes"]))
+
+	volthaOnuFecSecondsTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["fec_seconds"]))
+
+	volthaOnuFecUncorrectablewordsTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["uncorrectable_code_words"]))
+}
+func exportVolthaOnuEthernetUniStats(data *voltha.MetricInformation) {
+
+	volthaEthernetUniSingleCollisionTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetContext()["intf_id"],
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["single_collision_frame_counter"]))
+
+	volthaEthernetUniMacLayerTramsmitErrorTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetContext()["intf_id"],
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["internal_mac_rx_error_counter"]))
+
+	volthaEthernetUniMultiCollisionTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetContext()["intf_id"],
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["multiple_collisions_frame_counter"]))
+
+	volthaEthernetUniFramestooLongTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetContext()["intf_id"],
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["frames_too_long"]))
+	volthaEthernetUniAlignmentErrorTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetContext()["intf_id"],
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["alignment_error_counter"]))
+
+	volthaEthernetUniCarrierErrorTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetContext()["intf_id"],
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["carrier_sense_error_counter"]))
+	volthaEthernetUniExcessiveCollisionErrorTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetContext()["intf_id"],
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["excessive_collision_counter"]))
+
+	volthaEthernetUniDeferredTxTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetContext()["intf_id"],
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["deferred_tx_counter"]))
+
+	volthaEthernetUniLateCollisionTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetContext()["intf_id"],
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["late_collision_counter"]))
+
+	volthaEthernetUniBufferOverflowsRxErrorTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetContext()["intf_id"],
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()[""]))
+
+	volthaEthernetUniFcsErrorTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetContext()["intf_id"],
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["fcs_errors"]))
+
+	volthaEthernetUniSqeErrorTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetContext()["intf_id"],
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["sqe_counter"]))
+
+	volthaEthernetUniBufferOverflowsTxErrorTotal.WithLabelValues(
+		data.GetMetadata().GetLogicalDeviceId(),
+		data.GetMetadata().GetSerialNo(),
+		data.GetMetadata().GetDeviceId(),
+		data.GetMetadata().GetContext()["intf_id"],
+		data.GetMetadata().GetContext()["portno"],
+		data.GetMetadata().GetTitle(),
+	).Set(float64(data.GetMetrics()["buffer_overflows_on_tx"]))
+
+}
+
+func exportVolthaKPIevent2(kpi *voltha.KpiEvent2) {
+	for _, data := range kpi.GetSliceData() {
+		switch title := data.GetMetadata().GetTitle(); title {
+		case "ETHERNET_NNI", "PON_OLT":
+			exportVolthaEthernetPonStats(data)
 		case "Ethernet_Bridge_Port_History":
-			if data.Metadata.Context.Upstream == "True" {
-				// ONU. Extended Ethernet statistics.
-				volthaTxPacketsTotal.WithLabelValues(
-					data.Metadata.LogicalDeviceID,
-					data.Metadata.SerialNumber,
-					data.Metadata.DeviceID,
-					"NA", // InterfaceID
-					"NA", // PonID
-					"NA", // PortNumber
-					data.Metadata.Title,
-				).Add(data.Metrics.Packets)
-
-				volthaTxBytesTotal.WithLabelValues(
-					data.Metadata.LogicalDeviceID,
-					data.Metadata.SerialNumber,
-					data.Metadata.DeviceID,
-					"NA", // InterfaceID
-					"NA", // PonID
-					"NA", // PortNumber
-					data.Metadata.Title,
-				).Add(data.Metrics.Octets)
-			} else {
-				// ONU. Extended Ethernet statistics.
-				volthaRxPacketsTotal.WithLabelValues(
-					data.Metadata.LogicalDeviceID,
-					data.Metadata.SerialNumber,
-					data.Metadata.DeviceID,
-					"NA", // InterfaceID
-					"NA", // PonID
-					"NA", // PortNumber
-					data.Metadata.Title,
-				).Add(data.Metrics.Packets)
-
-				volthaRxBytesTotal.WithLabelValues(
-					data.Metadata.LogicalDeviceID,
-					data.Metadata.SerialNumber,
-					data.Metadata.DeviceID,
-					"NA", // InterfaceID
-					"NA", // PonID
-					"NA", // PortNumber
-					data.Metadata.Title,
-				).Add(data.Metrics.Octets)
-			}
-
+			exportVolthaOnuEthernetBridgePortStats(data)
 		case "PON_Optical":
-			VolthaOnuLaserBiasCurrent.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.LaserBiasCurrent)
-
-			volthaOnuTemperature.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.Temperature)
-
-			VolthaOnuPowerFeedVoltage.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.PowerFeedVoltage)
-
-			VolthaOnuMeanOpticalLaunchPower.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.MeanOpticalLaunchPower)
-
-			VolthaOnuReceivedOpticalPower.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.ReceivedOpticalPower)
-
+			exportVolthaOnuPonOpticalStats(data)
 		case "Ethernet_UNI_History":
-			// ONU. Do nothing.
-
+			exportVolthaOnuEthernetUniStats(data)
 		case "FEC_History":
-			// ONU. Do Nothing.
+			exportVolthaOnuFecStats(data)
+		case "UNI_Status":
+			//  Do nothing.
 
-			volthaTxBytesTotal.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.TxBytes)
-
-			volthaRxBytesTotal.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.RxBytes)
-
-			volthaTxPacketsTotal.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.TxPackets)
-
-			volthaRxPacketsTotal.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.RxPackets)
-
-			volthaTxErrorPacketsTotal.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.TxErrorPackets)
-
-			volthaRxErrorPacketsTotal.WithLabelValues(
-				data.Metadata.LogicalDeviceID,
-				data.Metadata.SerialNumber,
-				data.Metadata.DeviceID,
-				data.Metadata.Context.InterfaceID,
-				data.Metadata.Context.PonID,
-				data.Metadata.Context.PortNumber,
-				data.Metadata.Title,
-			).Set(data.Metrics.RxErrorPackets)
-
-			// TODO add metrics for:
-			// TxBcastPackets
-			// TxUnicastPackets
-			// TxMulticastPackets
-			// RxBcastPackets
-			// RxMulticastPackets
-
-		case "voltha.internal":
-			// Voltha Internal. Do nothing.
 		}
 	}
 }
@@ -953,14 +1638,19 @@
 
 func export(topic *string, data []byte) {
 	switch *topic {
-	case "voltha.kpis":
-		kpi := VolthaKPI{}
-		err := json.Unmarshal(data, &kpi)
+	case "voltha.events":
+		event := voltha.Event{}
+		err := proto.Unmarshal(data, &event)
 		if err != nil {
 			logger.Error("Invalid msg on voltha.kpis: %s, Unprocessed Msg: %s", err.Error(), string(data))
 			break
 		}
-		exportVolthaKPI(kpi)
+		if event.GetHeader().GetType() == voltha.EventType_KPI_EVENT2 {
+			logger.Debug("KPI_EVENT2 received on voltha.events")
+			kpiEvent2 := event.GetKpiEvent2()
+			exportVolthaKPIevent2(kpiEvent2)
+		}
+
 	case "onos.kpis":
 		kpi := OnosKPI{}
 		err := json.Unmarshal(data, &kpi)
