diff --git a/typo3/sysext/extbase/Classes/Configuration/BackendConfigurationManager.php b/typo3/sysext/extbase/Classes/Configuration/BackendConfigurationManager.php
index 8dcaac1a1ea6e2290a30807ea0bf747325aa7493..7a24fcf32d8a3f240c0f2d9314337a79d33fd0d4 100644
--- a/typo3/sysext/extbase/Classes/Configuration/BackendConfigurationManager.php
+++ b/typo3/sysext/extbase/Classes/Configuration/BackendConfigurationManager.php
@@ -215,29 +215,33 @@ class BackendConfigurationManager implements SingletonInterface
         $site = $request?->getAttribute('site');
 
         $rootLine = [];
+        $sysTemplateFakeRow = [
+            'uid' => 0,
+            'pid' => 0,
+            'title' => 'Fake sys_template row to force extension statics loading',
+            'root' => 1,
+            'clear' => 3,
+            'include_static_file' => '',
+            'basedOn' => '',
+            'includeStaticAfterBasedOn' => 0,
+            'static_file_mode' => false,
+            'constants' => '',
+            'config' => '',
+            'deleted' => 0,
+            'hidden' => 0,
+            'starttime' => 0,
+            'endtime' => 0,
+            'sorting' => 0,
+        ];
         if ($pageId > 0) {
             $rootLine = GeneralUtility::makeInstance(RootlineUtility::class, $pageId)->get();
             $sysTemplateRows = $this->sysTemplateRepository->getSysTemplateRowsByRootline($rootLine, $request);
             ksort($rootLine);
-        } else {
-            $sysTemplateRows[] = [
-                'uid' => 0,
-                'pid' => 0,
-                'title' => 'Fake sys_template row to force extension statics loading',
-                'root' => 1,
-                'clear' => 3,
-                'include_static_file' => '',
-                'basedOn' => '',
-                'includeStaticAfterBasedOn' => 0,
-                'static_file_mode' => false,
-                'constants' => '',
-                'config' => '',
-                'deleted' => 0,
-                'hidden' => 0,
-                'starttime' => 0,
-                'endtime' => 0,
-                'sorting' => 0,
-            ];
+        }
+        if (empty($sysTemplateRows)) {
+            // If there is no page (pid 0 only), or if the first 'is_siteroot' site has no sys_template record,
+            // then we "fake" a sys_template row: This triggers inclusion of 'global' and 'extension static' TypoScript.
+            $sysTemplateRows[] = $sysTemplateFakeRow;
         }
 
         // We do cache tree and tokens, but don't cache full ast in this backend context for now:
diff --git a/typo3/sysext/form/Classes/Controller/AbstractBackendController.php b/typo3/sysext/form/Classes/Controller/AbstractBackendController.php
index 8953c8be826959ba4a98bf1855761b117d668b45..cc771f62c0f717d74990d5c71ca189025242401d 100644
--- a/typo3/sysext/form/Classes/Controller/AbstractBackendController.php
+++ b/typo3/sysext/form/Classes/Controller/AbstractBackendController.php
@@ -41,8 +41,13 @@ abstract class AbstractBackendController extends ActionController
 
     public function initializeObject()
     {
-        $this->formSettings = GeneralUtility::makeInstance(ConfigurationManagerInterface::class)
-            ->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_YAML_SETTINGS, 'form');
+        $configurationManager = GeneralUtility::makeInstance(ConfigurationManagerInterface::class);
+        $this->formSettings = $configurationManager->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_YAML_SETTINGS, 'form');
+        if (!isset($this->formSettings['formManager'])) {
+            // Config sub array formManager is crucial and should always exist. If it does
+            // not, this indicates an issue in config loading logic. Except in this case.
+            throw new \LogicException('Configuration could not be loaded', 1681549038);
+        }
     }
 
     /**