def configuration_dispatch(self, not_configured=None):
        if not not_configured:
            self.dispatcher = Dispatcher(self.conf, self.link_to_myself)
            self.cur_conf = self.conf
            first_connection_try_count = 0
            logger.info("Connecting to my satellites...")
            while True:
                first_connection_try_count += 1
                self.all_connected = True
                for satellite in self.dispatcher.all_daemons_links:
                    if satellite == self.link_to_myself:
                        continue
                    if not satellite.active:
                        continue
                    connected = self.daemon_connection_init(satellite, set_wait_new_conf=True)
                    logger.debug("  %s is %s", satellite, connected)
                    self.all_connected = self.all_connected and connected
                if self.all_connected:
                    logger.info("- satellites connection
                    break
                else:
                    logger.warning("- satellites connection
                                   "let's give another chance after %d seconds...",
                                   first_connection_try_count,
                                   self.link_to_myself.polling_interval)
                    if first_connection_try_count >= 3:
                        self.request_stop("All the daemons connections could not be established "
                                          "despite %d tries! "
                                          "Sorry, I bail out!" % first_connection_try_count,
                                          exit_code=4)
                    time.sleep(self.link_to_myself.polling_interval)
            _t0 = time.time()
            self.all_connected = self.dispatcher.check_reachable()
            statsmgr.timer('dispatcher.check-alive', time.time() - _t0)
            _t0 = time.time()
            logger.info("Preparing the configuration for dispatching...")
            self.dispatcher.prepare_dispatch()
            statsmgr.timer('dispatcher.prepare-dispatch', time.time() - _t0)
            logger.info("- configuration is ready to dispatch")
        first_dispatch_try_count = 0
        logger.info("Dispatching the configuration to my satellites...")
        while True:
            first_dispatch_try_count += 1
            _t0 = time.time()
            logger.info("- configuration dispatching
            self.dispatcher.check_reachable(forced=True)
            statsmgr.timer('dispatcher.dispatch', time.time() - _t0)
            pause = max(1, max(self.conf.daemons_dispatch_timeout, len(self.my_daemons) * 0.5))
            logger.info("- pausing %d seconds...", pause)
            time.sleep(pause)
            _t0 = time.time()
            logger.info("- checking configuration dispatch...")
            self.dispatcher.check_dispatch()
            statsmgr.timer('dispatcher.check-dispatch', time.time() - _t0)
            if self.dispatcher.dispatch_ok:
                logger.info("- configuration dispatching
                break
            else:
                logger.warning("- configuration dispatching
                               "let's give another chance...", first_dispatch_try_count)
                if first_dispatch_try_count >= 3:
                    self.request_stop("The configuration could not be dispatched despite %d tries! "
                                      "Sorry, I bail out!" % first_connection_try_count,
                                      exit_code=4)