diff --git a/src/main/java/eu/ztsh/wymiana/exception/UserAlreadyExistsException.java b/src/main/java/eu/ztsh/wymiana/exception/UserAlreadyExistsException.java
new file mode 100644
index 0000000..659b495
--- /dev/null
+++ b/src/main/java/eu/ztsh/wymiana/exception/UserAlreadyExistsException.java
@@ -0,0 +1,11 @@
+package eu.ztsh.wymiana.exception;
+
+import eu.ztsh.wymiana.web.model.UserCreateRequest;
+
+public class UserAlreadyExistsException extends RuntimeException {
+
+    public UserAlreadyExistsException(UserCreateRequest entity) {
+        super("User with PESEL %s already exists".formatted(entity.pesel()));
+    }
+
+}
diff --git a/src/main/java/eu/ztsh/wymiana/service/UserService.java b/src/main/java/eu/ztsh/wymiana/service/UserService.java
index 7b1e652..341112c 100644
--- a/src/main/java/eu/ztsh/wymiana/service/UserService.java
+++ b/src/main/java/eu/ztsh/wymiana/service/UserService.java
@@ -1,15 +1,21 @@
 package eu.ztsh.wymiana.service;
 
+import eu.ztsh.wymiana.data.repository.UserRepository;
 import eu.ztsh.wymiana.model.User;
 import eu.ztsh.wymiana.web.model.UserCreateRequest;
 import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.Optional;
 
+@RequiredArgsConstructor
 @Service
 public class UserService {
 
+    private final UserRepository userRepository;
+
+
     public User create(@Valid UserCreateRequest request) {
         throw new IllegalStateException("Not impplemented yet");
     }
diff --git a/src/test/java/eu/ztsh/wymiana/service/UserServiceTest.java b/src/test/java/eu/ztsh/wymiana/service/UserServiceTest.java
index 0ef2abc..4dd6908 100644
--- a/src/test/java/eu/ztsh/wymiana/service/UserServiceTest.java
+++ b/src/test/java/eu/ztsh/wymiana/service/UserServiceTest.java
@@ -3,6 +3,7 @@ package eu.ztsh.wymiana.service;
 import eu.ztsh.wymiana.EntityCreator;
 import eu.ztsh.wymiana.RepositoryBasedTest;
 import eu.ztsh.wymiana.data.repository.UserRepository;
+import eu.ztsh.wymiana.exception.UserAlreadyExistsException;
 import eu.ztsh.wymiana.util.UserMapper;
 import eu.ztsh.wymiana.web.model.UserCreateRequest;
 import org.junit.jupiter.api.Test;
@@ -13,11 +14,12 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 class UserServiceTest extends RepositoryBasedTest {
 
-    private final UserService userService = new UserService();
+    private final UserService userService;
 
     @Autowired
     public UserServiceTest(UserRepository userRepository) {
         super(userRepository);
+        userService = new UserService(userRepository);
     }
 
     @Test
@@ -33,8 +35,8 @@ class UserServiceTest extends RepositoryBasedTest {
         var second = createRequest();
         userService.create(first);
         assertThatThrownBy(() -> userService.create(second))
-            .isInstanceOf(IllegalArgumentException.class)
-            .hasMessage("Duplicated PESEL: %s".formatted(EntityCreator.Constants.PESEL));
+            .isInstanceOf(UserAlreadyExistsException.class)
+            .hasMessage("User with PESEL %s already exists".formatted(EntityCreator.Constants.PESEL));
     }
 
     @Test