diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 44916c4..c599498 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -1663,6 +1663,7 @@
 }
 
 function f_gen_handover_req(integer bssap_idx := 0, charstring aoip_tla := "1.2.3.4",
+			    template (value) BSSMAP_IE_CellIdentifier cell_id_source := ts_CellID_LAC_CI(1, 1),
 			    template (omit) BSSMAP_oldToNewBSSIEs oldToNewBSSIEs := omit,
 			    template (omit) TestHdlrEncrParams enc := omit) return PDU_BSSAP {
 	var PDU_BSSAP ho_req;
@@ -1687,13 +1688,17 @@
 	if (mp_bssap_cfg[bssap_idx].transport == BSSAP_TRANSPORT_AoIP) {
 		var BSSMAP_IE_AoIP_TransportLayerAddress tla :=
 			valueof(f_ts_BSSMAP_IE_AoIP_TLA(aoip_tla, 2342));
-		ho_req := valueof(ts_BSSMAP_HandoverRequest(omit, tla, oldToNewBSSIEs := oldToNewBSSIEs,
+		ho_req := valueof(ts_BSSMAP_HandoverRequest(omit, tla,
+							    cell_id_source := cell_id_source,
+							    oldToNewBSSIEs := oldToNewBSSIEs,
 							    encryptionInformation := encryptionInformation,
 							    chosenEncryptionAlgorithm := chosenEncryptionAlgorithm,
 							    kC128 := kc128));
 	} else {
 		var BSSMAP_IE_CircuitIdentityCode cic := valueof(ts_BSSMAP_IE_CIC(0,1));
-		ho_req := valueof(ts_BSSMAP_HandoverRequest(cic, omit, oldToNewBSSIEs := oldToNewBSSIEs,
+		ho_req := valueof(ts_BSSMAP_HandoverRequest(cic, omit,
+							    cell_id_source := cell_id_source,
+							    oldToNewBSSIEs := oldToNewBSSIEs,
 							    encryptionInformation := encryptionInformation,
 							    chosenEncryptionAlgorithm := chosenEncryptionAlgorithm,
 							    kC128 := kc128));
@@ -6003,6 +6008,7 @@
 
 	BSSAP.send(ts_BSSAP_Conn_Req(g_pars.sccp_addr_bsc, g_pars.sccp_addr_msc,
 				     f_gen_handover_req(aoip_tla := g_pars.host_aoip_tla,
+							cell_id_source := g_pars.cell_id_source,
 							oldToNewBSSIEs := oldToNewBSSIEs,
 							enc := g_pars.encr)));
 	BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND);
@@ -6186,6 +6192,19 @@
 	f_shutdown_helper();
 }
 
+/* Same as TC_srvcc_eutran_to_geran, but using SAI as serving Cell Identifier. SYS#5838 */
+testcase TC_srvcc_eutran_to_geran_src_sai() runs on test_CT {
+	var TestHdlrParams pars := f_gen_test_hdlr_pars();
+	pars.last_used_eutran_plmn := '323454'O;
+	pars.cell_id_source := valueof(ts_CellID_SAI('123456'O, 300, 444));
+	f_tc_ho_into_this_bsc_main(pars);
+
+	f_ctrs_bsc_and_bts_add(0, "srvcc:attempted");
+	f_ctrs_bsc_and_bts_add(0, "srvcc:completed");
+	f_ctrs_bsc_and_bts_verify();
+	f_shutdown_helper();
+}
+
 private function f_tc_srvcc_eutran_to_geran_ho_out(charstring id) runs on MSC_ConnHdlr {
 	var template (omit) BSSMAP_oldToNewBSSIEs oldToNewBSSIEs;
 	oldToNewBSSIEs := f_ts_BSSMAP_oldToNewBSSIEs(ts_BSSMAP_LastUsedEUTRANPLMNId(g_pars.last_used_eutran_plmn));
@@ -11242,6 +11261,7 @@
 		execute( TC_ho_into_this_bsc_tla_v6() );
 	}
 	execute( TC_srvcc_eutran_to_geran() );
+	execute( TC_srvcc_eutran_to_geran_src_sai() );
 	execute( TC_srvcc_eutran_to_geran_ho_out() );
 	execute( TC_srvcc_eutran_to_geran_forbid_fast_return() );
 	execute( TC_srvcc_eutran_to_geran_ho_out_forbid_fast_return() );
