diff --git a/lib/tasks/migrations/migrations.rake b/lib/tasks/migrations/migrations.rake
index 4c9c9f214ec36adbbe51058fc2170a57c81226fd..3c97dc467a5a0cdb835957335ec244bcbbb38e4f 100644
--- a/lib/tasks/migrations/migrations.rake
+++ b/lib/tasks/migrations/migrations.rake
@@ -74,6 +74,43 @@ namespace :migrations do
     exit has_encountred_issue
   end
 
+  task :rooms, [:start, :stop] => :environment do |_task, args|
+    start, stop = range(args)
+    has_encountred_issue = 0
+
+    Room.select(:id, :uid, :name, :bbb_id, :last_session, :user_id)
+        .find_each(start: start, finish: stop, batch_size: COMMON[:batch_size]).each do |r|
+          params = { room: { friendly_id: r.uid,
+                             name: r.name,
+                             meeting_id: r.bbb_id,
+                             last_session: r.last_session&.to_datetime,
+                             owner_email: r.owner.email } }
+          response = Net::HTTP.post(uri('rooms'), payload(params), COMMON[:headers])
+
+          case response
+          when Net::HTTPCreated
+            puts green "Succesfully migrated Room:"
+            puts cyan "  UID: #{r.uid}"
+            puts cyan "  Name: #{r.name}"
+          else
+            puts red "Unable to migrate Room:"
+            puts yellow "  UID: #{r.uid}"
+            puts yellow "  Name: #{r.name}"
+            has_encountred_issue = 1 # At least one of the migrations failed.
+          end
+    end
+
+    puts
+    puts green "Rooms migration completed."
+
+    unless has_encountred_issue.zero?
+      puts yellow "In case of an error please retry the process to resolve."
+      puts yellow "If you have not migrated your users, kindly run 'rake migrations:users' first and then retry."
+    end
+
+    exit has_encountred_issue
+  end
+
   private
 
   def encrypt_params(params)