diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php
index f6f35819b8b..699dfac4822 100644
--- a/mod/assign/locallib.php
+++ b/mod/assign/locallib.php
@@ -7422,12 +7422,7 @@ class assign {
         }
 
         $this->update_submission($submission, $userid, true, $instance->teamsubmission);
-
-        $complete = COMPLETION_INCOMPLETE;
-        if ($submission->status == ASSIGN_SUBMISSION_STATUS_SUBMITTED) {
-            $complete = COMPLETION_COMPLETE;
-        }
-        $completion = new completion_info($this->get_course());
+        $users = [$userid];
 
         if ($instance->teamsubmission && !$instance->requireallteammemberssubmit) {
             $team = $this->get_submission_group_members($submission->groupid, true);
@@ -7436,13 +7431,20 @@ class assign {
                 if ($member->id != $userid) {
                     $membersubmission = clone($submission);
                     $this->update_submission($membersubmission, $member->id, true, $instance->teamsubmission);
-                    if ($completion->is_enabled($this->get_course_module()) && $instance->completionsubmit) {
-                        $completion->update_state($this->get_course_module(), $complete, $member->id);
-                    }
+                    $users[] = $member->id;
                 }
             }
-        } else if ($completion->is_enabled($this->get_course_module()) && $instance->completionsubmit) {
-            $completion->update_state($this->get_course_module(), $complete, $userid);
+        }
+
+        $complete = COMPLETION_INCOMPLETE;
+        if ($submission->status == ASSIGN_SUBMISSION_STATUS_SUBMITTED) {
+            $complete = COMPLETION_COMPLETE;
+        }
+        $completion = new completion_info($this->get_course());
+        if ($completion->is_enabled($this->get_course_module()) && $instance->completionsubmit) {
+            foreach($users as $id) {
+                $completion->update_state($this->get_course_module(), $complete, $id);
+            }
         }
 
         // Logging.
