diff --git a/res/res_sip/sip_options.c b/res/res_sip/sip_options.c
index 4f21238b7ab23a070c7734fc1edc66c7febddff3..ca5f3bf72cfc1c6465d143a181184b8a28ea9210 100644
--- a/res/res_sip/sip_options.c
+++ b/res/res_sip/sip_options.c
@@ -688,11 +688,6 @@ int ast_sip_initialize_sorcery_qualify(struct ast_sorcery *sorcery)
 	ast_sorcery_object_field_register(sorcery, CONTACT_STATUS, "rtt", "0", OPT_UINT_T,
 					  1, FLDSET(struct ast_sip_contact_status, rtt));
 
-	if (ast_sorcery_observer_add(sorcery, "contact", &contact_observer)) {
-		ast_log(LOG_WARNING, "Unable to add contact observer\n");
-		return -1;
-	}
-
 	return 0;
 }
 
@@ -777,6 +772,11 @@ int ast_res_sip_init_options_handling(int reload)
 		return -1;
 	}
 
+	if (ast_sorcery_observer_add(ast_sip_get_sorcery(), "contact", &contact_observer)) {
+		ast_log(LOG_WARNING, "Unable to add contact observer\n");
+		return -1;
+	}
+
 	qualify_and_schedule_permanent();
 	ast_cli_register_multiple(cli_options, ARRAY_LEN(cli_options));