diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index 631f4fa485e48d282bf9aad07d8ab298f3c1ddd9..80c7a57ac870a6a29a2db593b55be43ee41a156f 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -405,6 +405,20 @@ module OneM2M_Templates {
         	  	primitiveContent	:= {locationPolicy := m_contentUpdateLocationPolicy(p_accessControlPolicyIds, p_locationUpdatePeriod)}
 			  };
         	
+        	template (value) RequestPrimitive m_updateNodeBase modifies m_update := {
+				requestIdentifier := "m_updateNode" & f_rnd(1, 1000000),
+				primitiveContent:= {node := m_contentUpdateNode}
+        	}
+        	
+        	template (value) RequestPrimitive m_updateRemoteCSEBase modifies m_update := {
+        	   requestIdentifier := "m_updateRemoteCSEBase" & f_rnd(1, 1000000),
+        	   primitiveContent := {remoteCSE := m_contentUpdateRemoteCSE}
+        	}
+        	
+        	template (value) RequestPrimitive m_updateAE modifies m_update := {
+				requestIdentifier := "m_updateAE" & f_rnd(1, 1000000),
+				primitiveContent := {aE := m_contentUpdateAE}
+        	}
     	}//end group Update
     	
     	group Create {
@@ -2144,6 +2158,76 @@ module OneM2M_Templates {
     	  	locationStatus			:= omit, //NP
     	    choice 					:= omit  //NP	   	  	
     	};
+    	
+    	template (value) Node_optional m_contentUpdateNode := {
+			resourceName := omit,
+			resourceType := omit,
+			resourceID := omit,
+			parentID := omit,
+			creationTime := omit,
+			lastModifiedTime := omit,
+			labels := omit,
+			accessControlPolicyIDs := omit,
+			expirationTime := omit,
+			dynamicAuthorizationConsultationIDs := omit,
+			announceTo := omit,
+			announcedAttribute := omit,
+			nodeID := omit,
+			hostedCSELink := omit,
+			mgmtClientAddress := omit,
+			choice := omit
+    	}
+    	
+    	template (value) RemoteCSE_optional m_contentUpdateRemoteCSE := {
+			resourceName := omit,
+			resourceType := omit,
+			resourceID := omit,
+			parentID := omit,
+			creationTime := omit,
+			lastModifiedTime := omit,
+			labels := omit,
+			accessControlPolicyIDs := omit,
+			expirationTime := omit,
+			dynamicAuthorizationConsultationIDs := omit,
+			announceTo := omit,
+			announcedAttribute := omit,
+			cseType := omit,
+			pointOfAccess := omit,
+			cSEBase := omit,
+			cSE_ID := omit,
+			m2M_Ext_ID := omit,
+			trigger_Recipient_ID := omit,
+			requestReachability := omit,
+			nodeLink := omit,
+			e2eSecInfo := omit,
+			triggerReferenceNumber := omit,
+			choice := omit
+    	}
+    	
+    	template (value) AE_optional m_contentUpdateAE := {
+			resourceName := omit,
+			resourceType := omit,
+			resourceID := omit,
+			parentID := omit,
+			creationTime := omit,
+			lastModifiedTime := omit,
+			labels := omit,
+			accessControlPolicyIDs := omit,
+			expirationTime := omit,
+			dynamicAuthorizationConsultationIDs := omit,
+			announceTo := omit,
+			announcedAttribute := omit,
+			appName := omit,
+			app_ID := omit,
+			aE_ID := omit,
+			pointOfAccess := omit,
+			ontologyRef := omit,
+			nodeLink := omit,
+			requestReachability := omit,
+			contentSerialization := omit,
+			e2eSecInfo := omit,
+			choice := omit
+    	}
 		
 	}//end group ContentUpdate
 
diff --git a/OneM2M_Testcases.ttcn b/OneM2M_Testcases.ttcn
index dc5a5c013cc83d756ac0b2a5a937e402dd390a99..2ee529f7816b4a62f10792624d2d69f933e43f03 100644
--- a/OneM2M_Testcases.ttcn
+++ b/OneM2M_Testcases.ttcn
@@ -8697,6 +8697,409 @@ module OneM2M_Testcases {
 				  	}//end TC_CSE_DMR_UPD_013
 
 			  	} // end group g_CSE_DMR_UPD_013
+			  	
+			  	group g_CSE_DMR_UPD_017{
+			  		
+					testcase TC_CSE_DMR_UPD_017_CSR_LBL() runs on CseTester system CseSystem {
+					   var Labels v_labels := {"MyLabel"};
+					   var template RequestPrimitive v_updateRequest := m_updateRemoteCSEBase;
+	
+					   v_updateRequest.primitiveContent.remoteCSE.labels := v_labels;
+	
+					   f_CSE_DMR_UPD_017(int16, m_createRemoteCSEBase, v_updateRequest);//Remote CSE
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_CSR_POA() runs on CseTester system CseSystem {
+					   var PoaList v_poaList := {"http://" & PX_AE2_ADDRESS & "/"};
+					   var template RequestPrimitive v_updateRequest := m_updateRemoteCSEBase;
+
+					   v_updateRequest.primitiveContent.remoteCSE.pointOfAccess := v_poaList;
+
+					   f_CSE_DMR_UPD_017(int16, m_createRemoteCSEBase, v_updateRequest);//Remote CSE
+					}  
+					
+					testcase TC_CSE_DMR_UPD_017_CSR_NL() runs on CseTester system CseSystem {
+					   var XSD.AnyURI v_nodeLink := "MyNodeId";
+					   var template RequestPrimitive v_updateRequest := m_updateRemoteCSEBase;
+
+					   v_updateRequest.primitiveContent.remoteCSE.nodeLink := v_nodeLink;
+
+					   f_CSE_DMR_UPD_017(int16, m_createRemoteCSEBase, v_updateRequest);//Remote CSE
+					}
+			  		
+					testcase TC_CSE_DMR_UPD_017_NOD_LBL() runs on CseTester system CseSystem {
+						var Labels v_labels := {"MyLabel"};
+						const AttributeAux c_optionalAttribute := {"labels", omit};
+						var template RequestPrimitive v_updateRequest := m_updateNodeBase;
+						
+						v_updateRequest.primitiveContent.node.labels := v_labels;
+						
+						f_CSE_DMR_UPD_017(int9, m_createNodeBase, v_updateRequest);//Node
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_NOD_ACPI() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_NOD_HCL() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_AE_LBL() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_AE_ACPI() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_AE_APN() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_AE_POA() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_AE_OR() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_CNT_LBL() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_CNT_ACPI() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_CNT_MNI() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_CNT_MBS() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_CNT_MIA() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_CNT_OR() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_CNT_LI() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_ACP_LBL() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_SUB_ACPI() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_SUB_LBL() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_SUB_ENC() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_SUB_EXC() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_SUB_GPI() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_SUB_NFU() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_SUB_BN() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_SUB_RL() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_SUB_PN() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_SUB_NSP() runs on CseTester system CseSystem {
+					}
+					
+					testcase TC_CSE_DMR_UPD_017_SUB_LN() runs on CseTester system CseSystem {
+					}
+					
+					function f_CSE_DMR_UPD_017(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive) runs on CseTester {
+					   //Local variables
+					   var MsgIn v_response;
+					   var RequestPrimitive v_request;
+					   var integer v_aeIndex := -1;
+					   var integer v_resourceIndex := -1;
+					   var CseTester v_notifyHandler;
+					   var integer v_ae2Index := -1;
+   
+					   // Test control
+
+					   // Test component configuration
+					   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_createRequestPrimitive, p_resourceType);
+
+					   v_resourceIndex := f_cse_createResource(p_resourceType, p_createRequestPrimitive);//under the CSEBase resource
+					  } else {	//ResourceType = RemoteCSE
+						  v_resourceIndex := f_cse_registerRemoteCse(p_createRequestPrimitive);	
+					  }
+					 
+					  //Test Body
+					  v_request := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_updateRequestPrimitive);
+ 
+					  if(p_resourceType!=int16) {
+						mcaPort.send(m_request(v_request)); //CSEBase
+					  } else {
+						mccPort.send(m_request(v_request)); //RemoteCSE
+					  }
+					  
+					  tc_ac.start;
+					  alt {
+						  [] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value v_response {
+							  tc_ac.stop;
+							  setverdict(pass, testcasename() & ": Attribute of resource type " & int2str(enum2int(p_resourceType)) & " updated successfully");
+						  }
+						  [] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+							  tc_ac.stop;
+							  setverdict(fail, testcasename() & ": Error while updating optional attribute");
+						  }
+						  [] tc_ac.timeout {
+							  setverdict(fail, testcasename() & ": No answer while updating resource type " & int2str(enum2int(p_resourceType)));
+						  }
+					  }
+
+					  //Postamble
+					  f_cse_postamble_deleteResources();
+
+					  // Tear down
+					  f_cf02Down();
+					} // end function f_CSE_DMR_UPD_017
+			  		
+			  	} // end group g_CSE_DMR_UPD_017
+			  	
+			  	group g_CSE_DMR_UPD_018 {
+			  		
+					testcase TC_CSE_DMR_UPD_018_CSR_ET() runs on CseTester system CseSystem {
+						var Timestamp v_expirationTime := "20001231T012345";
+						var template RequestPrimitive v_updateRequest := m_updateRemoteCSEBase;
+						
+						v_updateRequest.primitiveContent.remoteCSE.expirationTime := v_expirationTime;
+						
+						f_CSE_DMR_UPD_018(int16, m_createRemoteCSEBase, v_updateRequest);//Remote CSE
+					}
+					
+					testcase TC_CSE_DMR_UPD_018_CSR_RR() runs on CseTester system CseSystem {
+						var XSD.Boolean v_requestReachability := true;
+						var template RequestPrimitive v_updateRequest := m_updateRemoteCSEBase;
+						
+						v_updateRequest.primitiveContent.remoteCSE.requestReachability := v_requestReachability;
+						
+						f_CSE_DMR_UPD_018(int16, m_createRemoteCSEBase, v_updateRequest);//Remote CSE
+					}
+			  		
+					testcase TC_CSE_DMR_UPD_018_NOD_ET() runs on CseTester system CseSystem {
+						var Timestamp v_expirationTime := "20001231T012345";
+						var template RequestPrimitive v_updateRequest := m_updateNodeBase;
+						
+						v_updateRequest.primitiveContent.node.expirationTime := v_expirationTime;
+						
+						f_CSE_DMR_UPD_018(int9, m_createNodeBase, v_updateRequest);//Node	
+					}
+					
+					testcase TC_CSE_DMR_UPD_018_NOD_NI() runs on CseTester system CseSystem {
+						var template RequestPrimitive v_updateRequest := m_updateNodeBase;
+						var XSD.Token v_targetId := "TARGET-ID";
+						
+						v_updateRequest.primitiveContent.node.nodeID := v_targetId;
+						
+						f_CSE_DMR_UPD_018(int9, m_createNodeBase, v_updateRequest);//Node
+					}
+					
+					testcase TC_CSE_DMR_UPD_018_AE_ET() runs on CseTester system CseSystem {
+						var Timestamp v_expirationTime := "20001231T012345";
+						var template RequestPrimitive v_updateRequest := m_updateAE;
+						
+						v_updateRequest.primitiveContent.aE.expirationTime := v_expirationTime;
+						
+						f_CSE_DMR_UPD_018(int2, m_createAe(PX_APP_ID), v_updateRequest);//AE
+					}
+					
+					testcase TC_CSE_DMR_UPD_018_AE_RR() runs on CseTester system CseSystem {
+						var XSD.Boolean v_requestReachability := true;
+						var template RequestPrimitive v_updateRequest := m_updateAE;
+
+						v_updateRequest.primitiveContent.aE.requestReachability := v_requestReachability;
+
+						f_CSE_DMR_UPD_018(int2, m_createAe(PX_APP_ID), v_updateRequest);//AE
+					}
+					
+					testcase TC_CSE_DMR_UPD_018_CNT_ET() runs on CseTester system CseSystem {
+						var Timestamp v_expirationTime := "20001231T012345";
+						var template RequestPrimitive v_updateRequest := m_updateContainerBase;
+						
+						v_updateRequest.primitiveContent.container.expirationTime := v_expirationTime;
+						
+						f_CSE_DMR_UPD_018(int3, m_createContainerBase, v_updateRequest);//Container
+					}
+					
+					testcase TC_CSE_DMR_UPD_018_ACP_ET() runs on CseTester system CseSystem {
+						var Timestamp v_expirationTime := "20001231T012345";
+						var template RequestPrimitive v_updateRequest := m_updateAcpBase;
+						
+						v_updateRequest.primitiveContent.accessControlPolicy.expirationTime := v_expirationTime;
+						
+						f_CSE_DMR_UPD_018(int1, m_createAcpBase, v_updateRequest);//AccessControlPolicy
+					}
+					
+					testcase TC_CSE_DMR_UPD_018_ACP_PV() runs on CseTester system CseSystem {
+						var SetOfAcrs v_privileges_1 := { //
+							accessControlRule_list := {
+								{
+									accessControlOriginators := {PX_SUPER_USER},
+									accessControlOperations := int61,
+									accessControlContexts_list := {},
+									accessControlAuthenticationFlag := omit,
+									accessControlObjectDetails_list := {}
+								}
+							}
+						}
+						var template RequestPrimitive v_updateRequest := m_updateAcpBase;
+						
+						v_updateRequest.primitiveContent.accessControlPolicy.privileges := v_privileges_1;
+						f_CSE_DMR_UPD_018(int1, m_createAcpBase, v_updateRequest);//AccessControlPolicy
+					}
+					
+					testcase TC_CSE_DMR_UPD_018_ACP_PVS() runs on CseTester system CseSystem {
+						var SetOfAcrs v_privileges_1 := { //
+							accessControlRule_list := {
+								{
+									accessControlOriginators := {PX_SUPER_USER},
+									accessControlOperations := int61,
+									accessControlContexts_list := {},
+									accessControlAuthenticationFlag := omit,
+									accessControlObjectDetails_list := {}
+								}
+							}
+						}
+						var template RequestPrimitive v_updateRequest := m_updateAcpBase;
+						
+						v_updateRequest.primitiveContent.accessControlPolicy.selfPrivileges := v_privileges_1;
+						f_CSE_DMR_UPD_018(int1, m_createAcpBase, v_updateRequest);//AccessControlPolicy
+				    }
+				    
+					testcase TC_CSE_DMR_UPD_018_SUB_ET() runs on CseTester system CseSystem {
+						var Timestamp v_expirationTime := "20001231T012345";
+						var template RequestPrimitive v_updateRequest := m_updateSubscriptionBase;
+						
+						v_updateRequest.primitiveContent.subscription.expirationTime := v_expirationTime;
+						
+						f_CSE_DMR_UPD_018(int23, m_createSubscriptionBase, v_updateRequest);//Subscription
+					}
+					
+					testcase TC_CSE_DMR_UPD_018_SUB_NU() runs on CseTester system CseSystem {
+						var ListOfURIs v_notificationURI := {"NotReachableNotificationURI"};
+						var template RequestPrimitive v_updateRequest := m_updateSubscriptionBase;
+											
+						v_updateRequest.primitiveContent.subscription.notificationURI := v_notificationURI;
+						
+						f_CSE_DMR_UPD_018(int23, m_createSubscriptionBase, v_updateRequest);//Subscription
+					}
+					
+					testcase TC_CSE_DMR_UPD_018_SUB_NCT() runs on CseTester system CseSystem {
+						var NotificationContentType v_notificationContentType := int2;
+						var template RequestPrimitive v_updateRequest := m_updateSubscriptionBase;
+						
+						v_updateRequest.primitiveContent.subscription.notificationContentType := v_notificationContentType;
+						
+						f_CSE_DMR_UPD_018(int23, m_createSubscriptionBase, v_updateRequest);//Subscription
+					}
+					
+					testcase TC_CSE_DMR_UPD_018_GRP_ET() runs on CseTester system CseSystem {
+						var Timestamp v_expirationTime := "20001231T012345";
+						var template RequestPrimitive v_updateRequest := m_updateGroupBase;
+						
+						v_updateRequest.primitiveContent.group_.expirationTime := v_expirationTime;
+						
+						f_CSE_DMR_UPD_018(int9, m_createGroupBase, v_updateRequest);//Group
+					}
+					
+					testcase TC_CSE_DMR_UPD_018_GRP_MNM() runs on CseTester system CseSystem {
+						var XSD.PositiveInteger v_maxNrOfMembers := 10;
+						var template RequestPrimitive v_updateRequest := m_updateGroupBase;
+						
+						v_updateRequest.primitiveContent.group_.maxNrOfMembers := v_maxNrOfMembers;
+						
+						f_CSE_DMR_UPD_018(int9, m_createGroupBase, v_updateRequest);//Group
+					}
+					
+					testcase TC_CSE_DMR_UPD_018_GRP_MID() runs on CseTester system CseSystem {
+						var ListOfURIs v_memberIDs := {"NotInitialized"};
+						var template RequestPrimitive v_updateRequest := m_updateGroupBase;
+						
+						v_updateRequest.primitiveContent.group_.memberIDs := v_memberIDs;
+						
+						f_CSE_DMR_UPD_018(int9, m_createGroupBase, v_updateRequest);//Group
+					}
+					
+					function f_CSE_DMR_UPD_018(ResourceType p_resourceType, template RequestPrimitive p_createRequestPrimitive, template RequestPrimitive p_updateRequestPrimitive) runs on CseTester {
+						 //Local variables
+						 var MsgIn v_response;
+						 var RequestPrimitive v_request;
+						 var integer v_aeIndex := -1;
+						 var integer v_resourceIndex := -1;
+						 var CseTester v_notifyHandler;
+						 var integer v_ae2Index := -1;
+						   
+						 // Test control
+
+						 // Test component configuration
+						 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_createRequestPrimitive, p_resourceType);
+
+						 v_resourceIndex := f_cse_createResource(p_resourceType, p_createRequestPrimitive);//under the CSEBase resource
+						} else {	//ResourceType = RemoteCSE
+							v_resourceIndex := f_cse_registerRemoteCse(p_createRequestPrimitive);	
+						}
+											 
+						//Test Body
+						v_request := f_getUpdateRequestPrimitive(p_resourceType, v_resourceIndex, p_updateRequestPrimitive);
+						
+						if(p_resourceType!=int16){ 
+						   mcaPort.send(m_request(v_request)); //CSEBase
+						} else {
+						   mccPort.send(m_request(v_request)); //RemoteCSE
+						}
+						
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitive(int2004))) -> value v_response {
+								tc_ac.stop;
+								setverdict(pass, testcasename() & ": Attribute of resource type " & int2str(enum2int(p_resourceType)) & " updated successfully");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) -> value v_response {
+								tc_ac.stop;
+								setverdict(fail, testcasename() & ": Error while updating mandatory attribute");
+							}
+							[] tc_ac.timeout {
+								setverdict(fail, testcasename() & ": No answer while updating resource type " & int2str(enum2int(p_resourceType)));
+							}
+						}
+						
+						//Postamble
+ 					    f_cse_postamble_deleteResources();
+						
+						// Tear down
+						f_cf02Down();	
+					} //end function f_CSE_DMR_UPD_018
+			  	
+			  	} // end group g_CSE_DMR_UPD_018
 
 			}//end group Update