diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn
index 549997e..2050e3d 100644
--- a/library/L3_Templates.ttcn
+++ b/library/L3_Templates.ttcn
@@ -585,6 +585,49 @@
 	}
 }
 
+template PDU_ML3_NW_MS tr_ML3_MT_CC_CONNECT(integer tid) := {
+	discriminator := '0011'B,
+	tiOrSkip := {
+		transactionId := {
+			tio := int2bit(tid, 3),
+			tiFlag := '1'B,
+			tIExtension := omit
+		}
+	},
+	msgs := {
+		cc := {
+			connect_NW_MS := {
+				messageType := '000111'B,
+				nsd := '00'B,
+				facility := *,
+				progressIndicator := *,
+				connectedNumber := *,
+				connectedSubAddress := *,
+				user_user := *
+			}
+		}
+	}
+}
+
+template (value) PDU_ML3_MS_NW ts_ML3_MO_CC_CONNECT_ACK(integer tid) := {
+	discriminator := '0011'B,
+	tiOrSkip := {
+		transactionId := {
+			tio := int2bit(tid, 3),
+			tiFlag := '0'B,
+			tIExtension := omit
+		}
+	},
+	msgs := {
+		cc := {
+			connectAck := {
+				messageType := '001111'B,
+				nsd := '00'B
+			}
+		}
+	}
+}
+
 template PDU_ML3_NW_MS tr_ML3_MT_CC_DISC(integer tid) := {
 	discriminator := '0011'B,
 	tiOrSkip := {
diff --git a/library/MGCP_Templates.ttcn b/library/MGCP_Templates.ttcn
index 182868e..7f10bd2 100644
--- a/library/MGCP_Templates.ttcn
+++ b/library/MGCP_Templates.ttcn
@@ -74,8 +74,8 @@
 		sdp := sdp
 	}
 
-	template MgcpCommand tr_CRCX := {
-		line := t_MgcpCmdLine("CRCX", ?, ?),
+	template MgcpCommand tr_CRCX(template MgcpEndpoint ep := ?) := {
+		line := t_MgcpCmdLine("CRCX", ?, ep),
 		params := *,
 		sdp := *
 	}
diff --git a/library/MNCC_Types.ttcn b/library/MNCC_Types.ttcn
index 46159b7..884a7c0 100644
--- a/library/MNCC_Types.ttcn
+++ b/library/MNCC_Types.ttcn
@@ -499,9 +499,9 @@
 	}
 };
 
-/* MT: MSC -> MNCC: Respons to SETUP.req */
-template MNCC_PDU tr_MNCC_SETUP_rsp(template uint32_t call_id := ?, template MNCC_number connected := *,
-				    template charstring imsi := ?) := {
+/* MO: MSC <- MNCC: Respons to SETUP.ind */
+template MNCC_PDU ts_MNCC_SETUP_rsp(uint32_t call_id, charstring imsi := "",
+				    template MNCC_number connected := omit) := {
 	msg_type := MNCC_SETUP_RSP,
 	u := {
 		signal := {	/* See 24.008 9.3.5 */
@@ -513,20 +513,20 @@
 			connected := connected,
 			cause := omit,
 			progress := omit,
-			useruser := *,
-			facility := *,
+			useruser := omit,				/* optional */
+			facility := omit,				/* optional */
 			cccap := omit,
-			ssversion := *,
+			ssversion := omit,				/* optional */
 			clir_sup := 0,
 			clir_inv := 0,
 			signal := omit,
 			keypad := omit,
 			more := 0,
 			notify := 0,
-			emergency := *,
+			emergency := omit,
 			imsi := imsi,
-			lchan_type := ?,
-			lchan_mode := ?
+			lchan_type := 0,
+			lchan_mode := 0
 		}
 	}
 };
@@ -595,9 +595,9 @@
 	}
 }
 
-/* MO: MSC <- MNCC: SETUP_COMPL.req; request to send CONNECT ACK */
-template MNCC_PDU ts_MNCC_SETUP_COMPL_req(uint32_t call_id) :=
-		ts_MNCC_SIMPLE(MNCC_SETUP_COMPL_REQ, call_id); /* See 24.008 9.3.6 */
+/* MT: MSC -> MNCC: SETUP_COMPL.req; request to send CONNECT ACK */
+template MNCC_PDU tr_MNCC_SETUP_COMPL_req(template uint32_t call_id) :=
+		tr_MNCC_SIMPLE(MNCC_SETUP_COMPL_REQ, call_id); /* See 24.008 9.3.6 */
 
 /* MT: MSC -> MNCC: SETUP_COMPL.ind; receipt of CONNECT ACK */
 template MNCC_PDU tr_MNCC_SETUP_COMPL_ind(template uint32_t call_id := ?) :=
diff --git a/msc_tests/BSC_ConnectionHandler.ttcn b/msc_tests/BSC_ConnectionHandler.ttcn
index 8ce1332..75871c5 100644
--- a/msc_tests/BSC_ConnectionHandler.ttcn
+++ b/msc_tests/BSC_ConnectionHandler.ttcn
@@ -285,6 +285,10 @@
 	PortNumber bss_rtp_port optional,		/* BSS Side RTP Port */
 	HostName mss_rtp_ip optional,			/* MSS Side RTP IP */
 	PortNumber mss_rtp_port optional,		/* MSS Side RTP Port */
+	HostName mgw_rtp_ip_bss,			/* BSS-facing MGW RTP IP */
+	PortNumber mgw_rtp_port_bss,			/* BSS-facing MGW RTP Port */
+	HostName mgw_rtp_ip_mss,			/* MSS-facing MGW RTP IP */
+	PortNumber mgw_rtp_port_mss,			/* MSS-facing MGW RTP Port */
 	uint7_t rtp_payload_type,			/* dynamic RTP payload type */
 	charstring rtp_sdp_format,			/* AMR/8000 or the like */
 
@@ -302,10 +306,14 @@
 	bearer_cap := valueof(ts_Bcap_voice),
 	mncc_callref := omit,
 	mncc_bearer_cap := valueof(ts_MNCC_bcap_voice),
-	bss_rtp_ip := "1.1.1.1",
-	bss_rtp_port := 0,//
+	bss_rtp_ip := "9.8.7.6",
+	bss_rtp_port := 9000,
 	mss_rtp_ip := omit,
 	mss_rtp_port := omit,
+	mgw_rtp_ip_bss := "1.1.1.1",
+	mgw_rtp_port_bss := 10000,
+	mgw_rtp_ip_mss := "1.1.1.1",
+	mgw_rtp_port_mss := 11000,
 	rtp_payload_type := 98,
 	rtp_sdp_format := "AMR/8000",
 	mgcp_call_id := omit,
@@ -342,13 +350,14 @@
 		MNCC.send(ts_MNCC_CALL_PROC_req(cpars.mncc_callref, cpars.mncc_bearer_cap));
 		BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_CALL_PROC(cpars.transaction_id)));
 		};
+	/* First MGCP CRCX (for BSS/RAN side) */
 	[] MGCP.receive(tr_CRCX) -> value mgcp_cmd {
 		cpars.mgcp_call_id := f_MgcpCmd_extract_call_id(mgcp_cmd);
 		/* TODO: dynamic EP allocation case */
 		cpars.mgcp_ep := mgcp_cmd.line.ep;
-		var SDP_Message sdp := valueof(ts_SDP(cpars.bss_rtp_ip, cpars.bss_rtp_ip,
+		var SDP_Message sdp := valueof(ts_SDP(cpars.mgw_rtp_ip_bss, cpars.mgw_rtp_ip_bss,
 							hex2str(cpars.mgcp_call_id), "42",
-							cpars.bss_rtp_port,
+							cpars.mgw_rtp_port_bss,
 							{ int2str(cpars.rtp_payload_type) },
 							{ valueof(ts_SDP_rtpmap(cpars.rtp_payload_type,
 										cpars.rtp_sdp_format)),
@@ -356,22 +365,37 @@
 		MGCP.send(ts_CRCX_ACK(mgcp_cmd.line.trans_id, cpars.mgcp_connection_id_bss, sdp));
 		}
 	}
+	/* Second MGCP CRCX (this time for MSS/CN side) */
+	MGCP.receive(tr_CRCX(cpars.mgcp_ep)) -> value mgcp_cmd {
+		var SDP_Message sdp := valueof(ts_SDP(cpars.mgw_rtp_ip_mss, cpars.mgw_rtp_ip_mss,
+							hex2str(cpars.mgcp_call_id), "42",
+							cpars.mgw_rtp_port_mss,
+							{ int2str(cpars.rtp_payload_type) },
+							{ valueof(ts_SDP_rtpmap(cpars.rtp_payload_type,
+										cpars.rtp_sdp_format)),
+							  valueof(ts_SDP_ptime(20)) }));
+		MGCP.send(ts_CRCX_ACK(mgcp_cmd.line.trans_id, cpars.mgcp_connection_id_mss, sdp));
+	}
 
 	/* Alerting */
 	MNCC.send(ts_MNCC_ALERT_req(cpars.mncc_callref));
-	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_ALERTING(cpars.transaction_id)));
 
-	alt {
-	/* FIXME: expect AoIP IP/Port to match what we returned in CRCX_ACK above */
-	[] BSSAP.receive(tr_BSSMAP_AssignmentReq) {
+	var BSSMAP_IE_AoIP_TransportLayerAddress tla_ass :=
+		valueof(ts_BSSMAP_IE_AoIP_TLA4(f_inet_addr(cpars.mgw_rtp_ip_bss),cpars.mgw_rtp_port_bss));
+	interleave {
+	[] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_ALERTING(cpars.transaction_id))) {}
+	/* expect AoIP IP/Port to match what we returned in CRCX_ACK above */
+	[] BSSAP.receive(tr_BSSMAP_AssignmentReq(omit, tla_ass)) {
 		var BSSMAP_IE_AoIP_TransportLayerAddress tla;
 		tla := valueof(ts_BSSMAP_IE_AoIP_TLA4(f_inet_addr(cpars.bss_rtp_ip), cpars.bss_rtp_port));
 		BSSAP.send(ts_BSSMAP_AssignmentComplete(omit, tla));
 		}
 	}
 
-	/* Answer. This causes TCH assignment in case of "late assignment" */
-	MNCC.send(ts_MNCC_SETUP_COMPL_req(cpars.mncc_callref));
+	/* Answer. MNCC_SETUP_RSP -> CONNECT to MS; CONNECT_ACK from MS */
+	MNCC.send(ts_MNCC_SETUP_rsp(cpars.mncc_callref));
+	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_CONNECT(cpars.transaction_id)));
+	BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_CONNECT_ACK(cpars.transaction_id)));
 
 	f_sleep(3.0);
 
diff --git a/msc_tests/MSC_Tests.ttcn b/msc_tests/MSC_Tests.ttcn
index 5afa93a..c5ab892 100644
--- a/msc_tests/MSC_Tests.ttcn
+++ b/msc_tests/MSC_Tests.ttcn
@@ -866,7 +866,8 @@
 	BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_ALERTING(tid)));
 
 	/* Answer. This causes TCH assignment in case of "late assignment" */
-	MNCC.send(ts_MNCC_SETUP_COMPL_req(mncc.u.signal.callref));
+	//MNCC.send(ts_MNCC_SETUP_COMPL_req(mncc.u.signal.callref));
+	MNCC.send(ts_MNCC_SETUP_rsp(mncc.u.signal.callref));
 
 	f_sleep(3.0);
 
