diff --git a/cbc/MME_ConnectionHandler.ttcn b/cbc/MME_ConnectionHandler.ttcn
new file mode 100644
index 0000000..055aaa3
--- /dev/null
+++ b/cbc/MME_ConnectionHandler.ttcn
@@ -0,0 +1,103 @@
+/* MME (SBc-AP) Connection Handler of CBC test suite in TTCN-3
+ * (C) 2022 by sysmocom - s.f.m.c. GmbH <info@sysmocom.de>
+ * All rights reserved.
+ *
+ * Author: Pau Espin Pedrol <pespin@sysmocom.de>
+ *
+ * Released under the terms of GNU General Public License, Version 2 or
+ * (at your option) any later version.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+module MME_ConnectionHandler {
+
+import from SBC_AP_IEs all;
+import from SBC_AP_Constants all;
+import from SBC_AP_PDU_Contents all;
+import from SBC_AP_PDU_Descriptions all;
+import from SBC_AP_Types all;
+import from SBC_AP_Templates all;
+import from SBC_AP_CodecPort all;
+import from SBC_AP_Adapter all;
+
+import from CBS_Message all;
+
+type function void_fn() runs on MME_ConnHdlr;
+
+/* this component represents a single subscriber connection */
+type component MME_ConnHdlr extends SBC_AP_Adapter_CT {
+	var MME_ConnHdlrPars g_pars;
+}
+
+type record MME_ConnHdlrPars {
+	integer mme_sbcap_port,
+	charstring cbc_host,
+	integer cbc_sbcap_port,
+	void_fn start_fn,
+	CBS_Message exp_cbs_msg optional
+};
+
+function f_MME_ConnHdlr_main(charstring id, MME_ConnHdlrPars pars) runs on MME_ConnHdlr {
+	g_pars := pars;
+	SBC_AP_Adapter.f_connect(g_pars.cbc_host, g_pars.cbc_sbcap_port, "", g_pars.mme_sbcap_port);
+	g_pars.start_fn.apply();
+}
+
+function f_sbcap_tx_write_replace_warn_resp(CBS_Message msg, integer idx := 0)
+runs on MME_ConnHdlr {
+	var template (value) SBC_AP_PDU tx;
+	/* TODO: pass Unknown Tracking Area List as parameter above (omit by default) */
+	tx := ts_SBCAP_WRITE_WARNING_RESP(int2bit(msg.msg_id, 16),
+					  int2bit(msg.ser_nr, 16));
+	f_SBC_AP_send(tx, idx);
+}
+
+function f_sbcap_tx_stop_warn_resp(integer idx := 0, CBS_Message msg)
+runs on MME_ConnHdlr {
+	var template (value) SBC_AP_PDU tx;
+	tx := ts_SBCAP_STOP_WARNING_RESP(int2bit(msg.msg_id, 16),
+					  int2bit(msg.ser_nr, 16));
+	f_SBC_AP_send(tx, idx);
+}
+
+/* handle a SBc-AP Write-Replace Request and respond to it with Response or FAILURE depending on arguments */
+function f_sbcap_handle_write_replace_warn_req(CBS_Message msg, integer idx := 0)
+runs on MME_ConnHdlr {
+	var template (present) SBC_AP_PDU rx_templ;
+	var SBC_AP_RecvFrom rf;
+	rx_templ := tr_SBCAP_WRITE_WARNING(int2bit(msg.msg_id, 16),
+					   int2bit(msg.ser_nr, 16),
+					   msg.rep_period,
+					   msg.num_bcast_req);
+	alt {
+	[] SBC_AP[idx].receive(tr_SBC_AP_Recv(g_SBC_AP_conn_id[idx], rx_templ)) -> value rf {
+		log ("received expected req:", rf);
+		f_sbcap_tx_write_replace_warn_resp(msg, idx);
+		}
+	[] SBC_AP[idx].receive {
+		setverdict(fail, "Received unexpected SBc-AP in index ", idx);
+		}
+	}
+}
+
+/* handle a SBc-AP Stop-Warning-Request and respond to it with Response or FAILURE depending on arguments */
+function f_sbcap_handle_stop_warn_req(integer idx := 0, CBS_Message msg)
+runs on MME_ConnHdlr {
+	var template (present) SBC_AP_PDU rx_templ;
+	var SBC_AP_RecvFrom rf;
+
+	rx_templ := tr_SBCAP_STOP_WARNING(int2bit(msg.msg_id, 16),
+					  int2bit(msg.ser_nr, 16));
+	alt {
+	[] SBC_AP[idx].receive(tr_SBC_AP_Recv(g_SBC_AP_conn_id[idx], rx_templ)) -> value rf {
+		log ("received expected req:", rf);
+		f_sbcap_tx_stop_warn_resp(idx, msg);
+		}
+	[] SBC_AP[idx].receive {
+		setverdict(fail, "Received unexpected SBc-AP in index ", idx);
+		}
+	}
+}
+
+}
