diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php
index 72b9b9052aa95497a426b166c2028a229e4e0e13..60fd9aa9bbaae5f0a154ddabaa5ff5092ee0b4a3 100644
--- a/core/Plugin/Manager.php
+++ b/core/Plugin/Manager.php
@@ -15,7 +15,6 @@ use Piwik\Columns\Dimension;
 use Piwik\Config;
 use Piwik\Config as PiwikConfig;
 use Piwik\Container\StaticContainer;
-use Piwik\Db;
 use Piwik\EventDispatcher;
 use Piwik\Exception\PluginDeactivatedException;
 use Piwik\Filesystem;
@@ -26,10 +25,8 @@ use Piwik\Plugin;
 use Piwik\Plugin\Dimension\ActionDimension;
 use Piwik\Plugin\Dimension\ConversionDimension;
 use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Session;
 use Piwik\Settings\Storage as SettingsStorage;
 use Piwik\Theme;
-use Piwik\Tracker;
 use Piwik\Translation\Translator;
 use Piwik\Updater;
 
@@ -838,37 +835,56 @@ class Manager
     {
         $pluginsToPostPendingEventsTo = array();
         foreach ($this->pluginsToLoad as $pluginName) {
-            if (!$this->isPluginLoaded($pluginName)
-                && !$this->isPluginThirdPartyAndBogus($pluginName)
-            ) {
-                $newPlugin = $this->loadPlugin($pluginName);
-                if ($newPlugin === null) {
-                    continue;
-                }
+            $pluginsToPostPendingEventsTo = $this->reloadActivatedPlugin($pluginName, $pluginsToPostPendingEventsTo);
+        }
 
-                if ($newPlugin->hasMissingDependencies()) {
-                    $this->deactivatePlugin($pluginName);
+        // post pending events after all plugins are successfully loaded
+        foreach ($pluginsToPostPendingEventsTo as $plugin) {
+            EventDispatcher::getInstance()->postPendingEventsTo($plugin);
+        }
+    }
 
-                    // at this state we do not know yet whether current user has super user access. We do not even know
-                    // if someone is actually logged in.
-                    $message  = Piwik::translate('CorePluginsAdmin_WeDeactivatedThePluginAsItHasMissingDependencies', array($pluginName, $newPlugin->getMissingDependenciesAsString()));
-                    $message .= ' ';
-                    $message .= Piwik::translate('General_PleaseContactYourPiwikAdministrator');
+    private function reloadActivatedPlugin($pluginName, $pluginsToPostPendingEventsTo)
+    {
+        if ($this->isPluginLoaded($pluginName) || $this->isPluginThirdPartyAndBogus($pluginName)) {
+            return $pluginsToPostPendingEventsTo;
+        }
 
-                    $notification = new Notification($message);
-                    $notification->context = Notification::CONTEXT_ERROR;
-                    Notification\Manager::notify('PluginManager_PluginDeactivated', $notification);
-                    continue;
-                }
+        $newPlugin = $this->loadPlugin($pluginName);
 
-                $pluginsToPostPendingEventsTo[] = $newPlugin;
+        if ($newPlugin === null) {
+            return $pluginsToPostPendingEventsTo;
+        }
+
+        $requirements = $newPlugin->getMissingDependencies();
+
+        if (!empty($requirements)) {
+            foreach ($requirements as $requirement) {
+                $possiblePluginName = $requirement['requirement'];
+                if (in_array($possiblePluginName, $this->pluginsToLoad, $strict = true)) {
+                    $pluginsToPostPendingEventsTo = $this->reloadActivatedPlugin($possiblePluginName, $pluginsToPostPendingEventsTo);
+                }
             }
         }
 
-        // post pending events after all plugins are successfully loaded
-        foreach ($pluginsToPostPendingEventsTo as $plugin) {
-            EventDispatcher::getInstance()->postPendingEventsTo($plugin);
+        if ($newPlugin->hasMissingDependencies()) {
+            $this->deactivatePlugin($pluginName);
+
+            // at this state we do not know yet whether current user has super user access. We do not even know
+            // if someone is actually logged in.
+            $message  = Piwik::translate('CorePluginsAdmin_WeDeactivatedThePluginAsItHasMissingDependencies', array($pluginName, $newPlugin->getMissingDependenciesAsString()));
+            $message .= ' ';
+            $message .= Piwik::translate('General_PleaseContactYourPiwikAdministrator');
+
+            $notification = new Notification($message);
+            $notification->context = Notification::CONTEXT_ERROR;
+            Notification\Manager::notify('PluginManager_PluginDeactivated', $notification);
+            return $pluginsToPostPendingEventsTo;
         }
+
+        $pluginsToPostPendingEventsTo[] = $newPlugin;
+
+        return $pluginsToPostPendingEventsTo;
     }
 
     public function getIgnoredBogusPlugins()