diff --git a/res/res_pjsip_mwi.c b/res/res_pjsip_mwi.c
index e625df77a723aaf0c208269c9cfa68eaf5bbdda7..3dfccef86bc3956645590d89246c9942abf31e5f 100644
--- a/res/res_pjsip_mwi.c
+++ b/res/res_pjsip_mwi.c
@@ -1278,7 +1278,9 @@ static struct ast_sorcery_observer global_observer = {
 
 static int reload(void)
 {
-	create_mwi_subscriptions();
+	if (!ast_sip_get_mwi_disable_initial_unsolicited()) {
+		create_mwi_subscriptions();
+	}
 	return 0;
 }
 
@@ -1301,13 +1303,13 @@ static int load_module(void)
 		ast_sip_unregister_subscription_handler(&mwi_handler);
 		return AST_MODULE_LOAD_DECLINE;
 	}
-	create_mwi_subscriptions();
 
 	ast_sorcery_observer_add(ast_sip_get_sorcery(), "contact", &mwi_contact_observer);
 	ast_sorcery_observer_add(ast_sip_get_sorcery(), "global", &global_observer);
 	ast_sorcery_reload_object(ast_sip_get_sorcery(), "global");
 
 	if (!ast_sip_get_mwi_disable_initial_unsolicited()) {
+		create_mwi_subscriptions();
 		if (ast_test_flag(&ast_options, AST_OPT_FLAG_FULLY_BOOTED)) {
 			ast_sip_push_task(NULL, send_initial_notify_all, NULL);
 		} else {