diff --git a/grade/grading/form/guide/classes/grades/grader/gradingpanel/external/fetch.php b/grade/grading/form/guide/classes/grades/grader/gradingpanel/external/fetch.php
index 79d678359b22acbcd34d54555f462ed7758fad8e..66852d25cde241ddc8e07f2f0ded9b13a4f8a7f8 100644
--- a/grade/grading/form/guide/classes/grades/grader/gradingpanel/external/fetch.php
+++ b/grade/grading/form/guide/classes/grades/grader/gradingpanel/external/fetch.php
@@ -164,6 +164,7 @@ class fetch extends external_api {
         $fillings = $instance->get_guide_filling();
         $context = $controller->get_context();
         $definitionid = (int) $definition->id;
+        $options = json_decode($definition->options);
 
         // Set up some items we need to return on other interfaces.
         $gradegrade = \grade_grade::fetch(['itemid' => $gradeitem->get_grade_item()->id, 'userid' => $gradeduser->id]);
@@ -172,7 +173,7 @@ class fetch extends external_api {
 
         $criterion = [];
         if ($definition->guide_criteria) {
-            $criterion = array_map(function($criterion) use ($definitionid, $fillings, $context) {
+            $criterion = array_map(function($criterion) use ($definitionid, $fillings, $context, $options) {
                 $result = [
                     'id' => $criterion['id'],
                     'name' => $criterion['shortname'],
@@ -191,6 +192,7 @@ class fetch extends external_api {
                         $criterion['descriptionmarkers'],
                         (int) $criterion['descriptionmarkersformat']
                     ),
+                    'showdefinition' => $options->alwaysshowdefinition,
                     'score' => null,
                     'remark' => null,
                 ];
@@ -268,6 +270,7 @@ class fetch extends external_api {
                         'descriptionmarkers' => new external_value(PARAM_RAW, 'The description of the criterion for markers'),
                         'score' => new external_value(PARAM_FLOAT, 'The current score for user being assessed', VALUE_OPTIONAL),
                         'remark' => new external_value(PARAM_RAW, 'Any remarks for this criterion for the user being assessed', VALUE_OPTIONAL),
+                        'showdefinition' => new external_value(PARAM_RAW, 'Show definition description'),
                     ]),
                     'The criterion by which this item will be graded'
                 ),
diff --git a/grade/grading/form/guide/templates/grades/grader/gradingpanel.mustache b/grade/grading/form/guide/templates/grades/grader/gradingpanel.mustache
index 965c805ac5c6de4349e1534c871ce191b7a60e12..777e1bb8b3dae956c980ba92a23aae9839c19fe2 100644
--- a/grade/grading/form/guide/templates/grades/grader/gradingpanel.mustache
+++ b/grade/grading/form/guide/templates/grades/grader/gradingpanel.mustache
@@ -34,12 +34,14 @@
     * score: Current score assigned to the learner for this item
     * remark: Text input for the teacher to relay to the student
     * hascomments: Flag for frequently used comments
+    * showdefinition: Flag of showing definition
     * comments: Array of frequently used comments
     * description: Description of a frequently used comment
 
     Example context (json):
     {
         "instanceid": "42",
+        "showdefinition": true
         "criterion": [
             {
                 "name": "Motivation",
@@ -49,6 +51,7 @@
                 "maxscore": 37,
                 "score": 20,
                 "remark": "That's great!",
+                "showdefinition": true
                 "hascomments": true,
                 "comments": [
                     {"description": "Great work!"},
@@ -64,8 +67,9 @@
     <div class="mb-3 criterion" data-gradingform-guide-role="criterion">
       <div class="d-flex align-items-center">
         <h5 class="description font-weight-bold mb-0">{{name}}</h5>
+        {{#showdefinition}}
         <button
-            class="btn btn-link px-1"
+            class="btn btn-icon text-primary px-1"
             aria-controls="gradingform_guide-{{uniqid}}-criteria-{{id}}-description"
             aria-expanded="false"
             data-target="#gradingform_guide-{{uniqid}}-criteria-{{id}}-description"
@@ -75,6 +79,7 @@
             {{# pix }} info, gradingform_guide {{/ pix }}
             <span class="sr-only">{{#str}}informationforcriterion, gradingform_guide, {{name}}{{/str}}</span>
         </button>
+        {{/showdefinition}}
         <button class="criterion-toggle btn btn-icon icon-no-margin text-reset p-0 font-weight-bold mb-0 ml-auto"
                 type="button"
                 data-toggle="collapse"
diff --git a/grade/grading/form/rubric/classes/grades/grader/gradingpanel/external/fetch.php b/grade/grading/form/rubric/classes/grades/grader/gradingpanel/external/fetch.php
index 49fa81d21a924c84cb00f453eb0a6094c06a4df9..1ace8802a3595b37adfac4612495d0fd60f77a25 100644
--- a/grade/grading/form/rubric/classes/grades/grader/gradingpanel/external/fetch.php
+++ b/grade/grading/form/rubric/classes/grades/grader/gradingpanel/external/fetch.php
@@ -158,6 +158,7 @@ class fetch extends external_api {
         $fillings = $instance->get_rubric_filling();
         $context = $controller->get_context();
         $definitionid = (int) $definition->id;
+        $options = json_decode($definition->options);
 
         // Set up some items we need to return on other interfaces.
         $gradegrade = \grade_grade::fetch(['itemid' => $gradeitem->get_grade_item()->id, 'userid' => $gradeduser->id]);
@@ -243,6 +244,20 @@ class fetch extends external_api {
             }, $definition->rubric_criteria);
         }
 
+        // 12.10.2022 - AP-1593 - Special check case for displaying rubric to students upon options.
+        $showpreview = false;
+
+        if ($options->alwaysshowdefinition && !$grade->grade) {
+            $showpreview = true;
+        } else if (!$options->alwaysshowdefinition && $grade->grade) {
+            $showpreview = true;
+        }
+
+        // 12.10.2022 - AP-1593 - Override for teachers.
+        if (has_capability('moodle/grade:edit', $context)) {
+            $showpreview = true;
+        }
+
         return [
             'templatename' => 'gradingform_rubric/grades/grader/gradingpanel',
             'hasgrade' => $hasgrade,
@@ -254,6 +269,7 @@ class fetch extends external_api {
                 'canedit' => false,
                 'usergrade' => $grade->grade,
                 'maxgrade' => $maxgrade,
+                'showpreview' => $showpreview,
                 'gradedby' => $gradername,
                 'timecreated' => $grade->timecreated,
                 'timemodified' => $grade->timemodified,
@@ -293,6 +309,7 @@ class fetch extends external_api {
                 'timecreated' => new external_value(PARAM_INT, 'The time that the grade was created'),
                 'usergrade' => new external_value(PARAM_RAW, 'Current user grade'),
                 'maxgrade' => new external_value(PARAM_RAW, 'Max possible grade'),
+                'showpreview' => new external_value(PARAM_RAW, 'Show rubric preview'),
                 'gradedby' => new external_value(PARAM_RAW, 'The assumed grader of this grading instance'),
                 'timemodified' => new external_value(PARAM_INT, 'The time that the grade was last updated'),
             ]),
diff --git a/grade/grading/form/rubric/templates/grades/grader/gradingpanel.mustache b/grade/grading/form/rubric/templates/grades/grader/gradingpanel.mustache
index 5da5be9c0aa9ed217277a853e849b3bd0e88faca..51847d59e73b10c531c1a293f83cbc3dbfa1b041 100644
--- a/grade/grading/form/rubric/templates/grades/grader/gradingpanel.mustache
+++ b/grade/grading/form/rubric/templates/grades/grader/gradingpanel.mustache
@@ -53,6 +53,7 @@
         ]
     }
 }}
+{{#showpreview}}
 <form id="gradingform_rubric-{{uniqid}}">
     <input type="hidden" name="instanceid" value="{{instanceid}}">
     <div id="rubric-advancedgrading-{{uniqid}}" class="criterion">
@@ -120,6 +121,7 @@
         {{/criteria}}
     </div>
 </form>
+{{/showpreview}}
 {{#js}}
 require(['core/auto_rows'], function(AutoRows) {
     AutoRows.init(document.getElementById('gradingform_rubric-{{uniqid}}'));
