diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c
index 2300319..7264753 100644
--- a/tests/msc_vlr/msc_vlr_tests.c
+++ b/tests/msc_vlr/msc_vlr_tests.c
@@ -77,6 +77,7 @@
 
 bool bssap_assignment_expected = false;
 bool bssap_assignment_sent = false;
+struct gsm0808_channel_type bssap_assignment_command_last_channel_type;
 bool iu_rab_assignment_expected = false;
 bool iu_rab_assignment_sent = false;
 
@@ -84,6 +85,7 @@
 const char *cc_to_mncc_tx_expected_imsi = NULL;
 bool cc_to_mncc_tx_confirmed = false;
 uint32_t cc_to_mncc_tx_got_callref = 0;
+char cc_to_mncc_tx_last_sdp[1024] = {};
 
 bool expecting_crcx[2] = {};
 bool got_crcx[2] = {};
@@ -308,14 +310,18 @@
 	return 0;
 }
 
-static void bssap_validate_assignment_cmd()
+static void bssap_validate_assignment_cmd(const struct ran_assignment_command *assignment_command)
 {
 	OSMO_ASSERT(bssap_assignment_expected);
 	bssap_assignment_expected = false;
 	bssap_assignment_sent = true;
+	if (assignment_command->channel_type)
+		bssap_assignment_command_last_channel_type = *assignment_command->channel_type;
+	else
+		bssap_assignment_command_last_channel_type = (struct gsm0808_channel_type){};
 }
 
-static void iucs_validate_assignment_cmd()
+static void iucs_validate_assignment_cmd(const struct ran_assignment_command *assignment_command)
 {
 	OSMO_ASSERT(iu_rab_assignment_expected);
 	iu_rab_assignment_expected = false;
@@ -375,10 +381,10 @@
 	case RAN_MSG_ASSIGNMENT_COMMAND:
 		switch (ran_type) {
 		case OSMO_RAT_GERAN_A:
-			bssap_validate_assignment_cmd();
+			bssap_validate_assignment_cmd(&ran_enc_msg->assignment_command);
 			break;
 		case OSMO_RAT_UTRAN_IU:
-			iucs_validate_assignment_cmd();
+			iucs_validate_assignment_cmd(&ran_enc_msg->assignment_command);
 			break;
 		default:
 			OSMO_ASSERT(false);
@@ -430,7 +436,7 @@
 	return msc_a_ran_decode_cb(g_msub->role[MSC_ROLE_A], &d, ran_dec_msg);
 }
 
-void rx_from_ms(struct msgb *msg)
+void rx_from_ms(struct msgb *msg, const struct gsm0808_speech_codec_list *codec_list_bss_supported)
 {
 	struct gsm48_hdr *gh = msgb_l3(msg);
 	struct ran_msg ran_dec_msg;
@@ -463,6 +469,7 @@
 			.compl_l3 = {
 				.cell_id = &cell_id,
 				.msg = msg,
+				.codec_list_bss_supported = codec_list_bss_supported,
 			},
 		};
 	} else {
@@ -490,7 +497,30 @@
 
 	msg = msgb_from_hex("ms_sends_msg", 1024, hex);
 	msg->l1h = msg->l2h = msg->l3h = msg->data;
-	rx_from_ms(msg);
+	rx_from_ms(msg, NULL);
+	msgb_free(msg);
+}
+
+void ms_sends_msgf(const char *fmt, ...)
+{
+	va_list ap;
+	char *hex;
+
+	va_start(ap, fmt);
+	hex = talloc_vasprintf(msc_vlr_tests_ctx, fmt, ap);
+	va_end(ap);
+
+	ms_sends_msg(hex);
+	talloc_free(hex);
+}
+
+void ms_sends_compl_l3(const char *hex, const struct gsm0808_speech_codec_list *codec_list_bss_supported)
+{
+	struct msgb *msg;
+
+	msg = msgb_from_hex("ms_sends_msg", 1024, hex);
+	msg->l1h = msg->l2h = msg->l3h = msg->data;
+	rx_from_ms(msg, codec_list_bss_supported);
 	msgb_free(msg);
 }
 
@@ -733,8 +763,18 @@
 int mncc_recv(struct gsm_network *net, struct msgb *msg)
 {
 	struct gsm_mncc *mncc = (void*)msg->data;
-	log("MSC --> MNCC: callref 0x%x: %s", mncc->callref,
-	    get_mncc_name(mncc->msg_type));
+	if (mncc->msg_type == MNCC_RTP_CREATE) {
+		struct gsm_mncc_rtp *rtp = (void *)msg->data;
+		log("MSC --> MNCC: callref 0x%x: %s\n%s", rtp->callref,
+		    get_mncc_name(rtp->msg_type),
+		    rtp->sdp);
+		OSMO_STRLCPY_ARRAY(cc_to_mncc_tx_last_sdp, rtp->sdp);
+	} else {
+		log("MSC --> MNCC: callref 0x%x: %s\n%s", mncc->callref,
+		    get_mncc_name(mncc->msg_type),
+		    mncc->sdp);
+		OSMO_STRLCPY_ARRAY(cc_to_mncc_tx_last_sdp, mncc->sdp);
+	}
 
 	if (mncc->msg_type == MNCC_REL_IND && on_call_release_mncc_sends_to_cc_data) {
 
