diff --git a/apps/kafka-integration/app/pom.xml b/apps/kafka-integration/app/pom.xml
index 20b9427..1dafb0d 100644
--- a/apps/kafka-integration/app/pom.xml
+++ b/apps/kafka-integration/app/pom.xml
@@ -167,7 +167,8 @@
                         org.onlab.packet.*,
                         org.onosproject.*,
                         org.onlab.util.*,
-                        com.google.common.*
+                        com.google.common.*,
+                        com.google.protobuf.*
                     </Import-Package>
                     <Web-ContextPath>${web.context}</Web-ContextPath>
                 </instructions>
diff --git a/apps/kafka-integration/app/src/main/java/org/onosproject/kafkaintegration/converter/DeviceEventConverter.java b/apps/kafka-integration/app/src/main/java/org/onosproject/kafkaintegration/converter/DeviceEventConverter.java
index e08d6e1..ac04040 100644
--- a/apps/kafka-integration/app/src/main/java/org/onosproject/kafkaintegration/converter/DeviceEventConverter.java
+++ b/apps/kafka-integration/app/src/main/java/org/onosproject/kafkaintegration/converter/DeviceEventConverter.java
@@ -40,7 +40,7 @@
 
         DeviceEvent deviceEvent = (DeviceEvent) event;
 
-        if (!deviceEventSubtypeSupported(deviceEvent)) {
+        if (!deviceEventTypeSupported(deviceEvent)) {
             log.error("Unsupported Onos Device Event {}. There is no matching"
                     + "proto Device Event type", deviceEvent.type().toString());
             return null;
@@ -55,7 +55,7 @@
      * @param event ONOS Device event
      * @return true if there is a match and false otherwise
      */
-    private boolean deviceEventSubtypeSupported(DeviceEvent event) {
+    private boolean deviceEventTypeSupported(DeviceEvent event) {
         DeviceEventType[] deviceEvents = DeviceEventType.values();
         for (DeviceEventType deviceEventType : deviceEvents) {
             if (deviceEventType.name().equals(event.type().name())) {
@@ -67,9 +67,11 @@
     }
 
     private DeviceNotification buildDeviceProtoMessage(DeviceEvent deviceEvent) {
-        DeviceNotification notification = DeviceNotification.newBuilder()
-                .setDeviceEventType(getProtoType(deviceEvent))
-                .setDevice(DeviceCore.newBuilder()
+        DeviceNotification.Builder notificationBuilder =
+                DeviceNotification.newBuilder();
+
+        DeviceCore deviceCore =
+                DeviceCore.newBuilder()
                         .setChassisId(deviceEvent.subject().chassisId().id()
                                 .toString())
                         .setDeviceId(deviceEvent.subject().id().toString())
@@ -77,18 +79,29 @@
                         .setManufacturer(deviceEvent.subject().manufacturer())
                         .setSerialNumber(deviceEvent.subject().serialNumber())
                         .setSwVersion(deviceEvent.subject().swVersion())
-                        .setType(DeviceType.valueOf(deviceEvent.type().name()))
-                        .build())
-                .setPort(PortCore.newBuilder()
-                        .setIsEnabled(deviceEvent.port().isEnabled())
-                        .setPortNumber(deviceEvent.port().number().toString())
-                        .setPortSpeed(deviceEvent.port().portSpeed())
-                        .setType(PortType
-                                .valueOf(deviceEvent.port().type().name()))
-                        .build())
-                .build();
+                        .setType(DeviceType
+                                .valueOf(deviceEvent.subject().type().name()))
+                        .build();
 
-        return notification;
+        PortCore portCore = null;
+        if (deviceEvent.port() != null) {
+            portCore =
+                    PortCore.newBuilder()
+                            .setIsEnabled(deviceEvent.port().isEnabled())
+                            .setPortNumber(deviceEvent.port().number()
+                                    .toString())
+                            .setPortSpeed(deviceEvent.port().portSpeed())
+                            .setType(PortType
+                                    .valueOf(deviceEvent.port().type().name()))
+                            .build();
+
+            notificationBuilder.setPort(portCore);
+        }
+
+        notificationBuilder.setDeviceEventType(getProtoType(deviceEvent))
+                .setDevice(deviceCore);
+
+        return notificationBuilder.build();
     }
 
     /**
diff --git a/apps/kafka-integration/app/src/main/java/org/onosproject/kafkaintegration/converter/LinkEventConverter.java b/apps/kafka-integration/app/src/main/java/org/onosproject/kafkaintegration/converter/LinkEventConverter.java
index 2d65537..a1db209 100644
--- a/apps/kafka-integration/app/src/main/java/org/onosproject/kafkaintegration/converter/LinkEventConverter.java
+++ b/apps/kafka-integration/app/src/main/java/org/onosproject/kafkaintegration/converter/LinkEventConverter.java
@@ -40,7 +40,7 @@
 
         LinkEvent linkEvent = (LinkEvent) event;
 
-        if (!linkEventSubtypeSupported(linkEvent)) {
+        if (!linkEventTypeSupported(linkEvent)) {
             log.error("Unsupported Onos Event {}. There is no matching"
                     + "proto Event type", linkEvent.type().toString());
             return null;
@@ -49,9 +49,9 @@
         return buildDeviceProtoMessage(linkEvent);
     }
 
-    private boolean linkEventSubtypeSupported(LinkEvent event) {
-        LinkType[] kafkaLinkEvents = LinkType.values();
-        for (LinkType linkEventType : kafkaLinkEvents) {
+    private boolean linkEventTypeSupported(LinkEvent event) {
+        LinkEventType[] kafkaLinkEvents = LinkEventType.values();
+        for (LinkEventType linkEventType : kafkaLinkEvents) {
             if (linkEventType.name().equals(event.type().name())) {
                 return true;
             }
