diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index d59df0b946c15149d5784a8fe3c3dae346a292bc..b7b22143ea899688a35567778313e191ee5203ed 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -1333,6 +1333,57 @@ module OneM2M_Functions {
 				return vc_aeIndex;
 			}
 			
+			function f_cse_preamble_registerAeWithExternalId(template (omit) AcpType p_accessControlPolicyIDs := omit, in template (omit) PoaList p_poaList := omit, in boolean p_userAuthentication := false, in ExternalID p_externalID) runs on AeSimu return integer {//c_CRUDNDi
+			
+				var RequestPrimitive v_request;
+				var MsgIn v_response;
+
+				//Activate defaults when running on a PTC
+				f_cse_activateDefaults_ae();	
+				
+				if(p_userAuthentication == true) {
+					 // Create subscription and subscriber
+					 f_cse_preamble_createServiceSubscribedProfile(PX_ALLOWED_C_AE_IDS, p_allowedUsers := true);
+					 v_request := valueof(m_createAe(vc_aeSimuDesc.appId, p_accessControlPolicyIDs, PX_ALLOWED_C_AE_IDS[0], c_defaultAe1ResourceName, p_poaList));
+					 v_request := f_getCreateRequestPrimitive(int2, v_request, -1, PX_M2M_USER_ID);
+
+				} else {
+					 v_request := valueof(m_createAe(vc_aeSimuDesc.appId, p_accessControlPolicyIDs, vc_aeSimuDesc.aeIdStem, c_defaultAe1ResourceName, p_poaList));
+					 v_request := f_getCreateRequestPrimitive(int2, v_request, -1);
+				}
+
+				v_request.primitiveContent.aE.m2M_Ext_ID := p_externalID;
+				f_send(e_mcaPort, m_request(v_request));
+				
+				tc_ac.start;
+				alt {
+					[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+						tc_ac.stop;
+						setverdict(pass,__SCOPE__&":INFO: Application registered successfuly");
+						if(ischosen(v_response.primitive.responsePrimitive.primitiveContent.aE)) {
+							
+							f_checkAttributesToBeSaved(int2, v_request, v_response.primitive.responsePrimitive);
+							
+							vc_aeIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, int2);
+							vc_componentRegistered := true;
+							
+							if(ispresent(v_response.primitive.responsePrimitive.primitiveContent.aE.aE_ID)){
+								f_sendAcPrimitive("AE-ID_changed", vc_aeIndex);
+							}
+						}
+					}
+					[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
+						tc_ac.stop;
+						setverdict(inconc, __SCOPE__&":INFO: Error while registering application");
+					}
+					[] tc_ac.timeout {
+						setverdict(inconc, __SCOPE__&":INFO: No answer while registering resource");
+					}
+				}	
+				
+				f_checkAeSimuStatus();
+				return vc_aeIndex;
+			}
 			/**
 			 * @desc Creation of auxiliar resources ACP and AE for correct execution of the test case
 			 * @param p_allowedOperations Allowed operations for the auxiliar AE resource