diff --git a/app/services/boards/create_service.rb b/app/services/boards/create_service.rb
index 68f6a8619e5ef9cc0ef6f952c11f8e42bec85e49..9eedb9e65a23383c21d8a9530877567d0a45fee0 100644
--- a/app/services/boards/create_service.rb
+++ b/app/services/boards/create_service.rb
@@ -1,19 +1,22 @@
 module Boards
   class CreateService < BaseService
     def execute
-      if project.boards.empty?
-        create_board!
-      else
-        project.boards.first
-      end
+      create_board! if can_create_board?
     end
 
     private
 
+    def can_create_board?
+      project.boards.size == 0
+    end
+
     def create_board!
-      board = project.boards.create
-      board.lists.create(list_type: :backlog)
-      board.lists.create(list_type: :closed)
+      board = project.boards.create(params)
+
+      if board.persisted?
+        board.lists.create(list_type: :backlog)
+        board.lists.create(list_type: :closed)
+      end
 
       board
     end
diff --git a/spec/services/boards/create_service_spec.rb b/spec/services/boards/create_service_spec.rb
index effa4633d13d7e33c3c0a0a9c9f3bc36e9faa914..89615df1692ad83ef7ad43000dd343103b17dd8b 100644
--- a/spec/services/boards/create_service_spec.rb
+++ b/spec/services/boards/create_service_spec.rb
@@ -26,6 +26,8 @@ describe Boards::CreateService, services: true do
       end
 
       it 'does not create a new board' do
+        expect(service).to receive(:can_create_board?) { false }
+
         expect { service.execute }.not_to change(project.boards, :count)
       end
     end