diff --git a/src/main/java/controller/Application.java b/src/main/java/controller/Application.java
index 23566dd..ce6ef9d 100644
--- a/src/main/java/controller/Application.java
+++ b/src/main/java/controller/Application.java
@@ -60,6 +60,7 @@
             consumer.runConsumer();
         } catch (Exception e) {
             logger.error("Error in Kafka Alarm thread", e);
+            logger.error(e.toString());
         }
 
     }
@@ -74,7 +75,8 @@
             VolthaKafkaConsumer consumer = new VolthaKafkaConsumer(KafkaConsumerType.KPIS);
             consumer.runConsumer();
         } catch (Exception e) {
-            logger.error("Error Kafka, KPI thread", e);
+            logger.error("Error in Kafka KPI thread", e);
+            logger.error(e.toString());
         }
 
     }
diff --git a/src/main/java/ves/VesAgent.java b/src/main/java/ves/VesAgent.java
index ac42115..7b6be8e 100644
--- a/src/main/java/ves/VesAgent.java
+++ b/src/main/java/ves/VesAgent.java
@@ -102,7 +102,7 @@
         String resourceId = message.getResourceId();
 
         EVEL_SEVERITIES vesSeverity = mapSeverity(severity);
-        EVEL_SOURCE_TYPES vesType = mapType(type);
+        EVEL_SOURCE_TYPES vesType = getSourceType();
         EvelFault flt  = new EvelFault(
             "Fault_VOLTHA_" + eventType,
             ldeviceId + ":" + ts,
@@ -116,6 +116,7 @@
         flt.evel_fault_addl_info_add("state", state);
         flt.evel_fault_addl_info_add("co_id", Config.getCoId());
         flt.evel_fault_addl_info_add("pod_id", Config.getPodId());
+        flt.evel_fault_addl_info_add("type", type);
         flt.evel_fault_addl_info_add("resourceId", resourceId);
         flt.evel_fault_category_set(category);
 
@@ -153,7 +154,7 @@
         }
     }
 
-    private static EVEL_SOURCE_TYPES mapType(String type) {
-        return EVEL_SOURCE_TYPES.valueOf("EVEL_SOURCE_" + type.toUpperCase());
+    private static EVEL_SOURCE_TYPES getSourceType() {
+        return EVEL_SOURCE_TYPES.valueOf("EVEL_SOURCE_OLT");
     }
 }
diff --git a/src/test/dmaapcheck.py b/src/test/dmaapcheck.py
new file mode 100755
index 0000000..a17d684
--- /dev/null
+++ b/src/test/dmaapcheck.py
@@ -0,0 +1,24 @@
+#
+# Copyright 2018- Cisco
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+#list out all alarm names received on the dmaap for integration testing
+
+import json
+import urllib2
+result = json.load(urllib2.urlopen("http://0.0.0.0:30227/events/unauthenticated.SEC_FAULT_OUTPUT/group1/2?timeout=3000"))
+#print (result[0])
+for i in result:
+	print (json.loads(i)["event"]["commonEventHeader"]["eventName"])
