diff --git a/app/controllers/api/active_storage_blobs_proxy_legacy_controller.rb b/app/controllers/api/active_storage_blobs_proxy_legacy_controller.rb
new file mode 100644
index 00000000..9be8a931
--- /dev/null
+++ b/app/controllers/api/active_storage_blobs_proxy_legacy_controller.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+
+module Api
+  class ActiveStorageBlobsProxyLegacyController < ApiBaseController
+    include ActiveStorage::Streaming
+
+    skip_before_action :authenticate_user!
+    skip_authorization_check
+
+    def show
+      Rollbar.info('Blob legacy') if defined?(Rollbar)
+
+      return render json: { error: 'Not authenticated' }, status: :unauthorized unless current_user
+
+      blob = ActiveStorage::Blob.find_signed!(params[:signed_blob_id] || params[:signed_id])
+
+      if blob.attachments.none? { |a| a.record.account.id == current_user.account_id }
+        Rollbar.error("Blob account not found: #{blob.id}") if defined?(Rollbar)
+
+        return head :not_found
+      end
+
+      if request.headers['Range'].present?
+        send_blob_byte_range_data blob, request.headers['Range']
+      else
+        http_cache_forever public: true do
+          response.headers['Accept-Ranges'] = 'bytes'
+          response.headers['Content-Length'] = blob.byte_size.to_s
+
+          send_blob_stream blob, disposition: params[:disposition]
+        end
+      end
+    end
+  end
+end
diff --git a/app/views/submissions/show.html.erb b/app/views/submissions/show.html.erb
index 16be0f4a..5c6b3e2e 100644
--- a/app/views/submissions/show.html.erb
+++ b/app/views/submissions/show.html.erb
@@ -6,7 +6,7 @@
     
     
       <% if @submission.audit_trail.present? %>
-        
+        
           <%= svg_icon('external_link', class: 'w-6 h-6') %>
           
             Audit Log
diff --git a/config/application.rb b/config/application.rb
index 9f94d17c..a47cdd90 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -22,6 +22,8 @@ module DocuSeal
 
     config.active_storage.routes_prefix = ''
 
+    config.active_storage.draw_routes = ENV['MULTITENANT'] != 'true'
+
     config.i18n.available_locales = %i[en en-US en-GB es-ES fr-FR pt-PT de-DE es it de fr pl uk cs pt he nl]
     config.i18n.fallbacks = [:en]
 
diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
index d8321f88..8b79455e 100644
--- a/config/initializers/devise.rb
+++ b/config/initializers/devise.rb
@@ -113,7 +113,7 @@ Devise.setup do |config|
   # This can reduce the time taken to boot the app but if your application
   # requires the Devise mappings to be loaded during boot time the application
   # won't boot properly.
-  # config.reload_routes = true
+  config.reload_routes = false
 
   # ==> Configuration for :database_authenticatable
   # For bcrypt, this is the cost for hashing the password and defaults to 12. If
diff --git a/config/routes.rb b/config/routes.rb
index f75c7a9c..88a6b0e6 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -82,9 +82,19 @@ Rails.application.routes.draw do
     resources :submissions_export, only: %i[index new]
   end
   resources :preview_document_page, only: %i[show], path: '/preview/:signed_uuid'
-  resource :blobs_proxy, only: %i[show], path: '/blobs_proxy/:signed_uuid/*filename(.:format)',
+  resource :blobs_proxy, only: %i[show], path: '/blobs_proxy/:signed_uuid/*filename',
                          controller: 'api/active_storage_blobs_proxy'
 
+  if Docuseal.multitenant?
+    resource :blobs_proxy_legacy, only: %i[show],
+                                  path: '/blobs/proxy/:signed_id/*filename',
+                                  controller: 'api/active_storage_blobs_proxy_legacy',
+                                  as: :rails_blob
+    get '/disk/:encoded_key/*filename' => 'active_storage/disk#show', as: :rails_disk_service
+    put '/disk/:encoded_token' => 'active_storage/disk#update', as: :update_rails_disk_service
+    post '/direct_uploads' => 'active_storage/direct_uploads#create', as: :rails_direct_uploads
+  end
+
   resources :start_form, only: %i[show update], path: 'd', param: 'slug' do
     get :completed
   end