diff --git a/module/execution/js/storykanban.ui.js b/module/execution/js/storykanban.ui.js
index f69ce8cd41..329f4e5d47 100644
--- a/module/execution/js/storykanban.ui.js
+++ b/module/execution/js/storykanban.ui.js
@@ -8,7 +8,7 @@ window.getItem = function(info)
}
const unlinkUrl = $.createLink('execution', 'unlinkStory', `executionID=${executionID}&story=${info.item.id}`);
- const unlinkBtn = ``;
+ const unlinkBtn = priv.canUnlinkStory ? `` : '';
const content = `
${info.item.pri}
diff --git a/module/execution/ui/storykanban.html.php b/module/execution/ui/storykanban.html.php
index 7eac7a91eb..e0c5333653 100644
--- a/module/execution/ui/storykanban.html.php
+++ b/module/execution/ui/storykanban.html.php
@@ -18,7 +18,7 @@ jsVar('hourUnit', $config->hourUnit);
jsVar('executionID', $executionID);
jsVar('priv', array(
'canViewStory' => common::hasPriv('execution', 'storyView'),
- 'canUnlinkStory' => common::hasPriv('execution', 'unlinkStory'),
+ 'canUnlinkStory' => (common::hasPriv('execution', 'unlinkStory') && $execution->hasProduct),
'canBatchChangeStage' => common::hasPriv('story', 'batchChangeStage')
));