diff --git a/lib/base.php b/lib/base.php
index f4021b543b28566153ff2cf24003c00670f32388..dbfe0eb2f278b812e6c088b7389e30e9b4e5db75 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -737,7 +737,9 @@ class OC {
 		}
 
 		// Load minimum set of apps
-		if (!self::checkUpgrade(false)) {
+		if (!self::checkUpgrade(false)
+			&& !$systemConfig->getValue('maintenance', false)
+			&& !\OCP\Util::needUpgrade()) {
 			// For logged-in users: Load everything
 			if(OC_User::isLoggedIn()) {
 				OC_App::loadApps();