diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index c3275e1..00995bf 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -80,6 +80,8 @@
 	/* array of per-BTS RSL test ports */
 	port IPA_RSL_PT IPA_RSL[NUM_BTS];
 	port IPA_CODEC_PT IPA; /* Required for compilation of TC_rsl_unknown_unit_id() */
+	/* CTRL muxed over IPA in SCCPlite conn BSC<->MSC (or BSC-NAT) */
+	port IPA_CTRL_PT SCCPLITE_IPA_CTRL;
 
 	var MGCP_Emulation_CT vc_MGCP;
 	port TELNETasp_PT BSCVTY;
@@ -350,6 +352,7 @@
 		var RanOps ranops := MSC_RanOps;
 		ranops.use_osmux := g_osmux_enabled;
 		f_ran_adapter_init(g_bssap, mp_bssap_cfg, "VirtMSC", ranops);
+		connect(self:SCCPLITE_IPA_CTRL, g_bssap.vc_RAN:CTRL_CLIENT);
 		f_ran_adapter_start(g_bssap);
 	} else {
 		f_ran_adapter_init(g_bssap, mp_bssap_cfg, "VirtMSC", omit);
@@ -1204,6 +1207,32 @@
 	setverdict(pass);
 }
 
+/* Verify that Upon receival of SET "location", BSC forwards a TRAP
+  "location-state" over the SCCPlite IPA conn */
+testcase TC_ctrl_location() runs on test_CT {
+	var MSC_ConnHdlr vc_conn;
+	var integer bts_nr := 0;
+
+	f_init(1, true);
+	f_sleep(1.0);
+
+	f_ctrl_set_bts(IPA_CTRL, bts_nr, "location", "1234567,fix3d,0.340000,0.560000,0.780000");
+	f_ctrl_exp_trap(SCCPLITE_IPA_CTRL, "bts." & int2str(bts_nr) & ".location-state",
+			"1234567,fix3d,0.340000,0.560000,0.780000,operational,unlocked,on,001,01");
+
+	f_ctrl_set(SCCPLITE_IPA_CTRL, "rf_locked", "1");
+	f_sleep(2.0);
+
+	f_ctrl_set_bts(IPA_CTRL, bts_nr, "location", "1234888,fix3d,0.350000,0.570000,0.790000");
+	f_ctrl_exp_trap(SCCPLITE_IPA_CTRL, "bts." & int2str(bts_nr) & ".location-state",
+			"1234888,fix3d,0.350000,0.570000,0.790000,operational,locked,off,001,01");
+
+	/* should match the one from  config */
+	f_ctrl_set(SCCPLITE_IPA_CTRL, "rf_locked", "0");
+
+	setverdict(pass);
+}
+
 function f_bssap_tx_ud(template PDU_BSSAP bssap) runs on test_CT {
 	BSSAP.send(ts_BSSAP_UNITDATA_req(g_bssap.sccp_addr_peer, g_bssap.sccp_addr_own, bssap));
 }
@@ -3987,6 +4016,9 @@
 	execute( TC_ctrl_msc_connection_status() );
 	execute( TC_ctrl_msc0_connection_status() );
 	execute( TC_ctrl() );
+	if (mp_bssap_cfg.transport == BSSAP_TRANSPORT_SCCPlite_SERVER) {
+		execute( TC_ctrl_location() );
+	}
 
 	/* RSL DCHAN Channel ACtivation / Deactivation */
 	execute( TC_chan_act_noreply() );
