diff --git a/asterisk/Asterisk_Tests.ttcn b/asterisk/Asterisk_Tests.ttcn
index 08a5f65..8a124c1 100644
--- a/asterisk/Asterisk_Tests.ttcn
+++ b/asterisk/Asterisk_Tests.ttcn
@@ -37,6 +37,7 @@
 
 	charstring mp_local_ims_host := "127.0.0.3";
 	integer mp_local_ims_port := 5060;
+	charstring mp_ims_imsi := "238010000090828";
 
 	/* Asterisk AMI: */
 	charstring mp_ami_remote_host := "127.0.0.1";
@@ -45,6 +46,7 @@
 	integer mp_ami_local_port := 0;
 	charstring mp_ami_user := "test_user";
 	charstring mp_ami_secret := "1234";
+	charstring mp_volte_ims_outbound_registration := "volte_ims";
 }
 
 type component test_CT {
@@ -74,6 +76,15 @@
 	return valueof(pars);
 }
 
+function f_init_IMS_ConnHdlrPars(integer idx := 1) runs on test_CT return IMS_ConnHdlrPars {
+	var template (value) IMS_CallPars cp := t_IMS_CallPars(mp_local_sip_host, 1234 + 2*idx);
+	var template (value) IMS_ConnHdlrPars pars := t_IMS_Pars(mp_local_ims_host,
+								 mp_local_ims_port,
+								 mp_ims_imsi,
+								 cp := cp);
+	return valueof(pars);
+}
+
 /* Initialize connection towards Asterisk AMI */
 private function f_init_ami() runs on test_CT {
 	var charstring id := "Asterisk_Tests_AMI_EMU";
@@ -139,6 +150,22 @@
 	return vc_conn;
 }
 
+function f_start_handler_IMS(ims_void_fn fn, IMS_ConnHdlrPars pars)
+runs on test_CT return IMS_ConnHdlr {
+	var IMS_ConnHdlr vc_conn;
+	var charstring id := testcasename() & "-IMS_ConnHdlr-" & pars.user;
+
+	vc_conn := IMS_ConnHdlr.create(id) alive;
+
+	connect(vc_conn:SIP, vc_IMS:CLIENT);
+	connect(vc_conn:SIP_PROC, vc_IMS:CLIENT_PROC);
+
+	connect(vc_conn:COORD, self:IMS_COORD);
+
+	vc_conn.start(f_ims_handler_init(fn, id, pars));
+	return vc_conn;
+}
+
 /* Test SIP registration of local clients */
 private function f_TC_internal_registration(charstring id) runs on SIPConnHdlr {
 
@@ -322,12 +349,51 @@
 	setverdict(pass);
 }
 
+/* Test SIP registration of local clients */
+private function f_TC_ims_registration(charstring id) runs on IMS_ConnHdlr {
+	f_create_sip_expect(valueof(ts_SipUrl_from_Addr_Union(g_pars.registrar_sip_record.addr)));
+	as_IMS_register();
+	setverdict(pass);
+}
+testcase TC_ims_registration() runs on test_CT {
+	var IMS_ConnHdlrPars pars;
+	var IMS_ConnHdlr vc_conn;
+	f_init();
+	pars := f_init_IMS_ConnHdlrPars();
+	vc_conn := f_start_handler_IMS(refers(f_TC_ims_registration), pars);
+
+	/* Give some time for IMS_ConnHdlr to register SIP expect. This could be done through IMS_COORD. */
+	f_sleep(1.0);
+	/* Clear events: */
+	AMI_CLIENT.clear;
+	/* Trigger registration: */
+	f_ami_action_PJSIPRegister(AMI_CLIENT, mp_volte_ims_outbound_registration);
+	/* TODO: Rx "Event: AuthRequest" */
+	/* TODO: Tx "Action: AuthResponse" */
+	/* TODO: Rx "Response: Success" */
+	/* TODO: once registration is successful, rx:
+	 * Event: Registry
+	 * ChannelType: pjsip
+	 * Username: <value>
+	 * Domain: <value>
+	 * Status: <value>
+	 * Cause: <value> */
+
+	 /* TODO: test "Action: PJSIPUnregister" */
+
+	 /* TODO: in another test emulating a call, test "Action: DedicatedBearerStatus" */
+
+	vc_conn.done;
+	f_shutdown();
+}
+
 control {
 	execute( TC_internal_registration() );
 	execute( TC_internal_call_momt() );
 	execute( TC_internal_call_all_2registered() );
 	execute( TC_internal_call_all_3registered() );
 	execute( TC_internal_call_all_4registered() );
+	execute( TC_ims_registration() );
 }
 
 }
