diff --git a/core/src/main/java/cz/muni/fi/pa165/core/common/DomainObject.java b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainObject.java
index c2d52004602873f3a5889bbc726decd24aa468ec..2d5e1b574cb7bb9d02b543a0b4c7c2bf2f5c6666 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/common/DomainObject.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainObject.java
@@ -11,6 +11,6 @@ import java.util.UUID;
 @Setter
 @MappedSuperclass
 public abstract class DomainObject {
-
-  @Id private String id = UUID.randomUUID().toString();
+  @Id
+  private String id = UUID.randomUUID().toString();
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/common/DomainService.java b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainService.java
index 59b34a5f47fbe475260bacd4a16777d5a5d292a2..f4a144f459c25272064cbba1ba6a7e1ae0828ffd 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/common/DomainService.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/common/DomainService.java
@@ -43,12 +43,12 @@ public abstract class DomainService<T extends DomainObject> {
         .orElseThrow(() -> new EntityNotFoundException("Entity with '" + id + "' not found."));
   }
 
-  @Transactional(readOnly = true)
+  @Transactional
   public void deleteAll() {
     getRepository().deleteAll();
   }
 
-  @Transactional(readOnly = true)
+  @Transactional
   public T deleteById(String id) {
     T result = findById(id);
     if (result == null)
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceController.java b/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceController.java
index 53cbbdf9f6903449d97d7af43c4ca65832733730..f0885cb6053edc6eff6fe4fce9b175e3b5ebcb97 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceController.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceController.java
@@ -8,7 +8,6 @@ import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Pageable;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -71,17 +70,17 @@ public class DeviceController {
           summary = "Update device",
           description = "Updates the device with the specified id.")
   @PutMapping("/{id}")
-  public DeviceDto update(@PathVariable @Parameter(description = "The id of the device.") String id,
+  public DeviceDto updateById(@PathVariable @Parameter(description = "The id of the device.") String id,
                           @RequestBody @Valid DeviceUpdateDto deviceUpdateDto) {
-    return deviceFacade.update(deviceUpdateDto, id);
+    return deviceFacade.updateById(deviceUpdateDto, id);
   }
 
   @Operation(
           summary = "Delete device",
           description = "Deletes the device with the specified id.")
   @DeleteMapping("/{id}")
-  public DeviceDto delete(
+  public DeviceDto deleteById(
           @PathVariable @Parameter(description = "The id of the device.") String id) {
-    return deviceFacade.delete(id);
+    return deviceFacade.deleteById(id);
   }
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceFacade.java b/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceFacade.java
index ff3b57ee9dbf46983b9f81b50531d73483832991..194c033288f37ed8c8aa03ea19d31c35376a7c55 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceFacade.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceFacade.java
@@ -43,20 +43,25 @@ public class DeviceFacade {
 		return deviceMapper.toDtoList(deviceService.findAll());
 	}
 
-	@Transactional(readOnly = true)
+	@Transactional
 	public DeviceDto create(DeviceCreateDto deviceCreateDto) {
-		return deviceMapper.toDto(deviceService.create(deviceMapper.fromCreateDto(deviceCreateDto)));
+		return deviceMapper.toDto(
+				deviceService.create(
+						deviceMapper.fromCreateDto(deviceCreateDto)
+				)
+		);
 	}
 
 	@Transactional
-	public DeviceDto delete(String id) {
+	public DeviceDto deleteById(String id) {
 		return deviceMapper.toDto(deviceService.deleteById(id));
 	}
 
 	@Transactional
-	public DeviceDto update(DeviceUpdateDto deviceUpdateDto, String id) {
-		return deviceMapper.toDto(deviceService.update(deviceMapper.fromUpdateDto(deviceUpdateDto), id));
-
+	public DeviceDto updateById(DeviceUpdateDto deviceUpdateDto, String id) {
+		return deviceMapper.toDto(
+				deviceService.update(
+						deviceMapper.fromUpdateDto(deviceUpdateDto), id)
+		);
 	}
-
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceService.java b/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceService.java
index dddb273c56708079cf0a00effac179d1008109b2..1039353b85365681e5c57073f0a5e7da42de25d0 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceService.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/device/DeviceService.java
@@ -22,7 +22,7 @@ public class DeviceService extends DomainService<Device> {
     repository = deviceRepository;
   }
 
-  @Transactional(readOnly = true)
+  @Transactional
   public Device update(Device user, String id) {
     int result = repository.update(user, id);
     if (result != 1) {
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/house/House.java b/core/src/main/java/cz/muni/fi/pa165/core/house/House.java
index 524c878514d39ff1f8ebd31d610cacd340ab8edc..10423284308ce4003fe2b3c9eb03811e486322a6 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/house/House.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/house/House.java
@@ -23,5 +23,6 @@ public class House extends DomainObject {
   private String state;
   private String zipcode;
 
-  @OneToMany private List<SmartMeter> smartMeterList;
+  @OneToMany
+  private List<SmartMeter> smartMeterList;
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseController.java b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseController.java
index a1ad00d1525d2229a92fe1d0bf4f1e8607287ed8..1cac7d9d2ea703c09c62cedd8e0d522ad2dc6798 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseController.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseController.java
@@ -2,6 +2,7 @@ package cz.muni.fi.pa165.core.house;
 
 import cz.muni.fi.pa165.model.dto.house.HouseCreateDto;
 import cz.muni.fi.pa165.model.dto.house.HouseDto;
+import cz.muni.fi.pa165.model.dto.house.HouseUpdateDto;
 import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Pageable;
@@ -13,13 +14,11 @@ import java.util.List;
 @RequestMapping("/api/house")
 public class HouseController {
 
-  private final HouseService houseService;
-  private final HouseMapper mapper;
+  private final HouseFacade houseFacade;
 
   @Autowired
-  public HouseController(HouseService houseService, HouseMapper mapper) {
-    this.houseService = houseService;
-    this.mapper = mapper;
+  public HouseController(HouseFacade houseFacade) {
+	  this.houseFacade = houseFacade;
   }
 
   @Operation(
@@ -28,7 +27,7 @@ public class HouseController {
   )
   @GetMapping("pageable")
   public List<HouseDto> findAllPageable(Pageable pageable) {
-    return mapper.toDtoList((List<House>) houseService.findAllPageable(pageable));
+	  return houseFacade.findAllPageable(pageable);
   }
 
   @Operation(
@@ -38,7 +37,7 @@ public class HouseController {
   @CrossOrigin(origins = "*")
   @GetMapping
   public List<HouseDto> findAll() {
-    return mapper.toDtoList(houseService.findAll());
+	  return houseFacade.findAll();
   }
 
   @Operation(
@@ -46,8 +45,8 @@ public class HouseController {
           description = "Retrieve a house with the specified ID."
   )
   @GetMapping("/{id}")
-  public HouseDto find(@PathVariable String id) {
-    return mapper.toDto(houseService.findById(id));
+  public HouseDto findById(@PathVariable String id) {
+	  return houseFacade.findById(id);
   }
 
   @Operation(
@@ -55,7 +54,25 @@ public class HouseController {
           description = "Create a new house with the specified details."
   )
   @PostMapping
-  public HouseDto create(@RequestBody HouseCreateDto houseDto) {
-    return mapper.toDto(houseService.create(mapper.fromCreateDto(houseDto)));
+  public HouseDto create(@RequestBody HouseCreateDto houseCreateDtoDto) {
+	  return houseFacade.create(houseCreateDtoDto);
+  }
+
+  @Operation(
+          summary = "Update specific house",
+          description = "Updates the house with the specified id."
+  )
+  @PutMapping("/{id}")
+  public HouseDto updateById(@RequestBody HouseUpdateDto houseUpdateDto, @PathVariable String id) {
+	  return houseFacade.updateById(houseUpdateDto, id);
+  }
+
+  @Operation(
+          summary = "Deletes specific house",
+          description = "Deletes the house with the specified id."
+  )
+  @DeleteMapping("/{id}")
+  public HouseDto deleteById(@PathVariable String id) {
+	  return houseFacade.deleteById(id);
   }
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseFacade.java b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseFacade.java
new file mode 100644
index 0000000000000000000000000000000000000000..dbb19b6e5f57760f48272d23da44db8af4c18e55
--- /dev/null
+++ b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseFacade.java
@@ -0,0 +1,72 @@
+package cz.muni.fi.pa165.core.house;
+
+import cz.muni.fi.pa165.core.manufacturer.Manufacturer;
+import cz.muni.fi.pa165.core.manufacturer.ManufacturerMapper;
+import cz.muni.fi.pa165.core.manufacturer.ManufacturerService;
+import cz.muni.fi.pa165.model.dto.common.Result;
+import cz.muni.fi.pa165.model.dto.house.HouseCreateDto;
+import cz.muni.fi.pa165.model.dto.house.HouseDto;
+import cz.muni.fi.pa165.model.dto.house.HouseUpdateDto;
+import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerCreateDto;
+import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerDto;
+import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerUpdateDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Component
+@Transactional
+public class HouseFacade {
+	private final HouseService houseService;
+	private final HouseMapper houseMapper;
+
+	@Autowired
+	public HouseFacade(HouseService houseService,
+					   HouseMapper houseMapper) {
+		this.houseService = houseService;
+		this.houseMapper = houseMapper;
+	}
+
+	@Transactional(readOnly = true)
+	public HouseDto findById(String id) {
+		return houseMapper.toDto(houseService.findById(id));
+	}
+
+	@Transactional(readOnly = true)
+	public List<HouseDto> findAllPageable(Pageable pageable) {
+		return houseMapper.toDtoList((List<House>) houseService.findAllPageable(pageable));
+	}
+
+	@Transactional(readOnly = true)
+	public Result<HouseDto> findAll(int page) {
+		return houseMapper.toResult(houseService.findAllPageableInt(page));
+	}
+
+	@Transactional(readOnly = true)
+	public List<HouseDto> findAll() {
+		return houseMapper.toDtoList(houseService.findAll());
+	}
+
+	@Transactional
+	public HouseDto create(HouseCreateDto houseCreateDto) {
+		return houseMapper.toDto(
+				houseService.create(
+						houseMapper.fromCreateDto(houseCreateDto))
+		);
+	}
+	@Transactional
+	public HouseDto deleteById(String id) {
+		return houseMapper.toDto(houseService.deleteById(id));
+	}
+
+	@Transactional
+	public HouseDto updateById(HouseUpdateDto houseUpdateDto, String id) {
+		return houseMapper.toDto(
+				houseService.update(
+						houseMapper.fromUpdateDto(houseUpdateDto), id)
+		);
+	}
+}
\ No newline at end of file
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseMapper.java b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseMapper.java
index efca5bd3afe239f36ed4a57af42ff9b1a3692f5e..2f363dd8d926fcb5997394fa5671cc676f737ba7 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseMapper.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseMapper.java
@@ -6,10 +6,13 @@ import cz.muni.fi.pa165.model.dto.device.DeviceCreateDto;
 import cz.muni.fi.pa165.model.dto.device.DeviceUpdateDto;
 import cz.muni.fi.pa165.model.dto.house.HouseCreateDto;
 import cz.muni.fi.pa165.model.dto.house.HouseDto;
+import cz.muni.fi.pa165.model.dto.house.HouseUpdateDto;
 import org.mapstruct.Mapper;
 
 @Mapper
 public interface HouseMapper extends DomainMapper<House, HouseDto> {
 
   House fromCreateDto(HouseCreateDto dto);
+
+  House fromUpdateDto(HouseUpdateDto dto);
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseRepository.java b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseRepository.java
index f97cc5dde015fbd3fde33d849389bf80d44e0417..9331f1b3dd68603b487a06139eb2d10ff55d54e0 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseRepository.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseRepository.java
@@ -1,7 +1,15 @@
 package cz.muni.fi.pa165.core.house;
 
+import cz.muni.fi.pa165.core.device.Device;
 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 org.springframework.stereotype.Repository;
 
 @Repository
-public interface HouseRepository extends JpaRepository<House, String> {}
+public interface HouseRepository extends JpaRepository<House, String> {
+	@Modifying
+	@Query("UPDATE House h set h.address= :#{#house.address}, h.city= :#{#house.city}, h.state= :#{#house.state} ,h.zipcode= :#{#house.zipcode} where h.id = :#{#id}")
+	int update(@Param("house") House house, @Param("id") String id);
+}
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseService.java b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseService.java
index e4a8990ba05e92aff91214c3aff2d292125577c0..fc336b678e47ca3b7df770fe89db3bdc646fc201 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/house/HouseService.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/house/HouseService.java
@@ -1,6 +1,7 @@
 package cz.muni.fi.pa165.core.house;
 
 import cz.muni.fi.pa165.core.common.DomainService;
+import cz.muni.fi.pa165.core.manufacturer.Manufacturer;
 import jakarta.persistence.EntityNotFoundException;
 import lombok.Getter;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -9,15 +10,21 @@ import org.springframework.transaction.annotation.Transactional;
 
 @Service
 public class HouseService extends DomainService<House> {
-
-  @Getter private final HouseRepository repository;
+  @Getter
+  private final HouseRepository repository;
 
   @Autowired
   public HouseService(HouseRepository houseRepository) {
     repository = houseRepository;
   }
 
-
-  // TODO: UPDATE
+  @Transactional
+  public House update(House house, String id) {
+      int result = repository.update(house, id);
+      if (result != 1) {
+		  throw new EntityNotFoundException("House '" + id + "' not found.");
+      }
+      return findById(id);
+  }
 
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerController.java b/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerController.java
index cfec0028163d4bb35669ab28a61fa742f4d6618f..b9d29e702ece8dcbd8404cec931a64af88f818ac 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerController.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerController.java
@@ -18,17 +18,13 @@ import java.util.List;
 @RestController
 @RequestMapping("/api/manufacturer")
 public class ManufacturerController {
-
-  private final ManufacturerService manufacturerService;
-  private final ManufacturerMapper manufacturerMapper;
+  private final ManufacturerFacade manufacturerFacade;
 
   @Autowired
   public ManufacturerController(
-          ManufacturerService manufacturerService,
-          ManufacturerMapper manufacturerMapper
+          ManufacturerFacade manufacturerFacade
   ) {
-    this.manufacturerService = manufacturerService;
-    this.manufacturerMapper = manufacturerMapper;
+      this.manufacturerFacade = manufacturerFacade;
   }
 
   /**
@@ -42,7 +38,8 @@ public class ManufacturerController {
           description = "Returns a pageable list of all manufacturers.")
   @GetMapping("pageable")
   public List<ManufacturerDto> findAllPageable(Pageable pageable) {
-    return manufacturerMapper.toDtoList((List<Manufacturer>) manufacturerService.findAllPageable(pageable));  }
+      return manufacturerFacade.findAllPageable(pageable);
+  }
 
   /**
    * Returns a list of all manufacturers.
@@ -55,7 +52,7 @@ public class ManufacturerController {
   @CrossOrigin(origins = "*")
   @GetMapping // CORS headers needed for JavaScript clients
   public List<ManufacturerDto> findAll() {
-    return manufacturerMapper.toDtoList(manufacturerService.findAll());
+      return manufacturerFacade.findAll();
   }
 
   /**
@@ -68,9 +65,9 @@ public class ManufacturerController {
           summary = "Get manufacturer by ID",
           description = "Returns the manufacturer with the specified ID.")
   @GetMapping("/{id}")
-  public ManufacturerDto find(
+  public ManufacturerDto findById(
           @PathVariable @Parameter(description = "The ID of the manufacturer.") String id) {
-    return manufacturerMapper.toDto(manufacturerService.findById(id));
+      return manufacturerFacade.findById(id);
   }
 
   /**
@@ -84,23 +81,22 @@ public class ManufacturerController {
           description = "Creates a new manufacturer.")
   @PostMapping
   public ManufacturerDto create(@RequestBody @Valid ManufacturerCreateDto manufacturerDto) {
-    return manufacturerMapper.toDto(
-            manufacturerService.create(manufacturerMapper.fromCreateDto(manufacturerDto)));
+      return manufacturerFacade.create(manufacturerDto);
   }
   @Operation(
           summary = "Update device",
           description = "Updates the device with the specified id.")
   @PutMapping("/{id}")
-  public ManufacturerDto update(@PathVariable @Parameter(description = "The id of the manufacturer.") String id,
+  public ManufacturerDto updateById(@PathVariable @Parameter(description = "The id of the manufacturer.") String id,
                                 @RequestBody @Valid ManufacturerUpdateDto manufacturerUpdateDto) {
-    return manufacturerMapper.toDto(manufacturerService.update(manufacturerMapper.fromUpdateDto(manufacturerUpdateDto), id));
+      return manufacturerFacade.updateById(manufacturerUpdateDto, id);
   }
   @Operation(
           summary = "Delete manufacturer",
           description = "Deletes the manufacturer with the specified id.")
   @DeleteMapping("/{id}")
-  public ManufacturerDto delete(
+  public ManufacturerDto deleteById(
           @PathVariable @Parameter(description = "The id of the manufacturer.") String id) {
-    return manufacturerMapper.toDto(manufacturerService.deleteById(id));
+      return manufacturerFacade.deleteById(id);
   }
 }
\ No newline at end of file
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerFacade.java b/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerFacade.java
new file mode 100644
index 0000000000000000000000000000000000000000..18e1a5ff10a8b2ae2347ec6b54483f10662f8e32
--- /dev/null
+++ b/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerFacade.java
@@ -0,0 +1,66 @@
+package cz.muni.fi.pa165.core.manufacturer;
+
+import cz.muni.fi.pa165.model.dto.common.Result;
+import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerCreateDto;
+import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerDto;
+import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerUpdateDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Component
+@Transactional
+public class ManufacturerFacade {
+	private final ManufacturerService manufacturerService;
+	private final ManufacturerMapper manufacturerMapper;
+
+	@Autowired
+	public ManufacturerFacade(ManufacturerService manufacturerService,
+						ManufacturerMapper manufacturerMapper) {
+		this.manufacturerService = manufacturerService;
+		this.manufacturerMapper = manufacturerMapper;
+	}
+
+	@Transactional(readOnly = true)
+	public ManufacturerDto findById(String id) {
+		return manufacturerMapper.toDto(manufacturerService.findById(id));
+	}
+
+	@Transactional(readOnly = true)
+	public List<ManufacturerDto> findAllPageable(Pageable pageable) {
+		return manufacturerMapper.toDtoList((List<Manufacturer>) manufacturerService.findAllPageable(pageable));
+	}
+
+	@Transactional(readOnly = true)
+	public Result<ManufacturerDto> findAll(int page) {
+		return manufacturerMapper.toResult(manufacturerService.findAllPageableInt(page));
+	}
+
+	@Transactional(readOnly = true)
+	public List<ManufacturerDto> findAll() {
+		return manufacturerMapper.toDtoList(manufacturerService.findAll());
+	}
+
+	@Transactional
+	public ManufacturerDto create(ManufacturerCreateDto manufacturerCreateDto) {
+		return manufacturerMapper.toDto(
+				manufacturerService.create(
+						manufacturerMapper.fromCreateDto(manufacturerCreateDto))
+		);
+	}
+	@Transactional
+	public ManufacturerDto deleteById(String id) {
+		return manufacturerMapper.toDto(manufacturerService.deleteById(id));
+	}
+
+	@Transactional
+	public ManufacturerDto updateById(ManufacturerUpdateDto manufacturerUpdateDto, String id) {
+		return manufacturerMapper.toDto(
+				manufacturerService.update(
+						manufacturerMapper.fromUpdateDto(manufacturerUpdateDto), id)
+		);
+	}
+}
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerService.java b/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerService.java
index 89e77157a452ab45443ad47e10c592dc4061d854..a6dd54c34ea40ccc8f3e1e6de9d4c9d1e7ffcc83 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerService.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/manufacturer/ManufacturerService.java
@@ -19,7 +19,7 @@ public class ManufacturerService extends DomainService<Manufacturer> {
   }
 
 
-  @Transactional(readOnly = true)
+  @Transactional
   public Manufacturer update(Manufacturer manufacturer, String id) {
     int result = repository.update(manufacturer, id);
     if (result != 1) {
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeter.java b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeter.java
index 19a51f7fcd5f7be75b752f7f850df1accb43e83a..1f896ac2aca3b49c627406dbcf9ae5009d1650b0 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeter.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeter.java
@@ -16,8 +16,12 @@ import lombok.*;
 @AllArgsConstructor
 @Table(name = "domain_smartMeter")
 public class SmartMeter extends DomainObject {
-  @ManyToOne private Device device;
-  private String smartMeterIdentityNumber = getId();
 
-  @ManyToOne private House house;
+    private String name;
+
+    @ManyToOne
+    private Device device;
+
+    @ManyToOne
+    private House house;
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterController.java b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterController.java
index c2a852b981d90fa58a4d5a06cf46c9f70be5f411..e42e69f06ca684f003ce3316e9bcff48420761d2 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterController.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterController.java
@@ -40,7 +40,7 @@ public class SmartMeterController {
   @GetMapping("/{id}")
   @ApiResponse(responseCode = "200", description = "Successfully retrieved the smart meter.")
   @ApiResponse(responseCode = "404", description = "Smart meter not found.")
-  public SmartMeterDto find(@PathVariable String id) {
+  public SmartMeterDto findById(@PathVariable String id) {
     return mapper.toDto(smartMeterService.findById(id));
   }
 
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterFacade.java b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterFacade.java
new file mode 100644
index 0000000000000000000000000000000000000000..e235444cc881120ec6172b0c40ca038a082215cf
--- /dev/null
+++ b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterFacade.java
@@ -0,0 +1,73 @@
+package cz.muni.fi.pa165.core.smartmeter;
+
+import cz.muni.fi.pa165.core.manufacturer.Manufacturer;
+import cz.muni.fi.pa165.model.dto.common.Result;
+import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerCreateDto;
+import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerDto;
+import cz.muni.fi.pa165.model.dto.manufacturer.ManufacturerUpdateDto;
+import cz.muni.fi.pa165.model.dto.smartDevice.SmartMeterCreateDto;
+import cz.muni.fi.pa165.model.dto.smartDevice.SmartMeterDto;
+import cz.muni.fi.pa165.model.dto.smartDevice.SmartMeterUpdateDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Component
+@Transactional
+public class SmartMeterFacade {
+	private final SmartMeterService smartMeterService;
+	private final SmartMeterMapper smartMeterMapper;
+
+	@Autowired
+	public SmartMeterFacade(SmartMeterService smartMeterService,
+							SmartMeterMapper smartMeterMapper
+	) {
+		this.smartMeterService = smartMeterService;
+		this.smartMeterMapper = smartMeterMapper;
+	}
+
+	@Transactional(readOnly = true)
+	public SmartMeterDto findById(String id) {
+		return smartMeterMapper.toDto(smartMeterService.findById(id));
+	}
+
+	@Transactional(readOnly = true)
+	public List<SmartMeterDto> findAllPageable(Pageable pageable) {
+		return smartMeterMapper.toDtoList((List<SmartMeter>) smartMeterService.findAllPageable(pageable));
+	}
+
+	@Transactional(readOnly = true)
+	public Result<SmartMeterDto> findAll(int page) {
+		return smartMeterMapper.toResult(smartMeterService.findAllPageableInt(page));
+	}
+
+	@Transactional(readOnly = true)
+	public List<SmartMeterDto> findAll() {
+		return smartMeterMapper.toDtoList(smartMeterService.findAll());
+	}
+
+	@Transactional
+	public SmartMeterDto create(SmartMeterCreateDto smartMeterCreateDto) {
+		return smartMeterMapper.toDto(
+				smartMeterService.create(
+						smartMeterMapper.fromCreateDto(smartMeterCreateDto))
+		);
+	}
+	@Transactional
+	public SmartMeterDto deleteById(String id) {
+		return smartMeterMapper.toDto(smartMeterService.deleteById(id));
+	}
+
+	/*
+	@Transactional
+	public SmartMeterDto updateById(SmartMeterUpdateDto smartMeterUpdateDto, String id) {
+		return smartMeterMapper.toDto(
+				smartMeterService.updateById(
+						smartMeterMapper.fromUpdateDto(smartMeterUpdateDto), id)
+		);
+	}
+	 */
+}
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterMapper.java b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterMapper.java
index 5ac47e51349bca1ea0e4c22b4afeec58fedde80d..cafb5178a86d154740dc00bb25538eee86a8d73e 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterMapper.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/smartmeter/SmartMeterMapper.java
@@ -1,12 +1,9 @@
 package cz.muni.fi.pa165.core.smartmeter;
 
 import cz.muni.fi.pa165.core.common.DomainMapper;
-import cz.muni.fi.pa165.core.device.Device;
-import cz.muni.fi.pa165.model.dto.device.DeviceCreateDto;
-import cz.muni.fi.pa165.model.dto.device.DeviceDto;
-import cz.muni.fi.pa165.model.dto.device.DeviceUpdateDto;
 import cz.muni.fi.pa165.model.dto.smartDevice.SmartMeterCreateDto;
 import cz.muni.fi.pa165.model.dto.smartDevice.SmartMeterDto;
+import cz.muni.fi.pa165.model.dto.smartDevice.SmartMeterUpdateDto;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 
@@ -17,6 +14,9 @@ public interface SmartMeterMapper extends DomainMapper<SmartMeter, SmartMeterDto
   @Mapping(source = "deviceDto", target = "device")
   SmartMeter fromCreateDto(SmartMeterCreateDto dto);
 
+  //@Mapping(source = "deviceDto", target = "device")
+  //SmartMeter fromUpdateDto(SmartMeterUpdateDto dto);
+
   @Mapping(source = "deviceDto", target = "device")
   SmartMeter fromDto(SmartMeterDto dto);
 
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/UserController.java b/core/src/main/java/cz/muni/fi/pa165/core/user/UserController.java
index adb033cd98104a1ee2622ed0fd9bd66958a3b8a3..fad37674ff57d7b8ca04a5b0ed6662e22054141e 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/user/UserController.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/user/UserController.java
@@ -3,6 +3,7 @@ package cz.muni.fi.pa165.core.user;
 import cz.muni.fi.pa165.model.dto.common.Result;
 import cz.muni.fi.pa165.model.dto.user.UserCreateDto;
 import cz.muni.fi.pa165.model.dto.user.UserDto;
+import cz.muni.fi.pa165.model.dto.user.UserUpdateDto;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
 import io.swagger.v3.oas.annotations.Operation;
@@ -100,10 +101,10 @@ public class UserController {
 			@ApiResponse(responseCode = "404", description = "User not found"),
 			@ApiResponse(responseCode = "500", description = "Internal server error")
 	})
-	public UserDto update(
+	public UserDto updateById(
 			@Parameter(description = "ID of the user to be updated") @PathVariable String id,
-			@RequestBody @Valid UserCreateDto userCreateDto) {
-		return userFacade.update(userCreateDto, id);
+			@RequestBody @Valid UserUpdateDto userUpdateDto) {
+		return userFacade.updateById(userUpdateDto, id);
 	}
 
 	@DeleteMapping("/{id}")
@@ -113,8 +114,8 @@ public class UserController {
 			@ApiResponse(responseCode = "404", description = "User not found"),
 			@ApiResponse(responseCode = "500", description = "Internal server error")
 	})
-	public UserDto delete(
+	public UserDto deleteById(
 			@Parameter(description = "ID of the user to be deleted") @PathVariable String id) {
-		return userFacade.delete(id);
+		return userFacade.deleteById(id);
 	}
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/UserFacade.java b/core/src/main/java/cz/muni/fi/pa165/core/user/UserFacade.java
index dc20fee5f1a3d12b204f41f00f3076014f11e111..b69c646c5f99c00f727a3a4dad8c5c78dd039c74 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/user/UserFacade.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/user/UserFacade.java
@@ -3,6 +3,7 @@ package cz.muni.fi.pa165.core.user;
 import cz.muni.fi.pa165.model.dto.common.Result;
 import cz.muni.fi.pa165.model.dto.user.UserCreateDto;
 import cz.muni.fi.pa165.model.dto.user.UserDto;
+import cz.muni.fi.pa165.model.dto.user.UserUpdateDto;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
@@ -29,19 +30,18 @@ public class UserFacade {
 		return userMapper.toResult(userService.findAllPageableInt(page));
 	}
 
-	@Transactional(readOnly = true)
+	@Transactional
 	public UserDto create(UserCreateDto userCreateDto) {
 		return userMapper.toDto(userService.create(userMapper.fromCreateDto(userCreateDto)));
 	}
 
 	@Transactional
-	public UserDto delete(String id) {
+	public UserDto deleteById(String id) {
 		return userMapper.toDto(userService.deleteById(id));
 	}
 
 	@Transactional
-	public UserDto update(UserCreateDto userUpdatedDto, String id) {
-		return userMapper.toDto(userService.update(userMapper.fromCreateDto(userUpdatedDto), id));
-
+	public UserDto updateById(UserUpdateDto userUpdatedDto, String id) {
+		return userMapper.toDto(userService.update(userMapper.fromUpdateDto(userUpdatedDto), id));
 	}
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/user/UserMapper.java b/core/src/main/java/cz/muni/fi/pa165/core/user/UserMapper.java
index e403c78aa8047c44fae137d9febdf23f05511de6..680416b270e36f3f3af4f99a712bab1e01ba2374 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/user/UserMapper.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/user/UserMapper.java
@@ -6,6 +6,7 @@ import cz.muni.fi.pa165.model.dto.common.Result;
 import cz.muni.fi.pa165.model.dto.device.DeviceUpdateDto;
 import cz.muni.fi.pa165.model.dto.user.UserCreateDto;
 import cz.muni.fi.pa165.model.dto.user.UserDto;
+import cz.muni.fi.pa165.model.dto.user.UserUpdateDto;
 import org.mapstruct.Mapper;
 
 @Mapper
@@ -13,4 +14,6 @@ public interface UserMapper extends DomainMapper<User, UserDto> {
 
   User fromCreateDto(UserCreateDto dto);
 
+  User fromUpdateDto(UserUpdateDto dto);
+
 }
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceCreateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceCreateDto.java
index e7b7f808c8b44a3c6f17bd4b07fdce7add69c59a..b8ceeaebd3d54fe50c20f2dd3cd34cc937abf1fc 100644
--- a/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceCreateDto.java
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceCreateDto.java
@@ -1,8 +1,12 @@
 package cz.muni.fi.pa165.model.dto.device;
 
 import cz.muni.fi.pa165.model.dto.common.DomainObjectDto;
+import lombok.Getter;
+import lombok.Setter;
 
+@Getter
+@Setter
 public class DeviceCreateDto extends DomainObjectDto {
 
-  public String name;
+  private String name;
 }
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceDto.java
index 4800e064b16db2bae1bef189fb1f9734bf0836f1..9218a718cc9964014dc36d1e0fc62243cdf946cc 100644
--- a/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceDto.java
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceDto.java
@@ -1,8 +1,12 @@
 package cz.muni.fi.pa165.model.dto.device;
 
 import cz.muni.fi.pa165.model.dto.common.DomainObjectDto;
+import lombok.Getter;
+import lombok.Setter;
 
+@Getter
+@Setter
 public class DeviceDto extends DomainObjectDto {
 
-  public String name;
+  private String name;
 }
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceUpdateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceUpdateDto.java
index 2d79269044fcd69dcaf1593c01576e4daee774ce..976642fba38646762eba51d8c89bd85a386eea3c 100644
--- a/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceUpdateDto.java
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/device/DeviceUpdateDto.java
@@ -1,8 +1,12 @@
 package cz.muni.fi.pa165.model.dto.device;
 
 import cz.muni.fi.pa165.model.dto.common.DomainObjectDto;
+import lombok.Getter;
+import lombok.Setter;
 
+@Getter
+@Setter
 public class DeviceUpdateDto extends DomainObjectDto {
 
-  public String name;
+  private String name;
 }
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseCreateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseCreateDto.java
index 99a6baf45a21df52cdcb3817e39605db2dd26b66..8b3bc11b99f20fd26d6d610505886cc765d8c02d 100644
--- a/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseCreateDto.java
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseCreateDto.java
@@ -1,11 +1,15 @@
 package cz.muni.fi.pa165.model.dto.house;
 
 import cz.muni.fi.pa165.model.dto.common.DomainObjectDto;
+import lombok.Getter;
+import lombok.Setter;
 
+@Getter
+@Setter
 public class HouseCreateDto extends DomainObjectDto {
 
-  public String address;
-  public String city;
-  public String state;
-  public String zipcode;
+  private String address;
+  private String city;
+  private String state;
+  private String zipcode;
 }
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseDto.java
index fad881fffadd02fd6b5e37b618e07b4acdbdfbf5..3697c1eaa2cf46a790443a6e84ea32dc807b2237 100644
--- a/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseDto.java
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseDto.java
@@ -1,11 +1,14 @@
 package cz.muni.fi.pa165.model.dto.house;
 
 import cz.muni.fi.pa165.model.dto.common.DomainObjectDto;
+import lombok.Getter;
+import lombok.Setter;
 
+@Getter
+@Setter
 public class HouseDto extends DomainObjectDto {
-
-  public String address;
-  public String city;
-  public String state;
-  public String zipcode;
+  private String address;
+  private String city;
+  private String state;
+  private String zipcode;
 }
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseUpdateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseUpdateDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..e732309b7a7e068a4eafb2c3a9d144087e1eacfa
--- /dev/null
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/house/HouseUpdateDto.java
@@ -0,0 +1,14 @@
+package cz.muni.fi.pa165.model.dto.house;
+
+import cz.muni.fi.pa165.model.dto.common.DomainObjectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class HouseUpdateDto extends DomainObjectDto {
+	private String name;
+	private String city;
+	private String state;
+	private String zipcode;
+}
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerCreateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerCreateDto.java
index cf2890f22e68d95936018642bc364102527a8ffa..ce6bfc339808ff0a948df3b00e541c6f73e32187 100644
--- a/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerCreateDto.java
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerCreateDto.java
@@ -1,8 +1,11 @@
 package cz.muni.fi.pa165.model.dto.manufacturer;
 
 import cz.muni.fi.pa165.model.dto.common.DomainObjectDto;
+import lombok.Getter;
+import lombok.Setter;
 
+@Getter
+@Setter
 public class ManufacturerCreateDto extends DomainObjectDto {
-
-  public String name;
+	private String name;
 }
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerDto.java
index 16bd260c52c27235f5d8b0cf5c84fc096be0bfbe..cadb73c17dff29ff3c80eab6e748fe242f4bbb91 100644
--- a/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerDto.java
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerDto.java
@@ -1,8 +1,12 @@
 package cz.muni.fi.pa165.model.dto.manufacturer;
 
 import cz.muni.fi.pa165.model.dto.common.DomainObjectDto;
+import lombok.Getter;
+import lombok.Setter;
 
-public class ManufacturerDto extends DomainObjectDto {
 
-  public String name;
+@Getter
+@Setter
+public class ManufacturerDto extends DomainObjectDto {
+    private String name;
 }
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerUpdateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerUpdateDto.java
index e0e2be1f1b7f131c885bda2d956a37df8eb27c71..5951e5051226815644832ee7d6e91586b9df8212 100644
--- a/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerUpdateDto.java
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/manufacturer/ManufacturerUpdateDto.java
@@ -1,7 +1,12 @@
 package cz.muni.fi.pa165.model.dto.manufacturer;
 
 import cz.muni.fi.pa165.model.dto.common.DomainObjectDto;
+import lombok.Getter;
+import lombok.Setter;
 
+
+@Getter
+@Setter
 public class ManufacturerUpdateDto extends DomainObjectDto {
-	public String name;
+	private String name;
 }
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterCreateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterCreateDto.java
index 6f0b3274707484de741e4b01775560f29782ff1b..0bf70ededdb96c422329abed823a7401638a56da 100644
--- a/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterCreateDto.java
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterCreateDto.java
@@ -2,8 +2,13 @@ package cz.muni.fi.pa165.model.dto.smartDevice;
 
 import cz.muni.fi.pa165.model.dto.common.DomainObjectDto;
 import cz.muni.fi.pa165.model.dto.device.DeviceDto;
+import lombok.Getter;
+import lombok.Setter;
 
+
+@Getter
+@Setter
 public class SmartMeterCreateDto extends DomainObjectDto {
-  public String name;
-  public DeviceDto deviceDto;
+  private String name;
+  private DeviceDto deviceDto;
 }
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterDto.java
index 93d496822fd1657849cbc35977ff215a893aaee4..d44acc98b376fabed5e73cf700b6bbaaa1be7362 100644
--- a/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterDto.java
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterDto.java
@@ -2,8 +2,12 @@ package cz.muni.fi.pa165.model.dto.smartDevice;
 
 import cz.muni.fi.pa165.model.dto.common.DomainObjectDto;
 import cz.muni.fi.pa165.model.dto.device.DeviceDto;
+import lombok.Getter;
+import lombok.Setter;
 
+@Getter
+@Setter
 public class SmartMeterDto extends DomainObjectDto {
-  public String name;
-  public DeviceDto deviceDto;
+  private String name;
+  private DeviceDto deviceDto;
 }
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterUpdateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterUpdateDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..37aad9ca5f6f77b95fca3ecd594a666a0ca76e78
--- /dev/null
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/smartDevice/SmartMeterUpdateDto.java
@@ -0,0 +1,9 @@
+package cz.muni.fi.pa165.model.dto.smartDevice;
+
+import cz.muni.fi.pa165.model.dto.device.DeviceDto;
+
+public class SmartMeterUpdateDto {
+	private String name;
+	private DeviceDto deviceDto;
+}
+
diff --git a/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserUpdateDto.java b/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserUpdateDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..41e68c07b8761de37280b1c24ab2c3a27586fa60
--- /dev/null
+++ b/model/src/main/java/cz/muni/fi/pa165/model/dto/user/UserUpdateDto.java
@@ -0,0 +1,19 @@
+package cz.muni.fi.pa165.model.dto.user;
+
+import cz.muni.fi.pa165.model.dto.common.DomainObjectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class UserUpdateDto extends DomainObjectDto {
+	private String username;
+
+	private String password;
+
+	private String email;
+
+	private String firstName;
+
+	private String lastName;
+}
diff --git a/openapi.yaml b/openapi.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1231540759331820340c1240fa9f6bf953ecf321
--- /dev/null
+++ b/openapi.yaml
@@ -0,0 +1,692 @@
+openapi: 3.0.1
+info:
+  title: OpenAPI definition
+  version: v0
+servers:
+- url: http://localhost:8080
+  description: Generated server url
+tags:
+- name: Device
+  description: Device API
+paths:
+  /api/user/{id}:
+    get:
+      tags:
+      - user
+      summary: Find user by ID
+      description: Returns a single user
+      operationId: findById
+      parameters:
+      - name: id
+        in: path
+        description: ID of user to be searched
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          description: User found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserDto'
+        "404":
+          description: User not found
+    put:
+      tags:
+      - user-controller
+      summary: Update a user by ID
+      operationId: update
+      parameters:
+      - name: id
+        in: path
+        description: ID of the user to be updated
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/UserCreateDto'
+        required: true
+      responses:
+        "200":
+          description: User updated successfully
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/UserDto'
+        "500":
+          description: Internal server error
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/UserDto'
+        "400":
+          description: Invalid input
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/UserDto'
+        "404":
+          description: User not found
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/UserDto'
+    delete:
+      tags:
+      - user-controller
+      summary: Delete a user by ID
+      operationId: delete
+      parameters:
+      - name: id
+        in: path
+        description: ID of the user to be deleted
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          description: User deleted successfully
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/UserDto'
+        "500":
+          description: Internal server error
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/UserDto'
+        "404":
+          description: User not found
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/UserDto'
+  /api/manufacturer/{id}:
+    get:
+      tags:
+      - manufacturer-controller
+      summary: Get manufacturer by ID
+      description: Returns the manufacturer with the specified ID.
+      operationId: find_1
+      parameters:
+      - name: id
+        in: path
+        description: The ID of the manufacturer.
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/ManufacturerDto'
+    put:
+      tags:
+      - manufacturer-controller
+      summary: Update device
+      description: Updates the device with the specified id.
+      operationId: update_1
+      parameters:
+      - name: id
+        in: path
+        description: The id of the manufacturer.
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ManufacturerUpdateDto'
+        required: true
+      responses:
+        "200":
+          description: OK
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/ManufacturerDto'
+    delete:
+      tags:
+      - manufacturer-controller
+      summary: Delete manufacturer
+      description: Deletes the manufacturer with the specified id.
+      operationId: delete_1
+      parameters:
+      - name: id
+        in: path
+        description: The id of the manufacturer.
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/ManufacturerDto'
+  /api/device/{id}:
+    get:
+      tags:
+      - Device
+      summary: Get device by id
+      description: Returns a device with the specified id.
+      operationId: findById_1
+      parameters:
+      - name: id
+        in: path
+        description: The id of the device.
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/DeviceDto'
+    put:
+      tags:
+      - Device
+      summary: Update device
+      description: Updates the device with the specified id.
+      operationId: update_2
+      parameters:
+      - name: id
+        in: path
+        description: The id of the device.
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DeviceUpdateDto'
+        required: true
+      responses:
+        "200":
+          description: OK
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/DeviceDto'
+    delete:
+      tags:
+      - Device
+      summary: Delete device
+      description: Deletes the device with the specified id.
+      operationId: delete_2
+      parameters:
+      - name: id
+        in: path
+        description: The id of the device.
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/DeviceDto'
+  /api/user:
+    get:
+      tags:
+      - user
+      summary: Get all users
+      description: Returns all users
+      operationId: findAll
+      parameters:
+      - name: page
+        in: query
+        description: Page number of results to retrieve
+        required: true
+        schema:
+          type: integer
+          format: int32
+      responses:
+        "200":
+          description: Users found
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/Result'
+    post:
+      tags:
+      - user
+      summary: Create user
+      description: Creates a new user
+      operationId: create
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/UserCreateDto'
+        required: true
+      responses:
+        "201":
+          description: User created
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/UserDto'
+        "400":
+          description: Invalid input
+        "409":
+          description: User with the same name already exists
+  /api/smart-meter:
+    get:
+      tags:
+      - smart-meter-controller
+      summary: Get all smart meters
+      description: Returns a list of all smart meters.
+      operationId: findAll_1
+      responses:
+        "200":
+          description: Successfully retrieved the list of smart meters.
+          content:
+            '*/*':
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/SmartMeterDto'
+    post:
+      tags:
+      - smart-meter-controller
+      summary: Create a new smart meter
+      description: Creates a new smart meter.
+      operationId: create_1
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/SmartMeterCreateDto'
+        required: true
+      responses:
+        "201":
+          description: Successfully created a new smart meter.
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/SmartMeterDto'
+  /api/manufacturer:
+    get:
+      tags:
+      - manufacturer-controller
+      summary: Get all manufacturers
+      description: Returns a list of all manufacturers.
+      operationId: findAll_2
+      responses:
+        "200":
+          description: OK
+          content:
+            '*/*':
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ManufacturerDto'
+    post:
+      tags:
+      - manufacturer-controller
+      summary: Create manufacturer
+      description: Creates a new manufacturer.
+      operationId: create_2
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ManufacturerCreateDto'
+        required: true
+      responses:
+        "200":
+          description: OK
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/ManufacturerDto'
+  /api/house:
+    get:
+      tags:
+      - house-controller
+      summary: Get all houses
+      description: Retrieve a list of all houses.
+      operationId: findAll_3
+      responses:
+        "200":
+          description: OK
+          content:
+            '*/*':
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/HouseDto'
+    post:
+      tags:
+      - house-controller
+      summary: Create a new house
+      description: Create a new house with the specified details.
+      operationId: create_3
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/HouseCreateDto'
+        required: true
+      responses:
+        "200":
+          description: OK
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/HouseDto'
+  /api/device:
+    get:
+      tags:
+      - Device
+      summary: Get all devices
+      description: Returns a list of all devices.
+      operationId: findAll_4
+      responses:
+        "200":
+          description: OK
+          content:
+            '*/*':
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/DeviceDto'
+    post:
+      tags:
+      - Device
+      summary: Create device
+      description: Creates a new device.
+      operationId: create_4
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DeviceCreateDto'
+        required: true
+      responses:
+        "200":
+          description: OK
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/DeviceDto'
+  /api/smart-meter/{id}:
+    get:
+      tags:
+      - smart-meter-controller
+      summary: Get a smart meter by ID
+      description: Returns the smart meter with the specified ID.
+      operationId: find
+      parameters:
+      - name: id
+        in: path
+        required: true
+        schema:
+          type: string
+      responses:
+        "404":
+          description: Smart meter not found.
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/SmartMeterDto'
+        "200":
+          description: Successfully retrieved the smart meter.
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/SmartMeterDto'
+  /api/smart-meter/pageable:
+    get:
+      tags:
+      - smart-meter-controller
+      summary: Get a pageable list of smart meters
+      description: Returns a pageable list of smart meters.
+      operationId: findAllPageable
+      parameters:
+      - name: pageable
+        in: query
+        required: true
+        schema:
+          $ref: '#/components/schemas/Pageable'
+      responses:
+        "200":
+          description: Successfully retrieved the pageable list of smart meters.
+          content:
+            '*/*':
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/SmartMeterDto'
+  /api/manufacturer/pageable:
+    get:
+      tags:
+      - manufacturer-controller
+      summary: Get all manufacturers (paginated)
+      description: Returns a pageable list of all manufacturers.
+      operationId: findAllPageable_1
+      parameters:
+      - name: pageable
+        in: query
+        required: true
+        schema:
+          $ref: '#/components/schemas/Pageable'
+      responses:
+        "200":
+          description: OK
+          content:
+            '*/*':
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/ManufacturerDto'
+  /api/house/{id}:
+    get:
+      tags:
+      - house-controller
+      summary: Get a house by ID
+      description: Retrieve a house with the specified ID.
+      operationId: find_2
+      parameters:
+      - name: id
+        in: path
+        required: true
+        schema:
+          type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            '*/*':
+              schema:
+                $ref: '#/components/schemas/HouseDto'
+  /api/house/pageable:
+    get:
+      tags:
+      - house-controller
+      summary: Get all houses pageable
+      description: Retrieve a pageable list of all houses.
+      operationId: findAllPageable_2
+      parameters:
+      - name: pageable
+        in: query
+        required: true
+        schema:
+          $ref: '#/components/schemas/Pageable'
+      responses:
+        "200":
+          description: OK
+          content:
+            '*/*':
+              schema:
+                type: array
+                items:
+                  $ref: '#/components/schemas/HouseDto'
+components:
+  schemas:
+    UserCreateDto:
+      type: object
+      properties:
+        id:
+          type: string
+        username:
+          type: string
+        password:
+          type: string
+        email:
+          type: string
+        firstName:
+          type: string
+        lastName:
+          type: string
+      description: User to be created
+    UserDto:
+      type: object
+      properties:
+        id:
+          type: string
+        username:
+          type: string
+        email:
+          type: string
+        firstName:
+          type: string
+        lastName:
+          type: string
+    ManufacturerUpdateDto:
+      type: object
+      properties:
+        id:
+          type: string
+        name:
+          type: string
+    ManufacturerDto:
+      type: object
+      properties:
+        id:
+          type: string
+        name:
+          type: string
+    DeviceUpdateDto:
+      type: object
+      properties:
+        id:
+          type: string
+        name:
+          type: string
+    DeviceDto:
+      type: object
+      properties:
+        id:
+          type: string
+        name:
+          type: string
+    SmartMeterCreateDto:
+      type: object
+      properties:
+        id:
+          type: string
+        name:
+          type: string
+        deviceDto:
+          $ref: '#/components/schemas/DeviceDto'
+    SmartMeterDto:
+      type: object
+      properties:
+        id:
+          type: string
+        name:
+          type: string
+        deviceDto:
+          $ref: '#/components/schemas/DeviceDto'
+    ManufacturerCreateDto:
+      type: object
+      properties:
+        id:
+          type: string
+        name:
+          type: string
+    HouseCreateDto:
+      type: object
+      properties:
+        id:
+          type: string
+        address:
+          type: string
+        city:
+          type: string
+        state:
+          type: string
+        zipcode:
+          type: string
+    HouseDto:
+      type: object
+      properties:
+        id:
+          type: string
+        address:
+          type: string
+        city:
+          type: string
+        state:
+          type: string
+        zipcode:
+          type: string
+    DeviceCreateDto:
+      type: object
+      properties:
+        id:
+          type: string
+        name:
+          type: string
+    DomainObjectDto:
+      type: object
+      properties:
+        id:
+          type: string
+    Result:
+      type: object
+      properties:
+        total:
+          type: integer
+          format: int64
+        page:
+          type: integer
+          format: int32
+        pageSize:
+          type: integer
+          format: int32
+        items:
+          type: array
+          items:
+            $ref: '#/components/schemas/DomainObjectDto'
+    Pageable:
+      type: object
+      properties:
+        page:
+          minimum: 0
+          type: integer
+          format: int32
+        size:
+          minimum: 1
+          type: integer
+          format: int32
+        sort:
+          type: array
+          items:
+            type: string