diff --git a/MAC/Navigator2/panels/objects/Processes/SWControler_small.pnl b/MAC/Navigator2/panels/objects/Processes/SWControler_small.pnl
index 9962b3d942c384124ded6fd3403e75ad9683cf99..e3699937dd1d449c55a2cd2cceea34e47ad2761f 100644
--- a/MAC/Navigator2/panels/objects/Processes/SWControler_small.pnl
+++ b/MAC/Navigator2/panels/objects/Processes/SWControler_small.pnl
@@ -20,13 +20,13 @@ PANEL,-1 -1 388 166 N "_3DFace" 2
       $name == \"BeamControl\" ||    // Station
       $name == \"TBBControl\") {    // Station
 
-    if (dpExists(MainDBName+\"LOFAR_PermSW_MACScheduler.activeObservations\")) {
+    if (navFunct_dpReachable(MainDBName+\"LOFAR_PermSW_MACScheduler.activeObservations\")) {
       if (dpConnect(\"observationChanged\", MainDBName+\"LOFAR_PermSW_MACScheduler.activeObservations:_online.._value\",
                                           MainDBName+\"LOFAR_PermSW_MACScheduler.activeObservations:_online.._invalid\") == -1) {
         LOG_ERROR(\"SWController_small.pnl:main|Couldn't connect to: \"+MainDBName+\":LOFAR_PermSW_MACScheduler.activeObservations\");
       }
     } else {
-      if (!isStandalone()) LOG_ERROR(\"SWController_small.pnl:main|Couldn't find DP to connect to: \"+MainDBName+\"LOFAR_PermSW_MACScheduler.activeObservations\");
+      if (!isStandalone()) LOG_ERROR(\"SWController_small.pnl:main|\"+MainDBName+\" seems offline\");
     }
   }	else {
     reload();
@@ -49,7 +49,7 @@ private void observationChanged(string dp1, dyn_string observations,
 private void reload() {
   
   // check if the required datapoint for this view are enabled and accessible
-  if (dpExists(baseDP+\".process.startTime\")) {
+  if (navFunct_dpReachable(baseDP+\".process.startTime\")) {
     if (dpConnect(\"updateSWController\", baseDP +\".process.startTime:_online.._value\",
                                         baseDP +\".process.stopTime:_online.._value\",
                                         baseDP +\".process.stopTime:_online.._invalid\",
@@ -57,29 +57,44 @@ private void reload() {
       setValue(\"process\", \"backCol\", \"Lofar_dpdoesnotexist\");
     }
   } else {
-    setValue(\"process\", \"backCol\", \"Lofar_dpdoesnotexist\");
+    setValue(\"process\", \"backCol\", \"Lofar_dpOffline\");
 
   }	
 }
 
-updateSWController(string dp1, time start,
-                   string dp2, time stop,
+updateSWController(string dp1, string sStart,
+                   string dp2, string sStop,
                    string dp3, bool stopInvalid,
                    string dp4, bool startInvalid)
 {
-  setValue(\"process\",\"toolTipText\",baseDP);
-  if (! startInvalid) {
-      setValue(\"process\", \"backCol\", \"Lofar_invalid\");
-      if (stopInvalid) {
-        setValue(\"process\", \"backCol\", \"green\");
-      } else if (start > stop) {
-        setValue(\"process\", \"backCol\", \"green\");
-      } else if (stop >= start) {
-        setValue(\"process\", \"backCol\", \"red\");
-      }        
+  bool startError=false;
+  bool stopError=false;
+  time start=0;
+  time stop=0;
+
+  if (startInvalid) {
+    setValue(\"process\", \"backCol\", \"Lofar_invalid\");
+    if (stopInvalid) {
+      setValue(\"process\",\"toolTipText\",baseDP+ \"<br> start: invalid <br> stop : invalid\");
     } else {
-      setValue(\"process\", \"backCol\", \"red\");
+      setValue(\"process\",\"toolTipText\",baseDP+ \"<br> start: invalid <br> stop : \"+sStop);
     }
+    return;
+  }
+  setValue(\"process\",\"toolTipText\",baseDP+ \"<br> start: \"+sStart + \"<br> stop : \"+sStop);
+  
+  if (sStart != \"\") startError = navFunct_lofarDate2PVSSDate(sStart,start);
+  if (sStop != \"\") stopError = navFunct_lofarDate2PVSSDate(sStop,stop);
+  
+  if (!startError || (!stopError && sStop != \"\")) {
+    setValue(\"process\", \"backCol\", \"red\");
+  } else if (start > stop) {
+    setValue(\"process\", \"backCol\", \"green\");
+  } else if (stop >= start) {
+    setValue(\"process\", \"backCol\", \"red\");
+  } else {       
+    setValue(\"process\", \"backCol\", \"red\");
+  }
 }" 0
  E "main(int x, int y)
 {
@@ -119,9 +134,11 @@ void dblClick() {
   if (dpExists(baseDP) ) {
     LOG_DEBUG(\"SWcontroller_small.pnl:DoubleClick|Setting currentDatapoint from : \"+g_currentDatapoint+\" to \"+baseDP);
     g_currentDatapoint=baseDP;
-    navPanel_setEvent(station,\"ChangePanel\");
+    //we also have to set the tabctrl to think this was initiated from the ProcessesTab, otherwise we will get the wrong panel.
+    navPanel_setEvent(\"Processes\",\"ChangeTab\");
   }
-  
+
+
   // set delay to avoid click event will be triggered
   delay(0, 500);
   bDoubleClicked = false;