diff --git a/app/services/active_storage_key_converter.rb b/app/services/active_storage_key_converter.rb
new file mode 100644
index 0000000000000000000000000000000000000000..1e5c643e328cc54510e92b9371cac0dfd84b42d8
--- /dev/null
+++ b/app/services/active_storage_key_converter.rb
@@ -0,0 +1,19 @@
+class ActiveStorageKeyConverter
+  def self.convert(legacy_signed_id)
+    # Try to find blob with the un-modified legacy_signed_id
+    blob = ActiveStorage::Blob.find_signed!(legacy_signed_id)
+    legacy_signed_id
+  rescue ActiveSupport::MessageVerifier::InvalidSignature
+    #
+    key_generator = ActiveSupport::KeyGenerator.new(
+      Rails.application.secrets.secret_key_base,
+      iterations: 1000,
+      hash_digest_class: OpenSSL::Digest::SHA1
+    )
+    key_generator = ActiveSupport::CachingKeyGenerator.new(key_generator)
+    secret = key_generator.generate_key("ActiveStorage")
+    verifier = ActiveSupport::MessageVerifier.new(secret)
+
+    ActiveStorage::Blob.find_by_id(verifier.verify(legacy_signed_id, purpose: :blob_id)).try(:signed_id)
+  end
+end
diff --git a/app/services/blocks_migration.rb b/app/services/blocks_migration.rb
new file mode 100644
index 0000000000000000000000000000000000000000..95dfcf0327d181c8d9dbcb35dcba66c8bb0d1eb4
--- /dev/null
+++ b/app/services/blocks_migration.rb
@@ -0,0 +1,30 @@
+class BlocksMigration
+
+  def self.cleanup
+    Communication::Block.all.find_each { |block|
+      self.crawl(block.data)
+      block.save
+    }
+  end
+
+  protected
+
+  def self.crawl(enumerable)
+    case enumerable
+    when Array
+      enumerable.each do |item|
+        crawl(item) if [Array, Hash].include?(item.class)
+      end
+    when Hash
+      enumerable.keys.each do |key|
+        if key == "signed_id"
+          # Convert value
+          enumerable[key] = ActiveStorageKeyConverter.convert(enumerable[key]) if key == "signed_id"
+        elsif [Array, Hash].include?(enumerable[key].class)
+          crawl(enumerable[key])
+        end
+      end
+    end
+  end
+
+end
\ No newline at end of file
diff --git a/lib/tasks/app.rake b/lib/tasks/app.rake
index edf86d1e73499af97aa4098b02e33df99b1db7b2..b3c536e31ffdf2f80760ee58f2370825ac6b8fef 100644
--- a/lib/tasks/app.rake
+++ b/lib/tasks/app.rake
@@ -8,6 +8,7 @@ namespace :app do
 
   desc 'Fix things'
   task fix: :environment do
+    BlocksMigration.cleanup
   end
 
   namespace :websites do