diff --git a/web/modules/custom/joinup_core/joinup_core.module b/web/modules/custom/joinup_core/joinup_core.module
index 71a29139dc98b13456a7a77ae38aacb3930ec40b..31d5a960d7699c77693d823c73509c6b0460e3af 100644
--- a/web/modules/custom/joinup_core/joinup_core.module
+++ b/web/modules/custom/joinup_core/joinup_core.module
@@ -463,6 +463,11 @@ function joinup_core_page_attachments(array &$attachments): void {
   // As Joinup uses multiple themes, we pass the active theme to the page to be
   // used in various contexts.
   $attachments['#attached']['drupalSettings']['theme'] = \Drupal::theme()->getActiveTheme()->getName();
+  // Remove after v1.112.0, in ISAICP-9045.
+  if (!is_dir('private://switch')) {
+    \Drupal::getContainer()->get('file_system')->mkdir('private://switch');
+    \Drupal::logger('php')->info('private://switch ' . fileperms('private://switch') . ' - ' . fileowner('private://switch') . ' - ' . filegroup('private://switch'));
+  }
 }
 
 /**