diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h
index 9a4dca3147..7ab1af53f1 100644
--- a/src/mod/endpoints/mod_sofia/mod_sofia.h
+++ b/src/mod/endpoints/mod_sofia/mod_sofia.h
@@ -738,6 +738,8 @@ struct sofia_profile {
 	char *tls_verify_in_subjects_str;
 	su_strlst_t *tls_verify_in_subjects;
 	uint32_t sip_force_expires;
+	uint32_t sip_force_expires_min;
+	uint32_t sip_force_expires_max;
 	uint32_t sip_expires_max_deviation;
 	uint32_t sip_expires_late_margin;
 	uint32_t sip_subscription_max_deviation;
diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c
index d7e58fc218..573ab9dacf 100644
--- a/src/mod/endpoints/mod_sofia/sofia.c
+++ b/src/mod/endpoints/mod_sofia/sofia.c
@@ -4260,6 +4260,8 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name)
 					profile->dtmf_duration = 100;
 					profile->rtp_digit_delay = 40;
 					profile->sip_force_expires = 0;
+					profile->sip_force_expires_min = 0;
+					profile->sip_force_expires_max = 0;
 					profile->sip_expires_max_deviation = 0;
 					profile->sip_expires_late_margin = 60;
 					profile->sip_subscription_max_deviation = 0;
@@ -5514,6 +5516,20 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name)
 						} else {
 							profile->sip_expires_late_margin = 60;
 						}
+					} else if (!strcasecmp(var, "sip-force-expires-min")) {
+						int32_t sip_force_expires_min = atoi(val);
+						if (sip_force_expires_min >= 0) {
+							profile->sip_force_expires_min = sip_force_expires_min;
+						} else {
+							profile->sip_force_expires_min = 0;
+						}
+					} else if (!strcasecmp(var, "sip-force-expires-max")) {
+						int32_t sip_force_expires_max = atoi(val);
+						if (sip_force_expires_max >= 0) {
+							profile->sip_force_expires_max = sip_force_expires_max;
+						} else {
+							profile->sip_force_expires_max = 0;
+						}
 					} else if (!strcasecmp(var, "sip-force-expires")) {
 						int32_t sip_force_expires = atoi(val);
 						if (sip_force_expires >= 0) {
diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c
index a4ee3c080a..7f7d8efba3 100644
--- a/src/mod/endpoints/mod_sofia/sofia_reg.c
+++ b/src/mod/endpoints/mod_sofia/sofia_reg.c
@@ -1683,6 +1683,18 @@ uint8_t sofia_reg_handle_register_token(nua_t *nua, sofia_profile_t *profile, nu
 				}
 			}
 
+			if ( (( exp_var = atoi(switch_event_get_header_nil(*v_event, "sip-force-expires-min")) )) ||
+			     (( exp_var = profile->sip_force_expires_min )) ) {
+				if ( (exp_var > 0) && (exptime < exp_var) ) {
+					exptime = exp_var;
+				}
+			}
+			if ( (( exp_var = atoi(switch_event_get_header_nil(*v_event, "sip-force-expires-max")) )) ||
+			     (( exp_var = profile->sip_force_expires_max )) ) {
+				if ( (exp_var > 0) && (exptime > exp_var) ) {
+					exptime = exp_var;
+				}
+			}
 			if ( (( exp_var = atoi(switch_event_get_header_nil(*v_event, "sip-force-expires")) )) ||
 			     (( exp_var = profile->sip_force_expires )) ) {
 				if (exp_var > 0) {