diff --git a/s1gw/S1GW_Tests.ttcn b/s1gw/S1GW_Tests.ttcn
index 6237557..30dcd46 100644
--- a/s1gw/S1GW_Tests.ttcn
+++ b/s1gw/S1GW_Tests.ttcn
@@ -90,8 +90,10 @@
 	var ConnHdlr vc_conn;
 
 	vc_conn := ConnHdlr.create("ConnHdlr-" & testcasename());
-	connect(vc_conn:S1AP_CONN, vc_S1APSRV:S1AP_CLIENT);
-	connect(vc_conn:S1AP_PROC, vc_S1APSRV:S1AP_PROC);
+	if (vc_S1APSRV.running) {
+		connect(vc_conn:S1AP_CONN, vc_S1APSRV:S1AP_CLIENT);
+		connect(vc_conn:S1AP_PROC, vc_S1APSRV:S1AP_PROC);
+	}
 	vc_conn.start(derefers(fn)(pars));
 
 	return vc_conn;
@@ -214,9 +216,65 @@
 	}
 }
 
+
+/* MME terminates connection, expect S1GW to terminate the eNB connection */
+function f_TC_conn_term_by_mme(ConnHdlrPars pars) runs on ConnHdlr {
+	var Global_ENB_ID genb_id := valueof(ts_Global_ENB_ID(pars.seed));
+
+	f_ConnHdlr_register(genb_id);
+
+	f_ConnHdlr_connect();
+	f_ConnHdlr_setup(genb_id);
+	f_sleep(0.5); /* keep the connection idle for some time */
+
+	/* MME (S1AP_Server_CT) terminates connection */
+	f_ConnHdlr_close_conn(genb_id);
+	/* expect our eNB connection to be released gracefully */
+	S1AP_ENB.receive(tr_SctpShutDownEvent(g_s1ap_conn_id));
+	S1AP_ENB.receive(tr_SctpAssocChange(SCTP_SHUTDOWN_COMP, g_s1ap_conn_id));
+	S1AP_ENB.receive(PortEvent:{connClosed := ?});
+
+	f_ConnHdlr_unregister(genb_id);
+}
+testcase TC_conn_term_by_mme() runs on test_CT {
+	var ConnHdlrPars pars := { seed := 0 };
+	var ConnHdlr vc_conn;
+
+	f_init();
+	f_init_s1ap_srv();
+
+	vc_conn := f_ConnHdlr_spawn(refers(f_TC_conn_term_by_mme), pars);
+	vc_conn.done;
+}
+
+
+/* MME is not available, expect S1GW to terminate the eNB connection */
+function f_TC_conn_term_mme_unavail(ConnHdlrPars pars) runs on ConnHdlr {
+	/* establish an eNB connection to the S1GW */
+	f_ConnHdlr_connect();
+	/* expect our eNB connection to be released gracefully */
+	S1AP_ENB.receive(tr_SctpShutDownEvent(g_s1ap_conn_id));
+	S1AP_ENB.receive(tr_SctpAssocChange(SCTP_SHUTDOWN_COMP, g_s1ap_conn_id));
+	S1AP_ENB.receive(PortEvent:{connClosed := ?});
+	setverdict(pass);
+}
+testcase TC_conn_term_mme_unavail() runs on test_CT {
+	var ConnHdlrPars pars := { seed := 0 };
+	var ConnHdlr vc_conn;
+
+	f_init();
+	f_init_s1ap_srv();
+	vc_S1APSRV.stop;
+
+	vc_conn := f_ConnHdlr_spawn(refers(f_TC_conn_term_mme_unavail), pars);
+	vc_conn.done;
+}
+
 control {
 	execute( TC_setup() );
 	execute( TC_setup_multi() );
+	execute( TC_conn_term_by_mme() );
+	execute( TC_conn_term_mme_unavail() );
 }
 
 }
