diff --git a/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java b/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java
index d7214c4134e38adee1fbce93d8b92e3100e1f5d8..cd5a5022e5c4d6df41acf94b4e31ff25654817dc 100644
--- a/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java
+++ b/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java
@@ -539,6 +539,7 @@ public class ServiceOrderRepoService {
 		
 		ServiceOrder so = this.findByUuid(id);
 		boolean stateChanged = false;
+		boolean expectedCompletionDateChanged = false;
 
 		//logger.info("so:" + so.toString());		
 		for (ServiceOrderItem oi : so.getOrderItem() ) {
@@ -590,7 +591,7 @@ public class ServiceOrderRepoService {
 
 		if ( serviceOrderUpd.getExpectedCompletionDate()!= null ) {
 			so.setExpectedCompletionDate(serviceOrderUpd.getExpectedCompletionDate());
-
+			expectedCompletionDateChanged = true;
 		}
 
 		if ( serviceOrderUpd.getStartDate()!= null ) {
@@ -655,8 +656,15 @@ public class ServiceOrderRepoService {
 			so.addNoteItem(noteItem);				
 		}
 		
-		
-		
+		// Update each Service's end date to the updated Service Order's expected completion date
+		if (expectedCompletionDateChanged) {
+			List<String> services = serviceRepoService.getServicesFromOrderID(id);
+
+			for (String serviceId : services) {
+				org.etsi.osl.tmf.sim638.model.Service service = serviceRepoService.findByUuid(serviceId);
+				service.setEndDate(so.getExpectedCompletionDate());
+			}
+		}
 
 		
 
diff --git a/src/test/java/org/etsi/osl/services/api/ServiceOrderIntegrationTest.java b/src/test/java/org/etsi/osl/services/api/ServiceOrderIntegrationTest.java
index 3368f21209ed646541655f035e8bce49139067ce..017804bfc044adbd710d2f7999d0fc1dc7696406 100644
--- a/src/test/java/org/etsi/osl/services/api/ServiceOrderIntegrationTest.java
+++ b/src/test/java/org/etsi/osl/services/api/ServiceOrderIntegrationTest.java
@@ -33,6 +33,7 @@ import java.net.URI;
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
 import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.RoutesBuilder;
@@ -355,9 +356,19 @@ public class ServiceOrderIntegrationTest {
 		ServiceOrder sspeccr1SO = JsonUtils.toJsonObj(sspectextSO, ServiceOrder.class);
 
 		assertThat(sspeccr1SO).isNotNull();
-		
-		
-		
+
+		// Ensure that all Services' end dates were updated correctly
+		boolean allSupportingServicesEndDatesUpdatedToServiceOrderExpectedCompletionDate = true;
+		List<String> services = serviceRepoService.getServicesFromOrderID(responseSO.getId());
+
+		for (String serviceId : services) {
+			Service service = serviceRepoService.findByUuid(serviceId);
+			if (!service.getEndDate().equals(responseSOUpd.getExpectedCompletionDate())) {
+				allSupportingServicesEndDatesUpdatedToServiceOrderExpectedCompletionDate = false;
+				break;
+			}
+		}
+		assertThat(allSupportingServicesEndDatesUpdatedToServiceOrderExpectedCompletionDate).isTrue();
 	}
 
 	@WithMockUser(username="osadmin", roles = {"USER"})