diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn
index 6f5b326..a0e6d1d 100644
--- a/gbproxy/GBProxy_Tests.ttcn
+++ b/gbproxy/GBProxy_Tests.ttcn
@@ -1066,11 +1066,14 @@
 	f_cleanup();
 }
 
-private function f_suspend_one(integer sgsn_idx, integer pcu_idx, integer bvc_idx, integer suffix)
+private function f_suspend_one(integer sgsn_idx, integer nri_idx, integer pcu_idx, integer bvc_idx,
+				integer suffix)
 runs on GlobalTest_CT
 {
 	var RoutingAreaIdentification ra_id := g_pcu[pcu_idx].cfg.bvc[bvc_idx].cell_id.ra_id;
-	var OCT4 tlli := f_gprs_tlli_random();
+	var OCT4 p_tmsi := f_gen_tmsi(suffix, nri_v := mp_sgsn_nri[sgsn_idx][nri_idx],
+				      nri_bitlen := mp_nri_bitlength);
+	var OCT4 tlli := f_gprs_tlli_from_tmsi(p_tmsi, TLLI_LOCAL);
 	var template (value) PDU_BSSGP pdu_tx := ts_BSSGP_SUSPEND(tlli, ra_id);
 	/* we cannot use pdu_tx as there are some subtle differences in the length field :/ */
 	var template (present) PDU_BSSGP pdu_rx := tr_BSSGP_SUSPEND(tlli, ra_id);
@@ -1098,7 +1101,7 @@
 
 	/* TODO: Generate RA ID for each ConnHdlr */
 	for (i := 0; i < 10; i := i+1) {
-		f_suspend_one(0, 0, 0, i);
+		f_suspend_one(sgsn_idx := 0, nri_idx := 0, pcu_idx := 0, bvc_idx := 0, suffix := i);
 	}
 	setverdict(pass);
 }
@@ -1110,11 +1113,14 @@
 	f_cleanup();
 }
 
-private function f_resume_one(integer sgsn_idx, integer pcu_idx, integer bvc_idx, integer suffix)
+private function f_resume_one(integer sgsn_idx, integer nri_idx, integer pcu_idx, integer bvc_idx,
+			      integer suffix)
 runs on GlobalTest_CT
 {
 	var RoutingAreaIdentification	ra_id := g_pcu[pcu_idx].cfg.bvc[bvc_idx].cell_id.ra_id;
-	var OCT4 tlli := f_gprs_tlli_random();
+	var OCT4 p_tmsi := f_gen_tmsi(suffix, nri_v := mp_sgsn_nri[sgsn_idx][nri_idx],
+				      nri_bitlen := mp_nri_bitlength);
+	var OCT4 tlli := f_gprs_tlli_from_tmsi(p_tmsi, TLLI_LOCAL);
 	var template (value) PDU_BSSGP pdu_tx := ts_BSSGP_RESUME(tlli, ra_id, int2oct(suffix, 1));
 	/* we cannot use pdu_tx as there are some subtle differences in the length field :/ */
 	var template (present) PDU_BSSGP pdu_rx := tr_BSSGP_RESUME(tlli, ra_id, int2oct(suffix, 1));
@@ -1141,7 +1147,7 @@
 	var integer i;
 
 	for (i := 0; i < 10; i := i+1) {
-		f_resume_one(0, 0, 0, i);
+		f_resume_one(sgsn_idx := 0, nri_idx := 0, pcu_idx := 0, bvc_idx := 0, suffix := i);
 	}
 	setverdict(pass);
 }
