diff --git a/bsc/BSC_Tests_ASCI.ttcn b/bsc/BSC_Tests_ASCI.ttcn
index bfc66a9..70fcb4d 100644
--- a/bsc/BSC_Tests_ASCI.ttcn
+++ b/bsc/BSC_Tests_ASCI.ttcn
@@ -95,8 +95,9 @@
 	var boolean assign_res := false;
 	var boolean assign_fail := false;
 	/* Note: This timer is used to receive messages after the expected event.
-	 * After timeout, the outcome of the test is checked. */
-	timer T := 0.2;
+	 * After timeout, the outcome of the test is checked.
+	 * The timeout must be large enough, so all the messages pass before checking the outcome. */
+	timer T := 1.0;
 
 	/* Wait for the COORD ports to be connected. */
 	f_sleep(1.0);
@@ -155,6 +156,19 @@
 		if (g_pars.asci_test.vgcs_assign_ok) {
 			T.start;
 		}
+		if (g_pars.asci_test.vgcs_uplink_seized or
+		    g_pars.asci_test.vgcs_uplink_release) {
+			log("VGCS: sending Uplink Seized Cmd");
+			BSSAP.send(ts_BSSMAP_UplinkSeizedCmd(9, omit, omit, omit));
+		}
+		if (g_pars.asci_test.vgcs_uplink_release) {
+			log("VGCS: sending Uplink Release Cmd");
+			BSSAP.send(ts_BSSMAP_UplinkRelCmd(9));
+		}
+		if (g_pars.asci_test.vgcs_uplink_seized or
+		    g_pars.asci_test.vgcs_uplink_release) {
+			T.start;
+		}
 		repeat;
 		}
 	[] COORD.receive(COORD_VGCS_ASSIGN_FAIL) {
@@ -249,6 +263,24 @@
 		setverdict(pass);
 		return;
 	}
+	if (g_pars.asci_test.vgcs_uplink_seized) {
+		if (not uplink_busy) {
+			setverdict(fail, "VGCS: Uplink not busy as expected!");
+			return;
+		}
+		log("VGCS: Uplink established+released and uplink marked free as expected!");
+		setverdict(pass);
+		return;
+	}
+	if (g_pars.asci_test.vgcs_uplink_release) {
+		if (not uplink_free) {
+			setverdict(fail, "VGCS: Uplink not free as expected!");
+			return;
+		}
+		log("VGCS: Uplink established+released and uplink marked free as expected!");
+		setverdict(pass);
+		return;
+	}
 }
 
 /*
@@ -505,6 +537,50 @@
 	f_shutdown_helper();
 }
 
+testcase TC_vgcs_vbs_uplink_seized() runs on test_CT {
+	var MSC_ConnHdlr call_conn, chan_conn;
+	var TestHdlrParams pars := f_gen_test_hdlr_pars();
+
+	f_init(1, true);
+
+	pars.sccp_addr_msc := g_bssap[0].sccp_addr_own;
+	pars.sccp_addr_bsc := g_bssap[0].sccp_addr_peer;
+
+	pars.asci_test.vgcs_uplink_seized := true;
+
+	call_conn := f_start_handler(refers(f_tc_vgcs_vbs_setup), pars);
+	chan_conn := f_start_handler(refers(f_tc_asci_assignment), pars);
+	/* Connect COORD ports of both functions. The functions will delay before using them. */
+	connect(call_conn:COORD, chan_conn:COORD);
+
+	call_conn.done;
+	chan_conn.done;
+
+	f_shutdown_helper();
+}
+
+testcase TC_vgcs_vbs_uplink_release() runs on test_CT {
+	var MSC_ConnHdlr call_conn, chan_conn;
+	var TestHdlrParams pars := f_gen_test_hdlr_pars();
+
+	f_init(1, true);
+
+	pars.sccp_addr_msc := g_bssap[0].sccp_addr_own;
+	pars.sccp_addr_bsc := g_bssap[0].sccp_addr_peer;
+
+	pars.asci_test.vgcs_uplink_release := true;
+
+	call_conn := f_start_handler(refers(f_tc_vgcs_vbs_setup), pars);
+	chan_conn := f_start_handler(refers(f_tc_asci_assignment), pars);
+	/* Connect COORD ports of both functions. The functions will delay before using them. */
+	connect(call_conn:COORD, chan_conn:COORD);
+
+	call_conn.done;
+	chan_conn.done;
+
+	f_shutdown_helper();
+}
+
 control {
 	execute( TC_vgcs_vbs_setup_only() );
 	execute( TC_vgcs_vbs_assignment() );
@@ -512,6 +588,8 @@
 	execute( TC_vgcs_vbs_talker_req() );
 	execute( TC_vgcs_vbs_talker_est() );
 	execute( TC_vgcs_vbs_talker_rel() );
+	execute( TC_vgcs_vbs_uplink_seized() );
+	execute( TC_vgcs_vbs_uplink_release() );
 }
 
 
