diff --git a/flowspy/settings.py.dist b/flowspy/settings.py.dist
index 2b90aeb73d2b9e414a913a9a34e6919c5102155e..850509aa9f49d0169281e6fbbb2e789a2bbd704d 100644
--- a/flowspy/settings.py.dist
+++ b/flowspy/settings.py.dist
@@ -567,6 +567,8 @@ NETCONF_PORT = 830
 # generic mitigation statistics support
 
 MITIGATION_STATISTIC_COLLECTOR_SPECIFIC_CLASS="mitigation_stats_collector_specific_junos_snmp"
+#MITIGATION_STATISTIC_COLLECTOR_SPECIFIC_CLASS="mitigation_stats_collector_specific_nokia"
+#MITIGATION_STATISTIC_COLLECTOR_SPECIFIC_CLASS="mitigation_stats_collector_specific_multi"
 
 ##############################################################################
 ##############################################################################
diff --git a/utils/dfncert/fodadapter.py b/utils/dfncert/fodadapter.py
index 2c876f3854c2cede672edcf3ae1cdca36e14b3a5..be3abf84cb3574ca3f73cf2b7cfb4466615ff275 100644
--- a/utils/dfncert/fodadapter.py
+++ b/utils/dfncert/fodadapter.py
@@ -130,10 +130,13 @@ def get_nokia_stats():
 
     logger.info("get_nokia_stats(): before creating manager")
     #multiprocessing.set_start_method('spawn')
+
+    ## hack to make current celery worker process non-daemonic, so it can reuse multiprocessing:
+    #del (multiprocessing.current_process()._config)['daemon']
     #manager = multiprocessing.Manager()
 
     import queue
-    #q = queue.Queue()
+    ##q = queue.Queue()
     manager = queue
 
     logger.info("get_nokia_stats(): after creating manager")
@@ -145,7 +148,7 @@ def get_nokia_stats():
 
     if option_oneshot:
 
-        logger.info("get_nokia_stats(): option_oneshot")
+        logger.info("get_nokia_stats(): option_oneshotx ROUTERS="+str(ROUTERS))
 
         router_data = {router['name']: query_router_once(router) for router in ROUTERS}
 
diff --git a/utils/mitigation_stats_collector.py b/utils/mitigation_stats_collector.py
index dfad25659ebf62110099d49be9cd67ca5e212ec2..cce3e1957a389984a5e08afd72477dce3fd2cdd4 100644
--- a/utils/mitigation_stats_collector.py
+++ b/utils/mitigation_stats_collector.py
@@ -11,6 +11,9 @@ if hasattr(settings, "MITIGATION_STATISTIC_COLLECTOR_SPECIFIC_CLASS") and settin
 elif hasattr(settings, "MITIGATION_STATISTIC_COLLECTOR_SPECIFIC_CLASS") and settings.MITIGATION_STATISTIC_COLLECTOR_SPECIFIC_CLASS == "mitigation_stats_collector_specific_junos_snmp":
   from utils import mitigation_stats_collector_specific_junos_snmp as mitigation_stats_collector_specific_class
   mitigation_stats_collector_specific = mitigation_stats_collector_specific_class.MitigationStatisticCollectorSpecific_JunosSnmp()
+elif hasattr(settings, "MITIGATION_STATISTIC_COLLECTOR_SPECIFIC_CLASS") and settings.MITIGATION_STATISTIC_COLLECTOR_SPECIFIC_CLASS == "mitigation_stats_collector_specific_multi":
+  from utils import mitigation_stats_collector_specific_multi as mitigation_stats_collector_specific_class
+  mitigation_stats_collector_specific = mitigation_stats_collector_specific_class.MitigationStatisticCollectorSpecific_Multi()
 else: # default is junos_snmp for compatibility
   from utils import mitigation_stats_collector_specific_junos_snmp as mitigation_stats_collector_specific_class
   mitigation_stats_collector_specific = mitigation_stats_collector_specific_class.MitigationStatisticCollectorSpecific_JunosSnmp()
diff --git a/utils/mitigation_stats_collector_specific_multi.py b/utils/mitigation_stats_collector_specific_multi.py
new file mode 100644
index 0000000000000000000000000000000000000000..b6d04b6e965484abedbbec52bc7edb3bb4c90b1e
--- /dev/null
+++ b/utils/mitigation_stats_collector_specific_multi.py
@@ -0,0 +1,49 @@
+# -*- coding: utf-8 -*- vim:fileencoding=utf-8:
+# vim: tabstop=4:shiftwidth=4:softtabstop=4:expandtab
+
+from pysnmp.hlapi.asyncore import *
+from django.conf import settings
+from datetime import datetime, timedelta
+import json
+import os
+import time
+import re
+
+from flowspec.models import Route
+from utils.route_spec_utils import get_rulename_by_ruleparams__generic, unify_ratelimit_value
+
+from utils.mitigation_stats_collector_specific_base import MitigationStatisticCollectorSpecific_Base
+from utils.mitigation_stats_collector_specific_junos_snmp import MitigationStatisticCollectorSpecific_JunosSnmp
+from utils.mitigation_stats_collector_specific_nokia import MitigationStatisticCollectorSpecific_Nokia
+
+import flowspec.logging_utils
+logger = flowspec.logging_utils.logger_init_default(__name__, "celery_multistats.log", False)
+
+#
+
+class MitigationStatisticCollectorSpecific_Multi(MitigationStatisticCollectorSpecific_Base):
+
+  #
+
+  # to be overriden in sub classes
+  def get_new_mitigation_statistic_data(self):
+     return self.get_statistic_data__from_multiple_sources()
+  
+  # to be overriden in sub classes
+  def get_statistic_data_rule_key(self, ruleobj):
+     return get_rulename_by_ruleparams__generic(ruleobj)
+
+
+  def get_statistic_data__from_multiple_sources(self):
+
+    # TODO: run all parallel:
+
+    mitigation_stats_collector_specific1 = MitigationStatisticCollectorSpecific_Nokia()
+    stats_data1 = mitigation_stats_collector_specific1.get_new_mitigation_statistic_data()
+
+
+    mitigation_stats_collector_specific2 = MitigationStatisticCollectorSpecific_JunosSnmp()
+    stats_data2 = mitigation_stats_collector_specific2.get_new_mitigation_statistic_data()
+
+    # TODO: merge data 
+