diff --git a/classes/processor.php b/classes/processor.php
index 7ed8f10e15a3c285f483cd2107516f6c37b4dcb4..f152055be9e81c931a4d79e87e48a60feb97674f 100644
--- a/classes/processor.php
+++ b/classes/processor.php
@@ -102,18 +102,23 @@ class processor {
             $workflow = workflow_manager::get_workflow($process->workflowid);
             while (true) {
 
-                if ($process->stepindex == 0) {
-                    process_manager::proceed_process($process);
-                }
-
-                $step = step_manager::get_step_instance_by_workflow_index($process->workflowid, $process->stepindex);
-                $lib = lib_manager::get_step_lib($step->subpluginname);
                 try {
                     $course = get_course($process->courseid);
                 } catch (\dml_missing_record_exception $e) {
                     // Course no longer exists!
                     break;
                 }
+
+                if ($process->stepindex == 0) {
+                    if (!process_manager::proceed_process($process)) {
+                        // Happens for a workflow with no step.
+                        delayed_courses_manager::set_course_delayed_for_workflow($course->id, false, $workflow);
+                        break;
+                    }
+                }
+
+                $step = step_manager::get_step_instance_by_workflow_index($process->workflowid, $process->stepindex);
+                $lib = lib_manager::get_step_lib($step->subpluginname);
                 if ($process->waiting) {
                     $result = $lib->process_waiting_course($process->id, $step->id, $course);
                 } else {