diff --git a/ipa/BSC_MS_Simulation.ttcn b/ipa/BSC_MS_Simulation.ttcn
new file mode 100644
index 0000000..c33e848
--- /dev/null
+++ b/ipa/BSC_MS_Simulation.ttcn
@@ -0,0 +1,77 @@
+module BSC_MS_Simulation {
+
+import from IPL4asp_Types all;
+
+import from IPA_Emulation all;
+
+import from SCCP_Types all;
+import from SCCPasp_Types all;
+import from SCCP_Emulation all;
+
+import from BSSMAP_Emulation all;
+
+import from BSC_MS_ConnectionHandler all;
+
+type component BSC_CT {
+	/* component references */
+	var IPA_Emulation_CT vc_IPA;
+	var SCCP_CT vc_SCCP;
+	var BSSMAP_Emulation_CT vc_BSSMAP;
+	/* test port to SCCP emulation */
+	port SCCPasp_PT SCCP;
+
+	var SCCP_PAR_Address g_sccp_addr_own;
+	var SCCP_PAR_Address g_sccp_addr_remote;
+}
+
+function main(charstring remote_ip, PortNumber remote_port,
+		charstring local_ip, PortNumber local_port,
+		MSC_SCCP_MTP3_parameters sccp_pars,
+		SCCP_PAR_Address sccp_addr_own,
+		SCCP_PAR_Address sccp_addr_remote) runs on BSC_CT
+{
+	g_sccp_addr_own := sccp_addr_own;
+	g_sccp_addr_remote := sccp_addr_remote;
+
+	/* create components */
+	vc_IPA := IPA_Emulation_CT.create;
+	vc_SCCP := SCCP_CT.create;
+	vc_BSSMAP := BSSMAP_Emulation_CT.create;
+
+	map(vc_IPA:IPA_PORT, system:IPA_CODEC_PT);
+
+	/* connect MTP3 service provider (IPA) to lower side of SCCP */
+	connect(vc_IPA:MTP3_SP_PORT, vc_SCCP:MTP3_SCCP_PORT);
+
+	/* connect BSSNAP dispatcher to upper side of SCCP */
+	connect(vc_BSSMAP:SCCP, vc_SCCP:SCCP_SP_PORT);
+
+	vc_IPA.start(IPA_Emulation.main_client(remote_ip, remote_port, local_ip, local_port));
+	vc_SCCP.start(SCCPStart(sccp_pars));
+	vc_BSSMAP.start(BSSMAP_Emulation.main(BSC_MS_BssmapOps));
+
+	while (true) {
+		timer T := 5.0;
+		T.start;
+		T.timeout;
+		f_start_BSC_MS();
+		//vc_IPA.MTP3_SP_PORT.send(t_ASP_MTP3_TRANSFERreq_sccp('83'O, 1, 2, 0, '012345'O));
+	}
+
+	vc_IPA.done;
+	vc_BSSMAP.done;
+	vc_SCCP.done
+}
+
+function f_start_BSC_MS() runs on BSC_CT {
+	var BSC_MS_ConnHdlr vc_conn;
+
+	/* start new component */
+	vc_conn := BSC_MS_ConnHdlr.create;
+	/* connect client BSSAP port to BSSAP dispatcher */
+	connect(vc_conn:BSSAP, vc_BSSMAP:CLIENT);
+	/* start component */
+	vc_conn.start(BSC_MS_ConnectionHandler.main(g_sccp_addr_own, g_sccp_addr_remote));
+}
+
+}
