diff --git a/core/src/main/java/cz/muni/fi/pa165/core/data/domain/Steward.java b/core/src/main/java/cz/muni/fi/pa165/core/data/domain/Steward.java
index 7b326d8783d45a545dd839b39e5365c36610f0a8..36dcb560962d9a2edf782c4917cd2cf4851b0a1b 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/data/domain/Steward.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/data/domain/Steward.java
@@ -8,7 +8,8 @@ import lombok.NoArgsConstructor;
 import java.util.Collection;
 import java.util.Objects;
 
-@Entity(name = "stewards")
+@Entity
+@Table(name = "stewards")
 @Data
 @NoArgsConstructor
 public class Steward extends DomainEntity {
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/data/repository/steward/StewardRepository.java b/core/src/main/java/cz/muni/fi/pa165/core/data/repository/steward/StewardRepository.java
index f2c51265fc009e8697b7384402b5306dfbb7b9f4..78064e0b0cafba567a1dacff1f3eedf66161f7ce 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/data/repository/steward/StewardRepository.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/data/repository/steward/StewardRepository.java
@@ -2,9 +2,15 @@ package cz.muni.fi.pa165.core.data.repository.steward;
 
 import cz.muni.fi.pa165.core.data.domain.Steward;
 import cz.muni.fi.pa165.core.data.repository.common.BaseRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.Optional;
+
 @Repository
 public interface StewardRepository extends BaseRepository<Steward, Long> {
 
+    @Query("SELECT s FROM Steward s JOIN FETCH s.flightStewards fs WHERE s.id = :id")
+    Optional<Steward> findByIdWithFlights(@Param("id") Long id);
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/facade/flight/FlightFacadeImpl.java b/core/src/main/java/cz/muni/fi/pa165/core/facade/flight/FlightFacadeImpl.java
index a85902b871bc80d50fae6a3b2206b8e62b97e548..e10cb094fec813c2d7fb763c64885a0916f7fb02 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/facade/flight/FlightFacadeImpl.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/facade/flight/FlightFacadeImpl.java
@@ -1,13 +1,10 @@
 package cz.muni.fi.pa165.core.facade.flight;
 
-import cz.muni.fi.pa165.core.data.domain.Flight;
 import cz.muni.fi.pa165.core.exceptions.ResourceNotFoundException;
 import cz.muni.fi.pa165.core.mapper.FlightMapper;
 import cz.muni.fi.pa165.core.model.FlightDto;
 import cz.muni.fi.pa165.core.model.NewFlightDtoRequest;
-import cz.muni.fi.pa165.core.model.StewardDto;
 import cz.muni.fi.pa165.core.service.flight.FlightService;
-import org.modelmapper.ModelMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -18,21 +15,19 @@ import java.util.Optional;
 public class FlightFacadeImpl implements FlightFacade<Long> {
 
     private final FlightService flightService;
-    private final ModelMapper modelMapper;
     private final FlightMapper flightMapper;
 
     @Autowired
-    public FlightFacadeImpl(FlightService flightService, ModelMapper modelMapper, FlightMapper flightMapper) {
+    public FlightFacadeImpl(FlightService flightService, FlightMapper flightMapper) {
         this.flightService = flightService;
-        this.modelMapper = modelMapper;
         this.flightMapper = flightMapper;
     }
 
     @Override
     public FlightDto save(NewFlightDtoRequest newFlightDtoRequest) {
-        var entityToSave = modelMapper.map(newFlightDtoRequest, Flight.class);
+        var entityToSave = flightMapper.toEntityFromNewRequest(newFlightDtoRequest);
         var savedEntity = flightService.save(entityToSave);
-        return modelMapper.map(savedEntity, FlightDto.class);
+        return flightMapper.toDto(savedEntity);
     }
 
     @Override
@@ -41,14 +36,6 @@ public class FlightFacadeImpl implements FlightFacade<Long> {
                 .orElseThrow(() -> new ResourceNotFoundException("Not Found."));
 
         return Optional.ofNullable(flightMapper.toDto(foundFlightEntity));
-
-//        var flightDto = modelMapper.map(foundFlightEntity, FlightDto.class);
-//
-//        for (var flightSteward: foundFlightEntity.getFlightStewards()) {
-//            flightDto.addStewardsItem(modelMapper.map(flightSteward.getSteward(), StewardDto.class));
-//        }
-//
-//        return Optional.ofNullable(flightDto);
     }
 
     @Override
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/facade/steward/StewardFacadeImpl.java b/core/src/main/java/cz/muni/fi/pa165/core/facade/steward/StewardFacadeImpl.java
index 797ce7f1afa1fa76ee9afb470b84dfbd8dc3278c..bc2d2ac6565e1315b2a70a64eedee5b578978bf7 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/facade/steward/StewardFacadeImpl.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/facade/steward/StewardFacadeImpl.java
@@ -3,6 +3,8 @@ package cz.muni.fi.pa165.core.facade.steward;
 import cz.muni.fi.pa165.core.data.domain.FlightSteward;
 import cz.muni.fi.pa165.core.data.domain.Steward;
 import cz.muni.fi.pa165.core.exceptions.ResourceNotFoundException;
+import cz.muni.fi.pa165.core.mapper.StewardMapper;
+import cz.muni.fi.pa165.core.model.FlightDto;
 import cz.muni.fi.pa165.core.model.NewStewardDtoRequest;
 import cz.muni.fi.pa165.core.model.StewardDto;
 import cz.muni.fi.pa165.core.service.flight.FlightService;
@@ -19,20 +21,20 @@ public class StewardFacadeImpl implements StewardFacade<Long> {
 
     private final StewardService stewardService;
     private final FlightService flightService;
-    private final ModelMapper modelMapper;
+    private final StewardMapper stewardMapper;
 
     @Autowired
-    public StewardFacadeImpl(StewardService stewardService, FlightService flightService, ModelMapper modelMapper) {
+    public StewardFacadeImpl(StewardService stewardService, FlightService flightService, StewardMapper stewardMapper) {
         this.stewardService = stewardService;
         this.flightService = flightService;
-        this.modelMapper = modelMapper;
+        this.stewardMapper = stewardMapper;
     }
 
     @Override
     public StewardDto save(NewStewardDtoRequest newStewardDtoRequest) {
-        var entityToSave = modelMapper.map(newStewardDtoRequest, Steward.class);
+        var entityToSave = stewardMapper.toEntityFromNewRequest(newStewardDtoRequest);
         var savedEntity = stewardService.save(entityToSave);
-        return modelMapper.map(savedEntity, StewardDto.class);
+        return stewardMapper.toDto(savedEntity);
     }
 
     @Override
@@ -57,25 +59,20 @@ public class StewardFacadeImpl implements StewardFacade<Long> {
 
     @Override
     public StewardDto assignStewardFlight(Long stewardId, Long flightId) {
-        var stewardEntityOpt = stewardService.findById(stewardId);
-        var flightEntityOpt = flightService.findById(flightId);
+        var stewardEntity = stewardService.findByIdWithFlights(stewardId)
+                .orElse(stewardService.findById(stewardId)
+                        .orElseThrow(() -> new ResourceNotFoundException("Not Found.")));
 
-        if (stewardEntityOpt.isEmpty() || flightEntityOpt.isEmpty()) {
-            throw new ResourceNotFoundException("Not Found.");
-        }
-
-        var stewardEntity = stewardEntityOpt.get();
-        var flightEntity = flightEntityOpt.get();
+        var flightEntity = flightService.findById(flightId)
+                .orElseThrow(() -> new ResourceNotFoundException("Not Found."));
 
         var flightSteward = new FlightSteward();
         flightSteward.setSteward(stewardEntity);
         flightSteward.setFlight(flightEntity);
         stewardService.saveFlightStewards(flightSteward);
 
-        // Check that Flight members were eagerly fetched
-        var flightEntityOptEagerlyFetched = flightService.findByIdWithStewards(flightId);
+        var stewardDto = stewardMapper.toDto(stewardEntity);
 
-        //TODO create DTO without nested members
-        return null;
+        return stewardDto;
     }
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/mapper/FlightMapper.java b/core/src/main/java/cz/muni/fi/pa165/core/mapper/FlightMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..0f2bc1e097eb1ba39b90aec61c2ef9edd79b19c2
--- /dev/null
+++ b/core/src/main/java/cz/muni/fi/pa165/core/mapper/FlightMapper.java
@@ -0,0 +1,22 @@
+package cz.muni.fi.pa165.core.mapper;
+
+import cz.muni.fi.pa165.core.data.domain.Flight;
+import cz.muni.fi.pa165.core.model.FlightDto;
+import cz.muni.fi.pa165.core.model.NewFlightDtoRequest;
+import org.mapstruct.*;
+
+
+@Mapper(componentModel = "spring")
+public interface FlightMapper {
+
+    Flight toEntity(FlightDto flightDto);
+
+    Flight toEntityFromNewRequest(NewFlightDtoRequest newFlightDtoRequest);
+
+    @Mapping(target = "stewards", source = "flightStewards")
+    FlightDto toDto(Flight flight);
+
+
+    @BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
+    Flight partialUpdate(FlightDto flightDto, @MappingTarget Flight flight);
+}
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/mapper/StewardMapper.java b/core/src/main/java/cz/muni/fi/pa165/core/mapper/StewardMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..bf21528bd9ee005d29fef9cb037482f50b8211ae
--- /dev/null
+++ b/core/src/main/java/cz/muni/fi/pa165/core/mapper/StewardMapper.java
@@ -0,0 +1,16 @@
+package cz.muni.fi.pa165.core.mapper;
+
+import cz.muni.fi.pa165.core.data.domain.Steward;
+import cz.muni.fi.pa165.core.model.NewStewardDtoRequest;
+import cz.muni.fi.pa165.core.model.StewardDto;
+import org.mapstruct.Mapper;
+
+@Mapper(componentModel = "spring")
+public interface StewardMapper {
+
+    Steward toEntity(StewardDto stewardDto);
+
+    Steward toEntityFromNewRequest(NewStewardDtoRequest newStewardDtoRequest);
+
+    StewardDto toDto(Steward steward);
+}
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/service/steward/StewardService.java b/core/src/main/java/cz/muni/fi/pa165/core/service/steward/StewardService.java
index 008cc514c73d387c8534180f83cf941f5fadef03..1175ec95fe16d510bb12208334ca7038e47ae651 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/service/steward/StewardService.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/service/steward/StewardService.java
@@ -4,6 +4,8 @@ import cz.muni.fi.pa165.core.data.domain.FlightSteward;
 import cz.muni.fi.pa165.core.data.domain.Steward;
 import cz.muni.fi.pa165.core.service.common.BaseService;
 
+import java.util.Optional;
+
 public interface StewardService extends BaseService<Steward, Long> {
 
     /**
@@ -12,4 +14,6 @@ public interface StewardService extends BaseService<Steward, Long> {
      * @return FlightSteward connection table stored in DB
      */
     FlightSteward saveFlightStewards(FlightSteward flightSteward);
+
+    Optional<Steward> findByIdWithFlights(Long id);
 }
diff --git a/core/src/main/java/cz/muni/fi/pa165/core/service/steward/StewardServiceImpl.java b/core/src/main/java/cz/muni/fi/pa165/core/service/steward/StewardServiceImpl.java
index eefd1703dd7f6b9643accc29e53474e20936624a..fdc213111ee27766ff540b1d2e80488e60da50d4 100644
--- a/core/src/main/java/cz/muni/fi/pa165/core/service/steward/StewardServiceImpl.java
+++ b/core/src/main/java/cz/muni/fi/pa165/core/service/steward/StewardServiceImpl.java
@@ -8,6 +8,8 @@ import cz.muni.fi.pa165.core.service.common.BaseServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Optional;
+
 @Service
 public class StewardServiceImpl extends BaseServiceImpl<Steward, Long> implements StewardService {
 
@@ -25,4 +27,9 @@ public class StewardServiceImpl extends BaseServiceImpl<Steward, Long> implement
     public FlightSteward saveFlightStewards(FlightSteward flightSteward) {
         return flightStewardRepository.save(flightSteward);
     }
+
+    @Override
+    public Optional<Steward> findByIdWithFlights(Long id) {
+        return stewardRepository.findByIdWithFlights(id);
+    }
 }