diff --git a/diagramas/practica.asta b/diagramas/practica.asta
index 78f91509c528f8268b56577e3bdff74384871e02..d430c8110e9d205c81abe47b38c78a67be515125 100644
Binary files a/diagramas/practica.asta and b/diagramas/practica.asta differ
diff --git a/java/services/bookings/src/main/java/com/uva/api/bookings/services/BookingService.java b/java/services/bookings/src/main/java/com/uva/api/bookings/services/BookingService.java
index b8943243cccc85e4c41ac82030fa102b9f666ba2..7a3f8a478486a0e67cd7395c21536df85a0e1a80 100644
--- a/java/services/bookings/src/main/java/com/uva/api/bookings/services/BookingService.java
+++ b/java/services/bookings/src/main/java/com/uva/api/bookings/services/BookingService.java
@@ -49,7 +49,7 @@ public class BookingService {
         List<Booking> bookings = null;
 
         if (start != null && end != null) {
-            if (!start.isBefore(end))
+            if (start.isAfter(end))
                 throw new InvalidDateRangeException("Start can't be before than end");
 
             bookings = bookingRepository.findAllInDateRange(start, end);
diff --git a/java/services/hotels/src/main/java/com/uva/api/hotels/services/HotelService.java b/java/services/hotels/src/main/java/com/uva/api/hotels/services/HotelService.java
index d6851c0866e4891701d2ca9a0432736a4cfaa664..2e8ada3d9c661fce46aee63df267ac48ec2bd6ed 100644
--- a/java/services/hotels/src/main/java/com/uva/api/hotels/services/HotelService.java
+++ b/java/services/hotels/src/main/java/com/uva/api/hotels/services/HotelService.java
@@ -33,7 +33,7 @@ public class HotelService {
                 ? hotelRepository.findAllByManagerId(managerId)
                 : hotelRepository.findAll();
         if (start != null && end != null) {
-            if (!start.isBefore(end))
+            if (start.isAfter(end))
                 throw new InvalidDateRangeException("La fecha de inicio debe ser anterior a la fecha de fin");
 
             Set<Integer> notAvailableRoomsId = bookingAPI.getNotAvailableRooms(start, end);
diff --git a/java/services/users/src/main/java/com/uva/api/users/filter/JwtAuthenticationFilter.java b/java/services/users/src/main/java/com/uva/api/users/config/JwtAuthenticationFilter.java
similarity index 99%
rename from java/services/users/src/main/java/com/uva/api/users/filter/JwtAuthenticationFilter.java
rename to java/services/users/src/main/java/com/uva/api/users/config/JwtAuthenticationFilter.java
index 1a297c7c09dca05e5ec1fbdc233ba3a7bdc524ac..af31ba3b5d07750f687004720a873c348f81a9d1 100644
--- a/java/services/users/src/main/java/com/uva/api/users/filter/JwtAuthenticationFilter.java
+++ b/java/services/users/src/main/java/com/uva/api/users/config/JwtAuthenticationFilter.java
@@ -1,4 +1,4 @@
-package com.uva.api.users.filter;
+package com.uva.api.users.config;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
diff --git a/java/services/users/src/main/java/com/uva/api/users/config/SecurityConfig.java b/java/services/users/src/main/java/com/uva/api/users/config/SecurityConfig.java
index 6428cf4979d1718179f3d8de99ffda5b2ee37f09..356fa79a2370e580a8808e725732614ca376d76f 100644
--- a/java/services/users/src/main/java/com/uva/api/users/config/SecurityConfig.java
+++ b/java/services/users/src/main/java/com/uva/api/users/config/SecurityConfig.java
@@ -9,7 +9,6 @@ import org.springframework.security.web.SecurityFilterChain;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
 
 import com.uva.api.users.api.TokenAPI;
-import com.uva.api.users.filter.JwtAuthenticationFilter;
 import com.uva.api.users.models.UserRol;
 import com.uva.api.users.services.TokenService;
 
diff --git a/java/services/users/src/main/java/com/uva/api/users/controllers/ClientController.java b/java/services/users/src/main/java/com/uva/api/users/controllers/ClientController.java
index afcb4b7f30f5b49fb3b27145944d3a14623f8f42..e2b92bac5560947f245eda30fc6603e425d84be0 100644
--- a/java/services/users/src/main/java/com/uva/api/users/controllers/ClientController.java
+++ b/java/services/users/src/main/java/com/uva/api/users/controllers/ClientController.java
@@ -26,7 +26,6 @@ public class ClientController {
   @Autowired
   private ClientService clientService;
 
-  // Clients
   @GetMapping
   public ResponseEntity<?> getAllClients() {
     return clientService.findAll();
@@ -41,29 +40,19 @@ public class ClientController {
   public ResponseEntity<?> updateClientState(@PathVariable int id, @RequestBody Map<String, String> json) {
 
     String strStatus = json.get("status");
-    if (strStatus == null) {
-      return new ResponseEntity<String>("Missing required fields", HttpStatus.BAD_REQUEST);
-    }
+    if (strStatus == null)
+      throw new HttpClientErrorException(HttpStatus.BAD_REQUEST, "Missing required fields");
+
     try {
       ClientStatus clientStatus = ClientStatus.valueOf(strStatus);
-      return ResponseEntity.ok(clientService.updateClientStatus(id, clientStatus));
+      return clientService.updateClientStatus(id, clientStatus);
     } catch (IllegalArgumentException e) {
-      return new ResponseEntity<String>("Unknown Client state", HttpStatus.BAD_REQUEST);
-    } catch (HttpClientErrorException e) {
-      if (e.getStatusCode() == HttpStatus.NOT_FOUND)
-        return new ResponseEntity<String>(HttpStatus.NOT_FOUND);
-      throw e;
+      throw new HttpClientErrorException(HttpStatus.BAD_REQUEST, "Unknown Client state");
     }
   }
 
   @DeleteMapping("/{id}")
   public ResponseEntity<?> deleteClient(@PathVariable Integer id) {
-    try {
-      return ResponseEntity.ok(clientService.deleteById(id));
-    } catch (HttpClientErrorException e) {
-      if (e.getStatusCode() == HttpStatus.NOT_FOUND)
-        return new ResponseEntity<String>(HttpStatus.NOT_FOUND);
-      throw e;
-    }
+    return clientService.deleteById(id);
   }
 }
diff --git a/java/services/users/src/main/java/com/uva/api/users/controllers/ManagerController.java b/java/services/users/src/main/java/com/uva/api/users/controllers/ManagerController.java
index 31cdca4afbab1739d5dfaeed9d16a18a9491e36e..e2763673696656ecf7b255270f2b98502c85effe 100644
--- a/java/services/users/src/main/java/com/uva/api/users/controllers/ManagerController.java
+++ b/java/services/users/src/main/java/com/uva/api/users/controllers/ManagerController.java
@@ -1,8 +1,6 @@
 package com.uva.api.users.controllers;
 
-import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.DeleteMapping;
@@ -10,9 +8,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.client.HttpClientErrorException;
 
-import com.uva.api.users.models.Manager;
 import com.uva.api.users.services.ManagerService;
 
 @RestController
@@ -24,25 +20,18 @@ public class ManagerController {
   private ManagerService managerService;
 
   @GetMapping
-  public ResponseEntity<List<Manager>> getAllHotelManagers() {
-    List<Manager> users = managerService.findAll();
-    return ResponseEntity.ok(users);
+  public ResponseEntity<?> getAllHotelManagers() {
+    return managerService.findAll();
   }
 
   @GetMapping("/{id}")
-  public ResponseEntity<Manager> getHotelManagerById(@PathVariable Integer id) {
-    return ResponseEntity.ok(managerService.findById(id));
+  public ResponseEntity<?> getHotelManagerById(@PathVariable Integer id) {
+    return managerService.findById(id);
   }
 
   @DeleteMapping("/{id}")
   public ResponseEntity<?> deleteHotelManager(@PathVariable Integer id) {
-    try {
-      return ResponseEntity.ok(managerService.deleteById(id));
-    } catch (HttpClientErrorException e) {
-      if (e.getStatusCode() == HttpStatus.NOT_FOUND)
-        return new ResponseEntity<String>(HttpStatus.NOT_FOUND);
-      throw e;
-    }
+    return managerService.deleteById(id);
   }
 
 }
diff --git a/java/services/users/src/main/java/com/uva/api/users/controllers/UserController.java b/java/services/users/src/main/java/com/uva/api/users/controllers/UserController.java
index 811785a89b0c668f7c0e50b677b39c579834a20c..bfa14ccc74cb5f694aa983b232c453ef23fe69ac 100644
--- a/java/services/users/src/main/java/com/uva/api/users/controllers/UserController.java
+++ b/java/services/users/src/main/java/com/uva/api/users/controllers/UserController.java
@@ -15,6 +15,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.HttpClientErrorException;
+
 import com.fasterxml.jackson.databind.JsonNode;
 import com.uva.api.users.models.AuthDTO;
 import com.uva.api.users.services.UserService;
@@ -39,9 +41,8 @@ public class UserController {
     String name = json.get("name");
     String email = json.get("email");
 
-    if (!Utils.notEmptyStrings(name, email)) {
-      return new ResponseEntity<String>("Missing required fields", HttpStatus.BAD_REQUEST);
-    }
+    if (!Utils.notEmptyStrings(name, email))
+      throw new HttpClientErrorException(HttpStatus.BAD_REQUEST, "Missing required fields");
 
     return userService.updateUserData(id, name, email);
   }
@@ -50,9 +51,8 @@ public class UserController {
   public ResponseEntity<?> updatePassword(@PathVariable int id, @RequestBody JsonNode json) {
     String password = json.get("password").asText();
 
-    if (!Utils.notEmptyStrings(password)) {
-      return new ResponseEntity<String>("Missing required fields", HttpStatus.BAD_REQUEST);
-    }
+    if (!Utils.notEmptyStrings(password))
+      throw new HttpClientErrorException(HttpStatus.BAD_REQUEST, "Missing required fields");
 
     return userService.changePassword(id, password);
   }
diff --git a/java/services/users/src/main/java/com/uva/api/users/services/ClientService.java b/java/services/users/src/main/java/com/uva/api/users/services/ClientService.java
index a0a197553b27ea17b2c351f489ba3da1d7f3d503..84f2826176cdd31a13b18d0559c72e9cf7b84ab2 100644
--- a/java/services/users/src/main/java/com/uva/api/users/services/ClientService.java
+++ b/java/services/users/src/main/java/com/uva/api/users/services/ClientService.java
@@ -10,7 +10,6 @@ import org.springframework.stereotype.Service;
 import com.uva.api.users.api.BookingAPI;
 import com.uva.api.users.models.Client;
 import com.uva.api.users.models.ClientStatus;
-import com.uva.api.users.models.User;
 import com.uva.api.users.models.UserRol;
 import com.uva.api.users.models.remote.Booking;
 import com.uva.api.users.repositories.ClientRepository;
@@ -25,31 +24,32 @@ public class ClientService {
   @Autowired
   private BookingAPI bookingAPI;
 
-  public ResponseEntity<?> findAll() {
+  public ResponseEntity<List<Client>> findAll() {
     return ResponseEntity.ok(clientRepository.findAll());
   }
 
-  public ResponseEntity<?> findById(int id) {
+  public ResponseEntity<Client> findById(int id) {
     Client client = Utils.assertUser(clientRepository.findById(id));
     return ResponseEntity.ok(client);
   }
 
-  public Client deleteById(int id) {
+  public ResponseEntity<Client> deleteById(int id) {
     Client client = Utils.assertUser(clientRepository.findById(id));
     bookingAPI.deleteAllByUserId(id);
     clientRepository.delete(client);
-    return client;
+    return ResponseEntity.ok(client);
   }
 
-  public Client save(Client client) {
+  public ResponseEntity<Client> save(Client client) {
     // Default rol
     client.setRol(UserRol.CLIENT);
-    return clientRepository.save(client);
+    client = clientRepository.save(client);
+    return ResponseEntity.ok(client);
   }
 
   // TODO No entiendo donde debería ir esto
-  public User updateClientStatus(int id, ClientStatus status) {
-    Client user = Utils.assertUser(clientRepository.findById(id));
+  public ResponseEntity<?> updateClientStatus(int id, ClientStatus status) {
+    Client client = Utils.assertUser(clientRepository.findById(id));
 
     List<Booking> bookings = bookingAPI.getAllByUserId(id);
 
@@ -79,8 +79,10 @@ public class ClientService {
         break;
     }
 
-    user.setStatus(status);
+    client.setStatus(status);
 
-    return clientRepository.save(user);
+    client = clientRepository.save(client);
+
+    return ResponseEntity.ok(client);
   }
 }
diff --git a/java/services/users/src/main/java/com/uva/api/users/services/ManagerService.java b/java/services/users/src/main/java/com/uva/api/users/services/ManagerService.java
index cf9e95214e1ca2aee959ea5614f24b5d2b27d461..de135d238b2fb46a98553479c32786133f8ea34a 100644
--- a/java/services/users/src/main/java/com/uva/api/users/services/ManagerService.java
+++ b/java/services/users/src/main/java/com/uva/api/users/services/ManagerService.java
@@ -3,6 +3,7 @@ package com.uva.api.users.services;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import com.uva.api.users.api.HotelApi;
 import com.uva.api.users.models.Manager;
@@ -18,23 +19,25 @@ public class ManagerService {
   @Autowired
   private ManagerRepository managerRepository;
 
-  public Manager save(Manager manager) {
-    return managerRepository.save(manager);
+  public ResponseEntity<Manager> save(Manager manager) {
+    manager = managerRepository.save(manager);
+    return ResponseEntity.ok(manager);
   }
 
-  public List<Manager> findAll() {
-    return managerRepository.findAll();
+  public ResponseEntity<List<Manager>> findAll() {
+    List<Manager> managers = managerRepository.findAll();
+    return ResponseEntity.ok(managers);
   }
 
-  public Manager findById(int id) {
+  public ResponseEntity<Manager> findById(int id) {
     Manager manager = Utils.assertUser(managerRepository.findById(id));
-    return manager;
+    return ResponseEntity.ok(manager);
   }
 
-  public Object deleteById(Integer id) {
+  public ResponseEntity<Manager> deleteById(Integer id) {
     Manager manager = Utils.assertUser(managerRepository.findById(id));
     hotelApi.deleteAllByManagerId(id);
     managerRepository.delete(manager);
-    return manager;
+    return ResponseEntity.ok(manager);
   }
 }
diff --git a/java/services/users/src/main/java/com/uva/api/users/services/UserService.java b/java/services/users/src/main/java/com/uva/api/users/services/UserService.java
index 23125b307f4ae9d974511d2693ff4185c7bf5cde..a78f939b2523e099ecd5aba8ca1a882679d3916f 100644
--- a/java/services/users/src/main/java/com/uva/api/users/services/UserService.java
+++ b/java/services/users/src/main/java/com/uva/api/users/services/UserService.java
@@ -71,14 +71,14 @@ public class UserService {
       case HOTEL_ADMIN:
         Manager manager = new Manager();
         BeanUtils.copyProperties(request, manager);
-        user = managerService.save(manager);
+        user = managerService.save(manager).getBody();
         break;
 
       case CLIENT: // By default
       default:
         Client client = new Client();
         BeanUtils.copyProperties(request, client);
-        user = clientService.save(client);
+        user = clientService.save(client).getBody();
         break;
     }
     return ResponseEntity.ok(user);