return self.logger
 
 
-class KibanaDashboardLogger(Logger):
+class DashboardLogger(Logger):
     file_path = '/var/log/kibana_dashboard'
 
     def __init__(self, logger_name):
-        super(KibanaDashboardLogger, self).__init__(logger_name)
+        super(DashboardLogger, self).__init__(logger_name)
 
 
     """
 
     def __init__(self):
-        self._default_config_location = "./config.ini"
+        self._default_config_location = "../etc/config.ini"
         self.elastic_url = 'http://localhost:9200'
         self.elastic_creds = None
         self.destination = 'elasticsearch'
 
 import yaml
 
 
-with open('./testcases.yaml') as f:
+with open('./functest/testcases.yaml') as f:
     testcases_yaml = yaml.safe_load(f)
 f.close()
 
 
 
 import argparse
 
-import logger_utils
-import shared_utils
-import testcases_parser
-from config import APIConfig
+from common import logger_utils, elastic_access
+from conf import testcases
+from conf.config import APIConfig
 
-logger = logger_utils.KibanaDashboardLogger('elastic2kibana').get
+logger = logger_utils.DashboardLogger('elastic2kibana').get
 
 parser = argparse.ArgumentParser()
 parser.add_argument("-c", "--config-file",
 
 args = parser.parse_args()
 CONF = APIConfig().parse(args.config_file)
+base_elastic_url = CONF.elastic_url
+generate_inputs = CONF.is_js
+input_file_path = CONF.js_path
+kibana_url = CONF.kibana_url
+es_creds = CONF.elastic_creds
 
 _installers = {'fuel', 'apex', 'compass', 'joid'}
 
         for visualization in self._kibana_visualizations:
             url = urlparse.urljoin(base_elastic_url, '/.kibana/visualization/{}'.format(visualization.id))
             logger.debug("publishing visualization '{}'".format(url))
-            shared_utils.publish_json(visualization, es_creds, url)
+            elastic_access.publish_json(visualization, es_creds, url)
 
     def _construct_panels(self):
         size_x = 6
     def _publish(self):
         url = urlparse.urljoin(base_elastic_url, '/.kibana/dashboard/{}'.format(self.id))
         logger.debug("publishing dashboard '{}'".format(url))
-        shared_utils.publish_json(self, es_creds, url)
+        elastic_access.publish_json(self, es_creds, url)
 
     def publish(self):
         self._publish_visualizations()
         }
     })
 
-    elastic_data = shared_utils.get_elastic_docs(urlparse.urljoin(base_elastic_url, '/test_results/mongo2elastic'),
-                                                 es_creds, query_json)
+    elastic_data = elastic_access.get_elastic_docs(urlparse.urljoin(base_elastic_url, '/test_results/mongo2elastic'),
+                                                   es_creds, query_json)
 
     pods_and_scenarios = {}
 
     :return: list of KibanaDashboards
     """
     kibana_dashboards = []
-    for project, case_dicts in testcases_parser.testcases_yaml.items():
+    for project, case_dicts in testcases.testcases_yaml.items():
         for case in case_dicts:
             case_name = case.get('name')
             visualizations = case.get('visualizations')
         js_file_fdesc.write(str(js_dict).replace("u'", "'"))
 
 
-if __name__ == '__main__':
-    base_elastic_url = CONF.elastic_url
-    generate_inputs = CONF.is_js
-    input_file_path = CONF.js_path
-    kibana_url = CONF.kibana_url
-    es_creds = CONF.elastic_creds
-
+def main():
     dashboards = construct_dashboards()
 
     for kibana_dashboard in dashboards:
 
--- /dev/null
+from elastic2kibana.main import main
+
+if __name__ == '__main__':
+    main()
 
 
 import argparse
 
-import logger_utils
-import mongo2elastic_format
-import shared_utils
-import testcases_parser
-from config import APIConfig
+from common import logger_utils, elastic_access
+from conf import testcases
+from conf.config import APIConfig
+from mongo2elastic import format
 
-logger = logger_utils.KibanaDashboardLogger('mongo2elastic').get
+logger = logger_utils.DashboardLogger('mongo2elastic').get
 
 parser = argparse.ArgumentParser()
 parser.add_argument("-c", "--config-file",
     def format(self):
         try:
             if self._verify_document() and self.fmt:
-                self.is_formatted = vars(mongo2elastic_format)[self.fmt](self.doc)
+                self.is_formatted = vars(format)[self.fmt](self.doc)
             else:
                 self.is_formatted = False
         except Exception:
             self._publish()
 
     def _publish(self):
-        status, data = shared_utils.publish_json(self.doc, self.creds, self.to)
+        status, data = elastic_access.publish_json(self.doc, self.creds, self.to)
         if status > 300:
             logger.error('Publish record[{}] failed, due to [{}]'
                          .format(self.doc, json.loads(data)['error']['reason']))
             exit(-1)
 
     def get_existed_docs(self):
-        self.existed_docs = shared_utils.get_elastic_docs_by_days(self.elastic_url, self.creds, self.days)
+        self.existed_docs = elastic_access.get_elastic_docs_by_days(self.elastic_url, self.creds, self.days)
         return self
 
     def publish(self):
     if to == 'elasticsearch':
         to = base_elastic_url
 
-    for project, case_dicts in testcases_parser.testcases_yaml.items():
+    for project, case_dicts in testcases.testcases_yaml.items():
         for case_dict in case_dicts:
             case = case_dict.get('name')
-            fmt = testcases_parser.compose_format(case_dict.get('format'))
+            fmt = testcases.compose_format(case_dict.get('format'))
             DocumentsPublisher(project,
                                case,
                                fmt,
                                base_elastic_url,
                                es_creds,
                                to).export().get_existed_docs().publish()
-
-
-if __name__ == '__main__':
-    main()
\ No newline at end of file
 
--- /dev/null
+from mongo2elastic.main import main
+
+if __name__ == '__main__':
+    main()
 
 destination = elasticsearch
 
 [kibana]
-url = http://10.63.243.17/kibana/app/kibana
+url = http://10.63.243.17:5601/app/kibana
 js = true
 js_path = /usr/share/nginx/html/kibana_dashboards/conf.js
 
 
 import argparse
 
-import shared_utils
+from dashboard.common import elastic_access
 
 logger = logging.getLogger('clear_kibana')
 logger.setLevel(logging.DEBUG)
 
 
 def delete_all(url, es_creds):
-    ids = shared_utils.get_elastic_docs(url, es_creds, body=None, field='_id')
+    ids = elastic_access.get_elastic_docs(url, es_creds, body=None, field='_id')
     for id in ids:
         del_url = '/'.join([url, id])
-        shared_utils.delete_request(del_url, es_creds)
+        elastic_access.delete_request(del_url, es_creds)
 
 
 if __name__ == '__main__':