diff --git a/entity/Observation_entity/entityfields/object_field/valueProcess.js b/entity/Observation_entity/entityfields/object_field/valueProcess.js
index 99147fd1e3f393ceaf6053ba8d320411a66ac717..ba84c95e57d68010ff91de16086acf8325032e0a 100644
--- a/entity/Observation_entity/entityfields/object_field/valueProcess.js
+++ b/entity/Observation_entity/entityfields/object_field/valueProcess.js
@@ -4,4 +4,6 @@ import("system.result");
 import("system.neon");
 
 if (!vars.get("$this.value") && vars.get("$field.OBJECT_TYPE") && (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT))
-    result.string(Observation.getAllFieldValue(vars.get("$field.OBJECT_TYPE")));
\ No newline at end of file
+{
+    result.string(Observation.getAllFieldValue(vars.get("$field.OBJECT_TYPE")));
+}
diff --git a/entity/Observation_entity/entityfields/object_filter/valueProcess.js b/entity/Observation_entity/entityfields/object_filter/valueProcess.js
index 4d4ffd9519726affce4f0ec8e8ffe1d9eb12576a..df026f7192e7752d7364fa8739aad1c0973d3acc 100644
--- a/entity/Observation_entity/entityfields/object_filter/valueProcess.js
+++ b/entity/Observation_entity/entityfields/object_filter/valueProcess.js
@@ -3,16 +3,16 @@ import("Context_lib");
 import("system.vars");
 import("system.result");
 
-let isFilterParamExists = vars.exists("$param.ObjectFilter_param") && vars.get("$param.ObjectFilter_param");
+let filterParam = vars.get("$param.ObjectFilter_param");
 let resFilter;
 
-if ((vars.get("$this.value") == null || vars.get("$this.value") == "") && vars.get("$field.OBJECT_TYPE") && !vars.get("$field.OBJECT_ID") && !isFilterParamExists) 
+if ((vars.get("$this.value") == null || vars.get("$this.value") == "") && vars.get("$field.OBJECT_TYPE") && !vars.get("$field.OBJECT_ID") && !filterParam) 
 {
     resFilter = Observation.getContextFilter(vars.get("$field.OBJECT_TYPE"), null);
 }
-else if (!vars.get("$this.value") && isFilterParamExists) 
+else if (!vars.get("$this.value") && filterParam) 
 {
-    resFilter = vars.get("$param.ObjectFilter_param");
+    resFilter = filterParam;
 }
 
 if (resFilter)
diff --git a/process/Observation_lib/process.js b/process/Observation_lib/process.js
index 51e6bfcf7ebcccc182274335db9eb08593d52938..469abca0373127e603834146ed8d4cd61b7b2f04 100644
--- a/process/Observation_lib/process.js
+++ b/process/Observation_lib/process.js
@@ -192,7 +192,7 @@ Observation.prototype.checkFilterAndPermissions = function (pUserTitle, pFilterO
     // check if the observation has been alredy checkt
     if (this.storedFilterResults[storedIndex])
     {
-        return this.storedFilterResults[storedIndex];
+        return JSON.parse(this.storedFilterResults[storedIndex]);
     }
     
     try 
@@ -224,7 +224,7 @@ Observation.prototype.checkFilterAndPermissions = function (pUserTitle, pFilterO
         filterResult = null;
     }
     
-    this.storedFilterResults[storedIndex] = filterResult;
+    this.storedFilterResults[storedIndex] = JSON.stringify(filterResult);
     return filterResult
 }
 
@@ -241,7 +241,7 @@ Observation.prototype.parseAndFilterObjectFields = function (pObjectFields, pUse
     
     if (this.storedObservedFields[storedIndex])
     {
-        return this.storedObservedFields[storedIndex]
+        return JSON.parse(this.storedObservedFields[storedIndex]);
     }
     
     let observeFields = {};
@@ -260,7 +260,7 @@ Observation.prototype.parseAndFilterObjectFields = function (pObjectFields, pUse
         }
     }, this);
     
-    this.storedObservedFields[storedIndex] = observeFields;
+    this.storedObservedFields[storedIndex] = JSON.stringify(observeFields);
     return observeFields;
 }
 
@@ -285,7 +285,7 @@ Observation.prototype._checkDependencies = function (pObserver, pDependentContex
     var dependentCheckVars = {}
     dependentCheckVars[WorkflowVariables.TRIGGER()] = this.callerVariables[WorkflowVariables.TRIGGER()];
     dependentCheckVars[WorkflowVariables.TARGET_CONTEXT()] = pDependentContext;
-    dependentCheckVars[WorkflowVariables.EVENT_USER()] = pObserver;
+    dependentCheckVars[WorkflowVariables.EVENT_USER()] = this.callerVariables[WorkflowVariables.EVENT_USER()];
     
     Object.keys(pTempObserver[pObserver][Observation.RECORDS_SPECIFIC_VALUES()]).forEach(function (pRecordID) {
         let specificRecordValues = pTempObserver[pObserver][Observation.RECORDS_SPECIFIC_VALUES()][pRecordID];
@@ -322,7 +322,7 @@ Observation.prototype._formatFieldsToLoad =  function (pFilterResults)
     let res = {};
     let fieldsToLoad = this.callerVariables[WorkflowVariables.FIELDS_TO_LOAD()]
     
-    if (Array.isArray(fieldsToLoad))
+    if (Array.isArray(fieldsToLoad) && !Utils.isNullOrEmpty(fieldsToLoad))
     {
         let recordFields = {};
         let pro = project.getRecordContainerModel(this.callerVariables[Observation.ENTITY_NAME()])["recordFieldMappings"];
@@ -394,7 +394,7 @@ Observation.prototype.checkObservation = function(pObservationId)
             var filterResult;
             
             // exclude the user who made the changes. 
-            if (user)// && pVariables[WorkflowVariables.EVENT_USER()] !== observation[2])
+            if (user && this.callerVariables[WorkflowVariables.EVENT_USER()] !== user["name"])
             {
                 filterResult = this.checkFilterAndPermissions(user.title, observation[1], observation[0]);
             
@@ -405,6 +405,10 @@ Observation.prototype.checkObservation = function(pObservationId)
                         return filterResult;
                     }
                     
+                    if (Utils.isNullOrEmpty(observation[3]))
+                    {
+                        observation[3] = Observation.getAllFieldValue(this.callerVariables[WorkflowVariables.TARGET_CONTEXT()]);
+                    }
                     tempObserver[observation[2]] = this.parseAndFilterObjectFields(observation[3], user.title, filterResult);
                     tempObserver[observation[2]][Observation.RECORDS_SPECIFIC_VALUES()] = this._formatFieldsToLoad(filterResult);
                 }
@@ -448,8 +452,9 @@ Observation.prototype.checkObservation = function(pObservationId)
  */
 Observation._syncTempObservationAndObservation = function (pTempObserver, pObservers, pObserverUserID, pChangedRows) 
 {
-    if (pTempObserver[pObserverUserID] && (!Utils.isNullOrEmpty(pTempObserver[pObserverUserID][Observation.OBJECT_IDs()])))
-    {
+    if (pTempObserver[pObserverUserID] && (!pTempObserver[pObserverUserID][Observation.OBJECT_IDs()] ||
+        Object.keys(pTempObserver[pObserverUserID][Observation.OBJECT_IDs()]).length > 0))
+        {
         if (!pObservers[pObserverUserID])
         {
             pObservers[pObserverUserID] = pTempObserver[pObserverUserID];
@@ -613,7 +618,7 @@ Observation._notification = function (pVariables, pFilteredVariables, pObservers
     
     pFilteredVariables.notificationUser = pObserver;
     var isNewDescription = false;
-    if (pFilteredVariables != {}){
+    if (!Utils.isNullOrEmpty(pFilteredVariables)){
         var rowData = pVariables[WorkflowVariables.ROWDATA()];
         Object.keys(pObservers[pObserver]).forEach(function (field) {
             if (pVariables[WorkflowVariables.CHANGED_ROWS()].indexOf(field) > -1)