diff --git a/library/SGsAP_Emulation.ttcn b/library/SGsAP_Emulation.ttcn
index 0c37840..968bcdd 100644
--- a/library/SGsAP_Emulation.ttcn
+++ b/library/SGsAP_Emulation.ttcn
@@ -31,6 +31,7 @@
 import from SGsAP_Templates all;
 import from Osmocom_Types all;
 import from IPL4asp_Types all;
+import from DNS_Helpers all;
 
 type component SGsAP_ConnHdlr {
 	port SGsAP_Conn_PT SGsAP;
@@ -295,6 +296,7 @@
 		var hexstring imsi;
 		var SGsAP_RecvFrom mrf;
 		var PDU_SGsAP msg;
+		var charstring vlr_name, mme_name;
 
 		alt {
 		/* SGsAP from client */
@@ -329,6 +331,24 @@
 			f_create_expect(imsi, vc_conn);
 			SGsAP_PROC.reply(SGsAPEM_register:{imsi, vc_conn}) to vc_conn;
 			}
+		[] SGsAP_PROC.getcall(SGsAPEM_reset_mme:{?,-}) -> param(mme_name) {
+			var octetstring mme_enc, vlr_enc;
+			mme_enc := f_enc_dns_hostname(mme_name);
+			msg := f_sgsap_xceive(ts_SGsAP_RESET_IND_MME(mme_enc));
+			vlr_enc := msg.sGsAP_RESET_ACK.vLR_Name.name;
+			vlr_name := f_dec_dns_hostname(vlr_enc);
+			SGsAP_PROC.reply(SGsAPEM_reset_mme:{mme_name, vlr_name});
+			}
+		[] SGsAP_PROC.getcall(SGsAPEM_reset_vlr:{?,-}) -> param(vlr_name) {
+			var octetstring mme_enc, vlr_enc;
+			vlr_enc := f_enc_dns_hostname(vlr_name);
+			msg := f_sgsap_xceive(ts_SGsAP_RESET_IND_VLR(vlr_enc));
+			mme_enc := msg.sGsAP_RESET_ACK.mME_Name.name;
+			mme_name := f_dec_dns_hostname(mme_enc);
+			SGsAP_PROC.reply(SGsAPEM_reset_vlr:{vlr_name, mme_name});
+			}
+
+
 		}
 
 	}
@@ -343,8 +363,11 @@
 
 signature SGsAPEM_register(in hexstring imsi, in SGsAP_ConnHdlr hdlr);
 
+signature SGsAPEM_reset_vlr(in charstring vlr_name, out charstring mme_name);
+signature SGsAPEM_reset_mme(in charstring mme_name, out charstring vlr_name);
+
 type port SGsAPEM_PROC_PT procedure {
-	inout SGsAPEM_register;
+	inout SGsAPEM_register, SGsAPEM_reset_vlr, SGsAPEM_reset_mme;
 } with { extension "internal" };
 
 /* Function that can be used as create_cb and will usse the expect table */
@@ -399,6 +422,25 @@
 	}
 }
 
+/* client/conn_hdlr side function to use procedure port to send RESET from emulated MME */
+function f_sgsap_reset_mme(charstring mme_name) runs on SGsAP_ConnHdlr return charstring {
+	var charstring vlr_name;
+	SGsAP_PROC.call(SGsAPEM_reset_mme:{mme_name, -}) {
+		[] SGsAP_PROC.getreply(SGsAPEM_reset_mme:{mme_name,?}) -> param(vlr_name) {
+			return vlr_name;
+			};
+	}
+}
+
+/* client/conn_hdlr side function to use procedure port to send RESET from emulated VLR */
+function f_sgsap_reset_vlr(charstring vlr_name) runs on SGsAP_ConnHdlr return charstring {
+	var charstring mme_name;
+	SGsAP_PROC.call(SGsAPEM_reset_vlr:{vlr_name, -}) {
+		[] SGsAP_PROC.getreply(SGsAPEM_reset_vlr:{vlr_name,?}) -> param(mme_name) {
+			return mme_name;
+			};
+	}
+}
 
 private function f_expect_table_init()
 runs on SGsAP_Emulation_CT {
