diff --git a/bsc/BSC_Tests_CBSP.ttcn b/bsc/BSC_Tests_CBSP.ttcn
index 1373002..4c34272 100644
--- a/bsc/BSC_Tests_CBSP.ttcn
+++ b/bsc/BSC_Tests_CBSP.ttcn
@@ -547,6 +547,8 @@
  * unlocked again. */
 testcase TC_cbsp_cell_rflock_failure_restart() runs on cbsp_test_CT {
 	var template CBSP_PDU rx;
+	var template (present) CBSP_FailureListItem fli_exp;
+	var template (present) BSSMAP_FIELD_CellIdentificationList cil_exp;
 
 	g_pars := valueof(ts_CBSP_Pars_default(false, 0, 0));
 	f_init();
@@ -554,9 +556,12 @@
 	/* Lock the TRX, CBCH should become unavailable and BSC send FAILURE */
 	f_ctrl_set(IPA_CTRL, "bts.0.trx.0.rf_locked", "1");
 
-	rx := tr_CBSP_FAILURE({CBSP_FailureListItem_LAC_CI(bssmap_lac_ci(mp_cgi_bts0),
-							   CBSP_CAUSE_CB_NOT_OPERATIONAL)},
-			      CBSP_BC_MSGT_CBS);
+	/* Expect receiving either CGI or LAC+CI: */
+	fli_exp := (CBSP_FailureListItem_CGI(bssmap_cgi(mp_cgi_bts0),
+					     CBSP_CAUSE_CB_NOT_OPERATIONAL),
+		    CBSP_FailureListItem_LAC_CI(bssmap_lac_ci(mp_cgi_bts0),
+						CBSP_CAUSE_CB_NOT_OPERATIONAL));
+	rx := tr_CBSP_FAILURE({fli_exp}, CBSP_BC_MSGT_CBS);
 	alt {
 	[] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], rx)) {
 		setverdict(pass);
@@ -569,8 +574,10 @@
 
 	/* Unlock the TRX, CBCH should become available and BSC send RESTART */
 	f_ctrl_set(IPA_CTRL, "bts.0.trx.0.rf_locked", "0");
-	rx :=  tr_CBSP_RESTART(ts_BSSMAP_CIL_LAC_CI({bssmap_lac_ci(mp_cgi_bts0)}),
-		               CBSP_BC_MSGT_CBS, ?);
+	/* Expect receiving either CGI or LAC+CI: */
+	cil_exp := (ts_BSSMAP_CIL_CGI({bssmap_cgi(mp_cgi_bts0)}),
+		    ts_BSSMAP_CIL_LAC_CI({bssmap_lac_ci(mp_cgi_bts0)}));
+	rx :=  tr_CBSP_RESTART(cil_exp, CBSP_BC_MSGT_CBS, ?);
 	alt {
 	[] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], rx)) {
 		setverdict(pass);
@@ -587,6 +594,7 @@
 /* Test if a LAC_CI FAILURE Ind is sent when conn of TRX holding the CBCH goes down. */
 testcase TC_cbsp_cell_rsl_down_failure() runs on cbsp_test_CT {
 	var template CBSP_PDU rx;
+	var template (present) CBSP_FailureListItem fli_exp;
 
 	g_pars := valueof(ts_CBSP_Pars_default(false, 0, 0));
 	f_init();
@@ -594,9 +602,12 @@
 	/* Drop RSL link of the TRX holding the CBCH: */
 	f_ipa_rsl_stop(bts[0][0].rsl);
 
-	rx := tr_CBSP_FAILURE({CBSP_FailureListItem_LAC_CI(bssmap_lac_ci(mp_cgi_bts0),
-							   CBSP_CAUSE_CB_NOT_OPERATIONAL)},
-			      CBSP_BC_MSGT_CBS);
+	/* Expect receiving either CGI or LAC+CI: */
+	fli_exp := (CBSP_FailureListItem_CGI(bssmap_cgi(mp_cgi_bts0),
+					     CBSP_CAUSE_CB_NOT_OPERATIONAL),
+		    CBSP_FailureListItem_LAC_CI(bssmap_lac_ci(mp_cgi_bts0),
+						CBSP_CAUSE_CB_NOT_OPERATIONAL));
+	rx := tr_CBSP_FAILURE({fli_exp}, CBSP_BC_MSGT_CBS);
 	alt {
 	[] CBSP[0].receive(tr_CBSP_Recv(g_cbsp_conn_id[0], rx)) {
 		setverdict(pass);
diff --git a/library/CBSP_Templates.ttcn b/library/CBSP_Templates.ttcn
index 2d70256..6ff2742 100644
--- a/library/CBSP_Templates.ttcn
+++ b/library/CBSP_Templates.ttcn
@@ -134,6 +134,18 @@
 						list := items
 				}});
 
+template (present) CBSP_FailureListItem CBSP_FailureListItem_CGI(
+				template (present) BSSMAP_FIELD_CellIdentification_CGI cgi := ?,
+				template (present) CBSP_Cause cause := ?) :=
+{
+	spare1_4 := '0000'B,
+	cell_id_discr := '0000'B,
+	cell_id := {
+		cI_CGI := cgi
+	},
+	cause := cause
+};
+
 template (present) CBSP_FailureListItem CBSP_FailureListItem_LAC_CI(
 				template (present) BSSMAP_FIELD_CellIdentification_LAC_CI lac_ci := ?,
 				template (present) CBSP_Cause cause := ?) :=
