diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index 09f8a22a21dc9b7c80923532af316712dd95194e..d681b2140a4cec18ea422f59b4464dd668d0b3e3 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -2071,7 +2071,9 @@ module OneM2M_Functions {
 				
 				f_checkAeSimuStatus();
 				
-				return v_retrievedResponse.primitive.responsePrimitive.primitiveContent;
+				vc_primitiveContentRetrievedResource := v_retrievedResponse.primitive.responsePrimitive.primitiveContent;
+				
+				return vc_primitiveContentRetrievedResource;
 				
 			}// end f_cse_retrieveResource	
 			
@@ -6839,6 +6841,34 @@ module OneM2M_Functions {
 				
 				//f_checkCseSimuStatus();
 			} 
+			
+			/**
+			 * @desc Sending of an Adapter Control primitive
+			 * @param event Action to be performed by TA
+			 * @param data Corresponding information for the correct execution of the given action
+			 * @verdict 
+			 */
+			function f_scefSimu_checkComponentDoneAndGetVerdict(Tester p_component) runs on ScefSimu {
+				
+				var verdicttype v_verdict := none;
+	
+				tc_done.start;
+				alt {
+					[] p_component.done -> value v_verdict {
+						tc_done.stop;
+					}
+					[] tc_done.timeout {
+						setverdict(inconc, __SCOPE__ & "INFO: Component did not finish");
+					}
+				}			 
+				
+				if(v_verdict == pass) {         // Component was successfully completed and got stopped state
+					setverdict(pass);
+				} else {
+					setverdict(inconc);            // Component was not completed successfully 
+				}
+				
+			} 
 
 		}//end of group ComponentStatus
 		
diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 00de2b54823fe97c91ce6154c829c720b6f5dac3..2d73735fb8256ae64de34f3bfe4f8a99f161f5e5 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -4316,8 +4316,8 @@ module OneM2M_Templates {
 			triggerInfoAddress 		:= omit, //O,
 			triggerInfoOperation 		:= omit, //O,
 			targetedResourceType 		:= omit, //O,
-			triggerReference 		:= omit	 //O,			
-
+			triggerReference 		:= omit,	 //O,			
+			choice := omit //NP
 		};
 		
 		
@@ -8911,7 +8911,7 @@ module OneM2M_Templates {
 				queryParameters     := p_queryParameters
 			} // End of template mw_uri_3gpp_nidd
 			
-			template (omit) OneM2M_Types_3GPP_T8.URI m_uri_3gpp_device_triggering(
+			template (value) OneM2M_Types_3GPP_T8.URI m_uri_3gpp_device_triggering(
 																																						in charstring p_apiRoot := "/",
 																																						in template (omit) charstring p_apiSpecificSuffixes := omit,
 																																						in template (omit) OneM2M_Types_3GPP_T8.URI.queryParameters p_queryParameters := omit
@@ -8931,9 +8931,9 @@ module OneM2M_Templates {
 		
 		group t8_request {
 			
-			template (omit) T8Request m_t8_request_get(
+			template (value) T8Request m_t8_request_get(
 																								in template (value) OneM2M_Types_3GPP_T8.URI p_resourceUri,
-																								in template (value) RequestHeaders p_requestHeaders,
+																								in template (omit) RequestHeaders p_requestHeaders := omit,
 																								in template (omit) RequestBodyT8 p_requestBody := omit
 																								) := {
 				resourceMethod := GET,
@@ -8942,9 +8942,9 @@ module OneM2M_Templates {
 				requestBody    := p_requestBody
 			} // End of template m_t8_request_get
 			
-			template (omit) T8Request m_t8_request_post(
+			template (value) T8Request m_t8_request_post(
 																									in template (value) OneM2M_Types_3GPP_T8.URI p_resourceUri,
-																									in template (value) RequestHeaders p_requestHeaders,
+																									in template (omit) RequestHeaders p_requestHeaders := omit,
 																									in template (omit) RequestBodyT8 p_requestBody := omit
 																									) modifies m_t8_request_get := {
 				resourceMethod := POST
@@ -9021,8 +9021,8 @@ module OneM2M_Templates {
 		
 		group t8_response {
 			
-			template (omit) T8Response m_t8_response_200_ok(
-																											in template (value) ResponseHeaders p_responseHeaders,
+			template (value) T8Response m_t8_response_200_ok(
+																											in template (omit) ResponseHeaders p_responseHeaders := omit,
 																											in template (omit) ResponseBody p_responseBody := omit
 																											) := {
 				responseCode    := 200,
@@ -9039,8 +9039,8 @@ module OneM2M_Templates {
 				responseBody    := p_responseBody
 			} // End of template mw_t8_response_200_ok
 			
-			template (omit) T8Response m_t8_response_201_created(
-																													in template (value) ResponseHeaders p_responseHeaders,
+			template (value) T8Response m_t8_response_201_created(
+																													in template (omit) ResponseHeaders p_responseHeaders:= omit,
 																													in template (omit) ResponseBody p_responseBody := omit
 																													) modifies m_t8_response_200_ok := {
 				responseCode    := 201
@@ -9207,13 +9207,13 @@ module OneM2M_Templates {
 			} // End of template mw_response_body_individualDeviceTriggering
 			template (value) DeviceTriggering m_deviceTriggering_response_delieveryResult(
 																																			in template (value) DeliveryResult p_deliveryResult,
-																																			in template (value) charstring p_self_
-																																			in template (value) ExternalId p_externalId,
+																																			in template (value) charstring p_self_,
 																																			in template (value) DurationSec p_validityPeriod := 0,
 																																			in template (value) Priority p_priority := NO_PRIORITY,
-																																			in template (value) Port p_applicationPortId,
-																																			in template (value) Bytes p_triggerPayload,
-																																			in template (value) Link p_notificationDestination
+																																			in template (omit) ExternalId p_externalId := omit,
+																																			in template (value) Port p_applicationPortId := 8181,
+																																			in template (value) Bytes p_triggerPayload := "NotInitialized",
+																																			in template (value) Link p_notificationDestination := "NotInitialized"
 																																			) := {
 				self_                   := p_self_,
 				externalId              := p_externalId,
@@ -9234,9 +9234,9 @@ module OneM2M_Templates {
 																																			in template (value) ExternalId p_externalId,
 																																			in template (value) DurationSec p_validityPeriod := 0,
 																																			in template (value) Priority p_priority := NO_PRIORITY,
-																																			in template (value) Port p_applicationPortId,
-																																			in template (value) Bytes p_triggerPayload,
-																																			in template (value) Link p_notificationDestination
+																																			in template (value) Port p_applicationPortId := 8181,
+																																			in template (value) Bytes p_triggerPayload := "NotInitialized",
+																																			in template (value) Link p_notificationDestination := "NotInitialized"
 																																			) := {
 				self_                   := omit,
 				externalId              := p_externalId,
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index a951cbdfb56808ebdbbd98881e3b328993160d0a..31ffc06b2852c09c91af1688356a29ad72c0de78 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -11,6 +11,7 @@
  */
 module OneM2M_PermutationFunctions {
 
+	import from OneM2M_Types_3GPP_T8 all;
 	import from OneM2M_TestSystem all;
 	import from OneM2M_Templates all;
 	import from OneM2M_Types all;//{type XSD.ID};
@@ -12224,7 +12225,7 @@ module OneM2M_PermutationFunctions {
 					var template PrimitiveContent v_contentResponseUri;
 					var template PrimitiveContent v_contentResponseRequestResource;
 					var RequestStatus v_requestStatus;
-					var URI v_requestResourceURI;
+					var OneM2M_Types.URI v_requestResourceURI;
 					var ResponseStatusCode v_statusCode;
 					var RequestID v_requestIdentifier;
 					var template PrimitiveContent v_primitiveContent;
@@ -12746,14 +12747,14 @@ module OneM2M_PermutationFunctions {
 
 		group device_trigerring {
 
-			function f_CSE_3GPP_TRIG_001(in TriggerPurpose p_triggerPurpose, in template (value) Bytes p_triggerPayload ) runs on ScefSimu system ScefSystem{
+			function f_CSE_3GPP_TRIG_001(in TriggerPurpose p_triggerPurpose, in template (value) Bytes p_triggerPayload ) runs on ScefSimu system ScefSystem {
 
 					var integer v_aeIndex := -1;
 					
 					var RequestPrimitive v_request;
 					
 					//{apiRoot}/3gpp-device-triggering/v1/{scsAsId}/transactions
-					var OneM2M_Types_3GPP_T8.URI v_requestResourceURI := m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), oct2char(unichar2oct(vc_scefSimuDesc.scefId)) & "/transactions");
+					var OneM2M_Types_3GPP_T8.URI v_requestResourceURI := valueof(m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), oct2char(unichar2oct(vc_scefSimuDesc.scefId)) & "/transactions"));
 									
 					var template T8Request v_requestPrimitive;
 
@@ -12776,7 +12777,7 @@ module OneM2M_PermutationFunctions {
 					
 					// Register AE1
 					vc_ae1.start(f_cse_preamble_registerAe());
-					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					f_scefSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 					v_aeIndex := f_getLatestResourceIndex(vc_ae1);
 
 					// TriggerRequest under AE
@@ -12813,7 +12814,7 @@ module OneM2M_PermutationFunctions {
 					var RequestPrimitive v_request;
 					
 					//{apiRoot}/3gpp-device-triggering/v1/{scsAsId}/transactions
-					var OneM2M_Types_3GPP_T8.URI v_requestResourceURI := m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), oct2char(unichar2oct(vc_scefSimuDesc.scefId)) & "/transactions");
+					var OneM2M_Types_3GPP_T8.URI v_requestResourceURI := valueof(m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), oct2char(unichar2oct(vc_scefSimuDesc.scefId)) & "/transactions"));
 									
 					var template T8Request v_requestPrimitive;
 
@@ -12833,12 +12834,12 @@ module OneM2M_PermutationFunctions {
 					
 					// Register AE1
 					vc_ae1.start(f_cse_preamble_registerAe());
-					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					f_scefSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 					v_aeIndex := f_getLatestResourceIndex(vc_ae1);
 
 					// TriggerRequest under AE
 					vc_ae1.start(f_cse_createResource(int47, v_createTriggerRequestResource, v_aeIndex));
-					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					f_scefSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 					v_triggerRequestIndex := f_getLatestResourceIndex(vc_ae1);
 
 					//IUT sent a 3GPP Device Trigger Request
@@ -12848,11 +12849,14 @@ module OneM2M_PermutationFunctions {
 					// Test Body		
 					
 					// SCEF sends Device Triggering response 				
-					mcnPort.send(mw_t8Response(mw_t8_response_201_created(-, mw_response_body_individualDeviceTriggering(v_deviceTriggeringResponse))));	
+					mcnPort.send(m_t8Response(m_t8_response_201_created(-, m_response_body_individualDeviceTriggering(valueof(v_deviceTriggeringResponse)))));	
 					
 					// Verifiy that the <triggerRequest> resource containing triggerStatus attribute set to p_triggerStatus
-					v_contentTriggerRequest := f_cse_retrieveResource(v_triggerRequestIndex);
-
+					vc_ae1.start(f_cse_retrieveResource(v_triggerRequestIndex));
+					f_scefSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_contentTriggerRequest := f_getPrimitiveContentRetrievedResource(vc_ae1);
+					
 					if(not(match(valueof(v_contentTriggerRequest.triggerRequest.triggerStatus), p_triggerStatus))) {
 						setverdict(fail, __SCOPE__&":INFO: <triggerRequest> resource doesn't contain triggerStatus attribute set correctly");
 					} else {
@@ -12874,7 +12878,7 @@ module OneM2M_PermutationFunctions {
 					var RequestPrimitive v_request;
 					
 					//{apiRoot}/3gpp-device-triggering/v1/{scsAsId}/transactions
-					var OneM2M_Types_3GPP_T8.URI v_requestResourceURI := m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), oct2char(unichar2oct(vc_scefSimuDesc.scefId)) & "/transactions");
+					var OneM2M_Types_3GPP_T8.URI v_requestResourceURI := valueof(m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), oct2char(unichar2oct(vc_scefSimuDesc.scefId)) & "/transactions"));
 									
 					var template T8Request v_requestPrimitive;
 
@@ -12894,12 +12898,12 @@ module OneM2M_PermutationFunctions {
 					
 					// Register AE1
 					vc_ae1.start(f_cse_preamble_registerAe());
-					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					f_scefSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 					v_aeIndex := f_getLatestResourceIndex(vc_ae1);
 
 					// TriggerRequest under AE
 					vc_ae1.start(f_cse_createResource(int47, v_createTriggerRequestResource, v_aeIndex));
-					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					f_scefSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 					v_triggerRequestIndex := f_getLatestResourceIndex(vc_ae1);
 
 					//IUT sent a 3GPP Device Trigger Request
@@ -12909,8 +12913,8 @@ module OneM2M_PermutationFunctions {
 					// Test Body		
 					
 					// SCEF sends DeviceTriggeringDeliveryReportNotification
-					mcnPort.send(mw_t8Request(mw_t8_request_post(mw_uri_3gpp_device_triggering(-, "notificationDestination", omit), -, 
-						mw_request_body_deviceTriggeringDeliveryReportNotification(mw_deviceTriggeringDeliveryReportNotification(v_requestResourceURI + "/cf_001" , SUCCESS)))));  // deliveryResult SUCCESS, cf_001: Uri of deviceTriggeringTransaction 
+					mcnPort.send(m_t8Request(m_t8_request_post(m_uri_3gpp_device_triggering(-, "notificationDestination", omit), -, 
+					mw_request_body_deviceTriggeringDeliveryReportNotification(mw_deviceTriggeringDeliveryReportNotification(v_requestResourceURI.apiRoot & v_requestResourceURI.apiName & v_requestResourceURI.apiVersion & v_requestResourceURI.apiSpecificSuffixes & "/cf_001" , SUCCESS)))));  // deliveryResult SUCCESS, cf_001: Uri of deviceTriggeringTransaction 
 					
 					tc_ac.start;
 					alt{
@@ -12928,8 +12932,11 @@ module OneM2M_PermutationFunctions {
 					}
 
 					// Verifiy that the <triggerRequest> resource containing triggerStatus attribute set to p_triggerStatus
-					v_contentTriggerRequest := f_cse_retrieveResource(v_triggerRequestIndex);
-
+					vc_ae1.start(f_cse_retrieveResource(v_triggerRequestIndex));
+					f_scefSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_contentTriggerRequest := f_getPrimitiveContentRetrievedResource(vc_ae1);
+					
 					if(not(match(valueof(v_contentTriggerRequest.triggerRequest.triggerStatus), p_triggerStatus))) {
 						setverdict(fail, __SCOPE__&":INFO: <triggerRequest> resource doesn't contain triggerStatus attribute set correctly");
 					} else {
diff --git a/OneM2M_Testcases_CSE_Release_3.ttcn b/OneM2M_Testcases_CSE_Release_3.ttcn
index c923c87cbf98acccc5a6d2225c2c233b0ee6a0dc..f5e225941c5832ee1272cd947a67306a89b50a32 100644
--- a/OneM2M_Testcases_CSE_Release_3.ttcn
+++ b/OneM2M_Testcases_CSE_Release_3.ttcn
@@ -18726,7 +18726,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 					var RequestPrimitive v_request;
 
 					//{apiRoot}/3gpp-device-triggering/v1/{scsAsId}/transactions
-					var OneM2M_Types_3GPP_T8.URI v_requestResourceURI := m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), oct2char(unichar2oct(vc_scefSimuDesc.scefId)) & "/transactions");
+					var OneM2M_Types_3GPP_T8.URI v_requestResourceURI := valueof(m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), oct2char(unichar2oct(vc_scefSimuDesc.scefId)) & "/transactions"));
 																	
 					var template T8Request v_requestPrimitive;
 					
@@ -18748,7 +18748,8 @@ module OneM2M_Testcases_CSE_Release_3 {
 					
 					// Register AE1
 					vc_ae1.start(f_cse_preamble_registerAe());
-					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					f_scefSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
 					v_aeIndex := f_getLatestResourceIndex(vc_ae1);
 
 					// Container under AE
@@ -18758,10 +18759,12 @@ module OneM2M_Testcases_CSE_Release_3 {
 					// Create Subscription
 					v_createRequestSubscription := m_createSubscriptionAdvanced(f_getResourceAddress(v_containerIndex), -, {f_getResourceAddress(v_aeIndex)}, m_eventNotificationCriteria({int1}), -, omit, omit, omit, -, omit);
 					vc_ae1.start(f_cse_createResource(int23, v_createRequestSubscription, v_containerIndex));
+					f_scefSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 					
 					// Test Body
 					vc_ae1.start(f_cse_updateResource(int3, v_containerIndex, v_updateContainer));
-				
+					f_scefSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
 					v_requestPrimitive := mw_t8_request_post(v_requestResourceURI, -, v_3GPPDeviceTriggeringRequest);
 					tc_ac.start;
 					alt{
@@ -18807,7 +18810,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 					var RequestPrimitive v_request;
 					
 					//{apiRoot}/3gpp-device-triggering/v1/{scsAsId}/transactions
-					var OneM2M_Types_3GPP_T8.URI v_requestResourceURI := m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), oct2char(unichar2oct(vc_scefSimuDesc.scefId)) & "/transactions");
+					var OneM2M_Types_3GPP_T8.URI v_requestResourceURI := valueof(m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), oct2char(unichar2oct(vc_scefSimuDesc.scefId)) & "/transactions"));
 									
 					var template T8Request v_requestPrimitive;
 
@@ -18825,12 +18828,14 @@ module OneM2M_Testcases_CSE_Release_3 {
 					
 					// Register AE1
 					vc_ae1.start(f_cse_preamble_registerAe());
-					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					f_scefSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
 					v_aeIndex := f_getLatestResourceIndex(vc_ae1);
 
 					// TriggerRequest under AE
 					vc_ae1.start(f_cse_createResource(int47, v_createTriggerRequestResource, v_aeIndex));
-					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					f_scefSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
 					v_triggerRequestIndex := f_getLatestResourceIndex(vc_ae1);
 
 					//IUT sent a 3GPP Device Trigger Request
@@ -18856,8 +18861,11 @@ module OneM2M_Testcases_CSE_Release_3 {
 					f_sleep(3.0);	
 					
 					// Verifiy that the <triggerRequest> resource containing triggerStatus attribute set to ERROR_NSE_NOT_FOUND
-					v_contentTriggerRequest := f_cse_retrieveResource(v_triggerRequestIndex);
-
+					vc_ae1.start(f_cse_retrieveResource(v_triggerRequestIndex));
+					f_scefSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_contentTriggerRequest := f_getPrimitiveContentRetrievedResource(vc_ae1);
+					
 					if(not(match(valueof(v_contentTriggerRequest.triggerRequest.triggerStatus), int2))) {// ERROR_NSE_NOT_FOUND
 						setverdict(fail, __SCOPE__&":INFO: <triggerRequest> resource doesn't contain triggerStatus attribute set to ERROR_NSE_NOT_FOUND");
 					} else {
@@ -19143,8 +19151,6 @@ module OneM2M_Testcases_CSE_Release_3 {
 						
 					var ScefSimu v_scef := ScefSimu.create("SCEF") alive;
 								
-					var ScefSimu v_scef := ScefSimu.create("SCEF") alive;		
-									
 					var template (value) DeliveryResult v_deliveryResult := UNCONFIRMED;
 					var TriggerStatus v_triggerStatus := int4;