diff --git a/upf/UPF_Tests.ttcn b/upf/UPF_Tests.ttcn
index 3dd469b..8382943 100644
--- a/upf/UPF_Tests.ttcn
+++ b/upf/UPF_Tests.ttcn
@@ -650,7 +650,7 @@
 	log("established PFCP session: ", s);
 }
 
-private function f_create_PFCP_session() runs on CPF_ConnHdlr return PFCP_session
+private function f_create_PFCP_session_tunend() runs on CPF_ConnHdlr return PFCP_session
 {
 	var PFCP_session s := {
 		up_seid := -,
@@ -668,10 +668,10 @@
 	return s;
 }
 
-/* Do a PFCP Session Establishment with default values (see f_create_PFCP_session()) */
-private function f_session_est_default() runs on CPF_ConnHdlr return PFCP_session
+/* Do a PFCP Session Establishment with default values (see f_create_PFCP_session_tunend()) */
+private function f_session_est_tunend() runs on CPF_ConnHdlr return PFCP_session
 {
-	var PFCP_session s := f_create_PFCP_session();
+	var PFCP_session s := f_create_PFCP_session_tunend();
 	f_session_est(s, f_ruleset_tunend(s.gtp));
 	return s;
 }
@@ -711,9 +711,9 @@
 }
 
 /* Verify PFCP Session Establishment and Deletion */
-private function f_tc_session_est(charstring id) runs on CPF_ConnHdlr {
+private function f_tc_session_est_tunend(charstring id) runs on CPF_ConnHdlr {
 	f_assoc_setup();
-	var PFCP_session s := f_session_est_default();
+	var PFCP_session s := f_session_est_tunend();
 	f_sleep(1.0);
 	f_vty_expect_session_active(UPFVTY, s);
 	f_session_del(s);
@@ -722,11 +722,11 @@
 	f_assoc_release();
 	setverdict(pass);
 }
-testcase TC_session_est() runs on test_CT {
+testcase TC_session_est_tunend() runs on test_CT {
 	var CPF_ConnHdlr vc_conn;
 
 	f_init(guard_timeout := 15.0);
-	vc_conn := f_start_handler(refers(f_tc_session_est));
+	vc_conn := f_start_handler(refers(f_tc_session_est_tunend));
 	vc_conn.done;
 	f_shutdown_helper();
 }
@@ -734,7 +734,7 @@
 /* Verify that releasing a PFCP Association also releases all its sessions and GTP actions. */
 private function f_tc_session_term_by_assoc_rel(charstring id) runs on CPF_ConnHdlr {
 	f_assoc_setup();
-	var PFCP_session s := f_session_est_default();
+	var PFCP_session s := f_session_est_tunend();
 	f_sleep(1.0);
 	f_vty_expect_session_active(UPFVTY, s);
 	f_assoc_release();
@@ -754,7 +754,7 @@
 /* Verify that PFCP Sessions with a src-interface other than ACCESS or CORE are ACKed by osmo-upf but have no effect. */
 private function f_tc_session_est_noop(charstring id) runs on CPF_ConnHdlr {
 	f_assoc_setup();
-	var PFCP_session s := f_create_PFCP_session();
+	var PFCP_session s := f_create_PFCP_session_tunend();
 	f_session_est(s, f_ruleset_noop());
 
 	f_sleep(1.0);
@@ -778,7 +778,7 @@
 control {
 	execute( TC_assoc_node_id_v4() );
 	execute( TC_assoc_node_id_fqdn() );
-	execute( TC_session_est() );
+	execute( TC_session_est_tunend() );
 	execute( TC_session_term_by_assoc_rel() );
 	execute( TC_session_est_noop() );
 }
