diff --git a/entity/WorkflowTask_entity/WorkflowTask_entity.aod b/entity/WorkflowTask_entity/WorkflowTask_entity.aod
index 3ffbe846c77cc3e4d64c7ed734ff2399dc30450a..938fbcdc991e33b51be6bc7134499438ac1fbabd 100644
--- a/entity/WorkflowTask_entity/WorkflowTask_entity.aod
+++ b/entity/WorkflowTask_entity/WorkflowTask_entity.aod
@@ -31,6 +31,7 @@
     </entityField>
     <entityField>
       <name>FORMRESULT</name>
+      <onValueChange>%aditoprj%/entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js</onValueChange>
     </entityField>
     <entityField>
       <name>NAME</name>
diff --git a/entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js b/entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..249aba04bbb279e4e8ae4dc4f7164fbeee463fe5
--- /dev/null
+++ b/entity/WorkflowTask_entity/entityfields/formresult/onValueChange.js
@@ -0,0 +1,25 @@
+import("system.result");
+import("system.vars");
+import("system.workflow");
+import("system.neon");
+
+var taskId = vars.get("$field.UID");
+var newResult = vars.get("$local.value");
+var oldResult = vars.get("$field.FORMRESULT");
+
+if (newResult && newResult !== oldResult)
+{
+    /*
+     * fieldListeners = all fields that are used inside a visibility expression
+     * -> if one of these fields is changed, set the new FORMDEFINITION
+     */
+    var fieldListeners = JSON.parse(workflow.getFormFieldListeners(taskId));
+    newResult = newResult ? JSON.parse(newResult) : {};
+    oldResult = oldResult ? JSON.parse(oldResult) : {};
+    var isRefreshRequired = fieldListeners.some(function (fieldId)
+    {
+        return newResult[fieldId] !== oldResult[fieldId];
+    });
+    if (isRefreshRequired)
+        neon.setFieldValue("$field.FORMDEFINITION", workflow.getFormProperties(taskId, newResult));
+}