diff --git a/osm_policy_module/cmd/policy_module_healthcheck.py b/osm_policy_module/cmd/policy_module_healthcheck.py
index e10776f..f184afd 100644
--- a/osm_policy_module/cmd/policy_module_healthcheck.py
+++ b/osm_policy_module/cmd/policy_module_healthcheck.py
@@ -20,28 +20,21 @@
 # contact: bdiaz@whitestack.com or glavado@whitestack.com
 ##
 import argparse
-import asyncio
 import logging
 import subprocess
 import sys
 
-from aiokafka import AIOKafkaConsumer
-
-from osm_policy_module.core.config import Config
-
 log = logging.getLogger(__name__)
 
 
 def main():
     parser = argparse.ArgumentParser(prog='osm-policy-healthcheck')
     parser.add_argument('--config-file', nargs='?', help='POL configuration file')
-    args = parser.parse_args()
-    cfg = Config(args.config_file)
+    # args = parser.parse_args()
+    # cfg = Config(args.config_file)
 
     if not _processes_running():
         sys.exit(1)
-    if not _is_kafka_ok(cfg.get('message', 'host'), cfg.get('message', 'port')):
-        sys.exit(1)
     sys.exit(0)
 
 
@@ -57,26 +50,10 @@
     processes_running = ps.decode().split('\n')
     for p in processes_to_check:
         if not _contains_process(processes_running, p):
+            log.error("Process %s not running!" % p)
             return False
     return True
 
 
-def _is_kafka_ok(host, port):
-    async def _test_kafka(loop):
-        consumer = AIOKafkaConsumer(
-            'healthcheck',
-            loop=loop, bootstrap_servers='{}:{}'.format(host, port))
-        await consumer.start()
-        await consumer.stop()
-
-    try:
-        loop = asyncio.get_event_loop()
-        loop.run_until_complete(_test_kafka(loop))
-        return True
-    except Exception:
-        log.exception("POL can not connect to Kafka")
-        return False
-
-
 if __name__ == '__main__':
     main()
