diff --git a/app/code/Magento/Catalog/etc/di.xml b/app/code/Magento/Catalog/etc/di.xml
index 075410d632c6ae4d7d85c244570a88af0cbcab4d..7e4742bd14d1eee1955cae44163a26e443271fcd 100644
--- a/app/code/Magento/Catalog/etc/di.xml
+++ b/app/code/Magento/Catalog/etc/di.xml
@@ -542,10 +542,10 @@
         <arguments>
             <argument name="operations" xsi:type="array">
                 <item name="default" xsi:type="array">
-                    <item name="read" xsi:type="object">Magento\Framework\Model\Operation\Read</item>
-                    <item name="create" xsi:type="object">Magento\Framework\Model\Operation\Write\Create</item>
-                    <item name="update" xsi:type="object">Magento\Framework\Model\Operation\Write\Update</item>
-                    <item name="delete" xsi:type="object">Magento\Framework\Model\Operation\Write\Delete</item>
+                    <item name="read" xsi:type="string">Magento\Framework\Model\Operation\Read</item>
+                    <item name="create" xsi:type="string">Magento\Framework\Model\Operation\Write\Create</item>
+                    <item name="update" xsi:type="string">Magento\Framework\Model\Operation\Write\Update</item>
+                    <item name="delete" xsi:type="string">Magento\Framework\Model\Operation\Write\Delete</item>
                 </item>
             </argument>
         </arguments>
diff --git a/app/code/Magento/CatalogRule/etc/di.xml b/app/code/Magento/CatalogRule/etc/di.xml
index 5accde1deb86c0d4085f2a4837baf6b8e8dff630..e5244cb01dda1bc59ecb10574e85d845ebbb8272 100644
--- a/app/code/Magento/CatalogRule/etc/di.xml
+++ b/app/code/Magento/CatalogRule/etc/di.xml
@@ -79,10 +79,10 @@
         <arguments>
             <argument name="operations" xsi:type="array">
                 <item name="default" xsi:type="array">
-                    <item name="read" xsi:type="object">Magento\Framework\Model\Operation\Read</item>
-                    <item name="create" xsi:type="object">Magento\Framework\Model\Operation\Write\Create</item>
-                    <item name="update" xsi:type="object">Magento\Framework\Model\Operation\Write\Update</item>
-                    <item name="delete" xsi:type="object">Magento\Framework\Model\Operation\Write\Delete</item>
+                    <item name="read" xsi:type="string">Magento\Framework\Model\Operation\Read</item>
+                    <item name="create" xsi:type="string">Magento\Framework\Model\Operation\Write\Create</item>
+                    <item name="update" xsi:type="string">Magento\Framework\Model\Operation\Write\Update</item>
+                    <item name="delete" xsi:type="string">Magento\Framework\Model\Operation\Write\Delete</item>
                 </item>
             </argument>
         </arguments>
diff --git a/lib/internal/Magento/Framework/Model/OrchestratorPool.php b/lib/internal/Magento/Framework/Model/OrchestratorPool.php
index 0caf854067e16f56592c3b5a319c13c6faf39f1d..36d0eca158f09ec4d7db4af8a5eb92e117649079 100644
--- a/lib/internal/Magento/Framework/Model/OrchestratorPool.php
+++ b/lib/internal/Magento/Framework/Model/OrchestratorPool.php
@@ -6,6 +6,7 @@
 
 namespace Magento\Framework\Model;
 
+use Magento\Framework\ObjectManagerInterface as ObjectManager;
 /**
  * Class Orchestrator
  */
@@ -16,13 +17,21 @@ class OrchestratorPool
      */
     protected $operations;
 
+    /**
+     * @var ObjectManager
+     */
+    protected $objectManager;
 
     /**
-     * @param array $operations
+     * OrchestratorPool constructor.
+     * @param ObjectManager $objectManager
+     * @param $operations
      */
     public function __construct(
+        ObjectManager $objectManager,
         $operations
     ) {
+        $this->objectManager = $objectManager;
         $this->operations = $operations;
     }
 
@@ -34,12 +43,10 @@ class OrchestratorPool
      */
     public function getWriteOperation($entityType, $operationName)
     {
-        if (!isset($this->operations[$entityType][$operationName])
-            || !$this->operations[$entityType][$operationName] instanceof Operation\WriteInterface
-        ) {
-            return $this->operations['default'][$operationName];
+        if (!isset($this->operations[$entityType][$operationName])) {
+            return $this->objectManager->get($this->operations['default'][$operationName]);
         }
-        return $this->operations[$entityType][$operationName];
+        return $this->objectManager->get($this->operations[$entityType][$operationName]);
     }
 
     /**
@@ -49,12 +56,9 @@ class OrchestratorPool
      */
     public function getReadOperation($entityType)
     {
-        //TODO: remove interfaces Read and Write
-        if (!isset($this->operations[$entityType]['read'])
-            || !$this->operations[$entityType]['read'] instanceof Operation\ReadInterface
-        ) {
-            return $this->operations['default']['read'];
+        if (!isset($this->operations[$entityType]['read'])) {
+            return $this->objectManager->get($this->operations['default']['read']);
         }
-        return $this->operations[$entityType]['read'];
+        return $this->objectManager->get($this->operations[$entityType]['read']);
     }
 }
diff --git a/lib/internal/Magento/Framework/Model/Test/Unit/OrchestratorPoolTest.php b/lib/internal/Magento/Framework/Model/Test/Unit/OrchestratorPoolTest.php
index 219c96c976b8bb38aeb376a5a44a2deb453c086a..2a22ac8fc7fcc443614d50de55da6745f193c727 100644
--- a/lib/internal/Magento/Framework/Model/Test/Unit/OrchestratorPoolTest.php
+++ b/lib/internal/Magento/Framework/Model/Test/Unit/OrchestratorPoolTest.php
@@ -12,12 +12,29 @@ class OrchestratorPoolTest extends \PHPUnit_Framework_TestCase
      */
     protected $model;
 
+    /**
+     * @var \Magento\Framework\ObjectManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $objectManagerMock;
+
+    /**
+     * @var \Magento\Framework\Model\Operation\WriteInterface
+     */
+    protected $writeOperationMock;
+
+    /**
+     * @var \Magento\Framework\Model\Operation\ReadInterface
+     */
+    protected $readOperationMock;
+
     public function setUp()
     {
-        $writeOperationInstance = $this->getMockBuilder('Magento\Framework\Model\Operation\WriteInterface')
+        $this->objectManagerMock = $this->getMockBuilder('Magento\Framework\ObjectManagerInterface')
+            ->getMock();
+        $this->writeOperationMock = $this->getMockBuilder('Magento\Framework\Model\Operation\WriteInterface')
             ->disableOriginalConstructor()
             ->getMock();
-        $readOperationInstance = $this->getMockBuilder('Magento\Framework\Model\Operation\WriteInterface')
+        $this->readOperationMock = $this->getMockBuilder('Magento\Framework\Model\Operation\ReadInterface')
             ->disableOriginalConstructor()
             ->getMock();
         $operations = [
@@ -27,48 +44,56 @@ class OrchestratorPoolTest extends \PHPUnit_Framework_TestCase
             ],
             'test_write_entity_type' =>
                 [
-                    'write' => $writeOperationInstance,
-                    'read' => $readOperationInstance
+                    'write' => 'WriteOperation',
+                    'read' => 'ReadOperation'
                 ],
             'test_read_entity_type' =>
                 [
-                    'read' => $readOperationInstance
+                    'read' => 'ReadOperation'
                 ]
         ];
-        $this->model = new \Magento\Framework\Model\OrchestratorPool($operations);
+        $this->model = new \Magento\Framework\Model\OrchestratorPool($this->objectManagerMock, $operations);
     }
 
     public function testGetWriteOperationDefault()
     {
         $entityType = 'not_isset_test_entity';
         $operationName = 'write';
-
-        $this->assertEquals('Write_Operation', $this->model->getWriteOperation($entityType, $operationName));
+        $this->objectManagerMock->expects($this->once())
+            ->method('get')
+            ->with('Write_Operation')
+            ->willReturn($this->writeOperationMock);
+        $this->assertEquals($this->writeOperationMock, $this->model->getWriteOperation($entityType, $operationName));
     }
 
     public function testGetWriteOperation()
     {
         $entityType = 'test_write_entity_type';
         $operationName = 'write';
-        $this->assertInstanceOf(
-            'Magento\Framework\Model\Operation\WriteInterface',
-            $this->model->getWriteOperation($entityType, $operationName)
-        );
+        $this->objectManagerMock->expects($this->once())
+            ->method('get')
+            ->with('WriteOperation')
+            ->willReturn($this->writeOperationMock);
+        $this->assertEquals($this->writeOperationMock, $this->model->getWriteOperation($entityType, $operationName));
     }
 
     public function testGetReadOperationDefault()
     {
-        $entityType = 'test_read_entity_type';
-        $this->assertEquals('Read_Operation', $this->model->getReadOperation($entityType));
+        $entityType = 'not_isset_test_entity';
+        $this->objectManagerMock->expects($this->once())
+            ->method('get')
+            ->with('Read_Operation')
+            ->willReturn($this->readOperationMock);
+        $this->assertEquals($this->readOperationMock, $this->model->getReadOperation($entityType));
     }
 
     public function testGetReadOperation()
     {
         $entityType = 'test_read_entity_type';
-        $operationName = 'read';
-        $this->assertInstanceOf(
-            'Magento\Framework\Model\Operation\WriteInterface',
-            $this->model->getWriteOperation($entityType, $operationName)
-        );
+        $this->objectManagerMock->expects($this->once())
+            ->method('get')
+            ->with('ReadOperation')
+            ->willReturn($this->readOperationMock);
+        $this->assertEquals($this->readOperationMock, $this->model->getReadOperation($entityType));
     }
 }