diff --git a/slurm/slurm.h.in b/slurm/slurm.h.in
index 8708e4d3e33d0bcc5096e8965a206689eef7a4a1..d967b3a8a8ef438cd3a053bcbac776cc06afcd84 100644
--- a/slurm/slurm.h.in
+++ b/slurm/slurm.h.in
@@ -972,7 +972,8 @@ typedef struct partition_info_msg {
 #define RESERVE_FLAG_DELETE	0x0004
 
 /* regular flags to send over */
-#define RESERVE_FLAG_MAINT	0x0010
+#define RESERVE_FLAG_CLEAR	0x0010
+#define RESERVE_FLAG_MAINT	0x0020
 
 typedef struct reserve_info {
 	char *accounts;		/* names of accounts permitted to use */
diff --git a/src/common/slurm_accounting_storage.c b/src/common/slurm_accounting_storage.c
index 90c646243cf2cb22af62e57821334e6bcbd5654b..dd2e48e7db35ce64639ce6c5a82c5c0a5b9c5278 100644
--- a/src/common/slurm_accounting_storage.c
+++ b/src/common/slurm_accounting_storage.c
@@ -751,7 +751,6 @@ extern void destroy_acct_reservation_rec(void *object)
 {
 	acct_reservation_rec_t *acct_resv = (acct_reservation_rec_t *)object;
 	if(acct_resv) {
-		xfree(acct_resv->assocs);
 		xfree(acct_resv->cluster);
 		xfree(acct_resv->nodes);
 		xfree(acct_resv);
@@ -5660,7 +5659,6 @@ extern void pack_acct_reservation_rec(void *in, uint16_t rpc_version,
 	acct_reservation_rec_t *object = (acct_reservation_rec_t *)in;
 
 	if(!object) {
-		packnull(buffer);
 		packnull(buffer);
 		pack32(0, buffer);
 		pack16(0, buffer);
@@ -5672,7 +5670,6 @@ extern void pack_acct_reservation_rec(void *in, uint16_t rpc_version,
 		return;
 	}
 	
-	packstr(object->assocs, buffer);
 	packstr(object->cluster, buffer);
 	pack32(object->cpus, buffer);
 	pack16(object->flags, buffer);
@@ -5692,7 +5689,6 @@ extern int unpack_acct_reservation_rec(void **object, uint16_t rpc_version,
 
 	*object = object_ptr;
 
-	safe_unpackstr_xmalloc(&object_ptr->assocs, &uint32_tmp, buffer);
 	safe_unpackstr_xmalloc(&object_ptr->cluster, &uint32_tmp, buffer);
 	safe_unpack32(&object_ptr->cpus, buffer);
 	safe_unpack16(&object_ptr->flags, buffer);
diff --git a/src/common/slurm_accounting_storage.h b/src/common/slurm_accounting_storage.h
index 6ebfd1864cf6580318dca1b6862544204535d44a..7f85f2c96df72a9ac896cbb0bf0ab282bb9260c1 100644
--- a/src/common/slurm_accounting_storage.h
+++ b/src/common/slurm_accounting_storage.h
@@ -349,7 +349,6 @@ typedef struct {
 } acct_qos_cond_t;
 
 typedef struct {
-	char *assocs; /* comma seperated list of associations */
 	char *cluster; /* cluster reservation is for */
 	uint32_t cpus; /* how many cpus are in reservation */
 	uint16_t flags; /* flags for reservation. */
diff --git a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
index 6780ca15839415cd6eba6ea7abaf440ced7214ff..072640ccd2882433d3a8ea29213d88fd4a04bebb 100644
--- a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
+++ b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
@@ -879,19 +879,17 @@ static int _setup_resv_limits(acct_reservation_rec_t *resv,
 	/* strip off the action item from the flags */
 	resv->flags &= RESERVE_FLAG_FLAGS;
 
-	if(resv->assocs) {
-		xstrcat(*cols, ", assoclist");
-		xstrfmtcat(*vals, ", \"%s\"", resv->assocs);
-		xstrfmtcat(*extra, ", assoclist=\"%s\"", resv->assocs);
-	}
-
 	if(resv->cpus) {
 		xstrcat(*cols, ", cpus");
 		xstrfmtcat(*vals, ", %u", resv->cpus);
 		xstrfmtcat(*extra, ", cpus=%u", resv->cpus);		
 	}
 	
-	if(resv->flags) {
+	if(resv->flags & RESERVE_FLAG_CLEAR) {
+		xstrcat(*cols, ", flags");
+		xstrcat(*vals, ", 0");
+		xstrcat(*extra, ", flags=0");		
+	} else if(resv->flags) {
 		xstrcat(*cols, ", flags");
 		xstrfmtcat(*vals, ", %u", resv->flags);
 		xstrfmtcat(*extra, ", flags=%u", resv->flags);		
@@ -2674,7 +2672,6 @@ static int _mysql_acct_check_tables(MYSQL *db_conn)
 		{ "cluster", "text not null" },
 		{ "deleted", "tinyint default 0" },
 		{ "cpus", "mediumint unsigned not null" },
-		{ "assoclist", "text not null default ''" },
 		{ "nodelist", "text not null default ''" },
 		{ "start", "int unsigned default 0 not null" },
 		{ "end", "int unsigned default 0 not null" },
@@ -4578,7 +4575,6 @@ extern int acct_storage_p_edit_reservation(mysql_conn_t *mysql_conn,
 			"start",
 			"end",
 			"cpus",
-			"assoclist",
 			"nodelist",
 			"flags"
 		};
@@ -4586,7 +4582,6 @@ extern int acct_storage_p_edit_reservation(mysql_conn_t *mysql_conn,
 			RESV_START,
 			RESV_END,
 			RESV_CPU,
-			RESV_ASSOC,
 			RESV_NODES,
 			RESV_FLAGS,
 			RESV_COUNT
@@ -4653,9 +4648,6 @@ extern int acct_storage_p_edit_reservation(mysql_conn_t *mysql_conn,
 
 		/* check differences here */
 		
-		if(!resv->assocs) 
-			resv->assocs = xstrdup(row[RESV_ASSOC]);
-		
 		if(!resv->cpus) {
 			resv->cpus = atoi(row[RESV_CPU]);
 			set = 1;
diff --git a/src/slurmctld/reservation.c b/src/slurmctld/reservation.c
index 6cd7b7ed36f1cc9f3b7558369ec43c45076a1b59..2e8f42b9bb5be5ed1e767671f90f2e8d1d0e7014 100644
--- a/src/slurmctld/reservation.c
+++ b/src/slurmctld/reservation.c
@@ -99,7 +99,6 @@ static bool _resv_overlap(time_t start_time, time_t end_time,
 static int  _select_nodes(reserve_request_msg_t *resv_desc_ptr, 
 			  struct part_record **part_ptr,
 			  bitstr_t **resv_bitmap);
-static void _set_assoc_list(struct slurmctld_resv *resv_ptr);
 static void _set_cpu_cnt(struct slurmctld_resv *resv_ptr);
 
 static int  _post_resv_create(struct slurmctld_resv *resv_ptr);
@@ -127,7 +126,6 @@ static void _del_resv_rec(void *x)
 		for (i=0; i<resv_ptr->account_cnt; i++)
 			xfree(resv_ptr->account_list[i]);
 		xfree(resv_ptr->account_list);
-		xfree(resv_ptr->assoc_list);
 		xfree(resv_ptr->features);
 		xfree(resv_ptr->name);
 		if (resv_ptr->node_bitmap)
@@ -211,16 +209,6 @@ static bool _is_account_valid(char *account)
 	return true;
 }
 
-/* Set a association list based upon accounts and users */
-static void _set_assoc_list(struct slurmctld_resv *resv_ptr)
-{
-	/* FIXME: Need to add logic here to get assoc_list from slurmdbd
-	 * based upon resv_ptr->account_cnt and account_list plus
-	 * user_cnt and user_list */
-	xfree(resv_ptr->assoc_list);	/* clear for modify */
-	resv_ptr->assoc_list = xstrdup("TBD");	/* FOR TESTING ONLY */
-}
-
 /* Post reservation create */
 static int _post_resv_create(struct slurmctld_resv *resv_ptr)
 {
@@ -228,7 +216,6 @@ static int _post_resv_create(struct slurmctld_resv *resv_ptr)
 	acct_reservation_rec_t resv;
 	memset(&resv, 0, sizeof(acct_reservation_rec_t));
 	
-	resv.assocs = resv_ptr->assoc_list;
 	resv.cluster = slurmctld_cluster_name;
 	resv.cpus = resv_ptr->cpu_cnt;
 	resv.flags = resv_ptr->flags | RESERVE_FLAG_CREATE;
@@ -274,7 +261,6 @@ static int _post_resv_update(struct slurmctld_resv *resv_ptr)
 	acct_reservation_rec_t resv;
 	memset(&resv, 0, sizeof(acct_reservation_rec_t));
 
-	resv.assocs = resv_ptr->assoc_list;
 	resv.cluster = slurmctld_cluster_name;
 	resv.cpus = resv_ptr->cpu_cnt;
 	resv.flags = resv_ptr->flags | RESERVE_FLAG_MODIFY;
@@ -694,7 +680,6 @@ static void _pack_resv(struct slurmctld_resv *resv_ptr, Buf buffer,
 	packstr(resv_ptr->users,	buffer);
 
 	if (internal) {
-		packstr(resv_ptr->assoc_list,	buffer);
 		pack32(resv_ptr->cpu_cnt,	buffer);
 		pack32(resv_ptr->resv_id,	buffer);
 	}
@@ -913,7 +898,6 @@ extern int create_resv(reserve_request_msg_t *resv_desc_ptr)
 	resv_ptr->user_list	= user_list;
 	resv_desc_ptr->users 	= NULL;		/* Nothing left to free */
 	_set_cpu_cnt(resv_ptr);
-	_set_assoc_list(resv_ptr);
 
 	/* This needs to be done after all other setup is done. */
 	_post_resv_create(resv_ptr);
@@ -1094,7 +1078,6 @@ extern int update_resv(reserve_request_msg_t *resv_desc_ptr)
 
 fini:	xfree(old_node_list);
 	FREE_NULL_BITMAP(old_node_bitmap);
-	_set_assoc_list(resv_ptr);
 	_post_resv_update(resv_ptr);
 	last_resv_update = now;
 	schedule_resv_save();
@@ -1377,7 +1360,6 @@ static void _validate_all_reservations(void)
 			      resv_ptr->name);
 			list_delete_item(iter);
 		} else {
-			_set_assoc_list(resv_ptr);
 			tmp = strrchr(resv_ptr->name, '_');
 			if (tmp) {
 				res_num = atoi(tmp + 1);
@@ -1489,8 +1471,6 @@ extern int load_all_resv_state(int recover)
 		safe_unpackstr_xmalloc(&resv_ptr->users,&uint32_tmp, buffer);
 
 		/* Fields saved for internal use only (save state) */
-		safe_unpackstr_xmalloc(&resv_ptr->assoc_list,	
-				       &uint32_tmp,	buffer);
 		safe_unpack32(&resv_ptr->cpu_cnt,	buffer);
 		safe_unpack32(&resv_ptr->resv_id,	buffer);
 
diff --git a/src/slurmctld/slurmctld.h b/src/slurmctld/slurmctld.h
index 934fcd5d625f0b4e332d801c5e457287a181d1b9..307280e34a4683da4bd2c3c5f025fa3092cbca9f 100644
--- a/src/slurmctld/slurmctld.h
+++ b/src/slurmctld/slurmctld.h
@@ -309,7 +309,6 @@ typedef struct slurmctld_resv {
 	char *accounts;		/* names of accounts permitted to use	*/
 	int account_cnt;	/* count of accounts permitted to use	*/
 	char **account_list;	/* list of accounts permitted to use	*/
-	char *assoc_list;	/* list of associations			*/
 	uint32_t cpu_cnt;	/* number of reserved CPUs		*/
 	time_t end_time;	/* end time of reservation		*/
 	char *features;		/* required node features		*/