diff --git a/app/controllers/admin/groups_controller.rb b/app/controllers/admin/groups_controller.rb
index 2dfae13ac5c0e10f980fa78668b6aa5143df2ad1..4d3e48f7f817a16fd22e577af09d827e68a034e8 100644
--- a/app/controllers/admin/groups_controller.rb
+++ b/app/controllers/admin/groups_controller.rb
@@ -47,7 +47,7 @@ def members_update
   end
 
   def destroy
-    @group.destroy
+    DestroyGroupService.new(@group, current_user).execute
 
     redirect_to admin_groups_path, notice: 'Group was successfully deleted.'
   end
diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb
index 34f0b257db3b48efc784c39e0a4b177b3b5c4450..2e381822e421bd4b15f58339cd959ea994f0b210 100644
--- a/app/controllers/groups_controller.rb
+++ b/app/controllers/groups_controller.rb
@@ -82,7 +82,7 @@ def update
   end
 
   def destroy
-    @group.destroy
+    DestroyGroupService.new(@group, current_user).execute
 
     redirect_to root_path, notice: 'Group was removed.'
   end
diff --git a/app/services/destroy_group_service.rb b/app/services/destroy_group_service.rb
new file mode 100644
index 0000000000000000000000000000000000000000..9637a1480a8053181156b2c8e69032715d54a948
--- /dev/null
+++ b/app/services/destroy_group_service.rb
@@ -0,0 +1,11 @@
+class DestroyGroupService
+  attr_accessor :group, :current_user
+
+  def initialize(group, user)
+    @group, @current_user = group, user
+  end
+
+  def execute
+    @group.destroy
+  end
+end
diff --git a/lib/api/groups.rb b/lib/api/groups.rb
index f768c750402b367a034350bdf3b160b8c320ec16..e88b6e31775340a214d06146566dd5c57c187d96 100644
--- a/lib/api/groups.rb
+++ b/lib/api/groups.rb
@@ -62,7 +62,7 @@ class Groups < Grape::API
       delete ":id" do
         group = find_group(params[:id])
         authorize! :admin_group, group
-        group.destroy
+        DestroyGroupService.new(group, current_user).execute
       end
 
       # Transfer a project to the Group namespace