diff --git a/src/algorithm/Multimodal/Heuristics/MultimodalModularHeuristic.cpp b/src/algorithm/Multimodal/Heuristics/MultimodalModularHeuristic.cpp
index 588ca109902ae1de7700bf74ee50cc6cba5967c0..07fbcc0dcc90405aa844ca1dd278508ae5df8e10 100644
--- a/src/algorithm/Multimodal/Heuristics/MultimodalModularHeuristic.cpp
+++ b/src/algorithm/Multimodal/Heuristics/MultimodalModularHeuristic.cpp
@@ -109,7 +109,7 @@ MultimodalModularHeuristic::insertBestTransitAccessInRoute(const std::vector<Req
     for(const auto& subreq : accessSubRequestsList) {
         updateSubRequest(baseRequestId, subreq, isEntry);
         SAEVRouteChangelist changeList = BestInsertionHeuristic::tryBestRequestInsertionInActiveVehicle(
-                _route->getEntrySubRequestOrigin(baseRequestId), *_route);
+                _route->getSubRequestOrigin(baseRequestId, isEntry), *_route);
         //If we've found an insertion that doesn't create a vehicle, stop there
         if(changeList.success()) {
             DEBUG_MMH_MSG("ENTRY CANDIDATE SUCCESS : " + subreq.to_string());
@@ -162,8 +162,13 @@ void MultimodalModularHeuristic::updateSubRequest(size_t requestId, const Reques
     else
         _exitSubRequests[requestId] = request;
 
-    _route->getEntrySubRequestOrigin(requestId).setRequest(&getSubrequest(requestId, isEntry));
-    _route->getEntrySubRequestDestination(requestId).setRequest(&getSubrequest(requestId, isEntry));
+    if(isEntry) {
+        _route->getEntrySubRequestOrigin(requestId).setRequest(&getSubrequest(requestId, isEntry));
+        _route->getEntrySubRequestDestination(requestId).setRequest(&getSubrequest(requestId, isEntry));
+    } else {
+        _route->getExitSubRequestOrigin(requestId).setRequest(&getSubrequest(requestId, isEntry));
+        _route->getExitSubRequestDestination(requestId).setRequest(&getSubrequest(requestId, isEntry));
+    }
 }
 
 const Request& MultimodalModularHeuristic::getSubrequest(size_t requestId, bool isEntry) {
diff --git a/src/routes/vehicle/SAEVRoute.cpp b/src/routes/vehicle/SAEVRoute.cpp
index 818a394524e942d8cde1357b453215ecd662baef..8b11c80265ec8e381a46545d9429692a442b2696 100644
--- a/src/routes/vehicle/SAEVRoute.cpp
+++ b/src/routes/vehicle/SAEVRoute.cpp
@@ -565,3 +565,10 @@ SAEVRouteChangelist SAEVRoute::removeRequestWithPropagation(size_t requestId) {
     return removeRequestWithPropagation(getRequestOrigin(requestId));
 }
 
+SAEVKeyPoint &SAEVRoute::getSubRequestOrigin(size_t baseRequestId, bool isEntry) {
+    if(isEntry)
+        return getEntrySubRequestOrigin(baseRequestId);
+    else
+        return getExitSubRequestOrigin(baseRequestId);
+}
+
diff --git a/src/routes/vehicle/SAEVRoute.h b/src/routes/vehicle/SAEVRoute.h
index 39ae4f2d3916798df8209e2dda29636237eef495..78ddd58b35a28ede3ecfbe0316404d5246bd98d4 100644
--- a/src/routes/vehicle/SAEVRoute.h
+++ b/src/routes/vehicle/SAEVRoute.h
@@ -231,6 +231,8 @@ public:
      */
     std::string to_string(size_t vehicleId);
     void exportToFile();
+
+    SAEVKeyPoint &getSubRequestOrigin(size_t baseRequestId, bool isEntry);
 };
 
 #include "propagation/SAEVRouteChangelist.h"