diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py
index 6848f21a5..e2b7f41dc 100755
--- a/stateengine/StateEngineAction.py
+++ b/stateengine/StateEngineAction.py
@@ -569,12 +569,12 @@ def _waitforexecute(self, state, actionname: str, namevar: str = "", repeat_text
                                                  'previousstate_condition': previousstate_condition,
                                                  'state': state}, next=next_run)
 
-    def _delayed_execute(self, actionname: str, namevar: str = "", repeat_text: str = "", value=None, current_condition=None, previous_condition=None, previousstate_condition=None, state=None):
+    def _delayed_execute(self, actionname: str, namevar: str = "", repeat_text: str = "", value=None, current_condition=None, previous_condition=None, previousstate_condition=None, state=None, caller=None):
         if state:
-            self._log_debug("Putting delayed action '{}' from state '{}' into queue.", namevar, state)
+            self._log_debug("Putting delayed action '{}' from state '{}' into queue. Caller: {}", namevar, state, caller)
             self.__queue.put(["delayedaction", self, actionname, namevar, repeat_text, value, current_condition, previous_condition, previousstate_condition, state])
         else:
-            self._log_debug("Putting delayed action '{}' into queue.", namevar)
+            self._log_debug("Putting delayed action '{}' into queue. Caller: {}", namevar, caller)
             self.__queue.put(["delayedaction", self, actionname, namevar, repeat_text, value, current_condition, previous_condition, previousstate_condition])
         if not self._abitem.update_lock.locked():
             self._log_debug("Running queue")
diff --git a/stateengine/StateEngineFunctions.py b/stateengine/StateEngineFunctions.py
index 6b90c0822..dc66feee0 100755
--- a/stateengine/StateEngineFunctions.py
+++ b/stateengine/StateEngineFunctions.py
@@ -83,11 +83,11 @@ def manual_item_update_eval(self, item_id, caller=None, source=None):
                     self.logger.error("manual_item_update_item: se_manual_logitem {0} not found!".format(elog_item_id))
                     elog = StateEngineLogger.SeLoggerDummy()
                 else:
-                    elog = StateEngineLogger.SeLogger.create(elog_item)
+                    elog = StateEngineLogger.SeLogger.create(elog_item, manual=True)
             else:
                 elog = StateEngineLogger.SeLoggerDummy()
             elog.header("manual_item_update_eval")
-            elog.info("running for item '{0}' source '{1}' caller '{2}'", item_id, caller, source)
+            elog.info("running for item '{0}' source '{1}' caller '{2}'", item_id, source, caller)
 
             retval_no_trigger = item()
             retval_trigger = not item()
@@ -121,7 +121,9 @@ def manual_item_update_eval(self, item_id, caller=None, source=None):
                     result = entry.match(original)
                     elog.info("Checking regex result {}", result)
                     if result is not None:
-                        elog.info("{0}: matching. Writing value {1}", entry, retval_no_trigger)
+                        elog.info("{0}: matching.", entry)
+                        elog.decrease_indent()
+                        elog.info("Writing value {0}", retval_no_trigger)
                         return retval_no_trigger
                     elog.info("{0}: not matching", entry)
                 elog.decrease_indent()
@@ -144,7 +146,9 @@ def manual_item_update_eval(self, item_id, caller=None, source=None):
                     result = entry.match(original)
                     elog.info("Checking regex result {}", result)
                     if result is not None:
-                        elog.info("{0}: matching. Writing value {1}", entry, retval_no_trigger)
+                        elog.info("{0}: matching.", entry)
+                        elog.decrease_indent()
+                        elog.info("Writing value {0}", retval_no_trigger)
                         return retval_no_trigger
                     elog.info("{0}: not matching", entry)
                 elog.decrease_indent()
@@ -166,7 +170,9 @@ def manual_item_update_eval(self, item_id, caller=None, source=None):
                     result = entry.match(original)
                     elog.info("Checking regex result {}", result)
                     if result is not None:
-                        elog.info("{0}: matching. Writing value {1}", entry, retval_trigger)
+                        elog.info("{0}: matching.", entry)
+                        elog.decrease_indent()
+                        elog.info("Writing value {0}", retval_no_trigger)
                         return retval_trigger
                     elog.info("{0}: not matching", entry)
                 elog.decrease_indent()
diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py
index 1ef03cfc5..669898e55 100755
--- a/stateengine/StateEngineItem.py
+++ b/stateengine/StateEngineItem.py
@@ -524,6 +524,8 @@ def run_queue(self):
                 # Find out what initially caused the update to trigger if the caller is "Eval"
                 orig_caller, orig_source, orig_item = StateEngineTools.get_original_caller(self.__logger, caller,
                                                                                            source, item)
+                if orig_item is None:
+                    orig_item = item
                 if orig_caller != caller:
                     text = "{0} initially triggered by {1} (item={2} source={3} value={4})."
                     self.__logger.debug(text, caller, orig_caller, orig_item.property.path,
diff --git a/stateengine/StateEngineLogger.py b/stateengine/StateEngineLogger.py
index acf5460f5..07eabac00 100755
--- a/stateengine/StateEngineLogger.py
+++ b/stateengine/StateEngineLogger.py
@@ -122,17 +122,20 @@ def remove_old_logfiles():
     # Return SeLogger instance for given item
     # item: item for which the detailed log is
     @staticmethod
-    def create(item):
-        return SeLogger(item)
+    def create(item, manual=False):
+        return SeLogger(item, manual)
 
     # Constructor
     # item: item for which the detailed log is (used as part of file name)
-    def __init__(self, item):
+    def __init__(self, item, manual=False):
         self.logger = logging.getLogger('stateengine.{}'.format(item.property.path))
         self.__name = 'stateengine.{}'.format(item.property.path)
         self.__section = item.property.path.replace(".", "_").replace("/", "")
         self.__indentlevel = 0
-        self.__log_level_as_num = 0
+        if manual:
+            self.__log_level_as_num = 2
+        else:
+            self.__log_level_as_num = 0
         self.__logmaxage = None
         self.__date = None
         self.__logerror = False
diff --git a/stateengine/StateEngineTools.py b/stateengine/StateEngineTools.py
index da3f9c4af..23703918b 100755
--- a/stateengine/StateEngineTools.py
+++ b/stateengine/StateEngineTools.py
@@ -124,7 +124,7 @@ def parse_relative(evalstr, begintag, endtags):
         rel = rest[:rest.find(endtag)]
         rest = rest[rest.find(endtag)+len(endtag):]
         if 'property' in endtag:
-            rest1 = re.split('( |\+|-|\*|/)', rest, 1)
+            rest1 = re.split('([ +\-*/])', rest, 1)
             rest = ''.join(rest1[1:])
             pref += "se_eval.get_relative_itemproperty('{}', '{}')".format(rel, rest1[0])
         elif '()' in endtag:
@@ -333,10 +333,10 @@ def get_original_caller(elog, caller, source, item=None, eval_keyword=['Eval'],
         original_source = source
     else:
         original_source = "None"
-    while original_caller in eval_keyword:
+    while partition_strip(original_caller, ":")[0] in eval_keyword:
         original_item = itemsApi.return_item(original_source)
         if original_item is None:
-            elog.warning("get_caller({0}, {1}): original item not found", caller, source)
+            elog.info("get_caller({0}, {1}): original item not found", caller, source)
             break
         original_manipulated_by = original_item.property.last_update_by if eval_type == "update" else \
             original_item.property.last_change_by
diff --git a/stateengine/webif/templates/visu.html b/stateengine/webif/templates/visu.html
index d5a076db3..11ea42a7b 100755
--- a/stateengine/webif/templates/visu.html
+++ b/stateengine/webif/templates/visu.html
@@ -51,9 +51,6 @@
 {% endblock pluginstyles %}
 {% block pluginscripts %}
 <script src="static/panzoom.min.js">
-if ("{{firstrun}}" != 'None'){
-  window.update_active = true;
-  refresh.set_interval(5000, false);
 </script>
 <script>
 function refreshGraph() {
@@ -149,6 +146,10 @@
 <script>
 window.addEventListener('load', function() {
   initPanzoom();
+  if ("{{firstrun}}" != 'None'){
+    window.update_active = true;
+    refresh.set_interval(5000, false);
+  }
 });
 </script>
 {% endblock pluginscripts %}