diff --git a/.rubocop.yml b/.rubocop.yml
index f94c2d12e3df11ead935c2c8a7bad1c1f24c6c52..0b5ffffe5c1ff7145ccf0cfaff942e9e8d44c574 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -46,6 +46,9 @@ RSpec/MultipleMemoizedHelpers:
 RSpec/NestedGroups:
   Max: 7
 
+RSpec/StubbedMock:
+  Enabled: false
+
 # Enable having lines with up to 150 charachters in length.
 Layout/LineLength:
   Max: 150
diff --git a/app/controllers/api/v1/recordings_controller.rb b/app/controllers/api/v1/recordings_controller.rb
index 950f232e818684c790a604b805547d77de2b145c..6138fafe38c4f6105cfe4fe4b188bc67c3475669 100644
--- a/app/controllers/api/v1/recordings_controller.rb
+++ b/app/controllers/api/v1/recordings_controller.rb
@@ -56,9 +56,6 @@ module Api
       # DELETE /api/v1/recordings/:id.json
       # Deletes a recording in both BigBlueButton and Greenlight
       def destroy
-        # TODO: Hadi - Need to change this to work preferably with after_destroy in recordings model
-        BigBlueButtonApi.new(provider: current_provider).delete_recordings(record_ids: params[:id])
-
         Recording.destroy_by(record_id: params[:id])
 
         render_data status: :ok
diff --git a/app/models/recording.rb b/app/models/recording.rb
index 648d56be59f150bf6d575f3ee4acd4bbbe0015ff..95b59ef6581c1d93ea01070dde640a0e091eac31 100644
--- a/app/models/recording.rb
+++ b/app/models/recording.rb
@@ -38,6 +38,8 @@ class Recording < ApplicationRecord
 
   scope :with_provider, ->(current_provider) { where(user: { provider: current_provider }) }
 
+  after_destroy :destroy_bbb_recording
+
   def self.search(input)
     if input
       return joins(:formats).where('recordings.name ILIKE :input OR recordings.visibility ILIKE :input OR formats.recording_type ILIKE :input',
@@ -68,4 +70,10 @@ class Recording < ApplicationRecord
 
     all.includes(:formats)
   end
+
+  private
+
+  def destroy_bbb_recording
+    BigBlueButtonApi.new(provider: user.provider).delete_recordings(record_ids: record_id)
+  end
 end
diff --git a/spec/controllers/rooms_controller_spec.rb b/spec/controllers/rooms_controller_spec.rb
index 7418355236e6bbbd829aef5aca87533d587f921e..747ab0b84041c76e7e66660b26eb3c0e2dea9d3b 100644
--- a/spec/controllers/rooms_controller_spec.rb
+++ b/spec/controllers/rooms_controller_spec.rb
@@ -152,6 +152,8 @@ RSpec.describe Api::V1::RoomsController, type: :controller do
     end
 
     it 'deletes the recordings associated with the room' do
+      allow_any_instance_of(BigBlueButtonApi).to receive(:delete_recordings).and_return(true)
+
       room = create(:room, user:)
       create_list(:recording, 10, room:)
       expect { delete :destroy, params: { friendly_id: room.friendly_id } }.to change(Recording, :count).by(-10)
diff --git a/spec/models/recording_spec.rb b/spec/models/recording_spec.rb
index 81a586f62fdf8dc0bae01d3cee144b21ab0c507d..6f9b974523ef86ac90f00ff041ea7d2280b3b126 100644
--- a/spec/models/recording_spec.rb
+++ b/spec/models/recording_spec.rb
@@ -116,4 +116,12 @@ RSpec.describe Recording, type: :model do
       expect(described_class.all.search('')).to match_array(described_class.all)
     end
   end
+
+  describe 'after_destroy' do
+    it 'makes a call to BBB to delete the recording' do
+      expect_any_instance_of(BigBlueButtonApi).to receive(:delete_recordings).and_return(true)
+
+      create(:recording).destroy
+    end
+  end
 end
diff --git a/spec/services/recordings_sync_spec.rb b/spec/services/recordings_sync_spec.rb
index 6d9d378e42d20df82664047e56527cd051651283..92a11caea87b622b93c2cc6c41c50844bb2af998 100644
--- a/spec/services/recordings_sync_spec.rb
+++ b/spec/services/recordings_sync_spec.rb
@@ -23,6 +23,10 @@ describe RecordingsSync, type: :service do
   let(:room) { create(:room, user:, recordings_processing: 5) }
   let(:service) { described_class.new(room:, provider: 'greenlight') }
 
+  before do
+    allow_any_instance_of(BigBlueButtonApi).to receive(:delete_recordings).and_return(true)
+  end
+
   describe '#call' do
     let(:fake_recording_creator) { instance_double(RecordingCreator) }
     let(:other_recordings) { create_list(:recording, 2) }
@@ -61,7 +65,7 @@ describe RecordingsSync, type: :service do
         expect(RecordingCreator).to receive(:new).with(recording: multiple_recordings_response[:recordings][1]).and_call_original
 
         service.call
-        expect(Recording.where(id: other_recordings.pluck(:id))).to eq(other_recordings)
+        expect(Recording.where(id: other_recordings.pluck(:id))).to match_array(other_recordings)
       end
 
       it 'resets the recordings processing value for the room' do