diff --git a/.trunk/trunk.yaml b/.trunk/trunk.yaml
index 48ca6fbb5d1debf221a15c1bc2606816109255fc..f5788453e7e148b54e4c11a1b5a5a4b6e028413b 100644
--- a/.trunk/trunk.yaml
+++ b/.trunk/trunk.yaml
@@ -20,7 +20,7 @@ lint:
   disabled:
     - git-diff-check
   enabled:
-    - checkov@3.2.336
+    - checkov@3.2.341
     - dotenv-linter@3.3.0
     - hadolint@2.12.1-beta
     - markdownlint@0.43.0
diff --git a/java/roomBooking/.gitignore b/java/roomBooking/.gitignore
deleted file mode 100644
index 549e00a2a96fa9d7c5dbc9859664a78d980158c2..0000000000000000000000000000000000000000
--- a/java/roomBooking/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
diff --git a/java/roomBooking/.mvn/wrapper/maven-wrapper.properties b/java/roomBooking/.mvn/wrapper/maven-wrapper.properties
deleted file mode 100644
index d58dfb70bab565a697e6854eb012d17e0fd39bd4..0000000000000000000000000000000000000000
--- a/java/roomBooking/.mvn/wrapper/maven-wrapper.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-wrapperVersion=3.3.2
-distributionType=only-script
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip
diff --git a/java/roomBooking/Dockerfile b/java/roomBooking/Dockerfile
deleted file mode 100644
index 8d0b79d6514534deddac782fc9367bcdbcaf89c3..0000000000000000000000000000000000000000
--- a/java/roomBooking/Dockerfile
+++ /dev/null
@@ -1,10 +0,0 @@
-FROM maven:3-openjdk-17 AS maven
-WORKDIR /app
-COPY ./ ./
-RUN mvn -Dmaven.test.skip clean package
-FROM openjdk:17-jdk-oracle
-ARG JAR_FILE=/app/target/*.jar
-COPY --from=maven ${JAR_FILE} app.jar
-ENV PORT 8080
-EXPOSE $PORT
-ENTRYPOINT ["java","-jar", "/app.jar"]
\ No newline at end of file
diff --git a/java/roomBooking/mvnw b/java/roomBooking/mvnw
deleted file mode 100755
index 19529ddf8c6eaa08c5c75ff80652d21ce4b72f8c..0000000000000000000000000000000000000000
--- a/java/roomBooking/mvnw
+++ /dev/null
@@ -1,259 +0,0 @@
-#!/bin/sh
-# ----------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-# ----------------------------------------------------------------------------
-
-# ----------------------------------------------------------------------------
-# Apache Maven Wrapper startup batch script, version 3.3.2
-#
-# Optional ENV vars
-# -----------------
-#   JAVA_HOME - location of a JDK home dir, required when download maven via java source
-#   MVNW_REPOURL - repo url base for downloading maven distribution
-#   MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
-#   MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output
-# ----------------------------------------------------------------------------
-
-set -euf
-[ "${MVNW_VERBOSE-}" != debug ] || set -x
-
-# OS specific support.
-native_path() { printf %s\\n "$1"; }
-case "$(uname)" in
-CYGWIN* | MINGW*)
-  [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")"
-  native_path() { cygpath --path --windows "$1"; }
-  ;;
-esac
-
-# set JAVACMD and JAVACCMD
-set_java_home() {
-  # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched
-  if [ -n "${JAVA_HOME-}" ]; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ]; then
-      # IBM's JDK on AIX uses strange locations for the executables
-      JAVACMD="$JAVA_HOME/jre/sh/java"
-      JAVACCMD="$JAVA_HOME/jre/sh/javac"
-    else
-      JAVACMD="$JAVA_HOME/bin/java"
-      JAVACCMD="$JAVA_HOME/bin/javac"
-
-      if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then
-        echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2
-        echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2
-        return 1
-      fi
-    fi
-  else
-    JAVACMD="$(
-      'set' +e
-      'unset' -f command 2>/dev/null
-      'command' -v java
-    )" || :
-    JAVACCMD="$(
-      'set' +e
-      'unset' -f command 2>/dev/null
-      'command' -v javac
-    )" || :
-
-    if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then
-      echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2
-      return 1
-    fi
-  fi
-}
-
-# hash string like Java String::hashCode
-hash_string() {
-  str="${1:-}" h=0
-  while [ -n "$str" ]; do
-    char="${str%"${str#?}"}"
-    h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296))
-    str="${str#?}"
-  done
-  printf %x\\n $h
-}
-
-verbose() { :; }
-[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; }
-
-die() {
-  printf %s\\n "$1" >&2
-  exit 1
-}
-
-trim() {
-  # MWRAPPER-139:
-  #   Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.
-  #   Needed for removing poorly interpreted newline sequences when running in more
-  #   exotic environments such as mingw bash on Windows.
-  printf "%s" "${1}" | tr -d '[:space:]'
-}
-
-# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
-while IFS="=" read -r key value; do
-  case "${key-}" in
-  distributionUrl) distributionUrl=$(trim "${value-}") ;;
-  distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
-  esac
-done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties"
-[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties"
-
-case "${distributionUrl##*/}" in
-maven-mvnd-*bin.*)
-  MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/
-  case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in
-  *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;
-  :Darwin*x86_64) distributionPlatform=darwin-amd64 ;;
-  :Darwin*arm64) distributionPlatform=darwin-aarch64 ;;
-  :Linux*x86_64*) distributionPlatform=linux-amd64 ;;
-  *)
-    echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2
-    distributionPlatform=linux-amd64
-    ;;
-  esac
-  distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
-  ;;
-maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
-*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
-esac
-
-# apply MVNW_REPOURL and calculate MAVEN_HOME
-# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
-[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}"
-distributionUrlName="${distributionUrl##*/}"
-distributionUrlNameMain="${distributionUrlName%.*}"
-distributionUrlNameMain="${distributionUrlNameMain%-bin}"
-MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}"
-MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")"
-
-exec_maven() {
-  unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :
-  exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD"
-}
-
-if [ -d "$MAVEN_HOME" ]; then
-  verbose "found existing MAVEN_HOME at $MAVEN_HOME"
-  exec_maven "$@"
-fi
-
-case "${distributionUrl-}" in
-*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;
-*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;;
-esac
-
-# prepare tmp dir
-if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then
-  clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; }
-  trap clean HUP INT TERM EXIT
-else
-  die "cannot create temp dir"
-fi
-
-mkdir -p -- "${MAVEN_HOME%/*}"
-
-# Download and Install Apache Maven
-verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
-verbose "Downloading from: $distributionUrl"
-verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
-
-# select .zip or .tar.gz
-if ! command -v unzip >/dev/null; then
-  distributionUrl="${distributionUrl%.zip}.tar.gz"
-  distributionUrlName="${distributionUrl##*/}"
-fi
-
-# verbose opt
-__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''
-[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v
-
-# normalize http auth
-case "${MVNW_PASSWORD:+has-password}" in
-'') MVNW_USERNAME='' MVNW_PASSWORD='' ;;
-has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;
-esac
-
-if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then
-  verbose "Found wget ... using wget"
-  wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl"
-elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then
-  verbose "Found curl ... using curl"
-  curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl"
-elif set_java_home; then
-  verbose "Falling back to use Java to download"
-  javaSource="$TMP_DOWNLOAD_DIR/Downloader.java"
-  targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName"
-  cat >"$javaSource" <<-END
-	public class Downloader extends java.net.Authenticator
-	{
-	  protected java.net.PasswordAuthentication getPasswordAuthentication()
-	  {
-	    return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() );
-	  }
-	  public static void main( String[] args ) throws Exception
-	  {
-	    setDefault( new Downloader() );
-	    java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );
-	  }
-	}
-	END
-  # For Cygwin/MinGW, switch paths to Windows format before running javac and java
-  verbose " - Compiling Downloader.java ..."
-  "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java"
-  verbose " - Running Downloader.java ..."
-  "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")"
-fi
-
-# If specified, validate the SHA-256 sum of the Maven distribution zip file
-if [ -n "${distributionSha256Sum-}" ]; then
-  distributionSha256Result=false
-  if [ "$MVN_CMD" = mvnd.sh ]; then
-    echo "Checksum validation is not supported for maven-mvnd." >&2
-    echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
-    exit 1
-  elif command -v sha256sum >/dev/null; then
-    if echo "$distributionSha256Sum  $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then
-      distributionSha256Result=true
-    fi
-  elif command -v shasum >/dev/null; then
-    if echo "$distributionSha256Sum  $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then
-      distributionSha256Result=true
-    fi
-  else
-    echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
-    echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
-    exit 1
-  fi
-  if [ $distributionSha256Result = false ]; then
-    echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2
-    echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2
-    exit 1
-  fi
-fi
-
-# unzip and move
-if command -v unzip >/dev/null; then
-  unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip"
-else
-  tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
-fi
-printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url"
-mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
-
-clean || :
-exec_maven "$@"
diff --git a/java/roomBooking/mvnw.cmd b/java/roomBooking/mvnw.cmd
deleted file mode 100644
index 249bdf3822221aa612d1da2605316cabd7b07e50..0000000000000000000000000000000000000000
--- a/java/roomBooking/mvnw.cmd
+++ /dev/null
@@ -1,149 +0,0 @@
-<# : batch portion
-@REM ----------------------------------------------------------------------------
-@REM Licensed to the Apache Software Foundation (ASF) under one
-@REM or more contributor license agreements.  See the NOTICE file
-@REM distributed with this work for additional information
-@REM regarding copyright ownership.  The ASF licenses this file
-@REM to you under the Apache License, Version 2.0 (the
-@REM "License"); you may not use this file except in compliance
-@REM with the License.  You may obtain a copy of the License at
-@REM
-@REM    http://www.apache.org/licenses/LICENSE-2.0
-@REM
-@REM Unless required by applicable law or agreed to in writing,
-@REM software distributed under the License is distributed on an
-@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-@REM KIND, either express or implied.  See the License for the
-@REM specific language governing permissions and limitations
-@REM under the License.
-@REM ----------------------------------------------------------------------------
-
-@REM ----------------------------------------------------------------------------
-@REM Apache Maven Wrapper startup batch script, version 3.3.2
-@REM
-@REM Optional ENV vars
-@REM   MVNW_REPOURL - repo url base for downloading maven distribution
-@REM   MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
-@REM   MVNW_VERBOSE - true: enable verbose log; others: silence the output
-@REM ----------------------------------------------------------------------------
-
-@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
-@SET __MVNW_CMD__=
-@SET __MVNW_ERROR__=
-@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
-@SET PSModulePath=
-@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
-  IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
-)
-@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
-@SET __MVNW_PSMODULEP_SAVE=
-@SET __MVNW_ARG0_NAME__=
-@SET MVNW_USERNAME=
-@SET MVNW_PASSWORD=
-@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*)
-@echo Cannot start maven from wrapper >&2 && exit /b 1
-@GOTO :EOF
-: end batch / begin powershell #>
-
-$ErrorActionPreference = "Stop"
-if ($env:MVNW_VERBOSE -eq "true") {
-  $VerbosePreference = "Continue"
-}
-
-# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
-$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
-if (!$distributionUrl) {
-  Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
-}
-
-switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
-  "maven-mvnd-*" {
-    $USE_MVND = $true
-    $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
-    $MVN_CMD = "mvnd.cmd"
-    break
-  }
-  default {
-    $USE_MVND = $false
-    $MVN_CMD = $script -replace '^mvnw','mvn'
-    break
-  }
-}
-
-# apply MVNW_REPOURL and calculate MAVEN_HOME
-# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
-if ($env:MVNW_REPOURL) {
-  $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" }
-  $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')"
-}
-$distributionUrlName = $distributionUrl -replace '^.*/',''
-$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
-$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain"
-if ($env:MAVEN_USER_HOME) {
-  $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain"
-}
-$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
-$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
-
-if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
-  Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
-  Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
-  exit $?
-}
-
-if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
-  Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
-}
-
-# prepare tmp dir
-$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
-$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
-$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
-trap {
-  if ($TMP_DOWNLOAD_DIR.Exists) {
-    try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
-    catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
-  }
-}
-
-New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
-
-# Download and Install Apache Maven
-Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
-Write-Verbose "Downloading from: $distributionUrl"
-Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
-
-$webclient = New-Object System.Net.WebClient
-if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
-  $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
-}
-[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
-$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
-
-# If specified, validate the SHA-256 sum of the Maven distribution zip file
-$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
-if ($distributionSha256Sum) {
-  if ($USE_MVND) {
-    Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
-  }
-  Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
-  if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
-    Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
-  }
-}
-
-# unzip and move
-Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
-Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null
-try {
-  Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
-} catch {
-  if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
-    Write-Error "fail to move MAVEN_HOME"
-  }
-} finally {
-  try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
-  catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
-}
-
-Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
diff --git a/java/roomBooking/pom.xml b/java/roomBooking/pom.xml
deleted file mode 100644
index 30de244f0964028a4aa0b50df0ff2cf4f4b1102f..0000000000000000000000000000000000000000
--- a/java/roomBooking/pom.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.springframework.boot</groupId>
-		<artifactId>spring-boot-starter-parent</artifactId>
-		<version>3.3.4</version>
-		<relativePath/> <!-- lookup parent from repository -->
-	</parent>
-	<groupId>com.uva</groupId>
-	<artifactId>roomBooking</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
-	<name>roomBooking</name>
-	<description>Room Booking rest</description>
-	<url/>
-	<licenses>
-		<license/>
-	</licenses>
-	<developers>
-		<developer/>
-	</developers>
-	<scm>
-		<connection/>
-		<developerConnection/>
-		<tag/>
-		<url/>
-	</scm>
-	<properties>
-		<java.version>17</java.version>
-	</properties>
-	<dependencies>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-data-jpa</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-data-rest</artifactId>
-		</dependency>
-
-		<dependency>
-			<groupId>com.mysql</groupId>
-			<artifactId>mysql-connector-j</artifactId>
-			<scope>runtime</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-test</artifactId>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-    <groupId>org.springframework.boot</groupId>
-    <artifactId>spring-boot-starter-security</artifactId>
-	</dependency>
-	<dependency>
-		<groupId>com.auth0</groupId>
-		<artifactId>java-jwt</artifactId>
-		<version>4.4.0</version>
-	</dependency>
-	<dependency>
-		<groupId>jakarta.servlet</groupId>
-		<artifactId>jakarta.servlet-api</artifactId>
-		<scope>provided</scope>
-    </dependency>
-	</dependencies>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.springframework.boot</groupId>
-				<artifactId>spring-boot-maven-plugin</artifactId>
-			</plugin>
-		</plugins>
-	</build>
-
-</project>
\ No newline at end of file
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/RoomBookingApplication.java b/java/roomBooking/src/main/java/com/uva/monolith/RoomBookingApplication.java
deleted file mode 100644
index 0a5db248da6e6be909302e323931f79151b0ed62..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/RoomBookingApplication.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.uva.monolith;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class RoomBookingApplication {
-
-	public static void main(String[] args) {
-		SpringApplication.run(RoomBookingApplication.class, args);
-	}
-
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/config/SecurityConfig.java b/java/roomBooking/src/main/java/com/uva/monolith/config/SecurityConfig.java
deleted file mode 100644
index 8264f84a2e9f57dabaedc5892ea8a3ca0e931232..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/config/SecurityConfig.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.uva.monolith.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.HttpMethod;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.web.SecurityFilterChain;
-import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
-
-import com.uva.monolith.filter.JwtAuthenticationFilter;
-import com.uva.monolith.services.users.models.UserRol;
-
-@Configuration
-@EnableWebSecurity
-public class SecurityConfig {
-
-    private final JwtAuthenticationFilter jwtAuthenticationFilter;
-
-    public SecurityConfig(JwtAuthenticationFilter jwtAuthenticationFilter) {
-        this.jwtAuthenticationFilter = jwtAuthenticationFilter;
-    }
-
-    @Bean
-    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
-        http.csrf(csrf -> csrf.disable())
-                .authorizeHttpRequests(authorize -> authorize
-                        // Permitir OPTIONS sin autenticación
-                        .requestMatchers(HttpMethod.OPTIONS, "/**").permitAll()
-                        // Acceso restringido a usuarios y administradores
-                        .requestMatchers("users", "users/**").hasAnyRole(
-                                UserRol.CLIENT.toString(), UserRol.HOTEL_ADMIN.toString(), UserRol.ADMIN.toString())
-                        // Acceso restringido a gestores de hoteles y administradores
-                        .requestMatchers(HttpMethod.GET, "hotels", "hotels/*").hasAnyRole(
-                                UserRol.CLIENT.toString(), UserRol.HOTEL_ADMIN.toString(), UserRol.ADMIN.toString())
-
-                        .requestMatchers("hotels", "hotels/**")
-                        .hasAnyRole(UserRol.ADMIN.toString(), UserRol.HOTEL_ADMIN.toString())
-                        // Acceso restringido a cualquier usuario del sistema
-                        .requestMatchers("bookings", "bookings/**")
-                        .hasAnyRole(UserRol.ADMIN.toString(), UserRol.HOTEL_ADMIN.toString(), UserRol.CLIENT.toString())
-                        // Rechazar el resto
-                        .anyRequest().denyAll())
-                // Registra el filtro antes del filtro estándar de autenticación
-                .addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
-
-        return http.build();
-    }
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/exceptions/GlobalExceptionHandler.java b/java/roomBooking/src/main/java/com/uva/monolith/exceptions/GlobalExceptionHandler.java
deleted file mode 100644
index 9428c51a9c63c3623d44752c9e3cbe6cf78ac19f..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/exceptions/GlobalExceptionHandler.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.uva.monolith.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.ControllerAdvice;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-
-import java.time.LocalDateTime;
-import java.util.HashMap;
-import java.util.Map;
-
-@ControllerAdvice
-public class GlobalExceptionHandler {
-
-    @ExceptionHandler(HotelNotFoundException.class)
-    public ResponseEntity<Map<String, Object>> handleHotelNotFound(HotelNotFoundException ex) {
-        Map<String, Object> body = new HashMap<>();
-        body.put("timestamp", LocalDateTime.now());
-        body.put("message", ex.getMessage());
-
-        return new ResponseEntity<>(body, HttpStatus.NOT_FOUND);
-    }
-
-    @ExceptionHandler(InvalidRequestException.class)
-    public ResponseEntity<Map<String, Object>> handleInvalidRequest(InvalidRequestException ex) {
-        Map<String, Object> body = new HashMap<>();
-        body.put("timestamp", LocalDateTime.now());
-        body.put("message", ex.getMessage());
-
-        return new ResponseEntity<>(body, HttpStatus.BAD_REQUEST);
-    }
-
-    @ExceptionHandler(InvalidDateRangeException.class)
-    public ResponseEntity<Map<String, Object>> handleInvalidDateRange(InvalidDateRangeException ex) {
-        Map<String, Object> body = new HashMap<>();
-        body.put("timestamp", LocalDateTime.now());
-        body.put("message", ex.getMessage());
-
-        return new ResponseEntity<>(body, HttpStatus.BAD_REQUEST);
-    }
-
-    @ExceptionHandler(Exception.class)
-    public ResponseEntity<Map<String, Object>> handleGeneralException(Exception ex) {
-        Map<String, Object> body = new HashMap<>();
-        body.put("timestamp", LocalDateTime.now());
-        body.put("message", "An unexpected error occurred: " + ex.getMessage());
-
-        return new ResponseEntity<>(body, HttpStatus.INTERNAL_SERVER_ERROR);
-    }
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/exceptions/HotelNotFoundException.java b/java/roomBooking/src/main/java/com/uva/monolith/exceptions/HotelNotFoundException.java
deleted file mode 100644
index 129a0b1086b4b78eb1f1725b9f241f51ce5540f8..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/exceptions/HotelNotFoundException.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.uva.monolith.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(HttpStatus.NOT_FOUND) // Devuelve un 404 cuando se lanza la excepción
-public class HotelNotFoundException extends RuntimeException {
-    public HotelNotFoundException(int id) {
-        super("Hotel not found with id: " + id);
-    }
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/exceptions/InvalidDateRangeException.java b/java/roomBooking/src/main/java/com/uva/monolith/exceptions/InvalidDateRangeException.java
deleted file mode 100644
index 5fea986ef1e9279c459bc5aff10932049f283333..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/exceptions/InvalidDateRangeException.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.uva.monolith.exceptions;
-
-public class InvalidDateRangeException extends RuntimeException {
-    public InvalidDateRangeException(String message) {
-        super(message);
-    }
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/exceptions/InvalidRequestException.java b/java/roomBooking/src/main/java/com/uva/monolith/exceptions/InvalidRequestException.java
deleted file mode 100644
index ca09e054420dd174c4d2c3424dcc8fe74b6c8576..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/exceptions/InvalidRequestException.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.uva.monolith.exceptions;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(HttpStatus.BAD_REQUEST)
-public class InvalidRequestException extends RuntimeException {
-    public InvalidRequestException(String message) {
-        super(message);
-    }
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/filter/JwtAuthenticationFilter.java b/java/roomBooking/src/main/java/com/uva/monolith/filter/JwtAuthenticationFilter.java
deleted file mode 100644
index 3b088ce78caee67736a2f1bc7f24f60e49b5a0fa..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/filter/JwtAuthenticationFilter.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package com.uva.monolith.filter;
-
-import com.auth0.jwt.JWT;
-import com.auth0.jwt.JWTVerifier;
-import com.auth0.jwt.algorithms.Algorithm;
-import com.auth0.jwt.interfaces.DecodedJWT;
-import com.auth0.jwt.exceptions.JWTVerificationException;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
-import org.springframework.stereotype.Component;
-
-import com.uva.monolith.services.users.models.UserRol;
-
-import jakarta.servlet.FilterChain;
-import jakarta.servlet.ServletException;
-import jakarta.servlet.ServletRequest;
-import jakarta.servlet.ServletResponse;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.Filter;
-
-import java.io.IOException;
-import java.time.LocalDateTime;
-import java.util.Collections;
-
-@Component
-public class JwtAuthenticationFilter implements Filter {
-
-    @Value("${security.jwt.secret-key}")
-    private String secretKey;
-
-    @Value("${security.jwt.kid}")
-    private String kid;
-
-    @Value("${security.jwt.expiration-time}")
-    private long jwtExpiration;
-
-    private Algorithm getSigningAlgorithm() {
-        return Algorithm.HMAC256(secretKey); // Usar HMAC256 con la clave secreta
-    }
-
-    private String getTokenFromRequest(HttpServletRequest request) {
-        String authHeader = request.getHeader("Authorization");
-        if (authHeader == null || !authHeader.startsWith("Bearer ")) {
-            return null;
-        }
-        return authHeader.substring(7);
-    }
-
-    private DecodedJWT validateAndDecodeToken(String token) {
-        try {
-            JWTVerifier verifier = JWT.require(getSigningAlgorithm()).build();
-            return verifier.verify(token); // Verifica y decodifica el token
-        } catch (JWTVerificationException ex) {
-            System.out.println(
-                    "[" + LocalDateTime.now().toString() + "] Error de verificación del token: " + ex.getMessage());
-            return null;
-        }
-    }
-
-    private String getEmailFromToken(DecodedJWT jwt) {
-        return jwt.getClaim("email").asString();
-    }
-
-    private UserRol getRoleFromToken(DecodedJWT jwt) {
-        String role = jwt.getClaim("rol").asString();
-        return UserRol.valueOf(role);
-    }
-
-    private String formatRole(UserRol rol) {
-        return String.format("ROLE_%s", rol.toString());
-    }
-
-    @Override
-    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
-            throws IOException, ServletException {
-        HttpServletRequest httpRequest = (HttpServletRequest) request;
-        String token = getTokenFromRequest(httpRequest);
-
-        System.out.print("[" + LocalDateTime.now().toString() + "] TOKEN: " + token);
-
-        if (token != null) {
-            DecodedJWT jwt = validateAndDecodeToken(token);
-            System.out.print(" " + jwt.toString() + " ");
-            if (jwt != null) {
-                String email = getEmailFromToken(jwt);
-                UserRol role = getRoleFromToken(jwt);
-                System.out.print(" email=" + email + " role=" + role + " ");
-
-                if (email != null && role != null && SecurityContextHolder.getContext().getAuthentication() == null) {
-                    // Crear la autoridad con el rol del token
-                    SimpleGrantedAuthority authority = new SimpleGrantedAuthority(formatRole(role));
-
-                    // Crear autenticación
-                    UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(email,
-                            null, Collections.singletonList(authority));
-                    authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(httpRequest));
-
-                    // Establecer autenticación en el contexto de seguridad
-                    SecurityContextHolder.getContext().setAuthentication(authentication);
-                }
-            }
-        }
-
-        // Continuar con el resto de filtros
-        chain.doFilter(request, response);
-    }
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/controllers/BookingController.java b/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/controllers/BookingController.java
deleted file mode 100644
index 61feb5104e87b7fcd333e36f07493532f397dbcf..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/controllers/BookingController.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.uva.monolith.services.bookings.controllers;
-
-import com.uva.monolith.services.bookings.models.Booking;
-import com.uva.monolith.services.bookings.services.BookingService;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import java.time.LocalDate;
-import java.util.List;
-
-@RestController
-@RequestMapping("/bookings")
-@CrossOrigin(origins = "*")
-public class BookingController {
-
-    private final BookingService bookingService;
-
-    public BookingController(BookingService bookingService) {
-        this.bookingService = bookingService;
-    }
-
-    @GetMapping
-    public List<Booking> getAllBookings(
-            @RequestParam(required = false) LocalDate start,
-            @RequestParam(required = false) LocalDate end,
-            @RequestParam(required = false) Integer roomId,
-            @RequestParam(required = false) Integer userId) {
-        return bookingService.getBookings(start, end, roomId, userId);
-    }
-
-    @PostMapping
-    public Booking createBooking(@RequestBody Booking booking) {
-        return bookingService.createBooking(booking);
-    }
-
-    @GetMapping("/{id}")
-    public Booking getBookingById(@PathVariable Integer id) {
-        return bookingService.getBookingById(id);
-    }
-
-    @DeleteMapping("/{id}")
-    public ResponseEntity<Void> deleteBooking(@PathVariable Integer id) {
-        try {
-            bookingService.deleteBooking(id);
-            return new ResponseEntity<>(HttpStatus.ACCEPTED);
-        } catch (RuntimeException e) {
-            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
-        }
-    }
-
-    @DeleteMapping("/hotel/{hotelId}")
-    public ResponseEntity<Void> deleteBookingsByHotelId(@PathVariable Integer hotelId) {
-        try {
-            bookingService.deleteBookingsByHotelId(hotelId);
-            return new ResponseEntity<>(HttpStatus.ACCEPTED);
-        } catch (RuntimeException e) {
-            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
-        }
-    }
-
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/models/Booking.java b/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/models/Booking.java
deleted file mode 100644
index 533ee0c7a1fa053dce449b855f1e46e08dabbe66..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/models/Booking.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package com.uva.monolith.services.bookings.models;
-
-import jakarta.persistence.Basic;
-import jakarta.persistence.CascadeType;
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-import jakarta.persistence.FetchType;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import jakarta.persistence.JoinColumn;
-import jakarta.persistence.ManyToOne;
-import jakarta.persistence.Table;
-import java.time.LocalDate;
-
-import com.uva.monolith.services.hotels.models.Room;
-import com.uva.monolith.services.users.models.Client;
-
-@Entity
-@Table(name = "bookings")
-public class Booking {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Basic(optional = false)
-    private int id;
-    @JoinColumn(name = "user_id", referencedColumnName = "id")
-    @ManyToOne(optional = false, fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
-    private Client userId;
-    @JoinColumn(name = "room_id", referencedColumnName = "id")
-    @ManyToOne(optional = false, fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
-    private Room roomId;
-    @Column(name = "start_date", nullable = false)
-    private LocalDate startDate;
-    @Column(name = "end_date", nullable = false)
-    private LocalDate endDate;
-
-    public Booking() {
-    }
-
-    public Booking(int id, Client userId, Room roomID, LocalDate startDate, LocalDate endDate) {
-        this.id = id;
-        this.userId = userId;
-        this.roomId = roomID;
-        this.startDate = startDate;
-        this.endDate = endDate;
-    }
-
-    public void setId(int id) {
-        this.id = id;
-    }
-
-    public int getId() {
-        return this.id;
-    }
-
-    public void setUserId(Client userId) {
-        this.userId = userId;
-    }
-
-    public Client getUserId() {
-        return this.userId;
-    }
-
-    public void setRoomId(Room roomID) {
-        this.roomId = roomID;
-    }
-
-    public Room getRoomId() {
-        return this.roomId;
-    }
-
-    public void setStartDate(LocalDate startDate) {
-        this.startDate = startDate;
-    }
-
-    public LocalDate getStartDate() {
-        return this.startDate;
-    }
-
-    public void setEndDate(LocalDate endDate) {
-        this.endDate = endDate;
-    }
-
-    public LocalDate getEndDate() {
-        return this.endDate;
-    }
-
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/repositories/BookingRepository.java b/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/repositories/BookingRepository.java
deleted file mode 100644
index b5ace65939b898798e6e5416fedda793388f2615..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/repositories/BookingRepository.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// BookingRepository.java
-package com.uva.monolith.services.bookings.repositories;
-
-import jakarta.transaction.Transactional;
-
-import java.time.LocalDate;
-import java.util.List;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-
-import com.uva.monolith.services.bookings.models.Booking;
-
-public interface BookingRepository extends JpaRepository<Booking, Integer> {
-        @Query("SELECT b FROM Booking b WHERE b.userId.id = ?1")
-        List<Booking> findByUserId(int userId);
-
-        @Query("SELECT b FROM Booking b WHERE b.roomId.id = ?1")
-        List<Booking> findByRoomId(int roomId);
-
-        @Query("SELECT b FROM Booking b WHERE b.startDate >= ?1 AND b.endDate <= ?2")
-        List<Booking> findByDateRange(@Param("startDate") LocalDate startDate,
-                        @Param("endDate") LocalDate endDate);
-
-        @Query("SELECT b FROM Booking b WHERE b.roomId.id = ?1 AND b.startDate < ?2 AND b.endDate > ?3")
-        List<Booking> findByRoomIdAndDateRange(@Param("roomId") int roomId, @Param("startDate") LocalDate startDate,
-                        @Param("endDate") LocalDate endDate);
-
-        @Transactional
-        @Modifying
-        @Query("DELETE FROM Booking b WHERE b.id = ?1")
-        void deleteBookingById(@Param("id") Integer id);
-
-        @Transactional
-        @Modifying
-        @Query("DELETE FROM Booking b WHERE b.roomId.hotel.id = ?1")
-        void deleteAllByHotelId(int hotelId);
-
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/services/BookingService.java b/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/services/BookingService.java
deleted file mode 100644
index 36c51e602fe7cf9bfe9b88f5261104a3c068c782..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/bookings/services/BookingService.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.uva.monolith.services.bookings.services;
-
-import com.uva.monolith.services.bookings.models.Booking;
-import com.uva.monolith.services.bookings.repositories.BookingRepository;
-import com.uva.monolith.services.hotels.models.Room;
-import com.uva.monolith.services.hotels.repositories.RoomRepository;
-import com.uva.monolith.services.users.models.Client;
-import com.uva.monolith.services.users.repositories.ClientRepository;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.time.LocalDate;
-import java.util.List;
-
-@Service
-public class BookingService {
-
-    @Autowired
-    private BookingRepository bookingRepository;
-
-    @Autowired
-    private RoomRepository roomRepository;
-
-    @Autowired
-    private ClientRepository clientRepository;
-
-    public List<Booking> getBookings(LocalDate start, LocalDate end, Integer roomId, Integer userId) {
-        List<Booking> bookings = null;
-
-        if (start != null && end != null) {
-            bookings = bookingRepository.findByDateRange(start, end);
-        }
-        if (roomId != null) {
-            if (bookings == null) {
-                bookings = bookingRepository.findByRoomId(roomId);
-            } else {
-                bookings = bookings.stream()
-                        .filter(booking -> booking.getRoomId().getId() == roomId)
-                        .toList();
-            }
-        }
-        if (userId != null) {
-            if (bookings == null) {
-                bookings = bookingRepository.findByUserId(userId);
-            } else {
-                bookings = bookings.stream()
-                        .filter(booking -> booking.getUserId().getId() == userId)
-                        .toList();
-            }
-        }
-        if (start == null && end == null && roomId == null && userId == null) {
-            bookings = bookingRepository.findAll();
-        }
-
-        return bookings;
-    }
-
-    public Booking createBooking(Booking booking) {
-        Client user = clientRepository.findById(booking.getUserId().getId())
-                .orElseThrow(() -> new RuntimeException("User not found"));
-        Room room = roomRepository.findById(booking.getRoomId().getId())
-                .orElseThrow(() -> new RuntimeException("Room not found"));
-
-        // Check availability
-        List<Booking> existingBookings = bookingRepository.findByRoomIdAndDateRange(
-                room.getId(), booking.getStartDate(), booking.getEndDate());
-
-        if (!existingBookings.isEmpty()) {
-            throw new RuntimeException("Room is not available for the selected dates");
-        }
-
-        booking.setUserId(user);
-        booking.setRoomId(room);
-        return bookingRepository.save(booking);
-    }
-
-    public Booking getBookingById(Integer id) {
-        return bookingRepository.findById(id)
-                .orElseThrow(() -> new RuntimeException("Booking not found"));
-    }
-
-    public void deleteBooking(Integer id) {
-        if (!bookingRepository.existsById(id)) {
-            throw new RuntimeException("Booking not found");
-        }
-        bookingRepository.deleteBookingById(id);
-    }
-
-    public void deleteBookingsByHotelId(int hotelId) {
-        bookingRepository.deleteAllByHotelId(hotelId);
-    }
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/controllers/HotelController.java b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/controllers/HotelController.java
deleted file mode 100644
index 781cb6278b0b40d237b603d7cfc61a63b7b2af0f..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/controllers/HotelController.java
+++ /dev/null
@@ -1,146 +0,0 @@
-package com.uva.monolith.services.hotels.controllers;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.time.LocalDate;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.*;
-
-import com.uva.monolith.exceptions.HotelNotFoundException;
-import com.uva.monolith.exceptions.InvalidDateRangeException;
-import com.uva.monolith.exceptions.InvalidRequestException;
-import com.uva.monolith.services.bookings.repositories.BookingRepository;
-import com.uva.monolith.services.hotels.models.Hotel;
-import com.uva.monolith.services.hotels.models.Room;
-import com.uva.monolith.services.hotels.repositories.HotelRepository;
-import com.uva.monolith.services.hotels.repositories.RoomRepository;
-import com.uva.monolith.services.users.models.HotelManager;
-import com.uva.monolith.services.users.repositories.HotelManagerRepository;
-
-@RestController
-@RequestMapping("hotels")
-@CrossOrigin(origins = "*")
-public class HotelController {
-    @Autowired
-    private HotelManagerRepository hotelManagerRepository;
-    private final HotelRepository hotelRepository;
-    private final RoomRepository roomRepository;
-    private final BookingRepository bookingRepository;
-
-    public HotelController(HotelRepository hotelRepository, RoomRepository roomRepository,
-            BookingRepository bookingRepository) {
-        this.hotelRepository = hotelRepository;
-        this.roomRepository = roomRepository;
-        this.bookingRepository = bookingRepository;
-    }
-
-    // Obtener todos los hoteles
-    @GetMapping
-    public List<Hotel> getAllHotels(
-            @RequestParam(required = false) Integer managerId,
-            @RequestParam(required = false) LocalDate start,
-            @RequestParam(required = false) LocalDate end) {
-        List<Hotel> hotels = (managerId != null)
-                ? hotelRepository.findAllByHotelManager(managerId)
-                : hotelRepository.findAll();
-        if (start != null && end != null) {
-            // Filtramos para los hoteles que
-            // tengan habitaciones disponibles para ese rango de fechas
-            System.out.println(start);
-            System.out.println(end);
-            hotels = hotels.stream().map(h -> {
-                if (h.getRooms().size() == 0)
-                    return h;
-                h.setRooms(roomRepository.findAvailableRoomsByHotelAndDates(h.getId(), start, end));
-                return h;
-            }).filter(h -> h.getRooms().size() >= 0).toList();
-        }
-        return hotels;
-    }
-
-    // Añadir un hotel con sus habitaciones
-    @PostMapping
-    public ResponseEntity<Hotel> addHotel(@RequestBody Hotel hotel) {
-        Optional<HotelManager> hm = hotelManagerRepository.findById(hotel.getHotelManager().getId());
-        if (!hm.isPresent()) {
-            return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
-        }
-        hotel.setHotelManager(hm.get());
-        Hotel savedHotel = hotelRepository.save(hotel);
-        return new ResponseEntity<>(savedHotel, HttpStatus.CREATED);
-    }
-
-    // Obtener un hotel por su ID
-    @GetMapping("/{id}")
-    public Hotel getHotelById(@PathVariable int id) {
-        return hotelRepository.findById(id)
-                .orElseThrow(() -> new HotelNotFoundException(id));
-    }
-
-    // Borrar un hotel junto con sus habitaciones (borrado en cascada)
-    @DeleteMapping("/{id}")
-    @Transactional
-    public ResponseEntity<Void> deleteHotel(@PathVariable Integer id) {
-        Hotel target = hotelRepository.findById(id)
-                .orElseThrow(() -> new HotelNotFoundException(id));
-        bookingRepository.deleteAllByHotelId(id);
-        HotelManager hm = target.getHotelManager();
-        hm.getHotels().removeIf(h -> h.getId() == target.getId());
-        hotelManagerRepository.save(hm);
-        bookingRepository.flush();
-        hotelRepository.delete(target);
-        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
-    }
-
-    // Obtener habitaciones de un hotel según disponibilidad y fechas
-    @GetMapping("/{hotelId}/rooms")
-    public ResponseEntity<List<Room>> getRoomsFromHotel(
-            @PathVariable int hotelId,
-            @RequestParam(required = false) LocalDate start,
-            @RequestParam(required = false) LocalDate end) {
-
-        List<Room> rooms;
-        if (start != null && end != null) {
-            if (!start.isBefore(end)) {
-                throw new InvalidDateRangeException("La fecha de inicio debe ser anterior a la fecha de fin");
-            }
-            rooms = roomRepository.findAvailableRoomsByHotelAndDates(hotelId, start, end);
-        } else {
-            rooms = roomRepository.findAllByHotelId(hotelId);
-        }
-        return new ResponseEntity<>(rooms, HttpStatus.OK);
-    }
-
-    // Actualizar disponibilidad de una habitación específica en un hotel
-    @PatchMapping("/{hotelId}/rooms/{roomId}")
-    public ResponseEntity<Room> updateRoomAvailability(
-            @PathVariable int hotelId,
-            @PathVariable int roomId,
-            @RequestBody Map<String, Boolean> body) {
-
-        if (!body.containsKey("available")) {
-            throw new InvalidRequestException("El campo 'available' es obligatorio");
-        }
-
-        Room targetRoom = roomRepository.findByIdAndHotelId(roomId, hotelId)
-                .orElseThrow(() -> new IllegalArgumentException("Habitación no encontrada"));
-
-        targetRoom.setAvailable(body.get("available"));
-        roomRepository.save(targetRoom);
-
-        return new ResponseEntity<>(targetRoom, HttpStatus.OK);
-    }
-
-    // Obtener los detalles de una habitación específica en un hotel
-    @GetMapping("/{hotelId}/rooms/{roomId}")
-    public Room getRoomByIdFromHotel(
-            @PathVariable int hotelId, @PathVariable int roomId) {
-        return roomRepository.findByIdAndHotelId(roomId, hotelId)
-                .orElseThrow(() -> new HotelNotFoundException(hotelId));
-    }
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Address.java b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Address.java
deleted file mode 100644
index 5f31a2a530da46c00460ad6cc6151b0769c1da61..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Address.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package com.uva.monolith.services.hotels.models;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import jakarta.persistence.Basic;
-import jakarta.persistence.CascadeType;
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-import jakarta.persistence.FetchType;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import jakarta.persistence.OneToOne;
-import jakarta.persistence.Table;
-
-@Entity
-@Table(name = "addresses")
-public class Address {
-
-  @Id
-  @GeneratedValue(strategy = GenerationType.IDENTITY)
-  @Basic(optional = false)
-  private int id;
-
-  @Basic(optional = false)
-  @Column(name = "street_kind")
-  private String streetKind;
-
-  @Basic(optional = false)
-  @Column(name = "street_name")
-  private String streetName;
-
-  @Basic(optional = false)
-  private int number;
-
-  @Basic(optional = false)
-  @Column(name = "post_code")
-  private String postCode;
-
-  @Basic(optional = true)
-  @Column(name = "other_info")
-  private String otherInfo;
-
-  @JsonIgnore
-  @OneToOne(mappedBy = "address", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
-  private Hotel hotel;
-
-  public Address() {
-  }
-
-  public Address(String streetKind, String streetName, int number, String postCode, String otherInfo, Hotel hotel) {
-    setStreetKind(streetKind);
-    setStreetName(streetName);
-    setNumber(number);
-    setPostCode(postCode);
-    setOtherInfo(otherInfo);
-    setHotel(hotel);
-  }
-
-  public int getId() {
-    return this.id;
-  }
-
-  public void setId(int id) {
-    this.id = id;
-  }
-
-  public String getStreetKind() {
-    return this.streetKind;
-  }
-
-  public void setStreetKind(String streetKind) {
-    this.streetKind = streetKind;
-  }
-
-  public String getStreetName() {
-    return this.streetName;
-  }
-
-  public void setStreetName(String streetName) {
-    this.streetName = streetName;
-  }
-
-  public int getNumber() {
-    return this.number;
-  }
-
-  public void setNumber(int number) {
-    this.number = number;
-  }
-
-  public String getPostCode() {
-    return this.postCode;
-  }
-
-  public void setPostCode(String postCode) {
-    this.postCode = postCode;
-  }
-
-  public String getOtherInfo() {
-    return this.otherInfo;
-  }
-
-  public void setOtherInfo(String otherInfo) {
-    this.otherInfo = otherInfo;
-  }
-
-  public Hotel getHotel() {
-    return this.hotel;
-  }
-
-  public void setHotel(Hotel hotel) {
-    this.hotel = hotel;
-  }
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Hotel.java b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Hotel.java
deleted file mode 100644
index 21f5cec8b44f9fae1a566b7af92964d30b654546..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Hotel.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.uva.monolith.services.hotels.models;
-
-import java.util.List;
-
-import com.uva.monolith.services.users.models.HotelManager;
-
-import jakarta.persistence.Basic;
-import jakarta.persistence.CascadeType;
-import jakarta.persistence.Entity;
-import jakarta.persistence.FetchType;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import jakarta.persistence.JoinColumn;
-import jakarta.persistence.ManyToOne;
-import jakarta.persistence.OneToMany;
-import jakarta.persistence.OneToOne;
-import jakarta.persistence.Table;
-
-@Entity
-@Table(name = "hotels")
-// @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
-// property = "id")
-public class Hotel {
-
-  @Id
-  @GeneratedValue(strategy = GenerationType.IDENTITY)
-  @Basic(optional = false)
-  private int id;
-
-  @Basic(optional = false)
-  private String name;
-
-  @JoinColumn(name = "address_id", referencedColumnName = "id")
-  @OneToOne(optional = false, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
-  private Address address;
-
-  @OneToMany(mappedBy = "hotel", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
-  private List<Room> rooms;
-
-  @ManyToOne(optional = false)
-  @JoinColumn(name = "hotel_manager", referencedColumnName = "id")
-  private HotelManager hotelManager;
-
-  public Hotel() {
-  }
-
-  public Hotel(int id, String name, Address address, List<Room> rooms, HotelManager hotelManager) {
-    setId(id);
-    setName(name);
-    setAddress(address);
-    setRooms(rooms);
-    setHotelManager(hotelManager);
-  }
-
-  public int getId() {
-    return this.id;
-  }
-
-  public void setId(int id) {
-    this.id = id;
-  }
-
-  public String getName() {
-    return this.name;
-  }
-
-  public void setName(String name) {
-    this.name = name;
-  }
-
-  public Address getAddress() {
-    return this.address;
-  }
-
-  public void setAddress(Address address) {
-    this.address = address;
-  }
-
-  public List<Room> getRooms() {
-    return this.rooms;
-  }
-
-  public void setRooms(List<Room> rooms) {
-    this.rooms = rooms;
-    rooms.forEach(room -> room.setHotel(this));
-  }
-
-  public void setHotelManager(HotelManager hotelManager) {
-    this.hotelManager = hotelManager;
-  }
-
-  public HotelManager getHotelManager() {
-    return hotelManager;
-  }
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Room.java b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Room.java
deleted file mode 100644
index 72a6a728f729dc7b93b727606172de7cbe385ebb..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/Room.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package com.uva.monolith.services.hotels.models;
-
-import java.util.List;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.uva.monolith.services.bookings.models.Booking;
-
-import jakarta.persistence.Basic;
-import jakarta.persistence.CascadeType;
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-import jakarta.persistence.FetchType;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import jakarta.persistence.JoinColumn;
-import jakarta.persistence.ManyToOne;
-import jakarta.persistence.OneToMany;
-import jakarta.persistence.Table;
-
-@Entity
-@Table(name = "rooms")
-// @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
-// property = "id")
-public class Room {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @Basic(optional = false)
-    private int id;
-
-    @ManyToOne
-    @JoinColumn(name = "hotel_id", referencedColumnName = "id")
-    @JsonIgnore
-    private Hotel hotel;
-    @Column(name = "room_number", nullable = false)
-    private String roomNumber;
-    @Column(name = "type", nullable = false)
-    private RoomType type;
-    @Column(name = "available", nullable = false)
-    private boolean available;
-    @JsonIgnore
-    @OneToMany(mappedBy = "roomId", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
-    private List<Booking> bookings;
-
-    public Room() {
-    }
-
-    public Room(int id, Hotel hotelId, String roomNumber, RoomType type, boolean available, List<Booking> bookings) {
-        this.id = id;
-        this.hotel = hotelId;
-        this.roomNumber = roomNumber;
-        this.type = type;
-        this.available = available;
-        this.bookings = bookings;
-    }
-
-    public void setId(int id) {
-        this.id = id;
-    }
-
-    public int getId() {
-        return this.id;
-    }
-
-    public void setHotel(Hotel hotelId) {
-        this.hotel = hotelId;
-    }
-
-    public Hotel getHotel() {
-        return this.hotel;
-    }
-
-    public void setRoomNumber(String roomNumber) {
-        this.roomNumber = roomNumber;
-    }
-
-    public String getRoomNumber() {
-        return this.roomNumber;
-    }
-
-    public void setType(RoomType type) {
-        this.type = type;
-    }
-
-    public RoomType getType() {
-        return this.type;
-    }
-
-    public void setAvailable(boolean available) {
-        this.available = available;
-    }
-
-    public boolean isAvailable() {
-        return this.available;
-    }
-
-    public List<Booking> getBookings() {
-        return this.bookings;
-    }
-
-    public void setBookings(List<Booking> bookings) {
-        this.bookings = bookings;
-    }
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/RoomType.java b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/RoomType.java
deleted file mode 100644
index b9e82584850795afa7c7392248e3a6472ce24ac0..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/models/RoomType.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.uva.monolith.services.hotels.models;
-
-public enum RoomType {
-    SINGLE,
-    DOUBLE,
-    SUITE
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/repositories/HotelRepository.java b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/repositories/HotelRepository.java
deleted file mode 100644
index eddb6640a275284cb70bde60a29afd33039ba454..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/repositories/HotelRepository.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.uva.monolith.services.hotels.repositories;
-
-import java.util.List;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-
-import com.uva.monolith.services.hotels.models.Hotel;
-
-public interface HotelRepository extends JpaRepository<Hotel, Integer> {
-    @Query("SELECT h FROM Hotel h WHERE h.hotelManager.id = ?1")
-    List<Hotel> findAllByHotelManager(Integer hotelManager);
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/repositories/RoomRepository.java b/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/repositories/RoomRepository.java
deleted file mode 100644
index 15cc3d370129e0753b9ac9b1eb24136c93bf5405..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/hotels/repositories/RoomRepository.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.uva.monolith.services.hotels.repositories;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-
-import com.uva.monolith.services.hotels.models.Room;
-
-import java.time.LocalDate;
-import java.util.List;
-import java.util.Optional;
-
-public interface RoomRepository extends JpaRepository<Room, Integer> {
-
-    Optional<Room> findByIdAndHotelId(int id, int hotelId);
-
-    // Encontrar todas las habitaciones de un hotel
-    List<Room> findAllByHotelId(int hotelId);
-
-    // Encontrar habitaciones disponibles de un hotel en un rango de fechas
-    @Query("""
-                SELECT r FROM Room r
-                WHERE r.hotel.id = ?1
-                AND r.available = true
-                AND NOT EXISTS (
-                    SELECT b FROM Booking b
-                    WHERE b.roomId.id = r.id
-                    AND (
-                        b.endDate >= ?2
-                        OR
-                        ?3 >= b.startDate
-                    )
-                )
-            """)
-    List<Room> findAvailableRoomsByHotelAndDates(
-            int hotelId, LocalDate startDate, LocalDate endDate);
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/users/controllers/UserController.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/controllers/UserController.java
deleted file mode 100644
index 15fc498b79e239020aba6833ae9dbfaa8eeb59ee..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/users/controllers/UserController.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package com.uva.monolith.services.users.controllers;
-
-import java.util.List;
-import java.util.Map;
-
-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;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PatchMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-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.uva.monolith.services.users.models.User;
-import com.uva.monolith.services.users.models.UserStatus;
-import com.uva.monolith.services.users.services.UserService;
-
-@RestController
-@RequestMapping("users")
-@CrossOrigin(origins = "*")
-public class UserController {
-
-  @Autowired
-  private UserService userService;
-
-  @GetMapping
-  public ResponseEntity<List<User>> getAllUsers() {
-    List<User> users = userService.getAllUsers();
-    return ResponseEntity.ok(users);
-  }
-
-  @GetMapping(params = { "email" })
-  public ResponseEntity<?> getUserByEmail(@RequestParam String email) {
-    try {
-      return ResponseEntity.ok(userService.getUserByEmail(email));
-    } catch (HttpClientErrorException e) {
-      if (e.getStatusCode() == HttpStatus.NOT_FOUND)
-        return new ResponseEntity<String>(HttpStatus.NOT_FOUND);
-      throw e;
-    }
-  }
-
-  @PostMapping
-  public ResponseEntity<?> addUser(@RequestBody User user) {
-    userService.registerNewUser(user);
-    return new ResponseEntity<>(HttpStatus.ACCEPTED);
-  }
-
-  @GetMapping("/{id}")
-  public ResponseEntity<?> getUserById(@PathVariable int id) {
-    return ResponseEntity.ok(userService.getUserById(id));
-  }
-
-  @PutMapping("/{id}")
-  public ResponseEntity<?> updateUserData(@PathVariable int id, @RequestBody Map<String, String> json) {
-    System.err.println(json.entrySet().size());
-    json.keySet().forEach(k -> System.err.println(k));
-    String name = json.get("name");
-    String email = json.get("email");
-    if (name == null || email == null) {
-      return new ResponseEntity<String>("Missing required fields", HttpStatus.BAD_REQUEST);
-    }
-    try {
-      User user = userService.updateUserData(id, name, email);
-      return new ResponseEntity<User>(user, HttpStatus.OK);
-    } catch (HttpClientErrorException e) {
-      if (e.getStatusCode() == HttpStatus.NOT_FOUND)
-        return new ResponseEntity<String>(HttpStatus.NOT_FOUND);
-      throw e;
-    }
-  }
-
-  @PatchMapping("/{id}")
-  public ResponseEntity<?> updateUserState(@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);
-    }
-    try {
-      UserStatus userStatus = UserStatus.valueOf(strStatus);
-      return ResponseEntity.ok(userService.updateUserStatus(id, userStatus));
-    } catch (IllegalArgumentException e) {
-      return new ResponseEntity<String>("Unknown user state", HttpStatus.BAD_REQUEST);
-    } catch (HttpClientErrorException e) {
-      if (e.getStatusCode() == HttpStatus.NOT_FOUND)
-        return new ResponseEntity<String>(HttpStatus.NOT_FOUND);
-      throw e;
-    }
-
-  }
-
-  @DeleteMapping("/{id}")
-  public ResponseEntity<?> deleteUser(@PathVariable Integer id) {
-    try {
-      return ResponseEntity.ok(userService.deleteUserById(id));
-    } catch (HttpClientErrorException e) {
-      if (e.getStatusCode() == HttpStatus.NOT_FOUND)
-        return new ResponseEntity<String>(HttpStatus.NOT_FOUND);
-      throw e;
-    }
-  }
-
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/AuthResponse.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/AuthResponse.java
deleted file mode 100644
index 8f334813beee8cb95caa275c66e46c9c539f2bd5..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/AuthResponse.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.uva.monolith.services.users.models;
-
-public class AuthResponse {
-
-  private int id;
-  private String username;
-  private String email;
-  private String password;
-  private UserRol rol;
-
-  public int getId() {
-    return this.id;
-  }
-
-  public void setId(int id) {
-    this.id = id;
-  }
-
-  public String getUsername() {
-    return this.username;
-  }
-
-  public void setUsername(String username) {
-    this.username = username;
-  }
-
-  public String getEmail() {
-    return this.email;
-  }
-
-  public void setEmail(String email) {
-    this.email = email;
-  }
-
-  public String getPassword() {
-    return this.password;
-  }
-
-  public void setPassword(String password) {
-    this.password = password;
-  }
-
-  public UserRol getRol() {
-    return this.rol;
-  }
-
-  public void setRol(UserRol rol) {
-    this.rol = rol;
-  }
-
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/Client.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/Client.java
deleted file mode 100644
index e106ecd3789a0237602e3194feacab7ddcbf4dfd..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/Client.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.uva.monolith.services.users.models;
-
-import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.List;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.uva.monolith.services.bookings.models.Booking;
-
-import jakarta.persistence.Basic;
-import jakarta.persistence.CascadeType;
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-import jakarta.persistence.EnumType;
-import jakarta.persistence.Enumerated;
-import jakarta.persistence.FetchType;
-import jakarta.persistence.OneToMany;
-import jakarta.persistence.Table;
-
-@Entity
-@Table(name = "user_client")
-public class Client extends User {
-
-  @Basic(optional = false)
-  @Column(nullable = false)
-  @Enumerated(EnumType.STRING)
-  private UserStatus status;
-
-  @JsonIgnore
-  @OneToMany(mappedBy = "userId", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
-  private List<Booking> bookings;
-
-  public Client() {
-    super();
-    bookings = new ArrayList<>();
-    status = UserStatus.NO_BOOKINGS;
-  }
-
-  public Client(int id, String name, String email, String password, UserStatus status,
-      List<Booking> bookings) {
-    super(id, name, email, password, UserRol.CLIENT);
-    setStatus(status);
-    setBookings(bookings);
-  }
-
-  public UserStatus getStatus() {
-    if (getBookings() == null || getBookings().isEmpty())
-      return UserStatus.NO_BOOKINGS;
-    boolean activeBookings = getBookings().stream()
-        .anyMatch(booking -> !booking.getEndDate().isBefore(LocalDate.now())); // reserva >= ahora
-    return activeBookings ? UserStatus.WITH_ACTIVE_BOOKINGS : UserStatus.WITH_INACTIVE_BOOKINGS;
-  }
-
-  public void setStatus(UserStatus status) {
-    this.status = status;
-  }
-
-  public List<Booking> getBookings() {
-    return this.bookings;
-  }
-
-  public void setBookings(List<Booking> bookings) {
-    this.bookings = bookings;
-  }
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/HotelManager.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/HotelManager.java
deleted file mode 100644
index 0e6f4b0aafa35ab8b23d202814c1fabefdcf86ed..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/HotelManager.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.uva.monolith.services.users.models;
-
-import java.util.ArrayList;
-import java.util.List;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.uva.monolith.services.hotels.models.Hotel;
-import jakarta.persistence.CascadeType;
-import jakarta.persistence.Entity;
-import jakarta.persistence.FetchType;
-import jakarta.persistence.OneToMany;
-import jakarta.persistence.Table;
-
-@Entity
-@Table(name = "hotel_manager_user")
-public class HotelManager extends User {
-
-  @JsonIgnore
-  @OneToMany(mappedBy = "hotelManager", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
-  private List<Hotel> hotels;
-
-  public HotelManager() {
-    super();
-    hotels = new ArrayList<>();
-  }
-
-  public HotelManager(int id, String name, String email, String password, List<Hotel> hotels) {
-    super(id, name, email, password, UserRol.HOTEL_ADMIN);
-    setHotels(hotels);
-  }
-
-  public List<Hotel> getHotels() {
-    return this.hotels;
-  }
-
-  public void setHotels(List<Hotel> hotels) {
-    this.hotels = hotels;
-  }
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/User.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/User.java
deleted file mode 100644
index ecfd33d1e39f6760f39fb0ad48fa195cd71432ea..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/User.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.uva.monolith.services.users.models;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-import jakarta.persistence.Basic;
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-import jakarta.persistence.EnumType;
-import jakarta.persistence.Enumerated;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import jakarta.persistence.Inheritance;
-import jakarta.persistence.InheritanceType;
-import jakarta.persistence.Table;
-
-@Entity
-@Inheritance(strategy = InheritanceType.JOINED)
-@Table(name = "users")
-public class User {
-
-  @Id
-  @GeneratedValue(strategy = GenerationType.IDENTITY)
-  @Basic(optional = false)
-  @Column(nullable = false)
-  private int id;
-
-  @Basic(optional = false)
-  @Column(nullable = false)
-  private String name;
-
-  @Basic(optional = false)
-  @Column(nullable = false, unique = true)
-  private String email;
-
-  @Basic(optional = false)
-  @Column(nullable = false)
-  private String password;
-
-  @Basic(optional = false)
-  @Column(nullable = false)
-  @Enumerated(EnumType.STRING)
-  private UserRol rol = UserRol.CLIENT;
-
-  public User() {
-  }
-
-  public User(int id, String name, String email, String password, UserRol rol) {
-    setId(id);
-    setName(name);
-    setEmail(email);
-    setRol(rol);
-  }
-
-  public int getId() {
-    return this.id;
-  }
-
-  public void setId(int id) {
-    this.id = id;
-  }
-
-  public String getName() {
-    return this.name;
-  }
-
-  public void setName(String name) {
-    this.name = name;
-  }
-
-  public String getEmail() {
-    return this.email;
-  }
-
-  public void setEmail(String email) {
-    this.email = email;
-  }
-
-  public String getPassword() {
-    return password;
-  }
-
-  public void setPassword(String rawPassword) {
-    this.password = rawPassword;
-  }
-
-  public UserRol getRol() {
-    return this.rol;
-  }
-
-  public void setRol(UserRol rol) {
-    this.rol = rol;
-  }
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/UserRol.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/UserRol.java
deleted file mode 100644
index f408ba5ef9d34d96c32d3c42a6c2c51b1c6f22b1..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/UserRol.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.uva.monolith.services.users.models;
-
-public enum UserRol {
-  ADMIN, HOTEL_ADMIN, CLIENT
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/UserStatus.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/UserStatus.java
deleted file mode 100644
index 362b8688260d4c13dc4a8eae205411c9d5533d79..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/users/models/UserStatus.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.uva.monolith.services.users.models;
-
-public enum UserStatus {
-  NO_BOOKINGS, WITH_ACTIVE_BOOKINGS, WITH_INACTIVE_BOOKINGS;
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/users/repositories/ClientRepository.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/repositories/ClientRepository.java
deleted file mode 100644
index 1c1b46fbe665075b8f817367ff14ee65cf69ff76..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/users/repositories/ClientRepository.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.uva.monolith.services.users.repositories;
-
-import java.util.Optional;
-import org.springframework.data.jpa.repository.JpaRepository;
-
-import com.uva.monolith.services.users.models.Client;
-
-public interface ClientRepository extends JpaRepository<Client, Integer> {
-  Optional<Client> findByEmail(String email);
-}
\ No newline at end of file
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/users/repositories/HotelManagerRepository.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/repositories/HotelManagerRepository.java
deleted file mode 100644
index 092a251b199fdecd80a2654fc3e6c96d1b7eb7f4..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/users/repositories/HotelManagerRepository.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.uva.monolith.services.users.repositories;
-
-import java.util.Optional;
-import org.springframework.data.jpa.repository.JpaRepository;
-
-import com.uva.monolith.services.users.models.HotelManager;
-
-public interface HotelManagerRepository extends JpaRepository<HotelManager, Integer> {
-  Optional<HotelManager> findByEmail(String email);
-}
\ No newline at end of file
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/users/repositories/UserRepository.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/repositories/UserRepository.java
deleted file mode 100644
index e5b44c976f095719854aa8070abc843b898036fe..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/users/repositories/UserRepository.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.uva.monolith.services.users.repositories;
-
-import java.util.Optional;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-
-import com.uva.monolith.services.users.models.User;
-
-public interface UserRepository extends JpaRepository<User, Integer> {
-  Optional<User> findByEmail(String email);
-}
diff --git a/java/roomBooking/src/main/java/com/uva/monolith/services/users/services/UserService.java b/java/roomBooking/src/main/java/com/uva/monolith/services/users/services/UserService.java
deleted file mode 100644
index bdd5b9db80a7c699844cfcd48669171ffbe6b8f0..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/java/com/uva/monolith/services/users/services/UserService.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package com.uva.monolith.services.users.services;
-
-import java.time.LocalDate;
-import java.util.List;
-import java.util.Optional;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.stereotype.Service;
-import org.springframework.web.client.HttpClientErrorException;
-
-import com.uva.monolith.services.users.models.AuthResponse;
-import com.uva.monolith.services.users.models.Client;
-import com.uva.monolith.services.users.models.HotelManager;
-import com.uva.monolith.services.users.models.User;
-import com.uva.monolith.services.users.models.UserRol;
-import com.uva.monolith.services.users.models.UserStatus;
-import com.uva.monolith.services.users.repositories.ClientRepository;
-import com.uva.monolith.services.users.repositories.HotelManagerRepository;
-import com.uva.monolith.services.users.repositories.UserRepository;
-
-@Service
-public class UserService {
-
-  @Autowired
-  private UserRepository userRepository;
-
-  @Autowired
-  private ClientRepository clientRepository;
-
-  @Autowired
-  private HotelManagerRepository hotelManagerRepository;
-
-  public List<User> getAllUsers() {
-    return userRepository.findAll();
-  }
-
-  private User assertUser(Optional<? extends User> opUser) {
-    return opUser.orElseThrow(() -> new HttpClientErrorException(HttpStatus.NOT_FOUND));
-  }
-
-  public User getUserById(int id) {
-    return assertUser(userRepository.findById(id));
-  }
-
-  public AuthResponse getUserByEmail(String email) {
-    User u = assertUser(userRepository.findByEmail(email));
-    AuthResponse auth = new AuthResponse();
-    BeanUtils.copyProperties(u, auth);
-    return auth;
-  }
-
-  public User registerNewUser(User registerRequest) {
-    User newUser;
-
-    // Aseguramos que tenga un rol, por defecto es cliente
-    if (registerRequest.getRol() == null)
-      registerRequest.setRol(UserRol.CLIENT);
-
-    switch (registerRequest.getRol()) {
-      case HOTEL_ADMIN:
-        HotelManager hm = new HotelManager();
-        BeanUtils.copyProperties(registerRequest, hm);
-        newUser = hotelManagerRepository.save(hm);
-        break;
-
-      case ADMIN:
-        User admin = new User();
-        BeanUtils.copyProperties(registerRequest, admin);
-        newUser = admin; // userAPI.save(admin);
-        break;
-
-      case CLIENT: // Por defecto cliente normal
-      default:
-        Client client = new Client();
-        BeanUtils.copyProperties(registerRequest, client);
-        client.setRol(UserRol.CLIENT);
-        newUser = clientRepository.save(client);
-        break;
-    }
-    return newUser;
-  }
-
-  public User updateUserData(int id, String name, String email) {
-    User user = getUserById(id);
-    user.setName(name);
-    user.setEmail(email);
-    return userRepository.save(user);
-  }
-
-  public User updateUserStatus(int id, UserStatus status) {
-
-    Client user = (Client) assertUser(clientRepository.findById(id));
-
-    boolean activeBookings = user.getBookings().stream()
-        .anyMatch(booking -> !booking.getEndDate().isBefore(LocalDate.now())); // reserva >= ahora
-    boolean inactiveBookings = user.getBookings().stream()
-        .anyMatch(booking -> booking.getStartDate().isBefore(LocalDate.now())); // reserva < ahora
-
-    switch (status) {
-      case NO_BOOKINGS:
-        if (!user.getBookings().isEmpty())
-          throw new IllegalArgumentException("Invalid State: The user has at least one booking");
-        break;
-      case WITH_ACTIVE_BOOKINGS:
-        if (user.getBookings().isEmpty())
-          throw new IllegalArgumentException("Invalid State: The user don't has bookings");
-        if (!activeBookings)
-          throw new IllegalArgumentException("Invalid State: The user don't has active bookings");
-        break;
-      case WITH_INACTIVE_BOOKINGS:
-        if (user.getBookings().isEmpty())
-          throw new IllegalArgumentException("Invalid State: The user don't has bookings");
-        if (!inactiveBookings)
-          throw new IllegalArgumentException("Invalid State: The user don't has inactive bookings");
-        break;
-      default:
-        break;
-    }
-    user.setStatus(status);
-    return userRepository.save(user);
-  }
-
-  public User deleteUserById(int id) {
-    User user = getUserById(id);
-    // TODO eliminar reservas de usuario ahora mismo no por el modo cascada pero a
-    // futuro sí, después de la disgregación en microservicios
-    userRepository.deleteById(id);
-    return user;
-  }
-}
diff --git a/java/roomBooking/src/main/resources/application.properties b/java/roomBooking/src/main/resources/application.properties
deleted file mode 100644
index e9b75a35a39f7947153b79b234d6377a853078d4..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/main/resources/application.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-spring.application.name=roomBooking
-spring.jpa.hibernate.ddl-auto=update
-spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
-spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/RoomsBooking?createDatabaseIfNotExist=true
-spring.datasource.username=user
-spring.datasource.password=password
-spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-spring.security.user.name=admin
-spring.security.user.password=admin
-
-# Usar esto para alternar entre las exposición del room repository ya que no es necesario su uso pero por defecto, al no cubrir su ruta, se expone
-# spring.data.rest.base-path=false
-external.services.auth.host=localhost:8101
-
-security.jwt.secret-key=MiClaveDeSeguridadMuyLargaParaQueNoFalleSpringBoot
-# 1h in millisecond
-security.jwt.expiration-time=3600000
-security.jwt.kid=cYz3kNRLAirxVhHXQ5rh5xKrOwHwZVui
\ No newline at end of file
diff --git a/java/roomBooking/src/test/java/com/uva/roomBooking/RoomBookingApplicationTests.java b/java/roomBooking/src/test/java/com/uva/roomBooking/RoomBookingApplicationTests.java
deleted file mode 100644
index 3b50599492c36017391c0dcabd81573f123a809a..0000000000000000000000000000000000000000
--- a/java/roomBooking/src/test/java/com/uva/roomBooking/RoomBookingApplicationTests.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.uva.roomBooking;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class RoomBookingApplicationTests {
-
-	@Test
-	void contextLoads() {
-	}
-
-}
diff --git a/java/services/bookings/src/main/java/com/uva/apis/bookings/controllers/BookingController.java b/java/services/bookings/src/main/java/com/uva/apis/bookings/controllers/BookingController.java
index 44ee237a73f601bfd4104774866cf6388555a41c..597c657f9d4fed32aa5f3b82a7bf0c44fe5b0203 100644
--- a/java/services/bookings/src/main/java/com/uva/apis/bookings/controllers/BookingController.java
+++ b/java/services/bookings/src/main/java/com/uva/apis/bookings/controllers/BookingController.java
@@ -2,6 +2,7 @@ package com.uva.apis.bookings.controllers;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
+import org.springframework.http.HttpStatusCode;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
@@ -39,12 +40,27 @@ public class BookingController {
         return bookingService.getBookingById(id);
     }
 
-    @DeleteMapping /// ?hotelId={hotelId}
-    public ResponseEntity<Void> deleteBooking(@RequestParam int hotelId) {
+    @DeleteMapping /// ?hotelId={hotelId}|managerId={managerId}
+    public ResponseEntity<?> deleteBooking(
+            @RequestParam(required = false) Integer hotelId,
+            @RequestParam(required = false) Integer managerId) {
         try {
-            bookingService.deleteBookingsByHotelId(hotelId);
-            return new ResponseEntity<>(HttpStatus.ACCEPTED);
+            List<Booking> bookings;
+            String message;
+            if (managerId != null) {
+                bookings = bookingService.deleteAllByManagerId(managerId);
+                message = "No bookings for this manager";
+            } else if (hotelId != null) {
+                bookings = bookingService.deleteBookingsByHotelId(hotelId);
+                message = "No bookings for this hotel";
+            } else {
+                return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
+            }
+            return !bookings.isEmpty()
+                    ? new ResponseEntity<>(bookings, HttpStatus.OK)
+                    : new ResponseEntity<>(message, HttpStatus.BAD_REQUEST);
         } catch (RuntimeException e) {
+            e.printStackTrace(System.err);
             return new ResponseEntity<>(HttpStatus.NOT_FOUND);
         }
     }
diff --git a/java/services/bookings/src/main/java/com/uva/apis/bookings/models/Booking.java b/java/services/bookings/src/main/java/com/uva/apis/bookings/models/Booking.java
index 8af8688534991b81c0b2b79aa01344bd5b2b86fa..fee28fd4b673f11db95d7b6296e5faee21cadd8d 100644
--- a/java/services/bookings/src/main/java/com/uva/apis/bookings/models/Booking.java
+++ b/java/services/bookings/src/main/java/com/uva/apis/bookings/models/Booking.java
@@ -31,6 +31,9 @@ public class Booking {
     @Column(name = "user_id", nullable = false)
     private int userId;
 
+    @Column(name = "manager_id", nullable = false)
+    private int managerId;
+
     @Column(name = "hotel_id", nullable = false)
     private int hotelId;
 
diff --git a/java/services/bookings/src/main/java/com/uva/apis/bookings/repositories/BookingRepository.java b/java/services/bookings/src/main/java/com/uva/apis/bookings/repositories/BookingRepository.java
index 646fa074709a0c14dd109c579d624f5ce20245e2..678b67eb4ad17734c90d10d3d74430991acec01d 100644
--- a/java/services/bookings/src/main/java/com/uva/apis/bookings/repositories/BookingRepository.java
+++ b/java/services/bookings/src/main/java/com/uva/apis/bookings/repositories/BookingRepository.java
@@ -10,6 +10,8 @@ import org.springframework.data.repository.query.Param;
 
 import com.uva.apis.bookings.models.Booking;
 
+import jakarta.transaction.Transactional;
+
 public interface BookingRepository extends JpaRepository<Booking, Integer> {
 
         List<Booking> findByUserId(int userId);
@@ -26,8 +28,14 @@ public interface BookingRepository extends JpaRepository<Booking, Integer> {
 
         void deleteById(int id);
 
+        @Transactional
         void deleteAllByHotelId(int hotelId);
 
         List<Booking> findByHotelId(Integer roomId);
 
+        @Transactional
+        void deleteAllByManagerId(int managerId);
+
+        List<Booking> findByManagerId(int managerId);
+
 }
diff --git a/java/services/bookings/src/main/java/com/uva/apis/bookings/services/BookingService.java b/java/services/bookings/src/main/java/com/uva/apis/bookings/services/BookingService.java
index 8d9425c87d1ead527a7b7c22040f4cbc7aa9577a..161a43540baa4f9ddc977ce48c13b1f03bf05c3e 100644
--- a/java/services/bookings/src/main/java/com/uva/apis/bookings/services/BookingService.java
+++ b/java/services/bookings/src/main/java/com/uva/apis/bookings/services/BookingService.java
@@ -11,6 +11,7 @@ import com.uva.apis.bookings.models.Booking;
 import com.uva.apis.bookings.repositories.BookingRepository;
 
 import java.time.LocalDate;
+import java.util.ArrayList;
 import java.util.List;
 
 @Service
@@ -117,8 +118,22 @@ public class BookingService {
         bookingRepository.deleteById(id);
     }
 
-    public void deleteBookingsByHotelId(int hotelId) {
+    public List<Booking> deleteBookingsByHotelId(int hotelId) {
         // Extraer reservas realizadas al hotel
+        List<Booking> bookings = bookingRepository.findByHotelId(hotelId);
+        if (bookings.isEmpty()) {
+            return new ArrayList<>();
+        }
         bookingRepository.deleteAllByHotelId(hotelId);
+        return bookings;
+    }
+
+    public List<Booking> deleteAllByManagerId(int managerId) {
+        List<Booking> bookings = bookingRepository.findByManagerId(managerId);
+        if (bookings.isEmpty()) {
+            return new ArrayList<>();
+        }
+        bookingRepository.deleteAllByManagerId(managerId);
+        return bookings;
     }
 }
diff --git a/java/services/hotels/src/main/java/com/uva/monolith/api/BookingAPI.java b/java/services/hotels/src/main/java/com/uva/monolith/api/BookingAPI.java
index 0f09e3b92f97997077118a488da41eee42602d9d..369066bd537e131c333b04ae0415f7527cff6885 100644
--- a/java/services/hotels/src/main/java/com/uva/monolith/api/BookingAPI.java
+++ b/java/services/hotels/src/main/java/com/uva/monolith/api/BookingAPI.java
@@ -15,7 +15,7 @@ public class BookingAPI {
 
   @Autowired
   private RestTemplate restTemplate;
-  
+
   @Value("${external.services.bookings.url}")
   private String BOOKING_API_URL;
 
@@ -45,4 +45,9 @@ public class BookingAPI {
 
     return notAvailableRooms;
   }
+
+  public void deleteAllByManagerId(Integer managerId) {
+    String url = BOOKING_API_URL + "?managerId={managerId}";
+    restTemplate.delete(url, managerId);
+  }
 }
\ No newline at end of file
diff --git a/java/services/hotels/src/main/java/com/uva/monolith/api/HotelManagerAPI.java b/java/services/hotels/src/main/java/com/uva/monolith/api/ManagerAPI.java
similarity index 90%
rename from java/services/hotels/src/main/java/com/uva/monolith/api/HotelManagerAPI.java
rename to java/services/hotels/src/main/java/com/uva/monolith/api/ManagerAPI.java
index f4b0c18bb3fdfbadd919807368121500b92153ce..3dc33257d9ce9df4a2651bea2a6c3dcfbba7e8fa 100644
--- a/java/services/hotels/src/main/java/com/uva/monolith/api/HotelManagerAPI.java
+++ b/java/services/hotels/src/main/java/com/uva/monolith/api/ManagerAPI.java
@@ -10,7 +10,7 @@ import org.springframework.web.client.HttpClientErrorException;
 import org.springframework.web.client.RestTemplate;
 
 @Component
-public class HotelManagerAPI {
+public class ManagerAPI {
 
   @Autowired
   private RestTemplate restTemplate;
@@ -18,7 +18,7 @@ public class HotelManagerAPI {
   @Value("${external.services.managers.url}")
   private String MANAGERS_API_URL;
 
-  public Boolean existsHotelManagerById(int id) {
+  public Boolean existsManagerById(int id) {
     try {
       String url = MANAGERS_API_URL + "/{id}";
       return restTemplate.getForObject(url, Map.class, id).containsKey("id");
diff --git a/java/services/hotels/src/main/java/com/uva/monolith/services/hotels/controllers/HotelController.java b/java/services/hotels/src/main/java/com/uva/monolith/services/hotels/controllers/HotelController.java
index 39c1b314c15ad3f49a9fad76dde88f45cc9b7458..75c9aed4195a05a969db8f6f85d10cc328b606ae 100644
--- a/java/services/hotels/src/main/java/com/uva/monolith/services/hotels/controllers/HotelController.java
+++ b/java/services/hotels/src/main/java/com/uva/monolith/services/hotels/controllers/HotelController.java
@@ -12,7 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import com.uva.monolith.api.BookingAPI;
-import com.uva.monolith.api.HotelManagerAPI;
+import com.uva.monolith.api.ManagerAPI;
 import com.uva.monolith.exceptions.HotelNotFoundException;
 import com.uva.monolith.exceptions.InvalidDateRangeException;
 import com.uva.monolith.exceptions.InvalidRequestException;
@@ -32,7 +32,7 @@ public class HotelController {
     @Autowired
     private BookingAPI bookingAPI;
     @Autowired
-    private HotelManagerAPI hotelManagerAPI;
+    private ManagerAPI managerAPI;
 
     // Obtener todos los hoteles
     @GetMapping
@@ -62,7 +62,7 @@ public class HotelController {
     // Añadir un hotel con sus habitaciones
     @PostMapping
     public ResponseEntity<?> addHotel(@RequestBody Hotel hotel) {
-        boolean exist = hotelManagerAPI.existsHotelManagerById(hotel.getManagerId());
+        boolean exist = managerAPI.existsManagerById(hotel.getManagerId());
         if (!exist) {
             return new ResponseEntity<>(
                     "No existe el manager con id " + String.valueOf(hotel.getManagerId()), HttpStatus.BAD_REQUEST);
@@ -78,6 +78,19 @@ public class HotelController {
                 .orElseThrow(() -> new HotelNotFoundException(id));
     }
 
+    // Borrar hoteles administrados por un manager concreto
+    @DeleteMapping
+    public ResponseEntity<?> deleteHotelsByManagerId(
+            @RequestParam(required = true) Integer managerId) {
+        List<Hotel> hotels = hotelRepository.findAllByManagerId(managerId);
+        if (hotels.isEmpty()) {
+            return new ResponseEntity<>("No hay hoteles para el manager con id " + managerId, HttpStatus.BAD_REQUEST);
+        }
+        bookingAPI.deleteAllByManagerId(managerId);
+        hotelRepository.deleteAll(hotels);
+        return new ResponseEntity<>(hotels, HttpStatus.OK);
+    }
+
     // Borrar un hotel junto con sus habitaciones (borrado en cascada)
     @DeleteMapping("/{id}")
     @Transactional
diff --git a/java/services/users/src/main/java/com/uva/api/apis/BookingAPI.java b/java/services/users/src/main/java/com/uva/api/apis/BookingAPI.java
index 3c17afe11eca919848621eba55ba84b75f666f45..e7a51f960dcc463c54c0fe0f56c1654bbe4c5025 100644
--- a/java/services/users/src/main/java/com/uva/api/apis/BookingAPI.java
+++ b/java/services/users/src/main/java/com/uva/api/apis/BookingAPI.java
@@ -21,7 +21,6 @@ public class BookingAPI {
 
   public List<Booking> getAllBookingsByUserId(int id) {
     String url = BOOKING_API_URL + "?userId={id}";
-    System.out.println("\n" + url);
     Booking[] bookingsArray = restTemplate
         .getForObject(url, Booking[].class, id);
 
@@ -29,4 +28,9 @@ public class BookingAPI {
 
   }
 
+  public void deleteAllByUserId(int id) {
+    String url = BOOKING_API_URL + "?userId={id}";
+    restTemplate.delete(url, id);
+  }
+
 }
diff --git a/java/services/users/src/main/java/com/uva/api/apis/HotelApi.java b/java/services/users/src/main/java/com/uva/api/apis/HotelApi.java
index f6e3899272a2d5e16a3d474c904276ef80ab787d..394ee623e262a748949114e57784ef3fe3002d95 100644
--- a/java/services/users/src/main/java/com/uva/api/apis/HotelApi.java
+++ b/java/services/users/src/main/java/com/uva/api/apis/HotelApi.java
@@ -1,5 +1,22 @@
 package com.uva.api.apis;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+@Component
 public class HotelApi {
 
+  @Autowired
+  private RestTemplate restTemplate;
+
+  @Value("${external.services.hotels.url}")
+  private String HOTELS_API;
+
+  public void deleteAllByManagerId(Integer id) {
+    String url = HOTELS_API + "?managerId={id}";
+    restTemplate.delete(url, id);
+  }
+
 }
diff --git a/java/services/users/src/main/java/com/uva/api/controllers/UserController.java b/java/services/users/src/main/java/com/uva/api/controllers/UserController.java
index 121670cb98bb3e26a6e9f49b3d5914d70f0b3863..4f15524cabd20e6d518fc7be824090b016f65881 100644
--- a/java/services/users/src/main/java/com/uva/api/controllers/UserController.java
+++ b/java/services/users/src/main/java/com/uva/api/controllers/UserController.java
@@ -116,7 +116,17 @@ public class UserController {
   @DeleteMapping("/{id}")
   public ResponseEntity<?> deleteUser(@PathVariable Integer id) {
     try {
-      return ResponseEntity.ok(userService.deleteUserById(id));
+      User user = userService.getUserById(id);
+      switch (user.getRol()) {
+        case CLIENT:
+          clientService.deleteById(id);
+          break;
+        case HOTEL_ADMIN:
+          managerService.deleteById(id);
+        default:
+          break;
+      }
+      return ResponseEntity.ok(user);
     } catch (HttpClientErrorException e) {
       if (e.getStatusCode() == HttpStatus.NOT_FOUND)
         return new ResponseEntity<String>(HttpStatus.NOT_FOUND);
diff --git a/java/services/users/src/main/java/com/uva/api/services/ClientService.java b/java/services/users/src/main/java/com/uva/api/services/ClientService.java
index c692486d9e56558eb27fc372ccb50bac3a2fb6bf..146c85d24edc73d6e7c227c60e33c4af3453b20c 100644
--- a/java/services/users/src/main/java/com/uva/api/services/ClientService.java
+++ b/java/services/users/src/main/java/com/uva/api/services/ClientService.java
@@ -34,18 +34,17 @@ public class ClientService {
     Client client = Utils.assertUser(clientRepository.findById(id));
     List<Booking> bookings;
     try {
-        bookings = bookingAPI.getAllBookingsByUserId(client.getId());
+      bookings = bookingAPI.getAllBookingsByUserId(client.getId());
     } catch (Exception e) {
-        bookings = new ArrayList<>(); 
+      bookings = new ArrayList<>();
     }
     client.setBookings(bookings);
     return client;
-}
-
-
+  }
 
   public Client deleteById(int id) {
     Client client = Utils.assertUser(clientRepository.findById(id));
+    bookingAPI.deleteAllByUserId(id);
     clientRepository.delete(client);
     return client;
   }
diff --git a/java/services/users/src/main/java/com/uva/api/services/ManagerService.java b/java/services/users/src/main/java/com/uva/api/services/ManagerService.java
index 098fc043649d85383c5371d2f995f4a908bc63c3..87d8f38c546f2080522205927400a3dcaa42672b 100644
--- a/java/services/users/src/main/java/com/uva/api/services/ManagerService.java
+++ b/java/services/users/src/main/java/com/uva/api/services/ManagerService.java
@@ -6,6 +6,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import com.uva.api.apis.HotelApi;
 import com.uva.api.models.Manager;
 import com.uva.api.models.User;
 import com.uva.api.repositories.ManagerRepository;
@@ -14,6 +15,9 @@ import com.uva.api.utils.Utils;
 @Service
 public class ManagerService {
 
+  @Autowired
+  private HotelApi hotelApi;
+
   @Autowired
   private ManagerRepository managerRepository;
 
@@ -34,6 +38,7 @@ public class ManagerService {
 
   public Object deleteById(Integer id) {
     Manager manager = Utils.assertUser(managerRepository.findById(id));
+    hotelApi.deleteAllByManagerId(id);
     managerRepository.delete(manager);
     return manager;
   }
diff --git a/java/services/users/src/main/resources/application.properties b/java/services/users/src/main/resources/application.properties
index 3d3c5062f7694a2d5cfda9e7f09371cbee1358bf..a8ff83c7a248ce7b47b84e45e52fed2c67d254b0 100644
--- a/java/services/users/src/main/resources/application.properties
+++ b/java/services/users/src/main/resources/application.properties
@@ -16,4 +16,5 @@ security.jwt.secret-key=MiClaveDeSeguridadMuyLargaParaQueNoFalleSpringBoot
 security.jwt.expiration-time=3600000 
 security.jwt.kid=cYz3kNRLAirxVhHXQ5rh5xKrOwHwZVui
 
-external.services.bookings.url=localhost:8401/bookings
\ No newline at end of file
+external.services.hotels.url=http://localhost:8301/hotels
+external.services.bookings.url=http://localhost:8401/bookings
\ No newline at end of file
diff --git a/poblate/mocks/bookings.json b/poblate/mocks/bookings.json
new file mode 100644
index 0000000000000000000000000000000000000000..bf93e638b17471bc9585c37e0689f6808da03285
--- /dev/null
+++ b/poblate/mocks/bookings.json
@@ -0,0 +1,16 @@
+[
+	{
+		"clientId": 1,
+		"hotelId": 1,
+		"roomId": 2,
+		"startDate": "2024-10-20",
+		"endDate": "2024-10-25"
+	},
+	{
+		"clientId": 3,
+		"hotelId": 2,
+		"roomId": 3,
+		"startDate": "2025-02-22",
+		"endDate": "2025-02-27"
+	}
+]
diff --git a/poblate/mocks/hotels.json b/poblate/mocks/hotels.json
new file mode 100644
index 0000000000000000000000000000000000000000..4331cfea0d6964414b2b702b1cfafeb90a133821
--- /dev/null
+++ b/poblate/mocks/hotels.json
@@ -0,0 +1,48 @@
+[
+	{
+		"name": "Ocean View Hotel",
+		"address": {
+			"streetKind": "Avenida",
+			"streetName": "Marítima",
+			"number": 123,
+			"postCode": "45678",
+			"otherInfo": "Frente al mar"
+		},
+		"managerId": 2,
+		"rooms": [
+			{
+				"roomNumber": "101",
+				"type": "SINGLE",
+				"available": true
+			},
+			{
+				"roomNumber": "102",
+				"type": "DOUBLE",
+				"available": false
+			}
+		]
+	},
+	{
+		"name": "Mountain Retreat",
+		"address": {
+			"streetKind": "Calle",
+			"streetName": "Bosque",
+			"number": 42,
+			"postCode": "98765",
+			"otherInfo": "Cerca del parque nacional"
+		},
+		"managerId": 2,
+		"rooms": [
+			{
+				"roomNumber": "201",
+				"type": "DOUBLE",
+				"available": true
+			},
+			{
+				"roomNumber": "202",
+				"type": "SUITE",
+				"available": true
+			}
+		]
+	}
+]
diff --git a/poblate/mocks/users.json b/poblate/mocks/users.json
new file mode 100644
index 0000000000000000000000000000000000000000..72cd088b876a8b8d5a4adc4e588f01bdf61c3995
--- /dev/null
+++ b/poblate/mocks/users.json
@@ -0,0 +1,20 @@
+[
+	{
+		"name": "John Doe",
+		"email": "john.doe@example.com",
+		"password": "securePassword123",
+		"rol": "CLIENT"
+	},
+	{
+		"name": "Jane Smith",
+		"email": "jane.smith@example.com",
+		"password": "securePassword456",
+		"rol": "HOTEL_ADMIN"
+	},
+	{
+		"name": "Alice Johnson",
+		"email": "alice.johnson@example.com",
+		"password": "securePassword789",
+		"rol": "CLIENT"
+	}
+]