diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index 5e61d85..44314f3 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -238,6 +238,35 @@
 	BTS.receive(tr_RAW_PCU_EV(BTS_EV_SI13_NEGO));
 }
 
+/* Register TLLI of each allocated GprsMS instance */
+private function f_multi_ms_bssgp_register()
+runs on RAW_PCU_Test_CT {
+	for (var integer i := 0; i < lengthof(g_ms); i := i + 1) {
+		f_bssgp_client_llgmm_assign(TLLI_UNUSED, g_ms[i].tlli);
+	}
+}
+
+/* Allocate [and activate] an Uplink TBF for each allocated GprsMS instance */
+private function f_multi_ms_establish_tbf(boolean do_activate := false)
+runs on RAW_PCU_Test_CT {
+	for (var integer i := 0; i < lengthof(g_ms); i := i + 1) {
+		/* Establish an Uplink TBF */
+		f_ms_establish_ul_tbf(g_ms[i]);
+
+		/* Send a random block, so this TBF becomes "active" */
+		if (do_activate) {
+			/* FIXME: use the new APU by Pau to get correct TRX/TS here */
+			var template TsTrxBtsNum nr := ts_TsTrxBtsNum(7, i mod 8);
+			var octetstring dummy := f_rnd_octstring(12);
+			var RlcmacDlBlock dl_block;
+			var uint32_t poll_fn;
+
+			f_ms_tx_ul_data_block(g_ms[i], dummy, with_tlli := true, nr := nr);
+			f_rx_rlcmac_dl_block_exp_ack_nack(dl_block, poll_fn, nr := nr);
+		}
+	}
+}
+
 testcase TC_pcuif_suspend() runs on RAW_PCU_Test_CT {
 	var octetstring ra_id := enc_RoutingAreaIdentification(mp_gb_cfg.bvc[0].cell_id.ra_id);
 	var GprsTlli tlli := 'FFFFFFFF'O;
@@ -2489,14 +2518,13 @@
 
 	/* Establish BSSGP connection to the PCU */
 	f_bssgp_establish();
-	for (i := 0; i < num_ms; i := i + 1) {
-		f_bssgp_client_llgmm_assign(TLLI_UNUSED, g_ms[i].tlli);
-	}
+	f_multi_ms_bssgp_register();
 
-	/* Establish an Uplink TBF for each MS. They should be allocated on
-	  different TRX in an uniform way. */
+	/* Establish an Uplink TBF for each GprsMS instance */
+	f_multi_ms_establish_tbf(do_activate := false);
+
+	/* Check if all TBFs are allocated on different TRX in an uniform way */
 	for (i := 0; i < num_ms; i := i + 1) {
-		f_ms_establish_ul_tbf(g_ms[i]);
 		if (g_ms[i].ul_tbf.arfcn != info_ind.trx.v10[i mod 3].arfcn) {
 			setverdict(fail, "Got assigned ARFCN ", g_ms[i].ul_tbf.arfcn,
 				   " vs exp ", info_ind.trx.v10[i mod 3].arfcn);
