diff --git a/R/RunModel.Supervisor.R b/R/RunModel.Supervisor.R
index f266ef0118d5d5b90347f7e9d5f06712acea07d9..937dc40ea1f76bb9173aeea48ac04d8f43ea5501 100644
--- a/R/RunModel.Supervisor.R
+++ b/R/RunModel.Supervisor.R
@@ -36,8 +36,10 @@ RunModel.Supervisor <- function(x, RunOptions, Param, ...) {
   # Copy simulated pure runoff flows (no SD nodes) to Qupstream in downstream SD nodes
   for(id in getNoSD_Ids(x$InputsModel)) {
     downId <- x$InputsModel[[id]]$down
-    x$InputsModel[[downId]]$Qupstream[RunOptions[[downId]]$IndPeriod_Run, id] <-
-      x$OutputsModel[[id]]$Qsim_m3
+    if(!is.null(x$InputsModel[[downId]])) {
+      x$InputsModel[[downId]]$Qupstream[RunOptions[[downId]]$IndPeriod_Run, id] <-
+        x$OutputsModel[[id]]$Qsim_m3
+    }
   }
 
   # Save Qsim for step by step simulation
diff --git a/R/utils.R b/R/utils.R
index dab02557ee3c2b890bd3f372550f6fb6c3380853..85fc697e8b8a8d0e337aca4f599e6aa637a82eb5 100644
--- a/R/utils.R
+++ b/R/utils.R
@@ -68,7 +68,10 @@ setDataToLocation <- function(ctrlr, sv) {
     # limit U size to the number of simulation time steps of the current supervision time step
     U <- ctrlr$U[seq.int(length(sv$ts.index)),i]
     # ! Qupstream contains warm up period and run period => the index is shifted
-    sv$InputsModel[[node]]$Qupstream[sv$ts.index0 + sv$ts.index, ctrlr$Unames[i]] <- U
+    if(!is.null(sv$InputsModel[[node]])) {
+      sv$InputsModel[[node]]$Qupstream[sv$ts.index0 + sv$ts.index,
+                                       ctrlr$Unames[i]] <- U
+    }
   })
 }