diff --git a/library/BSSAP_Adapter.ttcn b/library/BSSAP_Adapter.ttcn
index 1a9fdb4..7404a6f 100644
--- a/library/BSSAP_Adapter.ttcn
+++ b/library/BSSAP_Adapter.ttcn
@@ -28,8 +28,9 @@
 
 type record BSSAP_Adapter {
 	/* component references */
-	M3UA_CT vc_M3UA, /* only in 3GPP AoIP */
-	IPA_Emulation_CT vc_IPA, /* only in SCCPliste */
+	M3UA_CT vc_M3UA,		/* only in 3GPP AoIP */
+	IPA_Emulation_CT vc_IPA,	/* only in SCCPlite */
+	IPA_EventWaiter_CT vc_WAIT,	/* only in SCCPlite */
 	SCCP_CT vc_SCCP,
 
 	MSC_SCCP_MTP3_parameters sccp_pars,
@@ -114,18 +115,32 @@
 		map(ba.vc_IPA:IPA_PORT, system:IPA_CODEC_PT);
 		/* connect MTP3 service provider (IPA) to lower side of SCCP */
 		connect(ba.vc_IPA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT);
+		/* connect waiter to general IPA port (for ASP_IPA_Event) */
+		ba.vc_WAIT := IPA_EventWaiter_CT.create(id & "-IPA-WAIT");
+		connect(ba.vc_IPA:IPA_SP_PORT, ba.vc_WAIT:IPA_SP_PORT);
+		ba.vc_WAIT.start(IPA_Emulation.waiter_main());
 		ba.vc_IPA.start(IPA_Emulation.main_server(cfg.sctp_addr.local_ip_addr,
 							cfg.sctp_addr.local_sctp_port));
+		/* wait until we received an IPA CCM ID_ACK */
+		ba.vc_WAIT.done;
+		disconnect(ba.vc_IPA:IPA_SP_PORT, ba.vc_WAIT:IPA_SP_PORT);
 		}
 	case (BSSAP_TRANSPORT_SCCPlite_CLIENT) {
 		ba.vc_IPA := IPA_Emulation_CT.create(id & "-IPA");
 		map(ba.vc_IPA:IPA_PORT, system:IPA_CODEC_PT);
 		/* connect MTP3 service provider (IPA) to lower side of SCCP */
 		connect(ba.vc_IPA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT);
+		/* connect waiter to general IPA port (for ASP_IPA_Event) */
+		ba.vc_WAIT := IPA_EventWaiter_CT.create(id & "-IPA-WAIT");
+		connect(ba.vc_IPA:IPA_SP_PORT, ba.vc_WAIT:IPA_SP_PORT);
+		ba.vc_WAIT.start(IPA_Emulation.waiter_main());
 		ba.vc_IPA.start(IPA_Emulation.main_client(cfg.sctp_addr.remote_ip_addr,
 							cfg.sctp_addr.remote_sctp_port,
 							cfg.sctp_addr.local_ip_addr,
 							cfg.sctp_addr.local_sctp_port));
+		/* wait until we received an IPA CCM ID_ACK */
+		ba.vc_WAIT.done;
+		disconnect(ba.vc_IPA:IPA_SP_PORT, ba.vc_WAIT:IPA_SP_PORT);
 		}
 	case else {
 		setverdict(fail, "Unsuppored BSSAP_Transport");
@@ -133,8 +148,6 @@
 		}
 	}
 
-	ba.vc_SCCP.start(SCCPStart(ba.sccp_pars));
-
 	if (isvalue(ops)) {
 		timer T := 5.0;
 		T.start;
@@ -145,6 +158,9 @@
 		/* start the BSSMAP emulation */
 		ba.vc_BSSMAP.start(BSSMAP_Emulation.main(valueof(ops), ""));
 	}
+
+	ba.vc_SCCP.start(SCCPStart(ba.sccp_pars));
+
 }
 
 
diff --git a/library/IPA_Emulation.ttcnpp b/library/IPA_Emulation.ttcnpp
index 41a3968..df2b15e 100644
--- a/library/IPA_Emulation.ttcnpp
+++ b/library/IPA_Emulation.ttcnpp
@@ -243,6 +243,9 @@
 }
 
 private function f_send_IPA_EVT(template ASP_IPA_Event evt) runs on IPA_Emulation_CT {
+	if (IPA_SP_PORT.checkstate("Connected")) {
+		IPA_SP_PORT.send(evt);
+	}
 #ifdef IPA_EMULATION_RSL
 	if (IPA_RSL_PORT.checkstate("Connected")) {
 		IPA_RSL_PORT.send(evt);
@@ -368,6 +371,7 @@
 			 * the TCP connection is established.  Other implementations may differ.
 			 * We currently ignore it completely - but actually we should make sure that
 			 * one ID_ACK is received by the server at some point */
+			f_send_IPA_EVT(t_ASP_IPA_EVT_UD(ASP_IPA_EVENT_ID_ACK));
 		}
 		case (IPAC_MSGT_ID_RESP) {
 			log("IPA ID RESP: ", ccm.u.resp);
@@ -635,4 +639,24 @@
 	}
 }
 
+/***********************************************************************
+ * IPA Event waiter component. Wait for ASP_IPA_EVENT_ID_ACK
+ ***********************************************************************/
+
+type component IPA_EventWaiter_CT {
+	port IPA_SP_PT IPA_SP_PORT;
+}
+
+function waiter_main(template ASP_IPA_Event wait_for := t_ASP_IPA_EVT_UD(ASP_IPA_EVENT_ID_ACK))
+runs on IPA_EventWaiter_CT {
+
+	alt {
+	[] IPA_SP_PORT.receive(wait_for) {
+		setverdict(pass);
+		}
+	[] IPA_SP_PORT.receive { repeat; }
+	}
+}
+
+
 }
