diff --git a/hypha/apply/determinations/migrations/0012_auto_20220509_1136.py b/hypha/apply/determinations/migrations/0012_auto_20220509_1136.py
new file mode 100644
index 0000000000000000000000000000000000000000..1fbaf3e5427cd001e9cb74753f7b4884e66eb2fd
--- /dev/null
+++ b/hypha/apply/determinations/migrations/0012_auto_20220509_1136.py
@@ -0,0 +1,59 @@
+# Generated by Django 3.2.13 on 2022-05-09 11:36
+
+from django.db import migrations
+import wagtail.core.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('determinations', '0011_auto_20220111_1314'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='determinationmessagesettings',
+            name='concept_accepted',
+            field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Approved'),
+        ),
+        migrations.AlterField(
+            model_name='determinationmessagesettings',
+            name='concept_more_info',
+            field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Needs more info'),
+        ),
+        migrations.AlterField(
+            model_name='determinationmessagesettings',
+            name='concept_rejected',
+            field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Dismissed'),
+        ),
+        migrations.AlterField(
+            model_name='determinationmessagesettings',
+            name='proposal_accepted',
+            field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Approved'),
+        ),
+        migrations.AlterField(
+            model_name='determinationmessagesettings',
+            name='proposal_more_info',
+            field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Needs more info'),
+        ),
+        migrations.AlterField(
+            model_name='determinationmessagesettings',
+            name='proposal_rejected',
+            field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Dismissed'),
+        ),
+        migrations.AlterField(
+            model_name='determinationmessagesettings',
+            name='request_accepted',
+            field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Approved'),
+        ),
+        migrations.AlterField(
+            model_name='determinationmessagesettings',
+            name='request_more_info',
+            field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Needs more info'),
+        ),
+        migrations.AlterField(
+            model_name='determinationmessagesettings',
+            name='request_rejected',
+            field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Dismissed'),
+        ),
+    ]
diff --git a/hypha/apply/determinations/models.py b/hypha/apply/determinations/models.py
index 5e5bcbb9a5bcc4a265816f664153dbc9c9516248..7d21872249a74c2eecdc34ccb4d91d78068e6a82 100644
--- a/hypha/apply/determinations/models.py
+++ b/hypha/apply/determinations/models.py
@@ -15,6 +15,7 @@ from wagtail.contrib.settings.models import BaseSetting, register_setting
 from wagtail.core.fields import RichTextField, StreamField
 
 from hypha.apply.funds.models.mixins import AccessFormData
+from hypha.apply.funds.workflow import Concept, Proposal, Request
 
 from .blocks import (
     DeterminationBlock,
@@ -184,21 +185,25 @@ class DeterminationMessageSettings(BaseSetting):
     class Meta:
         verbose_name = 'determination messages'
 
-    request_accepted = RichTextField("Approved")
-    request_rejected = RichTextField("Dismissed")
-    request_more_info = RichTextField("Needs more info")
+    request_accepted = RichTextField("Approved", blank=True)
+    request_rejected = RichTextField("Dismissed", blank=True)
+    request_more_info = RichTextField("Needs more info", blank=True)
 
-    concept_accepted = RichTextField("Approved")
-    concept_rejected = RichTextField("Dismissed")
-    concept_more_info = RichTextField("Needs more info")
+    concept_accepted = RichTextField("Approved", blank=True)
+    concept_rejected = RichTextField("Dismissed", blank=True)
+    concept_more_info = RichTextField("Needs more info", blank=True)
 
-    proposal_accepted = RichTextField("Approved")
-    proposal_rejected = RichTextField("Dismissed")
-    proposal_more_info = RichTextField("Needs more info")
+    proposal_accepted = RichTextField("Approved", blank=True)
+    proposal_rejected = RichTextField("Dismissed", blank=True)
+    proposal_more_info = RichTextField("Needs more info", blank=True)
 
     def get_for_stage(self, stage_name):
         message_templates = {}
-        prefix = f"{stage_name.lower()}_"
+        if stage_name in [Request.name, Concept.name, Proposal.name]:
+            prefix = f"{stage_name.lower()}_"
+        else:
+            # Use Request's message templates for remaining workflows
+            prefix = "request_"
 
         for field in self._meta.get_fields():
             if prefix in field.name:
diff --git a/hypha/apply/determinations/templates/determinations/base_determination_form.html b/hypha/apply/determinations/templates/determinations/base_determination_form.html
index 26b805e215d47af818c7ed357f1a4299c58c1cf3..510c1d5538dccbe892b9cb13298ef2951400c00b 100644
--- a/hypha/apply/determinations/templates/determinations/base_determination_form.html
+++ b/hypha/apply/determinations/templates/determinations/base_determination_form.html
@@ -52,8 +52,7 @@
     </form>
     {% for type, message in message_templates.items %}
         <div class="is-hidden" data-type="{{ type }}" id="determination-message-{{ type }}">
-            <h1>message</h1>
-            {{ message|bleach }}
+            {{ message }}
         </div>
     {% endfor %}
 </div>
@@ -61,5 +60,6 @@
 {% endblock %}
 
 {% block extra_js %}
-    {# Skip this until the script is improved. <script src="{% static 'js/apply/determination-template.js' %}"></script> #}
+    {{ field_blocks_ids|json_script:"block-ids" }}
+    <script src="{% static 'js/apply/determination-template.js' %}"></script>
 {% endblock %}
diff --git a/hypha/apply/determinations/views.py b/hypha/apply/determinations/views.py
index c75fd11952e5a7ef1aef4f83cf36ca1416eefa30..acd32c39a62741efe87457cf024e6a1eb83a1ede 100644
--- a/hypha/apply/determinations/views.py
+++ b/hypha/apply/determinations/views.py
@@ -24,7 +24,7 @@ from hypha.apply.stream_forms.models import BaseStreamForm
 from hypha.apply.users.decorators import staff_required
 from hypha.apply.utils.views import CreateOrUpdateView, ViewDispatcher
 
-from .blocks import DeterminationBlock
+from .blocks import DeterminationBlock, DeterminationMessageBlock
 from .forms import (
     BatchConceptDeterminationForm,
     BatchDeterminationForm,
@@ -308,9 +308,18 @@ class DeterminationCreateOrUpdateView(BaseStreamForm, CreateOrUpdateView):
         site = Site.find_for_request(self.request)
         determination_messages = DeterminationMessageSettings.for_site(site)
 
+        # Pass blocks ids to identify block types(determination & message) in determination message template js.
+        field_blocks_ids = {}
+        if self.submission.is_determination_form_attached:
+            for field_block in self.get_defined_fields():
+                if isinstance(field_block.block, DeterminationBlock) or \
+                        isinstance(field_block.block, DeterminationMessageBlock):
+                    field_blocks_ids[field_block.block_type] = field_block.id
+
         return super().get_context_data(
             submission=self.submission,
             message_templates=determination_messages.get_for_stage(self.submission.stage.name),
+            field_blocks_ids=field_blocks_ids,
             **kwargs
         )
 
diff --git a/hypha/static_src/src/javascript/apply/determination-template.js b/hypha/static_src/src/javascript/apply/determination-template.js
index 092e2ce552c32ecfc727b4fd93ecbfac973dca42..a243faa3de98b2fa93ce49848161953900fe9b66 100644
--- a/hypha/static_src/src/javascript/apply/determination-template.js
+++ b/hypha/static_src/src/javascript/apply/determination-template.js
@@ -1,10 +1,11 @@
 (function ($) {
 
     'use strict';
+    const field_blocks_ids = JSON.parse(document.getElementById('block-ids').textContent);
 
     let DeterminationCopy = class {
         static selector() {
-            return '#id_outcome';
+            return ('#id_' + field_blocks_ids['determination']);
         }
 
         constructor(node) {
@@ -32,7 +33,8 @@
         }
 
         updateTextArea(text) {
-            window.tinyMCE.get('id_message').setContent(text);
+            this.message_box = document.querySelector('#id_' + field_blocks_ids['message'] + '_ifr');
+            this.message_box.contentDocument.getElementsByTagName('body')[0].innerHTML = text;
         }
     };