diff --git a/cli/Commands/Plugins/PluginInfo.php b/cli/Commands/Plugins/PluginInfo.php
index e1b00f48e522b93f7bc2a4911658500c5e029d43..9809b138aa97f002105d16b409b9cd66de46bd58 100644
--- a/cli/Commands/Plugins/PluginInfo.php
+++ b/cli/Commands/Plugins/PluginInfo.php
@@ -43,7 +43,7 @@ class PluginInfo extends AbstractPluginCommand
             if (is_dir($plugindir . '/migrations')) {
                 $schemaVersion = new \DBSchemaVersion($plugin['name']);
                 $migrator = new \Migrator($plugindir . '/migrations', $schemaVersion);
-                $plugin['pending_migrations'] = count($migrator->relevantMigrations(null));
+                $plugin['pending_migrations'] = $migrator->pendingMigrations();
                 $plugin['schema_version'] = $schemaVersion->get();
             }
 
diff --git a/lib/classes/PluginAdministration.php b/lib/classes/PluginAdministration.php
index 763f67dca3d8f20df82c5128c9f649a46d8edc25..2732f58e6f8c38421f4b96b5e140b742003ce47d 100644
--- a/lib/classes/PluginAdministration.php
+++ b/lib/classes/PluginAdministration.php
@@ -364,7 +364,7 @@ class PluginAdministration
             if (is_dir($plugindir . '/migrations')) {
                 $schema_version = new DBSchemaVersion($plugin['name']);
                 $migrator = new Migrator($plugindir . '/migrations', $schema_version);
-                $info[$id]['pending_migrations'] = count($migrator->relevantMigrations(null));
+                $info[$id]['pending_migrations'] = $migrator->pendingMigrations();
                 $info[$id]['schema_version'] = $schema_version->get();
             }
         }
diff --git a/lib/migrations/Migrator.php b/lib/migrations/Migrator.php
index 07caa90baa604d5552e3f12c00fac6884e1bb692..50c8f3fe0cd0da7e1b8e1d5361de57640aff6852 100644
--- a/lib/migrations/Migrator.php
+++ b/lib/migrations/Migrator.php
@@ -469,6 +469,25 @@ class Migrator
         return $all_branches ? $versions : $versions[$this->schema_version->getBranch()];
     }
 
+    /**
+     * Returns the number of available, but not yet applied migrations.
+     *
+     * @return int  migration count
+     */
+    public function pendingMigrations()
+    {
+        $pending = 0;
+
+        foreach (array_keys($this->migrationClasses()) as $version) {
+            list($branch, $version) = $this->migrationBranchAndVersion($version);
+            if ($this->schema_version->get($branch) < $version) {
+                ++$pending;
+            }
+        }
+
+        return $pending;
+    }
+
     /**
      * Overridable method used to return a textual representation of what's going
      * on in me. You can use me as you would use printf.
diff --git a/lib/seminar_open.php b/lib/seminar_open.php
index 33436d490d2c201f45b87fded6e0420a41ecf082..e79d39c5645ca18c167c0dc8d850eebd678366b3 100644
--- a/lib/seminar_open.php
+++ b/lib/seminar_open.php
@@ -161,12 +161,10 @@ if (!Request::isXhr() && $perm->have_perm('root')) {
             new DBSchemaVersion('studip')
         );
 
-        $migrations = $migrator->relevantMigrations(null);
-
         $_SESSION['migration-check'] = [
             'disabled'  => $_SESSION['migration-check']['disabled'] ?? false,
             'timestamp' => time(),
-            'count'     => count($migrations),
+            'count'     => $migrator->pendingMigrations()
         ];
     }
 
diff --git a/tests/unit/lib/classes/MigrationTest.php b/tests/unit/lib/classes/MigrationTest.php
index 0aabbcd42c6824c0ac9ea06acb42f4bfc5de4d47..dd78ac7ed7df67e1de1f426202a13989db736dd1 100644
--- a/tests/unit/lib/classes/MigrationTest.php
+++ b/tests/unit/lib/classes/MigrationTest.php
@@ -95,7 +95,7 @@ class MigrationTest extends \Codeception\Test\Unit
         $migrator = $this->getMigrator($schema_version);
         $migrator->migrateTo(null);
         $this->assertSame(10, $schema_version->get());
-        $this->assertSame(0, count($migrator->relevantMigrations(null)));
+        $this->assertSame(0, $migrator->pendingMigrations());
 
         return $schema_version;
     }
@@ -108,7 +108,7 @@ class MigrationTest extends \Codeception\Test\Unit
         $migrator = $this->getMigrator($schema_version);
         $migrator->migrateTo(0);
         $this->assertSame(0, $schema_version->get());
-        $this->assertSame(4, count($migrator->relevantMigrations(null)));
+        $this->assertSame(4, $migrator->pendingMigrations());
     }
 
     public function testGaps()