diff --git a/NEWS b/NEWS
index b1b523fd1309d2f8328a704362d653c15f96b5bf..a89b7c4d17c2b2f184d6c202ed1c0d74271e97af 100644
--- a/NEWS
+++ b/NEWS
@@ -245,6 +245,7 @@ documents those changes that are of interest to users and administrators.
 
 * Changes in Slurm 14.11.8
 ==========================
+ -- Eliminate need for user to set user_id on job_update calls.
 
 * Changes in Slurm 14.11.7
 ==========================
diff --git a/src/scontrol/update_job.c b/src/scontrol/update_job.c
index bba0c07b5cd4609b2835dab747a2674c6b0856e9..56444d4690e3a14b9772a11fe3e44055802f45cd 100644
--- a/src/scontrol/update_job.c
+++ b/src/scontrol/update_job.c
@@ -382,7 +382,6 @@ scontrol_hold(char *op, char *job_str)
 		job_str += 4;
 
 	slurm_init_job_desc_msg (&job_msg);
-	job_msg.user_id = getuid();
 	if ((strncasecmp(op, "holdu", 5) == 0) ||
 	    (strncasecmp(op, "uhold", 5) == 0)) {
 		job_msg.priority = 0;
@@ -724,10 +723,6 @@ scontrol_update_job (int argc, char *argv[])
 	uint32_t job_uid = NO_VAL;
 
 	slurm_init_job_desc_msg (&job_msg);
-
-	/* set current user, needed e.g., for AllowGroups checks */
-	job_msg.user_id = getuid();
-
 	for (i = 0; i < argc; i++) {
 		tag = argv[i];
 		val = strchr(argv[i], '=');
diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index b34b019d1a98a68e5401dd3f6b60a0e704fc87fc..73e54acd7cacf013095d3bd1592434a26c75aa7f 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -9310,6 +9310,11 @@ static int _update_job(struct job_record *job_ptr, job_desc_msg_t * job_specs,
 #endif
 	memset(&acct_policy_limit_set, 0, sizeof(acct_policy_limit_set_t));
 
+	if (job_specs->user_id == NO_VAL) {
+		/* Used by job_submit/lua to find default partition and
+		 * access control logic below to validate partition change */
+		job_specs->user_id = job_ptr->user_id;
+	}
 	error_code = job_submit_plugin_modify(job_specs, job_ptr,
 					      (uint32_t) uid);
 	if (error_code != SLURM_SUCCESS)