diff --git a/library/RLCMAC_CSN1_Templates.ttcn b/library/RLCMAC_CSN1_Templates.ttcn
index ef8c952..a4f59f0 100644
--- a/library/RLCMAC_CSN1_Templates.ttcn
+++ b/library/RLCMAC_CSN1_Templates.ttcn
@@ -180,6 +180,99 @@
 		}
 	};
 
+	/* TS 44.060 sec 11.2.3a */
+	template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF_UTRAN(uint5_t tfi,
+						uint14_t uarfcn,
+						uint10_t scrambling_code,
+						template (value) CCNMeasReport ccn_meas_rep := ccn_meas_rep_def)
+	:= {
+		msg_type := PACKET_CELL_CHANGE_NOTIFICATION,
+		u := {
+			cell_chg_notif := {
+				gtfi := {
+					is_dl_tfi := false,
+					tfi := tfi
+				},
+				u := {
+					u10 := {
+						tag := '10'B,
+						utran_target_cell := {
+							fdd_presence := '1'B,
+							fdd := {
+							    arfcn := uarfcn,
+							    bandwidth_presence := '0'B,
+							    bandwidth := omit,
+							    scrambling_code := scrambling_code
+							},
+							tdd_presence := '0'B,
+							tdd := omit,
+							reporting_quantity := 1
+						}
+					}
+				},
+				ba_psi3_presence := '0'B,
+				ba_used := '0'B,
+				psi3_change_mark := omit,
+				pmo_used := '0'B,
+				pccn_sending := '0'B,
+				ccn_meas_rep := ccn_meas_rep,
+				rel_additions := omit
+			}
+		}
+	};
+
+	/* TS 44.060 sec 11.2.3a */
+	template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF_EUTRAN(uint5_t tfi,
+						uint16_t earfcn,
+						uint9_t phys_layer_cell_id,
+						template (value) CCNMeasReport ccn_meas_rep := ccn_meas_rep_def)
+	:= {
+		msg_type := PACKET_CELL_CHANGE_NOTIFICATION,
+		u := {
+			cell_chg_notif := {
+				gtfi := {
+					is_dl_tfi := false,
+					tfi := tfi
+				},
+				u := {
+					u110 := {
+						tag := '110'B,
+						arfcn_bsic_presence := '0'B,
+						arfcn := omit,
+						bsic := omit,
+
+						utran_target_cell_presence := '0'B,
+						utran_target_cell := omit,
+
+						eutran_target_cell_presence := '1'B,
+						eutran_target_cell := {
+							earfcn := earfcn,
+							meas_bandwidth_presence := '0'B,
+							meas_bandwidth := omit,
+							phys_layer_cell_id := phys_layer_cell_id,
+							reporting_quantity := 1
+						},
+						eutran_ccn_meas_rep_presence := '1'B,
+						eutran_ccn_meas_rep := {
+							utran_ba_used := 0,
+							n_eutran := 1,
+							cells := {{frequency_list_index := 1,
+								   cell_identity := phys_layer_cell_id,
+								   reporting_quantity := 1}}
+						}
+					}
+				},
+				ba_psi3_presence := '0'B,
+				ba_used := '0'B,
+				psi3_change_mark := omit,
+				pmo_used := '0'B,
+				pccn_sending := '0'B,
+				ccn_meas_rep := ccn_meas_rep,
+				rel_additions := omit
+			}
+		}
+	};
+
 	/* TS 44.060 sec 11.2.2a */
 	template RlcmacDlCtrlMsg tr_RlcMacDlCtrl_PKT_CELL_CHG_CONTINUE(template GlobalTfi tfi := ?)
 	:= {
diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index 440d133..76926ae 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -5332,11 +5332,71 @@
 	}
 }
 
+private function f_outbound_nacc_success_no_si(inout GprsMS ms, PCUIF_info_ind info_ind,
+					       boolean exp_rac_ci_query := true, boolean exp_si_query := true,
+					       boolean skip_final_ctrl_ack := false,
+					       boolean use_old_ctrl_iface := false,
+					       template (value) RlcmacUlCtrlMsg cell_chg_notif)
+runs on RAW_PCU_Test_CT {
+	var template RlcmacDlCtrlMsg cell_chg_cont;
+	var RlcmacDlBlock dl_block;
+	var uint32_t sched_fn;
+
+	/* Start NACC from MS side */
+	f_ms_tx_ul_block(ms, ts_RLC_UL_CTRL_ACK(cell_chg_notif), 0, nr := f_ms_tx_TsTrxBtsNum(ms));
+
+	/* Obtain a Downlink block and make sure it is a PacketCellChangeContine. We also make sure that this
+	 * PacketCellChangeContine message does not contain any ARFCN/BSIC. */
+	f_rx_rlcmac_dl_block(dl_block, sched_fn);
+	cell_chg_cont := tr_RlcMacDlCtrl_PKT_CELL_CHG_CONTINUE
+	cell_chg_cont.u.cell_chg_continue.arfcn_bsic_presence := '0'B
+	if (not match(dl_block, tr_RLCMAC_DL_CTRL(?, cell_chg_cont))) {
+		setverdict(fail, "Rx unexpected DL block: ", dl_block);
+		f_shutdown(__BFILE__, __LINE__);
+	}
+
+	/* PKT CELL CHG CONTINUE ACK/NACK sets poll+rrbp requesting PACKET CONTROL ACK */
+	if (not skip_final_ctrl_ack and dl_block.ctrl.mac_hdr.rrbp_valid) {
+		sched_fn := f_rrbp_ack_fn(sched_fn, dl_block.ctrl.mac_hdr.rrbp);
+		f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), sched_fn);
+	}
+}
+
+/* Start NACC from MS side, propose an UTRAN cell */
+private function f_outbound_nacc_success_utran(inout GprsMS ms, PCUIF_info_ind info_ind,
+					       boolean exp_rac_ci_query := true, boolean exp_si_query := true,
+					       boolean skip_final_ctrl_ack := false,
+					       boolean use_old_ctrl_iface := false)
+runs on RAW_PCU_Test_CT {
+	var template (value) RlcmacUlCtrlMsg cell_chg_notif;
+	var uint14_t req_uarfcn := 1234;
+	var uint10_t req_scrambling_code := 456;
+
+	/* Start NACC from MS side */
+	cell_chg_notif := ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF_UTRAN(ms.ul_tbf.tfi, req_uarfcn, req_scrambling_code);
+	f_outbound_nacc_success_no_si(ms, info_ind, exp_rac_ci_query, exp_si_query, skip_final_ctrl_ack, use_old_ctrl_iface, cell_chg_notif);
+}
+
+/* Start NACC from MS side, propose an E-UTRAN cell */
+private function f_outbound_nacc_success_eutran(inout GprsMS ms, PCUIF_info_ind info_ind,
+						boolean exp_rac_ci_query := true, boolean exp_si_query := true,
+						boolean skip_final_ctrl_ack := false,
+						boolean use_old_ctrl_iface := false)
+runs on RAW_PCU_Test_CT {
+	var template (value) RlcmacUlCtrlMsg cell_chg_notif;
+	var uint16_t req_earfcn := 1234;
+	var uint9_t phys_layer_cell_id := 456;
+
+	/* Start NACC from MS side */
+	cell_chg_notif := ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF_EUTRAN(ms.ul_tbf.tfi, req_earfcn, phys_layer_cell_id);
+	f_outbound_nacc_success_no_si(ms, info_ind, exp_rac_ci_query, exp_si_query, skip_final_ctrl_ack, use_old_ctrl_iface, cell_chg_notif);
+}
+
 /* Start NACC from MS side, propose a GERAN cell */
-private function f_outbound_nacc_success(inout GprsMS ms, PCUIF_info_ind info_ind,
-					 boolean exp_rac_ci_query := true, boolean exp_si_query := true,
-					 boolean skip_final_ctrl_ack := false,
-					 boolean use_old_ctrl_iface := false)
+private function f_outbound_nacc_success_geran(inout GprsMS ms, PCUIF_info_ind info_ind,
+					       boolean exp_rac_ci_query := true, boolean exp_si_query := true,
+					       boolean skip_final_ctrl_ack := false,
+					       boolean use_old_ctrl_iface := false)
 runs on RAW_PCU_Test_CT {
 	var template (value) RlcmacUlCtrlMsg cell_chg_notif;
 	var template RlcmacDlCtrlMsg cell_chg_cont;
@@ -5381,8 +5441,14 @@
 	}
 }
 
+type enumerated f_TC_nacc_outbound_success_ran_type {
+	NACC_RAN_GERAN,
+	NACC_RAN_UTRAN,
+	NACC_RAN_EUTRAN
+}
+
 /* Verify PCU handles outbound Network Assisted Cell Change Cell Change (NACC, TS 44.060 sec 8.8). */
-testcase TC_nacc_outbound_success() runs on RAW_PCU_Test_CT {
+function f_TC_nacc_outbound_success(f_TC_nacc_outbound_success_ran_type ran_type) runs on RAW_PCU_Test_CT {
 	var PollFnCtx pollctx;
 	var GprsMS ms;
 	var PCUIF_info_ind info_ind := valueof(ts_PCUIF_INFO_default);
@@ -5415,11 +5481,29 @@
 	f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), pollctx.fn, nr := pollctx.tstrxbts);
 
 	/* Start NACC from MS side */
-	f_outbound_nacc_success(ms, info_ind, use_old_ctrl_iface := use_old_ctrl_iface);
+	if (ran_type == NACC_RAN_GERAN) {
+		f_outbound_nacc_success_geran(ms, info_ind, use_old_ctrl_iface := use_old_ctrl_iface);
+	} else if (ran_type == NACC_RAN_UTRAN) {
+		f_outbound_nacc_success_utran(ms, info_ind, use_old_ctrl_iface := use_old_ctrl_iface);
+	} else if (ran_type == NACC_RAN_EUTRAN) {
+		f_outbound_nacc_success_eutran(ms, info_ind, use_old_ctrl_iface := use_old_ctrl_iface);
+	}
 
 	f_shutdown(__BFILE__, __LINE__, final := true);
 }
 
+testcase TC_nacc_outbound_success() runs on RAW_PCU_Test_CT {
+	 f_TC_nacc_outbound_success(NACC_RAN_GERAN);
+}
+
+testcase TC_nacc_outbound_success_utran() runs on RAW_PCU_Test_CT {
+	 f_TC_nacc_outbound_success(NACC_RAN_UTRAN);
+}
+
+testcase TC_nacc_outbound_success_eutran() runs on RAW_PCU_Test_CT {
+	 f_TC_nacc_outbound_success(NACC_RAN_EUTRAN);
+}
+
 /* Verify Pkt Cell Change Continue is retransmitted if not CTRL ACKed */
 testcase TC_nacc_outbound_success_no_ctrl_ack() runs on RAW_PCU_Test_CT {
 	var PollFnCtx pollctx;
@@ -5456,7 +5540,8 @@
 	f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), pollctx.fn, nr := pollctx.tstrxbts);
 
 	/* Start NACC from MS side, avoid sending final CTRL ACK */
-	f_outbound_nacc_success(ms, info_ind, skip_final_ctrl_ack := true, use_old_ctrl_iface := use_old_ctrl_iface);
+	f_outbound_nacc_success_geran(ms, info_ind, skip_final_ctrl_ack := true,
+				      use_old_ctrl_iface := use_old_ctrl_iface);
 
 	/* Wait until we receive something non-dummy */
 	dl_block := f_skip_dummy(0, sched_fn);
@@ -5510,10 +5595,10 @@
 	f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), pollctx.fn, nr := pollctx.tstrxbts);
 
 	/* Start NACC from MS side */
-	f_outbound_nacc_success(ms, info_ind, use_old_ctrl_iface := use_old_ctrl_iface);
+	f_outbound_nacc_success_geran(ms, info_ind, use_old_ctrl_iface := use_old_ctrl_iface);
 
 	/* First NACC procedure is done, let's try to start a new one now that previous queries are cached: */
-	f_outbound_nacc_success(ms, info_ind, false, false, use_old_ctrl_iface := use_old_ctrl_iface);
+	f_outbound_nacc_success_geran(ms, info_ind, false, false, use_old_ctrl_iface := use_old_ctrl_iface);
 
 	f_shutdown(__BFILE__, __LINE__, final := true);
 }
@@ -5557,14 +5642,14 @@
 	f_ms_tx_ul_block(ms, ts_RLCMAC_CTRL_ACK(ms.tlli), pollctx.fn, nr := pollctx.tstrxbts);
 
 	/* Start NACC from MS side */
-	f_outbound_nacc_success(ms, info_ind, use_old_ctrl_iface := use_old_ctrl_iface);
+	f_outbound_nacc_success_geran(ms, info_ind, use_old_ctrl_iface := use_old_ctrl_iface);
 
 	/* CTRL client should have disconnected from us */
 	f_ipa_ctrl_wait_link_down();
 	/* wait for cache entries to time out */
 	f_sleep(2.0);
 	/* First NACC procedure is done, let's try to start a new one now that previous queries have timed out: */
-	f_outbound_nacc_success(ms, info_ind, use_old_ctrl_iface := use_old_ctrl_iface);
+	f_outbound_nacc_success_geran(ms, info_ind, use_old_ctrl_iface := use_old_ctrl_iface);
 
 	f_shutdown(__BFILE__, __LINE__, final := true);
 }
@@ -7224,6 +7309,8 @@
 
 	execute( TC_pcuif_info_ind_subsequent() );
 	execute( TC_nacc_outbound_success() );
+	execute( TC_nacc_outbound_success_utran() );
+	execute( TC_nacc_outbound_success_eutran() );
 	execute( TC_nacc_outbound_success_no_ctrl_ack() );
 	execute( TC_nacc_outbound_success_twice() );
 	execute( TC_nacc_outbound_success_twice_nocache() );
