diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.h b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.h
index 64c1a20..f7935d4 100644
--- a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.h
+++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn.h
@@ -270,6 +270,7 @@ typedef struct sngisdn_span_data {
 	uint8_t			trace_flags;		/* TODO change to bit map of sngisdn_tracetype_t */
 	uint8_t			early_media_flags;	/* bit map of ftdm_sngisdn_early_media_opt_t */
 	uint8_t			overlap_dial;
+	uint8_t			exclusive_bchan;
 	uint8_t			setup_arb;
 	uint8_t			facility_ie_decode;
 	uint8_t			facility;
diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c
index 31a1a5b..00e0dcf 100644
--- a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c
+++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_cfg.c
@@ -421,6 +421,7 @@ ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_
 	signal_data->tei = 0;
 	signal_data->min_digits = 8;
 	signal_data->overlap_dial = SNGISDN_OPT_DEFAULT;
+	signal_data->exclusive_bchan = SNGISDN_OPT_TRUE;
 	signal_data->setup_arb = SNGISDN_OPT_DEFAULT;
 	signal_data->facility_ie_decode = SNGISDN_OPT_DEFAULT;
 	signal_data->ignore_cause_value = SNGISDN_OPT_DEFAULT;
@@ -495,6 +496,14 @@ ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_
 			} else {
 				ftdm_log(FTDM_LOG_ERROR, "Invalid value for parameter:%s:%s\n", var, val);
 			}
+		} else if (!strcasecmp(var, "exclusive_bchan")) {
+			if (!strcasecmp(val, "yes")) {
+				signal_data->exclusive_bchan = SNGISDN_OPT_TRUE;
+			} else if (!strcasecmp(val, "no")) {
+				signal_data->exclusive_bchan = SNGISDN_OPT_FALSE;
+			} else {
+				ftdm_log(FTDM_LOG_ERROR, "Invalid value for parameter:%s:%s\n", var, val);
+			}
 		} else if (!strcasecmp(var, "setup-arbitration")) {
 			parse_yesno(var, val, &signal_data->setup_arb);
 		} else if (!strcasecmp(var, "facility")) {
diff --git a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c
index 83dd070..c8aa906 100644
--- a/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c
+++ b/libs/freetdm/src/ftmod/ftmod_sangoma_isdn/ftmod_sangoma_isdn_support.c
@@ -1091,7 +1091,11 @@ ftdm_status_t set_chan_id_ie(ftdm_channel_t *ftdmchan, ChanId *chanId)
 
 	chanId->eh.pres = PRSNT_NODEF;
 	chanId->prefExc.pres = PRSNT_NODEF;
-	chanId->prefExc.val = IN_PE_EXCLSVE;
+	if (signal_data->exclusive_bchan == SNGISDN_OPT_TRUE) {
+		chanId->prefExc.val = IN_PE_EXCLSVE;
+	} else {
+		chanId->prefExc.val = IN_PE_PREFER;
+	}
 	chanId->dChanInd.pres = PRSNT_NODEF;
 	chanId->dChanInd.val = IN_DSI_NOTDCHAN;
 	chanId->intIdentPres.pres = PRSNT_NODEF;
