Index: trunk/sources/HeuristicLab.Hive.Client.Communication/WcfService.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Client.Communication/WcfService.cs	(revision 1096)
+++ trunk/sources/HeuristicLab.Hive.Client.Communication/WcfService.cs	(revision 1097)
@@ -48,11 +48,13 @@
         proxy.SendHeartBeatCompleted += new EventHandler<SendHeartBeatCompletedEventArgs>(proxy_SendHeartBeatCompleted);
         proxy.Open();
-        if (ConnState == NetworkEnum.WcfConnState.Failed)
-          ConnectionRestored(this, new EventArgs());
 
         ConnState = NetworkEnum.WcfConnState.Connected;
-        ConnectedSince = DateTime.Now;        
+        ConnectedSince = DateTime.Now;
+        
         if (Connected != null)
           Connected(this, new EventArgs());                               
+        
+        if (ConnState == NetworkEnum.WcfConnState.Failed)
+          ConnectionRestored(this, new EventArgs());        
       }
       catch (Exception ex) {
@@ -93,4 +95,17 @@
         NetworkErrorHandling(e.Error.InnerException);
     }
+
+    public void LoginSync(ClientInfo clientInfo) {
+      try {
+        if (ConnState == NetworkEnum.WcfConnState.Connected) {
+          Response res = proxy.Login(clientInfo);
+          Logging.GetInstance().Info(this.ToString(), res.StatusMessage);
+        }
+      }
+      catch (Exception e) {
+        NetworkErrorHandling(e);
+      }
+    }
+
     #endregion
 
@@ -139,6 +154,5 @@
     }
 
-    #endregion
-
+    #endregion  
   }
 }
Index: trunk/sources/HeuristicLab.Hive.Client.Core/Core.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Client.Core/Core.cs	(revision 1096)
+++ trunk/sources/HeuristicLab.Hive.Client.Core/Core.cs	(revision 1097)
@@ -58,4 +58,5 @@
 
     private WcfService wcfService;
+    private Heartbeat beat;
 
     public void Start() {
@@ -82,5 +83,5 @@
       }
    
-      Heartbeat beat = new Heartbeat { Interval = 10000 };
+      beat = new Heartbeat { Interval = 10000 };
       beat.StartHeartbeat();     
 
@@ -120,4 +121,5 @@
         case MessageContainer.MessageType.Shutdown:
           ShutdownFlag = true;
+          beat.StopHeartBeat();
           break;
       }
@@ -192,4 +194,5 @@
 
     void wcfService_ServerChanged(object sender, EventArgs e) {
+      Logging.GetInstance().Info(this.ToString(), "ServerChanged has been called");
       lock (Locker) {
         foreach (KeyValuePair<long, AppDomain> entries in appDomains)
@@ -201,9 +204,18 @@
 
     void wcfService_Connected(object sender, EventArgs e) {
-      wcfService.LoginAsync(ConfigManager.Instance.GetClientInfo());
-    }
-
+      wcfService.LoginSync(ConfigManager.Instance.GetClientInfo());
+    }
+
+    //this is a little bit tricky - 
     void wcfService_ConnectionRestored(object sender, EventArgs e) {
-      //Do some fancy new things here... e.g: check all appdomains if there are still active Jobs that need to be transmitted
+      Logging.GetInstance().Info(this.ToString(), "Reconnected to old server - checking currently running appdomains");                 
+
+      foreach (KeyValuePair<long, Executor> execKVP in engines) {
+        if (!execKVP.Value.Running && execKVP.Value.CurrentMessage == MessageContainer.MessageType.NoMessage) {
+          Logging.GetInstance().Info(this.ToString(), "Checking for JobId: " + execKVP.Value.JobId);
+          Thread finThread = new Thread(new ParameterizedThreadStart(GetFinishedJob));
+          finThread.Start(execKVP.Value.JobId);
+        }
+      }
     }
 
Index: trunk/sources/HeuristicLab.Hive.Client.Core/Heartbeat.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Client.Core/Heartbeat.cs	(revision 1096)
+++ trunk/sources/HeuristicLab.Hive.Client.Core/Heartbeat.cs	(revision 1097)
@@ -90,4 +90,8 @@
       e.Result.ActionRequest.ForEach(mc => MessageQueue.GetInstance().AddMessage(mc));
     }
+
+    public void StopHeartBeat() {
+      heartbeatTimer.Dispose();
+    }
   }
 }
Index: trunk/sources/HeuristicLab.Hive.Client.ExecutionEngine/Executor.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Client.ExecutionEngine/Executor.cs	(revision 1096)
+++ trunk/sources/HeuristicLab.Hive.Client.ExecutionEngine/Executor.cs	(revision 1097)
@@ -38,4 +38,9 @@
     public MessageContainer.MessageType CurrentMessage { get; set; }
     public MessageQueue Queue { get; set; }
+    public bool Running {
+      get {
+        return Job.Running;
+      }
+    }
     public double Progress {
       get {
