diff --git a/pcu/GPRS_Components.ttcn b/pcu/GPRS_Components.ttcn
index 4b8ca5b..983ae8f 100644
--- a/pcu/GPRS_Components.ttcn
+++ b/pcu/GPRS_Components.ttcn
@@ -628,7 +628,7 @@
 	ms.ul_tbf := f_ultbf_new_from_rr_imm_ass(rr_imm_ass);
 }
 
-function f_ms_exp_dl_tbf_ass_ccch(inout GprsMS ms, template PCUIF_Sapi sapi := PCU_IF_SAPI_PCH,
+function f_ms_exp_dl_tbf_ass_ccch(inout GprsMS ms, template PCUIF_Sapi sapi := PCU_IF_SAPI_PCH_2,
 				  template GsmRrMessage t_imm_ass := tr_IMM_TBF_ASS(true, ?, ?),
 				  template (present) TsTrxBtsNum nr := tr_TsTrxBtsNum)
 runs on MS_BTS_IFACE_CT {
@@ -882,19 +882,17 @@
 /* This function can be used to send DATA.cnf in response to the IUT originated DATA.req. */
 function f_pcuif_tx_data_cnf(in BTS_CCCH_Block data_msg)
 runs on MS_BTS_IFACE_CT {
-	var PCUIF_Message pcu_msg_cnf := {
-		msg_type := PCU_IF_MSG_DATA_CNF,
-		bts_nr := data_msg.bts_nr,
-		spare := '0000'O,
-		u := { data_cnf := data_msg.raw }
+        var PCUIF_data_cnf cnf := {
+	    sapi := data_msg.raw.sapi,
+	    msg_id := data_msg.msg_id
 	};
 
-	/* PCU wants DATA.cnf containing basically everything that was in DATA.req,
-	 * but PCU_IF_SAPI_PCH is a special case - paging group shall be excluded. */
-	if (data_msg.raw.sapi == PCU_IF_SAPI_PCH) {
-		pcu_msg_cnf.u.data_cnf.data := substr(data_msg.raw.data, 3,
-						      data_msg.raw.len - 3);
-	}
+	var PCUIF_Message pcu_msg_cnf := {
+		msg_type := PCU_IF_MSG_DATA_CNF_2,
+		bts_nr := data_msg.bts_nr,
+		spare := '0000'O,
+		u := { data_cnf2 := cnf}
+	};
 
 	BTS.send(pcu_msg_cnf);
 }
@@ -1061,7 +1059,7 @@
 	}
 }
 
-altstep as_ms_rx_imm_ass(template PCUIF_Sapi sapi := PCU_IF_SAPI_AGCH,
+altstep as_ms_rx_imm_ass(template PCUIF_Sapi sapi := PCU_IF_SAPI_AGCH_2,
 			 template GsmRrMessage t_imm_ass := ?,
 			 template (present) TsTrxBtsNum nr := ts_TsTrxBtsNum,
 			 out GsmRrMessage rr_imm_ass)
@@ -1073,14 +1071,12 @@
 		rr_imm_ass := data_msg.rr_msg;
 		log("Rx Immediate Assignment: ", rr_imm_ass);
 		/* Send DATA.cnf back to the IUT (only needed for PCH) */
-		if (data_msg.raw.sapi == PCU_IF_SAPI_PCH) {
-			f_pcuif_tx_data_cnf(data_msg);
-		}
+		f_pcuif_tx_data_cnf(data_msg);
 		setverdict(pass);
 	}
 }
 
-function f_pcuif_rx_imm_ass(template PCUIF_Sapi sapi := PCU_IF_SAPI_AGCH,
+function f_pcuif_rx_imm_ass(template PCUIF_Sapi sapi := PCU_IF_SAPI_AGCH_2,
 			    template GsmRrMessage t_imm_ass := ?,
 			    template (present) TsTrxBtsNum nr := tr_TsTrxBtsNum)
 runs on MS_BTS_IFACE_CT return GsmRrMessage {
@@ -1131,7 +1127,7 @@
 	if (is_11bit != 0) { ra := 127; }
 
 	/* Expect Immediate (TBF) Assignment on the same TS/TRX/BTS */
-	return f_pcuif_rx_imm_ass(PCU_IF_SAPI_AGCH, tr_IMM_TBF_ASS(false, ra, fn), nr);
+	return f_pcuif_rx_imm_ass(PCU_IF_SAPI_AGCH_2, tr_IMM_TBF_ASS(false, ra, fn), nr);
 }
 
 /* Enqueue DATA.ind (both TDMA frame and block numbers to be patched) */
@@ -1174,7 +1170,7 @@
 
 	var BTS_CCCH_Block data_msg;
 	BTS.receive(tr_PCUIF_DATA_RR(nr.bts_nr,
-				     tr_PCUIF_DATA(nr.trx_nr, nr.ts_nr, sapi := PCU_IF_SAPI_PCH),
+				     tr_PCUIF_DATA(nr.trx_nr, nr.ts_nr, sapi := PCU_IF_SAPI_PCH_2),
 				     tr_PAG_REQ1(tr_MI_LV(mi1)))) -> value data_msg;
 	rr_pag_req1 := data_msg.rr_msg;
 	log("Rx Paging Request Type1: ", rr_pag_req1);
