diff --git a/res/res_pjsip/pjsip_options.c b/res/res_pjsip/pjsip_options.c
index 662166c89b5e4aa5c5e412ebfabf445b19b8590a..8c22fd2fcf3d4e68960b798c0054b66fbf6bd559 100644
--- a/res/res_pjsip/pjsip_options.c
+++ b/res/res_pjsip/pjsip_options.c
@@ -1147,7 +1147,24 @@ static int qualify_and_schedule_cb_with_aor(void *obj, void *arg, int flags)
 
 static int qualify_and_schedule_cb_without_aor(void *obj, void *arg, int flags)
 {
-	qualify_and_schedule_contact((struct ast_sip_contact *) obj);
+	/*
+	 * These are really dynamic contacts. We need to retrieve the aor associated
+	 * with the contact since it's possible some of the aor's fields were updated
+	 * since last load.
+	 */
+	struct ast_sip_contact *contact = obj;
+	struct ast_sip_aor *aor = ast_sip_location_retrieve_aor(contact->aor);
+
+	if (aor) {
+		qualify_and_schedule_cb_with_aor(obj, aor, flags);
+		ao2_ref(aor, -1);
+	} else {
+		ast_log(LOG_WARNING, "Unable to locate AOR for contact '%s'. Keeping old "
+			"associated settings: frequency=%d, timeout=%f, authenticate=%s\n",
+			contact->uri, contact->qualify_frequency, contact->qualify_timeout,
+			contact->authenticate_qualify ? "yes" : "no");
+		qualify_and_schedule_contact(contact);
+	}
 
 	return 0;
 }