diff --git a/engine/src/OpenScenarioEngine.cpp b/engine/src/OpenScenarioEngine.cpp
index fd160301d4baefe38683707f8f250963e23d93da..b1ffd41ad141b52fccc1c68691748a8d2e662a54 100644
--- a/engine/src/OpenScenarioEngine.cpp
+++ b/engine/src/OpenScenarioEngine.cpp
@@ -95,6 +95,8 @@ void OpenScenarioEngine::Init()
 
   controller_creator_->GetControllerService()->ResetControllerMappings();
 
+  SetEnvironmentDefaults();
+
   ParseScenarioFile();
 
   LoadRoadNetwork();
@@ -104,8 +106,6 @@ void OpenScenarioEngine::Init()
   CreateControllers();
 
   CreateAndInitStoryboard();
-
-  SetEnvironmentDefaults();
 }
 
 mantle_api::ScenarioInfo OpenScenarioEngine::GetScenarioInfo() const
@@ -333,7 +333,8 @@ mantle_api::Time OpenScenarioEngine::GetDuration() const
   for (const auto& condition_group : condition_groups)
   {
     auto conditions = condition_group->GetConditions();
-    std::for_each(conditions.begin(), conditions.end(), [&durations](const auto& condition) {
+    std::for_each(conditions.begin(), conditions.end(), [&durations](const auto& condition)
+                  {
             if (const auto& by_val_condition = condition->GetByValueCondition())
             {
                 if (const auto& sim_time_condition = by_val_condition->GetSimulationTimeCondition())
diff --git a/engine/src/Utils/ControllerCreator.cpp b/engine/src/Utils/ControllerCreator.cpp
index 1b0133123277988caff968f452cbc76fcf78775b..540dc1e2fb2f22c51f5b07ef4ef773da651d00c7 100644
--- a/engine/src/Utils/ControllerCreator.cpp
+++ b/engine/src/Utils/ControllerCreator.cpp
@@ -136,7 +136,7 @@ void ControllerCreator::CreateControllers(const std::vector<std::shared_ptr<NET_
     if (detail::IsNotControllable(scenario_object))
     {
       Logger::Info("ControllerCreator: No controller created for non-vehicle and non-pedestrian type scenario object \"" + entity_name + "\"");
-      return;
+      continue;
     }
 
     const auto entity = environment_.GetEntityRepository().Get(entity_name);
diff --git a/engine/tests/OpenScenarioEngineTest.cpp b/engine/tests/OpenScenarioEngineTest.cpp
index b28445c33401b92ce276e5e238db5d17783d33c5..baa8fdfa4bd786608fbbe468dc93859ffadbea4c 100644
--- a/engine/tests/OpenScenarioEngineTest.cpp
+++ b/engine/tests/OpenScenarioEngineTest.cpp
@@ -46,11 +46,15 @@ class OpenScenarioEngineTest : public OpenScenarioEngineTestBase
     std::string controller_name {"TestController"s};
 };
 
-TEST_F(OpenScenarioEngineTest, GivenValidScenarioFile_WhenInitialized_ThenDefaultRoutingBehaviourIsSetToRandom)
+TEST_F(OpenScenarioEngineTest, GivenValidScenarioFile_WhenInitialized_ThenDefaultRoutingBehaviourIsSetBeforeControllersAreCreated)
 {
     std::string xosc_file_path{GetScenariosPath(test_info_->file()) + default_xosc_scenario_};
 
-    EXPECT_CALL(*env_, SetDefaultRoutingBehavior(mantle_api::DefaultRoutingBehavior::kRandomRoute)).Times(1);
+    {
+        testing::InSequence s;
+        EXPECT_CALL(*env_, SetDefaultRoutingBehavior(mantle_api::DefaultRoutingBehavior::kRandomRoute)).Times(1);
+        EXPECT_CALL(env_->GetControllerRepository(), Create(_)).Times(2);
+    }
 
     OpenScenarioEngine::v1_2::OpenScenarioEngine engine(xosc_file_path, env_);
 
diff --git a/engine/tests/Utils/ControllerCreatorTest.cpp b/engine/tests/Utils/ControllerCreatorTest.cpp
index b56659c95d09e6eb2585f2172d5b49bdb3862e49..3273dee9ba12478d19cb6402367062fcf1d83131 100644
--- a/engine/tests/Utils/ControllerCreatorTest.cpp
+++ b/engine/tests/Utils/ControllerCreatorTest.cpp
@@ -144,6 +144,17 @@ TEST_F(ControllerCreator, GivenUncontrollableScenarioObject_WhenCreateIsCalled_T
   EXPECT_THAT(LOGGER->LastLogMessage(), HasSubstr("test_entity"));
 }
 
+TEST_F(ControllerCreator, GivenUncontrollableAndControllableScenarioObject_WhenCreateIsCalled_ThenControllerOnlyForControllableObjectIsCreated)
+{
+  SETUP_ENTITY("uncontrollable_entity", 1234, false, false);
+  SETUP_ENTITY("entity_2", 5678, true, false);
+
+  EXPECT_CALL(mockControllerRepository, Create(_)).Times(1).WillOnce(ReturnRef(mockController));
+  OpenScenarioEngine::v1_2::ControllerCreator controller_creator(mockEnvironment);
+
+  controller_creator.CreateControllers(scenario_objects);
+}
+
 TEST_F(ControllerCreator, GivenScenarioObjectWithController_WhenCreateIsCalled_ThenCreatesDefaultAndUserDefinedController)
 {
   SETUP_ENTITY("test_entity", 1234, true, true);