diff --git a/LibOneM2M/OneM2M_Pics.ttcn b/LibOneM2M/OneM2M_Pics.ttcn
index defde0847977b7c182f9bad50d4aa56bc808a90e..0a81828d4123d0edcb590c117917ea7a9688b04e 100644
--- a/LibOneM2M/OneM2M_Pics.ttcn
+++ b/LibOneM2M/OneM2M_Pics.ttcn
@@ -18,6 +18,7 @@ module OneM2M_Pics {
      * @see  oneM2M TS-0017 A.5.5.1/1
      */
 	modulepar boolean PICS_ACP_SUPPORT := true;
+	modulepar boolean PICS_IN_CSE := true;	
 	
 	
 }  // end of module
diff --git a/LibOneM2M/OneM2M_Pixits.ttcn b/LibOneM2M/OneM2M_Pixits.ttcn
index da172fcf0ec453a51f84e237c65d84562462f048..4f3a976989c301a01ed54fa71a0367f7f900ed57 100644
--- a/LibOneM2M/OneM2M_Pixits.ttcn
+++ b/LibOneM2M/OneM2M_Pixits.ttcn
@@ -77,4 +77,7 @@ module OneM2M_Pixits {
 	modulepar Labels PX_LABELS := {"VALUE_1"}; 	
 	modulepar boolean PX_IS_LOC_CONTAINER	:= false;//default //set it to true when the container is created to store location information
 	
+	modulepar PoaList PX_POA := {""};
+	modulepar ResourceTypeList PX_SRT := {int1, int2, int3, int4};
+	
 }  // end of module
diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 3a7681e8c549b95d77ea53a99ccb1963a57b19ba..68e7321920ceaaceb3921e84b76471f84effd32b 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -263,6 +263,14 @@ module OneM2M_Templates {
 				primitiveContent:= {group_optional := m_contentUpdateGroup}
 			};
 			
+			/**
+			 * @desc Base UPDATE request primitive for CSEBase resource
+			 */
+			template (value) RequestPrimitive m_updateCSEBaseBase modifies m_update := {
+				requestIdentifier := "m_updateGroup" & f_rnd(1, 1000000),
+				primitiveContent:= {cSEBase_optional := m_contentUpdateCSEBase}
+			};
+			
 			/**
 			 * @desc Base UPDATE request primitive for Schedule resource
 			 */
@@ -438,11 +446,20 @@ module OneM2M_Templates {
         		primitiveContent := {accessControlPolicy_optional := m_contentCreateAcp (p_acpName, p_acor, p_allowedOperations)}
         	};
         	
-			template (value) RequestPrimitive m_createCSEBase (in ServiceSubscribedAppRule p_serviceSubscribedAppRule) modifies m_create := {
+			/*template (value) RequestPrimitive m_createCSEBase (in ServiceSubscribedAppRule p_serviceSubscribedAppRule) modifies m_create := {
 				from_ := PX_SUPER_USER,
 				requestIdentifier := testcasename() & "-m_createCSE" & f_rnd(1, 1000000),
 				resourceType := int1,//FIXME Is this the value for CSEBase? In any case, this template is not used at all
 				primitiveContent := {cSEBase_optional := m_contentCreateCSEBase (p_serviceSubscribedAppRule)}
+			};*/
+			
+			/**
+			 * @desc Base CREATE request primitive for CSEBase resource
+			 */
+			template (value) RequestPrimitive m_createCSEBaseBase modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createContainer" & f_rnd(1, 1000000),
+				resourceType := int5,
+				primitiveContent := {cSEBase_optional := m_contentCreateCSEBase}
 			};
         	
        	
@@ -1016,7 +1033,7 @@ module OneM2M_Templates {
 			accessControlObjectDetails_list := {}
 		}
     	
-		template (value) CSEBase_optional m_contentCreateCSEBase (in template (value) ServiceSubscribedAppRule p_serviceSubscribedAppRule) := {
+		/*template (value) CSEBase_optional m_contentCreateCSEBase (in template (value) ServiceSubscribedAppRule p_serviceSubscribedAppRule) := {
 			resourceName := omit,
 			resourceType := omit,
 			resourceID := omit,
@@ -1036,7 +1053,29 @@ module OneM2M_Templates {
 				  serviceSubscribedAppRule := p_serviceSubscribedAppRule
 				}}
 			}
-		}
+		}*/
+		
+		/**
+		 * @desc Base primitiveContent for CREATE operation for CSEBase resource
+		 * @param p_name Resource name
+		 */
+		template (value) CSEBase_optional m_contentCreateCSEBase (in template (omit) XSD.String p_name := c_defaultResourceName):= {
+			resourceName := p_name,//O
+			resourceType := omit,
+			resourceID := omit,
+			parentID := omit,
+			creationTime := omit,
+			lastModifiedTime := omit,
+			labels := omit,
+			accessControlPolicyIDs := omit,
+			cseType := omit,
+			cSE_ID := omit,
+			supportedResourceType := omit,
+			pointOfAccess := omit,
+			nodeLink := omit,
+			e2eSecInfo := omit, 
+			choice := omit
+		};
     	
     	/**
     	 * @desc Base primitiveContent for CREATE operation for Group resource
@@ -1615,6 +1654,28 @@ module OneM2M_Templates {
 			choice := omit//NP
 
 		};
+		
+		/**
+		 * @desc Base primitiveContent for UPDATE operation for CSEBase resource
+		 */
+		template (value) CSEBase_optional m_contentUpdateCSEBase := {
+			resourceName := omit,
+			resourceType := omit,
+			resourceID := omit,
+			parentID := omit,
+			creationTime := omit,
+			lastModifiedTime := omit,
+			labels := omit,
+			accessControlPolicyIDs := omit,
+			cseType := omit,
+			cSE_ID := omit,
+			supportedResourceType := omit,
+			pointOfAccess := omit,
+			nodeLink := omit,
+			e2eSecInfo := omit, 
+			choice := omit
+
+		};
     	
 		/**
 		 * @desc Base primitiveContent for UPDATE operation for PollingChannel resource
@@ -2538,6 +2599,28 @@ module OneM2M_Templates {
 				notificationEventType := ?
 			}
 		};
+		
+		template CSEBase_optional mw_contentCSEBaseBase := {
+			resourceName := ?,//M
+			resourceType := ?,//M
+			resourceID := ?,//M
+			parentID := ?,//M
+			creationTime := ?,//M
+			lastModifiedTime := ?,//M
+			labels := *,//O
+			accessControlPolicyIDs := *,//O
+			cseType := *,//O
+			cSE_ID := ?,//M
+			supportedResourceType := ?,//M
+			pointOfAccess := ?,//M
+			nodeLink := *,//O
+			e2eSecInfo := *,//O			
+			choice := *//O
+		};
+
+		template CSEBase_optional mw_contentCSEBase_rc1 modifies mw_contentCSEBaseBase := {
+			choice := omit	//O
+		}
 
 
 	}//end group responseContent
diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn
index ed3746f10f21e04277c575d9f2b3644ffe1cea08..e73ab150e9699b197d8e165f4bb81283aea1100c 100644
--- a/OneM2M_Testcases.ttcn
+++ b/OneM2M_Testcases.ttcn
@@ -471,6 +471,331 @@ module OneM2M_Testcases {
 				f_cf02Down();
 					
 			}
+			
+			group Create{
+				
+				testcase TC_CSE_REG_CRE_BI_001() runs on CseTester system CseSystem {
+    				
+					// Local variables
+					var MsgIn v_response;
+					var RequestPrimitive v_request;
+					var integer v_aeIndex := -1;
+					var ResourceType v_resourceType := int5;	//CSEBase
+						   
+					// Test control
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
+
+					// Test Body
+					v_request := f_getCreateRequestPrimitive(v_resourceType, m_createCSEBaseBase, v_aeIndex); 
+	
+					mcaPort.send(m_request(v_request));
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int4005))) {
+							tc_ac.stop;
+							setverdict(pass, testcasename() & ": CSEBase creation rejected.");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4005))) -> value v_response{
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while creating CSEBase with status code " & int2str(enum2int(v_response.primitive.responsePrimitive.responseStatusCode)));
+						}
+						[] tc_ac.timeout {
+							setverdict(inconc, testcasename() & ": No answer while creating CSEBase");
+						}
+					}	
+				
+					// Postamble
+					f_cse_postamble_deleteResources();
+
+					// Tear down
+					f_cf01Down();
+
+				}//end f_CSE_DMR_CRE_BV_012
+			
+			}	//end group Create
+			
+			group Retrieve{
+				
+				testcase TC_CSE_REG_RET_BV_001() runs on CseTester system CseSystem {
+    				
+					// Local variables
+					var MsgIn v_response;
+					var RequestPrimitive v_request;
+					var integer v_aeIndex := -1;
+					var template PrimitiveContent v_contentResponse;
+	    										   
+					// Test control
+	
+					// Test component configuration
+					f_cf01Up();
+	
+					// Test adapter configuration
+	
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
+					
+					// Test Body
+					v_contentResponse.cSEBase_optional := mw_contentCSEBase_rc1;
+					
+					mcaPort.send(m_request(m_retrieveResource(f_getResourceAddress(), f_getOriginator(v_aeIndex))));
+	
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))) -> value v_response {
+							tc_ac.stop;
+							setverdict(pass, testcasename() & ": Response OK for retrieving");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error, resource elements provided not matching expected resource elements");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while retrieving resource");
+						}
+						[] tc_ac.timeout {
+							setverdict(inconc, testcasename() & ": No answer while retrieving resource");
+						}
+					}	
+				
+					// Postamble
+					f_cse_postamble_deleteResources();
+	
+					// Tear down
+					f_cf01Down();
+	
+				}//end TC_CSE_REG_RET_BV_005
+				
+				testcase TC_CSE_REG_RET_BV_005() runs on CseTester system CseSystem {
+    				
+					// Local variables
+					var MsgIn v_response;
+					var RequestPrimitive v_request;
+					var integer v_aeIndex := -1;
+					var template PrimitiveContent v_contentResponse;
+								   
+					// Test control
+					if(not(PICS_IN_CSE)) {
+						setverdict(inconc, testcasename() & ": IUT shall be IN-CSE to run this test case");
+						stop;
+					}
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
+	
+					// Test Body
+					v_contentResponse.cSEBase_optional := mw_contentCSEBase_rc1;
+	
+					mcaPort.send(m_request(m_retrieveResource(f_getResourceAddress(), f_getOriginator(v_aeIndex))));
+
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))) -> value v_response {
+							tc_ac.stop;
+							if (ispresent(v_response.primitive.responsePrimitive.primitiveContent.cSEBase_optional.cseType)){
+								if (v_response.primitive.responsePrimitive.primitiveContent.cSEBase_optional.cseType==int1){
+									setverdict(pass, testcasename() & ": cseType attribute is set to 1 (IN_CSE)");
+								}else{
+									setverdict(fail, testcasename() & ": Error, cseType attribute is set to " & int2str(enum2int(v_response.primitive.responsePrimitive.primitiveContent.cSEBase_optional.cseType)));
+								}
+							}else{
+								setverdict(fail, testcasename() & ": Error, cseType attribute is not present");
+							}
+							
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error, resource elements provided not matching expected resource elements");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while retrieving resource");
+						}
+						[] tc_ac.timeout {
+							setverdict(inconc, testcasename() & ": No answer while retrieving resource");
+						}
+					}	
+
+					// Postamble
+					f_cse_postamble_deleteResources();
+
+					// Tear down
+					f_cf01Down();
+
+				}//end TC_CSE_REG_RET_BV_005
+				
+				testcase TC_CSE_REG_RET_BV_006() runs on CseTester system CseSystem {
+    				
+					// Local variables
+					var MsgIn v_response;
+					var RequestPrimitive v_request;
+					var integer v_aeIndex := -1;
+					var template PrimitiveContent v_contentResponse;
+				   
+					// Test control
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
+
+					// Test Body
+					v_contentResponse.cSEBase_optional := mw_contentCSEBase_rc1;
+
+					mcaPort.send(m_request(m_retrieveResource(f_getResourceAddress(), f_getOriginator(v_aeIndex))));
+
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))) -> value v_response {
+							tc_ac.stop;
+							
+							if (v_response.primitive.responsePrimitive.primitiveContent.cSEBase_optional.supportedResourceType==PX_SRT){
+								setverdict(pass, testcasename() & ": supportedResourceTypes attribute is set according to PX_SRT");
+							}else{
+								setverdict(fail, testcasename() & ": supportedResourceTypes attribute is not set according to PX_SRT");
+							}
+							
+							if (v_response.primitive.responsePrimitive.primitiveContent.cSEBase_optional.pointOfAccess==PX_POA){
+								setverdict(pass, testcasename() & ": supportedResourceTypes attribute is set according to PX_POA");
+							}else{
+								setverdict(fail, testcasename() & ": supportedResourceTypes attribute is not set according to PX_POA");
+							}
+			
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error, resource elements provided not matching expected resource elements");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while retrieving resource");
+						}
+						[] tc_ac.timeout {
+							setverdict(inconc, testcasename() & ": No answer while retrieving resource");
+						}
+					}	
+
+					// Postamble
+					f_cse_postamble_deleteResources();
+
+					// Tear down
+					f_cf01Down();
+
+				}//end TC_CSE_REG_RET_BV_006
+			
+			}	//end group Retrieve
+			
+			group Update{
+			
+				testcase TC_CSE_REG_UPD_BI_001() runs on CseTester system CseSystem {
+					// Local variables
+					var MsgIn v_response;
+					var RequestPrimitive v_request;
+					var integer v_aeIndex := -1;
+					var Labels v_labels_1 := {"VALUE_1"};
+					var template RequestPrimitive v_updateRequest := m_updateCSEBaseBase;
+   
+					// Test control
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
+
+					// Test Body
+					v_updateRequest.primitiveContent.cSEBase_optional.labels := v_labels_1;
+					v_request := f_getUpdateRequestPrimitive(int5, v_aeIndex, v_updateRequest);
+					v_request.to_ := f_getResourceAddress();
+					
+					mcaPort.send(m_request(v_request));
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int4005))) {
+							tc_ac.stop;
+							setverdict(pass, testcasename() & ": CSEBase update rejected.");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4005))) -> value v_response{
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while updating CSEBase with status code " & int2str(enum2int(v_response.primitive.responsePrimitive.responseStatusCode)));
+						}
+						[] tc_ac.timeout {
+							setverdict(inconc, testcasename() & ": No answer while updating CSEBase");
+						}
+					}					    
+
+					// Postamble
+					f_cse_postamble_deleteResources();
+
+					// Tear down
+					f_cf01Down();
+
+				}//end TC_CSE_REG_UPD_BI_001			
+
+			}// end group Update
+			
+			group Delete{
+			
+				testcase TC_CSE_REG_DEL_BI_001() runs on CseTester system CseSystem {
+					// Local variables
+					var MsgIn v_response;
+					var RequestPrimitive v_request;
+					var integer v_aeIndex := -1;
+			   
+					// Test control
+
+					// Test component configuration
+					f_cf01Up();
+
+					// Test adapter configuration
+
+					// Preamble
+					v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
+		
+					// Test Body
+					v_request := valueof(m_deleteRequest(f_getResourceAddress()));
+					mcaPort.send(m_request(v_request));
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int4005))) {
+							tc_ac.stop;
+							setverdict(pass, testcasename() & ": CSEBase deletion rejected.");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int4005))) -> value v_response{
+							tc_ac.stop;
+							setverdict(fail, testcasename() & ": Error while deleting CSEBase with status code " & int2str(enum2int(v_response.primitive.responsePrimitive.responseStatusCode)));
+						}
+						[] tc_ac.timeout {
+							setverdict(inconc, testcasename() & ": No answer while deleting CSEBase");
+						}
+					}					    
+	
+					// Postamble
+					f_cse_postamble_deleteResources();
+
+					// Tear down
+					f_cf01Down();
+		
+				}//end TC_CSE_REG_DEL_BI_001			
+			
+			}// end group Delete
 	  	  	
 		}//end Registration
 		
@@ -1134,7 +1459,7 @@ module OneM2M_Testcases {
 						v_childResourceIndex := f_cse_createResource(valueof(p_childResourceType), p_childRequestPrimitive, v_resourceIndex);				
 					}				
     									
-					// Test Bodyi
+					// Test Body
 					v_request := valueof(m_retrieveResource(f_getResourceAddress(v_resourceIndex), f_getOriginator(v_resourceIndex)));
 					v_request.resultContent := int6;//Child resource references
 					mcaPort.send(m_request(v_request));