diff --git a/OneM2M_TestControl.ttcn b/OneM2M_TestControl.ttcn
index 4596e1f6fb3804b8278cfa8bb62351f361205ca1..3efaae2752ce431787d13f5f1d7cc201a40f3c86 100644
--- a/OneM2M_TestControl.ttcn
+++ b/OneM2M_TestControl.ttcn
@@ -14,7 +14,7 @@
 module OneM2M_TestControl {
 
 
-	import from OneM2M_Testcases all;	
+	import from OneM2M_Testcases_CSE all;	
 
 	control {
 		execute(TC_CSE_GEN_CRE_001_CSR());
@@ -262,11 +262,11 @@ module OneM2M_TestControl {
 		execute(TC_CSE_GMG_CRE_005());
 		execute(TC_CSE_GMG_CRE_006());
 		execute(TC_CSE_GMG_CRE_007());
-		execute(TC_CSE_GMG_CRE_008_CRE());
+		/*execute(TC_CSE_GMG_CRE_008_CRE());
 		execute(TC_CSE_GMG_CRE_008_UPD());
 		execute(TC_CSE_GMG_CRE_008_RET());
 		execute(TC_CSE_GMG_CRE_008_DEL());
-		execute(TC_CSE_GMG_CRE_009());
+		execute(TC_CSE_GMG_CRE_009());*/
 		execute(TC_CSE_GMG_UPD_001());
 		execute(TC_CSE_GMG_UPD_002());
 		execute(TC_CSE_GMG_UPD_003());
diff --git a/OneM2M_Testcases_CSE.ttcn b/OneM2M_Testcases_CSE.ttcn
index e5ac3f468e8111eefe0fe776f0394341ce04b5ce..004f5647d66ec70cbb1aea92d8ba5772b4f22163 100644
--- a/OneM2M_Testcases_CSE.ttcn
+++ b/OneM2M_Testcases_CSE.ttcn
@@ -874,10 +874,9 @@ module OneM2M_Testcases_CSE {
 					f_cf01Up();
 	                
 					//Preamble
-					v_cseBaseIndex := f_cse_preamble_createServiceSubscribedProfile({"S*"}); //c_CRUDNDi);
-					
+
 					//Test Body
-					v_request := valueof(m_createAe(PX_APP_ID, omit, omit));	
+					v_request := valueof(m_createAe(PX_APP_ID, omit, "SAE-ID-STEM"));	
 					
 					v_request := f_getCreateRequestPrimitive(v_resourceType, v_request, -1);
 					
@@ -949,6 +948,25 @@ module OneM2M_Testcases_CSE {
 					// Tear down
 					f_cf01Down();
 						
+				}
+				
+				/**
+				 * @desc Check that the IUT accepts a create request of <AE> resource with attributes multiplicity equals to 1 and provided preprovisioned SP_relative_AE_ID. 
+				 */
+				
+				testcase TC_CSE_REG_CRE_003() runs on CseSimu system CseSystem{
+					
+					var integer v_remoteCseIndex := -1;
+					
+					//Test Configuration
+					//f_cf02Up();
+					
+					//Preamble
+					v_remoteCseIndex := f_cse_registrationRemoteCse();
+					vc_aeSimu := AeSimu.create("AE1") alive;
+					//vc_aeSimu.start(f_a);
+					
+				
 				}
 		  	  	
 				/**
@@ -1225,6 +1243,76 @@ module OneM2M_Testcases_CSE {
 						
 				}; //end TC_CSE_REG_CRE_010
 				
+				group g_CSE_REG_CRE_013 {
+					
+					testcase TC_CSE_REG_CRE_013_AE_LBL() runs on AeSimu system CseSystem {
+						var template RequestPrimitive m_create := m_createAe(PX_APP_ID, omit, omit);
+						m_create.primitiveContent.aE.labels := {"labels"};
+					}
+					
+					testcase TC_CSE_REG_CRE_013_AE_APN() runs on AeSimu system CseSystem {
+						var template RequestPrimitive m_create := m_createAe(PX_APP_ID, omit, omit);
+						m_create.primitiveContent.aE.appName := "AeAppName";
+					}
+					
+					testcase TC_CSE_REG_CRE_013_AE_POA() runs on AeSimu system CseSystem {
+						var template RequestPrimitive m_create := m_createAe(PX_APP_ID, omit, omit);
+						m_create.primitiveContent.aE.pointOfAccess := {PX_AE1_ADDRESS};
+					}
+					
+					testcase TC_CSE_REG_CRE_013_AE_NL() runs on AeSimu system CseSystem {
+						var template RequestPrimitive m_create := m_createAe(PX_APP_ID, omit, omit);
+						m_create.primitiveContent.aE.nodeLink := "http://127.0.0.1/";
+					}
+					
+					testcase TC_CSE_REG_CRE_013_AE_OR() runs on AeSimu system CseSystem {
+						var template RequestPrimitive m_create := m_createAe(PX_APP_ID, omit, omit);
+						m_create.primitiveContent.aE.ontologyRef := "MyOntologyRef";
+					}
+				
+					function TC_CSE_REG_CRE_013(in template RequestPrimitive p_createAe) runs on AeSimu {
+					
+						//Local variables
+						var MsgIn v_response;
+						var RequestPrimitive v_request;
+						var ResourceType v_resourceType := int2;	//AE
+										   
+						// Test control
+					
+						// Test component configuration
+						f_cf01Up(); 
+						
+						//Test Body
+						
+						v_request := valueof(p_createAe);
+						v_request := f_getCreateRequestPrimitive(v_resourceType, v_request, -1);
+						
+						mcaPort.send(m_request(v_request));
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitive(int2001))) {
+								tc_ac.stop;
+								setverdict(pass, __SCOPE__ & ": AE creation successfull.");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveInverse(int2001))) -> value v_response{
+								tc_ac.stop;
+								setverdict(fail, __SCOPE__ & ": Error while creating AE with status code " & int2str(enum2int(v_response.primitive.responsePrimitive.responseStatusCode)));
+							}
+							[] tc_ac.timeout {
+								setverdict(fail, __SCOPE__ & ": No answer while creating AE");
+							}
+						}
+						
+						//Postamble
+						f_cse_postamble_deleteResources();
+						
+						// Tear down
+						f_cf01Down();
+					}
+				
+				}
+				
+				
 				group g_CSE_REG_CRE_016 {
 					
 					/**
@@ -1839,9 +1927,9 @@ module OneM2M_Testcases_CSE {
 								tc_ac.stop;
 								if ((ispresent(v_response.primitive.responsePrimitive.primitiveContent.cSEBase.cseType)) or 
 								     (ispresent(v_response.primitive.responsePrimitive.primitiveContent.cSEBase.nodeLink))){
-								  setverdict(pass, __SCOPE__ & ": Response OK for retrieving for attribute cseType or nodeLink");
+								  setverdict(pass, __SCOPE__ & ": Response OK for retrieving for attribute");
 								} else {
-								  setverdict(fail, __SCOPE__ & ": Error: Unable to retrieve attribute cseType"); 	
+								  setverdict(fail, __SCOPE__ & ": Error: Unable to retrieve attribute"); 	
 								}
 							}
 							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(p_contentResponse))) -> value v_response {
@@ -1870,6 +1958,175 @@ module OneM2M_Testcases_CSE {
 					
 				} //end g_CSE_REG_RET_002
 				
+				testcase TC_CSE_REG_RET_003() runs on AeSimu system CseSystem {
+					// Local variables
+					var MsgIn v_response;
+					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.aE := mw_contentAeBase;
+	
+					mcaPort.send(m_request(m_retrieveResource(f_getResourceAddress(), f_getOriginator(v_aeIndex))));//TODO Maybe PX_SUPER_AE_ID
+
+					tc_ac.start;
+					alt {
+						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2000, v_contentResponse))) -> value v_response {
+							tc_ac.stop;
+							setverdict(pass, __SCOPE__ & ": Response OK for retrieving");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__ & ": Wrong response status code");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__ & ": Error, resource elements provided not matching expected resource elements");
+						}
+						[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+							tc_ac.stop;
+							setverdict(fail, __SCOPE__ & ": Error while retrieving resource");
+						}
+						[] tc_ac.timeout {
+							setverdict(fail, __SCOPE__ & ": No answer while retrieving resource");
+						}
+					}	
+
+					// Postamble
+					f_cse_postamble_deleteResources();
+
+					// Tear down
+					f_cf01Down();
+	
+				}//end TC_CSE_REG_RET_003
+				
+				group g_CSE_REG_RET_004 {
+					
+					testcase TC_CSE_REG_RET_004_LBL() runs on Tester system CseSystem {
+						// Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template PrimitiveContent v_contentResponse;
+	
+						v_contentResponse.aE := mw_contentAeBase;
+		    
+						v_ae1.start(f_CSE_REG_RET_004(v_contentResponse));
+						v_ae1.done;
+					}
+	
+					testcase TC_CSE_REG_RET_004_APN() runs on Tester system CseSystem {
+						//Local variables
+						 var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						 var template PrimitiveContent v_contentResponse;
+
+						 v_contentResponse.aE := mw_contentAeBase;
+
+						 v_ae1.start(f_CSE_REG_RET_004(v_contentResponse));
+						 v_ae1.done;
+					}
+					
+					testcase TC_CSE_REG_RET_004_POA() runs on Tester system CseSystem {
+						//Local variables
+						 var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						 var template PrimitiveContent v_contentResponse;
+
+						 v_contentResponse.aE := mw_contentAeBase;
+
+						 v_ae1.start(f_CSE_REG_RET_004(v_contentResponse));
+						 v_ae1.done;
+					}
+					
+					testcase TC_CSE_REG_RET_004_NL() runs on Tester system CseSystem {
+						//Local variables
+						 var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						 var template PrimitiveContent v_contentResponse;
+
+						 v_contentResponse.aE := mw_contentAeBase;
+
+						 v_ae1.start(f_CSE_REG_RET_004(v_contentResponse));
+						 v_ae1.done;
+					}
+					
+					testcase TC_CSE_REG_RET_004_CSZ() runs on Tester system CseSystem {
+						//Local variables
+						 var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						 var template PrimitiveContent v_contentResponse;
+
+						 v_contentResponse.aE := mw_contentAeBase;
+
+						 v_ae1.start(f_CSE_REG_RET_004(v_contentResponse));
+						 v_ae1.done;
+					}
+	
+					function f_CSE_REG_RET_004(template PrimitiveContent p_contentResponse) runs on AeSimu {
+						//Local variables
+						 var MsgIn v_response;
+						 var integer v_aeIndex := -1;
+				   
+						 // Test control
+
+						 // Test component configuration
+						 f_cf01Up();
+
+						 // Test adapter configuration
+
+						 // Preamble
+						 v_aeIndex := f_cse_preamble_registerAe();//c_CRUDNDi);
+		 
+						 mcaPort.send(m_request(m_retrieveResource(f_getResourceAddress(), f_getOriginator(v_aeIndex))));//TODO Maybe PX_SUPER_AE_ID
+						 tc_ac.start;
+						 alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitive(int2000, p_contentResponse))) -> value v_response {
+								tc_ac.stop;
+								if (ispresent(v_response.primitive.responsePrimitive.primitiveContent)){
+									if ((ispresent(v_response.primitive.responsePrimitive.primitiveContent.aE.appName)) or 
+										 (ispresent(v_response.primitive.responsePrimitive.primitiveContent.aE.nodeLink)) or
+									     (ispresent(v_response.primitive.responsePrimitive.primitiveContent.aE.labels)) or 
+									     (ispresent(v_response.primitive.responsePrimitive.primitiveContent.aE.pointOfAccess)) or
+									     (ispresent(v_response.primitive.responsePrimitive.primitiveContent.aE.contentSerialization)) ){
+									  setverdict(pass, __SCOPE__ & ": Response OK for retrieving for attribute");
+									} else {
+									  setverdict(fail, __SCOPE__ & ": Error: Unable to retrieve attribute"); 	
+									}
+							  } else {
+								setverdict(fail, __SCOPE__ & ": Error: Primitive content not available");
+							  }
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(p_contentResponse))) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, __SCOPE__ & ": Wrong response status code");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, __SCOPE__ & ": Error, resource elements provided not matching expected resource elements");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, __SCOPE__ & ": Error while retrieving resource");
+							}
+							[] tc_ac.timeout {
+								setverdict(fail, __SCOPE__ & ": No answer while retrieving resource");
+							}
+						}	
+
+						// Postamble
+						f_cse_postamble_deleteResources();
+
+						// Tear down
+						f_cf01Down();
+					} //end f_CSE_REG_RET_004
+	
+				} //end g_CSE_REG_RET_004
+				
 				/**
 				 * @desc Check that if the IUT is IN-CSE, it accepts an retrieval request of <CSEBase> resource and returns the cseType attribute. cseType Attribute is mandatory for IN-CSE
 				 * 
@@ -1904,16 +2161,19 @@ module OneM2M_Testcases_CSE {
 					alt {
 						[] mcaPort.receive(mw_response(mw_responsePrimitive(int2000, v_contentResponse))) -> value v_response {
 							tc_ac.stop;
-							if (ispresent(v_response.primitive.responsePrimitive.primitiveContent.cSEBase.cseType)){
-								if (v_response.primitive.responsePrimitive.primitiveContent.cSEBase.cseType==int1){
-									setverdict(pass, __SCOPE__ & ": cseType attribute is set to 1 (IN_CSE)");
+							if (ispresent(v_response.primitive.responsePrimitive.primitiveContent)) {
+								if (ispresent(v_response.primitive.responsePrimitive.primitiveContent.cSEBase.cseType)){
+									if (v_response.primitive.responsePrimitive.primitiveContent.cSEBase.cseType==int1){
+										setverdict(pass, __SCOPE__ & ": cseType attribute is set to 1 (IN_CSE)");
+									}else{
+										setverdict(fail, __SCOPE__ & ": Error, cseType attribute is set to " & int2str(enum2int(v_response.primitive.responsePrimitive.primitiveContent.cSEBase.cseType)));
+									}
 								}else{
-									setverdict(fail, __SCOPE__ & ": Error, cseType attribute is set to " & int2str(enum2int(v_response.primitive.responsePrimitive.primitiveContent.cSEBase.cseType)));
+									setverdict(fail, __SCOPE__ & ": Error, cseType attribute is not present");
 								}
-							}else{
-								setverdict(fail, __SCOPE__ & ": Error, cseType attribute is not present");
-							}
-							
+						  } else {
+							setverdict(fail, __SCOPE__ & ": Error, Primitive content not available");  
+						  }
 						}
 						[] mcaPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))) -> value v_response {
 							tc_ac.stop;
@@ -1940,6 +2200,163 @@ module OneM2M_Testcases_CSE {
 
 				}//end TC_CSE_REG_RET_BV_005
 				
+				testcase TC_CSE_REG_RET_006() runs on CseSimu system CseSystem {
+				//Local variables
+				 //Local variables
+				 var MsgIn v_response;
+				 var RequestPrimitive v_request;
+				 var ResourceType v_resourceType := int16;	//remoteCSE
+				 var template PrimitiveContent v_contentResponse;
+				 		
+				 // Test control
+
+				 // Test component configuration
+				 f_cf04Up();
+
+				 // Test adapter configuration
+
+				 // Preamble
+				 vc_remoteCseIndex := f_cse_registerRemoteCse(m_createRemoteCSEBase);
+				 
+				 v_contentResponse.remoteCSE := mw_contentRemoteCSEBase;
+				 
+				 mccPort.send(m_request(m_retrieveResource(f_getResourceAddress(), f_getOriginator(vc_remoteCseIndex))));
+				 tc_ac.start;
+				 alt {
+					 [] mccPort.receive(mw_response(mw_responsePrimitive(int2000, v_contentResponse))) -> value v_response {
+						 tc_ac.stop;
+						 setverdict(pass, __SCOPE__ & ": Response OK for retrieving");
+					 }
+					 [] mccPort.receive(mw_response(mw_responsePrimitiveOK(v_contentResponse))) -> value v_response {
+						 tc_ac.stop;
+						 setverdict(fail, __SCOPE__ & ": Wrong response status code");
+					 }
+					 [] mccPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+						 tc_ac.stop;
+						 setverdict(fail, __SCOPE__ & ": Error, resource elements provided not matching expected resource elements");
+					 }
+					 [] mccPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+						 tc_ac.stop;
+						 setverdict(fail, __SCOPE__ & ": Error while retrieving resource");
+					 }
+					 [] tc_ac.timeout {
+						 setverdict(fail, __SCOPE__ & ": No answer while retrieving resource");
+					 }
+				 }	
+
+				 // Postamble
+				 f_cse_postamble_deleteResourcesCSE();
+
+				 // Tear down
+				 f_cf04Down();
+				 
+				}//end TC_CSE_REG_RET_006
+				
+				group g_CSE_REG_RET_007 {
+					
+					testcase TC_CSE_REG_RET_007_LBL() runs on Tester system CseSystem {
+						// Local variables
+						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						var template PrimitiveContent v_contentResponse;
+
+						v_contentResponse.remoteCSE := mw_contentRemoteCSEBase;
+
+						v_cse1.start(f_CSE_REG_RET_007(v_contentResponse));
+						v_cse1.done;
+					}
+					
+					testcase TC_CSE_REG_RET_007_CST() runs on Tester system CseSystem {
+						// Local variables
+						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						var template PrimitiveContent v_contentResponse;
+
+						v_contentResponse.remoteCSE := mw_contentRemoteCSEBase;
+
+						v_cse1.start(f_CSE_REG_RET_007(v_contentResponse));
+						v_cse1.done;
+					}
+					
+					testcase TC_CSE_REG_RET_007_POA() runs on Tester system CseSystem {
+						// Local variables
+						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						var template PrimitiveContent v_contentResponse;
+
+						v_contentResponse.remoteCSE := mw_contentRemoteCSEBase;
+
+						v_cse1.start(f_CSE_REG_RET_007(v_contentResponse));
+						v_cse1.done;
+					}
+					
+					testcase TC_CSE_REG_RET_007_NL() runs on Tester system CseSystem {
+						// Local variables
+						var CseSimu v_cse1 := CseSimu.create("CSE1") alive;
+						var template PrimitiveContent v_contentResponse;
+
+						v_contentResponse.remoteCSE := mw_contentRemoteCSEBase;
+
+						v_cse1.start(f_CSE_REG_RET_007(v_contentResponse));
+						v_cse1.done;
+					}
+					
+					function f_CSE_REG_RET_007(template PrimitiveContent p_contentResponse) runs on CseSimu {
+						var MsgIn v_response;
+						var RequestPrimitive v_request;
+						var ResourceType v_resourceType := int16;	//remoteCSE
+						var template PrimitiveContent v_contentResponse;
+ 		
+						// Test control
+
+						// Test component configuration
+						f_cf04Up();
+
+						// Test adapter configuration
+
+						// Preamble
+						vc_remoteCseIndex := f_cse_registerRemoteCse(m_createRemoteCSEBase);
+						mccPort.send(m_request(m_retrieveResource(f_getResourceAddress(), f_getOriginator(vc_remoteCseIndex))));
+					    tc_ac.start;
+						alt {
+							[] mccPort.receive(mw_response(mw_responsePrimitive(int2000, p_contentResponse))) -> value v_response {
+								tc_ac.stop;
+								if (ispresent(v_response.primitive.responsePrimitive.primitiveContent)){
+									if ((ispresent(v_response.primitive.responsePrimitive.primitiveContent.remoteCSE.labels)) or 
+										 (ispresent(v_response.primitive.responsePrimitive.primitiveContent.remoteCSE.nodeLink)) or
+										 (ispresent(v_response.primitive.responsePrimitive.primitiveContent.remoteCSE.cseType)) or 
+										 (ispresent(v_response.primitive.responsePrimitive.primitiveContent.remoteCSE.pointOfAccess))){
+									  setverdict(pass, __SCOPE__ & ": Response OK for retrieving for attribute");
+									} else {
+									  setverdict(fail, __SCOPE__ & ": Error: Unable to retrieve attribute"); 	
+									}
+							  } else {
+								setverdict(fail, __SCOPE__ & ": Error: Primitive content not available");
+							  }
+							}
+							[] mccPort.receive(mw_response(mw_responsePrimitiveOK(p_contentResponse))) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, __SCOPE__ & ": Wrong response status code");
+							}
+							[] mccPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, __SCOPE__ & ": Error, resource elements provided not matching expected resource elements");
+							}
+							[] mccPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, __SCOPE__ & ": Error while retrieving resource");
+							}
+							[] tc_ac.timeout {
+								setverdict(fail, __SCOPE__ & ": No answer while retrieving resource");
+							}
+						}
+						
+						//Postamble
+  					    f_cse_postamble_deleteResourcesCSE();
+
+						// Tear down
+						f_cf04Down();
+					} // f_CSE_REG_RET_007
+				
+				} //end g_CSE_REG_RET_007
+				
 				/**
 				 * @desc Check that the IUT accepts a retrieval request of <CSEBase> resource and responds with supportedResourceTypes attribute containing a list of the supported resources and pointOfAccess containing the list of physical addresses to be used by Registree to connect to this CSE (e.g. IP address, FQDN).
 				 *