diff --git a/bin/mentat-dbmngr.py b/bin/mentat-dbmngr.py
index 41c0e02fdcc4cd5de3582d0567ac61760c5a2620..737d5562524fef0cc932730cb3fa77e9bffd65d7 100755
--- a/bin/mentat-dbmngr.py
+++ b/bin/mentat-dbmngr.py
@@ -22,16 +22,14 @@ from email.mime.text import MIMEText
 #
 import pyzenkit.jsonconf
 import pyzenkit.zenscript
+import mentat.const
 import mentat.storage
 
 class MentatDbmngrScript(pyzenkit.zenscript.ZenScript):
     """
-    Script providing Mentat system database management functions and features
+    Script providing Mentat system database management functions and features.
     """
 
-    def __init__(self, **kwargs):
-        super().__init__(**kwargs)
-
     def get_default_command(self):
         """
         Return the name of a default script operation.
@@ -49,8 +47,8 @@ class MentatDbmngrScript(pyzenkit.zenscript.ZenScript):
         This command will determine the current status of all databases and its
         collections.
         """
-        db_config = self.c('_core_database')
-        db_schema = db_config['schema']
+        db_config = self.c(mentat.const.CKEY_CORE_DATABASE)
+        db_schema = db_config[mentat.const.CKEY_CORE_DATABASE_SCHEMA]
         s = mentat.storage.Storage()
 
         for db_n in s.database_names():
@@ -58,13 +56,13 @@ class MentatDbmngrScript(pyzenkit.zenscript.ZenScript):
                 continue
             self.logger.info("Inspecting database '{}'".format(db_n))
             if not db_n in db_schema:
-                self.logger.info("- database '{}' was not configured".format(db_n))
+                self.logger.warning("Database '{}' exists, but is not configured".format(db_n))
             else:
                 db_h = s.database(db_n)
                 db_c = db_schema[db_n]
                 for col_n in db_h.collection_names():
                     if not col_n in db_c['collections']:
-                        self.logger.info("- collection '{}.{}' was not configured".format(db_n, col_n))
+                        self.logger.warning("Collection '{}.{}' exists, but is not configured".format(db_n, col_n))
                     else:
                         col_h = db_h.collection(col_n)
                         col_c = db_schema[db_n]['collections'][col_n]
@@ -72,25 +70,13 @@ class MentatDbmngrScript(pyzenkit.zenscript.ZenScript):
                         index_list_config  = [i['name'] for i in col_c['indexes']]
                         for idx_n in index_list_current:
                             if not idx_n in index_list_config:
-                                self.logger.info("- index '{}' in collection '{}.{}' was not configured".format(idx_n, db_n, col_n))
+                                self.logger.info("Index '{}.{}':'{}' exists, but is not configured".format(db_n, col_n, idx_n))
                         for idx_n in index_list_config:
                             if not idx_n in index_list_current:
-                                self.logger.info("- index '{}' in collection '{}.{}' is missing".format(idx_n, db_n, col_n))
-
-        #pprint.pprint(s.database_names())
-        #pprint.pprint(s.database_walk())
-        #pprint.pprint(s.storage_info())
-        #d = s.database('mentat')
-        #pprint.pprint(d.collection_names())
-        #pprint.pprint(d.collection_stats('alerts'))
-        #c1 = d.collection('alerts')
-        #pprint.pprint(c1.count())
-        #c2 = s.collection('mentat', 'alerts')
-        #pprint.pprint(c2.count())
-        #i2 = c2.list_indexes()
-        #for idx in i2:
-        #    pprint.pprint(idx)
+                                self.logger.info("Index '{}.{}':'{}' is missing".format(db_n, col_n, idx_n))
+
         s.close()
+        return self.RESULT_SUCCESS
 
     def cbk_command_init(self):
         """
@@ -98,23 +84,29 @@ class MentatDbmngrScript(pyzenkit.zenscript.ZenScript):
 
         This command will perform all necessary database initializations.
         """
-        dbconfig = self.c('_core_database')
-        storage  = mentat.storage.Storage()
-        for db_n in sorted(dbconfig['schema'].keys()):
-            db_c = dbconfig['schema'][db_n]
-            db_h = storage.database(db_n)
+        db_config = self.c(mentat.const.CKEY_CORE_DATABASE)
+        db_schema = db_config[mentat.const.CKEY_CORE_DATABASE_SCHEMA]
+        s = mentat.storage.Storage()
+
+        for db_n in sorted(db_schema.keys()):
+            db_c = db_schema[db_n]
+            db_h = s.database(db_n)
+
             self.logger.info("Initializing database '{}'".format(db_n))
             for col_n in sorted(db_c['collections'].keys()):
                 col_c = db_c['collections'][col_n]
                 col_h = db_h.collection(col_n)
                 index_map = col_h.get_current_index_map()
+
                 self.logger.info("Initializing collection '{}.{}'".format(db_n, col_n))
                 for idx in col_c['indexes']:
                     if not idx['name'] in index_map:
-                        self.logger.info("Creating index '{}' for '{}.{}'".format(idx['name'], db_n, col_n))
+                        self.logger.info("Creating index '{}.{}':'{}'".format(db_n, col_n, idx['name']))
+                        col_h.index_create(**idx)
                     else:
-                        self.logger.info("Index '{}' for '{}.{}' already exists".format(idx['name'], db_n, col_n))
+                        self.logger.info("Index '{}.{}':'{}' already exists".format(db_n, col_n, idx['name']))
 
+        s.close()
         return self.RESULT_SUCCESS
 
     def cbk_command_watchdog(self):
@@ -123,7 +115,7 @@ class MentatDbmngrScript(pyzenkit.zenscript.ZenScript):
 
         This command will attempt to profile various collection data.
         """
-        dbconfig    = self.c('_core_database')
+        dbconfig    = self.c(mentat.const.CKEY_CORE_DATABASE)
         storage     = mentat.storage.Storage()
         database    = storage.database('mentat')
         collection  = database.collection('alerts')
@@ -149,7 +141,7 @@ class MentatDbmngrScript(pyzenkit.zenscript.ZenScript):
 
         This command will attempt to profile various collection data.
         """
-        dbconfig    = self.c('_core_database')
+        dbconfig    = self.c(mentat.const.CKEY_CORE_DATABASE)
         storage     = mentat.storage.Storage()
         database    = storage.database('mentat')
         collection  = database.collection('alerts')
@@ -243,12 +235,21 @@ if __name__ == "__main__":
     Execute the MentatDbmngrScript script.
     """
     script = MentatDbmngrScript(
+
+        description = 'mentat-dbmngr.py - Mentat system database management script',
+
+        #
+        # Configure required daemon paths
+        #
         path_bin = '/usr/local/bin',
         path_cfg = '/etc/mentat',
         path_log = '/var/mentat/log',
         path_run = '/var/mentat/run',
         path_tmp = '/tmp',
 
+        #
+        # Override default configurations
+        #
         default_config_dir = '/etc/mentat/core',
     )
     script.run()
diff --git a/conf/core/database.conf b/conf/core/database.conf
deleted file mode 100644
index 84554cc7db9c373687bc8c545fd91ec67e58cf8b..0000000000000000000000000000000000000000
--- a/conf/core/database.conf
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-    "_core_database": {
-        "config": {
-            "db_main": "mentat",
-            "col_main_alerts": "alerts",
-            "db_stats": "mentat_stats"
-        },
-        "schema": {
-            "mentat": {
-                "collections": {
-                    "alerts": {
-                        "indexes": [
-                            { "name": "ts",              "index": ["ts","ascending"] },
-                            { "name": "node_name",       "index": ["Node.Name","ascending"] },
-                            { "name": "node_sw",         "index": ["Node.SW","ascending"] },
-                            { "name": "category",        "index": ["Category","ascending"] },
-                            { "name": "description",     "index": ["Description","ascending"] },
-                            { "name": "detector",        "index": [["Node.Name","ascending"], ["Node.SW","ascending"]] },
-                            { "name": "detecttime",      "index": ["DetectTime","descending"] },
-                            { "name": "source_ip4",      "index": ["Source.IP4.ip","ascending"] },
-                            { "name": "source_ip4_min",  "index": ["Source.IP4.min","ascending"] },
-                            { "name": "source_ip4_max",  "index": ["Source.IP4.max","ascending"] },
-                            { "name": "target_ip4",      "index": ["Target.IP4.ip","ascending"] },
-                            { "name": "target_ip4_min",  "index": ["Target.IP4.min","ascending"] },
-                            { "name": "target_ip4_max",  "index": ["Target.IP4.max","ascending"] },
-                            { "name": "resolved_abuses", "index": ["_CESNET.ResolvedAbuses","ascending"] },
-                            { "name": "storage_time",    "index": ["_CESNET.StorageTime","descending"] }
-                        ]
-                    }
-                }
-            }
-        }
-    }
-}
diff --git a/conf/core/database.json.conf b/conf/core/database.json.conf
new file mode 100644
index 0000000000000000000000000000000000000000..593b1ec17c337b43e791d6c076cb33e4df26908d
--- /dev/null
+++ b/conf/core/database.json.conf
@@ -0,0 +1,174 @@
+{
+    "__core__database": {
+
+        "config": {
+            "db":       "mentat",
+            "db_test":  "mentat_test",
+            "db_stats": "mentat_stats",
+
+            "col_alerts": "alerts",
+
+            "col_stats_alerts": "statistics"
+        },
+
+        "schema": {
+            "mentat": {
+                "collections": {
+                    "alerts": {
+                        "indexes": [
+                            {
+                                "name": "_id_",
+                                "index": ["_id","ascending"],
+                                "background": false
+                            },
+                            {
+                                "name": "ts_1",
+                                "index": ["ts","ascending"],
+                                "background": true,
+                                "sparse": false
+                            },
+                            {
+                                "name": "DetectTime_-1_Node.Name_1",
+                                "index": [["DetectTime","descending"],["Node.Name","ascending"]],
+                                "background": true,
+                                "sparse": false
+                            },
+                            {
+                                "name": "DetectTime_-1_Category_1",
+                                "index": [["DetectTime","descending"],["Category","ascending"]],
+                                "background": true,
+                                "sparse": false
+                            },
+                            {
+                                "name": "Source.IP4.ip_1",
+                                "index": ["Source.IP4.ip","ascending"],
+                                "background": true,
+                                "sparse": true
+                            },
+                            {
+                                "name": "Target.IP4.ip_1",
+                                "index": ["Target.IP4.ip","ascending"],
+                                "background": true,
+                                "sparse": true
+                            },
+                            {
+                                "name": "Source.IP4.min_1_Source.IP4.max_1",
+                                "index": [["Source.IP4.min","ascending"],["Source.IP4.max","ascending"]],
+                                "background": true,
+                                "sparse": true
+                            },
+                            {
+                                "name": "Target.IP4.min_1_Target.IP4.max_1",
+                                "index": [["Target.IP4.min","ascending"],["Target.IP4.max","ascending"]],
+                                "background": true,
+                                "sparse": true
+                            },
+                            {
+                                "name": "DetectTime_-1_Target.IP4.min_1_Target.IP4.max_1",
+                                "index": [["DetectTime","descending"],["Target.IP4.min","ascending"],["Target.IP4.max","ascending"]],
+                                "background": true,
+                                "sparse": false
+                            },
+                            {
+                                "name": "_CESNET.EventClass_1",
+                                "index": ["_CESNET.EventClass","ascending"],
+                                "background": true,
+                                "sparse": false
+                            },
+                            {
+                                "name": "ts_-1__CESNET.ResolvedAbuses_1",
+                                "index": [["ts","descending"],["_CESNET.ResolvedAbuses","ascending"]],
+                                "background": true,
+                                "sparse": false,
+                                "partialFilterExpression" : {
+                                        "_CESNET.ResolvedAbuses" : {
+                                                "$exists" : true
+                                        }
+                                }
+                            },
+                            {
+                                "name": "_CESNET.StorageTime_-1",
+                                "index": ["_CESNET.StorageTime","descending"],
+                                "background": true,
+                                "sparse": false
+                            }
+                        ]
+                    }
+                }
+            },
+
+            "mentat_stats": {
+                "collections": {
+                    "statistics": {
+                        "indexes": [
+                            {
+                                "name": "_id_",
+                                "index": ["_id","ascending"],
+                                "background": false
+                            },
+                            {
+                                "name": "ts",
+                                "index": ["ts","descending"],
+                                "background": true,
+                                "sparse": false
+                            },
+                            {
+                                "name": "ts_from",
+                                "index": ["ts_from","descending"],
+                                "background": true,
+                                "sparse": false
+                            },
+                            {
+                                "name": "ts_to",
+                                "index": ["ts_to","descending"],
+                                "background": true,
+                                "sparse": false
+                            }
+                        ]
+                    }
+                }
+            }
+        }
+    }
+}
+
+#
+# Following indices were defined previously, but they are not used anymore.
+# Perhaps they will be handy again.
+#
+#{
+#    "name": "node_name",
+#    "index": ["Node.Name","ascending"],
+#    "background": true,
+#    "sparse": false
+#}
+#{
+#    "name": "node_sw",
+#    "index": ["Node.SW","ascending"],
+#    "background": true,
+#    "sparse": false
+#}
+#{
+#    "name": "category",
+#    "index": ["Category","ascending"],
+#    "background": true,
+#    "sparse": false
+#}
+#{
+#    "name": "description",
+#    "index": ["Description","ascending"],
+#    "background": true,
+#    "sparse": false
+#}
+#{
+#    "name": "detector",
+#    "index": [["Node.Name","ascending"], ["Node.SW","ascending"]],
+#    "background": true,
+#    "sparse": false
+#}
+#{
+#    "name": "detecttime",
+#    "index": ["DetectTime","descending"],
+#    "background": true,
+#    "sparse": false
+#}
diff --git a/deploy/ctrl/conffiles b/deploy/ctrl/conffiles
index c7a29327d1e52fbcbee8c14907a49fba147559df..951fd42bb2a7a87976dcb9584f5880798acfd1d3 100755
--- a/deploy/ctrl/conffiles
+++ b/deploy/ctrl/conffiles
@@ -9,4 +9,4 @@
 /etc/mentat/mentat-ideagen.py.conf
 /etc/mentat/mentat-inspector.py.conf
 /etc/mentat/mentat-sampler.py.conf
-/etc/mentat/core/database.conf
+/etc/mentat/core/database.json.conf
diff --git a/lib/mentat/const.py b/lib/mentat/const.py
new file mode 100644
index 0000000000000000000000000000000000000000..1763e76a55e95ed0c9845fca919c1e9be54dec51
--- /dev/null
+++ b/lib/mentat/const.py
@@ -0,0 +1,10 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+#-------------------------------------------------------------------------------
+# Copyright (C) since 2011 CESNET, z.s.p.o
+# Use of this source is governed by the MIT license, see LICENSE file.
+#-------------------------------------------------------------------------------
+
+CKEY_CORE_DATABASE        = '__core__database'
+CKEY_CORE_DATABASE_SCHEMA = 'schema'
+CKEY_CORE_DATABASE_CONFIG = 'config'