diff --git a/src/common/slurm_accounting_storage.c b/src/common/slurm_accounting_storage.c
index 70fa1635ccb7c9d1048c0209b196bca9309246e0..2b4c4bb675c68231fb29bed043ec18d415a159cb 100644
--- a/src/common/slurm_accounting_storage.c
+++ b/src/common/slurm_accounting_storage.c
@@ -161,8 +161,7 @@ typedef struct slurm_acct_storage_ops {
 				    time_t event_time);
 	int  (*cluster_cpus)      (void *db_conn, char *cluster_nodes,
 				   uint32_t cpus, time_t event_time);
-	int  (*register_ctld)      (void *db_conn, uint16_t port,
-				    uint16_t dims, uint32_t flags);
+	int  (*register_ctld)      (void *db_conn, uint16_t port);
 	int  (*job_start)          (void *db_conn, struct job_record *job_ptr);
 	int  (*job_complete)       (void *db_conn,
 				    struct job_record *job_ptr);
@@ -841,13 +840,12 @@ extern int clusteracct_storage_g_cluster_cpus(void *db_conn,
 }
 
 
-extern int clusteracct_storage_g_register_ctld(void *db_conn, uint16_t port,
-					       uint16_t dims, uint32_t flags)
+extern int clusteracct_storage_g_register_ctld(void *db_conn, uint16_t port)
 {
 	if (slurm_acct_storage_init(NULL) < 0)
 		return SLURM_ERROR;
  	return (*(g_acct_storage_context->ops.register_ctld))
-		(db_conn, port, dims, flags);
+		(db_conn, port);
 }
 
 /*
diff --git a/src/common/slurm_accounting_storage.h b/src/common/slurm_accounting_storage.h
index 0de9cce8adb24ea81b426ce9abda1c1caf642458..c171a4d550ebe7764eac2665704dfb6f6c19934d 100644
--- a/src/common/slurm_accounting_storage.h
+++ b/src/common/slurm_accounting_storage.h
@@ -490,8 +490,7 @@ extern int clusteracct_storage_g_cluster_cpus(void *db_conn,
 					      uint32_t cpus,
 					      time_t event_time);
 
-extern int clusteracct_storage_g_register_ctld(void *db_conn, uint16_t port,
-					       uint16_t dims, uint32_t flags);
+extern int clusteracct_storage_g_register_ctld(void *db_conn, uint16_t port);
 
 /*
  * load into the storage the start of a job
diff --git a/src/plugins/accounting_storage/filetxt/accounting_storage_filetxt.c b/src/plugins/accounting_storage/filetxt/accounting_storage_filetxt.c
index 88694a4fb693eb5a48fcc65d63524728624eabd7..a8962790e57ba192475ee0853c471423fcff3fde 100644
--- a/src/plugins/accounting_storage/filetxt/accounting_storage_filetxt.c
+++ b/src/plugins/accounting_storage/filetxt/accounting_storage_filetxt.c
@@ -500,9 +500,7 @@ extern int clusteracct_storage_p_node_up(void *db_conn,
 	return SLURM_SUCCESS;
 }
 
-extern int clusteracct_storage_p_register_ctld(void *db_conn,
-					       uint16_t port, uint16_t dims,
-					       uint32_t flags)
+extern int clusteracct_storage_p_register_ctld(void *db_conn, uint16_t port)
 {
 	return SLURM_SUCCESS;
 }
diff --git a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
index 3835d0c2d0301896c5169dd7ce4c6feb17ee4070..fa9a0804c138953a59fb16883f7483accedadb52 100644
--- a/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
+++ b/src/plugins/accounting_storage/mysql/accounting_storage_mysql.c
@@ -2283,8 +2283,7 @@ extern int clusteracct_storage_p_node_up(mysql_conn_t *mysql_conn,
  * assumes some things like rpc_version.
  */
 extern int clusteracct_storage_p_register_ctld(mysql_conn_t *mysql_conn,
-					       uint16_t port,
-					       uint16_t dims, uint32_t flags)
+					       uint16_t port)
 {
 	if(!mysql_conn->cluster_name) {
 		error("%s:%d no cluster name", THIS_FILE, __LINE__);
@@ -2292,7 +2291,7 @@ extern int clusteracct_storage_p_register_ctld(mysql_conn_t *mysql_conn,
 	}
 
 	return as_mysql_register_ctld(
-		mysql_conn, mysql_conn->cluster_name, port, dims, flags);
+		mysql_conn, mysql_conn->cluster_name, port);
 }
 
 extern int clusteracct_storage_p_cluster_cpus(mysql_conn_t *mysql_conn,
diff --git a/src/plugins/accounting_storage/mysql/as_mysql_cluster.c b/src/plugins/accounting_storage/mysql/as_mysql_cluster.c
index 3f48747656c90dcb6e5ae2ed5a26d222b98f2965..3a1e16955373d5f5049bfaa575ad13747ab956d1 100644
--- a/src/plugins/accounting_storage/mysql/as_mysql_cluster.c
+++ b/src/plugins/accounting_storage/mysql/as_mysql_cluster.c
@@ -41,6 +41,7 @@
 #include "as_mysql_cluster.h"
 #include "as_mysql_usage.h"
 #include "as_mysql_wckey.h"
+#include "src/common/node_select.h"
 
 extern int as_mysql_add_clusters(mysql_conn_t *mysql_conn, uint32_t uid,
 			      List cluster_list)
@@ -1059,13 +1060,13 @@ extern int as_mysql_node_up(mysql_conn_t *mysql_conn,
 }
 
 extern int as_mysql_register_ctld(mysql_conn_t *mysql_conn,
-				  char *cluster, uint16_t port,
-				  uint16_t dims, uint32_t flags)
+				  char *cluster, uint16_t port)
 {
 	char *query = NULL;
 	char *address = NULL;
 	char hostname[255];
 	time_t now = time(NULL);
+	uint32_t flags = slurmdb_setup_cluster_flags();
 
 	if(slurmdbd_conf)
 		fatal("clusteracct_storage_g_register_ctld "
@@ -1091,17 +1092,17 @@ extern int as_mysql_register_ctld(mysql_conn_t *mysql_conn,
 	query = xstrdup_printf(
 		"update %s set deleted=0, mod_time=%d, "
 		"control_host='%s', control_port=%u, rpc_version=%d, "
-		"dimensions=%d, flags=%d where name='%s';",
-		cluster_table, now, address, port, dims, flags,
-		SLURMDBD_VERSION,
-		cluster);
+		"dimensions=%d, flags=%d, plugin_id_select=%d where name='%s';",
+		cluster_table, now, address, port, SLURMDBD_VERSION,
+		SYSTEM_DIMENSIONS, flags, select_get_plugin_id(), cluster);
 	xstrfmtcat(query,
 		   "insert into %s "
 		   "(timestamp, action, name, actor, info) "
-		   "values (%d, %d, '%s', '%s', '%s %u %u %u');",
+		   "values (%d, %d, '%s', '%s', '%s %u %u %u %u');",
 		   txn_table,
 		   now, DBD_MODIFY_CLUSTERS, cluster,
-		   slurmctld_conf.slurm_user_name, address, port, dims, flags);
+		   slurmctld_conf.slurm_user_name, address, port,
+		   SYSTEM_DIMENSIONS, flags, select_get_plugin_id());
 
 	debug3("%d(%s:%d) query\n%s",
 	       mysql_conn->conn, THIS_FILE, __LINE__, query);
diff --git a/src/plugins/accounting_storage/mysql/as_mysql_cluster.h b/src/plugins/accounting_storage/mysql/as_mysql_cluster.h
index 278a88db0ff6793c7edc653f954685f97b58337d..8495c945f6928b2dffb492a31457269204ac8c82 100644
--- a/src/plugins/accounting_storage/mysql/as_mysql_cluster.h
+++ b/src/plugins/accounting_storage/mysql/as_mysql_cluster.h
@@ -67,8 +67,7 @@ extern int as_mysql_node_up(mysql_conn_t *mysql_conn,
 			    time_t event_time);
 
 extern int as_mysql_register_ctld(mysql_conn_t *mysql_conn,
-				  char *cluster, uint16_t port,
-				  uint16_t dims, uint32_t flags);
+				  char *cluster, uint16_t port);
 
 extern int as_mysql_cluster_cpus(mysql_conn_t *mysql_conn,
 				 char *cluster_nodes, uint32_t cpus,
diff --git a/src/plugins/accounting_storage/none/accounting_storage_none.c b/src/plugins/accounting_storage/none/accounting_storage_none.c
index e809b92a34c54f1f0706f267db6e2be4f16250c6..7bdf8414f67e5c8a78d4050ab18b4dcea505d02d 100644
--- a/src/plugins/accounting_storage/none/accounting_storage_none.c
+++ b/src/plugins/accounting_storage/none/accounting_storage_none.c
@@ -346,9 +346,7 @@ extern int clusteracct_storage_p_node_up(void *db_conn,
 	return SLURM_SUCCESS;
 }
 
-extern int clusteracct_storage_p_register_ctld(void *db_conn,
-					       uint16_t port, uint16_t dims,
-					       uint32_t flags)
+extern int clusteracct_storage_p_register_ctld(void *db_conn, uint16_t port)
 {
 	return SLURM_SUCCESS;
 }
diff --git a/src/plugins/accounting_storage/pgsql/accounting_storage_pgsql.c b/src/plugins/accounting_storage/pgsql/accounting_storage_pgsql.c
index 68f404cf1b242ff71c30d518303759567ab6c0f1..6981e868c7c85770b8cc76e1fce71a7bd4eec891 100644
--- a/src/plugins/accounting_storage/pgsql/accounting_storage_pgsql.c
+++ b/src/plugins/accounting_storage/pgsql/accounting_storage_pgsql.c
@@ -564,8 +564,7 @@ extern int clusteracct_storage_p_node_up(pgsql_conn_t *pg_conn,
 }
 
 extern int clusteracct_storage_p_register_ctld(pgsql_conn_t *pg_conn,
-					       uint16_t port, uint16_t dims,
-					       uint32_t flags)
+					       uint16_t port)
 {
 	if(!pg_conn->cluster_name) {
 		error("%s:%d no cluster name", THIS_FILE, __LINE__);
diff --git a/src/plugins/accounting_storage/pgsql/accounting_storage_pgsql.h b/src/plugins/accounting_storage/pgsql/accounting_storage_pgsql.h
index 5584a5983e890e0923996b61dc87572f3d42e040..589acca966386c6a1345248ef90bdf0b198f094c 100644
--- a/src/plugins/accounting_storage/pgsql/accounting_storage_pgsql.h
+++ b/src/plugins/accounting_storage/pgsql/accounting_storage_pgsql.h
@@ -143,8 +143,7 @@ extern int clusteracct_storage_p_node_up(pgsql_conn_t *pg_conn,
 					 struct node_record *node_ptr,
 					 time_t event_time);
 extern int clusteracct_storage_p_register_ctld(pgsql_conn_t *pg_conn,
-					       uint16_t port, uint16_t dims,
-					       uint32_t flags);
+					       uint16_t port);
 extern int clusteracct_storage_p_cluster_cpus(pgsql_conn_t *pg_conn,
 					       char *cluster_nodes,
 					       uint32_t cpus,
diff --git a/src/plugins/accounting_storage/slurmdbd/accounting_storage_slurmdbd.c b/src/plugins/accounting_storage/slurmdbd/accounting_storage_slurmdbd.c
index e8d7cb2912a3cb4a09696befea4fd21a872890f3..4e7560e7311576600f72cf8d06033cab6518a283 100644
--- a/src/plugins/accounting_storage/slurmdbd/accounting_storage_slurmdbd.c
+++ b/src/plugins/accounting_storage/slurmdbd/accounting_storage_slurmdbd.c
@@ -1821,8 +1821,7 @@ extern int clusteracct_storage_p_cluster_cpus(void *db_conn,
 	return rc;
 }
 
-extern int clusteracct_storage_p_register_ctld(void *db_conn, uint16_t port,
-					       uint16_t dims, uint32_t flags)
+extern int clusteracct_storage_p_register_ctld(void *db_conn, uint16_t port)
 {
 	slurmdbd_msg_t msg;
 	dbd_register_ctld_msg_t req;
@@ -1831,8 +1830,8 @@ extern int clusteracct_storage_p_register_ctld(void *db_conn, uint16_t port,
 	memset(&req, 0, sizeof(dbd_register_ctld_msg_t));
 
 	req.port         = port;
-	req.dimensions   = dims;
-	req.flags        = flags;
+	req.dimensions   = SYSTEM_DIMENSIONS;
+	req.flags        = slurmdb_setup_cluster_flags();
 	req.plugin_id_select = select_get_plugin_id();
 
 	msg.msg_type     = DBD_REGISTER_CTLD;
diff --git a/src/sacctmgr/cluster_functions.c b/src/sacctmgr/cluster_functions.c
index 53f95facdc8d9539a2a3a2b0f59227079de90e4f..002cc45d97f097e809e41ea996aebd7ddfcb21ae 100644
--- a/src/sacctmgr/cluster_functions.c
+++ b/src/sacctmgr/cluster_functions.c
@@ -355,9 +355,11 @@ extern int sacctmgr_add_cluster(int argc, char *argv[])
 		cluster = xmalloc(sizeof(slurmdb_cluster_rec_t));
 
 		list_append(cluster_list, cluster);
+		cluster->flags = NO_VAL;
 		cluster->name = xstrdup(name);
 		cluster->classification = class;
-		cluster->root_assoc = xmalloc(sizeof(slurmdb_association_rec_t));
+		cluster->root_assoc =
+			xmalloc(sizeof(slurmdb_association_rec_t));
 		slurmdb_init_association_rec(cluster->root_assoc);
 		printf("  Name          = %s\n", cluster->name);
 		if(cluster->classification)
@@ -842,7 +844,8 @@ extern int sacctmgr_modify_cluster(int argc, char *argv[])
 {
 	int rc = SLURM_SUCCESS;
 	int i=0;
-	slurmdb_association_rec_t *assoc = xmalloc(sizeof(slurmdb_association_rec_t));
+	slurmdb_association_rec_t *assoc =
+		xmalloc(sizeof(slurmdb_association_rec_t));
 	slurmdb_association_cond_t *assoc_cond =
 		xmalloc(sizeof(slurmdb_association_cond_t));
 	int cond_set = 0, rec_set = 0, set = 0;
@@ -975,6 +978,7 @@ extern int sacctmgr_modify_cluster(int argc, char *argv[])
 		cluster_cond.cluster_list = assoc_cond->cluster_list;
 
 		cluster_rec.classification = class_rec;
+		cluster_rec.flags = NO_VAL;
 
 		ret_list = acct_storage_g_modify_clusters(
 			db_conn, my_uid, &cluster_cond, &cluster_rec);
diff --git a/src/sacctmgr/file_functions.c b/src/sacctmgr/file_functions.c
index 15abcd1be7ae26849e68c94f124f5a11af803067..cbd3fa0fb15c2344b494b5fd4306ab629acea4c5 100644
--- a/src/sacctmgr/file_functions.c
+++ b/src/sacctmgr/file_functions.c
@@ -1194,6 +1194,8 @@ static int _mod_cluster(sacctmgr_file_opts_t *file_opts,
 	memset(&mod_cluster, 0, sizeof(slurmdb_cluster_rec_t));
 	memset(&cluster_cond, 0, sizeof(slurmdb_cluster_cond_t));
 
+	mod_cluster.flags = NO_VAL;
+
 	if(file_opts->classification
 	   && (file_opts->classification != cluster->classification)) {
 		xstrfmtcat(my_info,
@@ -2245,10 +2247,11 @@ extern void load_sacctmgr_cfg_file (int argc, char *argv[])
 			if(!(cluster = sacctmgr_find_cluster_from_list(
 				     curr_cluster_list, cluster_name))) {
 				List temp_assoc_list = list_create(NULL);
-				List cluster_list =
-					list_create(slurmdb_destroy_cluster_rec);
+				List cluster_list = list_create(
+					slurmdb_destroy_cluster_rec);
 
-				cluster = xmalloc(sizeof(slurmdb_cluster_rec_t));
+				cluster = xmalloc(
+					sizeof(slurmdb_cluster_rec_t));
 				list_append(cluster_list, cluster);
 				cluster->name = xstrdup(cluster_name);
 				if(file_opts->classification) {
diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c
index 6d76440e63fb11087cdbe7f4308e4a293ad040ad..347d0553b8609e52e6adf6c73f6909828560825b 100644
--- a/src/slurmctld/controller.c
+++ b/src/slurmctld/controller.c
@@ -159,7 +159,6 @@ int association_based_accounting = 0;
 bool ping_nodes_now = false;
 int      cluster_cpus = 0;
 int   with_slurmdbd = 0;
-uint32_t cluster_flags = 0;
 
 /* Local variables */
 static int	daemonize = DEFAULT_DAEMONIZE;
@@ -221,7 +220,6 @@ int main(int argc, char *argv[])
 		WRITE_LOCK, WRITE_LOCK, WRITE_LOCK, WRITE_LOCK };
 	assoc_init_args_t assoc_init_arg;
 	pthread_t assoc_cache_thread;
-	cluster_flags = slurmdb_setup_cluster_flags();
 
 	/*
 	 * Establish initial configuration
@@ -490,8 +488,7 @@ int main(int argc, char *argv[])
 
 		clusteracct_storage_g_register_ctld(
 			acct_db_conn,
-			slurmctld_conf.slurmctld_port,
-			SYSTEM_DIMENSIONS, cluster_flags);
+			slurmctld_conf.slurmctld_port);
 
 		_accounting_cluster_ready();
 
@@ -1653,8 +1650,7 @@ static int _shutdown_backup_controller(int wait_time)
 			 * but just temporarily became non-responsive */
 			clusteracct_storage_g_register_ctld(
 				acct_db_conn,
-				slurmctld_conf.slurmctld_port,
-				SYSTEM_DIMENSIONS, cluster_flags);
+				slurmctld_conf.slurmctld_port);
 		}
 	} else {
 		error("_shutdown_backup_controller: %s", slurm_strerror(rc));