diff --git a/cbc/CBC_Tests.ttcn b/cbc/CBC_Tests.ttcn
index 5240d85..9c9c644 100644
--- a/cbc/CBC_Tests.ttcn
+++ b/cbc/CBC_Tests.ttcn
@@ -135,7 +135,7 @@
 	g_vc_conn_MME[idx].start(f_MME_ConnHdlr_main(id, pars));
 }
 
-private function f_init(integer num_bsc := 1, integer num_mme := 1) runs on test_CT {
+private function f_init(integer num_bsc := 0, integer num_mme := 0) runs on test_CT {
 	f_http_init(mp_cbc_host, mp_cbc_ecbe_port);
 
 	g_num_bsc := num_bsc;
@@ -168,7 +168,7 @@
 }
 testcase TC_rx_keepalive() runs on test_CT {
 
-	f_init();
+	f_init(num_bsc := 1);
 	g_pars_BSC[0].start_fn := refers(f_bsc_TC_rx_keepalive);
 	f_start();
 	f_shutdown_helper();
@@ -191,7 +191,7 @@
 	CBSP[0].receive(PortEvent:{connClosed:=?})
 }
 testcase TC_rx_keepalive_timeout() runs on test_CT {
-	f_init();
+	f_init(num_bsc := 1);
 	g_pars_BSC[0].start_fn := refers(f_bsc_TC_rx_keepalive_timeout);
 	f_start();
 	f_shutdown_helper();
@@ -220,7 +220,7 @@
 		}
 	};
 
-	f_init();
+	f_init(num_bsc := 1);
 	g_pars_BSC[0].exp_cbs_msg := msg;
 	g_pars_BSC[0].start_fn := refers(f_bsc_TC_write_replace);
 	f_start();
@@ -330,7 +330,7 @@
 
 /* specify a variety of different Cell Identifier formats to extend test coverage */
 testcase TC_ecbe_create_delete_cgi() runs on test_CT {
-	f_init();
+	f_init(num_bsc := 1);
 	var template (value) BSSMAP_FIELD_CellIdentificationList cell_list_success;
 	var template (value) CBS_Message msg := t_CBSmsg(43, 16752);
 
@@ -342,14 +342,12 @@
 	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);
-	g_pars_MME[0].start_fn := refers(f_mme_create_and_delete);
-	g_pars_MME[0].exp_cbs_msg := valueof(msg);
 	f_start();
 	f_create_and_delete(valueof(msg));
 	f_shutdown_helper();
 }
 testcase TC_ecbe_create_delete_lac_ci() runs on test_CT {
-	f_init();
+	f_init(num_bsc := 1);
 	var template (value) BSSMAP_FIELD_CellIdentificationList cell_list_success;
 	var template (value) CBS_Message msg := t_CBSmsg(44, 16752);
 	cell_list_success := ts_BSSMAP_CIL_LAC_CI({
@@ -360,14 +358,12 @@
 	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);
-	g_pars_MME[0].start_fn := refers(f_mme_create_and_delete);
-	g_pars_MME[0].exp_cbs_msg := valueof(msg);
 	f_start();
 	f_create_and_delete(valueof(msg));
 	f_shutdown_helper();
 }
 testcase TC_ecbe_create_delete_lac() runs on test_CT {
-	f_init();
+	f_init(num_bsc := 1);
 	var template (value) BSSMAP_FIELD_CellIdentificationList cell_list_success;
 	var template (value) CBS_Message msg := t_CBSmsg(45, 16752);
 	cell_list_success := ts_BSSMAP_CIL_LAC({
@@ -378,14 +374,12 @@
 	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);
-	g_pars_MME[0].start_fn := refers(f_mme_create_and_delete);
-	g_pars_MME[0].exp_cbs_msg := valueof(msg);
 	f_start();
 	f_create_and_delete(valueof(msg));
 	f_shutdown_helper();
 }
 testcase TC_ecbe_create_delete_ci() runs on test_CT {
-	f_init();
+	f_init(num_bsc := 1);
 	var template (value) BSSMAP_FIELD_CellIdentificationList cell_list_success;
 	var template (value) CBS_Message msg := t_CBSmsg(46, 16752);
 	cell_list_success := ts_BSSMAP_CIL_CI({
@@ -396,14 +390,12 @@
 	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);
-	g_pars_MME[0].start_fn := refers(f_mme_create_and_delete);
-	g_pars_MME[0].exp_cbs_msg := valueof(msg);
 	f_start();
 	f_create_and_delete(valueof(msg));
 	f_shutdown_helper();
 }
 testcase TC_ecbe_create_delete_lai() runs on test_CT {
-	f_init();
+	f_init(num_bsc := 1);
 	var template (value) BSSMAP_FIELD_CellIdentificationList cell_list_success;
 	var template (value) CBS_Message msg := t_CBSmsg(47, 16752);
 	cell_list_success := ts_BSSMAP_CIL_LAI({
@@ -414,6 +406,25 @@
 	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);
+	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) CBS_Message msg := t_CBSmsg(43, 16752);
+
+	cell_list_success := ts_BSSMAP_CIL_CGI({
+		ts_BSSMAP_CI_CGI('901'H, '70'H, 23, 42),
+		ts_BSSMAP_CI_CGI('901'H, '70'H, 24, 42),
+		ts_BSSMAP_CI_CGI('901'H, '70'H, 24, 43)
+	});
+	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);
 	g_pars_MME[0].start_fn := refers(f_mme_create_and_delete);
 	g_pars_MME[0].exp_cbs_msg := valueof(msg);
 	f_start();
@@ -429,6 +440,7 @@
 	execute( TC_ecbe_create_delete_lac() );
 	execute( TC_ecbe_create_delete_ci() );
 	execute( TC_ecbe_create_delete_lai() );
+	execute( TC_ecbe_create_delete_bsc_and_mme() );
 }
 
 }
