diff --git a/mgw/MGCP_Test.ttcn b/mgw/MGCP_Test.ttcn
index 07086c9..21460d0 100644
--- a/mgw/MGCP_Test.ttcn
+++ b/mgw/MGCP_Test.ttcn
@@ -334,10 +334,60 @@
 		}
 	}
 
+	function extract_conn_id(MgcpResponse resp) return MgcpConnectionId {
+		var integer i;
+		for (i := 0; i < lengthof(resp.params); i := i + 1) {
+			var MgcpParameter par := resp.params[i];
+			if (par.code == "I") {
+				return str2hex(par.val);
+			}
+		}
+		setverdict(fail);
+		return '00000000'H;
+	}
+
+	/* Send DLCX and expect OK response */
+	function f_dlcx_ok(MgcpEndpoint ep, MgcpCallId call_id,
+			   template MgcpConnectionId conn_id := omit) runs on dummy_CT {
+		var template MgcpCommand cmd;
+		var MgcpResponse resp;
+		var template MgcpResponse rtmpl := {
+			line := {
+				code := "200",
+				string := "OK"
+			},
+			params := *,
+			sdp := *
+		};
+		cmd := ts_DLCX(get_next_trans_id(), ep, call_id);
+		/* FIXME: add conn_id if present */
+		resp := mgcp_transceive_mgw(cmd, rtmpl);
+	}
+
+	/* Send DLCX and accept any response */
+	function f_dlcx_ignore(MgcpEndpoint ep, MgcpCallId call_id,
+				template MgcpConnectionId conn_id := omit) runs on dummy_CT {
+		var template MgcpCommand cmd;
+		var MgcpResponse resp;
+		var template MgcpResponse rtmpl := {
+			line := {
+				code := ?,
+				string := ?
+			},
+			params := *,
+			sdp := *
+		};
+		cmd := ts_DLCX(get_next_trans_id(), ep, call_id);
+		/* FIXME: add conn_id if present */
+		resp := mgcp_transceive_mgw(cmd, rtmpl);
+	}
+
 	/* test valid CRCX without SDP */
 	testcase TC_crcx() runs on dummy_CT {
 		var template MgcpCommand cmd;
 		var MgcpResponse resp;
+		var MgcpEndpoint ep := "2@mgw";
+		var MgcpCallId call_id := '1234'H;
 		var template MgcpResponse rtmpl := {
 			line := {
 				code := "200",
@@ -349,8 +399,14 @@
 
 		f_init();
 
-		cmd := ts_CRCX(get_next_trans_id(), "2@mgw", "sendrecv", '1234'H);
+		/* create the connection on the MGW */
+		cmd := ts_CRCX(get_next_trans_id(), ep, "recvonly", call_id);
 		resp := mgcp_transceive_mgw(cmd, rtmpl);
+		extract_conn_id(resp);
+
+		/* clean-up */
+		f_dlcx_ok(ep, call_id);
+
 		setverdict(pass);
 	}
 
@@ -358,13 +414,17 @@
 	testcase TC_crcx_unsupp_mode() runs on dummy_CT {
 		var template MgcpCommand cmd;
 		var MgcpResponse resp;
+		var MgcpEndpoint ep := "2@mgw";
+		var MgcpCallId call_id := '1233'H;
 		var template MgcpResponse rtmpl := tr_MgcpResp_Err("517");
 
 		f_init();
 
-		cmd := ts_CRCX(get_next_trans_id(), "2@mgw", "netwtest", '1234'H);
+		cmd := ts_CRCX(get_next_trans_id(), ep, "netwtest", call_id);
 		resp := mgcp_transceive_mgw(cmd, rtmpl);
 		setverdict(pass);
+
+		f_dlcx_ignore(ep, call_id);
 	}
 
 	/* test CRCX with early bi-directional mode, expect 527 as
@@ -373,110 +433,134 @@
 	testcase TC_crcx_early_bidir_mode() runs on dummy_CT {
 		var template MgcpCommand cmd;
 		var MgcpResponse resp;
+		var MgcpEndpoint ep := "2@mgw";
+		var MgcpCallId call_id := '1232'H;
 		var template MgcpResponse rtmpl := tr_MgcpResp_Err("527");
 
 		f_init();
 
-		cmd := ts_CRCX(get_next_trans_id(), "2@mgw", "sendrecv", '1234'H);
+		cmd := ts_CRCX(get_next_trans_id(), ep, "sendrecv", call_id);
 		resp := mgcp_transceive_mgw(cmd, rtmpl);
 		setverdict(pass);
+
+		f_dlcx_ignore(ep, call_id);
 	}
 
 	/* test CRCX with unsupported Parameters */
 	testcase TC_crcx_unsupp_param() runs on dummy_CT {
 		var template MgcpCommand cmd;
 		var MgcpResponse resp;
+		var MgcpEndpoint ep := "2@mgw";
+		var MgcpCallId call_id := '1231'H;
 		var template MgcpResponse rtmpl := tr_MgcpResp_Err("539");
 
 		f_init();
 
-		cmd := ts_CRCX(get_next_trans_id(), "2@mgw", "recvonly", '1234'H);
+		cmd := ts_CRCX(get_next_trans_id(), ep, "recvonly", call_id);
 		cmd.params := {
 			t_MgcpParConnMode("recvonly"),
-			ts_MgcpParCallId('1234'H),
+			ts_MgcpParCallId(call_id),
 			t_MgcpParLocConnOpt("p:20"),
 			/* osmo-bsc_mgcp/mgw doesn't implement notifications */
 			{ "N", "foobar" }
 		}
 		resp := mgcp_transceive_mgw(cmd, rtmpl);
 		setverdict(pass);
+
+		f_dlcx_ignore(ep, call_id);
 	}
 
 	/* test CRCX with missing CallId */
 	testcase TC_crcx_missing_callid() runs on dummy_CT {
 		var template MgcpCommand cmd;
 		var MgcpResponse resp;
+		var MgcpEndpoint ep := "2@mgw";
 		var template MgcpResponse rtmpl := tr_MgcpResp_Err("400");
 
 		f_init();
 
-		cmd := ts_CRCX(get_next_trans_id(), "2@mgw", "recvonly", '1234'H);
+		cmd := ts_CRCX(get_next_trans_id(), ep, "recvonly", '1230'H);
 		cmd.params := {
 			t_MgcpParConnMode("recvonly"),
 			t_MgcpParLocConnOpt("p:20")
 		}
 		resp := mgcp_transceive_mgw(cmd, rtmpl);
 		setverdict(pass);
+
 	}
 
 	/* test CRCX with missing Mode */
 	testcase TC_crcx_missing_mode() runs on dummy_CT {
 		var template MgcpCommand cmd;
 		var MgcpResponse resp;
+		var MgcpEndpoint ep := "2@mgw";
+		var MgcpCallId call_id := '1229'H;
 		var template MgcpResponse rtmpl := tr_MgcpResp_Err("400");
 
 		f_init();
 
-		cmd := ts_CRCX(get_next_trans_id(), "2@mgw", "recvonly", '1234'H);
+		cmd := ts_CRCX(get_next_trans_id(), ep, "recvonly", call_id);
 		cmd.params := {
-			ts_MgcpParCallId('1234'H),
+			ts_MgcpParCallId(call_id),
 			t_MgcpParLocConnOpt("p:20")
 		}
 		resp := mgcp_transceive_mgw(cmd, rtmpl);
 		setverdict(pass);
+
+		f_dlcx_ignore(ep, call_id);
 	}
 
 	/* test CRCX with unsupported packetization interval */
 	testcase TC_crcx_unsupp_packet_intv() runs on dummy_CT {
 		var template MgcpCommand cmd;
 		var MgcpResponse resp;
+		var MgcpEndpoint ep := "2@mgw";
+		var MgcpCallId call_id := '1228'H;
 		var template MgcpResponse rtmpl := tr_MgcpResp_Err("532");
 
 		f_init();
 
-		cmd := ts_CRCX(get_next_trans_id(), "2@mgw", "recvonly", '1234'H);
+		cmd := ts_CRCX(get_next_trans_id(), ep, "recvonly", call_id);
 		cmd.params := {
 			t_MgcpParConnMode("recvonly"),
-			ts_MgcpParCallId('1234'H),
+			ts_MgcpParCallId(call_id),
 			t_MgcpParLocConnOpt("p:111")
 		}
 		resp := mgcp_transceive_mgw(cmd, rtmpl);
 		setverdict(pass);
+
+		f_dlcx_ignore(ep, call_id);
 	}
 
 	/* test CRCX with illegal double presence of local connection option */
 	testcase TC_crcx_illegal_double_lco() runs on dummy_CT {
 		var template MgcpCommand cmd;
 		var MgcpResponse resp;
+		var MgcpEndpoint ep := "2@mgw";
+		var MgcpCallId call_id := '1227'H;
 		var template MgcpResponse rtmpl := tr_MgcpResp_Err("524");
 
 		f_init();
 
-		cmd := ts_CRCX(get_next_trans_id(), "2@mgw", "recvonly", '1234'H);
+		cmd := ts_CRCX(get_next_trans_id(), ep, "recvonly", call_id);
 		cmd.params := {
 			t_MgcpParConnMode("recvonly"),
-			ts_MgcpParCallId('1234'H),
+			ts_MgcpParCallId(call_id),
 			/* p:20 is permitted only once and not twice! */
 			t_MgcpParLocConnOpt("p:20, a:AMR, p:20")
 		}
 		resp := mgcp_transceive_mgw(cmd, rtmpl);
 		setverdict(pass);
+
+		f_dlcx_ignore(ep, call_id);
 	}
 
 	/* test valid CRCX with valid SDP */
 	testcase TC_crcx_sdp() runs on dummy_CT {
 		var template MgcpCommand cmd;
 		var MgcpResponse resp;
+		var MgcpEndpoint ep := "2@mgw";
+		var MgcpCallId call_id := '1226'H;
 		var template MgcpResponse rtmpl := {
 			line := {
 				code := "200",
@@ -488,12 +572,14 @@
 
 		f_init();
 
-		cmd := ts_CRCX(get_next_trans_id(), "2@mgw", "sendrecv", '1234'H);
+		cmd := ts_CRCX(get_next_trans_id(), ep, "sendrecv", call_id);
 		cmd.sdp := ts_SDP("127.0.0.1", "127.0.0.2", "23", "42", 2344, { "98" },
 				  { valueof(ts_SDP_rtpmap(98, "AMR/8000")),
 				    valueof(ts_SDP_ptime(20)) });
 		resp := mgcp_transceive_mgw(cmd, rtmpl);
 		setverdict(pass);
+
+		f_dlcx_ignore(ep, call_id);
 	}
 
 	/* TODO: various SDP related bits */
@@ -508,6 +594,8 @@
 	testcase TC_mdcx_without_crcx() runs on dummy_CT {
 		var template MgcpCommand cmd;
 		var MgcpResponse resp;
+		var MgcpEndpoint ep := "3@mgw";
+		var MgcpCallId call_id := '1225'H;
 		var template MgcpResponse rtmpl := {
 			line := {
 				/* TODO: accept/enforce better error? */
@@ -520,12 +608,14 @@
 
 		f_init();
 
-		cmd := ts_MDCX(get_next_trans_id(), "3@mgw", "sendrecv", '31234'H);
+		cmd := ts_MDCX(get_next_trans_id(), ep, "sendrecv", call_id);
 		cmd.sdp := ts_SDP("127.0.0.1", "127.0.0.2", "23", "42", 2344, { "98" },
 				  { valueof(ts_SDP_rtpmap(98, "AMR/8000")),
 				    valueof(ts_SDP_ptime(20)) });
 		resp := mgcp_transceive_mgw(cmd, rtmpl);
 		setverdict(pass);
+
+		f_dlcx_ignore(ep, call_id);
 	}
 
 	/* DLCX without CRCX first */
@@ -553,6 +643,8 @@
 	testcase TC_crcx_and_dlcx() runs on dummy_CT {
 		var template MgcpCommand cmd;
 		var MgcpResponse resp;
+		var MgcpEndpoint ep := "5@mgw";
+		var MgcpCallId call_id := '51234'H;
 		var template MgcpResponse rtmpl := {
 			line := {
 				code := ("200", "250"),
@@ -564,15 +656,14 @@
 
 		f_init();
 
-		cmd := ts_CRCX(get_next_trans_id(), "5@mgw", "sendrecv", '51234'H);
+		cmd := ts_CRCX(get_next_trans_id(), ep, "recvonly", call_id);
 		resp := mgcp_transceive_mgw(cmd, rtmpl);
 
-		cmd := ts_DLCX(get_next_trans_id(), "5@mgw", '51234'H);
-		rtmpl.sdp := omit;
-		rtmpl.params := *;
-		resp := mgcp_transceive_mgw(cmd, rtmpl);
+		f_dlcx_ok(ep, call_id);
 
 		setverdict(pass);
+
+		f_dlcx_ignore(ep, call_id);
 	}
 
 	/* TODO: DLCX of valid endpoint but invalid call-id */
