diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn
index 698c1a2..c3dbecd 100644
--- a/hnbgw/HNBGW_Tests.ttcn
+++ b/hnbgw/HNBGW_Tests.ttcn
@@ -820,6 +820,8 @@
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_initial_ue), t_pars(1));
 	vc_conn.done;
+
+	f_shutdown_helper();
 }
 testcase TC_ranap_ps_initial_ue() runs on test_CT {
 	var ConnHdlr vc_conn;
@@ -830,6 +832,8 @@
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_initial_ue), t_pars(2, true));
 	vc_conn.done;
+
+	f_shutdown_helper();
 }
 
 private function f_vty_set_sccp_max_optional_data(TELNETasp_PT pt, integer val := -1)
@@ -860,6 +864,8 @@
 
 	/* reset */
 	f_vty_set_sccp_max_optional_data(HNBGWVTY);
+
+	f_shutdown_helper();
 }
 testcase TC_ranap_ps_initial_ue_empty_cr() runs on test_CT {
 	var ConnHdlr vc_conn;
@@ -875,6 +881,8 @@
 
 	/* reset */
 	f_vty_set_sccp_max_optional_data(HNBGWVTY);
+
+	f_shutdown_helper();
 }
 
 type record Testdata_CR_Limit {
@@ -927,6 +935,8 @@
 
 	/* reset */
 	f_vty_set_sccp_max_optional_data(HNBGWVTY);
+
+	f_shutdown_helper();
 }
 
 /* Reply to a received CRCX with an OK (or the reply configured in cpars), using the given parameters.
@@ -1147,6 +1157,8 @@
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_rab_assignment), t_pars(3));
 	vc_conn.done;
+
+	f_shutdown_helper();
 }
 
 friend function f_tc_rab_assign_fail(charstring id, TestHdlrParams pars) runs on ConnHdlr {
@@ -1183,6 +1195,8 @@
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_rab_assign_fail), t_pars(4));
 	vc_conn.done;
+
+	f_shutdown_helper();
 }
 
 friend function f_tc_rab_release(charstring id, TestHdlrParams pars) runs on ConnHdlr {
@@ -1223,6 +1237,8 @@
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_rab_release), t_pars(5));
 	vc_conn.done;
+
+	f_shutdown_helper();
 }
 
 friend function f_tc_rab_assign_mgcp_to(charstring id, TestHdlrParams pars) runs on ConnHdlr {
@@ -1272,6 +1288,8 @@
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_rab_assign_mgcp_to), t_pars(6));
 	vc_conn.done;
+
+	f_shutdown_helper();
 }
 
 /* Create an Iuh connection; send InitialUE; transceive data both directions */
@@ -1297,6 +1315,8 @@
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_ranap_bidir), t_pars(3));
 	vc_conn.done;
+
+	f_shutdown_helper();
 }
 testcase TC_ranap_ps_bidir() runs on test_CT {
 	var ConnHdlr vc_conn;
@@ -1306,6 +1326,8 @@
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_ranap_bidir), t_pars(4, true));
 	vc_conn.done;
+
+	f_shutdown_helper();
 }
 
 
@@ -1331,6 +1353,8 @@
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_ranap_mo_disconnect), t_pars(5));
 	vc_conn.done;
+
+	f_shutdown_helper();
 }
 testcase TC_ranap_ps_mo_disconnect() runs on test_CT {
 	var ConnHdlr vc_conn;
@@ -1340,6 +1364,8 @@
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_ranap_mo_disconnect), t_pars(6));
 	vc_conn.done;
+
+	f_shutdown_helper();
 }
 
 type record FTeid {
@@ -1508,6 +1534,8 @@
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_ps_rab_assignment_with_pfcp), t_pars(7, ps_domain := true));
 	vc_conn.done;
+
+	f_shutdown_helper();
 }
 
 altstep as_disallow_pfcp() runs on ConnHdlr {
@@ -1570,6 +1598,8 @@
 
 	vc_conn := f_start_handler_with_pars(refers(f_tc_ps_rab_assignment_without_pfcp), t_pars(7, ps_domain := true));
 	vc_conn.done;
+
+	f_shutdown_helper();
 }
 
 control {
