diff --git a/slurm/slurm_errno.h b/slurm/slurm_errno.h
index 838b9cf3f65ff17dc5c8cdfb617d70483b4a76f4..d49d00f5d810cd4f1993d2230d1526abb399d78a 100644
--- a/slurm/slurm_errno.h
+++ b/slurm/slurm_errno.h
@@ -121,7 +121,7 @@ enum {
 	ESLURM_ERROR_ON_DESC_TO_RECORD_COPY,
 	ESLURM_JOB_MISSING_SIZE_SPECIFICATION,
 	ESLURM_JOB_SCRIPT_MISSING,
-	ESLURM_USER_ID_MISSING,
+	ESLURM_USER_ID_MISSING =			2010,
 	ESLURM_DUPLICATE_JOB_ID,
 	ESLURM_PATHNAME_TOO_LONG,
 	ESLURM_NOT_TOP_PRIORITY,
@@ -131,7 +131,7 @@ enum {
 	ESLURM_INVALID_JOB_ID,
 	ESLURM_INVALID_NODE_NAME,
 	ESLURM_WRITING_TO_FILE,
-	ESLURM_TRANSITION_STATE_NO_UPDATE,
+	ESLURM_TRANSITION_STATE_NO_UPDATE =		2020,
 	ESLURM_ALREADY_DONE,
 	ESLURM_INTERCONNECT_FAILURE,
 	ESLURM_BAD_DIST,
@@ -141,7 +141,7 @@ enum {
 	ESLURM_IN_STANDBY_MODE,
 	ESLURM_INVALID_NODE_STATE,
 	ESLURM_INVALID_FEATURE,
-	ESLURM_INVALID_AUTHTYPE_CHANGE,
+	ESLURM_INVALID_AUTHTYPE_CHANGE =		2030,
 	ESLURM_INVALID_CHECKPOINT_TYPE_CHANGE,
 	ESLURM_INVALID_SCHEDTYPE_CHANGE,
 	ESLURM_INVALID_SELECTTYPE_CHANGE,
@@ -151,7 +151,7 @@ enum {
 	ESLURM_DISABLED,
 	ESLURM_DEPENDENCY,
 	ESLURM_BATCH_ONLY,
-	ESLURM_TASKDIST_ARBITRARY_UNSUPPORTED,
+	ESLURM_TASKDIST_ARBITRARY_UNSUPPORTED =		2040,
 	ESLURM_TASKDIST_REQUIRES_OVERCOMMIT,
 	ESLURM_JOB_HELD,
 	ESLURM_INVALID_CRYPTO_TYPE_CHANGE,
@@ -161,7 +161,7 @@ enum {
 	ESLURM_SAME_PARENT_ACCOUNT,
 	ESLURM_INVALID_LICENSES,
 	ESLURM_NEED_RESTART,
-	ESLURM_ACCOUNTING_POLICY,
+	ESLURM_ACCOUNTING_POLICY =			2050,
 	ESLURM_INVALID_TIME_LIMIT,
 	ESLURM_RESERVATION_ACCESS,
 	ESLURM_RESERVATION_INVALID,
@@ -171,7 +171,7 @@ enum {
 	ESLURM_INVALID_WCKEY,
 	ESLURM_RESERVATION_OVERLAP,
 	ESLURM_PORTS_BUSY,
-	ESLURM_PORTS_INVALID,
+	ESLURM_PORTS_INVALID =				2060,
 	ESLURM_PROLOG_RUNNING,
 	ESLURM_NO_STEPS,
 	ESLURM_INVALID_BLOCK_STATE,
@@ -181,7 +181,7 @@ enum {
 	ESLURM_QOS_PREEMPTION_LOOP,
 	ESLURM_NODE_NOT_AVAIL,
 	ESLURM_INVALID_CPU_COUNT,
-	ESLURM_PARTITION_NOT_AVAIL,
+	ESLURM_PARTITION_NOT_AVAIL =			2070,
 	ESLURM_CIRCULAR_DEPENDENCY,
 	ESLURM_INVALID_GRES,
 	ESLURM_JOB_NOT_PENDING,
@@ -189,6 +189,7 @@ enum {
 	ESLURM_PARTITION_IN_USE,
 	ESLURM_EXPAND_GRES,
 	ESLURM_STEP_LIMIT,
+	ESLURM_JOB_SUSPENDED,
 
 	/* switch specific error codes, specific values defined in plugin module */
 	ESLURM_SWITCH_MIN = 3000,
diff --git a/src/common/slurm_errno.c b/src/common/slurm_errno.c
index 4c948acbb117c6f6bbdf2a3c3552252cd867cc66..f2b584ac0bacca98c624ea48ef8abac749b6d516 100644
--- a/src/common/slurm_errno.c
+++ b/src/common/slurm_errno.c
@@ -280,6 +280,8 @@ static slurm_errtab_t slurm_errtab[] = {
 	  "Job expansion with generic resource (gres) not supported"	},
 	{ ESLURM_STEP_LIMIT,
 	  "Step limit reached for this job"			},
+	{ ESLURM_JOB_SUSPENDED,
+	  "Job is current suspended, requested operation disabled"	},
 
 	/* slurmd error codes */
 
diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index dfd05985d09990bbb13988be573405d22e1a441c..d35bdd14bc39aefdc2555a126aa65f0fb2a40f54 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -6859,7 +6859,7 @@ int update_job(job_desc_msg_t * job_specs, uid_t uid)
 	/* Reset min and max node counts as needed, insure consistency */
 	if (job_specs->min_nodes != NO_VAL) {
 		if (IS_JOB_RUNNING(job_ptr) || IS_JOB_SUSPENDED(job_ptr))
-			;	/* shrink running job, handle later */
+			;	/* shrink running job, processed later */
 		else if ((!IS_JOB_PENDING(job_ptr)) || (detail_ptr == NULL))
 			error_code = ESLURM_DISABLED;
 		else if (job_specs->min_nodes < 1) {
@@ -7344,8 +7344,7 @@ int update_job(job_desc_msg_t * job_specs, uid_t uid)
 	    (IS_JOB_RUNNING(job_ptr) || IS_JOB_SUSPENDED(job_ptr))) {
 		/* Use req_nodes to change the nodes associated with a running
 		 * for lack of other field in the job request to use */
-		if ((job_specs->min_nodes == 0) && IS_JOB_RUNNING(job_ptr) &&
-		    (job_ptr->node_cnt > 0) &&
+		if ((job_specs->min_nodes == 0) && (job_ptr->node_cnt > 0) &&
 		    job_ptr->details && job_ptr->details->expanding_jobid) {
 			struct job_record *expand_job_ptr;
 			bitstr_t *orig_job_node_bitmap;
@@ -7360,6 +7359,14 @@ int update_job(job_desc_msg_t * job_specs, uid_t uid)
 				error_code = ESLURM_INVALID_JOB_ID;
 				goto fini;
 			}
+			if (IS_JOB_SUSPENDED(job_ptr) ||
+			    IS_JOB_SUSPENDED(expand_job_ptr)) {
+				info("Can not expand job %u from job %u, "
+				     "job is suspended",
+				     expand_job_ptr->job_id, job_ptr->job_id);
+				error_code = ESLURM_JOB_SUSPENDED;
+				goto fini;
+			}
 			if ((job_ptr->step_list != NULL) &&
 			    (list_count(job_ptr->step_list) != 0)) {
 				info("Attempt to merge job %u with active "