diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index fb1fa8f033d3ca12656f80d94b27ee57f1331f42..a951cbdfb56808ebdbbd98881e3b328993160d0a 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -12742,7 +12742,212 @@ module OneM2M_PermutationFunctions {
 		}//end group Non_Blocking_Requests
 	
 		}//end of group Response_Type
-	
+	group Interworking_3GPP {
+
+		group device_trigerring {
+
+			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 template T8Request v_requestPrimitive;
+
+					var template DeviceTriggering v_deviceTriggering := m_deviceTriggering_externalId("externl_id", -, -, 30123, p_triggerPayload, "link");
+					var template RequestBodyT8 v_3GPPDeviceTriggeringRequest := {individualDeviceTriggeringTransaction := v_deviceTriggering};
+					
+					var template RequestPrimitive v_createTriggerRequestResource := m_createTriggerRequest;
+					
+					v_createTriggerRequestResource.primitiveContent.triggerRequest.triggerPurpose := p_triggerPurpose; 	//TriggerPurpose                   TriggerPayload            
+																//int1 establishConnection ---> resource address of the <remoteCSE> or <AE>
+																//int2 registrationRequest ---> the resource address (triggerInfoAddress) of the <MEFBase>
+																//int3 executeCRUD         ---> the resource address (triggerInfoAddress) of the <cseBase>
+																//int4 enrolmentRequest    ---> the type of CRUDN operation (triggerInfoOperation), the address of the resource that the operation should be performed on (triggerInfoAddress) and the resource type (targetedResourceType)
+
+					
+					// Test component configuration
+					f_cf05Up();
+										
+					// Test Body
+					
+					// Register AE1
+					vc_ae1.start(f_cse_preamble_registerAe());
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					v_aeIndex := f_getLatestResourceIndex(vc_ae1);
+
+					// TriggerRequest under AE
+					vc_ae1.start(f_cse_createResource(int47, v_createTriggerRequestResource, v_aeIndex));
+					
+					v_requestPrimitive := mw_t8_request_post(v_requestResourceURI, -,  v_3GPPDeviceTriggeringRequest);
+
+					tc_ac.start;
+					alt{
+						[] mcnPortIn.receive(mw_t8Request(v_requestPrimitive)) {
+							tc_ac.stop;
+							setverdict(pass, __SCOPE__ & ": 3GPP Device Triggering received.");
+						}
+						[] mcnPortIn.receive(mw_t8Request(?)){
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__ & ": Other operation received");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, __SCOPE__ & ": No answer");
+						}
+					}
+					
+					// Postamble: NOTE This needs to be done.
+					//f_cse_postamble_deleteResourcesCSE();
+					
+					//Tear Down
+					f_cf05Down();
+				} // end of function f_CSE_3GPP_TRIG_001
+
+				function f_CSE_3GPP_TRIG_004(in TriggerStatus p_triggerStatus, in template (value) DeliveryResult p_deliveryResult) runs on ScefSimu system ScefSystem{
+
+					var integer v_aeIndex := -1, v_triggerRequestIndex := -1;
+					var PrimitiveContent v_contentTriggerRequest;
+					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 template T8Request v_requestPrimitive;
+
+					var template DeviceTriggering v_deviceTriggering := m_deviceTriggering_externalId("externl_id", -, -, 30123, "This is Trigger payload- CAFEDECA", "link");
+					var template RequestBodyT8 v_3GPPDeviceTriggeringRequest := {individualDeviceTriggeringTransaction := v_deviceTriggering};
+
+					var template DeviceTriggering v_deviceTriggeringResponse := m_deviceTriggering_response_delieveryResult(p_deliveryResult, "URI to the resource created by the SCEF",-,-,-,-,-,-);
+					
+					var template RequestPrimitive v_createTriggerRequestResource := m_createTriggerRequest;
+					
+					v_createTriggerRequestResource.primitiveContent.triggerRequest.triggerPurpose := int1; //int1 establishConnection
+																
+					// Test component configuration
+					f_cf05Up();
+						
+					//Preamble
+					
+					// Register AE1
+					vc_ae1.start(f_cse_preamble_registerAe());
+					f_cseSimu_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);
+					v_triggerRequestIndex := f_getLatestResourceIndex(vc_ae1);
+
+					//IUT sent a 3GPP Device Trigger Request
+					v_requestPrimitive := mw_t8_request_post(v_requestResourceURI, -,  v_3GPPDeviceTriggeringRequest);		
+					mcnPortIn.receive(mw_t8Request(v_requestPrimitive));					
+
+					// Test Body		
+					
+					// SCEF sends Device Triggering response 				
+					mcnPort.send(mw_t8Response(mw_t8_response_201_created(-, mw_response_body_individualDeviceTriggering(v_deviceTriggeringResponse))));	
+					
+					// Verifiy that the <triggerRequest> resource containing triggerStatus attribute set to p_triggerStatus
+					v_contentTriggerRequest := f_cse_retrieveResource(v_triggerRequestIndex);
+
+					if(not(match(valueof(v_contentTriggerRequest.triggerRequest.triggerStatus), p_triggerStatus))) {
+						setverdict(fail, __SCOPE__&":INFO: <triggerRequest> resource doesn't contain triggerStatus attribute set correctly");
+					} else {
+						setverdict(pass, __SCOPE__ & ": Retrived triggerRequest matched with updated content.");
+					}
+							
+					// Postamble: NOTE This needs to be done.
+					//f_cse_postamble_deleteResourcesCSE();
+							
+					//Tear Down
+					f_cf05Down();
+				} // end of function f_CSE_3GPP_TRIG_004
+				
+
+				function f_CSE_3GPP_TRIG_005(in TriggerStatus p_triggerStatus, in template (value) DeliveryResult p_deliveryResult) runs on ScefSimu system ScefSystem{
+
+					var integer v_aeIndex := -1, v_triggerRequestIndex := -1;
+					var PrimitiveContent v_contentTriggerRequest;
+					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 template T8Request v_requestPrimitive;
+
+					var template DeviceTriggering v_deviceTriggering := m_deviceTriggering_externalId("externl_id", -, -, 30123, "This is Trigger payload- CAFEDECA", "notificationDestination");
+					var template RequestBodyT8 v_3GPPDeviceTriggeringRequest := {individualDeviceTriggeringTransaction := v_deviceTriggering};
+
+					var template DeviceTriggering v_deviceTriggeringResponse := m_deviceTriggering_response_delieveryResult(p_deliveryResult, "URI to the resource created by the SCEF",-,-,-,-,-,-);
+					
+					var template RequestPrimitive v_createTriggerRequestResource := m_createTriggerRequest;
+					
+					v_createTriggerRequestResource.primitiveContent.triggerRequest.triggerPurpose := int1; //int1 establishConnection
+																
+					// Test component configuration
+					f_cf05Up();
+						
+					//Preamble
+					
+					// Register AE1
+					vc_ae1.start(f_cse_preamble_registerAe());
+					f_cseSimu_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);
+					v_triggerRequestIndex := f_getLatestResourceIndex(vc_ae1);
+
+					//IUT sent a 3GPP Device Trigger Request
+					v_requestPrimitive := mw_t8_request_post(v_requestResourceURI, -,  v_3GPPDeviceTriggeringRequest);		
+					mcnPortIn.receive(mw_t8Request(v_requestPrimitive));					
+
+					// 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 
+					
+					tc_ac.start;
+					alt{
+						[] mcnPortIn.receive(mw_t8Response(mw_t8_response_204_no_content)) { //Check if 204 no content is received from IUT
+							tc_ac.stop;
+							setverdict(pass, __SCOPE__ & ": 204 no content is received.");
+						}
+						[] mcnPortIn.receive(mw_t8Request(?)){
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__ & ": Other operation received");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, __SCOPE__ & ": No Answer");
+						}
+					}
+
+					// Verifiy that the <triggerRequest> resource containing triggerStatus attribute set to p_triggerStatus
+					v_contentTriggerRequest := f_cse_retrieveResource(v_triggerRequestIndex);
+
+					if(not(match(valueof(v_contentTriggerRequest.triggerRequest.triggerStatus), p_triggerStatus))) {
+						setverdict(fail, __SCOPE__&":INFO: <triggerRequest> resource doesn't contain triggerStatus attribute set correctly");
+					} else {
+						setverdict(pass, __SCOPE__ & ": Retrived triggerRequest matched with updated content.");
+					}
+							
+					// Postamble: NOTE This needs to be done.
+					//f_cse_postamble_deleteResourcesCSE();
+							
+					//Tear Down
+					f_cf05Down();
+				} // end of function f_CSE_3GPP_TRIG_005
+
+
+			} // end group device_trigerring
+		  } //end group Interworking_3GPP
+
+
 	}//end group CSE