diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c
index fe287c07a7726d79edc99325157e50281b7fde3a..c6dd05bc100353d156bd4912466bc8c514542dee 100644
--- a/src/slurmctld/controller.c
+++ b/src/slurmctld/controller.c
@@ -160,7 +160,7 @@ int main(int argc, char *argv[])
 	/*
 	 * Establish initial configuration
 	 */
-	log_init(argv[0], log_opts, SYSLOG_FACILITY_DAEMON, NULL);
+	log_init("slurmctld", log_opts, SYSLOG_FACILITY_DAEMON, NULL);
 	thread_id_main = pthread_self();
 
 	slurmctld_pid = getpid();
@@ -202,7 +202,7 @@ int main(int argc, char *argv[])
 	}
 
 	if (slurmctld_conf.slurmctld_logfile) {
-		log_init(argv[0], log_opts, SYSLOG_FACILITY_DAEMON,
+		log_alter(log_opts, SYSLOG_FACILITY_DAEMON,
 			 slurmctld_conf.slurmctld_logfile);
 	}
 
@@ -1007,7 +1007,7 @@ static void _slurm_rpc_job_step_cancel(slurm_msg_t * msg)
 }
 
 /* _slurm_rpc_job_step_complete - process RPC to note the completion an  
- *	entirejob or an individual job step */
+ *	entire job or an individual job step */
 static void _slurm_rpc_job_step_complete(slurm_msg_t * msg)
 {
 	int error_code = SLURM_SUCCESS;
@@ -2088,7 +2088,7 @@ static void _parse_commandline(int argc, char *argv[],
 			exit(1);
 		}
 
-	log_init(argv[0], log_opts, SYSLOG_FACILITY_DAEMON, log_file);
+	log_alter(log_opts, SYSLOG_FACILITY_DAEMON, log_file);
 }
 
 /* _usage - print a message describing the command line arguments of 
diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index eac63673264f1a59833fe8c5b74dc10904170524..122bcedf90940931110959a1b6f1ebf432409d8f 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -1734,12 +1734,25 @@ _copy_job_desc_to_job_record(job_desc_msg_t * job_desc,
 	if (job_desc->work_dir)
 		detail_ptr->work_dir = xstrdup(job_desc->work_dir);
 
-	/* job_ptr->nodes               *leave as NULL pointer for now */
-	/* job_ptr->start_time          *leave as NULL pointer for now */
-	/* job_ptr->end_time            *leave as NULL pointer for now */
-	/* detail_ptr->total_procs      *leave as NULL pointer for now */
+	*job_rec_ptr = job_ptr;
+	return SLURM_SUCCESS;
+}
+
+/*
+ * build_job_cred - build a credential for a job, only valid after 
+ *	allocation made
+ * IN job_ptr - pointer to the job record 
+ */
+void build_job_cred(struct job_record *job_ptr)
+{
+	struct job_details *detail_ptr;
+	if (job_ptr == NULL)
+		return;
+
+	detail_ptr = job_ptr->details;
+	if (detail_ptr == NULL)
+		return;
 
-	/* initialize job credential */
 	detail_ptr->credential.job_id = job_ptr->job_id;
 	detail_ptr->credential.user_id = job_ptr->user_id;
 	detail_ptr->credential.node_list = xstrdup(job_ptr->nodes);
@@ -1748,9 +1761,6 @@ _copy_job_desc_to_job_record(job_desc_msg_t * job_desc,
 		error("Error building credential for job_id %u: %m",
 		      job_ptr->job_id);
 	}
-
-	*job_rec_ptr = job_ptr;
-	return SLURM_SUCCESS;
 }
 
 /* 
diff --git a/src/slurmctld/node_scheduler.c b/src/slurmctld/node_scheduler.c
index dc705d5c3921fe71d1b0fcad35ba14c44a2d1fb1..2406254f5a4d9119de92cb11f4895124b8484ca5 100644
--- a/src/slurmctld/node_scheduler.c
+++ b/src/slurmctld/node_scheduler.c
@@ -864,6 +864,7 @@ int select_nodes(struct job_record *job_ptr, int test_only)
 	else
 		job_ptr->end_time =
 		    job_ptr->start_time + (job_ptr->time_limit * 60);
+	build_job_cred(job_ptr); /* uses end_time set above */
 
       cleanup:
 	if (req_bitmap)
diff --git a/src/slurmctld/slurmctld.h b/src/slurmctld/slurmctld.h
index 3864066ac12270235097a9d3256e61eb273fad55..c9354d1e135aeb4ee223b245cbe2b0c1e683b26c 100644
--- a/src/slurmctld/slurmctld.h
+++ b/src/slurmctld/slurmctld.h
@@ -284,6 +284,13 @@ extern void  allocate_nodes (unsigned *bitmap);
  */
 extern char * bitmap2node_name (bitstr_t *bitmap) ;
 
+/*
+ * build_job_cred - build a credential for a job, only valid after 
+ *	allocation made
+ * IN job_ptr - pointer to the job record 
+ */
+void build_job_cred(struct job_record *job_ptr);
+
 /*
  * build_node_details - set cpu counts and addresses for allocated nodes
  * IN job_ptr - pointer to a job record