diff --git a/stp/STP_Tests_IPA.ttcn b/stp/STP_Tests_IPA.ttcn
index beb2aa9..48652b8 100644
--- a/stp/STP_Tests_IPA.ttcn
+++ b/stp/STP_Tests_IPA.ttcn
@@ -168,27 +168,37 @@
 	}
 }
 
-/* test "traffic-mode override" behavior */
-testcase TC_tmt_override() runs on IPA_CT {
+private function f_tc_tmt_override(boolean unknwon_dynamic_asp)
+runs on IPA_CT {
 	f_init_ipa();
 
 	/* bring up the 'sender' side (single ASP in AS) */
-	f_connect_ipa(4);
+	f_connect_ipa(4, unknwon_dynamic_asp);
 	/* activate the first 'receiver' side ASP */
-	f_connect_ipa(5);
+	f_connect_ipa(5, unknwon_dynamic_asp);
 	f_sleep(1.0);
 
 	/* verify traffic is routed from sender to [sole] receiver */
 	f_test_traffic(4, 5);
 
 	/* activate the second 'receiver' side ASP */
-	f_connect_ipa(6);
+	f_connect_ipa(6, unknwon_dynamic_asp);
 	f_sleep(1.0);
 
 	/* verify traffic is routed from sender to new receiver */
 	f_test_traffic(4, 6);
 }
 
+/* test "traffic-mode override" behavior */
+testcase TC_tmt_override() runs on IPA_CT {
+	f_tc_tmt_override(false);
+}
+
+/* test "traffic-mode override" behavior, with "accept-asp-connections dynamic-permitted" and clients from unknown ASPs */
+testcase TC_unknown_client_dynamic_tmt_override() runs on IPA_CT {
+	f_tc_tmt_override(true);
+}
+
 private altstep as_count_rx(integer idx, template (present) octetstring exp, inout integer counter)
 runs on IPA_CT {
 	[] IPA[idx].receive(t_ASP_MTP3_TRANSFERind(?, ?, ?, ?, exp)) {
@@ -196,16 +206,16 @@
 		}
 }
 
-/* test "traffic-mode load-share" behavior */
-testcase TC_tmt_loadshare() runs on IPA_CT {
+private function f_tc_tmt_loadshare(boolean unknwon_dynamic_asp)
+runs on IPA_CT {
 	var integer i;
 
 	f_init_ipa();
 
 	/* bring up the 'sender' side (single ASP in AS) */
-	f_connect_ipa(0);
+	f_connect_ipa(0, unknwon_dynamic_asp);
 	/* activate the first 'receiver' side ASP */
-	f_connect_ipa(1);
+	f_connect_ipa(1, unknwon_dynamic_asp);
 	f_sleep(1.0);
 
 	/* verify traffic is routed from sender to [sole] receiver */
@@ -214,7 +224,7 @@
 	}
 
 	/* activate the second 'receiver' side ASP */
-	f_connect_ipa(2);
+	f_connect_ipa(2, unknwon_dynamic_asp);
 	f_sleep(1.0);
 
 	/* verify traffic is routed from sender to new receiver */
@@ -238,12 +248,24 @@
 	setverdict(pass);
 }
 
+/* test "traffic-mode load-share" behavior */
+testcase TC_tmt_loadshare() runs on IPA_CT {
+	f_tc_tmt_loadshare(false);
+}
+
+/* test "traffic-mode override" behavior, with "accept-asp-connections dynamic-permitted" and clients from unknown ASPs */
+testcase TC_unknown_client_dynamic_tmt_loadshare() runs on IPA_CT {
+	f_tc_tmt_override(true);
+}
+
 control {
 	execute( TC_unknown_client_nodynamic() );
 	execute( TC_known_client_nodynamic() );
 	execute( TC_unknown_client_dynamic() );
-	execute (TC_tmt_override() );
+	execute( TC_tmt_override() );
+	execute( TC_unknown_client_dynamic_tmt_override() );
 	execute( TC_tmt_loadshare() );
+	execute( TC_unknown_client_dynamic_tmt_loadshare() );
 }
 
 
