diff --git a/app/controllers/authenticated/document.js b/app/controllers/authenticated/document.js
index 13773048303dc5fa730cc4f6b6dceca9e03a5ecf..918a92cdef0a5903f136123b34155fbc288ec049 100644
--- a/app/controllers/authenticated/document.js
+++ b/app/controllers/authenticated/document.js
@@ -68,7 +68,22 @@ export default class DocumentController extends DualPanelBaseController {
 
   @action
   onDuplicatePanel() {
-    console.log(`onDuplicatePanel`);
-  }
+    let document_id = this.router.currentRoute.params['document_id'],
+      query_params;
 
+    query_params = {
+      'queryParams': {
+        'extra_id': document_id,
+        'extra_type': 'doc'
+      }
+    }
+
+    if (this.extra_id) {
+      this.router.transitionTo(
+        'authenticated.document',
+        document_id,
+        query_params
+      );
+    }
+  }
 }
diff --git a/app/controllers/authenticated/nodes.js b/app/controllers/authenticated/nodes.js
index 1afc9d61dcf98f37204d63a8f2ff45107722e10c..4cd2e4b4c74d93a4a95afeb3a32caaaebe4125ee 100644
--- a/app/controllers/authenticated/nodes.js
+++ b/app/controllers/authenticated/nodes.js
@@ -68,6 +68,22 @@ export default class NodesController extends DualPanelBaseController {
 
   @action
   onDuplicatePanel() {
-    console.log(`onDuplicatePanel`);
+    let node_id = this.router.currentRoute.params['node_id'],
+      query_params;
+
+    query_params = {
+      'queryParams': {
+        'extra_id': node_id,
+        'extra_type': 'folder'
+      }
+    }
+
+    if (this.extra_id) {
+        this.router.transitionTo(
+          'authenticated.nodes',
+          node_id,
+          query_params
+        );
+    }
   }
 }