diff --git a/slurm/slurm.h.in b/slurm/slurm.h.in
index a898d62d98da29b926cc7d2f9714c05b10b826ca..875039704759d1aaa8cb145a00a4465ba783cb22 100644
--- a/slurm/slurm.h.in
+++ b/slurm/slurm.h.in
@@ -122,6 +122,7 @@ enum node_states {
 	NODE_STATE_ALLOCATED,	/* node has been allocated to a job */
 	NODE_STATE_DRAINED,	/* node idle and not to be allocated work */
 	NODE_STATE_DRAINING,	/* node in use, but not to be allocated work */
+	NODE_STATE_COMPLETING,	/* node is completing allocated job */
 	NODE_STATE_END		/* last entry in table */
 };
 #define NODE_STATE_NO_RESPOND (0x8000)
diff --git a/src/common/slurm_protocol_defs.c b/src/common/slurm_protocol_defs.c
index dcdc9cadca0e3a9bf8b027e80828d69a79dcd0d7..bdd943de2e0f449c9f95c56b94a7da5defb7c7b9 100644
--- a/src/common/slurm_protocol_defs.c
+++ b/src/common/slurm_protocol_defs.c
@@ -323,20 +323,22 @@ char *node_state_string(enum node_states inx)
 		"ALLOCATED",
 		"DRAINED",
 		"DRAINING",
+		"COMPLETING",
 		"END"
 	};
-	static char *node_down_string[] = {
+	static char *node_no_resp_string[] = {
 		"NoResp+DOWN",
 		"NoResp+UNKNOWN",
 		"NoResp+IDLE",
 		"NoResp+ALLOCATED",
 		"NoResp+DRAINED",
 		"NoResp+DRAINING",
+		"NoResp+COMPLETING",
 		"END"
 	};
 	if (inx & NODE_STATE_NO_RESPOND) {
 		inx = (uint16_t) (inx & (~NODE_STATE_NO_RESPOND));
-		return node_down_string[inx];
+		return node_no_resp_string[inx];
 	}
 	else
 		return node_state_string[inx];
@@ -351,6 +353,7 @@ char *node_state_string_compact(enum node_states inx)
 		"AL",
 		"DD",
 		"DG",
+		"CM",
 		"END"
 	};
 	inx = (uint16_t) (inx & (~NODE_STATE_NO_RESPOND));