diff --git a/bsc/BSC_Tests_CBSP.ttcn b/bsc/BSC_Tests_CBSP.ttcn
index baba4c0..94167ce 100644
--- a/bsc/BSC_Tests_CBSP.ttcn
+++ b/bsc/BSC_Tests_CBSP.ttcn
@@ -71,23 +71,23 @@
 }
 
 private altstep as_IgnRSL(template RSL_Message tr) runs on cbsp_test_CT {
-[] IPA_RSL[0].receive(tr_RSL_UD(tr)) { repeat; }
-[] IPA_RSL[1].receive(tr_RSL_UD(tr)) { repeat; }
-[] IPA_RSL[2].receive(tr_RSL_UD(tr)) { repeat; }
+[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr)) { repeat; }
+[] IPA_RSL[1].receive(tr_ASP_RSL_UD(tr)) { repeat; }
+[] IPA_RSL[2].receive(tr_ASP_RSL_UD(tr)) { repeat; }
 }
 
 private altstep as_FailRSL() runs on cbsp_test_CT {
 var template RSL_Message tr := (tr_RSL_SMSCB_CMD);
 var ASP_RSL_Unitdata rx;
-[] IPA_RSL[0].receive(tr_RSL_UD(tr)) -> value rx {
+[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr)) -> value rx {
 	setverdict(fail, "Received unexpected RSL ", rx);
 	mtc.stop;
 	}
-[] IPA_RSL[1].receive(tr_RSL_UD(tr)) -> value rx {
+[] IPA_RSL[1].receive(tr_ASP_RSL_UD(tr)) -> value rx {
 	setverdict(fail, "Received unexpected RSL ", rx);
 	mtc.stop;
 	}
-[] IPA_RSL[2].receive(tr_RSL_UD(tr)) -> value rx {
+[] IPA_RSL[2].receive(tr_ASP_RSL_UD(tr)) -> value rx {
 	setverdict(fail, "Received unexpected RSL ", rx);
 	mtc.stop;
 	}
@@ -276,11 +276,6 @@
 	}
 }
 
-private template (present) ASP_RSL_Unitdata tr_RSL_UD(template (present) RSL_Message rsl) := {
-	streamId := ?,
-	rsl := rsl
-}
-
 template (present) RSL_IE_CbCommandType
 tr_RslCbCmdType(template (present) uint2_t lblock := ?, template (present) RSL_CbCommand cmd := ?) := {
 	command := cmd,
@@ -357,9 +352,9 @@
 
 	var template RSL_Message tr := f_page2rsl(pages[0], 1, 1001);
 	interleave {
-	[] IPA_RSL[0].receive(tr_RSL_UD(tr)) {}
-	[] IPA_RSL[1].receive(tr_RSL_UD(tr)) {}
-	[] IPA_RSL[2].receive(tr_RSL_UD(tr)) {}
+	[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr)) {}
+	[] IPA_RSL[1].receive(tr_ASP_RSL_UD(tr)) {}
+	[] IPA_RSL[2].receive(tr_ASP_RSL_UD(tr)) {}
 	}
 }
 
@@ -372,7 +367,7 @@
 	f_cbsp_write(2, 1002, cell_list, content:=pages,
 		     success_list:=cell_list, fail_list:=omit);
 	var template RSL_Message tr := f_page2rsl(pages[0], 1, 1001);
-	IPA_RSL[0].receive(tr_RSL_UD(tr));
+	IPA_RSL[0].receive(tr_ASP_RSL_UD(tr));
 	f_sleep(5.0);
 }
 
@@ -406,7 +401,7 @@
 	f_cbsp_init_server();
 	f_cbsp_write(5, 1005, cell_list, content:=pages,
 		     success_list:=?, fail_list:=omit);
-	IPA_RSL[0].receive(tr_RSL_UD(f_page2rsl(pages[0], 5, 1005)));
+	IPA_RSL[0].receive(tr_ASP_RSL_UD(f_page2rsl(pages[0], 5, 1005)));
 	f_sleep(5.0);
 }
 
@@ -418,7 +413,7 @@
 	f_cbsp_init_server();
 	f_cbsp_write(6, 1006, cell_list, content:=pages,
 		     success_list:=?, fail_list:=omit);
-	IPA_RSL[0].receive(tr_RSL_UD(f_page2rsl(pages[0], 6, 1006)));
+	IPA_RSL[0].receive(tr_ASP_RSL_UD(f_page2rsl(pages[0], 6, 1006)));
 	f_sleep(5.0);
 }
 
@@ -430,7 +425,7 @@
 	f_cbsp_init_server();
 	f_cbsp_write(7, 1007, cell_list, content:=pages,
 		     success_list:=?, fail_list:=omit);
-	IPA_RSL[0].receive(tr_RSL_UD(f_page2rsl(pages[0], 7, 1007)));
+	IPA_RSL[0].receive(tr_ASP_RSL_UD(f_page2rsl(pages[0], 7, 1007)));
 	f_sleep(5.0);
 }
 
@@ -444,8 +439,8 @@
 		     success_list:=?, fail_list:=omit);
 	var template RSL_Message tr := f_page2rsl(pages[0], 8, 1008);
 	interleave {
-	[] IPA_RSL[0].receive(tr_RSL_UD(tr));
-	[] IPA_RSL[1].receive(tr_RSL_UD(tr));
+	[] IPA_RSL[0].receive(tr_ASP_RSL_UD(tr));
+	[] IPA_RSL[1].receive(tr_ASP_RSL_UD(tr));
 	}
 	f_sleep(5.0);
 }
