diff --git a/app/code/Magento/Backend/Ui/Component/Control/DeleteButton.php b/app/code/Magento/Backend/Ui/Component/Control/DeleteButton.php
new file mode 100644
index 000000000000..3a5875fd1a0f
--- /dev/null
+++ b/app/code/Magento/Backend/Ui/Component/Control/DeleteButton.php
@@ -0,0 +1,93 @@
+request = $request;
+ $this->urlBuilder = $urlBuilder;
+ $this->confirmationMessage = $confirmationMessage;
+ $this->idFieldName = $idFieldName;
+ $this->deleteRoutePath = $deleteRoutePath;
+ $this->sortOrder = $sortOrder;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getButtonData()
+ {
+ $data = [];
+ $id = $this->request->getParam($this->idFieldName);
+ if (null !== $id) {
+ $url = $this->urlBuilder->getUrl($this->deleteRoutePath);
+ $data = [
+ 'label' => __('Delete'),
+ 'class' => 'delete',
+ 'on_click' =>
+ "deleteConfirm('{$this->confirmationMessage}', '{$url}', {data:{{$this->idFieldName}:{$id}}})",
+ 'sort_order' => $this->sortOrder,
+ ];
+ }
+ return $data;
+ }
+}
diff --git a/app/code/Magento/Inventory/Controller/Adminhtml/Stock/Delete.php b/app/code/Magento/Inventory/Controller/Adminhtml/Stock/Delete.php
new file mode 100644
index 000000000000..1f916618f0e4
--- /dev/null
+++ b/app/code/Magento/Inventory/Controller/Adminhtml/Stock/Delete.php
@@ -0,0 +1,71 @@
+stockRepository = $stockRepository;
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function execute()
+ {
+ $resultRedirect = $this->resultRedirectFactory->create();
+
+ $stockId = $this->getRequest()->getPost(StockInterface::STOCK_ID);
+ if ($stockId === null) {
+ $this->messageManager->addErrorMessage(__('Wrong request.'));
+ return $resultRedirect->setPath('*/*');
+ }
+
+ try {
+ $this->stockRepository->deleteById($stockId);
+ $this->messageManager->addSuccessMessage(__('The Stock has been deleted.'));
+ $resultRedirect->setPath('*/*');
+ } catch (NoSuchEntityException $e) {
+ $this->messageManager->addErrorMessage(__('Stock with id "%1" does not exist.', $stockId));
+ $resultRedirect->setPath('*/*');
+ } catch (CouldNotDeleteException $e) {
+ $this->messageManager->addErrorMessage($e->getMessage());
+ $resultRedirect->setPath('*/*/edit', [
+ StockInterface::STOCK_ID => $stockId,
+ '_current' => true,
+ ]);
+ }
+ return $resultRedirect;
+ }
+}
diff --git a/app/code/Magento/Inventory/Controller/Adminhtml/Stock/MassDelete.php b/app/code/Magento/Inventory/Controller/Adminhtml/Stock/MassDelete.php
new file mode 100644
index 000000000000..6fd7dd45f7b0
--- /dev/null
+++ b/app/code/Magento/Inventory/Controller/Adminhtml/Stock/MassDelete.php
@@ -0,0 +1,73 @@
+stockRepository = $stockRepository;
+ $this->massActionFilter = $massActionFilter;
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function execute()
+ {
+ if ($this->getRequest()->isPost() !== true) {
+ $this->messageManager->addErrorMessage(__('Wrong request.'));
+ return $this->resultRedirectFactory->create()->setPath('*/*');
+ }
+
+ $deletedItemsCount = 0;
+ foreach ($this->massActionFilter->getIds() as $id) {
+ try {
+ $this->stockRepository->deleteById($id);
+ $deletedItemsCount++;
+ } catch (CouldNotDeleteException $e) {
+ $errorMessage = __('[ID: %1] ', $id) . $e->getMessage();
+ $this->messageManager->addErrorMessage($errorMessage);
+ }
+ }
+ $this->messageManager->addSuccessMessage(__('You deleted %1 Stock(s).', $deletedItemsCount));
+
+ return $this->resultRedirectFactory->create()->setPath('*/*');
+ }
+}
diff --git a/app/code/Magento/Inventory/Ui/Component/MassAction/Filter.php b/app/code/Magento/Inventory/Ui/Component/MassAction/Filter.php
new file mode 100644
index 000000000000..c3d6133bb71e
--- /dev/null
+++ b/app/code/Magento/Inventory/Ui/Component/MassAction/Filter.php
@@ -0,0 +1,48 @@
+filter = $filter;
+ }
+
+ /**
+ * Get ids from search filter
+ *
+ * @return array
+ */
+ public function getIds()
+ {
+ $this->filter->applySelectionOnTargetProvider();
+ $component = $this->filter->getComponent();
+ $dataProvider = $component->getContext()->getDataProvider();
+ $searchResult = $dataProvider->getSearchResult();
+
+ return array_map(function (DocumentInterface $item) {
+ return $item->getId();
+ }, $searchResult->getItems());
+ }
+}
diff --git a/app/code/Magento/Inventory/etc/adminhtml/di.xml b/app/code/Magento/Inventory/etc/adminhtml/di.xml
index 1d929d98399f..44ee631ed0bf 100644
--- a/app/code/Magento/Inventory/etc/adminhtml/di.xml
+++ b/app/code/Magento/Inventory/etc/adminhtml/di.xml
@@ -17,6 +17,14 @@
inventory_stock_form.inventory_stock_form
+
+
+ Are you sure you want to delete this stock?
+ Magento\InventoryApi\Api\Data\StockInterface::STOCK_ID
+ */*/delete
+ 30
+
+
diff --git a/app/code/Magento/Inventory/view/adminhtml/ui_component/inventory_stock_form.xml b/app/code/Magento/Inventory/view/adminhtml/ui_component/inventory_stock_form.xml
index 8fd88706bcdd..50e3b47b127a 100644
--- a/app/code/Magento/Inventory/view/adminhtml/ui_component/inventory_stock_form.xml
+++ b/app/code/Magento/Inventory/view/adminhtml/ui_component/inventory_stock_form.xml
@@ -29,6 +29,7 @@
reset
+
diff --git a/app/code/Magento/Inventory/view/adminhtml/ui_component/inventory_stock_listing.xml b/app/code/Magento/Inventory/view/adminhtml/ui_component/inventory_stock_listing.xml
index abc7abaadb38..04001ecf931f 100644
--- a/app/code/Magento/Inventory/view/adminhtml/ui_component/inventory_stock_listing.xml
+++ b/app/code/Magento/Inventory/view/adminhtml/ui_component/inventory_stock_listing.xml
@@ -57,7 +57,19 @@
-
+
+
+
+
+ Delete selected items?
+ Delete items
+
+
+ delete
+
+
+
+