diff --git a/proto/interdomain.proto b/proto/interdomain.proto
index 9b02c291871505e1c65ffe68256fc2c8829ed9af..735d4c1cd3ec92de41a0a0a1bc91de6acc846cd9 100644
--- a/proto/interdomain.proto
+++ b/proto/interdomain.proto
@@ -19,6 +19,7 @@ import "context.proto";
 
 service InterdomainService {
   rpc Authenticate              (context.TeraFlowController) returns (context.AuthenticationResult) {}
+  rpc RequestSlice              (context.Slice             ) returns (context.SliceId             ) {}
   rpc LookUpSlice               (context.Slice             ) returns (context.SliceId             ) {}
   rpc OrderSliceFromCatalog     (context.Slice             ) returns (context.Slice               ) {}
   rpc CreateSliceAndAddToCatalog(context.Slice             ) returns (context.Slice               ) {}
diff --git a/proto/slice.proto b/proto/slice.proto
index ef6567d7895fb8e718fb2fd9103347e74444c2fc..9c518c9da05f850f209dc8a3f8d945fff4aced2b 100644
--- a/proto/slice.proto
+++ b/proto/slice.proto
@@ -18,6 +18,7 @@ package slice;
 import "context.proto";
 
 service SliceService {
-  rpc CreateUpdateSlice (context.Slice) returns (context.SliceId) {}
-  rpc DeleteSlice       (context.Slice) returns (context.Empty  ) {}
+  rpc CreateSlice(context.Slice  ) returns (context.SliceId) {}
+  rpc UpdateSlice(context.Slice  ) returns (context.SliceId) {}
+  rpc DeleteSlice(context.SliceId) returns (context.Empty  ) {}
 }
diff --git a/src/interdomain/proto/interdomain_pb2.py b/src/interdomain/proto/interdomain_pb2.py
index 9745bafebfc76677333faa75d3418c71ef65f34f..3f2dff89f4f102cd6e19c52417f26504b8015f21 100644
--- a/src/interdomain/proto/interdomain_pb2.py
+++ b/src/interdomain/proto/interdomain_pb2.py
@@ -20,7 +20,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
   syntax='proto3',
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x11interdomain.proto\x12\x0binterdomain\x1a\rcontext.proto2\x90\x02\n\x12InterdomainService\x12L\n\x0c\x41uthenticate\x12\x1b.context.TeraFlowController\x1a\x1d.context.AuthenticationResult\"\x00\x12\x31\n\x0bLookUpSlice\x12\x0e.context.Slice\x1a\x10.context.SliceId\"\x00\x12\x39\n\x15OrderSliceFromCatalog\x12\x0e.context.Slice\x1a\x0e.context.Slice\"\x00\x12>\n\x1a\x43reateSliceAndAddToCatalog\x12\x0e.context.Slice\x1a\x0e.context.Slice\"\x00\x62\x06proto3'
+  serialized_pb=b'\n\x11interdomain.proto\x12\x0binterdomain\x1a\rcontext.proto2\xc4\x02\n\x12InterdomainService\x12\x32\n\x0cRequestSlice\x12\x0e.context.Slice\x1a\x10.context.SliceId\"\x00\x12L\n\x0c\x41uthenticate\x12\x1b.context.TeraFlowController\x1a\x1d.context.AuthenticationResult\"\x00\x12\x31\n\x0bLookUpSlice\x12\x0e.context.Slice\x1a\x10.context.SliceId\"\x00\x12\x39\n\x15OrderSliceFromCatalog\x12\x0e.context.Slice\x1a\x0e.context.Slice\"\x00\x12>\n\x1a\x43reateSliceAndAddToCatalog\x12\x0e.context.Slice\x1a\x0e.context.Slice\"\x00\x62\x06proto3'
   ,
   dependencies=[context__pb2.DESCRIPTOR,])
 
@@ -38,12 +38,22 @@ _INTERDOMAINSERVICE = _descriptor.ServiceDescriptor(
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
   serialized_start=50,
-  serialized_end=322,
+  serialized_end=374,
   methods=[
+  _descriptor.MethodDescriptor(
+    name='RequestSlice',
+    full_name='interdomain.InterdomainService.RequestSlice',
+    index=0,
+    containing_service=None,
+    input_type=context__pb2._SLICE,
+    output_type=context__pb2._SLICEID,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
   _descriptor.MethodDescriptor(
     name='Authenticate',
     full_name='interdomain.InterdomainService.Authenticate',
-    index=0,
+    index=1,
     containing_service=None,
     input_type=context__pb2._TERAFLOWCONTROLLER,
     output_type=context__pb2._AUTHENTICATIONRESULT,
@@ -53,7 +63,7 @@ _INTERDOMAINSERVICE = _descriptor.ServiceDescriptor(
   _descriptor.MethodDescriptor(
     name='LookUpSlice',
     full_name='interdomain.InterdomainService.LookUpSlice',
-    index=1,
+    index=2,
     containing_service=None,
     input_type=context__pb2._SLICE,
     output_type=context__pb2._SLICEID,
@@ -63,7 +73,7 @@ _INTERDOMAINSERVICE = _descriptor.ServiceDescriptor(
   _descriptor.MethodDescriptor(
     name='OrderSliceFromCatalog',
     full_name='interdomain.InterdomainService.OrderSliceFromCatalog',
-    index=2,
+    index=3,
     containing_service=None,
     input_type=context__pb2._SLICE,
     output_type=context__pb2._SLICE,
@@ -73,7 +83,7 @@ _INTERDOMAINSERVICE = _descriptor.ServiceDescriptor(
   _descriptor.MethodDescriptor(
     name='CreateSliceAndAddToCatalog',
     full_name='interdomain.InterdomainService.CreateSliceAndAddToCatalog',
-    index=3,
+    index=4,
     containing_service=None,
     input_type=context__pb2._SLICE,
     output_type=context__pb2._SLICE,
diff --git a/src/interdomain/proto/interdomain_pb2_grpc.py b/src/interdomain/proto/interdomain_pb2_grpc.py
index 60f142859e7c79388e04e71175ef3f4e70650941..0973228d0dd09b47353d93b36a4457290beb3068 100644
--- a/src/interdomain/proto/interdomain_pb2_grpc.py
+++ b/src/interdomain/proto/interdomain_pb2_grpc.py
@@ -14,6 +14,11 @@ class InterdomainServiceStub(object):
         Args:
             channel: A grpc.Channel.
         """
+        self.RequestSlice = channel.unary_unary(
+                '/interdomain.InterdomainService/RequestSlice',
+                request_serializer=context__pb2.Slice.SerializeToString,
+                response_deserializer=context__pb2.SliceId.FromString,
+                )
         self.Authenticate = channel.unary_unary(
                 '/interdomain.InterdomainService/Authenticate',
                 request_serializer=context__pb2.TeraFlowController.SerializeToString,
@@ -39,6 +44,12 @@ class InterdomainServiceStub(object):
 class InterdomainServiceServicer(object):
     """Missing associated documentation comment in .proto file."""
 
+    def RequestSlice(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
     def Authenticate(self, request, context):
         """Missing associated documentation comment in .proto file."""
         context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@@ -66,6 +77,11 @@ class InterdomainServiceServicer(object):
 
 def add_InterdomainServiceServicer_to_server(servicer, server):
     rpc_method_handlers = {
+            'RequestSlice': grpc.unary_unary_rpc_method_handler(
+                    servicer.RequestSlice,
+                    request_deserializer=context__pb2.Slice.FromString,
+                    response_serializer=context__pb2.SliceId.SerializeToString,
+            ),
             'Authenticate': grpc.unary_unary_rpc_method_handler(
                     servicer.Authenticate,
                     request_deserializer=context__pb2.TeraFlowController.FromString,
@@ -96,6 +112,23 @@ def add_InterdomainServiceServicer_to_server(servicer, server):
 class InterdomainService(object):
     """Missing associated documentation comment in .proto file."""
 
+    @staticmethod
+    def RequestSlice(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/interdomain.InterdomainService/RequestSlice',
+            context__pb2.Slice.SerializeToString,
+            context__pb2.SliceId.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
     @staticmethod
     def Authenticate(request,
             target,
diff --git a/src/interdomain/proto/slice_pb2.py b/src/interdomain/proto/slice_pb2.py
index ac8b165db29f8d2210a438bc9cf551eadfb691b3..1e2a5f31cbbfa8f0d8ca664301b85d9e28a15782 100644
--- a/src/interdomain/proto/slice_pb2.py
+++ b/src/interdomain/proto/slice_pb2.py
@@ -20,7 +20,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
   syntax='proto3',
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x0bslice.proto\x12\x05slice\x1a\rcontext.proto2x\n\x0cSliceService\x12\x37\n\x11\x43reateUpdateSlice\x12\x0e.context.Slice\x1a\x10.context.SliceId\"\x00\x12/\n\x0b\x44\x65leteSlice\x12\x0e.context.Slice\x1a\x0e.context.Empty\"\x00\x62\x06proto3'
+  serialized_pb=b'\n\x0bslice.proto\x12\x05slice\x1a\rcontext.proto2\xa7\x01\n\x0cSliceService\x12\x31\n\x0b\x43reateSlice\x12\x0e.context.Slice\x1a\x10.context.SliceId\"\x00\x12\x31\n\x0bUpdateSlice\x12\x0e.context.Slice\x1a\x10.context.SliceId\"\x00\x12\x31\n\x0b\x44\x65leteSlice\x12\x10.context.SliceId\x1a\x0e.context.Empty\"\x00\x62\x06proto3'
   ,
   dependencies=[context__pb2.DESCRIPTOR,])
 
@@ -37,12 +37,12 @@ _SLICESERVICE = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=37,
-  serialized_end=157,
+  serialized_start=38,
+  serialized_end=205,
   methods=[
   _descriptor.MethodDescriptor(
-    name='CreateUpdateSlice',
-    full_name='slice.SliceService.CreateUpdateSlice',
+    name='CreateSlice',
+    full_name='slice.SliceService.CreateSlice',
     index=0,
     containing_service=None,
     input_type=context__pb2._SLICE,
@@ -51,11 +51,21 @@ _SLICESERVICE = _descriptor.ServiceDescriptor(
     create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
-    name='DeleteSlice',
-    full_name='slice.SliceService.DeleteSlice',
+    name='UpdateSlice',
+    full_name='slice.SliceService.UpdateSlice',
     index=1,
     containing_service=None,
     input_type=context__pb2._SLICE,
+    output_type=context__pb2._SLICEID,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+  _descriptor.MethodDescriptor(
+    name='DeleteSlice',
+    full_name='slice.SliceService.DeleteSlice',
+    index=2,
+    containing_service=None,
+    input_type=context__pb2._SLICEID,
     output_type=context__pb2._EMPTY,
     serialized_options=None,
     create_key=_descriptor._internal_create_key,
diff --git a/src/slice/proto/slice_pb2.py b/src/slice/proto/slice_pb2.py
index ac8b165db29f8d2210a438bc9cf551eadfb691b3..1e2a5f31cbbfa8f0d8ca664301b85d9e28a15782 100644
--- a/src/slice/proto/slice_pb2.py
+++ b/src/slice/proto/slice_pb2.py
@@ -20,7 +20,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
   syntax='proto3',
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x0bslice.proto\x12\x05slice\x1a\rcontext.proto2x\n\x0cSliceService\x12\x37\n\x11\x43reateUpdateSlice\x12\x0e.context.Slice\x1a\x10.context.SliceId\"\x00\x12/\n\x0b\x44\x65leteSlice\x12\x0e.context.Slice\x1a\x0e.context.Empty\"\x00\x62\x06proto3'
+  serialized_pb=b'\n\x0bslice.proto\x12\x05slice\x1a\rcontext.proto2\xa7\x01\n\x0cSliceService\x12\x31\n\x0b\x43reateSlice\x12\x0e.context.Slice\x1a\x10.context.SliceId\"\x00\x12\x31\n\x0bUpdateSlice\x12\x0e.context.Slice\x1a\x10.context.SliceId\"\x00\x12\x31\n\x0b\x44\x65leteSlice\x12\x10.context.SliceId\x1a\x0e.context.Empty\"\x00\x62\x06proto3'
   ,
   dependencies=[context__pb2.DESCRIPTOR,])
 
@@ -37,12 +37,12 @@ _SLICESERVICE = _descriptor.ServiceDescriptor(
   index=0,
   serialized_options=None,
   create_key=_descriptor._internal_create_key,
-  serialized_start=37,
-  serialized_end=157,
+  serialized_start=38,
+  serialized_end=205,
   methods=[
   _descriptor.MethodDescriptor(
-    name='CreateUpdateSlice',
-    full_name='slice.SliceService.CreateUpdateSlice',
+    name='CreateSlice',
+    full_name='slice.SliceService.CreateSlice',
     index=0,
     containing_service=None,
     input_type=context__pb2._SLICE,
@@ -51,11 +51,21 @@ _SLICESERVICE = _descriptor.ServiceDescriptor(
     create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
-    name='DeleteSlice',
-    full_name='slice.SliceService.DeleteSlice',
+    name='UpdateSlice',
+    full_name='slice.SliceService.UpdateSlice',
     index=1,
     containing_service=None,
     input_type=context__pb2._SLICE,
+    output_type=context__pb2._SLICEID,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+  _descriptor.MethodDescriptor(
+    name='DeleteSlice',
+    full_name='slice.SliceService.DeleteSlice',
+    index=2,
+    containing_service=None,
+    input_type=context__pb2._SLICEID,
     output_type=context__pb2._EMPTY,
     serialized_options=None,
     create_key=_descriptor._internal_create_key,
diff --git a/src/slice/proto/slice_pb2_grpc.py b/src/slice/proto/slice_pb2_grpc.py
index bcd736689fe02c51916e491c0dd73594aba47694..abc2d884f3a6fc45a530eb41b139190e24c258de 100644
--- a/src/slice/proto/slice_pb2_grpc.py
+++ b/src/slice/proto/slice_pb2_grpc.py
@@ -14,14 +14,19 @@ class SliceServiceStub(object):
         Args:
             channel: A grpc.Channel.
         """
-        self.CreateUpdateSlice = channel.unary_unary(
-                '/slice.SliceService/CreateUpdateSlice',
+        self.CreateSlice = channel.unary_unary(
+                '/slice.SliceService/CreateSlice',
+                request_serializer=context__pb2.Slice.SerializeToString,
+                response_deserializer=context__pb2.SliceId.FromString,
+                )
+        self.UpdateSlice = channel.unary_unary(
+                '/slice.SliceService/UpdateSlice',
                 request_serializer=context__pb2.Slice.SerializeToString,
                 response_deserializer=context__pb2.SliceId.FromString,
                 )
         self.DeleteSlice = channel.unary_unary(
                 '/slice.SliceService/DeleteSlice',
-                request_serializer=context__pb2.Slice.SerializeToString,
+                request_serializer=context__pb2.SliceId.SerializeToString,
                 response_deserializer=context__pb2.Empty.FromString,
                 )
 
@@ -29,7 +34,13 @@ class SliceServiceStub(object):
 class SliceServiceServicer(object):
     """Missing associated documentation comment in .proto file."""
 
-    def CreateUpdateSlice(self, request, context):
+    def CreateSlice(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def UpdateSlice(self, request, context):
         """Missing associated documentation comment in .proto file."""
         context.set_code(grpc.StatusCode.UNIMPLEMENTED)
         context.set_details('Method not implemented!')
@@ -44,14 +55,19 @@ class SliceServiceServicer(object):
 
 def add_SliceServiceServicer_to_server(servicer, server):
     rpc_method_handlers = {
-            'CreateUpdateSlice': grpc.unary_unary_rpc_method_handler(
-                    servicer.CreateUpdateSlice,
+            'CreateSlice': grpc.unary_unary_rpc_method_handler(
+                    servicer.CreateSlice,
+                    request_deserializer=context__pb2.Slice.FromString,
+                    response_serializer=context__pb2.SliceId.SerializeToString,
+            ),
+            'UpdateSlice': grpc.unary_unary_rpc_method_handler(
+                    servicer.UpdateSlice,
                     request_deserializer=context__pb2.Slice.FromString,
                     response_serializer=context__pb2.SliceId.SerializeToString,
             ),
             'DeleteSlice': grpc.unary_unary_rpc_method_handler(
                     servicer.DeleteSlice,
-                    request_deserializer=context__pb2.Slice.FromString,
+                    request_deserializer=context__pb2.SliceId.FromString,
                     response_serializer=context__pb2.Empty.SerializeToString,
             ),
     }
@@ -65,7 +81,7 @@ class SliceService(object):
     """Missing associated documentation comment in .proto file."""
 
     @staticmethod
-    def CreateUpdateSlice(request,
+    def CreateSlice(request,
             target,
             options=(),
             channel_credentials=None,
@@ -75,7 +91,24 @@ class SliceService(object):
             wait_for_ready=None,
             timeout=None,
             metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/slice.SliceService/CreateUpdateSlice',
+        return grpc.experimental.unary_unary(request, target, '/slice.SliceService/CreateSlice',
+            context__pb2.Slice.SerializeToString,
+            context__pb2.SliceId.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def UpdateSlice(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/slice.SliceService/UpdateSlice',
             context__pb2.Slice.SerializeToString,
             context__pb2.SliceId.FromString,
             options, channel_credentials,
@@ -93,7 +126,7 @@ class SliceService(object):
             timeout=None,
             metadata=None):
         return grpc.experimental.unary_unary(request, target, '/slice.SliceService/DeleteSlice',
-            context__pb2.Slice.SerializeToString,
+            context__pb2.SliceId.SerializeToString,
             context__pb2.Empty.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)