diff --git a/MAC/Navigator2/scripts/gcf_cwd.ctl b/MAC/Navigator2/scripts/gcf_cwd.ctl
index 3abf40416222c50c60dff6f2ab0e720ea9c57f9a..834c9f7de5eb25001e6574ebce4438e136492fa1 100644
--- a/MAC/Navigator2/scripts/gcf_cwd.ctl
+++ b/MAC/Navigator2/scripts/gcf_cwd.ctl
@@ -34,6 +34,7 @@
 
 const string CWD_DP = "__gcf_cwd";
 global mapping g_connections;
+global dyn_string involved_systems;
 
 ////////////////////////////////////////////////////////////////////////////////
 //
@@ -59,10 +60,10 @@ main() {
 	// retrieve old settings
   
 	fillGlobalList(g_connections[ "SYSTEM"],
-                       g_connections[ "NAME"],
+                       g_connections[ "NAME" ],
                        g_connections[ "UP" ], 
-                       g_connections[ "DOWNTIME"], 
-                       g_connections[ "UPTIME"]);
+                       g_connections[ "DOWNTIME" ], 
+                       g_connections[ "UPTIME" ]);
 	dpConnect("distSystemChanged", TRUE, "_DistManager.State.SystemNums");
 
 	LOG_DEBUG("gcf_cwd.ctl:main|Watch-dog started");
@@ -79,10 +80,10 @@ void distSystemChanged(string dp, dyn_int newDistSysList) {
   int  iPos;
 	// check all current systems and update mapping
  	for (int i = 1; i <= dynlen(newDistSysList); i++) {
- 		iPos=dynContains ( g_connections[ "SYSTEM" ],newDistSysList[i]);        
-    bool new=false;
+ 		 iPos=dynContains ( g_connections[ "SYSTEM" ],newDistSysList[i]);        
 
    	// if the system was not yet available just add
+    bool new = false;
     if (iPos < 1) {
       dynAppend( g_connections[ "SYSTEM" ],newDistSysList[i]);
       iPos=dynlen(g_connections[ "SYSTEM" ]);
@@ -90,9 +91,17 @@ void distSystemChanged(string dp, dyn_int newDistSysList) {
     }
     
     // now store the values
-    g_connections[ "NAME" ][iPos]   = getSystemName(newDistSysList[i]);
-    g_connections[ "UP" ][iPos]     = true;
-    g_connections[ "UPTIME" ][iPos] = getCurrentTime();
+    g_connections[ "NAME" ][iPos]     = getSystemName(newDistSysList[i]);
+    if (new) {
+      // if new we need to know that this system is involved in a distchange 
+      dynAppend(involved_systems,g_connections[ "NAME" ][iPos]); 
+    }
+    if (g_connections[ "UP" ] [iPos] == false && !new) {
+      // if this system was  Down before it is also involved
+      dynAppend(involved_systems,g_connections[ "NAME" ][iPos]); 
+    }
+    g_connections[ "UP" ][iPos]       = true;
+    g_connections[ "UPTIME" ][iPos]   = getCurrentTime();
  	}
         
     // now we also have to check if there were systems available b4 that are not included in the triggerlist anymore
@@ -101,7 +110,8 @@ void distSystemChanged(string dp, dyn_int newDistSysList) {
   for (int i = 1; i <= dynlen(g_connections[ "SYSTEM"]);i++) {
     if (dynContains(newDistSysList,g_connections[ "SYSTEM" ][i]) < 1) {
       g_connections[ "UP" ][i]     = false;
-      g_connections[ "DOWNTIME" ][i] = getCurrentTime(); 
+      g_connections[ "DOWNTIME" ][i] = getCurrentTime();
+      dynAppend(involved_systems,g_connections[ "NAME" ][i]); 
     }
   }
 
@@ -110,15 +120,17 @@ void distSystemChanged(string dp, dyn_int newDistSysList) {
                g_connections[ "NAME"],
                g_connections[ "UP" ], 
                g_connections[ "DOWNTIME"], 
-               g_connections[ "UPTIME"]);
+               g_connections[ "UPTIME"],
+               involved_systems);
 }
 
 void fillWatchDog(
   dyn_int systems, dyn_string names,dyn_bool up,
-  dyn_time downtime, dyn_time uptime 
+  dyn_time downtime, dyn_time uptime, dyn_string involved 
 )
 {
-  dpSet("__gcf_cwd.systemID",systems,"__gcf_cwd.name",names,"__gcf_cwd.online",up,"__gcf_cwd.lastUpTime",uptime,"__gcf_cwd.lastDownTime",downtime);
+  dpSet("__gcf_cwd.systemID",systems,"__gcf_cwd.name",names,"__gcf_cwd.online",up,
+        "__gcf_cwd.lastUpTime",uptime,"__gcf_cwd.lastDownTime",downtime,"__gcf_cwd.involved", involved);
 }
 
 void fillGlobalList(