diff --git a/src/slurmd/slurmd/req.c b/src/slurmd/slurmd/req.c
index 3413e771e1c3fc2d95f7d28e45b15a6038dd8cee..898151e4273063ad36c0103fa9a383b5c7bfe451 100644
--- a/src/slurmd/slurmd/req.c
+++ b/src/slurmd/slurmd/req.c
@@ -4861,12 +4861,8 @@ _rpc_suspend_job(slurm_msg_t *msg)
 	if ((req->op == SUSPEND_JOB) && (req->indf_susp))
 		switch_g_job_suspend(req->switch_info, 5);
 
-	/* Release or reclaim resources bound to these tasks (task affinity) */
-	if (req->op == SUSPEND_JOB) {
+	if (req->op == SUSPEND_JOB)
 		(void) task_g_slurmd_suspend_job(req->job_id);
-	} else {
-		(void) task_g_slurmd_resume_job(req->job_id);
-	}
 
 	/*
 	 * Loop through all job steps and call stepd_suspend or stepd_resume
@@ -4977,6 +4973,8 @@ _rpc_suspend_job(slurm_msg_t *msg)
 	list_iterator_destroy(i);
 	FREE_NULL_LIST(steps);
 
+	if (req->op == RESUME_JOB) /* Call task plugin after processes resume */
+		(void) task_g_slurmd_resume_job(req->job_id);
 	if ((req->op == RESUME_JOB) && (req->indf_susp))
 		switch_g_job_resume(req->switch_info, 5);