diff --git a/src/common/slurm_protocol_defs.c b/src/common/slurm_protocol_defs.c
index 968a32b333238c8dc3b759f38c588e233163f0c2..71d54da02ffc58a9eb6eb33b0fbd7a5e1aa720a5 100644
--- a/src/common/slurm_protocol_defs.c
+++ b/src/common/slurm_protocol_defs.c
@@ -346,6 +346,8 @@ slurm_free_node_registration_status_msg
 			xfree(msg->node_name);
 		if (msg->job_id)
 			xfree(msg->job_id);
+		if (msg->step_id)
+			xfree(msg->step_id);
 		xfree(msg);
 	}
 }
diff --git a/src/common/slurm_protocol_defs.h b/src/common/slurm_protocol_defs.h
index 303aa60ef800cf7145994332299af7c9213e1e7a..6638901c188c76d454f82270b9cdb82da553305f 100644
--- a/src/common/slurm_protocol_defs.h
+++ b/src/common/slurm_protocol_defs.h
@@ -536,6 +536,7 @@ typedef struct slurm_node_registration_status_msg {
 	uint32_t temporary_disk_space;
 	uint32_t job_count;	/* number of associate job_id's */
 	uint32_t *job_id;	/* IDs of running job (if any) */
+	uint16_t *step_id;	/* IDs of running job steps (if any) */
 } slurm_node_registration_status_msg_t;
 
 typedef struct slurm_ctl_conf slurm_ctl_conf_info_msg_t;
diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c
index e234a99206f8158abd6d2db752728a0cb3b595fd..7fef8de21ae668d3039435ec0bb981a1b9926457 100644
--- a/src/common/slurm_protocol_pack.c
+++ b/src/common/slurm_protocol_pack.c
@@ -439,6 +439,9 @@ void pack_node_registration_status_msg ( slurm_node_registration_status_msg_t *
 	for (i = 0; i < msg->job_count ; i++) {
 		pack32 ( msg -> job_id[i] , ( void ** ) buffer , length ) ;
 	}
+	for (i = 0; i < msg->job_count ; i++) {
+		pack16 ( msg -> step_id[i] , ( void ** ) buffer , length ) ;
+	}
 }
 
 int unpack_node_registration_status_msg ( slurm_node_registration_status_msg_t ** msg , void ** buffer , uint32_t * length )
@@ -468,6 +471,10 @@ int unpack_node_registration_status_msg ( slurm_node_registration_status_msg_t *
 	for (i = 0; i < node_reg_ptr->job_count ; i++) {
 		unpack32 ( & node_reg_ptr->job_id[i] , ( void ** ) buffer , length ) ;
 	}
+	node_reg_ptr -> step_id = xmalloc (sizeof (uint16_t) * node_reg_ptr->job_count);
+	for (i = 0; i < node_reg_ptr->job_count ; i++) {
+		unpack16 ( & node_reg_ptr->step_id[i] , ( void ** ) buffer , length ) ;
+	}
 	*msg = node_reg_ptr ;
 	return 0 ;
 }