diff --git a/main/cdr.c b/main/cdr.c
index 62fcdf5dda..1c47e24173 100644
--- a/main/cdr.c
+++ b/main/cdr.c
@@ -4628,4 +4628,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.unload = unload_module,
 	.reload = reload_module,
 	.load_pri = AST_MODPRI_CORE,
+	.requires = "extconfig",
 );
diff --git a/main/cel.c b/main/cel.c
index 91c625a3c2..0ec728e558 100644
--- a/main/cel.c
+++ b/main/cel.c
@@ -1753,4 +1753,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.unload = unload_module,
 	.reload = reload_module,
 	.load_pri = AST_MODPRI_CORE,
+	.requires = "extconfig",
 );
diff --git a/main/dnsmgr.c b/main/dnsmgr.c
index c25b601b33..db13b1d23e 100644
--- a/main/dnsmgr.c
+++ b/main/dnsmgr.c
@@ -523,4 +523,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.unload = unload_module,
 	.reload = reload_module,
 	.load_pri = AST_MODPRI_CORE,
+	.requires = "extconfig",
 );
diff --git a/main/dsp.c b/main/dsp.c
index ea653d857b..433e61a4b8 100644
--- a/main/dsp.c
+++ b/main/dsp.c
@@ -2425,4 +2425,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.unload = unload_module,
 	.reload = reload_module,
 	.load_pri = AST_MODPRI_CORE,
+	.requires = "extconfig",
 );
diff --git a/main/enum.c b/main/enum.c
index 8b6d3fe759..344ae404d5 100644
--- a/main/enum.c
+++ b/main/enum.c
@@ -1023,4 +1023,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.unload = unload_module,
 	.reload = reload_module,
 	.load_pri = AST_MODPRI_CORE,
+	.requires = "extconfig",
 );
diff --git a/main/features.c b/main/features.c
index 3db6d397b4..8c2d9bc7dc 100644
--- a/main/features.c
+++ b/main/features.c
@@ -1174,4 +1174,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.unload = unload_module,
 	.reload = reload_features_config,
 	.load_pri = AST_MODPRI_CORE,
+	.requires = "extconfig",
 );
diff --git a/main/http.c b/main/http.c
index 55d10290ba..d7ec60a961 100644
--- a/main/http.c
+++ b/main/http.c
@@ -2314,4 +2314,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.unload = unload_module,
 	.reload = reload_module,
 	.load_pri = AST_MODPRI_CORE,
+	.requires = "extconfig",
 );
diff --git a/main/indications.c b/main/indications.c
index c9f02416f9..6a7414dcc4 100644
--- a/main/indications.c
+++ b/main/indications.c
@@ -1158,4 +1158,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.unload = unload_module,
 	.reload = reload_module,
 	.load_pri = AST_MODPRI_CORE,
+	.requires = "extconfig",
 );
diff --git a/main/loader.c b/main/loader.c
index d6837f8601..eb345b5eb5 100644
--- a/main/loader.c
+++ b/main/loader.c
@@ -569,6 +569,18 @@ void ast_module_register(const struct ast_module_info *info)
 	*((struct ast_module **) &(info->self)) = mod;
 }
 
+static int module_post_register(struct ast_module *mod)
+{
+	int res;
+
+	/* Split lists from mod->info. */
+	res  = ast_vector_string_split(&mod->requires, mod->info->requires, ",", 0, strcasecmp);
+	res |= ast_vector_string_split(&mod->optional_modules, mod->info->optional_modules, ",", 0, strcasecmp);
+	res |= ast_vector_string_split(&mod->enhances, mod->info->enhances, ",", 0, strcasecmp);
+
+	return res;
+}
+
 static void module_destroy(struct ast_module *mod)
 {
 	AST_VECTOR_CALLBACK_VOID(&mod->requires, ast_free);
@@ -1526,11 +1538,7 @@ static enum ast_module_load_result load_resource(const char *resource_name, unsi
 			return required ? AST_MODULE_LOAD_FAILURE : AST_MODULE_LOAD_DECLINE;
 		}
 
-		/* Split lists from mod->info. */
-		res  = ast_vector_string_split(&mod->requires, mod->info->requires, ",", 0, strcasecmp);
-		res |= ast_vector_string_split(&mod->optional_modules, mod->info->optional_modules, ",", 0, strcasecmp);
-		res |= ast_vector_string_split(&mod->enhances, mod->info->enhances, ",", 0, strcasecmp);
-		if (res) {
+		if (module_post_register(mod)) {
 			goto prestart_error;
 		}
 	}
@@ -1846,6 +1854,11 @@ static int loader_builtin_init(struct load_order *load_order)
 			continue;
 		}
 
+		/* Parse dependendencies from mod->info. */
+		if (module_post_register(mod)) {
+			return -1;
+		}
+
 		/* Built-in modules are not preloaded, most have an early load priority. */
 		if (!add_to_load_order(mod->resource, load_order, 0, 0, 1)) {
 			return -1;
diff --git a/main/logger.c b/main/logger.c
index 46d61ed336..8b4f678ca7 100644
--- a/main/logger.c
+++ b/main/logger.c
@@ -2381,6 +2381,7 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.support_level = AST_MODULE_SUPPORT_CORE,
 	.load = load_module,
 	.unload = unload_module,
+	/* This reload does not support realtime so it does not require "extconfig". */
 	.reload = reload_module,
 	.load_pri = 0,
 );
diff --git a/main/manager.c b/main/manager.c
index ab42432446..a0dcf6c861 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -9600,5 +9600,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.unload = unload_module,
 	.reload = reload_module,
 	.load_pri = AST_MODPRI_CORE,
-	.requires = "http",
+	.requires = "extconfig,acl,http",
 );
diff --git a/main/named_acl.c b/main/named_acl.c
index c4628216fd..8cf09c2a07 100644
--- a/main/named_acl.c
+++ b/main/named_acl.c
@@ -591,4 +591,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.unload = unload_module,
 	.reload = reload_module,
 	.load_pri = AST_MODPRI_CORE,
+	.requires = "extconfig",
 );
diff --git a/main/plc.c b/main/plc.c
index 369d285a58..20d5122203 100644
--- a/main/plc.c
+++ b/main/plc.c
@@ -296,4 +296,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.unload = unload_module,
 	.reload = reload_module,
 	.load_pri = AST_MODPRI_CORE,
+	.requires = "extconfig",
 );
diff --git a/main/sounds.c b/main/sounds.c
index 745b628051..e0cb33a53f 100644
--- a/main/sounds.c
+++ b/main/sounds.c
@@ -340,6 +340,7 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.support_level = AST_MODULE_SUPPORT_CORE,
 	.load = load_module,
 	.unload = unload_module,
+	/* This reload doesn't use config so this module doesn't require "extconfig". */
 	.reload = reload_module,
 	/* Load after the format modules to reduce processing during startup. */
 	.load_pri = AST_MODPRI_APP_DEPEND + 1,
diff --git a/main/udptl.c b/main/udptl.c
index f6cd3b90a1..7349d6aa4c 100644
--- a/main/udptl.c
+++ b/main/udptl.c
@@ -1420,4 +1420,5 @@ AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_
 	.unload = unload_module,
 	.reload = reload_module,
 	.load_pri = AST_MODPRI_CORE,
+	.requires = "extconfig",
 );