diff --git a/src/main/java/com/cloudcomputing/todo/dto/UserDTO.java b/src/main/java/com/cloudcomputing/todo/dto/UserDTO.java
index 7d67424f4dfd14cf382f1b413fa0b3cb7fd867c9..0472e4d0e5f9dfc4dc67c517ed52c42698e5a5f8 100644
--- a/src/main/java/com/cloudcomputing/todo/dto/UserDTO.java
+++ b/src/main/java/com/cloudcomputing/todo/dto/UserDTO.java
@@ -6,7 +6,7 @@ import lombok.Setter;
 @Getter
 @Setter
 public class UserDTO {
-    private Long userId;
+    private String userId;
     private String userName;
     private String password;
 }
diff --git a/src/main/java/com/cloudcomputing/todo/entity/User.java b/src/main/java/com/cloudcomputing/todo/entity/User.java
index cc04a360dc9ff4b0ee27fd564437195686632b47..66026ddc6eb7ce27e0d5c91e0c8d58786d26b2ab 100644
--- a/src/main/java/com/cloudcomputing/todo/entity/User.java
+++ b/src/main/java/com/cloudcomputing/todo/entity/User.java
@@ -10,7 +10,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
 @Document(collection = "users")
 public class User {
     @Id
-    private Long userId;
+    private String userId;
     private String userName;
     private String passwordHash;
 }
diff --git a/src/main/java/com/cloudcomputing/todo/mapper/UserMapper.java b/src/main/java/com/cloudcomputing/todo/mapper/UserMapper.java
index f36a7d7dab84c4008cda79c34ab898fd58212314..b20fda9bb8d5c0fa12ec4d471adc06962f478cc9 100644
--- a/src/main/java/com/cloudcomputing/todo/mapper/UserMapper.java
+++ b/src/main/java/com/cloudcomputing/todo/mapper/UserMapper.java
@@ -2,7 +2,9 @@ package com.cloudcomputing.todo.mapper;
 
 import com.cloudcomputing.todo.dto.UserDTO;
 import com.cloudcomputing.todo.entity.User;
+import org.springframework.stereotype.Component;
 
+@Component
 public class UserMapper {
     public UserDTO entityToDto(User user) {
         UserDTO userDTO = new UserDTO();
diff --git a/src/main/java/com/cloudcomputing/todo/repository/UserRepository.java b/src/main/java/com/cloudcomputing/todo/repository/UserRepository.java
index 9646f9efb3e14e2064345407d30e6c05a690140d..c3c6cf247f39aadfaa4103ba23fc194e94c5f873 100644
--- a/src/main/java/com/cloudcomputing/todo/repository/UserRepository.java
+++ b/src/main/java/com/cloudcomputing/todo/repository/UserRepository.java
@@ -4,4 +4,7 @@ import com.cloudcomputing.todo.entity.User;
 import org.springframework.data.mongodb.repository.MongoRepository;
 
 public interface UserRepository extends MongoRepository<User, String> {
+    boolean existsByUserName(String userName);
+    boolean existsByUserId(String userId);
+    User findByUserName(String userName);
 }
diff --git a/src/main/java/com/cloudcomputing/todo/service/UserService.java b/src/main/java/com/cloudcomputing/todo/service/UserService.java
index 4ea7476b38021106dbca803b4140809b5497ecd2..7278021af19f6ddb181d4c4bc0911c99b47a51a3 100644
--- a/src/main/java/com/cloudcomputing/todo/service/UserService.java
+++ b/src/main/java/com/cloudcomputing/todo/service/UserService.java
@@ -1,2 +1,29 @@
-package com.cloudcomputing.todo.service;public class UserService {
+package com.cloudcomputing.todo.service;
+
+import com.cloudcomputing.todo.dto.UserDTO;
+import com.cloudcomputing.todo.entity.User;
+import com.cloudcomputing.todo.mapper.UserMapper;
+import com.cloudcomputing.todo.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserService {
+
+    @Autowired
+    private UserMapper userMapper;
+    @Autowired
+    private UserRepository userRepository;
+
+    public User createUser(UserDTO userDTO) {
+        User newUser;
+
+        if(userRepository.existsByUserId(userDTO.getUserId()) || userRepository.existsByUserName(userDTO.getUserName())){
+            newUser = userRepository.findByUserName(userDTO.getUserName());
+        } else {
+            newUser = userMapper.dtoToEntity(userDTO);
+        }
+
+        return userRepository.save(newUser);
+    }
 }
diff --git a/src/test/java/com/cloudcomputing/todo/service/UserServiceTest.java b/src/test/java/com/cloudcomputing/todo/service/UserServiceTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..19350668f3e480cb28811d77d40df74dc9e31333
--- /dev/null
+++ b/src/test/java/com/cloudcomputing/todo/service/UserServiceTest.java
@@ -0,0 +1,28 @@
+package com.cloudcomputing.todo.service;
+
+import com.cloudcomputing.todo.dto.UserDTO;
+import com.cloudcomputing.todo.entity.User;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+@SpringBootTest
+public class UserServiceTest {
+
+    @Autowired
+    private UserService userService;
+
+    @Test
+    public void testCreateUser(){
+        UserDTO userToCreate = new UserDTO();
+        userToCreate.setUserName("abduTest");
+        userToCreate.setPassword("abduTestPassword");
+
+        User createdUser = userService.createUser(userToCreate);
+        assertNotNull(createdUser);
+        assertEquals(userToCreate.getUserName(), createdUser.getUserName());
+    }
+}