Index: trunk/sources/HeuristicLab.Hive.Contracts/ApplicationConstants.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Contracts/ApplicationConstants.cs	(revision 1169)
+++ trunk/sources/HeuristicLab.Hive.Contracts/ApplicationConstants.cs	(revision 1170)
@@ -81,4 +81,5 @@
     public static string RESPONSE_JOB_JOB_REMOVED = "Job.JobRemoved";
     public static string RESPONSE_JOB_JOBSTATE_MUST_BE_OFFLINE = "Job.JobStateMustBeOffline";
+    public static string RESPONSE_JOB_JOB_RESULT_SENT = "Job.JobResultSent";
   }
 }
Index: trunk/sources/HeuristicLab.Hive.Contracts/HiveServerMessages.resx
===================================================================
--- trunk/sources/HeuristicLab.Hive.Contracts/HiveServerMessages.resx	(revision 1169)
+++ trunk/sources/HeuristicLab.Hive.Contracts/HiveServerMessages.resx	(revision 1170)
@@ -235,3 +235,6 @@
     <value>This client is not registered to calculate this job</value>
   </data>
+  <data name="Job.JobResultSent" xml:space="preserve">
+    <value>Job Result sent successfully</value>
+  </data>
 </root>
Index: trunk/sources/HeuristicLab.Hive.Contracts/Interfaces/IJobManager.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Contracts/Interfaces/IJobManager.cs	(revision 1169)
+++ trunk/sources/HeuristicLab.Hive.Contracts/Interfaces/IJobManager.cs	(revision 1170)
@@ -39,4 +39,6 @@
     [OperationContract]
     Response RemoveJob(long jobId);
+    [OperationContract]
+    ResponseObject<JobResult> GetLasJobResultOf(long jobId);
   }
 }
Index: trunk/sources/HeuristicLab.Hive.Server.Core/ClientCommunicator.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Server.Core/ClientCommunicator.cs	(revision 1169)
+++ trunk/sources/HeuristicLab.Hive.Server.Core/ClientCommunicator.cs	(revision 1170)
@@ -236,4 +236,5 @@
         job2Calculate.Client.State = State.calculating;
 
+        job2Calculate.DateCalculated = DateTime.Now;
         response.Job = job2Calculate;
         jobAdapter.Update(job2Calculate);
@@ -317,4 +318,5 @@
       jobResult.Percentage = percentage;
       jobResult.Exception = exception;
+      jobResult.DateFinished = DateTime.Now;
 
       jobResultAdapter.Update(jobResult);
Index: trunk/sources/HeuristicLab.Hive.Server.Core/JobManager.cs
===================================================================
--- trunk/sources/HeuristicLab.Hive.Server.Core/JobManager.cs	(revision 1169)
+++ trunk/sources/HeuristicLab.Hive.Server.Core/JobManager.cs	(revision 1170)
@@ -49,13 +49,18 @@
     }
 
-    public void ResetJobsDependingOnResults(Job job) {
+    private JobResult GetLastJobResult(Job job) {
       List<JobResult> allJobResults = new List<JobResult>(jobResultAdapter.GetResultsOf(job));
       JobResult lastJobResult = null;
       foreach (JobResult jR in allJobResults) {
         // if lastJobResult was before the current jobResult the lastJobResult must be updated
-        if (lastJobResult == null ||          
+        if (lastJobResult == null ||
             (jR.timestamp > lastJobResult.timestamp))
           lastJobResult = jR;
       }
+      return lastJobResult;
+    }
+
+    public void ResetJobsDependingOnResults(Job job) {
+      JobResult lastJobResult = GetLastJobResult(job);
       if (lastJobResult != null) {
         job.Percentage = lastJobResult.Percentage;
@@ -127,4 +132,5 @@
         }
 
+        job.DateCreated = DateTime.Now;
         jobAdapter.Update(job);
         response.Success = true;
@@ -160,4 +166,13 @@
     }
 
+    public ResponseObject<JobResult> GetLasJobResultOf(long jobId) {
+      ResponseObject<JobResult> response = new ResponseObject<JobResult>();
+      response.Success = true;
+      response.StatusMessage = ApplicationConstants.RESPONSE_JOB_JOB_RESULT_SENT;
+      response.Obj = GetLastJobResult(jobAdapter.GetById(jobId));
+
+      return response;
+    }
+
     #endregion
   }
