diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index 6f6351081e5980c332467b78ed35c78df2d18db2..877a099cf5e3e3666aac915beab05096282c11ab 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -7,7 +7,7 @@
  *  
  *  @author     oneM2M
  *  @version    $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Functions.ttcn $
- *              $Id: OneM2M_Functions.ttcn 298 2017-06-14 07:11:13Z reinaortega $
+ *              $Id: OneM2M_Functions.ttcn 306 2017-06-20 16:19:04Z reinaortega $
  *  @desc       Module containing functions for oneM2M
  *
  */
@@ -46,6 +46,9 @@ module OneM2M_Functions {
 							
 		} // end f_cf01Up
 		
+		/**
+		 * @desc Ports mapping and default behaviour activation for Config 02
+		 */
 		function f_cf02Up() runs on CseTester {
 				
 			// Variables
@@ -83,6 +86,26 @@ module OneM2M_Functions {
 			//Initialze the IUT
 					
 		} // end f_cf03Up
+		
+		/**
+		 * @desc Ports mapping and default behaviour activation for Config 04
+		 */
+		function f_cf04Up() runs on CseTester {
+
+			// Variables
+			vc_config := e_cf04;
+	
+			// Map
+			map(self:mccPort, system:mccPort);
+			map(self:acPort, system:acPort);
+			activate(a_default());
+			activate(a_cse_cf04());
+
+			// Connect
+			
+			//Initialze the IUT
+			
+		} // end f_cf03Up
 
 		/**
 		 * @desc Ports unmapping
@@ -134,6 +157,15 @@ module OneM2M_Functions {
 			unmap(self:acPort, system:acPort);
 		}
 		
+		/**
+		 * @desc Ports unmapping for Config 04
+		 */
+		function f_cf04Down() runs on CseTester {
+	
+			unmap(self:mccPort, system:mccPort);
+			unmap(self:acPort, system:acPort);
+		}
+		
 	}//end group configFunctions
 	
 	group CseFunctions {
@@ -757,6 +789,13 @@ module OneM2M_Functions {
 							log(__SCOPE__ & ": Info: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.pollingChannel_optional.resourceName)
     					}
     				}
+					case (int16) {
+						if (isvalue(p_response.primitiveContent.remoteCSE_optional) and
+								not(ispresent(p_response.primitiveContent.remoteCSE_optional.resourceName))) {
+							p_response.primitiveContent.remoteCSE_optional.resourceName :=  p_request.primitiveContent.remoteCSE_optional.resourceName;
+							log(__SCOPE__ & ": Info: resourceName not returned. Using the one provided in the request: " & p_request.primitiveContent.remoteCSE_optional.resourceName)
+						}
+					}
     				case (int18) {
     					if (isvalue(p_response.primitiveContent.schedule_optional) and
     							not(ispresent(p_response.primitiveContent.schedule_optional.resourceName))) {
@@ -867,6 +906,139 @@ module OneM2M_Functions {
     			unmap(self:acPort, system:acPort); 
     	
     		} //end f_cse_notifyProcedure
+    		
+    		/**
+    		 * @desc It determines whether the addressing method of the given address is non-hierarchical. Not valid for CSE-Base as target
+    		 * @param p_resourceAddress
+    		 * @return boolean
+    		 */
+    		function f_isNonHierarchical(XSD.ID p_resourceAddress) runs on Tester return boolean {	
+    			var integer i;
+    			var integer v_nbOfSlashes:= 0;
+    			
+				for (i := 0; i < lengthof(p_resourceAddress); i:= i+1){
+					if(match (p_resourceAddress[i], "/")){
+						v_nbOfSlashes:= v_nbOfSlashes+1;
+					}
+				}
+				
+    			if(f_isScopeCseRelative(p_resourceAddress)) {
+    				if(v_nbOfSlashes == 0 ) {
+    					return true;
+    				} else {
+    					return false;
+    				}
+    				
+    			} else if (f_isScopeSpRelative(p_resourceAddress)){	
+					if(v_nbOfSlashes == 2 ) {
+						return true;
+					} else {
+						return false;
+					}
+    			} else if (f_isScopeAbsolute(p_resourceAddress)){
+					if(v_nbOfSlashes == 4 ) {
+						return true;
+					} else {
+						return false;
+					}
+    			} else {
+    			   return false;
+    			}
+    		}
+    		
+			/**
+			 * @desc It determines whether the addressing method of the given address is hierarchical. Not valid for CSE-Base as target
+			 * @param p_resourceAddress
+			 * @return boolean
+			 */
+			 function f_isHierarchical(XSD.ID p_resourceAddress) runs on Tester return boolean {
+				if(f_isNonHierarchical(p_resourceAddress)) {
+					return false;
+				} else {
+					return true;
+				}	
+    		} 
+			
+			/**
+			 * @desc It determines whether the primitive scope of the given address is CSE-Relative
+			 * @param p_resourceAddress
+			 * @return boolean
+			 */
+			function f_isScopeCseRelative(XSD.ID p_resourceAddress) runs on Tester return boolean { 
+			  if (p_resourceAddress[0] != "/") {
+				return true;
+			  } else {
+			  	return false;
+			  }
+			}
+			
+			/**
+			 * @desc It determines whether the primitive scope of the given address is SP-Relative
+			 * @param p_resourceAddress
+			 * @return boolean
+			 */
+			function f_isScopeSpRelative(XSD.ID p_resourceAddress) runs on Tester return boolean {	
+			  	if ((p_resourceAddress[0] == "/") and (p_resourceAddress[1] != "/")){
+				  return true;
+				} else {
+				  return false;
+				}
+			}
+			
+			/**
+			 * @desc It determines whether the primitive scope of the given address is Absolute
+			 * @param p_resourceAddress
+			 * @return boolean
+			 */
+			function f_isScopeAbsolute(XSD.ID p_resourceAddress) runs on Tester return boolean {
+				if ((p_resourceAddress[0] == "/") and (p_resourceAddress[1] == "/")) {
+				  return true;
+				} else {
+				  return false;
+				}
+			}
+			
+			/**
+			 * @desc Registration of Test System (simulating a CSE) to the CSE IUT (creation of remoteCSE)
+			 * @param p_requestPrimitive Template request primitive
+			 * @return Internal resource index of the created resource
+			 */
+			function f_cse_registerRemoteCse(in template RequestPrimitive p_requestPrimitive) runs on CseTester return integer {
+    			
+				var MsgIn v_response;
+				var RequestPrimitive v_request;
+				var integer v_resourceIndex := -1;
+
+				v_request := f_getCreateRequestPrimitive(int16, p_requestPrimitive, -1);
+
+				mcaPort.send(m_request(v_request));
+				tc_ac.start;
+				alt {
+					[] mccPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+						tc_ac.stop;
+						setverdict(pass, __SCOPE__&":INFO: Resource type RemoteCSE created successfuly");
+						f_checkAttributesToBeSaved(int16, v_request, v_response.primitive.responsePrimitive);
+						v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, -1);
+						vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_resourceIndex};
+					}
+					[] mccPort.receive(mw_response(mw_responsePrimitiveKO)) {
+						tc_ac.stop;
+						setverdict(inconc, __SCOPE__&":INFO: Error while creating resource type RemoteCSE");
+					}
+					[] mccPort.receive {
+						tc_ac.stop;
+						setverdict(inconc, __SCOPE__&":INFO: Unexpected message received");
+					}
+					[] tc_ac.timeout {
+						setverdict(inconc, __SCOPE__&":INFO: No answer while creating resource type RemoteCSE");
+					}
+				}	
+
+				f_checkCseTesterStatus();
+
+				return v_resourceIndex;
+    		
+    		}
 			
 	
 		}//end group helpingFunctions
@@ -897,7 +1069,18 @@ module OneM2M_Functions {
 					log(__SCOPE__&": WARNING: Unexpected message received");
 					repeat;
 				}
-			 }	
+			 }
+			 
+			/**
+			  * @desc	Cse altstep for config 04
+			  */
+			 altstep a_cse_cf04() runs on CseTester {
+
+				[] mccPort.receive {
+					log(__SCOPE__&": WARNING: Unexpected message received");
+					repeat;
+				}
+			 }		
 
 		}//end group altstepFunctions	
 		
diff --git a/LibOneM2M/OneM2M_Pixits.ttcn b/LibOneM2M/OneM2M_Pixits.ttcn
index 4f3a976989c301a01ed54fa71a0367f7f900ed57..884f5d0e8664e3e21f7007113f4620b4a05ebc27 100644
--- a/LibOneM2M/OneM2M_Pixits.ttcn
+++ b/LibOneM2M/OneM2M_Pixits.ttcn
@@ -7,7 +7,7 @@
  *  
  *  @author     oneM2M
  *  @version    $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Pixits.ttcn $
- *              $Id: OneM2M_Pixits.ttcn 298 2017-06-14 07:11:13Z reinaortega $
+ *              $Id: OneM2M_Pixits.ttcn 306 2017-06-20 16:19:04Z reinaortega $
  *  @desc       Module containing Pixits for oneM2M
  *
  */
@@ -38,6 +38,8 @@ module OneM2M_Pixits {
 		
 	modulepar XSD.ID PX_CSE_ID 					:= "cseId";
 	
+	modulepar XSD.ID PX_CSE1_ID					:= "MyCSEId";
+	
 	modulepar XSD.ID PX_CSE_RESOURCE_ID			:= "cseResourceId";
 	
 	modulepar XSD.ID PX_AE1_ID_STEM				:= "";
diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 68e7321920ceaaceb3921e84b76471f84effd32b..2fb5624ec86f25371e972df769f5a42dbe1fc21e 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -7,7 +7,7 @@
  *  
  *  @author     oneM2M
  *  @version    $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Templates.ttcn $
- *              $Id: OneM2M_Templates.ttcn 298 2017-06-14 07:11:13Z reinaortega $
+ *              $Id: OneM2M_Templates.ttcn 306 2017-06-20 16:19:04Z reinaortega $
  *  @desc       Module containing templates for oneM2M
  *
  */
@@ -188,6 +188,110 @@ module OneM2M_Templates {
 				localTokenIDs := omit,
 				tokenRequestIndicator := omit
 			};
+			
+			/**
+			  * @desc RETRIEVE request primtive containing the Filter Criteria in the filterCriteria field
+			  * @param p_targetResourceAddress Target resource address 
+			  * @param p_filterCriteria FilterCriteria
+			  * @param p_originator Originator (from)
+		     */
+			template (value) RequestPrimitive m_retrieveResourceFilterUsageOption(XSD.ID p_targetResourceAddress, in XSD.ID p_originator, in template (value) FilterUsage p_filterUsage) modifies m_retrieveResource := {
+				requestIdentifier := "m_retrieveResourceFilterUsageOption" & f_rnd(1, 1000000),
+				filterCriteria := {
+					createdBefore := omit,
+					createdAfter := omit,
+					modifiedSince := omit,
+					unmodifiedSince := omit,
+					stateTagSmaller := omit,
+					stateTagBigger := omit,
+					expireBefore := omit,
+					expireAfter := omit,
+					labels := omit,
+					resourceType := omit,
+					sizeAbove := omit,
+					sizeBelow := omit,
+					contentType_list := {},
+					attribute_list := {},
+					filterUsage := p_filterUsage,
+					limit := omit,
+					semanticsFilter_list := {},
+					filterOperation := omit,
+					contentFilterSyntax := omit,
+					contentFilterQuery := omit,
+					level := omit,
+					offset := omit
+				}
+			};
+			
+			/**
+			  * @desc RETRIEVE request primtive containing the Discovery Type in the discoveryResultType field and Filter Criteria in the filterCriteria field
+			  * @param p_targetResourceAddress Target resource address 
+			  * @param p_filterCriteria FilterCriteria
+			  * @param p_originator Originator (from)
+			 */
+			template (value) RequestPrimitive m_retrieveResourceDiscResTypeFilterUsageOption(XSD.ID p_targetResourceAddress, in XSD.ID p_originator, in template (value) DiscResType p_discResType, in template (value) FilterUsage p_filterUsage) modifies m_retrieveResource := {
+				requestIdentifier := "m_retrieveResourceFilterUsageOption" & f_rnd(1, 1000000),
+				filterCriteria := {
+					createdBefore := omit,
+					createdAfter := omit,
+					modifiedSince := omit,
+					unmodifiedSince := omit,
+					stateTagSmaller := omit,
+					stateTagBigger := omit,
+					expireBefore := omit,
+					expireAfter := omit,
+					labels := omit,
+					resourceType := omit,
+					sizeAbove := omit,
+					sizeBelow := omit,
+					contentType_list := {},
+					attribute_list := {},
+					filterUsage := p_filterUsage,
+					limit := omit,
+					semanticsFilter_list := {},
+					filterOperation := omit,
+					contentFilterSyntax := omit,
+					contentFilterQuery := omit,
+					level := omit,
+					offset := omit
+				},
+				discoveryResultType := p_discResType
+			};
+			
+			/**
+				  * @desc RETRIEVE request primtive containing the Discovery Type in the discoveryResultType field and Filter Criteria in the filterCriteria field
+				  * @param p_targetResourceAddress Target resource address 
+				  * @param p_filterCriteria FilterCriteria
+				  * @param p_originator Originator (from)
+				 */
+				template (value) RequestPrimitive m_retrieveResourceInvalidFormatOption(XSD.ID p_targetResourceAddress, in XSD.ID p_originator) modifies m_retrieveResource := {
+					requestIdentifier := "m_retrieveResourceFilterUsageOption" & f_rnd(1, 1000000),
+					filterCriteria := {
+						createdBefore := omit,
+						createdAfter := omit,
+						modifiedSince := omit,
+						unmodifiedSince := omit,
+						stateTagSmaller := omit,
+						stateTagBigger := omit,
+						expireBefore := omit,
+						expireAfter := omit,
+						labels := omit,
+						resourceType := omit,
+						sizeAbove := omit,
+						sizeBelow := omit,
+						contentType_list := {},
+						attribute_list := {},
+						filterUsage := omit,
+						limit := omit,
+						semanticsFilter_list := {},
+						filterOperation := omit,
+						contentFilterSyntax := omit,
+						contentFilterQuery := omit,
+						level := omit,
+						offset := omit
+					}
+				};
+			
     	}//end group Retrieve
 
     	group Update {
@@ -472,6 +576,15 @@ module OneM2M_Templates {
 				primitiveContent := {container_optional := m_contentCreateContainer}
 			};
 			
+			/**
+			 * @desc Base CREATE request primitive for remoteCSE resource
+			 */
+			template (value) RequestPrimitive m_createRemoteCSEBase(template (omit) AcpType p_accessControlPolicyIds := omit, template (omit) ResourceName p_resourceName :=  c_defaultRemoteCSEResourceName, in template (omit) XSD.AnyURI p_cSEBase := PX_CSE1_ID, in template (omit) XSD.ID p_cSE_ID := PX_CSE_ID) modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createRemoteCSE" & f_rnd(1, 1000000),
+				resourceType := int16,
+				primitiveContent := {remoteCSE_optional := m_contentCreateRemoteCSE(p_resourceName, p_accessControlPolicyIds,p_cSEBase, p_cSE_ID)}
+			};
+			
 			/**
 			 * @desc CREATE request primitive for Container resource wiht no resourceName provided
 			 */
@@ -596,6 +709,15 @@ module OneM2M_Templates {
 				primitiveContent := {groupAnnc_optional := mw_contentCreateGroupAnncBase}
 			};
         	
+			/**
+			 * @desc Base CREATE request primitive for MgmtCmd resource
+			 */
+			template (value) RequestPrimitive m_createMgmtCmdBase modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createMgmtCmd" & f_rnd(1, 1000000),
+				resourceType := int12,
+				primitiveContent := {mgmtResource_optional := m_contentCreateMgmtCmd (-,-)}
+			};
+			
 			/**
 			 * @desc Base CREATE request primitive for MgmtObj resource
 			 */
@@ -711,6 +833,14 @@ module OneM2M_Templates {
 				primitiveContent := {serviceSubscribedAppRule_optional := m_contentCreateServiceSubscribedAppRule (p_applicableCredIDs, p_allowedAppIDs, p_allowedAEs)}
 			};
         	
+			/**
+			 * @desc Base CREATE request primitive for ServiceSubscribedAppRule Resource
+			 */
+			template (value) RequestPrimitive m_createServiceSubscribedAppRuleBase modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createServiceSubscribedAppRuleBase" & f_rnd(1, 1000000),
+				resourceType := int19,
+				primitiveContent := {serviceSubscribedAppRule_optional := m_contentCreateServiceSubscribedAppRuleBase}
+			};
        	
 			/**
 			 * @desc Base CREATE request primitive for Subscription resource
@@ -740,6 +870,15 @@ module OneM2M_Templates {
 				primitiveContent := {subscription_optional := m_contentCreateSubscriptionAdvanced (p_notificationURI, p_name, p_eventNotificationCriteria, p_expirationCounter, p_batchNotify, p_latestNotify, p_subscriberURI, p_notificationContentType)}
 			};
         	
+        	/**
+			 * @desc Base CREATE request primitive for Location Policy resource
+			 */
+			template (value) RequestPrimitive m_createLocationPolicyBase modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createLocationPolicy" & f_rnd(1, 1000000),
+				resourceType := int10,
+				primitiveContent := {locationPolicy_optional := m_contentCreateLocationPolicyBase}
+			};
+        	
         	template (value) RequestPrimitive m_createLocationPolicy(in template (value) LocationSource p_locationSource, in template (omit) AcpType p_accessControlPolicyIds, in template (omit) XSD.Duration p_locationUpdatePeriod, in template (omit) NodeID p_locationTargetID, in template (omit) XSD.AnyURI p_locationServerAddress) modifies m_create := {
         		
         	  	requestIdentifier	:= testcasename() & "-m_createLocationPolicy" & f_rnd(1, 1000000), //the requestIdentifier is supposed to be set similar as "C190XX7T/001"  by prepending the AE-ID-Stem and slash(‘/’) in front of it
@@ -779,6 +918,33 @@ module OneM2M_Templates {
 				primitiveContent := {semanticDescriptor_optional := p_semanticDescriptor}
 			};
 			
+			/**
+			 * @desc Base CREATE request primitive for Stats Config resource
+			 */
+			template (value) RequestPrimitive m_createStatsConfigBase modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createStatsConfig" & f_rnd(1, 1000000),
+				resourceType := int22,
+				primitiveContent := {statsConfig_optional := m_contentCreateStatConfigBase}
+			};
+			
+			/**
+			 * @desc Base CREATE request primitive for Stats Config resource
+			 */
+			template (value) RequestPrimitive m_createStatsCollectBase modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createStatsCollect" & f_rnd(1, 1000000),
+				resourceType := int21,
+				primitiveContent := {statsCollect_optional := m_contentCreateStatCollectBase}
+			};
+			
+			/**
+			 * @desc Base CREATE request primitive for M2mServiceSubscriptionProfile resource
+			 */
+			template (value) RequestPrimitive m_createM2mServiceSubscriptionProfileBase modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createM2mServiceSubscriptionProfile" & f_rnd(1, 1000000),
+				resourceType := int11,
+				primitiveContent := {m2mServiceSubscriptionProfile_optional := m_contentCreatem2mServiceSubscriptionProfileBase}
+			};
+			
     	}//end group Create
     	
     	group Delete {
@@ -1168,6 +1334,31 @@ module OneM2M_Templates {
 			description := omit//O
 		};	  	
 		
+		/**
+		 * @desc Base primitiveContent for CREATE operation for MgmtCmd resource
+		 * @param p_name Resource name
+		 * @param p_accessControlPolicyIds ACP IDs for the AE
+		 */
+		template (value) MgmtResource_optional m_contentCreateMgmtCmd (in template (omit) AcpType p_accessControlPolicyIds := omit, in template (omit)  XSD.String p_name := c_defaultMgmtCmdResourceName) := {
+			
+			resourceName := p_name,//O
+			resourceType := omit,//NP
+			resourceID := omit,//NP
+			parentID := omit,//NP
+			creationTime := omit,//NP
+			lastModifiedTime := omit,//NP
+			labels := omit,//O
+			accessControlPolicyIDs := p_accessControlPolicyIds,//O
+			expirationTime := omit,//O
+			dynamicAuthorizationConsultationIDs := omit, //O
+			announceTo := omit,//O
+			announcedAttribute := omit,//O
+			mgmtDefinition := omit,//O
+			objectIDs := omit,//O
+			objectPaths := omit,//O
+			description := omit//O
+		};
+		
 		/**
 		 * @desc Base reception template of primitiveContent for CREATE operation for MgmtObjAnnc resource
 		 */
@@ -1441,6 +1632,36 @@ module OneM2M_Templates {
 			choice := omit//NP
     	};
     	
+		/**
+		 * @desc Base primitiveContent for CREATE operation for Container 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_CSE1_ID, in template (omit) XSD.ID p_cSE_ID := PX_CSE_ID):= {
+			resourceName := p_name,//O
+			resourceType := omit,//NP
+			resourceID := omit,//NP
+			parentID := omit,//NP
+			creationTime := omit,//NP
+			lastModifiedTime := omit,//NP
+			labels := omit,//O
+			accessControlPolicyIDs := p_accessControlPolicyIds,//O
+			expirationTime := omit,//O
+			dynamicAuthorizationConsultationIDs := omit,
+			announceTo := omit,//O
+			announcedAttribute := omit,//O
+			cseType := omit,//O
+			pointOfAccess := omit,//O
+			cSEBase := "/" & p_cSEBase,//M
+			cSE_ID := "/" & p_cSE_ID,//M
+			m2M_Ext_ID := omit,//O
+			trigger_Recipient_ID := omit,//O
+			requestReachability := true,//M
+			nodeLink := omit,//O
+			e2eSecInfo := omit,//O
+			triggerReferenceNumber := omit,//O
+			choice := omit//O
+		};
+    	
 		/**
 		* @desc Base reception template of primitiveContent for CREATE operation for ContainerAnnc resource
 		*/
@@ -1492,6 +1713,29 @@ module OneM2M_Templates {
     	   	  	
     	};
     	
+		template (value) LocationPolicy_optional m_contentCreateLocationPolicyBase := {
+				resourceName 				:= c_defaultLocationPolicyResourceName, //O
+				resourceType				:= omit, //NP
+				resourceID					:= omit, //NP
+				parentID					:= omit, //NP
+				creationTime				:= omit, //NP
+				lastModifiedTime			:= omit, //NP
+				labels 						:= PX_LABELS,//O
+				accessControlPolicyIDs 	:= omit, //O
+				expirationTime 			:= omit, //O
+				dynamicAuthorizationConsultationIDs := omit, //O
+				announceTo 				:= omit, 				   //O
+				announcedAttribute		:= omit, 			      //O
+				locationSource 			:= omit, //M
+				locationUpdatePeriod 		:= omit, //O
+				locationTargetID 			:= omit, 	//O
+				locationServer 			:= omit,//O
+				locationContainerID		:= omit,    		   //NP
+				locationContainerName 	:= PX_LOCATION_CONTAINER_NAME,//O    		
+				locationStatus				:= omit,              //NP
+				choice 					:= omit  	         //NP
+			};
+    	
 	  /**
 	  * @desc Base reception template of primitiveContent for CREATE operation for LocationPolicyAnnc resource
 	  */
@@ -1569,6 +1813,90 @@ module OneM2M_Templates {
 			ontologyRef := p_ontologyRef
 		}  
 		
+		/**
+			 * @desc Base primitiveContent for CREATE operation for StatConfig resource
+			 * @param p_primitiveContent Content for the StatConfig
+			 */
+		template StatsConfig_optional m_contentCreateStatConfigBase := {
+			resourceName 				:= c_defaultStatsConfigResourceName, //O
+			resourceType				:= omit, //NP
+			resourceID					:= omit, //NP
+			parentID					:= omit, //NP
+			creationTime				:= omit, //NP
+			lastModifiedTime			:= omit, //NP
+			labels 						:= PX_LABELS,//O
+			accessControlPolicyIDs 	:= omit, //O
+			expirationTime 			:= omit, //O
+			dynamicAuthorizationConsultationIDs := omit, //O
+			creator                 := omit,
+			choice 					:= omit  	         //NP
+		};
+		
+		/**
+			 * @desc Base primitiveContent for CREATE operation for StatCollect resource
+			 * @param p_primitiveContent Content for the StatCollect
+			 */
+		template StatsCollect_optional m_contentCreateStatCollectBase := {
+			resourceName 				:= c_defaultStatsCollectResourceName, //O
+			resourceType				:= omit, //NP
+			resourceID					:= omit, //NP
+			parentID					:= omit, //NP
+			creationTime				:= omit, //NP
+			lastModifiedTime			:= omit, //NP
+			labels 						:= PX_LABELS,//O
+			accessControlPolicyIDs 	:= omit, //O
+			expirationTime 			:= omit, //O
+			dynamicAuthorizationConsultationIDs := omit, //O
+			creator                 := omit,
+			statsCollectID          := omit,
+			collectingEntityID      := omit,
+			collectedEntityID       := omit,
+			statsRuleStatus         := omit,
+			statModel               := omit,
+			collectPeriod           := omit,
+			eventID                 := omit,
+			choice 					:= omit  	         //NP
+		};
+		
+		/**
+			 * @desc Base primitiveContent for CREATE operation for M2mServiceSubscriptionProfile resource
+			 * @param p_primitiveContent Content for the M2mServiceSubscriptionProfile
+			 */
+		template M2mServiceSubscriptionProfile_optional m_contentCreatem2mServiceSubscriptionProfileBase := {
+			resourceName 				:= c_defaultm2mServiceSubscriptionProfileResourceName, //O
+			resourceType				:= omit, //NP
+			resourceID					:= omit, //NP
+			parentID					:= omit, //NP
+			creationTime				:= omit, //NP
+			lastModifiedTime			:= omit, //NP
+			labels 						:= PX_LABELS,//O
+			accessControlPolicyIDs 	:= omit, //O
+			expirationTime 			:= omit, //O
+			dynamicAuthorizationConsultationIDs := omit, //O
+			choice 					:= omit  	         //NP
+		};
+		
+		/**
+		  * @desc Base primitiveContent for CREATE operation for ServiceSubscribedAppRule_optional resource
+		  * @param p_primitiveContent Content for the ServiceSubscribedAppRule_optional
+		 */
+		template ServiceSubscribedAppRule_optional m_contentCreateServiceSubscribedAppRuleBase := {
+			resourceName 				:= c_defaultServiceSubscribedAppRuleResourceName, //O
+			resourceType				:= omit, //NP
+			resourceID					:= omit, //NP
+			parentID					:= omit, //NP
+			creationTime				:= omit, //NP
+			lastModifiedTime			:= omit, //NP
+			labels 						:= PX_LABELS,//O
+			accessControlPolicyIDs 	:= omit, //O
+			expirationTime 			:= omit, //O
+			dynamicAuthorizationConsultationIDs := omit, //O
+			applicableCredIDs       := omit,
+			allowedApp_IDs          := omit,
+			allowedAEs              := omit,
+			allowedRole_IDs			:= omit,
+			choice 					:= omit  	         //NP   
+		};
 	}//end group ContentCreate
 	
 	group ContentUpdate {
@@ -2179,6 +2507,58 @@ module OneM2M_Templates {
 			expirationTime := *//M
 		}
 		
+		template RemoteCSE_optional m_contentRemoteCSE_allOmit := {
+			resourceName := omit,//M
+			resourceType := omit,//M
+			resourceID := omit,//M
+			parentID := omit,//M
+			creationTime := omit,//M
+			lastModifiedTime := omit,//M
+			labels := omit,//O
+			accessControlPolicyIDs := omit,//O
+			expirationTime := omit,//M
+			dynamicAuthorizationConsultationIDs := omit,//O
+			announceTo := omit,//O
+			announcedAttribute := omit,//O
+			cseType := omit,//O
+			pointOfAccess := omit,//O
+			cSEBase := omit,//M
+			cSE_ID := omit,//M
+			m2M_Ext_ID := omit,//O
+			trigger_Recipient_ID := omit,//O
+			requestReachability := omit,//M
+			nodeLink := omit,//O
+			e2eSecInfo := omit,//O
+			triggerReferenceNumber := omit,//O
+			choice := omit//O
+		};
+		
+		template RemoteCSE_optional mw_contentRemoteCSEBase := {
+			resourceName := ?,//M
+			resourceType := ?,//M
+			resourceID := ?,//M
+			parentID := ?,//M
+			creationTime := ?,//M
+			lastModifiedTime := ?,//M
+			labels := *,//O
+			accessControlPolicyIDs := *,//O
+			expirationTime := ?,//M
+			dynamicAuthorizationConsultationIDs := *,//O
+			announceTo := *,//O
+			announcedAttribute := *,//O
+			cseType := *,//O
+			pointOfAccess := *,//O
+			cSEBase := ?,//M
+			cSE_ID := ?,//M
+			m2M_Ext_ID := *,//O
+			trigger_Recipient_ID := *,//O
+			requestReachability := ?,//M
+			nodeLink := *,//O
+			e2eSecInfo := *,//O
+			triggerReferenceNumber := *,//O
+			choice := *//O
+		};
+		
 		template Schedule_optional mw_contentScheduleBase := {
 			resourceName := ?,//M
 			resourceType := ?,//M
@@ -2818,6 +3198,21 @@ module OneM2M_Templates {
 			tokenRequestInformation := *
     	};
     	
+		template ResponsePrimitive mw_responseDiscovery := {
+			responseStatusCode := int2000,
+			requestIdentifier := ?,
+			primitiveContent := {uRIList := ?},
+			to_ := *,
+			from_ := *,
+			originatingTimestamp := *,
+			resultExpirationTimestamp := *,
+			eventCategory := *,
+			contentStatus := *,
+			contentOffset := *,
+			assignedTokenIdentifiers := *,
+			tokenRequestInformation := *
+		};
+    	
 		template ResponsePrimitive m_responseNotification(ResponseStatusCode p_statusCode, in template(omit) PrimitiveContent p_notification := omit) := {
 			responseStatusCode := p_statusCode,
 			requestIdentifier := testcasename() & "-m_responseNotification" & f_rnd(1, 1000000),
diff --git a/LibOneM2M/OneM2M_TestSystem.ttcn b/LibOneM2M/OneM2M_TestSystem.ttcn
index c0abf03c7dcca33dad452d4771dc8ee2fb49ff66..6ad683dc20188ee6d4f23874cd557937748daf70 100644
--- a/LibOneM2M/OneM2M_TestSystem.ttcn
+++ b/LibOneM2M/OneM2M_TestSystem.ttcn
@@ -7,7 +7,7 @@
  *  
  *  @author     oneM2M
  *  @version    $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_TestSystem.ttcn $
- *              $Id: OneM2M_TestSystem.ttcn 298 2017-06-14 07:11:13Z reinaortega $
+ *              $Id: OneM2M_TestSystem.ttcn 306 2017-06-20 16:19:04Z reinaortega $
  *  @desc       Test System module for oneM2M
  *
  */
@@ -42,6 +42,7 @@ module OneM2M_TestSystem {
 
 		//global variables
 		var AE_optional vc_aeAux;//TODO To be removed
+		var RemoteCSE_optional vc_remoteCSEAux;//TODO To be removed
 		var AccessControlPolicy_optional vc_acpAux;
 		var integer vc_acpAuxIndex := -1;
 
diff --git a/LibOneM2M/OneM2M_Types.ttcn b/LibOneM2M/OneM2M_Types.ttcn
index 33c1d9e3c27a79e19f9e5ce18bcc8d06242124f9..8b88d045c250d15ab8c9ee6af45dde950bc4c703 100644
--- a/LibOneM2M/OneM2M_Types.ttcn
+++ b/LibOneM2M/OneM2M_Types.ttcn
@@ -7,7 +7,7 @@
  *  
  *  @author     oneM2M
  *  @version    $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Types.ttcn $
- *              $Id: OneM2M_Types.ttcn 298 2017-06-14 07:11:13Z reinaortega $
+ *              $Id: OneM2M_Types.ttcn 306 2017-06-20 16:19:04Z reinaortega $
  *  @desc       OneM2M data types module 
  *
  */
@@ -1642,8 +1642,12 @@ type union PrimitiveContent {
 	Node_optional node_optional,
 	NodeAnnc_optional nodeAnnc_optional,
 	PollingChannel_optional pollingChannel_optional,
+	RemoteCSE_optional remoteCSE_optional,
 	Schedule_optional schedule_optional,
 	ScheduleAnnc_optional scheduleAnnc_optional,
+	StatsConfig_optional statsConfig_optional,
+	StatsCollect_optional statsCollect_optional,
+	M2mServiceSubscriptionProfile_optional m2mServiceSubscriptionProfile_optional,
 	ServiceSubscribedAppRule_optional serviceSubscribedAppRule_optional,
 	Subscription_optional subscription_optional,
 	SemanticDescriptor_optional semanticDescriptor_optional,
@@ -7324,6 +7328,72 @@ with {
   variant (resourceName) "attribute";
 };
 
+type record RemoteCSE_optional
+{
+	ResourceName resourceName optional,
+	ResourceType resourceType optional,
+	XSD.ID resourceID optional,
+	NhURI parentID optional,
+	Timestamp creationTime optional,
+	Timestamp lastModifiedTime optional,
+	Labels labels optional,
+	AcpType accessControlPolicyIDs optional,
+	Timestamp expirationTime optional,
+	ListOfURIs dynamicAuthorizationConsultationIDs optional,
+	ListOfURIs announceTo optional,
+	record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
+	CseTypeID cseType optional,
+	PoaList pointOfAccess optional,
+	XSD.AnyURI cSEBase optional,
+	XSD.ID cSE_ID optional,
+	ExternalID m2M_Ext_ID optional,
+	TriggerRecipientID trigger_Recipient_ID optional,
+	XSD.Boolean requestReachability optional,
+	XSD.AnyURI nodeLink optional,
+	E2eSecInfo e2eSecInfo optional,
+	XSD.UnsignedInt triggerReferenceNumber optional,
+	union {
+		record length(1 .. infinity) of ChildResourceRef childResource_list,
+		record length(1 .. infinity) of union {
+			NodeAnnc nodeAnnc,
+			Container container,
+			ContainerAnnc containerAnnc,
+			Group group_,
+			GroupAnnc groupAnnc,
+			AccessControlPolicy accessControlPolicy,
+			AccessControlPolicyAnnc accessControlPolicyAnnc,
+			Subscription subscription,
+			PollingChannel pollingChannel,
+			Schedule schedule,
+			TimeSeries timeSeries,
+			TimeSeriesAnnc timeSeriesAnnc,
+			LocationPolicyAnnc locationPolicyAnnc,
+			AEAnnc aEAnnc,
+			Sg_flexContainerResource_group sg_flexContainerResource,
+			Sg_announcedFlexContainerResource_group sg_announcedFlexContainerResource
+		} choice_list
+	} choice optional
+}
+with {
+  variant "name as uncapitalized";
+  variant "element";
+  variant (resourceName) "attribute";
+  variant (announcedAttribute) "list";
+  variant (cSEBase) "name as capitalized";
+  variant (cSE_ID) "name as 'CSE-ID'";
+  variant (m2M_Ext_ID) "name as 'M2M-Ext-ID'";
+  variant (trigger_Recipient_ID) "name as 'Trigger-Recipient-ID'";
+  //variant (requestReachability) "text 'true' as '1'";
+  //variant (requestReachability) "text 'false' as '0'";
+  variant (choice) "untagged";
+  variant (choice.childResource_list) "untagged";
+  variant (choice.childResource_list[-]) "name as 'childResource'";
+  variant (choice.choice_list) "untagged";
+  variant (choice.choice_list[-]) "untagged";
+  variant (choice.choice_list[-].group_) "name as 'group'";
+  variant (choice.choice_list[-].aEAnnc) "name as capitalized";
+};
+
 type record Schedule_optional
 {
 	ResourceName resourceName optional,
@@ -7495,6 +7565,105 @@ with {
   variant (choice.choice_list[-]) "untagged";
 };
 
+type record StatsConfig_optional
+{
+	ResourceName resourceName optional,
+	ResourceType resourceType optional,
+	XSD.ID resourceID optional,
+	NhURI parentID optional,
+	Timestamp creationTime optional,
+	Timestamp lastModifiedTime optional,
+	Labels labels optional,
+	AcpType accessControlPolicyIDs optional,
+	Timestamp expirationTime optional,
+	ListOfURIs dynamicAuthorizationConsultationIDs optional,
+	XSD.ID creator optional,
+	union {
+		record length(1 .. infinity) of ChildResourceRef childResource_list,
+		record length(1 .. infinity) of union {
+			EventConfig eventConfig,
+			Subscription subscription
+		} choice_list
+	} choice optional
+}
+with {
+  variant "name as uncapitalized";
+  variant "element";
+  variant (resourceName) "attribute";
+  variant (choice) "untagged";
+  variant (choice.childResource_list) "untagged";
+  variant (choice.childResource_list[-]) "name as 'childResource'";
+  variant (choice.choice_list) "untagged";
+  variant (choice.choice_list[-]) "untagged";
+};
+
+type record StatsCollect_optional
+{
+	ResourceName resourceName optional,
+	ResourceType resourceType optional,
+	XSD.ID resourceID optional,
+	NhURI parentID optional,
+	Timestamp creationTime optional,
+	Timestamp lastModifiedTime optional,
+	Labels labels optional,
+	AcpType accessControlPolicyIDs optional,
+	Timestamp expirationTime optional,
+	ListOfURIs dynamicAuthorizationConsultationIDs optional,
+	XSD.ID creator optional,
+	XSD.String statsCollectID optional,
+	XSD.ID collectingEntityID optional,
+	XSD.ID collectedEntityID optional,
+	StatsRuleStatusType statsRuleStatus optional,
+	StatModelType statModel optional,
+	ScheduleEntries collectPeriod optional,
+	XSD.String eventID optional,
+	union {
+		record length(1 .. infinity) of ChildResourceRef childResource_list,
+		record length(1 .. infinity) of Subscription subscription_list
+	} choice optional
+}
+with {
+  variant "name as uncapitalized";
+  variant "element";
+  variant (resourceName) "attribute";
+  variant (choice) "untagged";
+  variant (choice.childResource_list) "untagged";
+  variant (choice.childResource_list[-]) "name as 'childResource'";
+  variant (choice.subscription_list) "untagged";
+  variant (choice.subscription_list[-]) "name as 'subscription'";
+};
+
+type record M2mServiceSubscriptionProfile_optional
+{
+	ResourceName resourceName optional,
+	ResourceType resourceType optional,
+	XSD.ID resourceID optional,
+	NhURI parentID optional,
+	Timestamp creationTime optional,
+	Timestamp lastModifiedTime optional,
+	Labels labels optional,
+	AcpType accessControlPolicyIDs optional,
+	Timestamp expirationTime optional,
+	ListOfURIs dynamicAuthorizationConsultationIDs optional,
+	union {
+		record length(1 .. infinity) of ChildResourceRef childResource_list,
+		record length(1 .. infinity) of union {
+			ServiceSubscribedNode serviceSubscribedNode,
+			Subscription subscription
+		} choice_list
+	} choice optional
+}
+with {
+  variant "name as uncapitalized";
+  variant "element";
+  variant (resourceName) "attribute";
+  variant (choice) "untagged";
+  variant (choice.childResource_list) "untagged";
+  variant (choice.childResource_list[-]) "name as 'childResource'";
+  variant (choice.choice_list) "untagged";
+  variant (choice.choice_list[-]) "untagged";
+};
+
 }//end group OptionalResourceTypes
 	
 	
diff --git a/LibOneM2M/OneM2M_TypesAndValues.ttcn b/LibOneM2M/OneM2M_TypesAndValues.ttcn
index c64e3cf1cbe3ccbfecc2e78208599fa253409310..a0e809341d6f345d4fa297bdbc2da80903018e9e 100644
--- a/LibOneM2M/OneM2M_TypesAndValues.ttcn
+++ b/LibOneM2M/OneM2M_TypesAndValues.ttcn
@@ -6,8 +6,8 @@
  *  All rights reserved.
  *  
  *  @author     oneM2M
- *  @version    $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_TypesAndValues.ttcn $
- *              $Id: OneM2M_TypesAndValues.ttcn 287 2017-05-19 06:59:12Z reinaortega $
+ *  @version    $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_TypesAndValues.ttcn $
+ *              $Id: OneM2M_TypesAndValues.ttcn 306 2017-06-20 16:19:04Z reinaortega $
  *  @desc       Module containing types and values for oneM2M
  *
  */
@@ -25,10 +25,17 @@ module OneM2M_TypesAndValues {
 	const XSD.String c_defaultSubscriptionResourceName := "MySubscriptionResource";
 	const XSD.String c_defaultContentInstanceResourceName := "MyContentInstanceResource";
 	const XSD.String c_defaultContainerResourceName := "MyContainerResource";
+	const XSD.String c_defaultRemoteCSEResourceName := "MyRemoteCSEResource";
 	const XSD.String c_defaultMgmtObjResourceName := "MyMgmtObjResource";
+	const XSD.String c_defaultMgmtCmdResourceName := "MyMgmtCmdResource";
 	const XSD.String c_defaultAeResourceName := "MyAeResource";
 	const XSD.String c_defaultLocationPolicyResourceName := "MyLocationPolicyResource";
 	const XSD.String c_defaultNodeResourceName := "MyNodeResource";
+	const XSD.String c_defaultNodeID := "MyNodeId";
+	const XSD.String c_defaultStatsConfigResourceName := "MyStatsConfigResource";
+	const XSD.String c_defaultStatsCollectResourceName := "MyStatsCollectResource";
+	const XSD.String c_defaultm2mServiceSubscriptionProfileResourceName := "Mym2mServiceSubscriptionProfileResource";
+	const XSD.String c_defaultServiceSubscribedAppRuleResourceName := "MyServiceSubscribedAppRuleResource";
 	const XSD.ID c_aeAuxName := "MyAe";
 	const XSD.String c_acpAuxName := "MyAcp";
 	const charstring c_invalid_location_update_period	:= "-PT30M10S" ;//duration set to invalid value  (minus value)
@@ -107,7 +114,8 @@ module OneM2M_TypesAndValues {
 	type enumerated Configurations {
 		e_cf01,
 		e_cf02,
-		e_cf03	
+		e_cf03,
+		e_cf04
 	};
 	
 	
diff --git a/OneM2M_TestControl.ttcn b/OneM2M_TestControl.ttcn
index c8cd60067cb33f1eabbc6328aca1521d026553de..0b2cad97effd0804d9ac0df12eb66eeea7a45e12 100644
--- a/OneM2M_TestControl.ttcn
+++ b/OneM2M_TestControl.ttcn
@@ -6,8 +6,8 @@
  *  All rights reserved.
  *  
  *  @author     oneM2M
- *  @version    $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/OneM2M_TestControl.ttcn $
- *              $Id: OneM2M_TestControl.ttcn 254 2017-05-02 15:55:08Z reinaortega $
+ *  @version    $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/OneM2M_TestControl.ttcn $
+ *              $Id: OneM2M_TestControl.ttcn 299 2017-06-20 12:36:36Z reinaortega $
  *  @desc       Test control module for oneM2M
  *
  */
@@ -243,6 +243,12 @@ module OneM2M_TestControl {
 		execute(TC_CSE_GMG_BV_022_02());
 		execute(TC_CSE_GMG_BV_022_03());
 		execute(TC_CSE_GMG_BV_022_04());
+		execute(TC_CSE_DIS_BV_001());
+		execute(TC_CSE_DIS_BV_003());
+		execute(TC_CSE_DIS_BV_004());
+		execute(TC_CSE_DIS_BO_005());
+		execute(TC_CSE_DIS_BO_006());
+		execute(TC_CSE_DIS_BI_007());
 		execute(TC_CSE_SUB_BV_001_01());
 		execute(TC_CSE_SUB_BV_001_02());
 		execute(TC_CSE_SUB_BV_002());
diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn
index e73ab150e9699b197d8e165f4bb81283aea1100c..bf469c2fd971778d3b44b7c1cbccc9b2eefc0b8a 100644
--- a/OneM2M_Testcases.ttcn
+++ b/OneM2M_Testcases.ttcn
@@ -7,7 +7,7 @@
  *  
  *  @author     oneM2M
  *  @version    $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/OneM2M_Testcases.ttcn $
- *              $Id: OneM2M_Testcases.ttcn 298 2017-06-14 07:11:13Z reinaortega $
+ *              $Id: OneM2M_Testcases.ttcn 306 2017-06-20 16:19:04Z reinaortega $
  *  @desc       Module containing test cases for oneM2M
  *
  */
@@ -517,7 +517,190 @@ module OneM2M_Testcases {
 					// Tear down
 					f_cf01Down();
 
-				}//end f_CSE_DMR_CRE_BV_012
+				
+				testcase TC_CSE_REG_CRE_BV_011() runs on CseTester system CseSystem {
+				
+					// Local variables
+					var MsgIn v_response;
+					var RequestPrimitive v_request;
+					var RequestPrimitive v_createRequestPrimitive := m_createRemoteCSEBase;	
+					var ResourceType v_resourceType := int16;	//remoteCSE
+					   
+					// Test control
+
+					// Test component configuration
+					f_cf04Up();
+
+					// Test adapter configuration
+
+					// Preamble
+				
+					// Test Body
+					v_request := f_getCreateRequestPrimitive(v_resourceType, v_createRequestPrimitive, -1);
+	
+					mccPort.send(m_request(v_request));
+					tc_ac.start;
+					alt {
+						[] mccPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+							tc_ac.stop;
+							setverdict(pass, testcasename() & ": Resource type remoteCSE created successfully");
+						}
+						[] mccPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while creating resource type remoteCSE");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, testcasename() & ": No answer while creating resource type remoteCSE");
+						}
+					}	
+			
+					// Postamble
+					f_cse_postamble_deleteResources();
+	
+					// Tear down
+					f_cf04Down();
+
+				}//end TC_CSE_REG_CRE_BV_011
+				
+				testcase TC_CSE_REG_CRE_BV_012() runs on CseTester system CseSystem {
+				
+					// Local variables
+					var MsgIn v_response;
+					var RequestPrimitive v_request;
+					var RequestPrimitive v_createRequestPrimitive := m_createRemoteCSEBase;	
+					var ResourceType v_resourceType := int16;	//remoteCSE
+	   
+					// Test control
+
+					// Test component configuration
+					f_cf04Up();
+
+					// Test adapter configuration
+
+					// Preamble
+
+					// Test Body
+					v_request := f_getCreateRequestPrimitive(v_resourceType, v_createRequestPrimitive, -1);
+
+					mccPort.send(m_request(v_request));
+					tc_ac.start;
+					alt {
+						[] mccPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+							tc_ac.stop;
+							setverdict(pass, testcasename() & ": Resource type remoteCSE created successfully");
+						}
+						[] mccPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while creating resource type remoteCSE");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, testcasename() & ": No answer while creating resource type remoteCSE");
+						}
+					}	
+
+					// Postamble
+					f_cse_postamble_deleteResources();
+
+					// Tear down
+					f_cf04Down();
+
+				}//end TC_CSE_REG_CRE_BV_012
+				
+				group g_CSE_REG_CRE_BV_015{
+					
+					testcase TC_CSE_REG_CRE_BV_015_01() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createRemoteCSEBase;	
+						const AttributeAux c_optionalAttribute := {"labels", omit};
+						
+						v_createRequest.primitiveContent.remoteCSE_optional.labels := {"MyLabel"};
+						
+						f_CSE_REG_CRE_BV_015(v_createRequest, c_optionalAttribute);
+						
+					}
+					
+					testcase TC_CSE_REG_CRE_BV_015_02() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createRemoteCSEBase;	
+						const AttributeAux c_optionalAttribute := {"cseType", omit};
+						
+						v_createRequest.primitiveContent.remoteCSE_optional.cseType := int1;
+						
+						f_CSE_REG_CRE_BV_015(v_createRequest, c_optionalAttribute);
+	
+					}
+					
+					testcase TC_CSE_REG_CRE_BV_015_03() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createRemoteCSEBase;	
+						const AttributeAux c_optionalAttribute := {"pointOfAccess", omit};
+	
+						v_createRequest.primitiveContent.remoteCSE_optional.pointOfAccess := {"http://" & PX_CSE1_ADDRESS & "/"};
+	
+						f_CSE_REG_CRE_BV_015(v_createRequest, c_optionalAttribute);
+
+					}
+					
+					testcase TC_CSE_REG_CRE_BV_015_04() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createRemoteCSEBase;	
+						const AttributeAux c_optionalAttribute := {"nodeLink", omit};
+
+						v_createRequest.primitiveContent.remoteCSE_optional.nodeLink := c_defaultNodeID;
+
+						f_CSE_REG_CRE_BV_015(v_createRequest, c_optionalAttribute);
+
+					}
+					
+					function f_CSE_REG_CRE_BV_015(template RequestPrimitive p_requestPrimitive, in AttributeAux p_optionalAttribute) runs on CseTester {
+					
+						// Local variables
+						var MsgIn v_response;
+						var RequestPrimitive v_request;
+						var ResourceType v_resourceType := int16;	//remoteCSE
+										   
+						// Test control
+					
+						// Test component configuration
+						f_cf04Up(); 
+					
+						// Test adapter configuration
+					
+						// Preamble
+					
+						// Test Body
+						v_request := f_getCreateRequestPrimitive(v_resourceType, p_requestPrimitive, -1);
+					
+						mccPort.send(m_request(v_request));
+						tc_ac.start;
+						alt {
+							[] mccPort.receive(mw_response(mw_responsePrimitiveOK(f_getTemplateFromPrimitiveContent(v_request.primitiveContent)))) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Accepted creation for resource type remoteCSE containing attribute " & p_optionalAttribute.name);
+							}
+							[] mccPort.receive(mw_response(mw_responsePrimitiveOK())) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Accepted creation for resource type remoteCSE without containing attribute " & p_optionalAttribute.name);
+							}
+							[] mccPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Rejected creation of resource type remoteCSE containing attribute" & p_optionalAttribute.name);
+							}
+							[] tc_ac.timeout {
+								setverdict(fail, testcasename() & ": No answer while creating resource type remoteCSE");
+							}
+						}	
+								
+						// Postamble
+						f_cse_postamble_deleteResources();
+						
+						// Tear down
+						f_cf04Down();
+																
+					}//end f_CSE_REG_CRE_BV_015
+				}// end group g_CSE_REG_CRE_BV_015	
+			
+			}
 			
 			}	//end group Create
 			
@@ -1500,188 +1683,402 @@ module OneM2M_Testcases {
 						// Local variables
 						var template RequestPrimitive v_createRequest := m_createContainerBase;
 						var ResponsePrimitive v_responsePrimitive;
-						var integer v_sizeResourceTypeList;
-						var integer i;
-						var RequestPrimitiveMatrix v_requestPrimitivematrix;
 						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;//TODO useless but need to be initialized see if we can remove it
 						
-						v_requestPrimitivematrix := {
-							{},
-							{valueof(m_createAeAux(omit,omit))},
-							{valueof(m_createContainerBase)}
+						v_createRequest.primitiveContent.container_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int3, v_createRequest, -, v_notifyHandler); //Container
+						log(v_responsePrimitive);
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.container_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+						}
 						}
-						v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix);
 						
-						v_createRequest.primitiveContent.container_optional.resourceName := omit;
+					}
+						
+					testcase TC_CSE_DMR_CRE_BV_001_02() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createContainerBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
 						
-						for (i := 0; i<v_sizeResourceTypeList; i := i+1){
-							v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int3, v_createRequest, v_requestPrimitivematrix[i], v_notifyHandler);
+						v_createRequest.primitiveContent.group_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int3, v_createRequest, m_createAeAux(omit,omit),v_notifyHandler);//Container
 							log(v_responsePrimitive);
 							if(getverdict == pass){
-								if(not ispresent(v_responsePrimitive.primitiveContent.container_optional.resourceName)){
+							if(not ispresent(v_responsePrimitive.primitiveContent.group_optional.resourceName)){
 									setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
 								}
 							}
+						
 						}  
+					
+					testcase TC_CSE_DMR_CRE_BV_001_03() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createContainerBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						
+						v_createRequest.primitiveContent.accessControlPolicy_optional.resourceName := omit;
+
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int3, v_createRequest, m_createContainerBase, v_notifyHandler);//Container
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.accessControlPolicy_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
 					}
+						}
 
-					testcase TC_CSE_DMR_CRE_BV_001_02() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_04() runs on CseTester system CseSystem {
 						// Local variables
 						var template RequestPrimitive v_createRequest := m_createGroupBase;
 						var ResponsePrimitive v_responsePrimitive;
-						var RequestPrimitiveMatrix v_requestPrimitivematrix;
-						var integer v_sizeResourceTypeList;
-						var integer i;
 						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
 						
-						//CSEBase int5, remoteCSE int16, AE int2
-						v_requestPrimitivematrix := {
-							{},
-							{valueof(m_createAeAux(omit,omit))}
+						v_createRequest.primitiveContent.accessControlPolicy_optional.resourceName := omit;
+
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int9, v_createRequest, -, v_notifyHandler);//Group
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.accessControlPolicy_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+						}
 						}
-						v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix);
 						
-						v_createRequest.primitiveContent.group_optional.resourceName := omit;
+					}
 						
-						for (i := 0; i<v_sizeResourceTypeList; i := i+1){
-							v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int9, v_createRequest, v_requestPrimitivematrix[i],v_notifyHandler);
-							log(v_responsePrimitive);
+					testcase TC_CSE_DMR_CRE_BV_001_05() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createGroupBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						
+						v_createRequest.primitiveContent.accessControlPolicy_optional.resourceName := omit;
+
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int9, v_createRequest, m_createAeAux(omit,omit), v_notifyHandler);//Group
 							if(getverdict == pass){
-								if(not ispresent(v_responsePrimitive.primitiveContent.group_optional.resourceName)){
+							if(not ispresent(v_responsePrimitive.primitiveContent.accessControlPolicy_optional.resourceName)){
 									setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
 								}
 							}
+						
 						}
-					}
 					
-					testcase TC_CSE_DMR_CRE_BV_001_03() runs on CseTester system CseSystem {
+					testcase TC_CSE_DMR_CRE_BV_001_06() runs on CseTester system CseSystem {
 						// Local variables
 						var template RequestPrimitive v_createRequest := m_createAcpBase;
 						var ResponsePrimitive v_responsePrimitive;
-						var integer v_sizeResourceTypeList;
-						var integer i;
-						var RequestPrimitiveMatrix v_requestPrimitivematrix;
 						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
 
-						//CSEBase int5, remoteCSE int16, AE int2
-						v_requestPrimitivematrix := {
-							{},
-							{valueof(m_createAeAux(omit,omit))}
+						v_createRequest.primitiveContent.accessControlPolicy_optional.resourceName := omit;
+
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int1, v_createRequest, -, v_notifyHandler);//AccessControlPolicy
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.accessControlPolicy_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+						}
 						}
-						v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix);
+						
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_07() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createAcpBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
 						
 						v_createRequest.primitiveContent.accessControlPolicy_optional.resourceName := omit;
 
-						for (i := 0; i<v_sizeResourceTypeList; i := i+1){
-							v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int1, v_createRequest, v_requestPrimitivematrix[i], v_notifyHandler);//AccessControlPolicy
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int1, v_createRequest, m_createAeAux(omit,omit), v_notifyHandler);//AccessControlPolicy
 							if(getverdict == pass){
 								if(not ispresent(v_responsePrimitive.primitiveContent.accessControlPolicy_optional.resourceName)){
 									setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
 								}
 							}
+						
 						}
-					}
 				
-					testcase TC_CSE_DMR_CRE_BV_001_04() runs on CseTester system CseSystem {
+					testcase TC_CSE_DMR_CRE_BV_001_08() runs on CseTester system CseSystem {
 						// Local variables
 						var template RequestPrimitive v_createRequest := m_createScheduleBase;
 						var ResponsePrimitive v_responsePrimitive;
-						var integer v_sizeResourceTypeList;
-						var integer i;
-						var RequestPrimitiveMatrix v_requestPrimitivematrix;
 						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
 						
-//						CSEBase int5, remoteCSE int16, AE int2, subscription int23 
-    					v_requestPrimitivematrix := {
-    						{},
-    						{valueof(m_createAeAux(omit,omit))},
-    						{valueof(m_createSubscriptionBase)}
+						v_createRequest.primitiveContent.schedule_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int18, v_createRequest, -, v_notifyHandler);//Schedule
+						
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.schedule_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
     					}
-    					v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix);
+						}
+						
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_09() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createScheduleBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
 						
 						v_createRequest.primitiveContent.schedule_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int18, v_createRequest, m_createAeAux(omit,omit), v_notifyHandler);//Schedule
 
-						for (i := 0; i<v_sizeResourceTypeList; i := i+1){
-							v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int18, v_createRequest, v_requestPrimitivematrix[i], v_notifyHandler);//Schedule
-						
 							if(getverdict == pass){
 								if(not ispresent(v_responsePrimitive.primitiveContent.schedule_optional.resourceName)){
 									setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
 								}
 							}
+						
 						}
+				
+					testcase TC_CSE_DMR_CRE_BV_001_10() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createScheduleBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						
+						v_createRequest.primitiveContent.schedule_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int18, v_createRequest, m_createSubscriptionBase, v_notifyHandler);//Schedule
+						
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.schedule_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
 					}
+						}
 					
-					testcase TC_CSE_DMR_CRE_BV_001_05() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_11() runs on CseTester system CseSystem {
 						// Local variables
 						var template RequestPrimitive v_createRequest := m_createPollingChannelBase;
 						var ResponsePrimitive v_responsePrimitive;
-						var integer v_sizeResourceTypeList;
-						var integer i;
-						var RequestPrimitiveMatrix v_requestPrimitivematrix;
 						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
 						
-						//remoteCSE int16, AE int2
-						v_requestPrimitivematrix := {
-							{valueof(m_createAeAux(omit,omit))}
-						}
-						v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix);
 						
 						v_createRequest.primitiveContent.pollingChannel_optional.resourceName := omit;
 
-						for (i := 0; i<v_sizeResourceTypeList; i := i+1){
-							v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int15, v_createRequest, v_requestPrimitivematrix[i], v_notifyHandler);//PollingChannel
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int15, v_createRequest, m_createAeAux(omit,omit), v_notifyHandler);//PollingChannel
 							if(getverdict == pass){
 								if(not ispresent(v_responsePrimitive.primitiveContent.pollingChannel_optional.resourceName)){
 									setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
 								}
 							}
+						
+						}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_12() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createSubscriptionBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						
+						v_createRequest.primitiveContent.subscription_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int23, v_createRequest, -, v_notifyHandler);//Subscription
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.subscription_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+					}
 						}
+					
 					}
 					
-					testcase TC_CSE_DMR_CRE_BV_001_06() runs on CseTester system CseSystem {
+					testcase TC_CSE_DMR_CRE_BV_001_13() runs on CseTester system CseSystem {
 						// Local variables
 						var template RequestPrimitive v_createRequest := m_createSubscriptionBase;
 						var ResponsePrimitive v_responsePrimitive;
-						var integer v_sizeResourceTypeList;
-						var integer i;
-						var RequestPrimitiveMatrix v_requestPrimitivematrix;
 						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
 						
-						//accessControlPolicy int1, CSEBase int5, remoteCSE int16, AE int2, container int, schedule int, locationPolicy int, delivery int, request int, group int, mgmtCmd int,
-						// node int, m2mServiceSubscriptionProfile int, statsConfig int, statsCollect int, serviceSubscribedAppRule int
+						v_createRequest.primitiveContent.subscription_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int23, v_createRequest, m_createAeAux(omit,omit), v_notifyHandler);//Subscription
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.subscription_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+							}
+						}
 	
-						// mgmtObj int, execInstance int, serviceSubscribedNode int, pollingChannelURI int (doesn't exist in Release2), eventConfig int, 
-    					v_requestPrimitivematrix := {
-    						{},
-    						{valueof(m_createAeAux(omit,omit))},
-    						{valueof(m_createContainerBase)},
-    						{valueof(m_createAcpBase)},
-    						{valueof(m_createScheduleBase)},
-    						{valueof(m_createGroupBase)}
-    						//{m_createLocationPolicy(int1,omit,omit,omit,omit)}
-    						//{m_createServiceSubscribedAppRule()} //TODO set correct parameters
     					}
-    					v_sizeResourceTypeList := lengthof(v_requestPrimitivematrix);
+						
+					testcase TC_CSE_DMR_CRE_BV_001_14() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createSubscriptionBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
 						
 						v_createRequest.primitiveContent.subscription_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int23, v_createRequest, m_createContainerBase, v_notifyHandler);//Subscription
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.subscription_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+							}
+						}
 
-						for (i := 0; i<v_sizeResourceTypeList; i := i+1){
-						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int23, v_createRequest, v_requestPrimitivematrix[i], v_notifyHandler);//Subscription
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_15() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createSubscriptionBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						
+						v_createRequest.primitiveContent.subscription_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int23, v_createRequest, m_createAcpBase, v_notifyHandler);//Subscription
     						if(getverdict == pass){
     							if(not ispresent(v_responsePrimitive.primitiveContent.subscription_optional.resourceName)){
     								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
     							}
     						}
 						}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_16() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createSubscriptionBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						
+						v_createRequest.primitiveContent.subscription_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int23, v_createRequest, m_createScheduleBase, v_notifyHandler);//Subscription
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.subscription_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+					}
+						}		
 					}
 					
-    				function f_CSE_DMR_CRE_BV_001(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive, in RequestPrimitiveList p_requestPrimitiveList, in CseTester p_notifyHandler) runs on CseTester return ResponsePrimitive {
+					testcase TC_CSE_DMR_CRE_BV_001_17() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createSubscriptionBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+    				
+						v_createRequest.primitiveContent.subscription_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int23, v_createRequest, m_createGroupBase, v_notifyHandler);//Subscription
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.subscription_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+							}
+						}		
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_18() runs on CseTester system CseSystem {
+    					// Local variables
+						var template RequestPrimitive v_createRequest := m_createNodeBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						 
+						v_createRequest.primitiveContent.node_optional.resourceName := omit;
+
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int14, v_createRequest, -, v_notifyHandler);//Node
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.node_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+							}
+						}
+						
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_19() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createMgmtCmdBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						
+						v_createRequest.primitiveContent.mgmtResource_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int12, v_createRequest, -, v_notifyHandler);//Management Command
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.mgmtResource_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+							}
+						}
+						
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_20() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createLocationPolicyBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						
+						v_createRequest.primitiveContent.locationPolicy_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int10, v_createRequest, -, v_notifyHandler);//Location Policy
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.locationPolicy_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+							}
+						}
+						
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_21() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createStatsConfigBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var RequestPrimitiveMatrix v_requestPrimitivematrix;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						
+						v_createRequest.primitiveContent.statsConfig_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int22, v_createRequest, -, v_notifyHandler);//Stats Config
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.statsConfig_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+							}
+						}
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_22() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createStatsCollectBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						 
+						v_createRequest.primitiveContent.statsCollect_optional.resourceName := omit;
+						
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int21, v_createRequest, -, v_notifyHandler);//Stats Collect
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.statsCollect_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+							}
+						}
+						
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_23() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createM2mServiceSubscriptionProfileBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						
+						v_createRequest.primitiveContent.m2mServiceSubscriptionProfile_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int11, v_createRequest, -, v_notifyHandler);//Subscription Profile
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.m2mServiceSubscriptionProfile_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+							}
+						}
+						
+					}
+					
+					testcase TC_CSE_DMR_CRE_BV_001_24() runs on CseTester system CseSystem {
+						// Local variables
+						var template RequestPrimitive v_createRequest := m_createServiceSubscribedAppRuleBase;
+						var ResponsePrimitive v_responsePrimitive;
+						var CseTester v_notifyHandler := CseTester.create("NotifyHandler") alive;
+						 
+						v_createRequest.primitiveContent.serviceSubscribedAppRule_optional.resourceName := omit;
+						v_responsePrimitive := f_CSE_DMR_CRE_BV_001(int19, v_createRequest, -, v_notifyHandler);//Service Subscribed App
+						if(getverdict == pass){
+							if(not ispresent(v_responsePrimitive.primitiveContent.serviceSubscribedAppRule_optional.resourceName)){
+								setverdict(fail, testcasename(), ": Error, resourceName attribute not provided");
+							}
+						}
+						
+					}
+					
+    				function f_CSE_DMR_CRE_BV_001(ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive, in template (omit) RequestPrimitive p_parentRequestPrimitive := omit, in CseTester p_notifyHandler) runs on CseTester return ResponsePrimitive {
     				
     					// Local variables
     					var MsgIn v_response;
     					var RequestPrimitive v_request;
-						var integer v_sizeResourceTypeList := lengthof(p_requestPrimitiveList);
 						var integer i;
 						var integer v_parentIndex := -1;
     					var integer v_resourceIndex := -1;
@@ -1697,13 +2094,13 @@ module OneM2M_Testcases {
     				
     					// Preamble
     					
-						for (i := 0; i<v_sizeResourceTypeList; i := i+1){
-							if(match(int23, p_requestPrimitiveList[i].resourceType)){
+						if(ispresent(p_parentRequestPrimitive)) {
+							if(match(int23, p_parentRequestPrimitive.resourceType)){
 								v_ae2Index := f_cse_createResource(int2, m_createAe(PX_APP_ID, -, PX_AE2_ID_STEM, "MyAe2", v_poaList), -1); // AE2 is registred
-								p_requestPrimitiveList[i].primitiveContent.subscription_optional.notificationURI := {f_getResourceAddress(v_ae2Index)}; 
+								p_parentRequestPrimitive.primitiveContent.subscription_optional.notificationURI := {f_getResourceAddress(v_ae2Index)}; 
 								p_notifyHandler.start(f_subscriptionVerificationHandler(f_getResourceAddress(v_parentIndex)));
 							}
-							v_parentIndex := f_cse_createResource(p_requestPrimitiveList[i].resourceType, p_requestPrimitiveList[i], v_parentIndex);
+							v_parentIndex := f_cse_createResource(valueof(p_parentRequestPrimitive.resourceType), p_parentRequestPrimitive, v_parentIndex);
 						}										
     									
     					// Test Body
@@ -1723,10 +2120,8 @@ module OneM2M_Testcases {
     							tc_ac.stop;
     							setverdict(pass, testcasename() & ": Resource type " & int2str(enum2int(p_resourceType)) & " created successfully");
 								v_resourceIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, v_parentIndex);
-								if (v_sizeResourceTypeList == 0){
 										vc_resourcesIndexToBeDeleted := vc_resourcesIndexToBeDeleted & {v_resourceIndex};
 								}
-    						}
     						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
     							tc_ac.stop;
     							setverdict(fail, testcasename() & ": Error while creating resource type " & int2str(enum2int(p_resourceType)));
@@ -4793,6 +5188,16 @@ module OneM2M_Testcases {
 						
 					}
 				
+					testcase TC_CSE_DMR_RET_BV_013_09() runs on CseTester system CseSystem {
+						// Local variables
+						var template PrimitiveContent v_contentResponse;
+					
+						v_contentResponse.remoteCSE_optional := mw_contentRemoteCSEBase;
+							
+						f_CSE_DMR_RET_BV_013(int16, m_createRemoteCSEBase, v_contentResponse);//RemoteCSE
+						
+					}
+				
 					testcase TC_CSE_DMR_RET_BV_013_11() runs on CseTester system CseSystem {
 						// Local variables
 						var template PrimitiveContent v_contentResponse;
@@ -4826,17 +5231,25 @@ module OneM2M_Testcases {
 						// Test control
     				
 						// Test component configuration
-						f_cf01Up();
+						f_cf02Up();
     				
 						// Test adapter configuration
     				
 						// Preamble
 						v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
 						
+						if (p_resourceType!=int16){	//ResourceType != RemoteCSE
+							
 						f_cse_preamble_subscriptionVerification(v_notifyHandler, v_aeIndex, v_ae2Index, p_requestPrimitive, p_resourceType);
 						
 						v_resourceIndex := f_cse_createResource(p_resourceType, p_requestPrimitive);//under the CSEBase resource
     									
+						} else {	//ResourceType = RemoteCSE
+													
+							v_resourceIndex := f_cse_registerRemoteCse(p_requestPrimitive);
+								
+						}
+						
 						// Test Body
 						mcaPort.send(m_request(m_retrieveResource(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_aeIndex))));//from AE ID
 
@@ -4863,7 +5276,7 @@ module OneM2M_Testcases {
 						f_cse_postamble_deleteResources();
 						
 						// Tear down
-						f_cf01Down();
+						f_cf02Down();
 						
 					}//end f_CSE_DMR_RET_BV_013
     				
@@ -5018,6 +5431,16 @@ module OneM2M_Testcases {
 						f_CSE_DMR_RET_BV_015(int9, m_createGroupBase, v_contentResponse);//Group
 					}
 				
+					testcase TC_CSE_DMR_RET_BV_015_09() runs on CseTester system CseSystem {
+						// Local variables
+						var template PrimitiveContent v_contentResponse;
+
+						v_contentResponse.remoteCSE_optional := m_contentRemoteCSE_allOmit;
+						v_contentResponse.remoteCSE_optional.parentID := ?;
+		
+						f_CSE_DMR_RET_BV_015(int16, m_createRemoteCSEBase, v_contentResponse);//RemoteCSE
+					}
+				
 					testcase TC_CSE_DMR_RET_BV_015_11() runs on CseTester system CseSystem {
 						// Local variables
 						var template PrimitiveContent v_contentResponse;
@@ -5052,17 +5475,23 @@ module OneM2M_Testcases {
 						// Test control
     				
 						// Test component configuration
-						f_cf01Up();
+						f_cf02Up();
     				
 						// Test adapter configuration
     				
 						// Preamble
 						v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);	
 						
+						if (p_resourceType!=int16){	//ResourceType != RemoteCSE
+							
 						f_cse_preamble_subscriptionVerification(v_notifyHandler, v_aeIndex, v_ae2Index, p_requestPrimitive, p_resourceType);
 						
 						v_resourceIndex := f_cse_createResource(p_resourceType, p_requestPrimitive);//under the CSEBase resource
     									
+						} else {
+							v_resourceIndex := f_cse_registerRemoteCse(p_requestPrimitive);
+						}
+						
 						// Test Body
 						mcaPort.send(m_request(m_retrieveResourceAttributeToOption(f_getResourceAddress(v_resourceIndex) & v_attribute, f_getOriginator(v_aeIndex))));//from AE ID
 
@@ -5089,7 +5518,7 @@ module OneM2M_Testcases {
 						f_cse_postamble_deleteResources();
 						
 						// Tear down
-						f_cf01Down();
+						f_cf02Down();
     				
 					}//end f_CSE_DMR_RET_BV_015
     				
@@ -5138,6 +5567,16 @@ module OneM2M_Testcases {
 						f_CSE_DMR_RET_BV_016(int9, m_createGroupBase, v_contentResponse);//Group
 					}
 				
+					testcase TC_CSE_DMR_RET_BV_016_09() runs on CseTester system CseSystem {
+						// Local variables
+						var template PrimitiveContent v_contentResponse;
+					
+						v_contentResponse.remoteCSE_optional := m_contentRemoteCSE_allOmit;
+						v_contentResponse.remoteCSE_optional.parentID := ?;
+								
+						f_CSE_DMR_RET_BV_016(int16, m_createRemoteCSEBase, v_contentResponse);//RemoteCSE
+					}
+				
 					testcase TC_CSE_DMR_RET_BV_016_11() runs on CseTester system CseSystem {
 						// Local variables
 						var template PrimitiveContent v_contentResponse;
@@ -5172,18 +5611,23 @@ module OneM2M_Testcases {
 						// Test control
     				
 						// Test component configuration
-						f_cf01Up();
+						 f_cf02Up();
     				
 						// Test adapter configuration
     				
 						// Preamble
 						v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
 						
+						if (p_resourceType!=int16){	//ResourceType != RemoteCSE
+	
 						f_cse_preamble_subscriptionVerification(v_notifyHandler, v_aeIndex, v_ae2Index, p_requestPrimitive, p_resourceType);
 						
 						v_resourceIndex := f_cse_createResource(p_resourceType, p_requestPrimitive);//under the CSEBase resource
     									
-						// Test Body
+						}else{
+							v_resourceIndex := f_cse_registerRemoteCse(p_requestPrimitive);
+						}
+						
 						mcaPort.send(m_request(m_retrieveResourceAttributeContentOption(f_getResourceAddress(v_resourceIndex) ,	{"pi"}, f_getOriginator(v_aeIndex))));//from AE ID
 
 						tc_ac.start;
@@ -5209,7 +5653,7 @@ module OneM2M_Testcases {
 						f_cse_postamble_deleteResources();
 						
 						// Tear down
-						f_cf01Down();
+						f_cf02Down();
     				
 					}//end f_CSE_DMR_RET_BV_016
     				
@@ -5262,6 +5706,17 @@ module OneM2M_Testcases {
 						f_CSE_DMR_RET_BV_017(int9, m_createGroupBase, v_contentResponse);//Group
 					}
 				
+					testcase TC_CSE_DMR_RET_BV_017_09() runs on CseTester system CseSystem {
+						// Local variables
+						var template PrimitiveContent v_contentResponse;
+
+						v_contentResponse.remoteCSE_optional := m_contentRemoteCSE_allOmit;
+						v_contentResponse.remoteCSE_optional.parentID := ?;
+						v_contentResponse.remoteCSE_optional.creationTime := ?;
+		
+						f_CSE_DMR_RET_BV_017(int16, m_createRemoteCSEBase, v_contentResponse);//RemoteCSE
+					}
+				
 					testcase TC_CSE_DMR_RET_BV_017_11() runs on CseTester system CseSystem {
 						// Local variables
 						var template PrimitiveContent v_contentResponse;
@@ -5298,18 +5753,23 @@ module OneM2M_Testcases {
 						// Test control
     				
 						// Test component configuration
-						f_cf01Up();
+						 f_cf02Up();
     				
 						// Test adapter configuration
     				
 						// Preamble
 						v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
 						
+						if (p_resourceType!=int16){	//ResourceType != RemoteCSE
+	
 						f_cse_preamble_subscriptionVerification(v_notifyHandler, v_aeIndex, v_ae2Index, p_requestPrimitive, p_resourceType);
 						
 						v_resourceIndex := f_cse_createResource(p_resourceType, p_requestPrimitive);//under the CSEBase resource
     									
-						// Test Body
+						}else{
+							v_resourceIndex := f_cse_registerRemoteCse(p_requestPrimitive);
+						}
+						
 						mcaPort.send(m_request(m_retrieveResourceAttributeContentOption(f_getResourceAddress(v_resourceIndex) ,
 																						{"pi", "ct"}, f_getOriginator(v_aeIndex))));//from AE ID
 
@@ -5336,7 +5796,7 @@ module OneM2M_Testcases {
 						f_cse_postamble_deleteResources();
 						
 						// Tear down
-						f_cf01Down();
+						f_cf02Down();
     				
 					}//end f_CSE_DMR_RET_BV_017
     				
@@ -5369,6 +5829,12 @@ module OneM2M_Testcases {
 						f_CSE_DMR_RET_BO_018(int9, m_createGroupBase);//Group
 					}
 				
+					testcase TC_CSE_DMR_RET_BO_018_09() runs on CseTester system CseSystem {
+						// Local variables
+
+						f_CSE_DMR_RET_BO_018(int16, m_createRemoteCSEBase);//RemoteCSE
+					}
+				
 					testcase TC_CSE_DMR_RET_BO_018_11() runs on CseTester system CseSystem {
 						// Local variables
 	
@@ -5395,18 +5861,23 @@ module OneM2M_Testcases {
 						// Test control
     				
 						// Test component configuration
-						f_cf01Up();
+						 f_cf02Up();
     				
 						// Test adapter configuration
     				
 						// Preamble
 						v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
 						
+						if (p_resourceType!=int16){	//ResourceType != RemoteCSE
+	
 						f_cse_preamble_subscriptionVerification(v_notifyHandler, v_aeIndex, v_ae2Index, p_requestPrimitive, p_resourceType);
 						
 						v_resourceIndex := f_cse_createResource(p_resourceType, p_requestPrimitive);//under the CSEBase resource
     									
-						// Test Body
+						}else{
+							v_resourceIndex := f_cse_registerRemoteCse(p_requestPrimitive);
+						}
+						
 						mcaPort.send(m_request(m_retrieveResourceAttributeContentOption(f_getResourceAddress(v_resourceIndex),
 																						{"lbl"}, f_getOriginator(v_aeIndex))));//from AE ID
 
@@ -5414,6 +5885,7 @@ module OneM2M_Testcases {
 						alt {
 							[] mcaPort.receive(mw_response(mw_responsePrimitive(int4004))) -> value v_response {
 								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Retrieved attribute does not exist");
 							}
 							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
 								tc_ac.stop;
@@ -5432,7 +5904,7 @@ module OneM2M_Testcases {
 						f_cse_postamble_deleteResources();
 						
 						// Tear down
-						f_cf01Down();
+						f_cf02Down();
     				
 					}//end f_CSE_DMR_RET_BO_018
     				
@@ -5464,6 +5936,12 @@ module OneM2M_Testcases {
 						f_CSE_DMR_RET_BO_019(int9, m_createGroupBase);//Group
 					}					
 				
+					testcase TC_CSE_DMR_RET_BO_019_09() runs on CseTester system CseSystem {
+						// Local variables
+
+						f_CSE_DMR_RET_BO_019(int16, m_createRemoteCSEBase);//RemoteCSE
+					}				
+				
 					testcase TC_CSE_DMR_RET_BO_019_11() runs on CseTester system CseSystem {
 						// Local variables
 	
@@ -5490,18 +5968,23 @@ module OneM2M_Testcases {
 						// Test control
     				
 						// Test component configuration
-						f_cf01Up();
+						 f_cf02Up();
     				
 						// Test adapter configuration
     				
 						// Preamble
 						v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
 						
+						if (p_resourceType!=int16){	//ResourceType != RemoteCSE
+	
 						f_cse_preamble_subscriptionVerification(v_notifyHandler, v_aeIndex, v_ae2Index, p_requestPrimitive, p_resourceType);
 						
 						v_resourceIndex := f_cse_createResource(p_resourceType, p_requestPrimitive);//under the CSEBase resource
     									
-						// Test Body
+						}else{
+							v_resourceIndex := f_cse_registerRemoteCse(p_requestPrimitive);
+						}
+						
 						mcaPort.send(m_request(m_retrieveResourceAttributeContentOption(f_getResourceAddress(v_resourceIndex),
 																						{"lbl", "at"}, f_getOriginator(v_aeIndex))));//from AE ID
 
@@ -5509,6 +5992,7 @@ module OneM2M_Testcases {
 						alt {
 							[] mcaPort.receive(mw_response(mw_responsePrimitive(int4004))) -> value v_response {
 								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Retrieved attribute does not exist");
 							}
 							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
 								tc_ac.stop;
@@ -5527,7 +6011,7 @@ module OneM2M_Testcases {
 						f_cse_postamble_deleteResources();
 						
 						// Tear down
-						f_cf01Down();
+						f_cf02Down();
     				
 					}//end f_CSE_DMR_RET_BO_019
     				
@@ -10644,6 +11128,347 @@ module OneM2M_Testcases {
             
         } // end group Group_Managment
 		
+        group Discovery {
+        	
+        	group g_CSE_DIS_BV_001{
+        		testcase TC_CSE_DIS_BV_001() runs on CseTester system CseSystem {
+        			// Local variables
+					var MsgIn v_response;
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex := -1;
+					var RequestPrimitive v_request;
+					var integer v_childResourceIndex := -1;
+					const ResourceType c_containerResourceType := int3; 
+					
+					// Test control
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//AE1 is registred;
+					
+					v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex);
+					v_childResourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_resourceIndex);
+					v_request := valueof(m_retrieveResourceFilterUsageOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int1));
+					mcaPort.send(m_request(v_request));
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responseDiscovery)){
+							tc_ac.stop;
+							setverdict(pass, testcasename() & ": URI List Representation available");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) { 
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Wrong responseStatusCode while retrieving resource");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { 
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while retrieving resource");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, testcasename() & ": No answer while retrieving resource");
+						}
+					 }	
+    								
+					// Postamble
+					f_cse_postamble_deleteResources();
+					
+					// Tear down
+					f_cf01Down();
+        		} // end TC_CSE_DIS_BV_001
+        		
+        	} //end group g_CSE_DIS_BV_001
+        	
+        	group g_CSE_DIS_BV_003
+        	{
+        		testcase TC_CSE_DIS_BV_003() runs on CseTester system CseSystem {
+					// Local variables
+					var MsgIn v_response;
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex := -1;
+					var RequestPrimitive v_request;
+					var integer v_childResourceIndex := -1;
+					const ResourceType c_containerResourceType := int3; 
+				
+					// Test control
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//AE1 is registred;
+				
+					v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex);
+					v_childResourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_resourceIndex);
+					v_request := valueof(m_retrieveResourceFilterUsageOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int1));
+					mcaPort.send(m_request(v_request));
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responseDiscovery)) -> value v_response {
+							tc_ac.stop;
+							if(sizeof(v_response.primitive.responsePrimitive.primitiveContent.uRIList) == 0){
+							  setverdict(pass, testcasename() & ": No Content is present");	
+							}
+							else
+							{
+							  setverdict(fail, testcasename() & ": Wrong content available in URIList element");
+							}
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) { 
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Wrong responseStatusCode while retrieving resource");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { 
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while retrieving resource");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, testcasename() & ": No answer while retrieving resource");
+						}
+					 }	
+								
+					// Postamble
+					f_cse_postamble_deleteResources();
+				
+					// Tear down
+					f_cf01Down();
+				} // end TC_CSE_DIS_BV_003
+        	} //end group g_CSE_DIS_BV_003
+        	
+        	group g_CSE_DIS_BV_004
+        	{
+				testcase TC_CSE_DIS_BV_004() runs on CseTester system CseSystem {
+					// Local variables
+					var MsgIn v_response;
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex := -1;
+					var RequestPrimitive v_request;
+					var integer v_childResourceIndex := -1;
+					const ResourceType c_containerResourceType := int3; 
+					
+					// Test control
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//AE1 is registred;
+					
+					v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex);
+					v_childResourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_resourceIndex);
+					v_request := valueof(m_retrieveResourceDiscResTypeFilterUsageOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int2, int1));
+					mcaPort.send(m_request(v_request));
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responseDiscovery)) -> value v_response {
+							tc_ac.stop;
+							if (f_isNonHierarchical(v_response.primitive.responsePrimitive.primitiveContent.uRIList[0])) {
+							  setverdict(pass, testcasename() & ": Non-hierarchical address form present in URIList element");
+							} else {
+							  setverdict(fail, testcasename() & ": Non-hierarchical address form absent in URIList representation"); 
+							}
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) { 
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Wrong responseStatusCode while retrieving resource");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { 
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while retrieving resource");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, testcasename() & ": No answer while retrieving resource");
+						}
+					 }	
+    								
+					// Postamble
+					f_cse_postamble_deleteResources();
+					
+					// Tear down
+					f_cf01Down();
+				} // end TC_CSE_DIS_BV_004
+				
+        	} //end group g_CSE_DIS_BV_004
+        	
+			group g_CSE_DIS_BO_005{
+				testcase TC_CSE_DIS_BO_005() runs on CseTester system CseSystem {
+					// Local variables
+					var integer v_aeIndex := -1;
+					var integer v_resourceIndex := -1;
+					var RequestPrimitive v_request;
+					var integer v_childResourceIndex := -1;
+					var integer v_acpAuxIndex := -1;
+					const ResourceType c_containerResourceType := int3; 
+					
+					// Test control
+					if(not(PICS_ACP_SUPPORT)) {
+						log(testcasename() & ":AccessControlPolicy support is required for executing this test case");
+						stop;
+					}
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_acpAuxIndex := f_cse_preamble_createAcpAux(-, int31);//c_CRUDN)
+					
+					v_aeIndex := f_cse_preamble_registerAe({f_getResourceId(vc_resourcesList[v_acpAuxIndex].resource)});//AE1 is registred;
+					
+					v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex);
+					v_childResourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_resourceIndex);
+					v_request := valueof(m_retrieveResourceFilterUsageOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex), int1));
+					mcaPort.send(m_request(v_request));
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int4103))) {
+							tc_ac.stop;
+							setverdict(pass, testcasename() & ": Access denied to discovery operation for resource " & f_getResourceAddress(v_resourceIndex));
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Wrong response status code while discovering " & f_getResourceAddress(v_resourceIndex) & " without having privileges");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Discovering " & f_getResourceAddress(v_resourceIndex) & " without having privileges");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, testcasename() & ": No answer while discovering resource");
+						}
+					 }	
+    								
+					// Postamble
+					f_cse_postamble_deleteResources();
+					
+					// Tear down
+					f_cf01Down();
+				} // end TC_CSE_DIS_BO_005
+        		
+			} //end group g_CSE_DIS_BO_005
+        	
+			group g_CSE_DIS_BO_006
+			{
+					testcase TC_CSE_DIS_BO_006() runs on CseTester system CseSystem {
+						// Local variables
+						var MsgIn v_response;
+						var integer v_aeIndex := -1;
+						var integer v_resourceIndex := -1;
+						var RequestPrimitive v_request;
+						const ResourceType c_containerResourceType := int3; 
+						var XSD.ID v_resourceId := "nonexisting";
+					
+						// Test control
+
+						// Test component configuration
+						f_cf01Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						v_aeIndex := f_cse_preamble_registerAe();//AE1 is registred;
+						
+						if(PX_ADDRESSING_METHOD == e_nonHierarchical and (PX_PRIMITIVE_SCOPE == e_cseRelative)) {
+							v_request := valueof(m_retrieveResourceFilterUsageOption(v_resourceId, f_getOriginator(v_aeIndex), int1));
+						} else {
+							v_request := valueof(m_retrieveResourceFilterUsageOption(f_getResourceAddress(v_aeIndex) & "/" & v_resourceId, f_getOriginator(v_resourceIndex), int1));
+						}
+					
+						mcaPort.send(m_request(v_request));
+						tc_ac.start;
+						alt {
+						
+							[] mcaPort.receive(mw_response(mw_responsePrimitive(int4004))) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Resource not found");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { 
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Wrong response status code while retrieving resource");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) { 
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Wrong response while retrieving resource");
+							}
+							[] tc_ac.timeout {
+								setverdict(fail, testcasename() & ": No answer while retrieving resource");
+							}
+						 }	
+    								
+						// Postamble
+						f_cse_postamble_deleteResources();
+					
+						// Tear down
+						f_cf01Down();
+					} // end TC_CSE_DIS_BO_006
+				
+			} //end group g_CSE_DIS_BO_006
+			
+			group g_CSE_DIS_BI_007
+			{
+					testcase TC_CSE_DIS_BI_007() runs on CseTester system CseSystem {
+						// Local variables
+						var MsgIn v_response;
+						var integer v_aeIndex := -1;
+						var integer v_resourceIndex := -1;
+						var RequestPrimitive v_request;
+						var CseTester v_notifyHandler;
+						var integer v_ae2Index := -1;
+						var integer v_childResourceIndex := -1;
+						const ResourceType c_containerResourceType := int3; 
+					
+						// Test control
+
+						// Test component configuration
+						f_cf01Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						v_aeIndex := f_cse_preamble_registerAe();//AE1 is registred;
+					    
+						v_resourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_aeIndex);
+						v_childResourceIndex := f_cse_createResource(c_containerResourceType, m_createContainerBase, v_resourceIndex); 
+						v_request := valueof(m_retrieveResourceInvalidFormatOption(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex)));
+						mcaPort.send(m_request(v_request));
+						tc_ac.start;
+						alt {
+						
+							[] mcaPort.receive(mw_response(mw_responsePrimitive(int4102))) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Contents Unacceptable");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { 
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Wrong response status code while retrieving resource");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) { 
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Wrong response while retrieving resource");
+							}
+							[] tc_ac.timeout {
+								setverdict(fail, testcasename() & ": No answer while retrieving resource");
+							}
+						 }	
+    								
+						// Postamble
+						f_cse_postamble_deleteResources();
+					
+						// Tear down
+						f_cf01Down();
+					} // end TC_CSE_DIS_BI_007	
+			} //end group g_CSE_DIS_BI_007
+				
+        } //end group Group Discovery
+		
 		group Subscription_And_Notification {
 	
 			group g_CSE_SUB_BV_001{