diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index b5d0cc3f1554f8eb0f5229405cb38f7864112044..6f24b1f2327c56271af9370df064ae91832a838e 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -19,6 +19,7 @@ module OneM2M_Functions {
 	import from OneM2M_TestSystem all;
 	import from OneM2M_Pixits all;
 	import from OneM2M_Pics all;
+	import from LibCommon_Time all;
 	
 	group ConfigFunctions {
 		
@@ -450,6 +451,31 @@ module OneM2M_Functions {
 							
 		} // end f_cf04UpCse2		
 		
+		/**
+			@desc Ports mapping and default behaviour activation for Config 5
+		*/
+		function f_cf05Up() runs on ScefSimu system ScefSystem {
+			
+			// Variables
+			
+			//Initialization of component variables
+			vc_config := e_cf05;
+			vc_testSystemRole := e_t8;	
+			vc_aeSimuDesc := PX_TS_AE1;	
+			vc_scefSimuDesc := PX_T8_SCEF;
+			
+			// Map
+			map(self:mcnPort, system:mcnPort) param (vc_scefSimuDesc.mcnPort);
+			map(self:mcnPortIn, system:mcnPortIn) param (vc_scefSimuDesc.mcnPortIn);
+			map(self:acPort, system:acPort);
+			
+			activate(a_default());
+			
+			vc_ae1 := AeSimu.create("AE1") alive;
+			vc_ae1.start(f_cf01Up());
+			vc_ae1.done;
+		} // end f_cf05Up
+		
 		/**
 		 * @desc Ports mapping and default behaviour activation for Config 06
 		 */
@@ -738,7 +764,18 @@ module OneM2M_Functions {
 		
 		}// end f_cf04DownCse2
 
-
+		function f_cf05Down() runs on ScefSimu system ScefSystem {
+			if(vc_ae1.alive) {
+				vc_ae1.start(f_cf01Down());
+				vc_ae1.done;
+			}
+			
+			deactivate;
+			unmap(self:mcnPort, system:mcnPort);
+			unmap(self:mcnPortIn, system:mcnPortIn);
+			unmap(self:acPort, system:acPort);
+		} // end f_cf05Down
+		
 		/**
 		 * @desc Ports unmapping for Config 06
 		 */
@@ -995,7 +1032,7 @@ module OneM2M_Functions {
 				return v_resourceIndex;
 
 			}
-
+			
 			/**
 			 * @desc Getting the address of the last resource saved in the vc_resourcesList
 			 * @param p_tester Given component
@@ -1163,6 +1200,16 @@ module OneM2M_Functions {
 					
 			}
 			
+			/**
+			 * @desc Sending the address of the last resource saved in the vc_resourcesList
+			 */	
+			function f_sendLatestResourceAddress(AddressingMethod p_addressingMethod := PX_ADDRESSING_METHOD, PrimitiveScope p_primitiveScope := PX_PRIMITIVE_SCOPE) runs on Tester {
+			
+				infoPort.send(f_getResourceAddress(lengthof(vc_resourcesList)-1, p_addressingMethod, p_primitiveScope));
+		
+			} 
+			
+			
 			/**
 			 * @desc Sending of the latest resource through InfoPort
 			 */	
@@ -1180,15 +1227,6 @@ module OneM2M_Functions {
 				infoPort.send(lengthof(vc_resourcesList)-1);
 		
 			} 
-
-			/**
-			 * @desc Sending the address of the last resource saved in the vc_resourcesList
-			 */	
-			function f_sendLatestResourceAddress(AddressingMethod p_addressingMethod := PX_ADDRESSING_METHOD, PrimitiveScope p_primitiveScope := PX_PRIMITIVE_SCOPE) runs on Tester {
-			
-				infoPort.send(f_getResourceAddress(lengthof(vc_resourcesList)-1, p_addressingMethod, p_primitiveScope));
-		
-			} 
 						
 			/**
 			 * @desc Sending of the latest local resource through InfoPort
@@ -1268,6 +1306,7 @@ module OneM2M_Functions {
 							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);
@@ -1277,11 +1316,9 @@ module OneM2M_Functions {
 					[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
 						tc_ac.stop;
 						setverdict(inconc, __SCOPE__&":INFO: Error while registering application");
-						stop;
 					}
 					[] tc_ac.timeout {
 						setverdict(inconc, __SCOPE__&":INFO: No answer while registering resource");
-						stop;
 					}
 				}	
 				
@@ -1326,6 +1363,7 @@ module OneM2M_Functions {
 						if(ischosen(vc_response.primitive.responsePrimitive.primitiveContent.aE)) {
 							
 							vc_aeIndex := f_setResource(vc_response.primitive.responsePrimitive.primitiveContent, int2);
+							vc_componentRegistered := true;
 							
 							if(ispresent(vc_response.primitive.responsePrimitive.primitiveContent.aE.aE_ID)){
 								f_sendAcPrimitive("AE-ID_changed", vc_aeIndex);
@@ -1336,16 +1374,13 @@ module OneM2M_Functions {
 					{
 						tc_ac.stop;
 						setverdict(inconc, __SCOPE__&":INFO: Error while registering application");
-						stop;
 					}
 					[] mcaPort.receive {
 						tc_ac.stop;
 						setverdict(inconc, __SCOPE__&":INFO: Unexpected message received");
-						stop;
 					}
 					[] tc_ac.timeout {
 						setverdict(inconc, __SCOPE__&":INFO: No answer while registering resource");
-						stop;
 					}
 				}	
 				
@@ -1714,6 +1749,7 @@ module OneM2M_Functions {
 						v_resourceIndex := f_setResource(vc_response.primitive.responsePrimitive.primitiveContent, p_resourceType, p_parentIndex);
 						if(p_resourceType == int2) {
 							vc_aeIndex := v_resourceIndex;
+							vc_componentRegistered := true;
 							if(ispresent(vc_response.primitive.responsePrimitive.primitiveContent.aE.aE_ID)){
 								f_sendAcPrimitive("AE-ID_changed", vc_aeIndex);
 							}
@@ -2161,7 +2197,7 @@ module OneM2M_Functions {
 			}
 
 			
-			function f_cse_generateMissingDataPoint(in integer p_timeSeriesResourceIndex) runs on AeSimu{
+			function f_cse_generateMissingDataPoint(in integer p_timeSeriesResourceIndex, in integer p_timeSeriesInstanceNumber := 0) runs on AeSimu{
 			
 				var RequestPrimitive v_request;
 				var integer v_resourceIndex := -1;
@@ -2173,17 +2209,21 @@ module OneM2M_Functions {
 				//Activate defaults when running on a PTC
 				f_cse_activateDefaults_ae();		
 				i := 0;
-				while (i < 3) {			
+				while (i < 1) {			
 					v_request := valueof(m_createTimeSeriesInstanceBase);
-					v_request.primitiveContent.timeSeriesInstance.resourceName := "MyTimeSeriesInstance" & int2str(i);
+					v_request.primitiveContent.timeSeriesInstance.resourceName := "MyTimeSeriesInstance" & int2str(p_timeSeriesInstanceNumber);
+					v_request.primitiveContent.timeSeriesInstance.dataGenerationTime := {alt_ := fx_generateTimestamp()};
+					v_request.primitiveContent.timeSeriesInstance.dataGenerationTime.alt_ := v_request.primitiveContent.timeSeriesInstance.dataGenerationTime.alt_ & ",1234";
 					
 					v_resourceIndex := f_cse_createResource(int30, v_request, p_timeSeriesResourceIndex);
 					i := i + 1;
-					t_noAction.start(int2float(v_periodicInterval));
+					t_noAction.start(int2float(v_periodicInterval/1000+v_missingDataDetectTimer/1000));
+					t_noAction.timeout;
 				}
 				
+				//f_sleep(int2float(v_periodicInterval/1000));
 				//After missingDataTimerDetect, a missing data point should have been detected
-				t_noAction.start(int2float(v_missingDataDetectTimer));
+				//t_noAction.start(int2float(v_missingDataDetectTimer));
 		
 			}
 			
@@ -2306,12 +2346,49 @@ module OneM2M_Functions {
 							v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier;
 							f_send(e_mcaPortIn, m_response(v_responsePrimitive));
 						}
+						[] mcaPortIn.receive(mw_request(mw_notifyNotification(?))) -> value vc_request {
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__ & ":ERROR: Notification received but the content doesn't match");
+						}	
 						[] tc_ac.timeout {
 							setverdict(fail, __SCOPE__ & ":ERROR: No notification received");
 						}
 					}
 	    		    	
 				} //end f_cse_notifyProcedure_representationHandler
+
+				/**
+				 * @desc Handling message exchange for the notification procedure for timeSeries
+				 * @param p_timeSeriesNotification Expected timeSeriesNotification in the notification
+				 * @verdict 
+				 */
+				function f_cse_notifyProcedure_timeSeriesNotificationHandler(template TimeSeriesNotification p_timeSeriesNotification) runs on AeSimu {
+					// Local variables
+					var ResponsePrimitive v_responsePrimitive;
+					
+					//Activate defaults when running on a PTC
+					f_cse_activateDefaults_ae();							
+					
+					tc_ac.start;
+					alt {
+						[] mcaPortIn.receive(mw_request(mw_notifyNotification(mw_contentNotification({timeSeriesNotification := p_timeSeriesNotification})))) -> value vc_request {
+							tc_ac.stop;
+							setverdict(pass, __SCOPE__ & ":INFO: Notification received");
+							//Send response in any case
+							v_responsePrimitive := valueof(m_responseNotification(int2000, omit));
+							v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier;
+							f_send(e_mcaPortIn, m_response(v_responsePrimitive));
+						}
+						[] mcaPortIn.receive(mw_request(mw_notifyNotification(?))) -> value vc_request {
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__ & ":ERROR: Notification received but the content doesn't match");
+						}	
+						[] tc_ac.timeout {
+							setverdict(fail, __SCOPE__ & ":ERROR: No notification received");
+						}
+					}
+	    		    	
+				} //end f_cse_notifyProcedure_timeSeriesNotificationHandler
 				
 				/**
 				 * @desc Handling message exchange for the notification procedure
@@ -2443,14 +2520,14 @@ module OneM2M_Functions {
 				 * @desc Handling message exchange for the notification procedure (no notification expected)
 				 * @verdict 
 				 */
-				function f_cse_notifyProcedure_noNotificationHandler() runs on AeSimu {
+				function f_cse_notifyProcedure_noNotificationHandler(float p_waitingTime := 10.0) runs on AeSimu {
 					// Local variables
 					var ResponsePrimitive v_responsePrimitive;
 					
 					//Activate defaults when running on a PTC
 					f_cse_activateDefaults_ae();		
 							
-					tc_ac.start(10.0);
+					tc_ac.start(p_waitingTime);
 					alt {
 						[] mcaPortIn.receive(mw_request(mw_notifyNotification(mw_contentNotification(?)))) -> value vc_request {
 							tc_ac.stop;
@@ -2826,6 +2903,12 @@ module OneM2M_Functions {
 						v_localResourceIndex := f_processCreateRequestPrimitive(vc_request.primitive.requestPrimitive, p_responseStatusCode);
 						f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 					}
+					[] mccPortIn.receive(mw_request(mw_create)) -> value vc_request {
+						tc_ac.stop;
+						v_localResourceIndex := f_processCreateRequestPrimitive(vc_request.primitive.requestPrimitive, int4000);
+						f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
+						setverdict(inconc, __SCOPE__&":INFO: Wrong expected create request");
+					}
 					[] tc_ac.timeout {
 						setverdict(inconc, __SCOPE__&":INFO: No creation for resource received");
 					}
@@ -2914,7 +2997,7 @@ module OneM2M_Functions {
 						}
 						v_response.from_ := vc_cseSimuDesc.cseId;
 						v_response.to_ := vc_request.primitive.requestPrimitive.from_;
-            f_send(e_mccPortIn, m_response(v_response));
+            			f_send(e_mccPortIn, m_response(v_response));
 					}
     					
 					[] tc_ac.timeout {
@@ -2986,6 +3069,12 @@ module OneM2M_Functions {
 						f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						
 					}
+					[] mccPortIn.receive(mw_request(mw_update)) -> value vc_request {
+						tc_ac.stop;
+						v_targetResourceIndex := f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, int4000);
+						f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
+						setverdict(inconc, __SCOPE__&":INFO: Wrong expected update request");
+					}
 					[] tc_ac.timeout {
 						setverdict(inconc, __SCOPE__&":INFO: No answer while updating resource");
 					}
@@ -3021,6 +3110,12 @@ module OneM2M_Functions {
 						f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						
 					}
+					[] mccPortIn.receive(mw_request(mw_retrieve(?))) -> value vc_request {
+						tc_ac.stop;
+						v_targetResourceIndex := f_processRetrieveRequestPrimitive(vc_request.primitive.requestPrimitive, int4000);
+						f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
+						setverdict(inconc, __SCOPE__&":INFO: Wrong expected retrieve request");
+					}
 					[] tc_ac.timeout {
 						setverdict(inconc, __SCOPE__&":INFO: No answer while retrieving resource");
 					}
@@ -3135,6 +3230,12 @@ module OneM2M_Functions {
 						f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						
 					}
+					[] mccPortIn.receive(mw_request(mw_delete)) -> value vc_request {
+						tc_ac.stop;
+						v_targetResourceIndex := f_processDeleteRequestPrimitive(vc_request.primitive.requestPrimitive, int4000);
+						f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
+						setverdict(inconc, __SCOPE__&":INFO: Wrong expected delete request");
+					}
 					[] tc_ac.timeout {
 						setverdict(inconc, __SCOPE__&":INFO: No answer while retrieving resource");
 					}
@@ -3242,6 +3343,10 @@ module OneM2M_Functions {
 						setverdict(pass, __SCOPE__&":INFO: Resource type remoteCSE created successfuly");
 						f_checkAttributesToBeSaved(int16, v_request, v_response.primitive.responsePrimitive);
 						vc_remoteCseIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, int16, -1);
+						vc_componentRegistered := true;
+						if(ispresent(v_response.primitive.responsePrimitive.primitiveContent.remoteCSE.cSE_ID)){
+							f_sendAcPrimitive("CSE-ID_changed", vc_remoteCseIndex);
+						}
 						v_localRemoteCSEResource := f_generateLocalResource(valueof(m_primitiveContentRemoteCSE(m_contentLocalRemoteCSEResource(vc_myInterfaces[enum2int(valueof(InterfaceIds:e_mccPort))].myHost))), vc_cSEBaseIndex, int16);
 						vc_localRemoteCseIndex := f_setLocalResource(v_localRemoteCSEResource, int16, vc_cSEBaseIndex);
 					}
@@ -3288,6 +3393,7 @@ module OneM2M_Functions {
 						tc_ac.stop;
 						setverdict(pass, __SCOPE__&":INFO: Resource type remoteCSE created successfuly");
 						v_localRemoteCSEResource := f_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, vc_cSEBaseIndex, int16);//TODO Get index from v_request.primitive.requestPrimitive.to_
+						v_localRemoteCSEResource.remoteCSE.cSE_ID := v_request.primitive.requestPrimitive.from_;
 						vc_localRemoteCseIndex := f_setLocalResource(v_localRemoteCSEResource, int16, vc_cSEBaseIndex);
 						
 						v_response := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier));
@@ -3297,6 +3403,7 @@ module OneM2M_Functions {
 						f_send(e_mccPortIn, m_response(v_response));
 						
 						vc_remoteCseIndex := f_setResource(valueof(m_primitiveContentRemoteCSE(m_contentMyRemoteCSEResource(f_getLocalPoA(vc_cseSimuDesc.mcaPortIn, "")))), int16, -1, true);
+						vc_componentRegistered := true;
 						v_resourceIndex := vc_remoteCseIndex;
 						v_remoteCSERegistered:=true;
 						tc_ac.start(10.0);
@@ -3990,6 +4097,7 @@ module OneM2M_Functions {
 						v_resourceIndex := f_setResource(vc_response.primitive.responsePrimitive.primitiveContent, p_resourceType, p_parentIndex);
 						if(p_resourceType == int16) {	//remoteCSE
 							vc_remoteCseIndex := v_resourceIndex;
+							vc_componentRegistered := true;
 						}
 					}
 					[] mccPort.receive(mw_response(mw_responsePrimitiveKO)) {
@@ -5022,7 +5130,6 @@ module OneM2M_Functions {
 				}
 			} 
 			
-
 			return valueof(p_request);
 		}
 		
@@ -5180,6 +5287,21 @@ module OneM2M_Functions {
 			if(ischosen(p_contentResource.timeSeriesInstance)) {
 				return p_contentResource.timeSeriesInstance.resourceID;
 			}
+			if(ischosen(p_contentResource.semanticDescriptor)) {
+				return p_contentResource.semanticDescriptor.resourceID;
+			}
+			if(ischosen(p_contentResource.ontologyRepository)) {
+				return p_contentResource.ontologyRepository.resourceID;
+			}
+			if(ischosen(p_contentResource.ontology)) {
+				return p_contentResource.ontology.resourceID;
+			}
+			if(ischosen(p_contentResource.semanticMashupInstance)) {
+				return p_contentResource.semanticMashupInstance.resourceID;
+			}
+			if(ischosen(p_contentResource.semanticMashupJobProfile)) {
+				return p_contentResource.semanticMashupJobProfile.resourceID;
+			}
 			//Announced resources
 			if(ischosen(p_contentResource.accessControlPolicyAnnc)) {
 				return f_resourceIdCleaner(p_contentResource.accessControlPolicyAnnc.resourceID);
@@ -5280,6 +5402,21 @@ module OneM2M_Functions {
 			if(ischosen(p_contentResource.timeSeriesInstance)) {
 				return p_contentResource.timeSeriesInstance.resourceName;
 			}
+			if(ischosen(p_contentResource.semanticDescriptor)) {
+				return p_contentResource.semanticDescriptor.resourceName;
+			}
+			if(ischosen(p_contentResource.ontologyRepository)) {
+				return p_contentResource.ontologyRepository.resourceName;
+			}
+			if(ischosen(p_contentResource.ontology)) {
+				return p_contentResource.ontology.resourceName;
+			}
+			if(ischosen(p_contentResource.semanticMashupInstance)) {
+				return p_contentResource.semanticMashupInstance.resourceName;
+			}
+			if(ischosen(p_contentResource.semanticMashupJobProfile)) {
+				return p_contentResource.semanticMashupJobProfile.resourceName;
+			}
 			//Announced resources
 			if(ischosen(p_contentResource.accessControlPolicyAnnc)) {
 				return p_contentResource.accessControlPolicyAnnc.resourceName;
@@ -6678,7 +6815,7 @@ module OneM2M_Functions {
 			 * @param data Corresponding information for the correct execution of the given action
 			 * @verdict 
 			 */
-			function f_sendAcPrimitive(in charstring p_event, in integer p_aeIndex) runs on Tester {
+			function f_sendAcPrimitive(in charstring p_event, in integer p_resourceIndex, template (omit) XSD.ID p_originator := omit) runs on Tester {
 				var XSD.ID v_aeResourceAddress;
 				var charstring v_spRelativeAeIdForMqtt;
 				
@@ -6686,8 +6823,8 @@ module OneM2M_Functions {
 				
 					case ("AE-ID_changed") {
 						//Calculate the SP-Relative-AE-ID following format defined in TS-0010 MQTT
-						v_aeResourceAddress := f_getResourceAddress(p_aeIndex, e_nonHierarchical, e_spRelative);
-						if(vc_resourcesList[p_aeIndex].resource.aE.aE_ID[0] == "S") {
+						v_aeResourceAddress := f_getResourceAddress(p_resourceIndex, e_nonHierarchical, e_spRelative);
+						if(vc_resourcesList[p_resourceIndex].resource.aE.aE_ID[0] == "S") {
 							v_spRelativeAeIdForMqtt := oct2char(unichar2oct(f_resourceIdCleaner(v_aeResourceAddress)));
 						} else {
 							v_spRelativeAeIdForMqtt := f_getSpRelativeAeIdForMqtt(v_aeResourceAddress);
@@ -6710,6 +6847,25 @@ module OneM2M_Functions {
 							}
 						}
 					}
+					case ("CSE-ID_changed") {
+						//TODO Check for other resource address formats
+						v_spRelativeAeIdForMqtt := oct2char(unichar2oct(f_resourceIdCleaner(vc_resourcesList[p_resourceIndex].resource.remoteCSE.cSE_ID)));
+						
+						if((((vc_config == e_cf02) or (vc_config == e_cf02CseSimuMaster)) and (vc_testSystemRole == e_cse)) or (vc_config == e_cf04)) {
+							if(vc_myInterfaces[enum2int(valueof(InterfaceIds:e_mccPortIn))].myProtocolBinding == "MQTT") {
+								acPort.send(AcRequestPrimitive:{p_event & "_mccPort", {charstring := v_spRelativeAeIdForMqtt}});	
+							}
+							if(vc_myInterfaces[enum2int(valueof(InterfaceIds:e_mccPortIn))].myProtocolBinding == "MQTT") {
+								acPort.send(AcRequestPrimitive:{p_event  & "_mccPortIn", {charstring := v_spRelativeAeIdForMqtt}});	
+							}
+						}
+					}
+					case ("MqttSetDefaultTopicToNotRegistration") {
+						acPort.send(AcRequestPrimitive:{p_event, {charstring := oct2str(unichar2oct(p_originator))}});
+					}
+					case ("MqttSetDefaultTopicToRegistration") {
+						acPort.send(AcRequestPrimitive:{p_event, {charstring := int2str(p_resourceIndex)}});
+					}
 				} 
 			}
 		}//end of group AcFunctions
@@ -6774,6 +6930,9 @@ module OneM2M_Functions {
 				if(p_responseStatusCode == int2001) {
 					setverdict(pass, __SCOPE__&":INFO: Resource created successfuly");
 					v_localResource := f_generateLocalResource(p_request.primitiveContent, v_parentIndex, p_request.resourceType);
+					if(p_request.resourceType == int16){
+						v_localResource.remoteCSE.cSE_ID := p_request.from_;
+					}
 					v_localResourceIndex := f_setLocalResource(v_localResource, p_request.resourceType, v_parentIndex);
 					vc_response.primitive.responsePrimitive.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource;
 				} else {
@@ -7062,9 +7221,47 @@ module OneM2M_Functions {
 			p_msgOut.protocolBinding := vc_myInterfaces[enum2int(p_interfaceIds)].myProtocolBinding;
 			p_msgOut.serialization := vc_myInterfaces[enum2int(p_interfaceIds)].mySerialization;
 			log("f_send: protocolBinding=", p_msgOut.protocolBinding);
+			if(ischosen(p_msgOut.primitive.requestPrimitive)){
+				p_msgOut.primitive.requestPrimitive.requestIdentifier := p_msgOut.primitive.requestPrimitive.requestIdentifier & f_rnd(1, 1000000);
+				vc_request.primitive.requestPrimitive := valueof(p_msgOut.primitive.requestPrimitive);
+			}
+			if(not(vc_componentRegistered)) {
+				if(valueof(p_msgOut.protocolBinding) == "MQTT") {
+					if(ischosen(p_msgOut.primitive.requestPrimitive)) {
+						if(ispresent(p_msgOut.primitive.requestPrimitive.resourceType))	{
+							if((valueof(p_msgOut.primitive.requestPrimitive.resourceType) != int2) and (valueof(p_msgOut.primitive.requestPrimitive.resourceType) != int16)){
+								//Modify default topic to publish a non-registration message
+								f_sendAcPrimitive("MqttSetDefaultTopicToNotRegistration", -1, valueof(p_msgOut.primitive.requestPrimitive.from_));
+								vc_myInterfaces[enum2int(p_interfaceIds)].myPort.send(p_msgOut);
+								f_sendAcPrimitive("MqttSetDefaultTopicToRegistration", -1);
+								return;
+							}
+						} else {//RETRIEVE - UPDATE - DELETE - NOTIFY
+							//Modify default topic to publish a non-registration message
+							f_sendAcPrimitive("MqttSetDefaultTopicToNotRegistration", -1, valueof(p_msgOut.primitive.requestPrimitive.from_));
+							vc_myInterfaces[enum2int(p_interfaceIds)].myPort.send(p_msgOut);
+							f_sendAcPrimitive("MqttSetDefaultTopicToRegistration", -1);
+							return;
+						}
+					}
+				} 
+			}
+			//TODO: Handle response to normal messages before CSE registration occurs
 			vc_myInterfaces[enum2int(p_interfaceIds)].myPort.send(p_msgOut);
 		}
 		
+		/**
+		 * @desc Get a converted to string random number 
+		 * @param p_lower Lower limit 
+		 * @param p_upper Upper limit
+		 * @return Random number converted to string
+		 * @verdict 
+		 */
+		function f_rnd(in integer p_lower, in integer p_upper) return charstring {
+			
+			return int2str(float2int(rnd() * int2float(p_upper - p_lower + 1)) + p_lower);	
+		}
+		
 	}//end of commonFunctions
 	
 	group externalFunctions {
diff --git a/LibOneM2M/OneM2M_Pixits.ttcn b/LibOneM2M/OneM2M_Pixits.ttcn
index b8d678351797d9840e533a2f7e8bcfd79358999f..951705a53cba5509ca67a6d25d3046d3b594bd4d 100644
--- a/LibOneM2M/OneM2M_Pixits.ttcn
+++ b/LibOneM2M/OneM2M_Pixits.ttcn
@@ -393,12 +393,50 @@ module OneM2M_Pixits {
 					serialization := "xml"
 				}
 			};
-							
+			
+			modulepar ScefSimuComponentDesc PX_T8_SCEF := {
+				scefId := "scs_as_id_01",
+				mcnPort := {
+					t8PortDesc := {
+						binding := {
+							httpBindingDesc := {
+									bindingProtocol := e_http,
+									bindingDesc := {
+										tsAddress  := "127.0.0.1",
+										remotePort := 30180,
+										localPort  := omit,
+										sutAddress := "127.0.0.1",
+										useTls     := false
+									}
+							}
+						},
+						serialization := "json"
+					}
+				},
+				mcnPortIn := {
+					t8PortDesc := {
+						binding := {
+							httpBindingDesc := {
+									bindingProtocol := e_http,
+									bindingDesc := {
+										tsAddress  := "127.0.0.1",
+										remotePort := 30180,														// SUT HTTP port
+										localPort  := 30181,
+										sutAddress := "127.0.0.1",
+										useTls     := false
+									}
+							}
+						},
+						serialization := "json"
+					}
+				} 
+			};
+			
 			/**
 			 * @desc Simulated Ontology Server IP address and listening port 
 			 */
 			modulepar UrlDesc PX_TS_ONTOLOGY_SERVER := { url := "http://127.0.0.1:80/" };
-	
+		
 		}
 		
 		group ExecutionParameters {
@@ -435,6 +473,5 @@ module OneM2M_Pixits {
 	modulepar Labels PX_LABELS := {"VALUE_1"}; 	
 	modulepar boolean PX_IS_LOC_CONTAINER	:= false;//default //set it to true when the container is created to store location information
 	
-	
 }  // end of module
 
diff --git a/LibOneM2M/OneM2M_Ports.ttcn b/LibOneM2M/OneM2M_Ports.ttcn
index dad32616c3f7422906e0d8a999f5f30843e1268a..61fe7b76cc9adc5de39769bb0797f042b4418207 100644
--- a/LibOneM2M/OneM2M_Ports.ttcn
+++ b/LibOneM2M/OneM2M_Ports.ttcn
@@ -14,6 +14,7 @@ module OneM2M_Ports {
 	
 	import from OneM2M_Types all;
 	import from OneM2M_TypesAndValues all;
+	import from OneM2M_Types_3GPP_T8 all;
 	import from XSD all;
 	
 	/* ***************************************
@@ -35,6 +36,17 @@ module OneM2M_Ports {
 		map param (in PortDesc p_portDesc);
 	};
 	
+	/**
+	 * @desc Port to transport different underlying 3GPP T8 network primitives
+	 * @desc Output MsgOut   
+	 * @desc Input MsgIn 
+	 * @desc this port is allowed to extend for futher usage  
+	 */
+	type port OneM2M_McnPort message {
+		inout T8Primitive;
+		map param (in McnPortDesc p_mcnPortDesc);
+	};
+	
 	/**
 	 * @desc Port to transport Adaptor Control primitives
 	 */
diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 01de67d7f01bcbf24be6ee128dc81bd188a0bcb7..c8f81f25f57de13f5136613557f3e0d6eff02775 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -18,19 +18,8 @@ module OneM2M_Templates {
 	import from OneM2M_TypesAndValues all;
 	import from OneM2M_Pixits all;
 	import from OneM2M_Functions all;
-		
-	/**
-	 * @desc Get a converted to string random number 
-	 * @param p_lower Lower limit 
-	 * @param p_upper Upper limit
-	 * @return Random number converted to string
-	 * @verdict 
-	 */
-	function f_rnd(in integer p_lower, in integer p_upper) return charstring {
-		
-		return int2str(float2int(rnd() * int2float(p_upper - p_lower + 1)) + p_lower);	
-	}
-
+	
+	import from OneM2M_Types_3GPP_T8 all;
 
 	/* Templates */
 	
@@ -103,7 +92,7 @@ module OneM2M_Templates {
 				operation := int2,
 				to_ := p_targetResourceAddress,
 				from_ := p_originator,
-				requestIdentifier := "m_retrieve" & f_rnd(1, 1000000),
+				requestIdentifier := "m_retrieve",
 				resourceType := omit,
 				primitiveContent := omit,
 				roleIDs := omit, 
@@ -176,10 +165,10 @@ module OneM2M_Templates {
 			 * @desc Base Receive RETRIEVE request primitive
 			 * @param p_targetResourceAddress Target resource address
 			 */
-			template RequestPrimitive mw_retrieve(template XSD.ID p_targetResourceAddress) := {
+			template RequestPrimitive mw_retrieve(template XSD.ID p_targetResourceAddress, template XSD.ID p_from := ?) := {
 				operation := int2,
 				to_ := p_targetResourceAddress,
-				from_ := ?,
+				from_ := p_from,
 				requestIdentifier := ?,
 				resourceType := omit,
 				primitiveContent := *,
@@ -209,8 +198,8 @@ module OneM2M_Templates {
 				vendorInformation := *
 			};
         	
-			template RequestPrimitive mw_retrieveFormalOntology(template XSD.ID p_targetResourceAddress := ?, template XSD.ID p_originator := ?, template XSD.AnyURI p_ontologyServerUri := ?) modifies mw_retrieve := {
-    		from_ := p_originator,
+			template RequestPrimitive mw_retrieveFormalOntology(template XSD.ID p_targetResourceAddress := ?, template XSD.ID p_from := ?, template XSD.AnyURI p_ontologyServerUri := ?) modifies mw_retrieve := {
+    		from_ := p_from,
 				requestIdentifier := ?,
 				primitiveContent := { flexContainer := mw_contentFlexContainer(p_ontologyServerUri) },
 				releaseVersionIndicator := "3"
@@ -225,7 +214,7 @@ module OneM2M_Templates {
         		operation := int2,
         		to_ := p_targetResourceAddress,
         		from_ := p_originator,
-        		requestIdentifier := "m_retrieveResourceAttributeOptionTo" & f_rnd(1, 1000000),
+        		requestIdentifier := "m_retrieveResourceAttributeOptionTo",
         		resourceType := omit,
 				primitiveContent := omit, 
 				roleIDs := omit,
@@ -264,7 +253,7 @@ module OneM2M_Templates {
 				operation := int2,
 				to_ := p_targetResourceAddress,
 				from_ := p_originator,
-				requestIdentifier := "m_retrieveResourceAttributeContentOption" & f_rnd(1, 1000000),
+				requestIdentifier := "m_retrieveResourceAttributeContentOption",
 				resourceType := omit,
 				primitiveContent := {attributeList := p_attributeList},
 				roleIDs := omit,
@@ -300,7 +289,7 @@ module OneM2M_Templates {
 			  * @param p_originator Originator (from)
 		     */
 			template (value) RequestPrimitive m_retrieveFilterUsageOption(XSD.ID p_targetResourceAddress, in XSD.ID p_originator, in template (value) FilterUsage p_filterUsage) modifies m_retrieve := {
-				requestIdentifier := "m_retrieveResourceFilterUsageOption" & f_rnd(1, 1000000),
+				requestIdentifier := "m_retrieveResourceFilterUsageOption",
 				filterCriteria := {
 					createdBefore := omit,
 					createdAfter := omit,
@@ -342,7 +331,7 @@ module OneM2M_Templates {
 			  * @param p_originator Originator (from)
 			 */
 			template (value) RequestPrimitive m_retrieveFilterCriteria(XSD.ID p_targetResourceAddress, in XSD.ID p_originator, in template (value) FilterCriteria p_filterCriteria) modifies m_retrieve := {
-				requestIdentifier := "m_retrieveResourceFilterUsageOption" & f_rnd(1, 1000000),
+				requestIdentifier := "m_retrieveResourceFilterUsageOption",
 				filterCriteria := p_filterCriteria
 			};
 			
@@ -354,7 +343,7 @@ module OneM2M_Templates {
 			  * @param p_labels Labels
 			 */
 			template (value) RequestPrimitive m_retrieveFilterUsageOptionLabel(XSD.ID p_targetResourceAddress, in XSD.ID p_originator, in template (value) FilterUsage p_filterUsage, in Labels p_labels) modifies m_retrieve := {
-				requestIdentifier := "m_retrieveResourceFilterUsageOptionLabel" & f_rnd(1, 1000000),
+				requestIdentifier := "m_retrieveResourceFilterUsageOptionLabel",
 				filterCriteria := {
 					createdBefore := omit,
 					createdAfter := omit,
@@ -395,7 +384,7 @@ module OneM2M_Templates {
 			  * @param p_originator Originator (from)
 			 */
 			template (value) RequestPrimitive m_retrieveDiscResTypeFilterUsageOption(XSD.ID p_targetResourceAddress, in XSD.ID p_originator, in template (value) DesIdResType p_desIdResType, in template (value) FilterUsage p_filterUsage) modifies m_retrieve := {
-				requestIdentifier := "m_retrieveResourceFilterUsageOption" & f_rnd(1, 1000000),
+				requestIdentifier := "m_retrieveResourceFilterUsageOption",
 				filterCriteria := {
 					createdBefore := omit,
 					createdAfter := omit,
@@ -438,7 +427,7 @@ module OneM2M_Templates {
 			  * @param p_originator Originator (from)
 			 */
 			template (value) RequestPrimitive m_retrieveInvalidFormatOption(XSD.ID p_targetResourceAddress, in XSD.ID p_originator) modifies m_retrieve := {
-				requestIdentifier := "m_retrieveResourceFilterUsageOption" & f_rnd(1, 1000000),
+				requestIdentifier := "m_retrieveResourceFilterUsageOption",
 				filterCriteria := {
 					createdBefore := omit,
 					createdAfter := omit,
@@ -561,7 +550,7 @@ module OneM2M_Templates {
 			};
         	
 						
-			template RequestPrimitive mw_update(template XSD.ID p_from := *, template XSD.ID p_to := ?) := {
+			template RequestPrimitive mw_update(template XSD.ID p_from := ?, template XSD.ID p_to := ?) := {
 				operation := int3,
 				to_ := p_to,
 				from_ := p_from,
@@ -1045,18 +1034,18 @@ module OneM2M_Templates {
 			/**
 			 * @desc Base CREATE request primitive for remoteCSE resource
 			 */
-			template (value) RequestPrimitive m_createRemoteCSEBase(template (value) XSD.ID p_from := PX_TS_CSE1.cseId, template (omit) AcpType p_accessControlPolicyIds := omit, template (omit) ResourceName p_resourceName :=  c_defaultRemoteCSEResourceName, in template (omit) XSD.AnyURI p_cSEBase := PX_TS_CSE1.cseId, in template (omit) XSD.ID p_cSE_ID := PX_TS_CSE1.cseId) modifies m_create := {
+			template (value) RequestPrimitive m_createRemoteCSEBase(template (value) XSD.ID p_from := PX_TS_CSE1.cseId, template (omit) AcpType p_accessControlPolicyIds := omit, template (omit) ResourceName p_resourceName :=  c_defaultRemoteCSEResourceName, in template (omit) XSD.AnyURI p_cSEBase := PX_TS_CSE1.cseId) modifies m_create := {
 				from_ := p_from,//Originator CSE-ID
 				requestIdentifier := testcasename() & "-m_createRemoteCSE",
 				resourceType := int16,
-				primitiveContent := {remoteCSE := m_contentCreateRemoteCSE(p_resourceName, p_accessControlPolicyIds,p_cSEBase, p_cSE_ID)}
+				primitiveContent := {remoteCSE := m_contentCreateRemoteCSE(p_resourceName, p_accessControlPolicyIds,p_cSEBase)}
 			};
 			
 			/**
 			 * @desc CREATE request primitive for remoteCSE resource with poa
 			 */
 			template (value) RequestPrimitive m_createRemoteCSE_poa(template (value) XSD.ID p_from := PX_TS_CSE1.cseId, template (omit) AcpType p_accessControlPolicyIds := omit, template (omit) ResourceName p_resourceName :=  c_defaultRemoteCSEResourceName, in template (omit) XSD.AnyURI p_cSEBase := PX_TS_CSE1.cseId & "/" & PX_TS_CSE1.cseName, in template (omit) XSD.ID p_cSE_ID := PX_TS_CSE1.cseId, in PoaList p_poaList) modifies m_createRemoteCSEBase := {
-				primitiveContent := {remoteCSE := m_contentCreateRemoteCSE_poa(p_resourceName, p_accessControlPolicyIds,p_cSEBase, p_cSE_ID, p_poaList)}
+				primitiveContent := {remoteCSE := m_contentCreateRemoteCSE_poa(p_resourceName, p_accessControlPolicyIds,p_cSEBase, p_poaList)}
 			};
 			
 			/**
@@ -1386,8 +1375,8 @@ module OneM2M_Templates {
 				primitiveContent := {subscription := m_contentCreateSubscription ({"NotInitialized"})}
 			};
         	
-        	template (value) RequestPrimitive m_createSubscription(XSD.ID p_parentResourceAddress, in template (omit)  XSD.String p_name, in template (value) ListOfURIs p_notificationURI := {"NotInitialized"}) modifies m_create := {
-        		to_ := p_parentResourceAddress,
+        	template (value) RequestPrimitive m_createSubscription(template (omit) XSD.ID p_to := omit, in template (omit)  XSD.String p_name, in template (value) ListOfURIs p_notificationURI := {"NotInitialized"}) modifies m_create := {
+        		to_ := p_to,
 				requestIdentifier := testcasename() & "-m_createSubscription",
         		resourceType := int23,
         		primitiveContent := {subscription := m_contentCreateSubscription (p_notificationURI, p_name)}
@@ -1462,9 +1451,9 @@ module OneM2M_Templates {
 				primitiveContent := {semanticMashupResult := m_contentCreateSemanticMashupResult}
 			};
         	
-			template (value) RequestPrimitive m_createSubscriptionAdvanced(	XSD.ID p_parentResourceAddress, 
+			template (value) RequestPrimitive m_createSubscriptionAdvanced(	template (omit) XSD.ID p_to := "NotInitialized", 
 																		   in template (omit)  XSD.String p_name := omit,
-																		   in template (value) ListOfURIs p_notificationURI,
+																		   in template (value) ListOfURIs p_notificationURI := {"NotInitialized"},
 																		   in template (omit) EventNotificationCriteria p_eventNotificationCriteria := omit,
 																		   in template (omit) XSD.PositiveInteger p_expirationCounter := omit,
 																		   in template (omit) BatchNotify p_batchNotify := omit,
@@ -1562,7 +1551,7 @@ module OneM2M_Templates {
         	
 			template (value) RequestPrimitive m_createTimeSeries(in template (omit)  XSD.String p_name := c_defaultTimeSeriesResourceName,
 																 in XSD.Boolean p_missingDataDetect := true,
-																 in XSD.NonNegativeInteger p_periodicInterval := 5,
+																 in XSD.NonNegativeInteger p_periodicInterval := 5000,
 																 in XSD.NonNegativeInteger p_missingDataMaxNr := 5, 
 																 in XSD.NonNegativeInteger p_missingDataDetectTimer := 2000) modifies m_createTimeSeriesBase := {
 				primitiveContent := {timeSeries := m_contentCreateTimeSeriesAttributes (p_name, p_missingDataDetect, p_periodicInterval, p_missingDataMaxNr, p_missingDataDetectTimer)}
@@ -2060,7 +2049,7 @@ module OneM2M_Templates {
         		operation := int4,
         		to_ := p_resourceAddress,
         		from_ := p_originator,
-				requestIdentifier := testcasename() & "-m_delete" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_delete",
         		resourceType := omit,
         		primitiveContent := omit, 
 				roleIDs := omit, 
@@ -2089,10 +2078,10 @@ module OneM2M_Templates {
 				vendorInformation := omit
 			};
 
-			template RequestPrimitive mw_delete(template XSD.ID p_resourceAddress := ?, template XSD.ID p_from := *) := {
+			template RequestPrimitive mw_delete(template XSD.ID p_resourceAddress := ?, template XSD.ID p_from := ?) := {
 				operation := int4,
 				to_ := p_resourceAddress,
-				from_ := ?,
+				from_ := p_from,
 				requestIdentifier := ?,
 				resourceType := omit,
 				primitiveContent := omit, 
@@ -2141,7 +2130,7 @@ module OneM2M_Templates {
 				operation := int5,
 				to_ := p_resourceAddress,
 				from_ := "NotInitialized",
-				requestIdentifier := testcasename() & "-m_notify" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_notify",
 				resourceType := omit,
 				primitiveContent := {notification := m_contentNotification_allOmit},
 				roleIDs := omit,
@@ -2193,7 +2182,7 @@ module OneM2M_Templates {
 				operation := int5,
 				to_ := "NotInitialized",
 				from_ := omit,
-				requestIdentifier := testcasename() & "-m_notifyAggregatedNotification" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_notifyAggregatedNotification",
 				resourceType := omit,
 				primitiveContent := {aggregatedNotification := {notification_list := {m_contentNotification_allOmit,m_contentNotification_allOmit}}},
 				roleIDs := omit,
@@ -2638,9 +2627,9 @@ module OneM2M_Templates {
 		template (value) AccessControlRule m_createAcr (in template (value) ListOfURIs p_acor, in template (value) AccessControlOperations p_allowedOperations) := {
 			accessControlOriginators := p_acor,//{"*"},//{PX_AE_ID_STEM}, //{"admin:admin"},
 			accessControlOperations := p_allowedOperations,
-			accessControlContexts_list := {},
+			accessControlContexts_list := omit,
 			accessControlAuthenticationFlag := omit, 
-			accessControlObjectDetails_list := {}
+			accessControlObjectDetails_list := omit
 		}
     	
 		/*template (value) CSEBase_optional m_contentCreateCSEBase (in template (value) ServiceSubscribedAppRule p_serviceSubscribedAppRule) := {
@@ -3303,8 +3292,9 @@ module OneM2M_Templates {
     	/**
 		 * @desc 	Base primitiveContent for CREATE operation for SemanticDescriptor resource
 		 */
-		template (value) SemanticDescriptor_optional m_contentCreateSemanticDescriptor := {			
-			resourceName := omit,                              //O
+		template (value) SemanticDescriptor_optional m_contentCreateSemanticDescriptor(in SemanticFormat p_descriptorRepresentation := int4,
+																						in XSD.Base64Binary p_descriptor := c_validDescriptor) := {			
+			resourceName := omit,                           //O
 			resourceType := omit,                           //NP
 			resourceID := omit,                             //NP
 			parentID := omit,                               //NP
@@ -3317,9 +3307,9 @@ module OneM2M_Templates {
 			announcedAttribute := omit,                     //O
 			dynamicAuthorizationConsultationIDs := omit,    //O
 			creator := omit,                                //O
-			descriptorRepresentation := omit,               //M
+			descriptorRepresentation := p_descriptorRepresentation,               //M
 			semanticOpExec := omit,                         //NP
-			descriptor := omit,                             //M
+			descriptor := p_descriptor,       //M
 			ontologyRef := omit,                            //O
 			relatedSemantics := omit,                       //O
 			semanticValidated := omit,                      //NP
@@ -3576,7 +3566,7 @@ module OneM2M_Templates {
 			expireAfter := omit,
 			sizeAbove := omit,
 			sizeBelow := omit,
-			operationMonitor_list := {},
+			operationMonitor_list := omit,
 			attribute := p_attribute_list, 
 			notificationEventType_list := p_notificationEventType_list,// TODO this list should be able to be omited see 9.6.8 (TS0001)
 			childResourceType := omit,
@@ -3610,7 +3600,7 @@ module OneM2M_Templates {
 			announcedAttribute := omit,//O
 			stateTag := omit,//NP
 			creator := omit,//O
-			contentInfo := "a",//O
+			contentInfo := "text/strings:0",//O
 			contentSize := omit,//NP
 			contentRef := omit, //O
 			ontologyRef := omit,//O
@@ -3831,7 +3821,7 @@ module OneM2M_Templates {
 		 * @desc Base primitiveContent for CREATE operation for RemoteCSE resource
 		 * @param p_name Resource name
 		 */
-		template (value) RemoteCSE_optional m_contentCreateRemoteCSE (in template (omit) XSD.String p_name := c_defaultRemoteCSEResourceName, in template (omit) AcpType p_accessControlPolicyIds, in template (omit) XSD.AnyURI p_cSEBase := PX_TS_CSE1.cseId, in template (omit) XSD.ID p_cSE_ID := PX_TS_CSE1.cseId):= {
+		template (value) RemoteCSE_optional m_contentCreateRemoteCSE (in template (omit) XSD.String p_name := c_defaultRemoteCSEResourceName, in template (omit) AcpType p_accessControlPolicyIds, in template (omit) XSD.AnyURI p_cSEBase := PX_TS_CSE1.cseId):= {
 			resourceName := p_name,//O
 			resourceType := omit,//NP
 			resourceID := omit,//NP
@@ -3847,7 +3837,7 @@ module OneM2M_Templates {
 			cseType := omit,//O
 			pointOfAccess := omit,//O
 			cSEBase := valueof(p_cSEBase),//M
-			cSE_ID := valueof(p_cSE_ID),//M
+			cSE_ID := omit,//M
 			m2M_Ext_ID := omit,//O
 			trigger_Recipient_ID := omit,//O
 			requestReachability := false,//M
@@ -3868,7 +3858,7 @@ module OneM2M_Templates {
 		 * @desc PrimitiveContent for CREATE operation for RemoteCSE resource with poa
 		 * @param p_name Resource name
 		 */
-		template (value) RemoteCSE_optional m_contentCreateRemoteCSE_poa (in template (omit) XSD.String p_name := c_defaultRemoteCSEResourceName, in template (omit) AcpType p_accessControlPolicyIds, in template (omit) XSD.AnyURI p_cSEBase := PX_TS_CSE1.cseId & "/" & PX_TS_CSE1.cseName, in template (omit) XSD.ID p_cSE_ID := PX_TS_CSE1.cseId, in PoaList p_poaList):= {
+		template (value) RemoteCSE_optional m_contentCreateRemoteCSE_poa (in template (omit) XSD.String p_name := c_defaultRemoteCSEResourceName, in template (omit) AcpType p_accessControlPolicyIds, in template (omit) XSD.AnyURI p_cSEBase := PX_TS_CSE1.cseId & "/" & PX_TS_CSE1.cseName, in PoaList p_poaList):= {
 			resourceName := p_name,//O
 			resourceType := omit,//NP
 			resourceID := omit,//NP
@@ -3884,7 +3874,7 @@ module OneM2M_Templates {
 			cseType := omit,//O
 			pointOfAccess := p_poaList,//O
 			cSEBase := valueof(p_cSEBase),//M
-			cSE_ID := valueof(p_cSE_ID),//M
+			cSE_ID := omit,//M
 			m2M_Ext_ID := omit,//O
 			trigger_Recipient_ID := omit,//O
 			requestReachability := true,//M
@@ -3920,7 +3910,7 @@ module OneM2M_Templates {
 			cseType := *,//O
 			pointOfAccess := *,//O
 			cSEBase := ?,//M
-			cSE_ID := ?,//M
+			cSE_ID := *,//M
 			m2M_Ext_ID := *,//O
 			trigger_Recipient_ID := *,//O
 			requestReachability := ?,//M
@@ -6519,7 +6509,7 @@ module OneM2M_Templates {
 			metaInformation := ?,//M
 			primitiveContent := *,//O
 			requestStatus := ?,//M
-			operationResult := ?,//M
+			operationResult := *,//M
 			choice := *//O
 		};
 		
@@ -7049,6 +7039,10 @@ module OneM2M_Templates {
 			}
 		};
 		
+		template Representation mw_timeSeriesNotification (TimeSeriesNotification p_timeSeriesNotification) := {
+			timeSeriesNotification := p_timeSeriesNotification
+		}
+		
 		template (value) Node_optional m_contentNode_allOmit := {
 			
 			resourceName := omit,
@@ -7163,6 +7157,11 @@ module OneM2M_Templates {
 			missingDataList := p_missingDataList,
 			missingDataCurrentNr := p_missingDataCurrentNr
 		}
+
+		template TimeSeriesNotification mw_contentTimeSeriesNotification(in template MissingDataList p_missingDataList := *, in template XSD.NonNegativeInteger p_missingDataCurrentNr := *) := {
+			missingDataList := p_missingDataList,
+			missingDataCurrentNr := p_missingDataCurrentNr
+		}
 		
 		template TimeSeries_optional mw_contentTimeSeries_rc1 modifies mw_contentTimeSeriesBase := {
 			choice := omit	//O
@@ -7961,7 +7960,7 @@ module OneM2M_Templates {
     	
 		template (value) ResponsePrimitive m_responseNotification(ResponseStatusCode p_statusCode, in template(omit) PrimitiveContent p_notification := omit) := {
 			responseStatusCode := p_statusCode,
-			requestIdentifier := testcasename() & "-m_responseNotification" & f_rnd(1, 1000000),
+			requestIdentifier := testcasename() & "-m_responseNotification",
 			primitiveContent := p_notification,
 			to_ := omit,
 			from_ := omit,
@@ -8103,7 +8102,7 @@ module OneM2M_Templates {
 				operation := int1,
 				to_ := "NotInitialized",
 				from_ := "UNINITIALIZED",
-				requestIdentifier := testcasename() & "-m_utCreate" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreate",
 				resourceType := omit,
 				primitiveContent := omit,
 				roleIDs := omit, 
@@ -8136,7 +8135,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateAe modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateAe" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateAe",
 				resourceType := int2,
 				primitiveContent := {aE := m_contentAe_allOmit}
 			}
@@ -8144,7 +8143,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateContainer modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateContainer" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateContainer",
 				resourceType := int3,
 				primitiveContent := {container := valueof(mw_contentContainer_allOmit)}
 			}
@@ -8152,7 +8151,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateContentInstance modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateContentInstance" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateContentInstance",
 				resourceType := int4,
 				primitiveContent := {contentInstance := m_contentContentInstance_allOmit}
 			}
@@ -8160,7 +8159,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateSubscription modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateSubscription" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateSubscription",
 				resourceType := int23,
 				primitiveContent := {subscription := m_contentSubscription}
 			}
@@ -8168,7 +8167,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateRemoteCSE modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateRemoteCSE" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateRemoteCSE",
 				resourceType := int16,
 				primitiveContent := {remoteCSE := m_contentRemoteCSE_allOmit}
 			}
@@ -8176,7 +8175,7 @@ module OneM2M_Templates {
  		
 		template (value) UtTriggerPrimitive m_utCreatePollingChannel modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreatePollingChannel" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreatePollingChannel",
 				resourceType := int15,
 				primitiveContent := {pollingChannel := mw_contentPollingChannel_allOmit}
 			}
@@ -8187,7 +8186,7 @@ module OneM2M_Templates {
 				operation := int2,
 				to_ := p_targetResourceAddress,
 				from_ := "UNINITIALIZED",
-				requestIdentifier := "m_utRetrieveResource" & f_rnd(1, 1000000),
+				requestIdentifier := "m_utRetrieveResource",
 				resourceType := omit,
 				primitiveContent := omit,
 				roleIDs := omit, 
@@ -8220,7 +8219,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utRetrievePollingChannelUri(XSD.ID p_targetResourceAddress) modifies m_utRetrieve := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utRetrievePollingChannelUri" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utRetrievePollingChannelUri",
 				resourceType := int15,
 				primitiveContent := {pollingChannel := m_contentRetrievePollingChannel}
 			}
@@ -8228,7 +8227,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utRetrieveRemoteCSE(XSD.ID p_targetResourceAddress) modifies m_utRetrieve := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utRetrieveRemoteCSE" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utRetrieveRemoteCSE",
 				resourceType := int16,
 				primitiveContent := {remoteCSE := m_contentRemoteCSE_allOmit}
 			}
@@ -8239,7 +8238,7 @@ module OneM2M_Templates {
 				operation := int3,
 				to_ := "NotInitialized",
 				from_ := "UNINITIALIZED",
-				requestIdentifier := testcasename() & "-m_utUpdate" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utUpdate",
 				resourceType := omit,
 				primitiveContent := omit,
 				roleIDs := omit, 
@@ -8272,7 +8271,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utUpdateAe modifies m_utUpdate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utUpdateContainer" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utUpdateContainer",
 				resourceType := int2,
 				primitiveContent := {aE := m_contentUpdateAe}
 			}
@@ -8280,7 +8279,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utUpdateContainer modifies m_utUpdate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utUpdateContainer" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utUpdateContainer",
 				resourceType := int3,
 				primitiveContent := {container := m_contentUpdateContainer}
 			}
@@ -8291,7 +8290,7 @@ module OneM2M_Templates {
 				operation := int4,
 				to_ := "NotInitialized",
 				from_ := "UNINITIALIZED",
-				requestIdentifier := testcasename() & "-m_utDeleteRequest" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utDeleteRequest",
 				resourceType := omit,
 				primitiveContent := omit, 
 				roleIDs := omit, 
@@ -8389,7 +8388,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateRole modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateRole" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateRole",
 				resourceType := int31,
 				primitiveContent := {role := valueof(mw_contentRole_allOmit)}
 	 }	
@@ -8397,7 +8396,7 @@ module OneM2M_Templates {
 	
 		template (value) UtTriggerPrimitive m_utCreateToken modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateToken" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateToken",
 				resourceType := int32,
 				primitiveContent := {token := valueof(mw_contentToken_allOmit)}
 			}
@@ -8405,7 +8404,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateFlexContainer modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateFlexContainer" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateFlexContainer",
 				resourceType := int28,
 				primitiveContent := {flexContainer := m_contentFlexContainer_allOmit}
 			}
@@ -8413,7 +8412,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateDeviceAirConditioner modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateDeviceAirConditioner" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateDeviceAirConditioner",
 				resourceType := int28,
 				primitiveContent := {deviceAirConditioner := m_contentDeviceAirConditioner_allOmit}
 			}
@@ -8421,7 +8420,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateDeviceClothesWasherDryer modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateDeviceClothesWasherDryer" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateDeviceClothesWasherDryer",
 				resourceType := int28,
 				primitiveContent := {deviceClothesWasherDryer := m_contentDeviceClothesWasherDryer_allOmit}
 			}
@@ -8429,7 +8428,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateDeviceElectricVehicleCharger modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateDeviceElectricVehicleCharger" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateDeviceElectricVehicleCharger",
 				resourceType := int28,
 				primitiveContent := {deviceElectricVehicleCharger := m_contentDeviceElectricVehicleCharger_allOmit}
 			}
@@ -8437,7 +8436,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateDeviceLight modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateDeviceLightr" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateDeviceLightr",
 				resourceType := int28,
 				primitiveContent := {deviceLight := m_contentDeviceLight_allOmit}
 			}
@@ -8445,7 +8444,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateDeviceMicrogeneration modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateDeviceMicrogeneration" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateDeviceMicrogeneration",
 				resourceType := int28,
 				primitiveContent := {deviceMicrogeneration := m_contentDeviceMicrogeneration_allOmit}
 			}
@@ -8453,7 +8452,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateDeviceOven modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateDeviceOven" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateDeviceOven",
 				resourceType := int28,
 				primitiveContent := {deviceOven := m_contentDeviceOven_allOmit}
 			}
@@ -8461,7 +8460,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateDeviceRefrigerator modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateDeviceRefrigerator" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateDeviceRefrigerator",
 				resourceType := int28,
 				primitiveContent := {deviceRefrigerator := m_contentDeviceRefrigerator_allOmit}
 			}
@@ -8469,7 +8468,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateDeviceRobotCleaner modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateDeviceRobotCleaner" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateDeviceRobotCleaner",
 				resourceType := int28,
 				primitiveContent := {deviceRobotCleaner := m_contentDeviceRobotCleaner_allOmit}
 			}
@@ -8477,7 +8476,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateDeviceSmartElectricMeter modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateDeviceSmartElectricMeter" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateDeviceSmartElectricMeter",
 				resourceType := int28,
 				primitiveContent := {deviceSmartElectricMeter := m_contentDeviceSmartElectricMeter_allOmit}
 			}
@@ -8485,7 +8484,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateDeviceStorageBattery modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateDeviceStorageBattery" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateDeviceStorageBattery",
 				resourceType := int28,
 				primitiveContent := {deviceStorageBattery := m_contentDeviceStorageBattery_allOmit}
 			}
@@ -8493,7 +8492,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateDeviceTelevision modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateDeviceTelevision" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateDeviceTelevision",
 				resourceType := int28,
 				primitiveContent := {deviceTelevision := m_contentDeviceTelevision_allOmit}
 			}
@@ -8501,7 +8500,7 @@ module OneM2M_Templates {
 		
 	 	template (value) UtTriggerPrimitive m_utCreateDeviceThermostat modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateDeviceThermostat" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateDeviceThermostat",
 				resourceType := int28,
 				primitiveContent := {deviceThermostat := m_contentDeviceThermostat_allOmit}
 			}
@@ -8509,7 +8508,7 @@ module OneM2M_Templates {
 		
 		template (value) UtTriggerPrimitive m_utCreateDeviceWaterHeater modifies m_utCreate := {
 			requestPrimitive := {
-				requestIdentifier := testcasename() & "-m_utCreateDeviceWaterHeater" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utCreateDeviceWaterHeater",
 				resourceType := int28,
 				primitiveContent := {deviceWaterHeater := m_contentDeviceWaterHeater_allOmit}
 			}
@@ -8520,7 +8519,7 @@ module OneM2M_Templates {
 				operation := int5,
 				to_ := "NotInitialized",
 				from_ := "UNINITIALIZED",
-				requestIdentifier := testcasename() & "-m_utNotify" & f_rnd(1, 1000000),
+				requestIdentifier := testcasename() & "-m_utNotify",
 				resourceType := omit,
 				primitiveContent := omit,
 				roleIDs := omit, 
@@ -8550,6 +8549,348 @@ module OneM2M_Templates {
 			}, 
 			forcedFields := omit
 		};
-	 }	
-	
+	 }
+	 
+		group t8_primitives {
+			
+			template (value) T8Primitive m_t8Request(
+																							in template (value) T8Request p_t8Request
+																							) := {
+				t8Request := p_t8Request
+			} // End of template m_t8Request
+			
+			template (present) T8Primitive mw_t8Request(
+																									in template (present) T8Request p_t8Request := ?
+																									) := {
+				t8Request := p_t8Request
+			} // End of template mw_t8Request
+			
+			template (value) T8Primitive m_t8Response(
+																								in template (value) T8Response p_t8Response
+																								) := {
+				t8Response := p_t8Response
+			} // End of template m_t8Response
+			
+			template (present) T8Primitive mw_t8Response(
+																									in template (present) T8Response p_t8Response := ?
+																									) := {
+				t8Response := p_t8Response
+			} // End of template mw_t8Response
+			
+			template (omit) OneM2M_Types_3GPP_T8.URI m_uri_3gpp_nidd(
+																																in charstring p_apiRoot := "/",
+																																in template (omit) charstring p_apiSpecificSuffixes := omit,
+																																in template (omit) OneM2M_Types_3GPP_T8.URI.queryParameters p_queryParameters := omit
+			) := {
+				apiRoot             := p_apiRoot,
+				apiName             := "3gpp-nidd",
+				apiVersion          := "v1",
+				apiSpecificSuffixes := p_apiSpecificSuffixes,
+				queryParameters     := p_queryParameters
+			} // End of template m_uri_3gpp_nidd
+			
+			template (present) OneM2M_Types_3GPP_T8.URI mw_uri_3gpp_nidd(
+																																		template (present) charstring p_apiRoot := ?,
+																																		template charstring p_apiSpecificSuffixes := *,
+																																		template OneM2M_Types_3GPP_T8.URI.queryParameters p_queryParameters := *
+			) := {
+				apiRoot             := p_apiRoot,
+				apiName             := "3gpp-nidd",
+				apiVersion          := "v1",
+				apiSpecificSuffixes := p_apiSpecificSuffixes,
+				queryParameters     := p_queryParameters
+			} // End of template mw_uri_3gpp_nidd
+			
+			template (omit) 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
+			) modifies m_uri_3gpp_nidd := {
+				apiName             := "3gpp-device-triggering"
+			} // End of template m_uri_3gpp_device_triggering
+			
+			template (present) OneM2M_Types_3GPP_T8.URI mw_uri_3gpp_device_triggering(
+																																								template (present) charstring p_apiRoot := ?,
+																																								template charstring p_apiSpecificSuffixes := *,
+																																								template OneM2M_Types_3GPP_T8.URI.queryParameters p_queryParameters := *
+			) modifies mw_uri_3gpp_nidd := {
+				apiName             := "3gpp-device-triggering"
+			} // End of template mw_uri_3gpp_device_triggering
+			
+		} // End of group t8_primitives
+		
+		group t8_request {
+			
+			template (omit) T8Request m_t8_request_get(
+																								in template (value) OneM2M_Types_3GPP_T8.URI p_resourceUri,
+																								in template (value) RequestHeaders p_requestHeaders,
+																								in template (omit) RequestBody p_requestBody := omit
+																								) := {
+				resourceMethod := GET,
+				resourceUri    := p_resourceUri,
+				requestHeaders := p_requestHeaders,
+				requestBody    := p_requestBody
+			} // End of template m_t8_request_get
+			
+			template (omit) T8Request m_t8_request_post(
+																									in template (value) OneM2M_Types_3GPP_T8.URI p_resourceUri,
+																									in template (value) RequestHeaders p_requestHeaders,
+																									in template (omit) RequestBody p_requestBody := omit
+																									) modifies m_t8_request_get := {
+				resourceMethod := POST
+			} // End of template m_t8_request_post
+			
+			template (present) T8Request mw_t8_request_post(
+																											template (present) OneM2M_Types_3GPP_T8.URI p_resourceUri := ?,
+																											template (present) RequestHeaders p_requestHeaders := ?,
+																											template (present) RequestBody p_requestBody := ?
+																											) := {
+				resourceMethod := POST,
+				resourceUri    := p_resourceUri,
+				requestHeaders := p_requestHeaders,
+				requestBody    := p_requestBody
+			} // End of template mw_t8_request_post
+			
+			template (omit) T8Request m_t8_request_delete(
+																										in template (value) OneM2M_Types_3GPP_T8.URI p_resourceUri,
+																										in template (value) RequestHeaders p_requestHeaders,
+																										in template (omit) RequestBody p_requestBody := omit
+																										) modifies m_t8_request_get := {
+				resourceMethod := DELETE
+			} // End of template m_t8_request_delete
+			
+			template (omit) T8Request m_t8_request_patch(
+																									in template (value) OneM2M_Types_3GPP_T8.URI p_resourceUri,
+																									in template (value) RequestHeaders p_requestHeaders,
+																									in template (omit) RequestBody p_requestBody := omit
+																									) modifies m_t8_request_get := {
+				resourceMethod := PATCH
+			} // End of template m_t8_request_patch
+			
+			template (omit) T8Request m_t8_request_put(
+																									in template (value) OneM2M_Types_3GPP_T8.URI p_resourceUri,
+																									in template (value) RequestHeaders p_requestHeaders,
+																									in template (omit) RequestBody p_requestBody := omit
+																									) modifies m_t8_request_get := {
+				resourceMethod := PUT
+			} // End of template m_t8_request_put
+			
+		} // End of group t8_request
+		
+		group t8_response {
+			
+			template (omit) T8Response m_t8_response_200_ok(
+																											in template (present) ResponseHeaders p_responseHeaders
+																											) := {
+				responseCode    := 200,
+				responseHeaders := p_responseHeaders,
+				responseBody    := omit
+			} // End of template m_t8_response_200_ok
+			
+			template T8Response mw_t8_response_200_ok(
+																								template (present) ResponseHeaders p_responseHeaders := ?,
+																								template ResponseBody p_responseBody := *
+																								) := {
+				responseCode    := 200,
+				responseHeaders := p_responseHeaders,
+				responseBody    := p_responseBody
+			} // End of template mw_t8_response_200_ok
+			
+			template T8Response mw_t8_response_201_created(
+																											template (present) ResponseHeaders p_responseHeaders := ?,
+																											template ResponseBody p_responseBody := *
+																											) modifies mw_t8_response_200_ok := {
+				responseCode    := 201
+			} // End of template mw_t8_response_201_ok
+			
+			template T8Response mw_t8_response_204_no_content(
+																												template (present) ResponseHeaders p_responseHeaders := ?,
+																												template ResponseBody p_responseBody := *
+																												) modifies mw_t8_response_200_ok := {
+				responseCode    := 204,
+				responseBody    := omit
+			} // End of template mw_t8_response_204_no_content
+			
+			template T8Response mw_t8_response_ko(
+																						template (present) ResponseHeaders p_responseHeaders := ?,
+																						template ProblemDetails p_problemDetails := ?
+																						) := {
+				responseCode    := ?,
+				responseHeaders := p_responseHeaders,
+				responseBody    := { problemDetails := p_problemDetails }
+			} // End of template mw_t8_response_ko
+			
+			template T8Response mw_t8_response_404_not_found(
+																												template (present) ResponseHeaders p_responseHeaders := ?,
+																												template ProblemDetails p_problemDetails := ?
+																												) modifies mw_t8_response_ko := {
+				responseCode    := 404
+			} // End of template mw_t8_response_404_not_found
+			
+		} // End of group t8_response
+		
+		group nidd {
+		
+			template (value) RequestBody m_request_body_niddConfiguration(
+																																		in template (value) NiddConfiguration p_niddConfiguration
+																																		) := {
+				individualNiddConfiguration := p_niddConfiguration
+			} // End of template m_request_body_niddConfiguration
+			
+			template (present) RequestBody mw_request_body_deviceTriggeringDeliveryReportNotification(
+																																																template (present) DeviceTriggeringDeliveryReportNotification p_deviceTriggeringDeliveryReportNotification := ?
+																																																) := {
+				deviceTriggeringDeliveryReportNotification := p_deviceTriggeringDeliveryReportNotification
+			} // End of template mw_request_body_deviceTriggeringDeliveryReportNotification
+			
+			template (value) NiddConfiguration m_niddConfiguration := {
+				self_ := "self_value",
+				supportedFeatures := Notification_test_event,
+				mtcProviderId := "mtcProviderId_value",
+				externalId := "externalId_value",
+				msisdn := "msisdn_value",
+				externalGroupId := "externalGroupId_value",
+				duration_ := omit,
+				reliableDataService := omit,
+				rdsPorts := omit, 
+				pdnEstablishmentOptions := omit,
+				notificationDestination := "/", 
+				requestTestNotification := omit,
+				websockNotifConfig := omit,
+				maximumPacketSize := omit,
+				niddDownlinkDataTransfers := omit,
+				status := ACTIVE
+			} // End of template m_niddConfiguration
+			
+			template (present) NiddConfiguration mw_niddConfiguration(
+																																template (present) Link p_notificationDestination := ?
+																																) := {
+				self_ := *,
+				supportedFeatures := *,
+				mtcProviderId := *,
+				externalId := *,
+				msisdn := *,
+				externalGroupId := *,
+				duration_ := *,
+				reliableDataService := *,
+				rdsPorts := *, 
+				pdnEstablishmentOptions := *,
+				notificationDestination := p_notificationDestination, 
+				requestTestNotification := *,
+				websockNotifConfig := *,
+				maximumPacketSize := *,
+				niddDownlinkDataTransfers := *,
+				status := *
+			} // End of template mw_niddConfiguration
+			
+			template (value) DeviceTriggeringDeliveryReportNotification m_deviceTriggeringDeliveryReportNotification(
+																																																								in template (value) Link p_transaction, 
+																																																								in template (value) DeliveryResult p_result
+																																																								) := {
+				transaction := p_transaction, 
+				result      := p_result
+			} // End of template m_deviceTriggeringDeliveryReportNotification
+			
+			template (present) DeviceTriggeringDeliveryReportNotification mw_deviceTriggeringDeliveryReportNotification(
+																																																									template (present) Link p_transaction := ?, 
+																																																									template (present) DeliveryResult p_result := ?
+																																																									) := {
+				transaction := p_transaction, 
+				result      := p_result
+			} // End of template mw_deviceTriggeringDeliveryReportNotification
+			
+			template (present) ResponseBody mw_response_body_niddConfigurations(
+																																					template (present) NiddConfigurations p_niddConfigurations := ?
+																																					) := {
+				niddConfigurations := p_niddConfigurations
+			} // End of template mw_response_body_niddConfigurations
+			
+			template (present) ResponseBody mw_response_body_individualNiddConfiguration(
+																																									template (present) NiddConfiguration p_individualNiddConfiguration := ?
+																																									) := {
+				individualNiddConfiguration := p_individualNiddConfiguration
+			} // End of template mw_response_body_individualNiddConfiguration
+			
+		} // End of group nidd
+		
+		group deviceTriggering {
+		
+			template (value) RequestBody m_request_body_deviceTriggering(
+																																		in template (value) DeviceTriggering p_deviceTriggeringTransaction
+																																		) := {
+				individualDeviceTriggeringTransaction := p_deviceTriggeringTransaction
+			} // End of template m_request_body_deviceTriggering
+			
+			template (value) ResponseBody m_response_body_deviceTriggerings(
+																																			in template (value) DeviceTriggerings p_deviceTriggeringTransactions
+																																			) := {
+				deviceTriggeringTransactions := p_deviceTriggeringTransactions
+			} // End of template m_response_body_deviceTriggerings
+			
+			template (present) ResponseBody mw_response_body_deviceTriggerings(
+																																				template (present) DeviceTriggerings p_deviceTriggeringTransactions := ?
+																																				) := {
+				deviceTriggeringTransactions := p_deviceTriggeringTransactions
+			} // End of template mw_response_body_deviceTriggerings
+			
+			template (present) ResponseBody mw_response_body_individualDeviceTriggering(
+																																									template (present) DeviceTriggering p_deviceTriggeringTransaction := ?
+																																									) := {
+				individualDeviceTriggeringTransaction := p_deviceTriggeringTransaction
+			} // End of template mw_response_body_individualDeviceTriggering
+			
+			template (value) DeviceTriggering m_deviceTriggering_externalId(
+																																			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
+																																			) := {
+				self_                   := omit,
+				externalId              := p_externalId,
+				msisdn                  := omit,
+				supportedFeatures       := omit,
+				validityPeriod          := p_validityPeriod,
+				priority                := p_priority,
+				applicationPortId       := p_applicationPortId,
+				appSrcPortId            := omit,
+				triggerPayload          := p_triggerPayload,
+				notificationDestination := p_notificationDestination, 
+				requestTestNotification := omit,
+				websockNotifConfig      := omit,
+				deliveryResult          := omit
+			} // End of template m_deviceTriggering_externalId
+			
+			template (present) DeviceTriggering mw_deviceTriggering_externalId(
+																																					template (present) ExternalId p_externalId := ?,
+																																					template (present) DurationSec p_validityPeriod := ?,
+																																					template (present) Priority p_priority := ?,
+																																					template (present) Port p_applicationPortId := ?,
+																																					template (present) Bytes p_triggerPayload := ?,
+																																					template (present) Link p_notificationDestination := ?
+																																					) := {
+				self_                   := *,
+				externalId              := p_externalId,
+				msisdn                  := omit,
+				supportedFeatures       := *,
+				validityPeriod          := p_validityPeriod,
+				priority                := p_priority,
+				applicationPortId       := p_applicationPortId,
+				appSrcPortId            := *,
+				triggerPayload          := p_triggerPayload,
+				notificationDestination := p_notificationDestination, 
+				requestTestNotification := *,
+				websockNotifConfig      := *,
+				deliveryResult          := *
+			} // End of template mw_deviceTriggeringTransaction
+			
+		} // End of group deviceTriggering
+		
+		template (present) ResponseBody mw_response_body_problem_details(
+																																			template (present) ProblemDetails p_problemDetails := ?
+																																			) := {
+			problemDetails := p_problemDetails
+		} // End of template mw_response_body_problem_details
+		
 }  // end of module
diff --git a/LibOneM2M/OneM2M_TestSystem.ttcn b/LibOneM2M/OneM2M_TestSystem.ttcn
index be995d3c68e4903521b0a4c42627b8a42b4ef06b..5496914b07aee39781d052df5b525087a699bb9d 100644
--- a/LibOneM2M/OneM2M_TestSystem.ttcn
+++ b/LibOneM2M/OneM2M_TestSystem.ttcn
@@ -11,6 +11,7 @@
  */
 module OneM2M_TestSystem {
 
+	import from OneM2M_Types_3GPP_T8 all;
 	import from OneM2M_Types all;
 	import from OneM2M_TypesAndValues all;
 	import from LibCommon_Time all;
@@ -50,6 +51,7 @@ module OneM2M_TestSystem {
 		//About configuration of the component
 		var Configurations vc_config;
 		var TestSystemRole vc_testSystemRole;
+		var boolean vc_componentRegistered := false;
 		//Default behaviour
 		var default vc_aeSimu := null;
 		var default vc_cseSimu := null;
@@ -110,6 +112,27 @@ module OneM2M_TestSystem {
 		var boolean vc_auxiliaryCse2Up := false;
 	};
 	
+	type component ScefSimu extends Tester {
+		//Attached components depending on config
+		var AeSimu vc_ae1;
+		var CseSimu vc_cse1;
+		//Attached components depending on config
+		//Ports
+		port OneM2M_McnPort mcnPort;
+		port OneM2M_McnPort mcnPortIn;
+		//global variables
+		var AeSimuComponentDesc vc_aeSimuDesc;
+		var CseSimuComponentDesc vc_cseSimuDesc;
+		var CseTypeID vc_cseType;	//cseType of the simulated CSE. IN =1, MN = 2
+		//About configuration of the component
+		var ScefSimuComponentDesc vc_scefSimuDesc;
+		//Resources list
+		//NIDD API
+		var NiddConfigurations vc_configurations := {};
+		//Resource index
+		//Status of attached component
+	};
+
 	type component InCseSimu extends CseSimu {
 	}
 	
@@ -131,6 +154,11 @@ module OneM2M_TestSystem {
 		port AdapterControlPort acPort;
 		port UpperTesterPort utPort;
 	}		
+
+	type component ScefSystem extends CseSystem {
+		port OneM2M_McnPort mcnPort;
+		port OneM2M_McnPort mcnPortIn;
+	}		
 	
 }// end of module
 with {
diff --git a/LibOneM2M/OneM2M_TypesAndValues.ttcn b/LibOneM2M/OneM2M_TypesAndValues.ttcn
index 3aa24eaebf17ea847c1e83e8d67c41cb80746714..e38c7f43c0130183f3ada473ed43476e2acb7919 100644
--- a/LibOneM2M/OneM2M_TypesAndValues.ttcn
+++ b/LibOneM2M/OneM2M_TypesAndValues.ttcn
@@ -14,6 +14,7 @@ module OneM2M_TypesAndValues {
 	import from XSD all;
 	import from OneM2M_Types all;
 	import from OneM2M_Types_homeDevice all;
+	import from LibCommon_TextStrings all;
 
 	group ResourceNames {
 		/* Constants */	
@@ -49,9 +50,9 @@ module OneM2M_TypesAndValues {
 		const XSD.String c_defaultRoleResourceName := "MyRoleResource";
 		const XSD.String c_defaultTokenResourceName := "MyTokenResource";
 		const XSD.String c_defaultGenericInterworkingServiceResourceName := "MyGenericInterworkingServiceResource"; //<genericInterworkingService>
-	const XSD.String c_defaultAe1ResourceName := "MyAe1";
-	const XSD.String c_defaultAe2ResourceName := "MyAe2";
-	const XSD.String c_defaultAcpResourceName := "MyAcp";
+		const XSD.String c_defaultAe1ResourceName := "MyAe1";
+		const XSD.String c_defaultAe2ResourceName := "MyAe2";
+		const XSD.String c_defaultAcpResourceName := "MyAcp";
 		const charstring c_invalid_location_update_period	:= "-PT30M10S" ;//duration set to invalid value  (minus value)
 		const XSD.ID c_resourceShortNameLatest := "la";		//<latest>
 		const XSD.ID c_resourceShortNameOldest := "ol";		//<oldest>
@@ -4099,6 +4100,7 @@ group OtherTypes {
 		e_cf02CseSimuMaster,
 		e_cf03,
 		e_cf04,
+		e_cf05,
 		e_cf06,
 		e_cf06DasSimuMaster,
 		e_cf07,
@@ -4110,7 +4112,8 @@ group OtherTypes {
 		e_ae,
 		e_ae_ipe,
 		e_das,
-		e_os
+		e_os,
+		e_t8
 	};
 		
 	type NhURI ParentID;
@@ -4383,7 +4386,11 @@ group OtherTypes {
 		MqttBindingDesc mqttBindingDesc,
 		WSBindingDesc   wsBindingDesc
 	}
-    
+
+	template BindingProtocolsSelect m_httpBindingDesc := {
+		httpBindingDesc := ?
+	}
+        
 	/**
 	 * @desc 
 	 * @member binding
@@ -4392,6 +4399,31 @@ group OtherTypes {
 	type record PortDesc {
 		BindingProtocolsSelect binding,
 		SerializationRepresentations serialization
+	}	
+	
+	/**
+	 * @desc 
+	 * @member binding
+	 * @member serialization
+	 */
+	type record T8PortDesc {
+		BindingProtocolsSelect binding ({httpBindingDesc := ?}),
+		SerializationRepresentations serialization ("json")
+	}
+	
+	type BindingProtocolsSelect MyInterface ({httpBindingDesc:=?}, {coapBindingDesc := ?});
+	
+	/**
+	 * @desc 
+	 * @member binding
+	 * @member serialization
+	 */
+	type union McnPortDesc {
+		T8PortDesc t8PortDesc
+	}
+    
+	template McnPortDesc m_t8PortDesc := {
+		t8PortDesc := ?
 	}
     
 	/**
@@ -4455,11 +4487,60 @@ group OtherTypes {
 		PortDesc mccPortIn
 	}
 
+	/**
+	 * @desc ScefSimu component settings
+	 * @member mcnPort   TTCN-3 'mcn' protocol for sending to the SUT
+	 * @member mcnPortIn TTCN-3 'mcn' protocol for receiving from the SUT
+	 */
+	type record ScefSimuComponentDesc {
+		/**
+		 * @desc Test System SCEF ID
+		 */	
+		XSD.ID scefId, 
+		McnPortDesc mcnPort ({t8PortDesc := ?}),
+		McnPortDesc mcnPortIn ({t8PortDesc := ?})
+	}
+	
 } 
 with {
   encode "adapter";
 } // End of group tsSettings
 	
 	
+group Values {
+	 const XSD.Base64Binary c_validDescriptor := char2oct("<?xml version=""1.0""?>"&c_CRLF&
+						"<rdf:RDF xmlns=""http://www.onem2m.org/ontology/houses_temperature_example#"""&c_CRLF&
+	 c_TAB&c_TAB&"xml:base=""http://www.onem2m.org/ontology/houses_temperature_example"""&c_CRLF&c_CRLF&
+	 c_TAB&c_TAB&"xmlns:temperature_example=""http://www.onem2m.org/ontology/temperature_example#"""&c_CRLF&
+	 c_TAB&c_TAB&"xmlns:rdf=""http://www.w3.org/1999/02/22-rdf-syntax-ns#"""&c_CRLF&
+	 c_TAB&c_TAB&"xmlns:owl=""http://www.w3.org/2002/07/owl#"""&c_CRLF&
+	 c_TAB&c_TAB&"xmlns:xml=""http://www.w3.org/XML/1998/namespace"""&c_CRLF&
+	 c_TAB&c_TAB&"xmlns:xsd=""http://www.w3.org/2001/XMLSchema#"""&c_CRLF&
+	 c_TAB&c_TAB&"xmlns:rdfs=""http://www.w3.org/2000/01/rdf-schema#"">"&c_CRLF&
+	 "<owl:NamedIndividual rdf:about=""http://www.onem2m.org/ontology/houses_temperature_example#Fridge1"">"&c_CRLF&
+	 "<rdf:type rdf:resource=""http://www.onem2m.org/ontology/temperature_example#Fridge""/>"&c_CRLF&
+	 "<temperature_example:hasFridgeTemperature rdf:resource=""http://www.onem2m.org/ontology/houses_temperature_example#FridgeTempProperty""/>"&c_CRLF&
+	"</owl:NamedIndividual>"&c_CRLF&
+	"<owl:NamedIndividual rdf:about=""http://www.onem2m.org/ontology/houses_temperature_example#FridgeTempProperty"">"&c_CRLF&
+	"<rdf:type rdf:resource=""http://www.onem2m.org/ontology/temperature_example#TemperatureProperty""/>"&c_CRLF&
+	"<temperature_example:hasDatatype>xsd:double</temperature_example:hasDatatype>"&c_CRLF&
+	"<temperature_example:hasUnit rdf:datatype=""http://www.w3.org/2001/XMLSchema#string"">Celsius</temperature_example:hasUnit>"&c_CRLF&
+	"<temperature_example:valueIsStoredIn>http://in.provider.com:7579/server/tempsensorae4/temperature/latest</temperature_example:valueIsStoredIn>"&c_CRLF&
+	"</owl:NamedIndividual>"&c_CRLF&
+	"<owl:NamedIndividual rdf:about=""http://www.onem2m.org/ontology/houses_temperature_example#FridgeTempSensor"">"&c_CRLF&
+	"<rdf:type rdf:resource=""http://www.onem2m.org/ontology/temperature_example#TemperatureSensor""/>"&c_CRLF&
+	"<temperature_example:hasTemperatureMeasuringFunction rdf:resource=""http://www.onem2m.org/ontology/houses_temperature_example#TempFunction4""/>"&c_CRLF&
+	"</owl:NamedIndividual>"&c_CRLF&
+	"<owl:NamedIndividual rdf:about=""http://www.onem2m.org/ontology/houses_temperature_example#TempFunction4"">"&c_CRLF&
+	"<rdf:type rdf:resource=""http://www.onem2m.org/ontology/temperature_example#TemperatureMeasuringFunction""/>"&c_CRLF&
+	"<temperature_example:measuresTemperature rdf:resource=""http://www.onem2m.org/ontology/houses_temperature_example#FridgeTempProperty""/>"&c_CRLF&
+	"</owl:NamedIndividual>"&c_CRLF&
+	"</rdf:RDF>");
+	
+	const charstring  c_encodedValidDescriptor := "PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxyZGY6UkRGIHhtbG5zPSJodHRwOi8vd3d3Lm9uZW0ybS5vcmcvb250b2xvZ3kvaG91c2VzX3RlbXBlcmF0dXJlX2V4YW1wbGUjIgogICAgIHhtbDpiYXNlPSJodHRwOi8vd3d3Lm9uZW0ybS5vcmcvb250b2xvZ3kvaG91c2VzX3RlbXBlcmF0dXJlX2V4YW1wbGUiCiAgICAgeG1sbnM6dGVtcGVyYXR1cmVfZXhhbXBsZT0iaHR0cDovL3d3dy5vbmVtMm0ub3JnL29udG9sb2d5L3RlbXBlcmF0dXJlX2V4YW1wbGUjIgogICAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgICB4bWxuczpvd2w9Imh0dHA6Ly93d3cudzMub3JnLzIwMDIvMDcvb3dsIyIKICAgICB4bWxuczp4bWw9Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIKICAgICB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIyIKICAgICB4bWxuczpyZGZzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAxL3JkZi1zY2hlbWEjIj4KCiAgICA8b3dsOk5hbWVkSW5kaXZpZHVhbCByZGY6YWJvdXQ9Imh0dHA6Ly93d3cub25lbTJtLm9yZy9vbnRvbG9neS9ob3VzZXNfdGVtcGVyYXR1cmVfZXhhbXBsZSNIb3VzZTEiPgogICAgICAgIDxyZGY6dHlwZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly93d3cub25lbTJtLm9yZy9vbnRvbG9neS90ZW1wZXJhdHVyZV9leGFtcGxlI0hvdXNlIi8+CiAgICAgICAgPHRlbXBlcmF0dXJlX2V4YW1wbGU6aGFzSW5kb29yVGVtcGVyYXR1cmUgcmRmOnJlc291cmNlPSJodHRwOi8vd3d3Lm9uZW0ybS5vcmcvb250b2xvZ3kvaG91c2VzX3RlbXBlcmF0dXJlX2V4YW1wbGUjSW5kb29yVGVtcFByb3BlcnR5MSIvPgogICAgPC9vd2w6TmFtZWRJbmRpdmlkdWFsPgoKICAgIDxvd2w6TmFtZWRJbmRpdmlkdWFsIHJkZjphYm91dD0iaHR0cDovL3d3dy5vbmVtMm0ub3JnL29udG9sb2d5L2hvdXNlc190ZW1wZXJhdHVyZV9leGFtcGxlI0luZG9vclRlbXBQcm9wZXJ0eTEiPgogICAgICAgIDxyZGY6dHlwZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly93d3cub25lbTJtLm9yZy9vbnRvbG9neS90ZW1wZXJhdHVyZV9leGFtcGxlI1RlbXBlcmF0dXJlUHJvcGVydHkiLz4KICAgICAgICA8dGVtcGVyYXR1cmVfZXhhbXBsZTpoYXNEYXRhdHlwZT54c2Q6aW50PC90ZW1wZXJhdHVyZV9leGFtcGxlOmhhc0RhdGF0eXBlPgogICAgICAgIDx0ZW1wZXJhdHVyZV9leGFtcGxlOmhhc1VuaXQ+RmFocmVuaGVpdDwvdGVtcGVyYXR1cmVfZXhhbXBsZTpoYXNVbml0PgogICAgICAgIDx0ZW1wZXJhdHVyZV9leGFtcGxlOnZhbHVlSXNTdG9yZWRJbj5odHRwOi8vaW4ucHJvdmlkZXIuY29tOjc1Nzkvc2VydmVyL3RlbXBzZW5zb3JhZTEvdGVtcGVyYXR1cmUvbGF0ZXN0PC90ZW1wZXJhdHVyZV9leGFtcGxlOnZhbHVlSXNTdG9yZWRJbj4KICAgIDwvb3dsOk5hbWVkSW5kaXZpZHVhbD4KCiAgICA8b3dsOk5hbWVkSW5kaXZpZHVhbCByZGY6YWJvdXQ9Imh0dHA6Ly93d3cub25lbTJtLm9yZy9vbnRvbG9neS9ob3VzZXNfdGVtcGVyYXR1cmVfZXhhbXBsZSNJbmRvb3JUZW1wU2Vuc29yMSI+CiAgICAgICAgPHJkZjp0eXBlIHJkZjpyZXNvdXJjZT0iaHR0cDovL3d3dy5vbmVtMm0ub3JnL29udG9sb2d5L3RlbXBlcmF0dXJlX2V4YW1wbGUjVGVtcGVyYXR1cmVTZW5zb3IiLz4KICAgICAgICA8dGVtcGVyYXR1cmVfZXhhbXBsZTpoYXNUZW1wZXJhdHVyZU1lYXN1cmluZ0Z1bmN0aW9uIHJkZjpyZXNvdXJjZT0iaHR0cDovL3d3dy5vbmVtMm0ub3JnL29udG9sb2d5L2hvdXNlc190ZW1wZXJhdHVyZV9leGFtcGxlI1RlbXBGdW5jdGlvbjEiLz4KICAgIDwvb3dsOk5hbWVkSW5kaXZpZHVhbD4KCjwvcmRmOlJERj4=";
+					
+	
+}//end of Values group
+	
 } 
 // end of module
diff --git a/LibOneM2M/OneM2M_Types_3GPP_T8.ttcn b/LibOneM2M/OneM2M_Types_3GPP_T8.ttcn
new file mode 100644
index 0000000000000000000000000000000000000000..a84dfcf7854561e7c9d856a666a0b04813f8e3e7
--- /dev/null
+++ b/LibOneM2M/OneM2M_Types_3GPP_T8.ttcn
@@ -0,0 +1,345 @@
+/**
+ *  Copyright Notification
+ *  No part of this document may be reproduced, in an electronic retrieval system or otherwise, except as authorized by written permission.
+ *  The copyright and the foregoing restriction extend to reproduction in all media.
+ *  © 2016, oneM2M Partners Type 1 (ARIB, ATIS, CCSA, ETSI, TIA, TSDSI, TTA, TTC).
+ *  All rights reserved.
+ *  
+ *  @author     oneM2M
+ *  @version    $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Types.ttcn $
+ *              $Id: OneM2M_Types.ttcn 356 2017-08-21 12:25:14Z reinaortega $
+ *  @desc       OneM2M data types module 
+ *
+ */
+module OneM2M_Types_3GPP_T8 {
+
+
+import from XSD all;
+import from OneM2M_Types all;
+import from OneM2M_TypesAndValues {type Resource_2; type ResourceTypeList_1; type PrimitiveContent};
+
+/* **************************************************
+ * **************************************************
+ * 		3GPP T8 Types
+ * **************************************************
+ * **************************************************
+*/
+
+	group t8_http_restfull_api {
+		
+		/**
+		 * @desc Type for the oneM2M primitives exchange
+		 * @member primitive oneM2M primitive
+		 */
+		type union T8Primitive {
+			T8Request t8Request,
+			T8Response t8Response
+		}
+	
+		/**
+		 * @desc Type for the oneM2M primitives exchange
+		 * @member primitive oneM2M primitive
+		 */
+		type record T8Request {
+			ResourceMethod resourceMethod,
+			URI resourceUri,
+			RequestHeaders requestHeaders optional,
+			RequestBody requestBody optional
+		}
+		
+		/**
+		 * @desc Type for the oneM2M primitives exchange
+		 * @member primitive oneM2M primitive
+		 */
+		type record T8Response {
+			ResponseCode responseCode,
+			ResponseHeaders responseHeaders optional,
+			ResponseBody responseBody optional
+		}
+		
+		type enumerated ResourceMethod {
+			GET (0),
+			PUT (1),
+			POST (2),
+			DELETE (3),
+			PATCH (4)
+		}
+		
+		type record of Header RequestHeaders;
+		
+		type record of Header ResponseHeaders;
+		
+		type record Header {
+			charstring header_name,
+			charstring header_value optional
+		}
+		
+		type Body RequestBody (	{individualNiddConfiguration:=?},
+								{individualNiddDownlinkDataDelivery:=?},
+								{individualDeviceTriggeringTransaction:=?},
+								{deviceTriggeringDeliveryReportNotification:=?});
+		
+		type Body ResponseBody;
+		
+		type union Body {
+			Acknowledgement acknowledgement,
+			//NIDD group
+			//NiddConfiguration
+			//NiddDownlinkDataTransfer
+			//NiddUplinkDataNotification
+			NiddConfigurations niddConfigurations,
+			NiddConfiguration individualNiddConfiguration,
+			NiddDownlinkDataTransfers niddDownlinkDataDeliveries,
+			NiddDownlinkDataTransfer individualNiddDownlinkDataDelivery,
+			NiddDownlinkDataDeliveryFailure niddDownlinkDataDeliveryFailure,
+			//DeviceTrigger
+			DeviceTriggerings deviceTriggeringTransactions,
+			DeviceTriggering individualDeviceTriggeringTransaction,
+			DeviceTriggeringDeliveryReportNotification deviceTriggeringDeliveryReportNotification,
+			ProblemDetails problemDetails
+		}
+	
+		type record URI { // FIXME Not really need and not defined in YAML files. To be removed
+			charstring apiRoot,
+			charstring apiName ("3gpp-nidd", "3gpp-device-triggering"),
+			charstring apiVersion ("v1"),
+			charstring apiSpecificSuffixes optional,
+			record of charstring queryParameters optional
+		}
+		
+		type integer ResponseCode (200,201,204,400,401,403,404,406,411,413,415,429,500,503);
+	} with {
+		encode "T8_HTTP"
+	} // End of group t8_http_restfull_api
+
+	group NIDD_API {
+	
+		type record of NiddConfiguration NiddConfigurations;
+		
+		type record NiddConfiguration {
+			charstring self_ optional,
+			SupportedFeaturesNiddApi supportedFeatures optional,
+			charstring mtcProviderId optional,
+			ExternalId externalId optional,
+			Msisdn msisdn optional,
+			ExternalGroupId externalGroupId optional,
+			DateTime duration_ optional,
+			boolean reliableDataService optional,
+			RdsPorts rdsPorts optional, 
+			PdnEstablishmentOptions pdnEstablishmentOptions optional,
+			Link notificationDestination, 
+			boolean requestTestNotification optional,
+			WebsockNotifConfig websockNotifConfig optional,
+			integer maximumPacketSize optional,
+			NiddDownlinkDataTransfers niddDownlinkDataTransfers optional,
+			NiddStatus status optional
+		}
+		with {
+			variant "name as uncapitalized";
+			variant (self_) "name as 'self'";
+			variant (duration_) "name as 'duration'";
+		};
+		
+		type record of NiddDownlinkDataTransfer NiddDownlinkDataTransfers;
+		
+		type record NiddDownlinkDataTransfer {
+			ExternalId externalId optional,
+			ExternalGroupId externalGroupId optional,
+			Msisdn msisdn optional,
+			Link self_ optional,
+			Bytes data,
+			boolean reliableDataService optional,
+			RdsPorts rdsPorts optional, 
+			DurationSec maximumLatency optional,
+			integer priority,
+			PdnEstablishmentOptions pdnEstablishmentOptions optional,
+			DeliveryStatus deliveryStatus optional,
+			DateTime requestedRetransmissionTime optional
+		}
+		with {
+			variant "name as uncapitalized";
+			variant (self_) "name as 'self'";
+		};
+				
+		type record NiddDownlinkDataDeliveryFailure {
+			ProblemDetails problemDetail,
+			DateTime requestedRetransmissionTime optional
+		}
+	}//end group NIDD_API
+	
+	group DeviceTriggering_API {
+	
+		type record of DeviceTriggering DeviceTriggerings;
+		
+		type record DeviceTriggering {
+			charstring self_ optional,
+			ExternalId externalId optional,
+			Msisdn msisdn optional,
+			SupportedFeaturesNiddApi supportedFeatures optional,
+			DurationSec validityPeriod,
+			Priority priority,
+			Port applicationPortId,
+			Port appSrcPortId optional,
+			Bytes triggerPayload,
+			Link notificationDestination, 
+			boolean requestTestNotification optional,
+			WebsockNotifConfig websockNotifConfig optional,
+			DeliveryResult deliveryResult optional
+		}
+		with {
+			variant "name as uncapitalized";
+			variant (self_) "name as 'self'";
+		};
+
+		type record DeviceTriggeringDeliveryReportNotification {
+			Link transaction, 
+			DeliveryResult result
+		}
+	
+	}//end group of DeviceTriggering_API
+
+	group Structured_data_types {
+		
+		//T8 API
+		type record Acknowledgement {
+			charstring details
+		}
+		
+		type record ProblemDetails {
+			charstring type_ optional,
+			charstring title optional,
+			integer status optional,
+			charstring detail optional,
+			charstring instance optional,
+			charstring cause optional,
+			InvalidParams invalidParams optional
+		}
+		with {
+			variant (type_) "name as 'type'"
+		}
+		
+		type record of InvalidParam InvalidParams;
+		
+		type record InvalidParam {
+			charstring param_,
+			charstring reason optional
+		}
+		with {
+			variant (param_) "name as 'param'"
+		}
+		
+		//NIDD API
+		type record WebsockNotifConfig {
+			Link websocketUri optional,
+			boolean requestWebsocketUri optional
+		}
+		
+		type record RdsPort {
+			Port portUE,
+			Port portSCEF
+		}
+		
+		type record of RdsPort RdsPorts;
+	}//end of Structured_data_types
+	
+	group Simple_data_types {
+	
+		type integer Bandwidth;
+		type charstring BdtReferenceId;
+		type charstring BdtReferenceIdRm;
+		type bitstring Binary;
+		type charstring Bytes;
+		type integer DayOfWeek (1..7);
+		type charstring DateTime;
+		type charstring DateTimeRm;
+		type charstring DateTimeRo;
+		type integer DurationSec;
+		type integer DurationSecRm;
+		type integer DurationSecRo;
+		type integer DurationMin;
+		type charstring ExternalId;
+		type charstring ExternalGroupId;
+		type charstring Link;
+		type charstring Mcc;
+		type charstring Mnc;
+		type charstring Msisdn;
+		type integer Port;
+		type integer PortRo;
+		type charstring ResourceId;
+		type charstring ScsAsId;
+		type charstring TimeOfDay;
+		type charstring Uri;
+		type integer Volume;
+		type integer VolumeRm;
+			
+	}//end of Simple_data_types
+	
+	group Enumerated_data_types {
+	
+		//NIDD API
+		type enumerated PdnEstablishmentOptions {
+			WAIT_FOR_UE (0),
+			INDICATE_ERROR (1),
+			SEND_TRIGGER (2)
+		}
+		
+		type enumerated DeliveryStatus {
+			SUCCESS,
+			SUCCESS_NEXT_HOP_ACKNOWLEDGED,
+			SUCCESS_NEXT_HOP_UNACKNOWLEDGED,
+			SUCCESS_ACKNOWLEDGED,
+			SUCCESS_UNACKNOWLEDGED,
+			TRIGGERED,
+			BUFFERING,
+			BUFFERING_TEMPORARILY_NOT_REACHABLE,
+			SENDING,
+			FAILURE,
+			FAILURE_RDS_DISABLE,
+			FAILURE_NEXT_HOP,
+			FAILURE_TIMEOUT,
+			FAILURE_TEMPORARILY_NOT_REACHABLE
+		}
+		
+		type enumerated NiddStatus {
+			ACTIVE,
+			TERMINATED_UE_NOT_AUTHORIZED,
+			TERMINATED,
+			RDS_PORT_UNKNOWN
+		}
+		type enumerated SupportedFeaturesNiddApi {
+			GroupMessageDelivery (1),
+			Notification_websocket (2),
+			Notification_test_event (3),
+			MT_NIDD_modification_cancellation (4),
+			Rds_port_verfication (5),
+			Rds_dynamic_port (6)
+		}
+		
+		type enumerated SupportedFeaturesDeviceTriggeringApi {
+			Notification_websocket (1),
+			Notification_test_event (2)
+		}
+		
+		//DeviceTriggering
+		type enumerated DeliveryResult {
+			SUCCESS,
+			UNKNOWN,
+			FAILURE,
+			TRIGGERED,
+			EXPIRED,
+			UNCONFIRMED,
+			REPLACED,
+			TERMINATE
+		}
+		
+		type enumerated Priority {
+			NO_PRIORITY,
+			PRIORITY
+		}
+	}//end of Enumerated_data_types
+	
+}
+with {
+  encode "JSON";
+}
+
diff --git a/LibOneM2M/oneM2M_Types b/LibOneM2M/oneM2M_Types
index 5aefeaaf923fac72b7661bf58dae798d55d23bb3..c22841b77a079b26ea4a70d45ee73bedbd1e0f94 160000
--- a/LibOneM2M/oneM2M_Types
+++ b/LibOneM2M/oneM2M_Types
@@ -1 +1 @@
-Subproject commit 5aefeaaf923fac72b7661bf58dae798d55d23bb3
+Subproject commit c22841b77a079b26ea4a70d45ee73bedbd1e0f94
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index 55f249009b4c694dd3f3475de86dda84f55e3b09..062b638e4759d1dba5f906fe2a67454a36932f82 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -2933,6 +2933,7 @@ module OneM2M_PermutationFunctions {
 				var integer v_aeIndex, v_remoteCseIndex, v_targetResourceIndex := -1;
 				var ResponseStatusCode v_responseStatusCode := int2000;   
 				var XSD.ID v_targetResourceAddress;
+				var XSD.ID v_originatorResourceAddress;
 				
 				// Test control
 
@@ -2953,7 +2954,8 @@ module OneM2M_PermutationFunctions {
 				
 				// Test Body
 				v_aeIndex := f_getLatestResource(vc_ae1);
-				
+				v_originatorResourceAddress := f_getLatestResourceAddress(vc_ae1, e_nonHierarchical, e_spRelative);
+ 				
 				v_targetResourceAddress := f_getLocalResourceAddress(v_targetResourceIndex, PX_ADDRESSING_METHOD, e_spRelative);
 				p_requestPrimitive.from_ := f_getOriginator(v_aeIndex);
 				p_requestPrimitive.to_ := v_targetResourceAddress;
@@ -2971,25 +2973,25 @@ module OneM2M_PermutationFunctions {
 				
 				tc_ac.start;
 				alt {
-					[v_responseStatusCode == int2001] mccPortIn.receive(mw_request(mw_create(-, v_targetResourceAddress))) -> value vc_request {
+					[v_responseStatusCode == int2001] mccPortIn.receive(mw_request(mw_create(v_originatorResourceAddress, v_targetResourceAddress))) -> value vc_request {
 						tc_ac.stop;
 						setverdict(pass, __SCOPE__ & ": Request primitive retargeted successfully");
 						f_processCreateRequestPrimitive(vc_request.primitive.requestPrimitive);
 						f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 					}
-					[v_responseStatusCode == int2000] mccPortIn.receive(mw_request(mw_retrieve(v_targetResourceAddress))) -> value vc_request {
+					[v_responseStatusCode == int2000] mccPortIn.receive(mw_request(mw_retrieve(v_targetResourceAddress, v_originatorResourceAddress))) -> value vc_request {
 						tc_ac.stop;
 						setverdict(pass, __SCOPE__ & ": Request primitive retargeted successfully");
 						f_processRetrieveRequestPrimitive(vc_request.primitive.requestPrimitive);
 						f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 					}
-					[v_responseStatusCode == int2004] mccPortIn.receive(mw_request(mw_update(-, v_targetResourceAddress))) -> value vc_request {
+					[v_responseStatusCode == int2004] mccPortIn.receive(mw_request(mw_update(v_originatorResourceAddress, v_targetResourceAddress))) -> value vc_request {
 						tc_ac.stop;
 						setverdict(pass, __SCOPE__ & ": Request primitive retargeted successfully");
 						f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive);
 						f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 					}
-					[v_responseStatusCode == int2002] mccPortIn.receive(mw_request(mw_delete(v_targetResourceAddress))) -> value vc_request {
+					[v_responseStatusCode == int2002] mccPortIn.receive(mw_request(mw_delete(v_targetResourceAddress, v_originatorResourceAddress))) -> value vc_request {
 						tc_ac.stop;
 						setverdict(pass, __SCOPE__ & ": Request primitive retargeted successfully");
 						f_processDeleteRequestPrimitive(vc_request.primitive.requestPrimitive);
@@ -3052,16 +3054,16 @@ module OneM2M_PermutationFunctions {
 				
 				if(valueof(p_requestPrimitive.operation) == int1) {
 					v_responseStatusCode := int2001;
-					vc_cse1.start(f_cse_createResourceHandler(mw_create(-, v_targetResourceAddress )));
+					vc_cse1.start(f_cse_createResourceHandler(mw_create(f_getResourceAddress(v_aeIndex, e_nonHierarchical, e_spRelative), v_targetResourceAddress )));
 				} else if(valueof(p_requestPrimitive.operation) == int2) {
 					v_responseStatusCode := int2000;
-					vc_cse1.start(f_cse_retrieveResourceHandler(v_targetResourceIndex));
+					vc_cse1.start(f_cse_retrieveResourceHandler(v_targetResourceIndex, mw_retrieve(v_targetResourceAddress, f_getResourceAddress(v_aeIndex, e_nonHierarchical, e_spRelative))));
 				} else if(valueof(p_requestPrimitive.operation) == int3) {
 					v_responseStatusCode := int2004;
-					vc_cse1.start(f_cse_updateResourceHandler(v_targetResourceIndex));
+					vc_cse1.start(f_cse_updateResourceHandler(v_targetResourceIndex, mw_update(f_getResourceAddress(v_aeIndex, e_nonHierarchical, e_spRelative),v_targetResourceAddress)));
 				} else if(valueof(p_requestPrimitive.operation) == int4) {
 					v_responseStatusCode := int2002;
-					vc_cse1.start(f_cse_deleteResourceHandler(v_targetResourceIndex));
+					vc_cse1.start(f_cse_deleteResourceHandler(v_targetResourceIndex, mw_delete(v_targetResourceAddress,f_getResourceAddress(v_aeIndex, e_nonHierarchical, e_spRelative))));
 				}
 
 				f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
@@ -8204,7 +8206,6 @@ module OneM2M_PermutationFunctions {
 	       
 						p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/fopt";
 						p_requestPrimitive.from_ := f_getOriginator(v_groupIndex);
-						p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
 						
 						// Test Body
 	
@@ -8280,8 +8281,7 @@ module OneM2M_PermutationFunctions {
 	   
 						p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/fopt";
 						p_requestPrimitive.from_ := f_getOriginator(v_groupIndex);
-						p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
-	
+						
 						// Test Body
 	
 						f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
@@ -8346,8 +8346,7 @@ module OneM2M_PermutationFunctions {
 						
 						p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/fopt";
 						p_requestPrimitive.from_ := f_getOriginator(v_groupIndex);
-						p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
-	
+						
 						// Test Body
 	
 						f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
@@ -8422,8 +8421,7 @@ module OneM2M_PermutationFunctions {
 	   
 						p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/fopt";
 						p_requestPrimitive.from_ := f_getOriginator(v_groupIndex);
-						p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
-	
+						
 						// Test Body
 	
 						f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
@@ -8497,8 +8495,7 @@ module OneM2M_PermutationFunctions {
 						   
 						p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/fopt";
 						p_requestPrimitive.from_ := f_getOriginator(v_groupIndex); 
-						p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
-	
+						
 						// Test Body
 	
 						f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
@@ -8600,8 +8597,7 @@ module OneM2M_PermutationFunctions {
 	   
 						p_requestPrimitive.to_ := f_getResourceAddress(v_groupIndex) & "/" & c_resourceShortNameFanOutPoint & "/" & c_defaultContainerResourceName;
 						p_requestPrimitive.from_ := f_getOriginator(v_groupIndex); //TODO see if it is correct or if we have to use PX_SUPER_ADMIN
-						p_requestPrimitive.requestIdentifier := p_requestPrimitive.requestIdentifier & f_rnd(1, 1000000);
-	
+						
 						// Test Body
 	
 						f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
@@ -9198,8 +9194,7 @@ module OneM2M_PermutationFunctions {
 							// Test Body
 							p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
 							p_requestPrimitive.from_ := f_getResourceId(vc_resourcesList[v_aeIndex2].resource);
-							p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
-	
+							
 							f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
 							tc_ac.start;
 							alt {
@@ -9268,8 +9263,7 @@ module OneM2M_PermutationFunctions {
 							// Test Body
 							p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
 							p_requestPrimitive.from_ := f_getOriginator(v_aeIndex);
-							p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
-	
+							
 							f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
 							tc_ac.start;
 							alt {
@@ -9324,7 +9318,6 @@ module OneM2M_PermutationFunctions {
 							// Test Body
 							p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
 							p_requestPrimitive.from_ := "testDomain";
-							p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
 							
 							f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
 							tc_ac.start;
@@ -9404,8 +9397,7 @@ module OneM2M_PermutationFunctions {
 							// Test Body
 							p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
 							p_requestPrimitive.from_ := f_getResourceId(vc_resourcesList[v_aeIndex2].resource);
-							p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
-			
+							
 							f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
 							tc_ac.start;
 							alt {
@@ -9462,8 +9454,7 @@ module OneM2M_PermutationFunctions {
 							// Test Body
 							p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
 							p_requestPrimitive.from_ := f_getOriginator(v_aeIndex);
-							p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
-			
+							
 							f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
 							tc_ac.start;
 							alt {
@@ -9532,8 +9523,7 @@ module OneM2M_PermutationFunctions {
 							// Test Body
 							p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
 							p_requestPrimitive.from_ := f_getOriginator(v_aeIndex);
-							p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
-			
+							
 							f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
 							tc_ac.start;
 							alt {
@@ -9595,8 +9585,7 @@ module OneM2M_PermutationFunctions {
 							// Test Body
 							p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
 							p_requestPrimitive.from_ := f_getOriginator(v_aeIndex);
-							p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
-			
+							
 							f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
 							tc_ac.start;
 							alt {
@@ -9653,8 +9642,7 @@ module OneM2M_PermutationFunctions {
 							// Test Body
 							p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
 							p_requestPrimitive.from_ := f_getOriginator(v_aeIndex);
-							p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
-			
+							
 							f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
 							tc_ac.start;
 							alt {
@@ -9709,8 +9697,7 @@ module OneM2M_PermutationFunctions {
 							// Test Body
 							p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
 							p_requestPrimitive.from_ := f_getOriginator(v_aeIndex);
-							p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
-			
+							
 							f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
 							tc_ac.start;
 							alt {
@@ -9770,8 +9757,7 @@ module OneM2M_PermutationFunctions {
 							// Test Body
 							p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
 							p_requestPrimitive.from_ := f_getOriginator(v_aeIndex);
-							p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
-			
+							
 							f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
 							tc_ac.start;
 							alt {
@@ -9826,8 +9812,7 @@ module OneM2M_PermutationFunctions {
 							// Test Body
 							p_requestPrimitive.to_ := f_getResourceAddress(v_containerIndex);
 							p_requestPrimitive.from_ := f_getOriginator(v_aeIndex);
-							p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
-	
+							
 							f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
 							tc_ac.start;
 							alt {
@@ -9889,7 +9874,6 @@ module OneM2M_PermutationFunctions {
 							// Test Body
 							p_requestPrimitive.to_ := f_getResourceAddress(v_containerIndex);
 							p_requestPrimitive.from_ := f_getOriginator(v_aeIndex);
-							p_requestPrimitive.requestIdentifier := valueof(p_requestPrimitive.requestIdentifier) & f_rnd(1, 1000000);
 								
 							f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
 							tc_ac.start;
@@ -9958,8 +9942,7 @@ module OneM2M_PermutationFunctions {
 							// Test Body
 							p_request.to_ := v_ae2ResourceAddress;
 							p_request.from_ := f_getOriginator(v_aeIndex);
-							p_request.requestIdentifier := valueof(p_request.requestIdentifier) & f_rnd(1, 1000000);
-	
+							
 							f_send(e_mcaPort, m_request(valueof(p_request)));
 							tc_ac.start;
 							alt {
@@ -10026,8 +10009,7 @@ module OneM2M_PermutationFunctions {
 							// Test Body
 							p_request.to_ := v_ae2ResourceAddress;
 							p_request.from_ := f_getOriginator(v_aeIndex);
-							p_request.requestIdentifier := valueof(p_request.requestIdentifier) & f_rnd(1, 1000000);
-	
+							
 							f_send(e_mcaPort, m_request(valueof(p_request)));
 							tc_ac.start;
 							alt {
@@ -12045,6 +12027,7 @@ module OneM2M_PermutationFunctions {
 					var RequestStatus v_requestStatus;
 					var URI v_requestResourceURI;
 					var ResponseStatusCode v_statusCode;
+					var RequestID v_requestIdentifier;
 					var template PrimitiveContent v_primitiveContent;
    
 							// Test control
@@ -12074,8 +12057,9 @@ module OneM2M_PermutationFunctions {
 					p_requestPrimitive.responseType := {int1, omit};		//nonBlockingRequestSynch
 
 					// Test Body
-
-						f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
+					f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
+					v_requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier;
+					
 					tc_ac.start;
 					alt {
 						[] mcaPort.receive(mw_response(mw_responsePrimitive(int1001, v_contentResponseUri))) -> value v_response {
@@ -12127,7 +12111,7 @@ module OneM2M_PermutationFunctions {
 								v_requestStatus := v_response.primitive.responsePrimitive.primitiveContent.request.requestStatus;
 								if (v_requestStatus==int1){			//COMPLETED
 									tc_ac.stop;
-									if (valueof(p_requestPrimitive.requestIdentifier) ==  valueof(v_response.primitive.responsePrimitive.primitiveContent.request.operationResult.requestIdentifier) ){
+									if (valueof(v_requestIdentifier) ==  valueof(v_response.primitive.responsePrimitive.primitiveContent.request.operationResult.requestIdentifier) ){
 										setverdict(pass, testcasename() & ": RequestStatus: COMPLETED and requestIdentifier attribute correctly received");
 									}else{
 										setverdict(fail, testcasename() & ": RequestStatus: COMPLETED and requestIdentifier attribute not correctly received");
@@ -12464,90 +12448,88 @@ module OneM2M_PermutationFunctions {
 				
 					function f_CSE_RT_NBA_005(template RequestPrimitive p_requestPrimitive, in template (omit) RequestPrimitive p_parentRequestPrimitive := omit, in ResponseStatusCode p_responseStatusCode) runs on AeSimu system CseSystem{
 			
-					// Local variables
-					var MsgIn v_response;
-					var RequestPrimitive v_request;
-					var integer v_aeIndex, v_ae2Index := -1;
-					var integer v_resourceIndex := -1;
-					var template PrimitiveContent v_contentResponse;
-   
-					// Test control
-					if(not PICS_NON_BLOCKING_REQUEST_SYNCH){
-						setverdict(inconc, __SCOPE__ & ": It is required to support Non-blocking access resource in synchronous mode to run this test case");
-						stop;
-					}
-
-					// Test component configuration
-					f_cf01Up(true);
-
-					// Test adapter configuration
-
-					// Preamble
-
-					v_contentResponse.uRI := ?;
-
-						v_aeIndex := f_cse_preamble_registerAe(-,  {f_getLocalPoA(vc_aeSimuDesc.mcaPortIn, "")});//c_CRUDNDi);
-
-					f_checkAeSimuStatus();
-					
-						vc_ae2.start(f_cse_createResource(int2, m_createAe(PX_TS_AE2.appId, -, PX_TS_AE2.aeIdStem, c_defaultAe2ResourceName, {f_getLocalPoA(PX_TS_AE2.mcaPortIn, "")}))); // AE2 is registred
-					
-					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
-					
-					v_ae2Index := f_getResourceFromAeSimu(vc_ae2);
-					
-					if(ispresent(p_parentRequestPrimitive)) {
-						v_resourceIndex := f_cse_createResource(valueof(p_parentRequestPrimitive.resourceType), p_parentRequestPrimitive, v_aeIndex);	
-						p_requestPrimitive.to_ := f_getResourceAddress(v_resourceIndex);
-					}else{
-						p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
-					}
-					p_requestPrimitive.from_ := f_getOriginator(v_aeIndex);					
-					p_requestPrimitive.responseType.responseTypeValue := int2;		//nonBlockingRequestAsynch
-					p_requestPrimitive.responseType.notificationURI := {f_getResourceAddress(v_aeIndex), f_getResourceAddress(v_ae2Index)};		//"...an empty notification target list is provided"
-
-					// Test Body
-
-						f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
-					tc_ac.start;
-					alt {
-						[] mcaPort.receive(mw_response(mw_responsePrimitive(int1002, v_contentResponse))) -> value v_response {
-							tc_ac.stop;
-							setverdict(pass, __SCOPE__ & ": URI attribute is set to <request> resource address");
-						}
-						[] mcaPort.receive(mw_response(mw_responsePrimitive(int1002))) -> value v_response {
-							tc_ac.stop;
-							setverdict(fail, __SCOPE__ & ": URI attribute is not set to <request> resource address");
-						}
-						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
-							tc_ac.stop;
-							setverdict(fail, __SCOPE__ & ": Wrong response status code");
-						}
-						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
-							tc_ac.stop;
-							setverdict(fail, __SCOPE__ & ": Wrong response status code");
+						// Local variables
+						var MsgIn v_response;
+						var RequestPrimitive v_request;
+						var integer v_aeIndex, v_ae2Index := -1;
+						var integer v_resourceIndex := -1;
+						var template PrimitiveContent v_contentResponse;
+	   
+						// Test control
+						if(not PICS_NON_BLOCKING_REQUEST_SYNCH){
+							setverdict(inconc, __SCOPE__ & ": It is required to support Non-blocking access resource in synchronous mode to run this test case");
+							stop;
 						}
-						[] tc_ac.timeout {
-							setverdict(fail, __SCOPE__ & ": No answer while executing a Non-blocking access resource in synchronous mode operation");
+	
+						// Test component configuration
+						f_cf01Up(true);
+	
+						// Test adapter configuration
+	
+						// Preamble
+	
+						v_contentResponse.uRI := ?;
+	
+						v_aeIndex := f_cse_preamble_registerAe(-,  {f_getLocalPoA(PX_TS_AE1.mcaPortIn, "")});//c_CRUDNDi);
+	
+						f_checkAeSimuStatus();
+						
+						vc_ae2.start(f_cse_createAccessControlPolicyAux("PermissionForNotificationAcp",{"all"}, int63)); // Permissions for NOTIFY 
+						f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+						
+						vc_ae2.start(f_cse_createResource_withAcpAux(int2, m_createAe(PX_TS_AE2.appId, -, PX_TS_AE2.aeIdStem, c_defaultAe2ResourceName, {f_getLocalPoA(PX_TS_AE2.mcaPortIn, "")}))); // AE2 is registred
+						f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+						
+						v_ae2Index := f_getResourceFromAeSimu(vc_ae2);
+						
+						if(ispresent(p_parentRequestPrimitive)) {
+							v_resourceIndex := f_cse_createResource(valueof(p_parentRequestPrimitive.resourceType), p_parentRequestPrimitive, v_aeIndex);	
+							p_requestPrimitive.to_ := f_getResourceAddress(v_resourceIndex);
+						}else{
+							p_requestPrimitive.to_ := f_getResourceAddress(v_aeIndex);
 						}
-					}
-
-					f_checkAeSimuStatus();
+						// Test Body
 
-					//Check if Notification is sent or not
-					
-					
-					vc_ae2.start(f_cse_notifyProcedure_responsePrimitiveHandler(mw_responsePrimitive(p_responseStatusCode)));
-					
-					f_cse_notifyProcedure_responsePrimitiveHandler(mw_responsePrimitive(p_responseStatusCode));
-					
-						f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+						f_send(e_mcaPort, m_request(valueof(p_requestPrimitive)));
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitive(int1002, v_contentResponse))) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, __SCOPE__ & ": URI attribute is set to <request> resource address");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitive(int1002))) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, __SCOPE__ & ": URI attribute is not set to <request> resource address");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, __SCOPE__ & ": Wrong response status code");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, __SCOPE__ & ": Wrong response status code");
+							}
+							[] tc_ac.timeout {
+								setverdict(fail, __SCOPE__ & ": No answer while executing a Non-blocking access resource in synchronous mode operation");
+							}
+						}
 
-					// Postamble
-					f_cse_postamble_deleteResources();
+						f_checkAeSimuStatus();
 
-					// Tear down
-					f_cf01Down();
+						//Check if Notification is sent or not
+						
+						
+						vc_ae2.start(f_cse_notifyProcedure_responsePrimitiveHandler(mw_responsePrimitive(p_responseStatusCode)));
+						
+						f_cse_notifyProcedure_responsePrimitiveHandler(mw_responsePrimitive(p_responseStatusCode));
+						
+							f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+	
+						// Postamble
+						f_cse_postamble_deleteResources();
+	
+						// Tear down
+						f_cf01Down();
 
 					}//end f_CSE_RT_NBA_005
 				
diff --git a/OneM2M_Testcases_CSE_Release_1.ttcn b/OneM2M_Testcases_CSE_Release_1.ttcn
index 2abce727e704c9dc2a694650426b2cb618e292ab..dc638d7782ce919c87ec0bf7f237962a71097ffe 100644
--- a/OneM2M_Testcases_CSE_Release_1.ttcn
+++ b/OneM2M_Testcases_CSE_Release_1.ttcn
@@ -4604,7 +4604,7 @@ module OneM2M_Testcases_CSE_Release_1 {
 						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
 						var template RequestPrimitive v_createRequest := m_createContentInstanceBase;
 						const AttributeList c_optionalAttribute := {"contentInfo"};
-						v_createRequest.primitiveContent.contentInstance.contentInfo := "MyContentInfo";
+						v_createRequest.primitiveContent.contentInstance.contentInfo := "text/strings:0";
 						
 						v_ae1.start(f_CSE_DMR_CRE_012(int4, v_createRequest, c_optionalAttribute));
 						v_ae1.done;
diff --git a/OneM2M_Testcases_CSE_Release_2.ttcn b/OneM2M_Testcases_CSE_Release_2.ttcn
index e079999f8ad9684ae1ddda25170379b790f50623..e5af8e553d436edc95d475bb419fa94aa843ae6a 100644
--- a/OneM2M_Testcases_CSE_Release_2.ttcn
+++ b/OneM2M_Testcases_CSE_Release_2.ttcn
@@ -1487,35 +1487,6 @@ module OneM2M_Testcases_CSE_Release_2 {
 						}
 					}
 					
-					testcase TC_CSE_DMR_UPD_014_SUB_ACPI() runs on Tester system CseSystem {
-						// Local variables
-						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
-						var AcpType v_accessControlPolicyIDs_1 := {"NotInitialized_1"};
-						var AcpType v_accessControlPolicyIDs_2 := {"NotInitialized_2"};
-						var template RequestPrimitive v_createRequest := m_createSubscriptionBase;
-						var template RequestPrimitive v_updateRequest := m_updateSubscriptionBase;
-						var ResponsePrimitive v_responsePrimitive;
-						v_createRequest.primitiveContent.subscription.accessControlPolicyIDs := v_accessControlPolicyIDs_1;
-						v_updateRequest.primitiveContent.subscription.accessControlPolicyIDs := v_accessControlPolicyIDs_2;
-
-						v_ae1.start(f_CSE_DMR_UPD_014(int23, v_createRequest, v_updateRequest));//Subscription
-						v_ae1.done;
-						
-						 
-
-						if(getverdict == pass){ v_responsePrimitive := f_getResponsePrimitive(v_ae1);
-							//Check attribute 1
-							if(ispresent(v_responsePrimitive.primitiveContent)) {
-								if(ischosen(v_responsePrimitive.primitiveContent.subscription)) {
-									if(v_responsePrimitive.primitiveContent.subscription.accessControlPolicyIDs != v_accessControlPolicyIDs_2){
-										setverdict(fail, __SCOPE__ & ": Error: AccessControlPolicyIDs attribute not updated correctly")
-									}
-								}
-							}
-						}
-
-					}
-					
 					testcase TC_CSE_DMR_UPD_014_SUB_BN() runs on Tester system CseSystem {
 						// Local variables
 						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
@@ -3364,7 +3335,8 @@ module OneM2M_Testcases_CSE_Release_2 {
 					// Local variables
 					var integer v_aeIndex := -1;
 					var integer v_resourceIndex := -1;
-					var RequestPrimitive v_req1, v_req2, v_req3;
+					var RequestPrimitive v_req1, v_req3;
+					var template RequestPrimitive v_req2;
 					var MsgIn v_resp1, v_resp3;
 					var ResponsePrimitive v_resp2;
 					
@@ -3388,11 +3360,12 @@ module OneM2M_Testcases_CSE_Release_2 {
 					v_req1 := valueof(m_retrievePollingRequest(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex)));
 					f_send(e_mcaPort, m_request(v_req1));
 					
-					v_req2 := valueof(m_notifyNotification(f_getResourceAddress(v_aeIndex), m_contentNotification_subscriptionVerification(PX_TS_CSE1.cseId)));
+					v_req2 := m_notifyNotification(f_getResourceAddress(v_aeIndex), m_contentNotification_subscriptionVerification(PX_TS_CSE1.cseId));
 					
-					vc_cse1.start(f_cse_notifyProcedure_notify(v_req2));
+					vc_cse1.start(f_cse_notifyProcedure_notify(valueof(v_req2)));
 					
 					v_req2.from_ := PX_TS_CSE1.cseId;
+					v_req2.requestIdentifier := pattern "{v_req2.requestIdentifier}*";
 					
 					tc_ac.start;
 					alt {
@@ -3473,7 +3446,8 @@ module OneM2M_Testcases_CSE_Release_2 {
 					// Local variables
 					var integer v_aeIndex := -1;
 					var integer v_resourceIndex := -1;
-					var RequestPrimitive v_req1, v_req2, v_req3;
+					var RequestPrimitive v_req1, v_req3;
+					var template RequestPrimitive v_req2;
 					var MsgIn v_resp1, v_resp3;
 					var ResponsePrimitive v_resp2;
 					
@@ -3494,10 +3468,11 @@ module OneM2M_Testcases_CSE_Release_2 {
 					
 					v_resourceIndex := f_cse_createResource(int15, m_createPollingChannelBase, v_aeIndex);
 					
-					v_req2 := valueof(m_notifyNotification(f_getResourceAddress(v_aeIndex), m_contentNotification_subscriptionVerification(PX_TS_CSE1.cseId)));
+					v_req2 := m_notifyNotification(f_getResourceAddress(v_aeIndex), m_contentNotification_subscriptionVerification(PX_TS_CSE1.cseId));
 					
-					vc_cse1.start(f_cse_notifyProcedure_notify(v_req2));
+					vc_cse1.start(f_cse_notifyProcedure_notify(valueof(v_req2)));
 					v_req2.from_ := PX_TS_CSE1.cseId;
+					v_req2.requestIdentifier := pattern "{v_req2.requestIdentifier}*";
 					
 					v_req1 := valueof(m_retrievePollingRequest(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex)));
 					f_send(e_mcaPort, m_request(v_req1));
@@ -3579,7 +3554,7 @@ module OneM2M_Testcases_CSE_Release_2 {
 					var integer v_aeIndex := -1;
 					var integer v_resourceIndex := -1;
 					var RequestPrimitive v_req1;
-					var RequestPrimitive v_req2;
+					var template RequestPrimitive v_req2;
 					var RequestPrimitive v_req3;
 					var MsgIn v_resp1, v_resp3;
 					var ResponsePrimitive v_resp2;//Response to a Notify Request
@@ -3605,10 +3580,11 @@ module OneM2M_Testcases_CSE_Release_2 {
 					v_req1 := valueof(m_retrievePollingRequest(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex)));
 					f_send(e_mcaPort, m_request(v_req1));
 					
-					v_req2 := valueof(m_notifyNotification(f_getResourceAddress(v_aeIndex), m_contentNotification_subscriptionVerification(PX_TS_CSE1.cseId)));
+					v_req2 := m_notifyNotification(f_getResourceAddress(v_aeIndex), m_contentNotification_subscriptionVerification(PX_TS_CSE1.cseId));
 					
-					vc_cse1.start(f_cse_notifyProcedure_notify(v_req2));
+					vc_cse1.start(f_cse_notifyProcedure_notify(valueof(v_req2)));
 					v_req2.from_ := PX_TS_CSE1.cseId;
+					v_req2.requestIdentifier := pattern "{v_req2.requestIdentifier}*";
 					
 					tc_ac.start;
 					alt {
diff --git a/OneM2M_Testcases_CSE_Release_3.ttcn b/OneM2M_Testcases_CSE_Release_3.ttcn
index 12a7e215a580fc068068f0e58e7da242c346fa08..4a0f52f3b4b8627b1833a7fd661050d2681e5486 100644
--- a/OneM2M_Testcases_CSE_Release_3.ttcn
+++ b/OneM2M_Testcases_CSE_Release_3.ttcn
@@ -21,8 +21,11 @@ module OneM2M_Testcases_CSE_Release_3 {
 	import from OneM2M_Pics all;
 	import from OneM2M_Functions all;
 	import from OneM2M_PermutationFunctions all;
+	import from LibCommon_Time all;
 	import from XSD all;
 	
+	import from OneM2M_Types_3GPP_T8 all;
+	
 	//Demos used for validation purposes
 	group oneM2M_demos {
 	
@@ -12302,10 +12305,13 @@ module OneM2M_Testcases_CSE_Release_3 {
     					
 					v_aeIndex := f_cse_preamble_registerAe();
 					
-					v_resourceIndex := f_cse_createResource(int29, m_createTimeSeries(-, -, 5, -, 2000), v_aeIndex);
+					v_resourceIndex := f_cse_createResource(int29, m_createTimeSeries(-, -, 5000, -, 1000), v_aeIndex);
 									
 					//Create data points and force a missingDataPoint
 					f_cse_generateMissingDataPoint(v_resourceIndex);
+					
+					f_sleep(3.0);
+					
 					// Test Body
     				f_send(e_mcaPort, m_request(m_retrieve(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex))));
 					tc_ac.start;
@@ -12371,6 +12377,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 					var integer v_resourceIndex := -1;
 					var Timestamp v_missingDataPointTimestamp;
 					var XSD.Long v_missingDataPointRel;
+					var integer v_timeSeriesInstanceNumber := 0;
 											   
 					// Test control
     				
@@ -12383,10 +12390,12 @@ module OneM2M_Testcases_CSE_Release_3 {
     					
 					v_aeIndex := f_cse_preamble_registerAe();
 					
-					v_resourceIndex := f_cse_createResource(int29, m_createTimeSeries(-, -, 5, 1, 2000), v_aeIndex);
+					v_resourceIndex := f_cse_createResource(int29, m_createTimeSeries(-, -, 5000, 1, 1000), v_aeIndex);
 									
 					//Create data points and force a missingDataPoint
-					f_cse_generateMissingDataPoint(v_resourceIndex);
+					f_cse_generateMissingDataPoint(v_resourceIndex, v_timeSeriesInstanceNumber);
+					
+					f_sleep(3.0);
 					
 					//Retrieve first missing data point
     				f_send(e_mcaPort, m_request(m_retrieve(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex))));
@@ -12430,7 +12439,8 @@ module OneM2M_Testcases_CSE_Release_3 {
 					
 					//Test body
 					//Create data points and force a second missingDataPoint
-					f_cse_generateMissingDataPoint(v_resourceIndex);
+					//f_cse_generateMissingDataPoint(v_resourceIndex, v_timeSeriesInstanceNumber + 1);
+					f_sleep(int2float(5000/1000));
 					
 					//Retrieve second missing data point
 					f_send(e_mcaPort, m_request(m_retrieve(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex))));
@@ -12507,14 +12517,15 @@ module OneM2M_Testcases_CSE_Release_3 {
 					var integer v_aeIndex := -1;
 					var integer v_timeSeriesIndex := -1;
 					var integer v_subscriptionIndex := -1;
-					var EventNotificationCriteria v_eventNotificationCriteria := valueof(m_eventNotificationCriteria({int1}, -));
+					var EventNotificationCriteria v_eventNotificationCriteria := valueof(m_eventNotificationCriteria({int8}, -));
 					var template RequestPrimitive v_createRequest := omit;
 					var RequestPrimitive v_request;
 					var integer v_ae2Index := -1;
 					var XSD.NonNegativeInteger v_missingDataPointNumber := 1;
-					var template PrimitiveContent v_contentNotification := {timeSeries := mw_contentTimeSeries(?,v_missingDataPointNumber)}; 
+					var template TimeSeriesNotification v_contentNotification := mw_contentTimeSeriesNotification(?,v_missingDataPointNumber); 
 	
-					v_eventNotificationCriteria.missingData := valueof(m_missingData(v_missingDataPointNumber, "PT0H"));
+					v_eventNotificationCriteria.missingData := valueof(m_missingData(v_missingDataPointNumber, "PT1H"));
+					v_createRequest := m_createSubscriptionAdvanced(-, -, -, v_eventNotificationCriteria, omit, omit, omit, omit, omit, omit);
 
 					// Test control
 
@@ -12526,12 +12537,12 @@ module OneM2M_Testcases_CSE_Release_3 {
 					// Preamble
 					v_aeIndex := f_cse_preamble_registerAe();
 					
-					v_timeSeriesIndex := f_cse_createResource(int29, m_createTimeSeries(-, true, 5, -, 2000), v_aeIndex);
+					v_timeSeriesIndex := f_cse_createResource(int29, m_createTimeSeries(-, true, 5000, -, 1000), v_aeIndex);
 	
 					f_cse_preamble_subscriptionVerification(v_ae2Index, v_createRequest, int23);
 	
-					v_createRequest := m_createSubscriptionAdvanced(f_getResourceAddress(v_timeSeriesIndex), -, {f_getResourceAddress(v_aeIndex)}, v_eventNotificationCriteria, omit, omit, omit, omit, omit, omit);
-
+					//v_createRequest.primitiveContent.subscription.notificationURI := {"http://127.0.0.1:61617/"};
+					
 					v_subscriptionIndex := f_cse_createResource(int23, v_createRequest, v_timeSeriesIndex);
 	
 					if(vc_ae2.running) {
@@ -12539,12 +12550,12 @@ module OneM2M_Testcases_CSE_Release_3 {
 					};
 
 					// Test Body
+					vc_ae2.start(f_cse_notifyProcedure_timeSeriesNotificationHandler(v_contentNotification));
 					
 					//Create data points and force a missingDataPoint
-					vc_ae2.start(f_cse_generateMissingDataPoint(v_timeSeriesIndex)); 	
-					vc_ae2.done;				
-
-					f_cse_notifyProcedure_representationHandler(v_contentNotification);
+					f_cse_generateMissingDataPoint(v_timeSeriesIndex); 	
+					
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
 
 					//Postamble
 					f_cse_postamble_deleteResources();
@@ -12574,14 +12585,16 @@ module OneM2M_Testcases_CSE_Release_3 {
 					var integer v_aeIndex := -1;
 					var integer v_timeSeriesIndex := -1;
 					var integer v_subscriptionIndex := -1;
-					var EventNotificationCriteria v_eventNotificationCriteria := valueof(m_eventNotificationCriteria({int1}, -));
+					var EventNotificationCriteria v_eventNotificationCriteria := valueof(m_eventNotificationCriteria({int8}, -));
 					var template RequestPrimitive v_createRequest := omit;
 					var ResponsePrimitive v_responsePrimitive;
 					var integer v_ae2Index := -1;
-					var XSD.NonNegativeInteger v_missingDataPointNumber := 100;
+					var XSD.NonNegativeInteger v_missingDataPointNumber := 1;
+					var template TimeSeriesNotification v_contentNotification := mw_contentTimeSeriesNotification(?,v_missingDataPointNumber); 
 					var template PrimitiveContent v_contentResponse;
 
-					v_eventNotificationCriteria.missingData := valueof(m_missingData(v_missingDataPointNumber, "PT0H"));
+					v_eventNotificationCriteria.missingData := valueof(m_missingData(v_missingDataPointNumber, "PT4S"));
+					v_createRequest := m_createSubscriptionAdvanced(-, -, -, v_eventNotificationCriteria, omit, omit, omit, omit, omit, omit);
 
 					// Test control
 
@@ -12593,68 +12606,32 @@ module OneM2M_Testcases_CSE_Release_3 {
 					// Preamble
 					v_aeIndex := f_cse_preamble_registerAe();
 	
-					v_timeSeriesIndex := f_cse_createResource(int29, m_createTimeSeries(-, true, 5, -, 2000), v_aeIndex);//TimeSeries
+					v_timeSeriesIndex := f_cse_createResource(int29, m_createTimeSeries(-, true, 5000, -, 1000), v_aeIndex);//TimeSeries
 
 					f_cse_preamble_subscriptionVerification(v_ae2Index, v_createRequest, int23);//AE2 registered
 
-					v_createRequest := m_createSubscriptionAdvanced(f_getResourceAddress(v_timeSeriesIndex), -, {f_getResourceAddress(v_aeIndex)}, v_eventNotificationCriteria, omit, omit, omit, omit, omit, omit);
+					//v_createRequest := m_createSubscriptionAdvanced(f_getResourceAddress(v_timeSeriesIndex), -, {f_getResourceAddress(v_aeIndex)}, v_eventNotificationCriteria, omit, omit, omit, omit, omit, omit);
 
 					v_subscriptionIndex := f_cse_createResource(int23, v_createRequest, v_timeSeriesIndex);//Subscription under TimeSeries
 
+					// Test Body
+	
 					if(vc_ae2.running) {
 						vc_ae2.stop;
 					};
 
 					// Test Body
-	
+					vc_ae2.start(f_cse_notifyProcedure_timeSeriesNotificationHandler(v_contentNotification));
+					
 					//Create data points and force a missingDataPoint
-					vc_ae2.start(f_cse_generateMissingDataPoint(v_timeSeriesIndex)); 	
-					vc_ae2.done;				
-
-					tc_ac.start;
-					alt {
-						[] mcaPortIn.receive(mw_request(mw_notifyNotification(?))){
-							tc_ac.stop;
-							setverdict(fail, __SCOPE__ & ":ERROR: Notification received");
-							//Send response in any case
-							v_responsePrimitive := valueof(m_responseNotification(int2000, omit));
-							v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier;
-							f_send(e_mcaPortIn, m_response(v_responsePrimitive));
-						}
-						[] tc_ac.timeout {
-							setverdict(pass, __SCOPE__ & ": Notification not received");
-						}
-					}	
+					f_cse_generateMissingDataPoint(v_timeSeriesIndex); 	
 					
-					//Check if the IUT restarts missing data point counter and timer
-					f_send(e_mcaPort, m_request(m_retrieve(f_getResourceAddress(v_timeSeriesIndex), f_getOriginator(v_timeSeriesIndex))));
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
+					
+					vc_ae2.start(f_cse_notifyProcedure_timeSeriesNotificationHandler(v_contentNotification));
+					
+					f_aeSimu_checkComponentDoneAndGetVerdict(vc_ae2);
 					
-					v_contentResponse.timeSeries := mw_contentTimeSeries_rc1;
-					v_contentResponse.timeSeries.missingDataCurrentNr := 0;
-
-					tc_ac.start;
-					alt {
-						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2000, v_contentResponse))){
-							tc_ac.stop;
-							setverdict(pass, __SCOPE__ & ": Response OK for retrieving. MissingDataCurrentNr has been restarted");
-						}
-						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))){
-							tc_ac.stop;
-							setverdict(fail, __SCOPE__ & ": Wrong response status code");
-						}
-						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)){
-							tc_ac.stop;
-							setverdict(fail, __SCOPE__ & ": Error, resource elements provided not matching expected resource elements");
-						}
-						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)){
-							tc_ac.stop;
-							setverdict(fail, __SCOPE__ & ": Error while retrieving resource");
-						}
-						[] tc_ac.timeout {
-							setverdict(fail, __SCOPE__ & ": No answer while retrieving resource");
-						}
-					}					
-
 					//Postamble
 					f_cse_postamble_deleteResources();
 
@@ -13612,9 +13589,9 @@ module OneM2M_Testcases_CSE_Release_3 {
 					var template RequestPrimitive v_request;
 					var integer v_aeIndex := -1;
 					var ResourceType v_resourceType := int24;	//Semantic Descriptor
-					var template (omit) XSD.Base64Binary invalidDescriptor := '1234'O;
+					var template (omit) XSD.Base64Binary v_invalidDescriptor := char2oct("WrongDescriptor");
 					
-                    // Test control
+					// Test control
 		
 					// Test component configuration
 					f_cf01Up();
@@ -13626,12 +13603,12 @@ module OneM2M_Testcases_CSE_Release_3 {
 					// Test Body
 					v_request := f_getCreateRequestPrimitive(v_resourceType, m_createSemanticDescriptorBase, v_aeIndex); 
 					v_request.from_ := f_getOriginator(v_aeIndex);
-					v_request.primitiveContent.semanticDescriptor.descriptor := invalidDescriptor;
-							
+					v_request.primitiveContent.semanticDescriptor.descriptor := v_invalidDescriptor;
+					
 					f_send(e_mcaPort, m_request(valueof(v_request)));
 					tc_ac.start;
 					alt {
-						[] mcaPort.receive(mw_response(mw_responsePrimitive(int4005))) {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int4000))) {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ": Semantic Descripter creation rejected with expected error code.");
 						}
@@ -13787,10 +13764,8 @@ module OneM2M_Testcases_CSE_Release_3 {
 					var integer v_aeIndex := -1;
 					var integer v_ontologyRepResourceIndex := -1;
 					var integer v_remoteOntologyResourceIndex := -1;
-					var XSD.ID v_RemoteOntologyResourceAddress;
-					var template RequestPrimitive v_requestSd;
-					var MsgIn v_request;
-					var ResponsePrimitive v_response;
+					var XSD.ID v_remoteOntologyResourceAddress;
+					var template RequestPrimitive v_requestSemanticDescriptor;
 					
 					// Test control
 	
@@ -13802,37 +13777,40 @@ module OneM2M_Testcases_CSE_Release_3 {
                     //	Preamble 
                     // AE registration
 					vc_ae1.start(f_cse_preamble_registerAe());              
-					vc_ae1.done;
-					v_aeIndex := f_getLatestResource(vc_ae1);
 					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
+					v_aeIndex := f_getLatestResource(vc_ae1);
+					
 					// CSE registraion
 					f_cse_registerRemoteCse(m_createRemoteCSE_poa(vc_cseSimuDesc.cseId, -, -, -, -, {f_getLocalPoA()}));
 					
 					// Create ontology resource at CSE1
 					v_ontologyRepResourceIndex := f_generateAndSetLocalResource(valueof(m_primitiveContentOntologyRepository(m_contentCreateOntologyRepository)), vc_cSEBaseIndex, int38);
 					v_remoteOntologyResourceIndex := f_generateAndSetLocalResource(valueof(m_primitiveContentOntology(m_contentCreateOntology)), v_ontologyRepResourceIndex, int39);
-					v_RemoteOntologyResourceAddress := f_getResourceAddress(v_remoteOntologyResourceIndex);
+					v_remoteOntologyResourceAddress := f_getResourceAddress(v_remoteOntologyResourceIndex);
 					
-					v_requestSd := m_createSemanticDescriptorBase;
+					v_requestSemanticDescriptor := m_createSemanticDescriptorBase;
 					// ontologyRef points to ontology resource in another CSE
-					v_requestSd.primitiveContent.semanticDescriptor.ontologyRef := v_RemoteOntologyResourceAddress;
-					v_requestSd.primitiveContent.semanticDescriptor.validationEnable := true;
-					vc_ae1.start(f_cse_createResource(int24, v_requestSd, v_aeIndex));
+					v_requestSemanticDescriptor.primitiveContent.semanticDescriptor.ontologyRef := v_remoteOntologyResourceAddress;
+					v_requestSemanticDescriptor.primitiveContent.semanticDescriptor.validationEnable := true;
+					vc_ae1.start(f_cse_createResource(int24, v_requestSemanticDescriptor, v_aeIndex));
 
 					tc_ac.start;
 					alt {
-						[] mccPortIn.receive(mw_request(mw_retrieve(v_RemoteOntologyResourceAddress))) -> value v_request {
+						[] mccPortIn.receive(mw_request(mw_retrieve(v_remoteOntologyResourceAddress))) -> value vc_request {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ": Retrieve request for Reference Ontology received.");
-							v_response := valueof(m_responsePrimitive(int2000,v_request.primitive.requestPrimitive.requestIdentifier));
-							v_response.primitiveContent := vc_localResourcesList[v_remoteOntologyResourceIndex].resource;
-							v_response.from_ := vc_cseSimuDesc.cseId;
-							v_response.to_ := v_request.primitive.requestPrimitive.from_;
-							f_send(e_mccPortIn, m_response(v_response));
+							
+							f_processRetrieveRequestPrimitive(vc_request.primitive.requestPrimitive, -, v_remoteOntologyResourceIndex);
+							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
 						}
 						[] mccPortIn.receive(mw_request(mw_retrieve(?))) {
 							tc_ac.stop;
 							setverdict(fail, __SCOPE__ & ": Wrong Retrieve request received");
+						
+							f_processRetrieveRequestPrimitive(vc_request.primitive.requestPrimitive, int4004, v_remoteOntologyResourceIndex);
+							f_send(e_mccPortIn, m_response(vc_response.primitive.responsePrimitive));
+						
 						}
 						[] tc_ac.timeout {
 							setverdict(fail, __SCOPE__ & ": No answer while retargeting request");
@@ -13841,13 +13819,12 @@ module OneM2M_Testcases_CSE_Release_3 {
 					
 					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
                     
-					vc_ae1.done;
-					
 					// Postamble
 					f_cse_postamble_deleteResourcesCSE();
 	
 					// Tear down
 					f_cf02DownCseSimuMaster();
+				
 				}//end function f_CSE_SEM_CRE_004			
 				
 				/**
@@ -13858,8 +13835,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 					var AeSimu v_ae1 := AeSimu.create("AE1") alive;
 					
 					v_ae1.start(f_CSE_SEM_CRE_005());
-                                                
-					v_ae1.done;
+                    v_ae1.done;
 				}
 				
 				function f_CSE_SEM_CRE_005() runs on AeSimu system CseSystem {
@@ -13869,7 +13845,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 					var integer v_remoteOntologyIndex := -1;
 					var XSD.ID v_remoteOntologyRepoAddress;
 					var XSD.ID v_remoteOntologyAddress;
-					var RequestPrimitive v_requestSd;
+					var RequestPrimitive v_requestSemanticDescriptor;
 					// Test control
         
 					// Test component configuration
@@ -13898,16 +13874,16 @@ module OneM2M_Testcases_CSE_Release_3 {
 					vc_cse1.start(f_cse_retrieveResourceHandler(v_remoteOntologyIndex));
 					
 					//Create Semeantic Descriptor
-					v_requestSd := f_getCreateRequestPrimitive(int24, m_createSemanticDescriptorBase, v_aeIndex);
-					v_requestSd.primitiveContent.semanticDescriptor.ontologyRef := v_remoteOntologyAddress;
-					v_requestSd.primitiveContent.semanticDescriptor.validationEnable := true;
-					f_send(e_mcaPort, m_request(v_requestSd));
+					v_requestSemanticDescriptor := f_getCreateRequestPrimitive(int24, m_createSemanticDescriptorBase, v_aeIndex);
+					v_requestSemanticDescriptor.primitiveContent.semanticDescriptor.ontologyRef := v_remoteOntologyAddress;
+					v_requestSemanticDescriptor.primitiveContent.semanticDescriptor.validationEnable := true;
+					f_send(e_mcaPort, m_request(v_requestSemanticDescriptor));
 					
 					tc_ac.start;
 					alt {
 						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2000))) {
 							tc_ac.stop;
-							setverdict(pass, __SCOPE__ & ": Rejected the creation request of Semantic Mashup Instance resource with expected status code BAD_REQUEST");
+							setverdict(pass, __SCOPE__ & ": Resource type 24 created successfully");
 						}
 						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) {
 							tc_ac.stop;
@@ -13946,9 +13922,9 @@ module OneM2M_Testcases_CSE_Release_3 {
 				function f_CSE_SEM_CRE_006() runs on AeSimu system CseSystem {
 					// Local variables
 					var integer v_aeIndex := -1;
-					var XSD.AnyURI v_invalidSmjpID := "Invlid_AnyURI";
+					var XSD.AnyURI v_invalidSmjpID := "Invalid_AnyURI";
 					var RequestPrimitive v_request;
-					var integer v_resourceIndexJobProfile := -1;
+					var integer v_resourceSemanticMashupJobProfileIndex := -1;
 								
 	                // Test control	
 	                		   
@@ -13962,11 +13938,10 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 					
 					// semanticMashupJobProfile
-					v_resourceIndexJobProfile := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
-	
-					v_request := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase, v_aeIndex);
-					v_request.primitiveContent.semanticMashupInstance.smjpID := v_invalidSmjpID;
+					v_resourceSemanticMashupJobProfileIndex := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
 	
+					v_request := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase(v_invalidSmjpID,-, -, - ), v_aeIndex);
+					
 					f_send(e_mcaPort, m_request(v_request));
 					tc_ac.start;
 					alt {
@@ -14009,7 +13984,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 					var MsgIn v_response;
 					var integer v_aeIndex := -1;
 					var integer v_resourceIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
+					var integer v_resourceSemanticMashupJobProfileIndex := -1;
 					const octetstring v_invalidSmjpInputParameter := int2oct(0,65537);
 					var RequestPrimitive v_request;
 					
@@ -14025,15 +14000,11 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 					
 	                // semanticMashupJobProfile
-					v_resourceIndexJobProfile := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
+					v_resourceSemanticMashupJobProfileIndex := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
 	
 	                // semanticMashupInstance
-					v_request := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase, v_aeIndex);
-					v_request.to_ := f_getResourceAddress(v_resourceIndexJobProfile);
-					v_request.from_ := f_getOriginator(v_aeIndex);
-					v_request.primitiveContent.semanticMashupInstance.smjpID := f_getResourceAddress(v_resourceIndexJobProfile);
-					v_request.primitiveContent.semanticMashupInstance.smjpInputParameter := v_invalidSmjpInputParameter;
-	
+					v_request := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase(f_getResourceAddress(v_resourceSemanticMashupJobProfileIndex), v_invalidSmjpInputParameter, -, -), v_aeIndex);
+					
 					f_send(e_mcaPort, m_request(v_request));
 					tc_ac.start;
 					alt {
@@ -14073,12 +14044,10 @@ module OneM2M_Testcases_CSE_Release_3 {
 					
 				function f_CSE_SEM_CRE_008() runs on AeSimu system CseSystem {
 					// Local variables
-					var MsgIn v_response;
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
+					var integer v_resourceSemanticMashupJobProfileIndex := -1;
 					const octetstring v_invalidSmjpInputParameter := int2oct(0,76584);
-					var XSD.Base64Binary v_validInputDescriptor:= int2oct(0,65000); //TO DO
-					var RequestPrimitive v_MashupInstancerequest;
+					var RequestPrimitive v_requestMashupInstance;
 	
 	                // Test control
 	                
@@ -14092,17 +14061,13 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 	
 	                //Create JobProfile resource
-					v_resourceIndexJobProfile := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex);
+					v_resourceSemanticMashupJobProfileIndex := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex);
 	
 	                //Create Mashup Instance
-					v_MashupInstancerequest := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase, v_aeIndex);
 					//smjpID set to reference to <semanticMashupJobProfile> resource 
-					v_MashupInstancerequest.primitiveContent.semanticMashupInstance.smjpID := f_getOriginator(v_resourceIndexJobProfile);
-					v_MashupInstancerequest.primitiveContent.semanticMashupInstance.smjpInputParameter := v_invalidSmjpInputParameter;						
-					v_MashupInstancerequest.to_ := f_getResourceAddress(v_resourceIndexJobProfile);
-					v_MashupInstancerequest.from_ := f_getOriginator(v_aeIndex);	
+					v_requestMashupInstance := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase(f_getResourceAddress(v_resourceSemanticMashupJobProfileIndex), v_invalidSmjpInputParameter, -, -), v_aeIndex);
 					
-					f_send(e_mcaPort, m_request(v_MashupInstancerequest));
+					f_send(e_mcaPort, m_request(v_requestMashupInstance));
 					
 					tc_ac.start;
 					alt {
@@ -14142,10 +14107,9 @@ module OneM2M_Testcases_CSE_Release_3 {
 				function f_CSE_SEM_CRE_009() runs on AeSimu system CseSystem {
 					// Local variables
 					// Local variables
-					var MsgIn v_response;
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
-					var RequestPrimitive v_MashupInstancerequest;
+					var integer v_resourceSemanticMashupJobProfileIndex := -1;
+					var RequestPrimitive v_requestMashupInstance;
 					//member filter query to identify a non existing member
 					var XSD.String v_memberFilter := "SELECT \?name WHERE { \?x foaf:name  \?name FILTER regex(\?name, \^mem\, \i\ }"; 
 					var template RequestPrimitive v_createRequestJobProfile := m_createSemanticMashupJobProfileBase;
@@ -14164,17 +14128,13 @@ module OneM2M_Testcases_CSE_Release_3 {
 					// Create JobProfile resource
 	                //	member filter query to identify a non existing member
 					v_createRequestJobProfile.primitiveContent.semanticMashupJobProfile.memberFilter := v_memberFilter;
-					v_resourceIndexJobProfile := f_cse_createResource(int40, v_createRequestJobProfile, v_aeIndex); 
+					v_resourceSemanticMashupJobProfileIndex := f_cse_createResource(int40, v_createRequestJobProfile, v_aeIndex); 
 					
 					//Create Mashup Instance
-					v_MashupInstancerequest := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase, v_aeIndex);
 					//smjpID set to reference to <semanticMashupJobProfile> resource 
-					v_MashupInstancerequest.primitiveContent.semanticMashupInstance.smjpID := f_getOriginator(v_resourceIndexJobProfile);
-					//v_MashupInstancerequest.primitiveContent.semanticMashupInstance.smjpInputParameter := v_smjpInputParameter;						
-					v_MashupInstancerequest.to_ := f_getResourceAddress(v_resourceIndexJobProfile);
-					v_MashupInstancerequest.from_ := f_getOriginator(v_aeIndex);	
+					v_requestMashupInstance := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase(f_getResourceAddress(v_resourceSemanticMashupJobProfileIndex), -, -, -), v_resourceSemanticMashupJobProfileIndex);
 					
-					f_send(e_mcaPort, m_request(v_MashupInstancerequest));
+					f_send(e_mcaPort, m_request(v_requestMashupInstance));
 					
 					tc_ac.start;
 					alt {
@@ -14213,10 +14173,9 @@ module OneM2M_Testcases_CSE_Release_3 {
 					
 				function f_CSE_SEM_CRE_010() runs on AeSimu system CseSystem {
 					// Local variables
-					var MsgIn v_response;
 					var integer v_aeIndex := -1;
 					var integer v_resourceIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
+					var integer v_resourceSemanticMashupJobProfileIndex := -1;
 					const octetstring v_invalidInputDescriptor := int2oct(0,65537);
 					var RequestPrimitive v_request;
 					
@@ -14274,10 +14233,8 @@ module OneM2M_Testcases_CSE_Release_3 {
 				
 				function f_CSE_SEM_CRE_011() runs on AeSimu system CseSystem {
 					// Local variables
-					var MsgIn v_response;
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
+					var integer v_resourceSemanticMashupJobProfileIndex := -1;
 					const octetstring v_invalidOutputDescriptor := int2oct(0,65537);
 					var RequestPrimitive v_request;
 					
@@ -14293,8 +14250,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 					
 					// semanticMashupJobProfile
-					v_request := f_getCreateRequestPrimitive(int40, m_createSemanticMashupJobProfileBase, v_aeIndex);
-					v_request.primitiveContent.semanticMashupJobProfile.outputDescriptor := v_invalidOutputDescriptor;
+					v_request := f_getCreateRequestPrimitive(int40, m_createSemanticMashupJobProfileBase(-, v_invalidOutputDescriptor, -), v_aeIndex);
 					
 					f_send(e_mcaPort, m_request(v_request));
 					
@@ -14335,10 +14291,8 @@ module OneM2M_Testcases_CSE_Release_3 {
 				
 			     function f_CSE_SEM_CRE_012() runs on AeSimu system CseSystem {
 					// Local variables
-					var MsgIn v_response;
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
+					var integer v_resourceSemanticMashupJobProfileIndex := -1;
 					var ResourceType v_resourceTypeJobProfile := int40;
 					const octetstring v_invalidFunctionDescriptor := int2oct(0,65537);
 					var RequestPrimitive v_request;
@@ -14355,8 +14309,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 					
 					// semanticMashupJobProfile
-					v_request := f_getCreateRequestPrimitive(int40, m_createSemanticMashupJobProfileBase, v_aeIndex);
-					v_request.primitiveContent.semanticMashupJobProfile.functionDescriptor := v_invalidFunctionDescriptor;
+					v_request := f_getCreateRequestPrimitive(int40, m_createSemanticMashupJobProfileBase(-, -, v_invalidFunctionDescriptor), v_aeIndex);
 					
 					f_send(e_mcaPort, m_request(v_request));
 					
@@ -14397,10 +14350,8 @@ module OneM2M_Testcases_CSE_Release_3 {
 					
 				 function f_CSE_SEM_CRE_013() runs on AeSimu system CseSystem {
 					// Local variables
-					var MsgIn v_response;
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
+					var integer v_resourceSemanticMashupJobProfileIndex := -1;
 					var ResourceType v_resourceTypeJobProfile := int40;
 					var RequestPrimitive v_request;
 					var Sparql v_invalidMemberFilter := "PREFIX foaf:  <http://xmlns.com/foaf/0.1/> SELECTECTION ?name WHERE { ?person foaf:name ?name . }";
@@ -14417,7 +14368,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 					
 					// semanticMashupJobProfile
-					v_request := f_getCreateRequestPrimitive(int40, m_createSemanticMashupJobProfileBase, v_aeIndex);
+					v_request := f_getCreateRequestPrimitive(int40, m_createSemanticMashupJobProfileBase(v_invalidMemberFilter, -, -), v_aeIndex);
 					v_request.primitiveContent.semanticMashupJobProfile.memberFilter := v_invalidMemberFilter;
 					
 					f_send(e_mcaPort, m_request(v_request));
@@ -14462,8 +14413,8 @@ module OneM2M_Testcases_CSE_Release_3 {
 					// Local variables
 					var MsgIn v_response;
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
-					var RequestPrimitive v_MashupInstancerequest;
+					var integer v_resourceSemanticMashupJobProfileIndex := -1;
+					var RequestPrimitive v_requestMashupInstance;
 					var template RequestPrimitive v_createRequestJobProfile := m_createSemanticMashupJobProfileBase;
 				   
 					// Test control
@@ -14478,16 +14429,13 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 					
 					// Create JobProfile resource
-					v_resourceIndexJobProfile := f_cse_createResource(int40, v_createRequestJobProfile, v_aeIndex); 
+					v_resourceSemanticMashupJobProfileIndex := f_cse_createResource(int40, v_createRequestJobProfile, v_aeIndex); 
 					
 					//Create Mashup Instance
-					v_MashupInstancerequest := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase, v_aeIndex);
 					//smjpID set to reference to <semanticMashupJobProfile> resource 
-					v_MashupInstancerequest.primitiveContent.semanticMashupInstance.smjpID := f_getOriginator(v_resourceIndexJobProfile);						
-					v_MashupInstancerequest.to_ := f_getResourceAddress(v_resourceIndexJobProfile);
-					v_MashupInstancerequest.from_ := f_getOriginator(v_aeIndex);	
+					v_requestMashupInstance := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase(f_getResourceAddress(v_resourceSemanticMashupJobProfileIndex), -, -, -), v_aeIndex);
 					
-					f_send(e_mcaPort, m_request(v_MashupInstancerequest));
+					f_send(e_mcaPort, m_request(v_requestMashupInstance));
 					
 					tc_ac.start;
 					alt {
@@ -14531,10 +14479,9 @@ module OneM2M_Testcases_CSE_Release_3 {
 				 function f_CSE_SEM_CRE_015() runs on AeSimu system CseSystem {
 					// Local variables
 					// Local variables
-					var MsgIn v_response;
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
-					var RequestPrimitive v_MashupInstancerequest;
+					var integer v_resourceSemanticMashupJobProfileIndex := -1;
+					var RequestPrimitive v_requestMashupInstance;
 					var template RequestPrimitive v_createRequestJobProfile := m_createSemanticMashupJobProfileBase;
 		   
 					// Test control
@@ -14549,18 +14496,15 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 			
 					// Create JobProfile resource
-					v_resourceIndexJobProfile := f_cse_createResource(int40, v_createRequestJobProfile, v_aeIndex); 
+					v_resourceSemanticMashupJobProfileIndex := f_cse_createResource(int40, v_createRequestJobProfile, v_aeIndex); 
 			
 					//Create Mashup Instance
-					v_MashupInstancerequest := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase, v_aeIndex);
 					//smjpID set to reference to <semanticMashupJobProfile> resource 
-					v_MashupInstancerequest.primitiveContent.semanticMashupInstance.smjpID := f_getOriginator(v_resourceIndexJobProfile);
+					v_requestMashupInstance := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase(f_getResourceAddress(v_resourceSemanticMashupJobProfileIndex), -, -, -), v_aeIndex);
 					// resultGenType is set to WHEN_SMI_IS_CREATED
-					v_MashupInstancerequest.primitiveContent.semanticMashupInstance.resultGenType := int1;						
-					v_MashupInstancerequest.to_ := f_getResourceAddress(v_resourceIndexJobProfile);
-					v_MashupInstancerequest.from_ := f_getOriginator(v_aeIndex);	
-			
-					f_send(e_mcaPort, m_request(v_MashupInstancerequest));
+					v_requestMashupInstance.primitiveContent.semanticMashupInstance.resultGenType := int1;						
+					
+					f_send(e_mcaPort, m_request(v_requestMashupInstance));
 			
 					tc_ac.start;
 					alt {
@@ -14606,11 +14550,11 @@ module OneM2M_Testcases_CSE_Release_3 {
 					// Local variables
 					var MsgIn v_response;
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
-					var RequestPrimitive v_MashupInstancerequest;
+					var integer v_resourceSemanticMashupJobProfileIndex := -1;
+					var RequestPrimitive v_requestMashupInstance;
 					var template RequestPrimitive v_createRequestJobProfile := m_createSemanticMashupJobProfileBase;
 					// 5sec nw delay assumed.
-					timer t_resultPerdiod := 15.0;
+					timer t_resultPeriod := 15.0;
 					var integer v_reponseCount := 0;
 		   
 							// Test control
@@ -14625,22 +14569,19 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 		
 					// Create JobProfile resource
-					v_resourceIndexJobProfile := f_cse_createResource(int40, v_createRequestJobProfile, v_aeIndex); 
+					v_resourceSemanticMashupJobProfileIndex := f_cse_createResource(int40, v_createRequestJobProfile, v_aeIndex); 
 		
 					//Create Mashup Instance
-					v_MashupInstancerequest := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase, v_aeIndex);
 					//smjpID set to reference to <semanticMashupJobProfile> resource 
-					v_MashupInstancerequest.primitiveContent.semanticMashupInstance.smjpID := f_getOriginator(v_resourceIndexJobProfile);
+					v_requestMashupInstance := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase(f_getResourceAddress(v_resourceSemanticMashupJobProfileIndex), -, -, -), v_aeIndex);
 					// resultGenType is set to PERIODICALLY 
-					v_MashupInstancerequest.primitiveContent.semanticMashupInstance.resultGenType := int3;
+					v_requestMashupInstance.primitiveContent.semanticMashupInstance.resultGenType := int3;
 					// timer set to 5sec
-					v_MashupInstancerequest.primitiveContent.semanticMashupInstance.periodForResultGen := "PT10S";		
-					v_MashupInstancerequest.to_ := f_getResourceAddress(v_resourceIndexJobProfile);
-					v_MashupInstancerequest.from_ := f_getOriginator(v_aeIndex);	
-		
-					f_send(e_mcaPort, m_request(v_MashupInstancerequest));
+					v_requestMashupInstance.primitiveContent.semanticMashupInstance.periodForResultGen := "PT10S";		
+					
+					f_send(e_mcaPort, m_request(v_requestMashupInstance));
 		
-					// t_resultPerdiod.start;
+					t_resultPeriod.start;
 					
 					alt {
 						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) {
@@ -14658,14 +14599,14 @@ module OneM2M_Testcases_CSE_Release_3 {
 //							}
 						}
 						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) {
-							t_resultPerdiod.stop;
+							t_resultPeriod.stop;
 							setverdict(fail, __SCOPE__ & ": Wrong return code received.");
 						}
                         [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
-                            t_resultPerdiod.stop;
+                            t_resultPeriod.stop;
                             setverdict(fail, __SCOPE__ & ": Unexpected message received.");
                         }
-						[] t_resultPerdiod.timeout {
+						[] t_resultPeriod.timeout {
 							setverdict(fail, __SCOPE__ & ": No response even after time out period of 15sec");
 						}
 					}
@@ -14702,11 +14643,10 @@ module OneM2M_Testcases_CSE_Release_3 {
 					var template RequestPrimitive p_createRequestPrimitive := m_createSemanticDescriptorBase;
 					var template RequestPrimitive p_updateRequestPrimitive := m_updateSemanticDescriptorBase;				
 					var ResourceType p_resourceType := int24;	//Semantic Descriptor
-					const octetstring v_descriptor := int2oct(0,65000);
-					var XSD.String v_semanticOpExec := "SELECT \?name WHERE { \?x foaf:name  \?name FILTER regex(\?name, \^semD\, \i\ }";							
+					var XSD.String v_semanticOpExec := "DELETE { ?person <http://bigco.example/HR/Person/fname> 'Miguel' }";							
 								   
 					// Test control
-		
+					
 					// Test component configuration
 					f_cf01Up();
 		
@@ -14717,11 +14657,12 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 					
 					//Create Semantic Descritor 
+					p_createRequestPrimitive.primitiveContent.semanticDescriptor.descriptor := c_validDescriptor;
 					v_resourceIndex := f_cse_createResource(p_resourceType, p_createRequestPrimitive, v_aeIndex);
 		
 					// Test Body
 					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.semanticOpExec := v_semanticOpExec;
-					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.descriptor := v_descriptor;
+					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.descriptor := c_validDescriptor;
                 							               											
 					
 					v_request := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_updateRequestPrimitive);
@@ -14747,6 +14688,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 		
 					// Tear down
 					f_cf01Down();
+				
 				}//end function f_CSE_SEM_UPD_001
 				
 								
@@ -14770,8 +14712,8 @@ module OneM2M_Testcases_CSE_Release_3 {
 					var template RequestPrimitive p_createRequestPrimitive := m_createSemanticDescriptorBase;
 					var template RequestPrimitive p_updateRequestPrimitive := m_updateSemanticDescriptorBase;				
 					var ResourceType p_resourceType := int24;	//Semantic Descriptor
-					var XSD.String v_semanticOpExec := "SELECT WHERE FILTER name";
-
+					var XSD.String v_semanticOpExec := "SELECT WHERE FILTER name";//Invalid SPARQL query
+					
 					// Test control
 
 					// Test component configuration
@@ -14784,12 +14726,11 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 		
 					// Test Body
+					p_createRequestPrimitive.primitiveContent.semanticDescriptor.descriptor := c_validDescriptor;
 					v_resourceIndex := f_cse_createResource(p_resourceType, p_createRequestPrimitive, v_aeIndex);
 
 					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.semanticOpExec := v_semanticOpExec;
                 							               												
-					p_updateRequestPrimitive.to_ := f_getResourceAddress(v_resourceIndex);
-					p_updateRequestPrimitive.from_ := f_getOriginator(v_aeIndex);	
 					v_request := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_updateRequestPrimitive);
 
 					f_send(e_mcaPort, m_request(v_request));
@@ -14814,6 +14755,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 		
 					// Tear down
 					f_cf01Down();
+				
 				}//end function f_CSE_SEM_UPD_002
 				
 				/**
@@ -14836,9 +14778,8 @@ module OneM2M_Testcases_CSE_Release_3 {
 					var template RequestPrimitive p_createRequestPrimitive := m_createSemanticDescriptorBase;
 					var template RequestPrimitive p_updateRequestPrimitive := m_updateSemanticDescriptorBase;				
 					var ResourceType p_resourceType := int24;	//Semantic Descriptor
-					const octetstring v_descriptor := int2oct(0,870009); //Base64Binary
-					
-
+					var template (omit) XSD.Base64Binary v_invalidDescriptor := char2oct("WrongDescriptor");
+	
 					// Test control
 
 					// Test component configuration
@@ -14851,12 +14792,11 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 		
 					// Test Body
+					p_createRequestPrimitive.primitiveContent.semanticDescriptor.descriptor := c_validDescriptor;
 					v_resourceIndex := f_cse_createResource(p_resourceType, p_createRequestPrimitive, v_aeIndex);
 
-					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.descriptor := v_descriptor;
+					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.descriptor := v_invalidDescriptor;
 					                							               												
-					p_updateRequestPrimitive.to_ := f_getResourceAddress(v_resourceIndex);
-					p_updateRequestPrimitive.from_ := f_getOriginator(v_aeIndex);	
 					v_request := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_updateRequestPrimitive);
 
 					f_send(e_mcaPort, m_request(v_request));
@@ -14881,6 +14821,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 		
 					// Tear down
 					f_cf01Down();
+				
 				}//end function f_CSE_SEM_UPD_003
 								
 				/**
@@ -14900,13 +14841,9 @@ module OneM2M_Testcases_CSE_Release_3 {
 					// Local variables
 					var integer v_aeIndex, v_remoteCseIndex, v_targetResourceIndex := -1;
 					var integer v_resourceIndex := -1;					
-					var template RequestPrimitive p_updateRequestPrimitive := m_updateSemanticDescriptorBase;
-					var RequestPrimitive v_request;
-					var ResourceType p_resourceType := int24;	//Semantic Descriptor
+					var template RequestPrimitive v_updateRequestPrimitive := m_updateSemanticDescriptorBase;
 					var boolean v_validationEnable := true;
-					const octetstring v_descriptor := int2oct(0,65000); //Base64Binary
 					var XSD.AnyURI v_ontologyRef := "NotInitialized";
-					var XSD.ID v_targetResourceAddress := "NotInitialized";
 					
 					// Test control
 	
@@ -14917,29 +14854,31 @@ module OneM2M_Testcases_CSE_Release_3 {
 					
 					// Preamble
 					vc_ae1.start(f_cse_preamble_registerAe());				
-					vc_ae1.done;
 					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
+					
 					v_remoteCseIndex := f_cse_registerRemoteCse(m_createRemoteCSE_poa(vc_cseSimuDesc.cseId, -, -, -, -, {f_getLocalPoA()}));
 										
 					// Test Body
 					v_aeIndex := f_getLatestResource(vc_ae1);
-					v_targetResourceIndex := f_generateAndSetLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), v_aeIndex, int24);
-
-					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.validationEnable := v_validationEnable;
-					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.descriptor := v_descriptor;
-					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.ontologyRef := v_ontologyRef;
+					v_targetResourceIndex := f_generateAndSetLocalResource(valueof(m_primitiveContentOntologyRepository(m_contentCreateOntologyRepository)), vc_cSEBaseIndex, int38);
+					v_targetResourceIndex := f_generateAndSetLocalResource(valueof(m_primitiveContentOntology(m_contentCreateOntology)), v_targetResourceIndex, int39);
 
-									                							               												
-					p_updateRequestPrimitive.to_ := f_getResourceAddress(v_resourceIndex);
-					p_updateRequestPrimitive.from_ := f_getOriginator(v_aeIndex);	
+					vc_ae1.start(f_cse_createResource(int24, m_createSemanticDescriptorBase, v_aeIndex));				
+					f_cseSimu_checkComponentDoneAndGetVerdict(vc_ae1);
 					
-					v_request := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_updateRequestPrimitive);
+					v_resourceIndex := f_getLatestResource(vc_ae1);
+					
+					v_updateRequestPrimitive.primitiveContent.semanticDescriptor.validationEnable := v_validationEnable;
+					v_ontologyRef := f_getResourceAddress(v_targetResourceIndex);
+					v_updateRequestPrimitive.primitiveContent.semanticDescriptor.ontologyRef := v_ontologyRef;
 
-					vc_ae1.start(f_cse_operationResource(v_request));	
+					v_updateRequestPrimitive := f_getUpdateRequestPrimitive(int24, v_resourceIndex, v_updateRequestPrimitive);
+
+					vc_ae1.start(f_cse_operationResource(v_updateRequestPrimitive));	
 					
 					tc_ac.start;
 					alt {
-						[] mccPortIn.receive(mw_request(mw_retrieve(v_targetResourceAddress))) -> value vc_request {
+						[] mccPortIn.receive(mw_request(mw_retrieve(v_ontologyRef))) -> value vc_request {
 							tc_ac.stop;
 							setverdict(pass, __SCOPE__ & ": Retrieved the referenced ontology successfully.");
 							f_processRetrieveRequestPrimitive(vc_request.primitive.requestPrimitive);
@@ -14979,14 +14918,11 @@ module OneM2M_Testcases_CSE_Release_3 {
 				
 				function f_CSE_SEM_UPD_005() runs on AeSimu system CseSystem {
 					var integer v_aeIndex := -1;
-					var integer v_cseBaseIndex := -1;
 					var integer v_resourceIndexSd := -1;
-					var XSD.ID v_remoteOntologyRepoAddress;
 					var XSD.ID v_remoteOntologyAddress;
 					var integer v_remoteOntologyRepoIndex := -1;
 					var integer v_remoteOntologyIndex := -1;
-					var RequestPrimitive v_updateRequest;
-					var template RequestPrimitive p_updateSdRequestPrimitive := m_updateSemanticDescriptorBase;
+					var RequestPrimitive v_updateSdRequestPrimitive := m_updateSemanticDescriptorBase;
 					
 					// Test control
         
@@ -14997,14 +14933,12 @@ module OneM2M_Testcases_CSE_Release_3 {
         
 					// Preamble
 					v_aeIndex := f_cse_preamble_registerAe();
-					v_cseBaseIndex := f_getLatestLocalResourceIndex(vc_cse1);
-                    
+					
 					vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, -, {f_getLocalPoA()})));
 					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
 
-					vc_cse1.start(f_generateAndSetLocalResource(valueof(m_primitiveContentOntologyRepository(m_contentCreateOntologyRepository)), v_cseBaseIndex, int38));
+					vc_cse1.start(f_generateAndSetLocalResource(valueof(m_primitiveContentOntologyRepository(m_contentCreateOntologyRepository)), -, int38));
 					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
-					v_remoteOntologyRepoAddress := f_getLatestLocalResourceAddress(vc_cse1, e_nonHierarchical, e_cseRelative);
 					v_remoteOntologyRepoIndex := f_getLatestLocalResourceIndex(vc_cse1);
 					
 					// Ontology resource in remote CSE
@@ -15021,10 +14955,10 @@ module OneM2M_Testcases_CSE_Release_3 {
 					vc_cse1.start(f_cse_retrieveResourceHandler(v_remoteOntologyIndex));
 					
 					// Update the Semantic Descriptor including ontologyRef
-					p_updateSdRequestPrimitive.primitiveContent.semanticDescriptor.ontologyRef := v_remoteOntologyAddress;
-					p_updateSdRequestPrimitive.primitiveContent.semanticDescriptor.validationEnable := true;
-					v_updateRequest := f_getUpdateRequestPrimitive(int24, v_resourceIndexSd, p_updateSdRequestPrimitive);
-					f_send(e_mcaPort, m_request(v_updateRequest));
+					v_updateSdRequestPrimitive.primitiveContent.semanticDescriptor.ontologyRef := v_remoteOntologyAddress;
+					v_updateSdRequestPrimitive.primitiveContent.semanticDescriptor.validationEnable := true;
+					v_updateSdRequestPrimitive := f_getUpdateRequestPrimitive(int24, v_resourceIndexSd, v_updateSdRequestPrimitive);
+					f_send(e_mcaPort, m_request(v_updateSdRequestPrimitive));
 					
 					tc_ac.start;
 					alt {
@@ -15045,8 +14979,6 @@ module OneM2M_Testcases_CSE_Release_3 {
 						}
 					}
 					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
-					vc_cse1.done;
-					
 							
 					// Postamble
 					f_cse_postamble_deleteResources();
@@ -15073,9 +15005,8 @@ module OneM2M_Testcases_CSE_Release_3 {
 					// Local variables
 					var integer v_aeIndex, v_remoteCseIndex, v_targetResourceIndex := -1;
 					var integer v_resourceIndex := -1;					
-					var template RequestPrimitive p_updateRequestPrimitive := m_updateSemanticDescriptorBase;
+					var template RequestPrimitive v_updateRequestPrimitive := m_updateSemanticDescriptorBase;
 					var RequestPrimitive v_request;
-					var ResourceType p_resourceType := int24;	//Semantic Descriptor
 					var boolean v_validationEnable := true;
 					const octetstring v_descriptor := int2oct(0,65000); //Base64Binary
 					var XSD.AnyURI v_ontologyRef := "NotInitialized";
@@ -15097,20 +15028,20 @@ module OneM2M_Testcases_CSE_Release_3 {
 										
 					// Test Body
 					v_aeIndex := f_getLatestResource(vc_ae1);
-					v_targetResourceIndex := f_generateAndSetLocalResource(valueof(m_primitiveContentContainer(m_contentCreateContainer)), v_aeIndex, int24);
+					v_targetResourceIndex := f_generateAndSetLocalResource(valueof(m_primitiveContentSemanticDescriptor(m_contentCreateSemanticDescriptor)), -, int24);
 
-					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.validationEnable := v_validationEnable;
-					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.descriptor := v_descriptor;
-					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.ontologyRef := v_ontologyRef;
-					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.relatedSemantics := v_relatedSemantics; //linked semantic descriptor
+					v_updateRequestPrimitive.primitiveContent.semanticDescriptor.validationEnable := v_validationEnable;
+					v_updateRequestPrimitive.primitiveContent.semanticDescriptor.descriptor := v_descriptor;
+					v_updateRequestPrimitive.primitiveContent.semanticDescriptor.ontologyRef := v_ontologyRef;
+					v_updateRequestPrimitive.primitiveContent.semanticDescriptor.relatedSemantics := v_relatedSemantics; //linked semantic descriptor
 
 									                							               												
-					p_updateRequestPrimitive.to_ := f_getResourceAddress(v_resourceIndex);
-					p_updateRequestPrimitive.from_ := f_getOriginator(v_aeIndex);	
+					v_updateRequestPrimitive.to_ := f_getResourceAddress(v_resourceIndex);
+					v_updateRequestPrimitive.from_ := f_getOriginator(v_aeIndex);	
 					
 					v_targetResourceAddress := f_getResourceAddress(v_resourceIndex) & "/" & c_resourceShortNameSemanticValidation;
 
-					v_request := f_getUpdateRequestPrimitive(p_resourceType, v_targetResourceIndex, p_updateRequestPrimitive);
+					v_request := f_getUpdateRequestPrimitive(int24, v_targetResourceIndex, v_updateRequestPrimitive);
 					
 					vc_ae1.start(f_cse_operationResource(v_request));	
 					
@@ -15162,7 +15093,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 					var XSD.AnyURI v_ontologyRef;
 					var XSD.AnyURI v_uriSemanticDescriptorCse1;
 					var XSD.AnyURI v_semanticValidationAddress;
-					var template RequestPrimitive p_updateRequestPrimitive := m_updateSemanticDescriptorBase;
+					var template RequestPrimitive v_updateRequestPrimitive := m_updateSemanticDescriptorBase;
 					var RequestPrimitive v_updateRequest;
 			
 					// Test control
@@ -15191,17 +15122,17 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_semanticDescriptorCse1Index := f_getLatestLocalResourceIndex(vc_cse1);
 					
 					//Compose Semantic Descriptor resource with link to Semantic Descriptor in remoteCSE
-					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.validationEnable := true;
-					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.ontologyRef := v_ontologyRef; 
-					p_updateRequestPrimitive.primitiveContent.semanticDescriptor.relatedSemantics := {v_uriSemanticDescriptorCse1}; 
+					v_updateRequestPrimitive.primitiveContent.semanticDescriptor.validationEnable := true;
+					v_updateRequestPrimitive.primitiveContent.semanticDescriptor.ontologyRef := v_ontologyRef; 
+					v_updateRequestPrimitive.primitiveContent.semanticDescriptor.relatedSemantics := {v_uriSemanticDescriptorCse1}; 
 					
 					// Handle IUT retrive request of linked semantics from remoteCSE
 					vc_cse1.start(f_cse_retrieveResourceHandler(v_semanticDescriptorCse1Index));
 					
 					// Send UPDATE request to virtual resource <semanticValidation>
 					v_semanticValidationAddress := f_getResourceAddress(v_ontologyRepoIndex) & "/" & c_resourceShortNameSemanticValidation;
-					p_updateRequestPrimitive.to_ := v_semanticValidationAddress;
-					v_updateRequest := f_getUpdateRequestPrimitive(int24, v_ontologyRepoIndex, p_updateRequestPrimitive);
+					v_updateRequestPrimitive.to_ := v_semanticValidationAddress;
+					v_updateRequest := f_getUpdateRequestPrimitive(int24, v_ontologyRepoIndex, v_updateRequestPrimitive);
 					
 					f_send(e_mcaPort, m_request(v_updateRequest));
 					tc_ac.start;
@@ -15224,8 +15155,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 					}
 
 					f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
-					vc_cse1.done;
-
+					
 					// Postamble
 					f_cse_postamble_deleteResources();
 		
@@ -15247,7 +15177,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 				function f_CSE_SEM_UPD_008() runs on AeSimu system CseSystem {
 					// Local variables
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
+					var integer v_resourceIndexJobProfileIndex := -1;
 					var RequestPrimitive v_updateRequest;
 					var XSD.Base64Binary v_invalidInputDescriptor := int2oct(0,65537);
 											   
@@ -15263,10 +15193,10 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 					
 					// Create JobProfile resource
-					v_resourceIndexJobProfile := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
+					v_resourceIndexJobProfileIndex := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
 					
 					// Update semanticMashupJobProfile
-					v_updateRequest := f_getCreateRequestPrimitive(int40, m_updateSemanticMashupJobProfileBase, v_resourceIndexJobProfile);
+					v_updateRequest := f_getCreateRequestPrimitive(int40, m_updateSemanticMashupJobProfileBase, v_resourceIndexJobProfileIndex);
 					v_updateRequest.primitiveContent.semanticMashupJobProfile.inputDescriptor := v_invalidInputDescriptor;
 					
 					f_send(e_mcaPort, m_request(v_updateRequest));
@@ -15307,7 +15237,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 				function f_CSE_SEM_UPD_009() runs on AeSimu system CseSystem {
 					// Local variables
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
+					var integer v_resourceIndexJobProfileIndex := -1;
 					var RequestPrimitive v_updateRequest;
 					var XSD.Base64Binary v_invalidOutputDescriptor := int2oct(0,65537);
 											   
@@ -15323,10 +15253,10 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 					
 					// Create JobProfile resource
-					v_resourceIndexJobProfile := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
+					v_resourceIndexJobProfileIndex := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
 					
 					// Update semanticMashupJobProfile
-					v_updateRequest := f_getCreateRequestPrimitive(int40, m_updateSemanticMashupJobProfileBase, v_resourceIndexJobProfile);
+					v_updateRequest := f_getCreateRequestPrimitive(int40, m_updateSemanticMashupJobProfileBase, v_resourceIndexJobProfileIndex);
 					v_updateRequest.primitiveContent.semanticMashupJobProfile.outputDescriptor := v_invalidOutputDescriptor;
 					
 					f_send(e_mcaPort, m_request(v_updateRequest));
@@ -15367,7 +15297,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 				function f_CSE_SEM_UPD_010() runs on AeSimu system CseSystem {
 					// Local variables
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
+					var integer v_resourceIndexJobProfileIndex := -1;
 					var RequestPrimitive v_updateRequest;
 					var XSD.Base64Binary v_invalidFunctionDescriptor := int2oct(0,65537);
 											   
@@ -15383,10 +15313,10 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 					
 					// Create JobProfile resource
-					v_resourceIndexJobProfile := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
+					v_resourceIndexJobProfileIndex := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
 					
 					// Update semanticMashupJobProfile
-					v_updateRequest := f_getCreateRequestPrimitive(int40, m_updateSemanticMashupJobProfileBase, v_resourceIndexJobProfile);
+					v_updateRequest := f_getCreateRequestPrimitive(int40, m_updateSemanticMashupJobProfileBase, v_resourceIndexJobProfileIndex);
 					v_updateRequest.primitiveContent.semanticMashupJobProfile.functionDescriptor := v_invalidFunctionDescriptor;
 					
 					f_send(e_mcaPort, m_request(v_updateRequest));
@@ -15427,7 +15357,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 				function f_CSE_SEM_UPD_011() runs on AeSimu system CseSystem {
 					// Local variables
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
+					var integer v_resourceIndexJobProfileIndex := -1;
 					var RequestPrimitive v_updateRequest;
 					var Sparql v_invalidMemberFilter := "{SELECT \?name WHERE { \?x foaf:name  \?name FILTER regex(\?name, \^mem\, \i\ }";
 											   
@@ -15443,10 +15373,10 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 					
 					// Create JobProfile resource
-					v_resourceIndexJobProfile := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
+					v_resourceIndexJobProfileIndex := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
 					
 					// Update semanticMashupJobProfile
-					v_updateRequest := f_getCreateRequestPrimitive(int40, m_updateSemanticMashupJobProfileBase, v_resourceIndexJobProfile);
+					v_updateRequest := f_getCreateRequestPrimitive(int40, m_updateSemanticMashupJobProfileBase, v_resourceIndexJobProfileIndex);
 					v_updateRequest.primitiveContent.semanticMashupJobProfile.memberFilter := v_invalidMemberFilter;
 					
 					f_send(e_mcaPort, m_request(v_updateRequest));
@@ -15487,7 +15417,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 				function f_CSE_SEM_UPD_012() runs on AeSimu system CseSystem {
 					// Local variables
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
+					var integer v_resourceIndexJobProfileIndex := -1;
 					var RequestPrimitive v_createReqSmi;
 					var RequestPrimitive v_updateReqSmi;
 
@@ -15503,12 +15433,12 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 					
 					// semanticMashupJobProfile
-					v_resourceIndexJobProfile := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
+					v_resourceIndexJobProfileIndex := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
 
 					// create semanticMashupInstance template with default mandatory values.
 					v_createReqSmi := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase, v_aeIndex);
 					// link semanticMashupInstance with semanticMashupJobProfile
-					v_createReqSmi.primitiveContent.semanticMashupInstance.smjpID := f_getResourceAddress(v_resourceIndexJobProfile);
+					v_createReqSmi.primitiveContent.semanticMashupInstance.smjpID := f_getResourceAddress(v_resourceIndexJobProfileIndex);
 					
 					// create semanticMashupInstance resource
 					f_cse_createResource(int41, v_createReqSmi, v_aeIndex);
@@ -15559,7 +15489,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 				function f_CSE_SEM_UPD_013() runs on AeSimu system CseSystem {
 					// Local variables
 					var integer v_aeIndex := -1;
-					var integer v_resourceIndexJobProfile := -1;
+					var integer v_resourceIndexJobProfileIndex := -1;
 					var RequestPrimitive v_createReqSmi;
 					var RequestPrimitive v_updateReqSmi;
 					
@@ -15576,12 +15506,12 @@ module OneM2M_Testcases_CSE_Release_3 {
 					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}, -);
 					
 					// semanticMashupJobProfile
-					v_resourceIndexJobProfile := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
+					v_resourceIndexJobProfileIndex := f_cse_createResource(int40, m_createSemanticMashupJobProfileBase, v_aeIndex); 
 
 					// create semanticMashupInstance template with default mandatory values.
 					v_createReqSmi := f_getCreateRequestPrimitive(int41, m_createSemanticMashupInstanceBase, v_aeIndex);
 					// link semanticMashupInstance with semanticMashupJobProfile
-					v_createReqSmi.primitiveContent.semanticMashupInstance.smjpID := f_getResourceAddress(v_resourceIndexJobProfile);
+					v_createReqSmi.primitiveContent.semanticMashupInstance.smjpID := f_getResourceAddress(v_resourceIndexJobProfileIndex);
 					
 					// create semanticMashupInstance resource
 					f_cse_createResource(int41, v_createReqSmi, v_aeIndex);
@@ -16823,6 +16753,628 @@ module OneM2M_Testcases_CSE_Release_3 {
 			} // end of group Delete
 					
 		}// end group Semantic	
+		
+		group Interworking_3GPP {
+				
+				group nidd {
+					
+					// GET all confgurations from an SCEF
+					testcase TC_CSE_3GPP_SCEF_T8_001() runs on ScefSimu system ScefSystem {
+						f_cf05Up();
+						
+						mcnPort.send(
+												m_t8Request(
+																		m_t8_request_get(
+																											m_uri_3gpp_nidd(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), vc_scefSimuDesc.scefId & "/configurations"),
+																											{ 
+																												{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																												{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																												{ "Accept", "*/*" },
+																												{ "Content-Type", "application/json" },
+																												{ "Connection", "keep-alive" } 
+																											}
+																											)));
+						tc_ac.start;
+						alt {
+							[] mcnPort.receive(mw_t8Response(mw_t8_response_200_ok(-, mw_response_body_niddConfigurations(?/*{m_niddConfiguration}*/)))) {
+								tc_ac.stop;
+								setverdict(pass);
+							}
+							[] mcnPort.receive(mw_t8Response) {
+								tc_ac.stop;
+								setverdict(fail);
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc);
+							}
+						} // End of 'alt' statement
+						
+						f_cf05Down();
+					}
+				
+					// GET a specifc confguration from an SCEF
+					testcase TC_CSE_3GPP_SCEF_T8_002() runs on ScefSimu system ScefSystem {
+						f_cf05Up();
+						
+						mcnPort.send(
+												m_t8Request(
+																		m_t8_request_get(
+																											m_uri_3gpp_nidd(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), vc_scefSimuDesc.scefId & "/configurations/cf_001"),
+																											{ 
+																												{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																												{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																												{ "Accept", "*/*" },
+																												{ "Content-Type", "application/json" },
+																												{ "Connection", "keep-alive" } 
+																											}
+																											)));
+						tc_ac.start;
+						alt {
+							[] mcnPort.receive(mw_t8Response(mw_t8_response_200_ok(-, mw_response_body_individualNiddConfiguration))) {
+								tc_ac.stop;
+								setverdict(pass);
+							}
+							[] mcnPort.receive(mw_t8Response) {
+								tc_ac.stop;
+								setverdict(fail);
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc);
+							}
+						} // End of 'alt' statement
+						
+						f_cf05Down();
+					}
+				
+					// POST create a new Nidd confguration for an SCEF
+					testcase TC_CSE_3GPP_SCEF_T8_003() runs on ScefSimu system ScefSystem {
+						var T8Primitive v_response;
+						
+						f_cf05Up();
+						
+						mcnPort.send(
+												m_t8Request(
+																		m_t8_request_post(
+																											m_uri_3gpp_nidd(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), vc_scefSimuDesc.scefId & "/configurations"),
+																											{ 
+																												{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																												{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																												{ "Accept", "*/*" },
+																												{ "Content-Type", "application/json" },
+																												{ "Connection", "keep-alive" } 
+																											},
+																											m_request_body_niddConfiguration(m_niddConfiguration)
+																											)));
+						tc_ac.start;
+						alt {
+							[] mcnPort.receive(mw_t8Response(mw_t8_response_201_created(-, mw_response_body_individualNiddConfiguration))) -> value v_response {
+								var charstring v_location;
+								
+								tc_ac.stop;
+								// Check presence of Location HTTP header
+								for (var integer i := 0; i < lengthof(v_response.t8Response.responseHeaders); i := i + 1) {
+									if (v_response.t8Response.responseHeaders[i].header_name == "Location") {
+										v_location := v_response.t8Response.responseHeaders[i].header_value;
+										break;
+									}
+								} // End of 'for' statement
+								if (isbound(v_location)) {
+									f_delete_nidd_configuration(v_location);
+									setverdict(pass);
+								} else {
+									setverdict(fail);
+								}
+							}
+							[] mcnPort.receive(mw_t8Response) {
+								tc_ac.stop;
+								setverdict(fail);
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc);
+							}
+						} // End of 'alt' statement
+						
+						f_cf05Down();
+					}
+					
+					// DELETE delete a new Nidd confguration for an SCEF
+					testcase TC_CSE_3GPP_SCEF_T8_004() runs on ScefSimu system ScefSystem {
+						var charstring v_location;
+						
+						f_cf05Up();
+						
+						// Preamble
+						f_create_nidd_configuration(v_location);
+						
+						// Test Body
+						mcnPort.send(
+												m_t8Request(
+																		m_t8_request_delete(
+																												m_uri_3gpp_nidd(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), vc_scefSimuDesc.scefId & "/configurations" & "/" & v_location),
+																												{ 
+																													{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																													{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																													{ "Accept", "*/*" },
+																													{ "Content-Type", "application/json" },
+																													{ "Connection", "keep-alive" } 
+																												}
+																												)));
+						tc_ac.start;
+						alt {
+							[] mcnPort.receive(mw_t8Response(mw_t8_response_204_no_content)) {
+								tc_ac.stop;
+								setverdict(pass);
+							}
+							[] mcnPort.receive(mw_t8Response) {
+								tc_ac.stop;
+								setverdict(fail);
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc);
+							}
+						} // End of 'alt' statement
+						
+						f_cf05Down();
+					}
+					
+					// DELETE delete a non existing Nidd confguration for an SCEF
+					testcase TC_CSE_3GPP_SCEF_T8_005() runs on ScefSimu system ScefSystem {
+						var charstring v_location := "unknown";
+						
+						f_cf05Up();
+						
+						// Preamble
+						
+						// Test Body
+						mcnPort.send(
+												m_t8Request(
+																		m_t8_request_delete(
+																												m_uri_3gpp_nidd(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), vc_scefSimuDesc.scefId & "/configurations" & "/" & v_location),
+																												{ 
+																													{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																													{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																													{ "Accept", "*/*" },
+																													{ "Content-Type", "application/json" },
+																													{ "Connection", "keep-alive" } 
+																												}
+																												)));
+						tc_ac.start;
+						alt {
+							[] mcnPort.receive(mw_t8Response(mw_t8_response_404_not_found)) {
+								tc_ac.stop;
+								setverdict(pass);
+							}
+							[] mcnPort.receive(mw_t8Response) {
+								tc_ac.stop;
+								setverdict(fail);
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc);
+							}
+						} // End of 'alt' statement
+						
+						f_cf05Down();
+					}
+					
+					// PATCH update an existing Nidd conf_create_nidd_configuration(v_location);fguration for an SCEF
+					testcase TC_CSE_3GPP_SCEF_T8_006() runs on ScefSimu system ScefSystem {
+						var charstring v_location;
+						var NiddConfiguration v_niddConfiguration;
+						var T8Primitive v_response;
+						
+						f_cf05Up();
+						
+						// Preambule
+						f_create_nidd_configuration(v_location);
+						f_get_nidd_configuration(v_location, v_niddConfiguration);
+						
+						// TestBody
+						v_niddConfiguration.notificationDestination := v_niddConfiguration.notificationDestination & "_patched";
+						mcnPort.send(
+												m_t8Request(
+																		m_t8_request_patch(
+																												m_uri_3gpp_nidd(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), vc_scefSimuDesc.scefId & "/configurations" & "/" & v_location),
+																												{ 
+																													{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																													{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																													{ "Accept", "*/*" },
+																													{ "Content-Type", "application/json" },
+																													{ "Connection", "keep-alive" } 
+																												},
+																												m_request_body_niddConfiguration(v_niddConfiguration)
+																												)));
+						tc_ac.start;
+						alt {
+							[] mcnPort.receive(mw_t8Response(mw_t8_response_200_ok(-, mw_response_body_individualNiddConfiguration(v_niddConfiguration)))) -> value v_response {
+								
+								tc_ac.stop;
+								setverdict(pass);
+							}
+							[] mcnPort.receive(mw_t8Response) {
+								tc_ac.stop;
+								setverdict(fail);
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc);
+							}
+						} // End of 'alt' statement
+						
+						f_delete_nidd_configuration(v_location);
+						
+						f_cf05Down();
+					}
+					
+					group nidd_functions {
+						
+						function f_create_nidd_configuration(out charstring p_location) runs on ScefSimu system ScefSystem {
+							var T8Primitive v_response;
+							
+							mcnPort.send(
+													m_t8Request(
+																			m_t8_request_post(
+																												m_uri_3gpp_nidd(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), vc_scefSimuDesc.scefId & "/configurations"),
+																												{ 
+																													{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																													{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																													{ "Accept", "*/*" },
+																													{ "Content-Type", "application/json" },
+																													{ "Connection", "keep-alive" } 
+																												},
+																												m_request_body_niddConfiguration(m_niddConfiguration)
+																												)));
+							tc_ac.start;
+							alt {
+								[] mcnPort.receive(mw_t8Response(mw_t8_response_201_created(-, mw_response_body_individualNiddConfiguration))) -> value v_response {
+									
+									tc_ac.stop;
+									// Check presence of Location HTTP header
+									for (var integer i := 0; i < lengthof(v_response.t8Response.responseHeaders); i := i + 1) {
+										if (v_response.t8Response.responseHeaders[i].header_name == "Location") {
+											p_location := v_response.t8Response.responseHeaders[i].header_value;
+											break;
+										}
+									} // End of 'for' statement
+									if (not(isbound(p_location))) {
+										setverdict(fail);
+									}
+								}
+								[] mcnPort.receive(mw_t8Response) {
+									tc_ac.stop;
+									setverdict(fail);
+								}
+								[] tc_ac.timeout {
+									setverdict(inconc);
+								}
+							} // End of 'alt' statement
+							
+						} // End of function f_create_nidd_configuration
+						
+						function f_delete_nidd_configuration(in charstring p_location) runs on ScefSimu system ScefSystem {
+							mcnPort.send(
+													m_t8Request(
+																			m_t8_request_delete(
+																													m_uri_3gpp_nidd(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), vc_scefSimuDesc.scefId & "/configurations" & "/" & p_location),
+																													{ 
+																														{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																														{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																														{ "Accept", "*/*" },
+																														{ "Content-Type", "application/json" },
+																														{ "Connection", "keep-alive" } 
+																													}
+																													)));
+							tc_ac.start;
+							alt {
+								[] mcnPort.receive(mw_t8Response(mw_t8_response_204_no_content)) {
+									tc_ac.stop;
+								}
+								[] mcnPort.receive(mw_t8Response) {
+									tc_ac.stop;
+									setverdict(fail);
+								}
+								[] tc_ac.timeout {
+									setverdict(inconc);
+								}
+							} // End of 'alt' statement
+						} // End of function f_delete_nidd_configuration
+						
+						function f_get_nidd_configuration(in charstring p_location, out NiddConfiguration p_niddConfiguration) runs on ScefSimu system ScefSystem {
+							var T8Primitive v_response;
+							
+							mcnPort.send(
+													m_t8Request(
+																			m_t8_request_get(
+																												m_uri_3gpp_nidd(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), vc_scefSimuDesc.scefId & "/configurations" & "/" & p_location),
+																												{ 
+																													{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																													{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																													{ "Accept", "*/*" },
+																													{ "Content-Type", "application/json" },
+																													{ "Connection", "keep-alive" } 
+																												}
+																												)));
+							tc_ac.start;
+							alt {
+								[] mcnPort.receive(mw_t8Response(mw_t8_response_200_ok(-, mw_response_body_individualNiddConfiguration))) -> value v_response {
+									tc_ac.stop;
+									p_niddConfiguration := v_response.t8Response.responseBody.individualNiddConfiguration;
+								}
+								[] mcnPort.receive(mw_t8Response) {
+									tc_ac.stop;
+									setverdict(fail);
+								}
+								[] tc_ac.timeout {
+									setverdict(inconc);
+								}
+							} // End of 'alt' statement
+							
+						} // End of function f_get_nidd_configuration
+						
+					} // End of group nidd_functions
+				
+				} // End of group nidd
+				
+				group device_trigerring {
+					
+					// GET all transactons from an SCEF
+					testcase TC_CSE_3GPP_SCEF_T8_007() runs on ScefSimu system ScefSystem {
+						f_cf05Up();
+						
+						mcnPort.send(
+												m_t8Request(
+																		m_t8_request_get(
+																											m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), vc_scefSimuDesc.scefId & "/transactions"),
+																											{ 
+																												{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																												{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																												{ "Accept", "*/*" },
+																												{ "Content-Type", "application/json" },
+																												{ "Connection", "keep-alive" } 
+																											}
+																											)));
+						tc_ac.start;
+						alt {
+							[] mcnPort.receive(mw_t8Response(mw_t8_response_200_ok(-, mw_response_body_deviceTriggerings(?)))) {
+								tc_ac.stop;
+								setverdict(pass);
+							}
+							[] mcnPort.receive(mw_t8Response) {
+								tc_ac.stop;
+								setverdict(fail);
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc);
+							}
+						} // End of 'alt' statement
+						
+						f_cf05Down();
+					}
+					
+					// GET all transactons from an SCEF
+					testcase TC_CSE_3GPP_SCEF_T8_008() runs on ScefSimu system ScefSystem {
+						f_cf05Up();
+						
+						mcnPort.send(
+												m_t8Request(
+																		m_t8_request_get(
+																											m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), vc_scefSimuDesc.scefId & "/transactions/cf_001"),
+																											{ 
+																												{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																												{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																												{ "Accept", "*/*" },
+																												{ "Content-Type", "application/json" },
+																												{ "Connection", "keep-alive" } 
+																											}
+																											)));
+						tc_ac.start;
+						alt {
+							[] mcnPort.receive(mw_t8Response(mw_t8_response_200_ok(-, mw_response_body_individualDeviceTriggering(mw_deviceTriggering_externalId)))) {
+								tc_ac.stop;
+								setverdict(pass);
+							}
+							[] mcnPort.receive(mw_t8Response) {
+								tc_ac.stop;
+								setverdict(fail);
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc);
+							}
+						} // End of 'alt' statement
+						
+						f_cf05Down();
+					}
+					
+					// POST create a new device transaction for an SCEF
+					testcase TC_CSE_3GPP_SCEF_T8_009() runs on ScefSimu system ScefSystem {
+						var T8Primitive v_response;
+						
+						f_cf05Up();
+						
+						mcnPort.send(
+												m_t8Request(
+																		m_t8_request_post(
+																											m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), vc_scefSimuDesc.scefId & "/transactions"),
+																											{ 
+																												{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																												{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																												{ "Accept", "*/*" },
+																												{ "Content-Type", "application/json" },
+																												{ "Connection", "keep-alive" } 
+																											},
+																											m_request_body_deviceTriggering(m_deviceTriggering_externalId("externl_id", -, -, 30123, "CAFEDECA", "link"))
+																											)));
+						tc_ac.start;
+						alt {
+							[] mcnPort.receive(mw_t8Response(mw_t8_response_201_created(-, mw_response_body_individualDeviceTriggering))) -> value v_response {
+								var charstring v_location;
+								
+								tc_ac.stop;
+								// Check presence of Location HTTP header
+								for (var integer i := 0; i < lengthof(v_response.t8Response.responseHeaders); i := i + 1) {
+									if (v_response.t8Response.responseHeaders[i].header_name == "Location") {
+										v_location := v_response.t8Response.responseHeaders[i].header_value;
+										break;
+									}
+								} // End of 'for' statement
+								if (isbound(v_location)) {
+									f_delete_device_triggering(v_location);
+									setverdict(pass);
+								} else {
+									setverdict(fail);
+								}
+							}
+							[] mcnPort.receive(mw_t8Response) {
+								tc_ac.stop;
+								setverdict(fail);
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc);
+							}
+						} // End of 'alt' statement
+						
+						f_cf05Down();
+					}
+					
+					// POST notification from an SCEF
+					testcase TC_CSE_3GPP_SCEF_T8_010() runs on ScefSimu system ScefSystem {
+						
+						f_cf05Up();
+						
+						tc_ac.start;
+						alt {
+							[] mcnPortIn.receive(mw_t8Request(mw_t8_request_post(-, -, mw_request_body_deviceTriggeringDeliveryReportNotification(mw_deviceTriggeringDeliveryReportNotification)))) {
+								tc_ac.stop;
+								// Send the response 200 OK
+								mcnPortIn.send(m_t8Response(m_t8_response_200_ok({ 
+																																		{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																																		{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																																		{ "Accept", "*/*" },
+																																		{ "Content-Type", "application/json" },
+																																		{ "Connection", "keep-alive" } 
+																																	})));
+								setverdict(pass);
+							}
+							[] mcnPortIn.receive(mw_t8Request) {
+								tc_ac.stop;
+								setverdict(fail);
+							}
+							[] tc_ac.timeout {
+								setverdict(inconc);
+							}
+						} // End of 'alt' statement
+						
+						f_cf05Down();
+					}
+					
+					group device_triggering_functions {
+						
+						function f_create_device_triggering(out charstring p_location) runs on ScefSimu system ScefSystem {
+							var T8Primitive v_response;
+							
+							mcnPort.send(
+													m_t8Request(
+																			m_t8_request_post(
+																												m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), vc_scefSimuDesc.scefId & "/transactions"),
+																												{ 
+																													{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																													{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																													{ "Accept", "*/*" },
+																													{ "Content-Type", "application/json" },
+																													{ "Connection", "keep-alive" } 
+																												},
+																												m_request_body_deviceTriggering(m_deviceTriggering_externalId("externl_id", -, -, 30123, "CAFEDECA", "link"))
+																												)));
+							tc_ac.start;
+							alt {
+								[] mcnPort.receive(mw_t8Response(mw_t8_response_201_created(-, mw_response_body_individualDeviceTriggering))) -> value v_response {
+									
+									tc_ac.stop;
+									// Check presence of Location HTTP header
+									for (var integer i := 0; i < lengthof(v_response.t8Response.responseHeaders); i := i + 1) {
+										if (v_response.t8Response.responseHeaders[i].header_name == "Location") {
+											p_location := v_response.t8Response.responseHeaders[i].header_value;
+											break;
+										}
+									} // End of 'for' statement
+									if (not(isbound(p_location))) {
+										setverdict(fail);
+									}
+								}
+								[] mcnPort.receive(mw_t8Response) {
+									tc_ac.stop;
+									setverdict(fail);
+								}
+								[] tc_ac.timeout {
+									setverdict(inconc);
+								}
+							} // End of 'alt' statement
+							
+						} // End of function f_create_device_triggering
+						
+						function f_delete_device_triggering(in charstring p_location) runs on ScefSimu system ScefSystem {
+							mcnPort.send(
+													m_t8Request(
+																			m_t8_request_delete(
+																													m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), vc_scefSimuDesc.scefId & "/transactions" & "/" & p_location),
+																													{ 
+																														{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																														{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																														{ "Accept", "*/*" },
+																														{ "Content-Type", "application/json" },
+																														{ "Connection", "keep-alive" } 
+																													}
+																													)));
+							tc_ac.start;
+							alt {
+								[] mcnPort.receive(mw_t8Response(mw_t8_response_204_no_content)) {
+									tc_ac.stop;
+								}
+								[] mcnPort.receive(mw_t8Response) {
+									tc_ac.stop;
+									setverdict(fail);
+								}
+								[] tc_ac.timeout {
+									setverdict(inconc);
+								}
+							} // End of 'alt' statement
+						} // End of function f_delete_device_triggering
+						
+						function f_get_device_triggering(in charstring p_location, out DeviceTriggering p_deviceTriggering) runs on ScefSimu system ScefSystem {
+							var T8Primitive v_response;
+							
+							mcnPort.send(
+													m_t8Request(
+																			m_t8_request_get(
+																												m_uri_3gpp_device_triggering(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.tsAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort), vc_scefSimuDesc.scefId & "/transactions" & "/" & p_location),
+																												{ 
+																													{ "Host", vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.sutAddress & ":" & int2str(vc_scefSimuDesc.mcnPort.t8PortDesc.binding.httpBindingDesc.bindingDesc.remotePort) }, 
+																													{ "User-Agent", "oneM2M Test Adapter - TTF001" },
+																													{ "Accept", "*/*" },
+																													{ "Content-Type", "application/json" },
+																													{ "Connection", "keep-alive" } 
+																												}
+																												)));
+							tc_ac.start;
+							alt {
+								[] mcnPort.receive(mw_t8Response(mw_t8_response_200_ok(-, mw_response_body_individualDeviceTriggering))) -> value v_response {
+									tc_ac.stop;
+									p_deviceTriggering := v_response.t8Response.responseBody.individualDeviceTriggeringTransaction;
+								}
+								[] mcnPort.receive(mw_t8Response) {
+									tc_ac.stop;
+									setverdict(fail);
+								}
+								[] tc_ac.timeout {
+									setverdict(inconc);
+								}
+							} // End of 'alt' statement
+							
+						} // End of function f_get_device_triggering
+						
+					} // End of group device_triggering_functions
+				
+				} // End of group device_triggering
+				
+			} // End of group Interworking_3GPP
 	
 	}//end group CSE