diff --git a/src/slice/service/SliceServiceServicerImpl.py b/src/slice/service/SliceServiceServicerImpl.py
index d693abd8f3470fe59d5664073c2f3c50f53234e2..413750662410dd936575463d44355c30708aff28 100644
--- a/src/slice/service/SliceServiceServicerImpl.py
+++ b/src/slice/service/SliceServiceServicerImpl.py
@@ -12,12 +12,14 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from typing import Optional
 import grpc, json, logging #, deepdiff
 from common.proto.context_pb2 import (
     Empty, Service, ServiceId, ServiceStatusEnum, ServiceTypeEnum, Slice, SliceId, SliceStatusEnum)
 from common.proto.slice_pb2_grpc import SliceServiceServicer
 from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_method
 from common.tools.context_queries.InterDomain import is_multi_domain
+from common.tools.context_queries.Slice import get_slice
 from common.tools.grpc.ConfigRules import copy_config_rules
 from common.tools.grpc.Constraints import copy_constraints
 from common.tools.grpc.EndPointIds import copy_endpoint_ids
@@ -37,29 +39,32 @@ class SliceServiceServicerImpl(SliceServiceServicer):
         LOGGER.debug('Servicer Created')
 
     def create_update(self, request : Slice) -> SliceId:
+        # Set slice status to "SERVICESTATUS_PLANNED" to ensure rest of components are aware the slice is
+        # being modified.
         context_client = ContextClient()
-        try:
-            _slice = context_client.GetSlice(request.slice_id)
-            #json_current_slice = grpc_message_to_json(_slice)
-        except: # pylint: disable=bare-except
-            #json_current_slice = {}
-            slice_request = Slice()
-            slice_request.slice_id.CopyFrom(request.slice_id) # pylint: disable=no-member
-            slice_request.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_PLANNED # pylint: disable=no-member
-            context_client.SetSlice(slice_request)
-            _slice = context_client.GetSlice(request.slice_id)
+        slice_ro : Optional[Service] = get_slice(
+            context_client, request.slice_id.slice_uuid.uuid, request.slice_id.context_id.context_uuid.uuid,
+            rw_copy=False)
+
+        slice_rw = Slice()
+        slice_rw.CopyFrom(request if slice_ro is None else slice_ro)
+        slice_rw.name = request.name
+        slice_rw.slice_owner.CopyFrom(request.slice_owner)                          # pylint: disable=no-member
+        slice_rw.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_PLANNED    # pylint: disable=no-member
 
-        slice_request = Slice()
-        slice_request.CopyFrom(_slice)
+        copy_endpoint_ids(request.slice_endpoint_ids,        slice_rw.slice_endpoint_ids       ) # pylint: disable=no-member
+        copy_constraints (request.slice_constraints,         slice_rw.slice_constraints        ) # pylint: disable=no-member
+        copy_config_rules(request.slice_config.config_rules, slice_rw.slice_config.config_rules) # pylint: disable=no-member
 
-        if len(request.slice_endpoint_ids) < 2:
+        slice_id_with_uuids = context_client.SetSlice(slice_rw)
+
+        if len(slice_rw.slice_endpoint_ids) < 2: # pylint: disable=no-member
             # unable to identify the kind of slice; just update endpoints, constraints and config rules
             # update the slice in database, and return
             # pylint: disable=no-member
-            copy_endpoint_ids(request.slice_endpoint_ids, slice_request.slice_endpoint_ids)
-            copy_constraints(request.slice_constraints, slice_request.slice_constraints)
-            copy_config_rules(request.slice_config.config_rules, slice_request.slice_config.config_rules)
-            return context_client.SetSlice(slice_request)
+            return context_client.SetSlice(slice_rw)
+
+        slice_with_uuids = context_client.GetSlice(slice_id_with_uuids)
 
         #LOGGER.info('json_current_slice = {:s}'.format(str(json_current_slice)))
         #json_updated_slice = grpc_message_to_json(request)
@@ -67,9 +72,9 @@ class SliceServiceServicerImpl(SliceServiceServicer):
         #changes = deepdiff.DeepDiff(json_current_slice, json_updated_slice)
         #LOGGER.info('changes = {:s}'.format(str(changes)))
 
-        if is_multi_domain(context_client, request.slice_endpoint_ids):
+        if is_multi_domain(context_client, slice_with_uuids.slice_endpoint_ids):
             interdomain_client = InterdomainClient()
-            slice_id = interdomain_client.RequestSlice(request)
+            slice_id = interdomain_client.RequestSlice(slice_with_uuids)
             slice_ = context_client.GetSlice(slice_id)
             slice_active = Slice()
             slice_active.CopyFrom(slice_)
@@ -80,8 +85,8 @@ class SliceServiceServicerImpl(SliceServiceServicer):
         # Local domain slice
         service_id = ServiceId()
         # pylint: disable=no-member
-        context_uuid = service_id.context_id.context_uuid.uuid = request.slice_id.context_id.context_uuid.uuid
-        service_uuid = service_id.service_uuid.uuid = request.slice_id.slice_uuid.uuid
+        context_uuid = service_id.context_id.context_uuid.uuid = slice_with_uuids.slice_id.context_id.context_uuid.uuid
+        service_uuid = service_id.service_uuid.uuid = slice_with_uuids.slice_id.slice_uuid.uuid
 
         service_client = ServiceClient()
         try:
@@ -136,13 +141,13 @@ class SliceServiceServicerImpl(SliceServiceServicer):
 
         service_client.UpdateService(service_request)
 
-        copy_endpoint_ids(request.slice_endpoint_ids, slice_request.slice_endpoint_ids)
-        copy_constraints(request.slice_constraints, slice_request.slice_constraints)
-        copy_config_rules(request.slice_config.config_rules, slice_request.slice_config.config_rules)
+        #copy_endpoint_ids(request.slice_endpoint_ids, slice_with_uuids.slice_endpoint_ids)
+        #copy_constraints(request.slice_constraints, slice_with_uuids.slice_constraints)
+        #copy_config_rules(request.slice_config.config_rules, slice_with_uuids.slice_config.config_rules)
 
-        update_service_ids(slice_request.slice_service_ids, context_uuid, service_uuid)
-        context_client.SetSlice(slice_request)
-        slice_id = slice_request.slice_id
+        update_service_ids(slice_with_uuids.slice_service_ids, context_uuid, service_uuid)
+        context_client.SetSlice(slice_with_uuids)
+        slice_id = slice_with_uuids.slice_id
 
         slice_ = context_client.GetSlice(slice_id)
         slice_active = Slice()
@@ -194,14 +199,14 @@ class SliceServiceServicerImpl(SliceServiceServicer):
         else:
             current_slice = Slice()
             current_slice.CopyFrom(_slice)
-            current_slice.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_DEINIT
+            current_slice.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_DEINIT # pylint: disable=no-member
             context_client.SetSlice(current_slice)
 
             service_client = ServiceClient()
             for service_id in _slice.slice_service_ids:
                 current_slice = Slice()
-                current_slice.slice_id.CopyFrom(_slice.slice_id)
-                slice_service_id = current_slice.slice_service_ids.add()
+                current_slice.slice_id.CopyFrom(_slice.slice_id) # pylint: disable=no-member
+                slice_service_id = current_slice.slice_service_ids.add() # pylint: disable=no-member
                 slice_service_id.CopyFrom(service_id)
                 context_client.UnsetSlice(current_slice)