diff --git a/cbc/CBC_Tests.ttcn b/cbc/CBC_Tests.ttcn
index 76fc3be..8e7e1c5 100644
--- a/cbc/CBC_Tests.ttcn
+++ b/cbc/CBC_Tests.ttcn
@@ -115,7 +115,9 @@
 		cbc_host := cbc_host,
 		cbc_sbcap_port := cbc_sbcap_port,
 		start_fn := refers(f_MME_ConnHdlr_start_fn_void),
-		exp_cbs_msg := omit
+		exp_cbs_msg := omit,
+		write_replace_warning_ind_cause := omit,
+		bcast_cell_id_list := omit
 	};
 	return pars;
 }
@@ -298,6 +300,12 @@
 
 private function f_mme_create_and_delete() runs on MME_ConnHdlr {
 	f_sbcap_handle_write_replace_warn_req(g_pars.exp_cbs_msg, 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, g_pars.exp_cbs_msg,
+						  g_pars.write_replace_warning_ind_cause,
+						  g_pars.bcast_cell_id_list)
+	}
 	f_sbcap_handle_stop_warn_req(0, g_pars.exp_cbs_msg);
 }
 
@@ -411,10 +419,33 @@
 	f_shutdown_helper();
 }
 
+/* Create and delete message with MME available. MME reports
+ * Write-Replace-Warning-Indication and Stop-Warning-Indication to CBC
+ */
+testcase TC_ecbe_create_delete_mme_indication() runs on test_CT {
+	var template (value) CellId_Broadcast_List bcast_cell_id_li;
+	var template (value) CBS_Message msg := t_CBSmsg(48, 16752);
+
+	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)),
+		ts_SBCAP_CellId_Broadcast_List_Item(ts_SBCAP_ECGI(f_enc_mcc_mnc('901'H, '70'H), 5678))
+	};
+	g_pars_MME[0].start_fn := refers(f_mme_create_and_delete);
+	g_pars_MME[0].exp_cbs_msg := valueof(msg);
+	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();
+	f_create_and_delete(valueof(msg));
+	f_shutdown_helper();
+}
+
 /* Create and delete message with both BSC and MME available */
 testcase TC_ecbe_create_delete_bsc_and_mme() runs on test_CT {
 	f_init(num_bsc := 1, num_mme := 1);
 	var template (value) BSSMAP_FIELD_CellIdentificationList cell_list_success;
+	var template (value) CellId_Broadcast_List bcast_cell_id_li;
 	var template (value) CBS_Message msg := t_CBSmsg(43, 16752);
 
 	cell_list_success := ts_BSSMAP_CIL_CGI({
@@ -425,8 +456,14 @@
 	g_pars_BSC[0].start_fn := refers(f_bsc_create_and_delete);
 	g_pars_BSC[0].exp_cbs_msg := valueof(msg);
 	g_pars_BSC[0].cell_list_success := valueof(cell_list_success);
+
+	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_create_and_delete);
 	g_pars_MME[0].exp_cbs_msg := valueof(msg);
+	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();
 	f_create_and_delete(valueof(msg));
 	f_shutdown_helper();
@@ -440,6 +477,7 @@
 	execute( TC_ecbe_create_delete_lac() );
 	execute( TC_ecbe_create_delete_ci() );
 	execute( TC_ecbe_create_delete_lai() );
+	execute( TC_ecbe_create_delete_mme_indication() );
 	execute( TC_ecbe_create_delete_bsc_and_mme() );
 }
 
