diff --git a/engine/demo/example/scenario.xosc b/engine/demo/example/scenario.xosc
index 48bbcc41bdb772434021770a22cda917adc07d34..15c64813653fb5349aec0b50d8c387e433e3a409 100644
--- a/engine/demo/example/scenario.xosc
+++ b/engine/demo/example/scenario.xosc
@@ -120,7 +120,7 @@
               </Action>
               <StartTrigger>
                 <ConditionGroup>
-                  <Condition name="NotAtStart" delay="0" conditionEdge="rising">
+                  <Condition name="NotAtStart" delay="0" conditionEdge="none">
                     <ByValueCondition>
                       <SimulationTimeCondition value="0" rule="greaterThan" />
                     </ByValueCondition>
@@ -148,9 +148,9 @@
         </ManeuverGroup>
         <StartTrigger>
           <ConditionGroup>
-            <Condition name="EndTime" delay="0" conditionEdge="rising">
+            <Condition name="FromStart" delay="0" conditionEdge="rising">
               <ByValueCondition>
-                <SimulationTimeCondition value="5.0" rule="greaterThan"/>
+                <SimulationTimeCondition value="0.0" rule="greaterOrEqual" />
               </ByValueCondition>
             </Condition>
           </ConditionGroup>
diff --git a/engine/src/Node/TriggerableCompositeNode.h b/engine/src/Node/TriggerableCompositeNode.h
index e712758a0dbf242dee068eadf5451ca7bc8c1dd1..a3a2491a1531450bb17fa262f3e4b1c06a853a03 100644
--- a/engine/src/Node/TriggerableCompositeNode.h
+++ b/engine/src/Node/TriggerableCompositeNode.h
@@ -209,14 +209,14 @@ private:
   ///@brief tick as if no stop trigger would decorate the start trigger
   void tickWithStartTrigger()
   {
-    if (start_trigger_node_)
+    if (start_trigger_node_ && start_trigger_status != NodeStatus::kSuccess)
     {
-      const auto status = start_trigger_node_->executeTick();
-      if (status == NodeStatus::kRunning)
+      start_trigger_status = start_trigger_node_->executeTick();
+      if (start_trigger_status == NodeStatus::kRunning)
       {
         return;
       }
-      if (status == NodeStatus::kFailure)
+      if (start_trigger_status == NodeStatus::kFailure)
       {
         throw std::runtime_error("StartTrigger reported failure");
       }
@@ -249,6 +249,7 @@ private:
     return NodeStatus::kRunning;
   }
 
+  NodeStatus start_trigger_status{NodeStatus::kIdle};
   TransientNode::Ptr stop_trigger_node_{nullptr};
   TransientNode::Ptr start_trigger_node_{nullptr};
   TransientNode::Ptr m_child_node{nullptr};