Index: src/main/java/mk/petsitter/controller/BookingController.java
===================================================================
--- src/main/java/mk/petsitter/controller/BookingController.java	(revision eb23edcf8434843044d0b7fcb505f34b16dc9d59)
+++ src/main/java/mk/petsitter/controller/BookingController.java	(revision 32aee05bd46c121844aa355a9334f77a348f9708)
@@ -47,5 +47,8 @@
         model.addAttribute("pets", petService.getPetsByOwner(user.getUserId()));
         model.addAttribute("serviceType", serviceType);
-        petSitterRepository.findById(sitterId).ifPresent(sitter -> model.addAttribute("sitter", sitter));
+        petSitterRepository.findById(sitterId).ifPresent(sitter -> {
+            model.addAttribute("sitter", sitter);
+            model.addAttribute("availableServices", sitter.getOfferedServices());
+        });
         return "book-sitter";
     }
@@ -69,4 +72,7 @@
         if (petIds == null || petIds.isEmpty()) {
             return "redirect:/book?sitterId=" + sitterId + "&error=NoPets";
+        }
+        if (serviceType == null || serviceType.isEmpty()) {
+            return "redirect:/book?sitterId=" + sitterId + "&error=NoService";
         }
         
Index: src/main/java/mk/petsitter/model/Booking.java
===================================================================
--- src/main/java/mk/petsitter/model/Booking.java	(revision eb23edcf8434843044d0b7fcb505f34b16dc9d59)
+++ src/main/java/mk/petsitter/model/Booking.java	(revision 32aee05bd46c121844aa355a9334f77a348f9708)
@@ -45,11 +45,7 @@
     private List<Pet> pets;
 
-    @ManyToMany
-    @JoinTable(
-        name = "booking_services",
-        joinColumns = @JoinColumn(name = "booking_id"),
-        inverseJoinColumns = @JoinColumn(name = "service_id")
-    )
-    private List<Service> services;
+    @ManyToOne
+    @JoinColumn(name = "service_id", nullable = false)
+    private Service service;
 
     @OneToOne(mappedBy = "booking")
Index: src/main/java/mk/petsitter/repository/BookingRepository.java
===================================================================
--- src/main/java/mk/petsitter/repository/BookingRepository.java	(revision eb23edcf8434843044d0b7fcb505f34b16dc9d59)
+++ src/main/java/mk/petsitter/repository/BookingRepository.java	(revision 32aee05bd46c121844aa355a9334f77a348f9708)
@@ -17,5 +17,5 @@
     List<Booking> findBySitter_UserIdOrderByDateFromDesc(String sitterId);
 
-    @EntityGraph(attributePaths = {"owner", "sitter", "review", "payment"})
+    @EntityGraph(attributePaths = {"owner", "sitter", "service", "review", "payment"})
     @Query("SELECT b FROM Booking b")
     List<Booking> findAllWithDetails();
Index: src/main/java/mk/petsitter/service/BookingService.java
===================================================================
--- src/main/java/mk/petsitter/service/BookingService.java	(revision eb23edcf8434843044d0b7fcb505f34b16dc9d59)
+++ src/main/java/mk/petsitter/service/BookingService.java	(revision 32aee05bd46c121844aa355a9334f77a348f9708)
@@ -66,4 +66,18 @@
         }
 
+        // Each booking requires exactly one service
+        if (serviceType == null || serviceType.isEmpty()) {
+            logger.error("VALIDATION FAILED: No service selected for booking");
+            throw new IllegalArgumentException("A service must be selected");
+        }
+
+        mk.petsitter.model.Service service = serviceRepository.findAll().stream()
+                .filter(s -> s.getType().equals(serviceType))
+                .findFirst()
+                .orElseThrow(() -> {
+                    logger.error("VALIDATION FAILED: Service not found with type: {}", serviceType);
+                    return new IllegalArgumentException("Invalid service selected");
+                });
+
         // 3. Entity Construction
         Booking booking = new Booking();
@@ -74,11 +88,5 @@
         booking.setAddress(address);
         booking.setPets(pets);
-        
-        if (serviceType != null && !serviceType.isEmpty()) {
-            serviceRepository.findAll().stream()
-                .filter(s -> s.getType().equals(serviceType))
-                .findFirst()
-                .ifPresent(service -> booking.setServices(List.of(service)));
-        }
+        booking.setService(service);
         
         // 4. Write Operation
Index: src/main/resources/templates/admin-bookings.html
===================================================================
--- src/main/resources/templates/admin-bookings.html	(revision eb23edcf8434843044d0b7fcb505f34b16dc9d59)
+++ src/main/resources/templates/admin-bookings.html	(revision 32aee05bd46c121844aa355a9334f77a348f9708)
@@ -37,5 +37,5 @@
                         <td class="small"><span th:text="${booking.dateFrom} + ' to ' + ${booking.dateTo}"></span><br><em class="text-muted" th:text="${booking.dateTo.toEpochDay() - booking.dateFrom.toEpochDay() + 1} + ' day(s)'"></em></td>
                         <td class="small" th:text="${booking.address}"></td>
-                        <td class="small"><span th:each="service, i : ${booking.services}"><span th:text="${service.type}"></span><span th:if="${!i.last}">, </span></span><em class="text-muted" th:if="${booking.services == null or booking.services.empty}">None</em></td>
+                        <td class="small"><span th:if="${booking.service != null}" th:text="${booking.service.type}"></span><em class="text-muted" th:if="${booking.service == null}">None</em></td>
                         <td class="small"><span th:each="pet, i : ${booking.pets}"><span th:text="${pet.name}"></span><span th:if="${!i.last}">, </span></span></td>
                         <td class="small"><span th:if="${booking.payment != null}" th:text="${booking.payment.amount} + ' MKD'"></span><em class="text-muted" th:if="${booking.payment == null}">Unpaid</em></td>
Index: src/main/resources/templates/book-sitter.html
===================================================================
--- src/main/resources/templates/book-sitter.html	(revision eb23edcf8434843044d0b7fcb505f34b16dc9d59)
+++ src/main/resources/templates/book-sitter.html	(revision 32aee05bd46c121844aa355a9334f77a348f9708)
@@ -24,11 +24,21 @@
         <div class="card p-4 p-md-5 bg-white">
             <h2 class="fw-bold text-dark text-center mb-1">Book <span th:text="${sitter.firstName}"></span> <span th:text="${sitter.lastName}"></span></h2>
-            <p class="text-center text-muted mb-4" th:if="${serviceType != null and !serviceType.empty}">Requested Service: <strong class="text-teal" th:text="${serviceType}"></strong></p>
+            <p class="text-center text-muted mb-4">One service per booking, for one or more of your pets.</p>
             
-            <div th:if="${param.error}" class="alert alert-danger py-2" role="alert">You must select at least 1 pet for this booking!</div>
+            <div th:if="${param.error != null and param.error[0] == 'NoPets'}" class="alert alert-danger py-2" role="alert">You must select at least 1 pet for this booking!</div>
+            <div th:if="${param.error != null and param.error[0] == 'NoService'}" class="alert alert-danger py-2" role="alert">You must select a service for this booking!</div>
+            <div th:if="${availableServices == null or availableServices.empty}" class="alert alert-warning py-2" role="alert">This sitter does not offer any services yet.</div>
             
             <form action="/book" method="post">
                 <input type="hidden" name="sitterId" th:value="${sitter.userId}"/>
-                <input type="hidden" name="serviceType" th:value="${serviceType}" th:if="${serviceType != null and !serviceType.empty}"/>
+                
+                <div class="mb-4">
+                    <label class="form-label text-muted fw-semibold">Service:</label>
+                    <select class="form-select bg-light" id="serviceType" name="serviceType" required>
+                        <option value="" disabled th:selected="${serviceType == null or serviceType.empty}">Choose a service...</option>
+                        <option th:each="service : ${availableServices}" th:value="${service.type}" th:text="${service.type}" th:selected="${service.type == serviceType}"></option>
+                    </select>
+                    <div class="form-text">The selected service applies to every pet in this booking. For a different service, create a separate booking.</div>
+                </div>
                 
                 <div class="row mb-3">
Index: src/main/resources/templates/my-bookings.html
===================================================================
--- src/main/resources/templates/my-bookings.html	(revision eb23edcf8434843044d0b7fcb505f34b16dc9d59)
+++ src/main/resources/templates/my-bookings.html	(revision 32aee05bd46c121844aa355a9334f77a348f9708)
@@ -37,5 +37,5 @@
                         <p class="mb-1 small"><strong>Dates:</strong> <span th:text="${booking.dateFrom}"></span> to <span th:text="${booking.dateTo}"></span></p>
                         <p class="mb-1 small text-muted"><i class="bi bi-geo-alt-fill me-1"></i><span th:text="${booking.address}"></span></p>
-                        <p class="mb-1 small" th:if="${booking.services != null and !booking.services.empty}"><strong>Service:</strong> <span th:each="service, i : ${booking.services}"><span th:text="${service.type}"></span><span th:if="${!i.last}">, </span></span></p>
+                        <p class="mb-1 small" th:if="${booking.service != null}"><strong>Service:</strong> <span th:text="${booking.service.type}"></span></p>
                         <p class="mb-3 small"><strong>Pets:</strong> <span th:each="pet, i : ${booking.pets}"><span th:text="${pet.name}"></span><span th:if="${!i.last}">, </span></span></p>
                         
@@ -66,5 +66,5 @@
                         <p class="mb-1 small"><strong>Dates:</strong> <span th:text="${booking.dateFrom}"></span> to <span th:text="${booking.dateTo}"></span></p>
                         <p class="mb-1 small text-muted"><i class="bi bi-geo-alt-fill me-1"></i><span th:text="${booking.address}"></span></p>
-                        <p class="mb-1 small" th:if="${booking.services != null and !booking.services.empty}"><strong>Service:</strong> <span th:each="service, i : ${booking.services}"><span th:text="${service.type}"></span><span th:if="${!i.last}">, </span></span></p>
+                        <p class="mb-1 small" th:if="${booking.service != null}"><strong>Service:</strong> <span th:text="${booking.service.type}"></span></p>
                         <p class="mb-3 small"><strong>Pets:</strong> <span th:each="pet, i : ${booking.pets}"><span th:text="${pet.name}"></span><span th:if="${!i.last}">, </span></span></p>
                         
Index: src/main/resources/templates/requests.html
===================================================================
--- src/main/resources/templates/requests.html	(revision eb23edcf8434843044d0b7fcb505f34b16dc9d59)
+++ src/main/resources/templates/requests.html	(revision 32aee05bd46c121844aa355a9334f77a348f9708)
@@ -37,5 +37,5 @@
                         <p class="mb-1 small"><strong>Dates:</strong> <span th:text="${booking.dateFrom}"></span> to <span th:text="${booking.dateTo}"></span></p>
                         <p class="mb-1 small text-muted"><i class="bi bi-geo-alt-fill me-1"></i><span th:text="${booking.address}"></span></p>
-                        <p class="mb-1 small" th:if="${booking.services != null and !booking.services.empty}"><strong>Service:</strong> <span th:each="service, i : ${booking.services}"><span th:text="${service.type}"></span><span th:if="${!i.last}">, </span></span></p>
+                        <p class="mb-1 small" th:if="${booking.service != null}"><strong>Service:</strong> <span th:text="${booking.service.type}"></span></p>
                         <p class="mb-3 small"><strong>Pets:</strong> <span th:each="pet, i : ${booking.pets}"><span th:text="${pet.name + ' (' + pet.petType.species + ')'}"></span><span th:if="${!i.last}">, </span></span></p>
                         
@@ -69,5 +69,5 @@
                         <p class="mb-1 small"><strong>Dates:</strong> <span th:text="${booking.dateFrom}"></span> to <span th:text="${booking.dateTo}"></span></p>
                         <p class="mb-1 small text-muted"><i class="bi bi-geo-alt-fill me-1"></i><span th:text="${booking.address}"></span></p>
-                        <p class="mb-1 small" th:if="${booking.services != null and !booking.services.empty}"><strong>Service:</strong> <span th:each="service, i : ${booking.services}"><span th:text="${service.type}"></span><span th:if="${!i.last}">, </span></span></p>
+                        <p class="mb-1 small" th:if="${booking.service != null}"><strong>Service:</strong> <span th:text="${booking.service.type}"></span></p>
                         <p class="mb-3 small"><strong>Pets:</strong> <span th:each="pet, i : ${booking.pets}"><span th:text="${pet.name + ' (' + pet.petType.species + ')'}"></span><span th:if="${!i.last}">, </span></span></p>
                         
