diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Category/Edit/Form.php b/app/code/Magento/Catalog/Block/Adminhtml/Category/Edit/Form.php
index 9cd66815ecf3e0b9307fe5732a92c968d894ad54..6ff14589e82ebfbe5435bbeef8a50cb03e45a0ae 100644
--- a/app/code/Magento/Catalog/Block/Adminhtml/Category/Edit/Form.php
+++ b/app/code/Magento/Catalog/Block/Adminhtml/Category/Edit/Form.php
@@ -93,7 +93,7 @@ class Form extends \Magento\Catalog\Block\Adminhtml\Category\AbstractCategory
                     'onclick' => "categoryDelete('" . $this->getUrl(
                         'catalog/*/delete',
                         ['_current' => true]
-                    ) . "', true, {$categoryId})",
+                    ) . "')",
                     'class' => 'delete'
                 ]
             );
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Delete.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Delete.php
index f5b053679733a438d0da357db58fc75858db8c7a..e50c9d38b9c070fee9a5d81b6d7f432e80d850b0 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Delete.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Delete.php
@@ -18,13 +18,13 @@ class Delete extends \Magento\Catalog\Controller\Adminhtml\Category
         $resultRedirect = $this->resultRedirectFactory->create();
 
         $categoryId = (int)$this->getRequest()->getParam('id');
+        $parentId = null;
         if ($categoryId) {
             try {
                 $category = $this->_objectManager->create('Magento\Catalog\Model\Category')->load($categoryId);
+                $parentId = $category->getParentId();
                 $this->_eventManager->dispatch('catalog_controller_category_delete', ['category' => $category]);
-
                 $this->_objectManager->get('Magento\Backend\Model\Auth\Session')->setDeletedPath($category->getPath());
-
                 $category->delete();
                 $this->messageManager->addSuccess(__('You deleted the category.'));
             } catch (\Magento\Framework\Model\Exception $e) {
@@ -35,6 +35,6 @@ class Delete extends \Magento\Catalog\Controller\Adminhtml\Category
                 return $resultRedirect->setPath('catalog/*/edit', ['_current' => true]);
             }
         }
-        return $resultRedirect->setPath('catalog/*/', ['_current' => true, 'id' => null]);
+        return $resultRedirect->setPath('catalog/*/', ['_current' => true, 'id' => $parentId]);
     }
 }
diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Edit.php b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Edit.php
index f17bfc3abd5c1630e0e93082724eb30a8f6e1b1a..7f6dde5cb3ee101c0d2ed9f1dc3b2c1c19cf213a 100644
--- a/app/code/Magento/Catalog/Controller/Adminhtml/Category/Edit.php
+++ b/app/code/Magento/Catalog/Controller/Adminhtml/Category/Edit.php
@@ -97,6 +97,7 @@ class Edit extends \Magento\Catalog\Controller\Adminhtml\Category
                     . $resultPage->getLayout()->getBlock('category.tree')
                         ->getBreadcrumbsJavascript($breadcrumbsPath, 'editingCategoryBreadcrumbs'),
                 'messages' => $resultPage->getLayout()->getMessagesBlock()->getGroupedHtml(),
+                'toolbar' => $resultPage->getLayout()->getBlock('page.actions.toolbar')->toHtml()
             ]);
             $this->_eventManager->dispatch(
                 'category_prepare_ajax_response',
diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/edit.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/edit.phtml
index 75b59da8d09aa3b5da4483c7fe22493056038a6d..d1d3ec2b11497fd593f8e7346144b79f4e321a0b 100644
--- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/edit.phtml
+++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/edit.phtml
@@ -34,21 +34,16 @@ require([
     * This routine get categoryId explicitly, so even if currently selected tree node is out of sync
     * with this form, we surely delete same category in the tree and at backend
     */
-    function categoryDelete(url, useAjax, categoryId) {
+    function categoryDelete(url) {
         if (confirm('<?php echo __('Are you sure you want to delete this category?') ?>')){
-            if (useAjax){
-                tree.nodeForDelete = categoryId;
-                updateContent(url, {}, true, true);
-            } else {
-                location.href = url;
-            }
+            location.href = url;
         }
     }
 
     /**
      * Update category content area
      */
-    function updateContent(url, params, refreshTree, deleteAction) {
+    function updateContent(url, params, refreshTree) {
         var node        = tree.getNodeById(tree.currentNodeId),
             parentNode  = node && node.parentNode,
             parentId,
@@ -64,23 +59,15 @@ require([
         }
 
         (function($){
-            var $categoryContainer = $('#category-edit-container');
+            var $categoryContainer = $('#category-edit-container'),
+                messagesContainer = $('.messages');
+            messagesContainer.html('');
             $.ajax({
                 url: url + (url.match(new RegExp('\\?')) ? '&isAjax=true' : '?isAjax=true' ),
                 data: params,
                 context: $('body'),
                 showLoader: true
             }).done(function(data){
-                if (deleteAction && parentNode) {
-                    parentId    = parentNode.id;
-
-                    redirectUrl = !parentNode.isRoot ?
-                        tree.buildUrl(parentId) :
-                        tree.getBaseUrl();
-
-                    location.href = redirectUrl;
-                }
-
                 if (data.content) {
                     $('.page-actions').floatingHeader('destroy');
                     try {
@@ -111,7 +98,10 @@ require([
                 }
 
                 if (data.messages && data.messages.length > 0) {
-                    $('.messages').html(data.messages);
+                    messagesContainer.html(data.messages);
+                }
+                if (data.toolbar) {
+                    $('[data-ui-id="page-actions-toolbar-content-header"]').replaceWith(data.toolbar)
                 }
             });
         })(jQuery);
diff --git a/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/Category/DeleteTest.php b/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/Category/DeleteTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..34b69eeaddef32fcd690ee77896c266fe734ff1c
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Catalog/Controller/Adminhtml/Category/DeleteTest.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
+ */
+namespace Magento\Catalog\Controller\Adminhtml\Category;
+
+use Magento\Framework\Message\MessageInterface;
+
+class DeleteTest extends \Magento\Backend\Utility\Controller
+{
+    /**
+     * @magentoDataFixture Magento/Catalog/_files/categories.php
+     */
+    public function testDeleteById()
+    {
+        $categoryId = 4;
+        $parentId = 3;
+        $this->getRequest()->setParam('id', $categoryId);
+
+        $this->dispatch('backend/catalog/category/delete/');
+
+        $this->assertNull($this->getCategoryById($categoryId));
+        $this->assertSessionMessages(
+            $this->equalTo(['You deleted the category.']),
+            MessageInterface::TYPE_SUCCESS
+        );
+        $this->assertRedirect($this->stringContains('catalog/category/index/id/' . $parentId));
+    }
+
+    /**
+     * Retrieve attribute set based on given name.
+     *
+     * @param int $categoryId
+     * @return \Magento\Catalog\Model\Category|null
+     */
+    protected function getCategoryById($categoryId)
+    {
+        $category = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
+            'Magento\Catalog\Model\Category'
+        )->load($categoryId);
+        return $category->getId() === null ? null : $category;
+    }
+}