diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index c707f968d2b0367f380461f36a97cd345f817c84..4e79578a963aac6d556fc3207a692ee4509deda6 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -3493,7 +3493,21 @@ module OneM2M_Functions {
 							v_myResource.contentInstance.content := valueof(p_resource.contentInstance.content);
 						}
 					}
-										
+				} else if(p_resourceType == int18 and ispresent(p_resource)) { //Schedule
+					if(ischosen(p_resource.schedule)){
+						v_myResource.schedule := valueof(p_resource.schedule);
+						v_myResource.schedule.resourceID := "sch" & int2str(v_resourceIndex);
+						if(not(ispresent(p_resource.schedule.resourceName))) {
+							v_myResource.schedule.resourceName := "schedule" & int2str(v_resourceIndex);
+						}
+						v_myResource.schedule.resourceType := p_resourceType;
+						v_myResource.schedule.parentID := f_getResourceId(vc_localResourcesList[p_parentIndex].resource);
+						v_myResource.schedule.creationTime := fx_generateTimestamp();
+						v_myResource.schedule.lastModifiedTime := v_myResource.schedule.creationTime;											
+						if(not(ispresent(p_resource.schedule.expirationTime))) {
+							v_myResource.schedule.expirationTime := "20301231T012345";
+						}
+					}														
 				} else if(p_resourceType == int23 and ispresent(p_resource)) {//Subscription
 					if(ischosen(p_resource.subscription)){
 						v_myResource.subscription := valueof(p_resource.subscription);
@@ -5759,6 +5773,9 @@ module OneM2M_Functions {
 			else if (ischosen(p_resource.remoteCSEAnnc)){
 				p_resource.remoteCSEAnnc.link := p_link;
 			}
+			else if (ischosen(p_resource.scheduleAnnc)){
+				p_resource.scheduleAnnc.link := p_link;
+			} 
 			else if (ischosen(p_resource.timeSeriesAnnc)){
 				p_resource.timeSeriesAnnc.link := p_link;
 			} 
@@ -5792,6 +5809,9 @@ module OneM2M_Functions {
 			else if (ischosen(p_resource.remoteCSEAnnc)){
 				p_resource.remoteCSEAnnc.expirationTime := p_originalResource.remoteCSE.expirationTime;
 			}
+			else if (ischosen(p_resource.scheduleAnnc)){
+				p_resource.scheduleAnnc.expirationTime := p_originalResource.schedule.expirationTime;
+			} 
 			else if (ischosen(p_resource.timeSeriesAnnc)){
 				p_resource.timeSeriesAnnc.expirationTime := p_originalResource.timeSeries.expirationTime;
 			} 
diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn
index d169a9893af00251d5cd18abbbcc129dbd46ad38..4c071b55489ba84ea2eb84dd00d5f6f997f85ee1 100644
--- a/LibOneM2M/OneM2M_Templates.ttcn
+++ b/LibOneM2M/OneM2M_Templates.ttcn
@@ -1348,6 +1348,15 @@ module OneM2M_Templates {
 				primitiveContent := {schedule := m_contentCreateSchedule ({{"* * * * * * *"}})}
         	};
         	
+			/**
+			 * @desc Base CREATE request primitive for ScheduleAnnc resource
+			 */
+        	template (value) RequestPrimitive m_createScheduleAnncBase modifies m_create := {
+				requestIdentifier := testcasename() & "-m_createScheduleAnnc",
+        		resourceType := int10018,
+				primitiveContent := {scheduleAnnc := m_contentCreateScheduleAnnc (omit, {{"* * * * * * *"}})}
+        	};
+
         	template (value) RequestPrimitive m_createSchedule(XSD.ID p_parentResourceAddress, in template (omit)  XSD.String p_name, in template (value) ScheduleEntries p_scheduleElement ) modifies m_create := {
         		to_ := p_parentResourceAddress,
 				requestIdentifier := testcasename() & "-m_createSchedule",
@@ -2327,6 +2336,10 @@ module OneM2M_Templates {
 	        cSEBase := p_cSEBase
 		}
 
+		template (value) PrimitiveContent m_primitiveContentPollingChannel(template (value) PollingChannel_optional p_pollingChannel) := {
+			pollingChannel := p_pollingChannel
+		}
+
 		template (value) PrimitiveContent m_primitiveContentRemoteCSE(template (value) RemoteCSE_optional p_remoteCSE) := {
 			remoteCSE := p_remoteCSE
 		}
@@ -2335,6 +2348,14 @@ module OneM2M_Templates {
 			responsePrimitive := p_responsePrimitive
 		}		
 		
+		template (value) PrimitiveContent m_primitiveContentSchedule(template (value) Schedule_optional p_schedule) := {
+			schedule := p_schedule
+		}
+
+		template (value) PrimitiveContent m_primitiveContentSubscription(template (value) Subscription_optional p_subscription) := {
+			subscription := p_subscription
+		}
+
 		template (value) PrimitiveContent m_primitiveContentTimeSeries(template (value) TimeSeries_optional p_timeSeries) := {
 			timeSeries := p_timeSeries
 		}
@@ -3114,7 +3135,7 @@ module OneM2M_Templates {
     	 * @param p_scheduleElement Schedule
     	 * @param p_name Resource name
     	 */
-    	template (value) Schedule_optional m_contentCreateSchedule (in template (value) ScheduleEntries p_scheduleElement,
+    	template (value) Schedule_optional m_contentCreateSchedule (in template (value) ScheduleEntries p_scheduleElement := {{"* * * * * * *"}},
 																	in template (omit) XSD.String p_name := c_defaultScheduleResourceName) := {
 			resourceName := p_name,//O
 			resourceType := omit,//NP
@@ -3133,6 +3154,26 @@ module OneM2M_Templates {
 			choice := omit//NP
     	};  
     	
+		/**
+		 * @desc Base primitiveContent for CREATE operation for ScheduleAnnc resource
+		 */
+		template (value) ScheduleAnnc_optional m_contentCreateScheduleAnnc (in template (omit) AcpType p_accessControlPolicyIds,in template (omit) ScheduleEntries p_scheduleEntries) := {
+			resourceName := omit,//NA M
+			resourceType := omit,//NA M
+			resourceID := omit,//NA M
+			parentID := omit,//NA M
+			creationTime := omit,//NA M
+			lastModifiedTime := omit,//NA M
+			labels := omit,//MA O
+			accessControlPolicyIDs := omit,//NA O
+			expirationTime := "29991231T235959",//MA M
+			dynamicAuthorizationConsultationIDs := omit,//NA O
+			link := "NotInitialized",//M
+			scheduleElement := p_scheduleEntries,//OA M
+			networkCoordinated := omit,//OA O
+			choice := omit//NP
+		};  	
+
 		/**
 		 * @desc Base reception template of primitiveContent for CREATE operation for ScheduleAnnc resource
 		 */
diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn
index 74db44c33d1b881ccda5303c4140853f9cdb6e8f..39aa2f747f27d84696a46ded92b3a0c725bc4794 100644
--- a/OneM2M_PermutationFunctions.ttcn
+++ b/OneM2M_PermutationFunctions.ttcn
@@ -5590,6 +5590,96 @@ module OneM2M_PermutationFunctions {
 						f_cf01Down();
 		
 					}//end f_CSE_DMR_RET_025
+					
+					function f_CSE_DMR_RET_026(ResourceType p_resourceType, template PrimitiveContent p_originalResource, template RequestPrimitive p_createRequestAnnc) runs on AeSimu system CseSystem {
+						
+						//Local variables
+						var template RequestPrimitive v_request;
+						var integer v_cseBaseIndex := -1;
+						var integer v_aeIndex := -1;
+						var integer v_remoteCSEIndex := -1;
+						var integer v_originalResourceIndex,  v_originalLocalResourceIndex := -1;
+						var XSD.ID v_originalResourceAddress;
+						var XSD.ID v_resourceAnncAddress;
+						var template RequestPrimitive v_createAE := m_createAe(PX_TS_AE1.appId, omit, omit);
+						var template RequestPrimitive v_createAcp := m_createAcp("NotInitialized", "MyAcp", -, int63);
+						var integer v_aeAnncIndex;
+						var integer v_resourceAnncIndex;
+						var integer v_acpIndex;
+						var XSD.ID v_membersAcpId;
+						
+						//Test control
+	
+						// Test component configuration
+						f_cf02Up();
+						
+						// Test adapter configuration
+			
+						//Preamble
+						v_cseBaseIndex := f_getLatestLocalResourceIndex(vc_cse1);
+						//Register the CSE
+						vc_cse1.start(f_cse_registerRemoteCse(m_createRemoteCSE_poa(-, -, -, -, {f_getCompletePoA()})));
+						f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+	
+						v_remoteCSEIndex := f_getLatestResourceIndex(vc_cse1);
+						
+						//Creating resource in Hosting CSE
+						vc_cse1.start(f_generateAndSetLocalResource(valueof(p_originalResource), v_cseBaseIndex, p_resourceType));
+						vc_cse1.done;
+						
+						v_originalResourceAddress := f_getLatestLocalResourceAddress(vc_cse1, -, e_spRelative);
+						
+						v_originalResourceIndex := f_getLatestLocalResource(vc_cse1);
+						
+						v_originalLocalResourceIndex := f_getLatestLocalResourceIndex(vc_cse1);
+						
+						v_aeIndex := f_cse_createResource(int2,v_createAE);
+						
+						v_acpIndex := f_cse_createResource(int1, v_createAcp, -); // AE child resource
+						
+						if((p_resourceType == int3) or (p_resourceType == int9) or (p_resourceType == int29)) {
+							p_createRequestAnnc := f_setAcpId(p_createRequestAnnc, {f_getResourceId(vc_resourcesList[v_acpIndex].resource)});
+						}
+						p_createRequestAnnc.primitiveContent := f_setLink(valueof(p_createRequestAnnc.primitiveContent), v_originalResourceAddress);
+						p_createRequestAnnc.primitiveContent := f_setExpirationTime(valueof(p_createRequestAnnc.primitiveContent), vc_resourcesList[v_originalResourceIndex].resource);
+						
+						vc_cse1.start(f_cse_createResource_cseSimu(f_getAnnouncedResourceType(p_resourceType), p_createRequestAnnc, v_remoteCSEIndex));
+						f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+						
+						v_resourceAnncAddress := f_getLatestResourceAddress(vc_cse1, -, -);
+						v_resourceAnncIndex := f_getLatestResourceIndex(vc_cse1);
+						
+						v_request := m_retrieve(v_resourceAnncAddress, f_getOriginator(v_aeIndex));
+						v_request.resultContent := int7;
+						// Test Body
+						vc_cse1.start(f_cse_retrieveResourceHandler(v_originalLocalResourceIndex, -, -));
+						f_send(e_mcaPort, m_request(valueof(v_request)));
+						tc_ac.start;
+						alt {
+							[] mcaPort.receive(mw_response(mw_responsePrimitive(int2000, vc_resourcesList[v_originalResourceIndex].resource))) -> value vc_response {
+								tc_ac.stop;
+								setverdict(pass, __SCOPE__, ": Resource " & int2str(enum2int(p_resourceType)) & " retrieved successfully");
+							}
+							[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value vc_response {
+								tc_ac.stop;
+								setverdict(fail, __SCOPE__, ": Wrong response status code");
+							}
+							[] tc_ac.timeout {
+								setverdict(fail, __SCOPE__, ": No answer while retrieving resource type " & int2str(enum2int(p_resourceType)));
+							}
+						}
+						
+						f_aeSimu_checkComponentDoneAndGetVerdict(vc_cse1);
+						
+			
+						// Postamble
+						f_cse_postamble_deleteResources();
+	
+						// Tear down
+						f_cf02Down();
+	
+					} //end f_CSE_DMR_RET_026
+
 		
 			}//end group Retrieve
 			
diff --git a/OneM2M_Testcases_CSE_Release_3.ttcn b/OneM2M_Testcases_CSE_Release_3.ttcn
index e98c7d8d31a2cace104bef3436cd0c6948976470..9be5480dc6dbeb6e23c1f5e7d0dea49487b35601 100644
--- a/OneM2M_Testcases_CSE_Release_3.ttcn
+++ b/OneM2M_Testcases_CSE_Release_3.ttcn
@@ -1468,7 +1468,7 @@ module OneM2M_Testcases_CSE_Release_3 {
 						// Local variables
 						var AeSimu v_ae1 := AeSimu.create("AE1") alive;						
 						
-						v_ae1.start(f_CSE_DMR_CRE_018(int8));//ResultContent = 7 (original resource)
+						v_ae1.start(f_CSE_DMR_CRE_018(int7));//ResultContent = 7 (original resource)
 						v_ae1.done;
 					}
 				
@@ -3673,6 +3673,59 @@ module OneM2M_Testcases_CSE_Release_3 {
 					
 				} // end g_CSE_DMR_RET_025
 				
+				group g_CSE_DMR_RET_026 {
+
+					/**
+					 * @desc Check that the IUT sends a RETRIEVE request to ORIGINAL_RESOURCE_ADDRESS resource when receiving a RETRIEVE request with Result Content set to 7 (original resource)
+					 *  
+					 */
+					testcase TC_CSE_DMR_RET_026_CNT() runs on Tester system CseSystem {
+						//Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template PrimitiveContent v_originalResource := m_primitiveContentContainer(m_contentCreateContainer);
+						var template RequestPrimitive v_createRequestAnnc := m_createContainerAnncBase;
+	  
+						v_ae1.start(f_CSE_DMR_RET_026(int3, v_originalResource, v_createRequestAnnc));//Container
+						v_ae1.done;
+					}				
+					testcase TC_CSE_DMR_RET_026_GRP() runs on Tester system CseSystem {
+						//Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template PrimitiveContent v_originalResource := m_primitiveContentGroup(m_contentCreateGroup(1, {"NotInitialized"}, omit, -, -, -, -));
+						var template RequestPrimitive v_createRequestAnnc := m_createGroupAnncBase;
+	  
+						v_ae1.start(f_CSE_DMR_RET_026(int9, v_originalResource, v_createRequestAnnc));//Group
+						v_ae1.done;
+					}
+					testcase TC_CSE_DMR_RET_026_ACP() runs on Tester system CseSystem {
+						//Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template PrimitiveContent v_originalResource := m_primitiveContentAccessControlPolicy(m_contentCreateAcp);
+						var template RequestPrimitive v_createRequestAnnc := m_createAcpAnncBase;
+	  
+						v_ae1.start(f_CSE_DMR_RET_026(int1, v_originalResource, v_createRequestAnnc));//AccessControlPolicy
+						v_ae1.done;
+					}
+					testcase TC_CSE_DMR_RET_026_SCH() runs on Tester system CseSystem {
+						//Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template PrimitiveContent v_originalResource := m_primitiveContentSchedule(m_contentCreateSchedule);
+						var template RequestPrimitive v_createRequestAnnc := m_createScheduleAnncBase;
+	  
+						v_ae1.start(f_CSE_DMR_RET_026(int18, v_originalResource, v_createRequestAnnc));//Container
+						v_ae1.done;
+					}
+					testcase TC_CSE_DMR_RET_026_TS() runs on Tester system CseSystem {
+						//Local variables
+						var AeSimu v_ae1 := AeSimu.create("AE1") alive;
+						var template PrimitiveContent v_originalResource := m_primitiveContentTimeSeries(m_contentCreateTimeSeries);
+						var template RequestPrimitive v_createRequestAnnc := m_createTimeSeriesAnncBase;
+	  
+						v_ae1.start(f_CSE_DMR_RET_026(int29, v_originalResource, v_createRequestAnnc));//TimeSeries
+						v_ae1.done;
+					}
+				} //end group g_CSE_DMR_RET_026
+								
 			}//end group Retrieve
 			
 			group Update {