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 {