diff --git a/cbc/CBC_Tests.ttcn b/cbc/CBC_Tests.ttcn
index 9beaddf..fdf3b0f 100644
--- a/cbc/CBC_Tests.ttcn
+++ b/cbc/CBC_Tests.ttcn
@@ -596,6 +596,63 @@
 	f_shutdown_helper();
 }
 
+/* Create 2 concurrent messages against an MME, then delete them */
+private function f_mme_TC_concurrent_cbs_msg_mme() runs on MME_ConnHdlr {
+	var CBS_Message msg[2];
+	msg[0] := g_pars.exp_cbs_msg;
+	msg[1] := msg[0];
+	msg[1].msg_id := msg[0].msg_id + 1;
+
+	for (var integer i := 0; i < lengthof(msg); i := i + 1) {
+		f_sbcap_handle_write_replace_warn_req(msg[i], 0);
+		if (ispresent(g_pars.write_replace_warning_ind_cause) and
+		    ispresent(g_pars.bcast_cell_id_list)) {
+			f_sbcap_tx_write_replace_warn_ind(0, msg[i],
+							  g_pars.write_replace_warning_ind_cause,
+							  g_pars.bcast_cell_id_list)
+		}
+	}
+	/* Now handle Stop: */
+	for (var integer i := 0; i < lengthof(msg); i := i + 1) {
+		f_sbcap_handle_stop_warn_req(0, msg[i]);
+	}
+}
+testcase TC_concurrent_cbs_msg_mme() runs on test_CT {
+	var template (value) CellId_Broadcast_List bcast_cell_id_li;
+	var CBS_Message msg[2];
+	var EcbeCbcMessage ecbe;
+
+	msg[0] := valueof(t_CBSmsg(49, 16752));
+	msg[1] := msg[0];
+	msg[1].msg_id := msg[0].msg_id + 1;
+
+	f_init(num_bsc := 0, num_mme := 1);
+
+	bcast_cell_id_li := {
+		ts_SBCAP_CellId_Broadcast_List_Item(ts_SBCAP_ECGI(f_enc_mcc_mnc('901'H, '70'H), 1234))
+	};
+	g_pars_MME[0].start_fn := refers(f_mme_TC_concurrent_cbs_msg_mme);
+	g_pars_MME[0].exp_cbs_msg := msg[0];
+	g_pars_MME[0].write_replace_warning_ind_cause := SBC_AP_Cause_message_accepted;
+	g_pars_MME[0].bcast_cell_id_list := valueof(bcast_cell_id_li);
+	f_start();
+
+	for (var integer i := 0; i < lengthof(msg); i := i + 1) {
+		ecbe := f_cbs2ecbe(msg[i], "TTCN-3");
+		f_ecbe_tx_post_cbs(ecbe);
+		f_ecbe_rx_resp(201);
+	}
+
+	f_sleep(2.0);
+
+	for (var integer i := 0; i < lengthof(msg); i := i + 1) {
+		f_ecbe_tx_delete_cbs(msg[i].msg_id);
+		f_ecbe_rx_resp(200);
+	}
+
+	f_shutdown_helper();
+}
+
 control {
 	execute( TC_rx_keepalive() );
 	execute( TC_rx_keepalive_timeout() );
@@ -609,6 +666,7 @@
 	execute( TC_ecbe_create_delete_bsc_and_mme() );
 	execute( TC_ecbe_create_delete_bsc_server() );
 	execute( TC_ecbe_create_delete_mme_server() );
+	execute( TC_concurrent_cbs_msg_mme() );
 }
 
 }
