Index: /trunk/sources/HeuristicLab.Hive.Contracts/3.2/BusinessObjects/HivePluginInfo.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Contracts/3.2/BusinessObjects/HivePluginInfo.cs	(revision 1591)
+++ /trunk/sources/HeuristicLab.Hive.Contracts/3.2/BusinessObjects/HivePluginInfo.cs	(revision 1592)
@@ -39,5 +39,5 @@
 
     [DataMember]
-    public String BuildDate { get; set; }
+    public DateTime BuildDate { get; set; }
   }
 }
Index: /trunk/sources/HeuristicLab.Hive.Engine/3.2/HiveEngine.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Engine/3.2/HiveEngine.cs	(revision 1591)
+++ /trunk/sources/HeuristicLab.Hive.Engine/3.2/HiveEngine.cs	(revision 1592)
@@ -92,5 +92,5 @@
         pluginInfo.Name = info.Name;
         pluginInfo.Version = info.Version.ToString();
-        pluginInfo.BuildDate = info.BuildDate.ToString();
+        pluginInfo.BuildDate = info.BuildDate;
         pluginsNeeded.Add(pluginInfo);
       }
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/HeuristicLab.Hive.Server.ADODataAccess-3.2.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/HeuristicLab.Hive.Server.ADODataAccess-3.2.csproj	(revision 1591)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/HeuristicLab.Hive.Server.ADODataAccess-3.2.csproj	(revision 1592)
@@ -113,4 +113,5 @@
   <ItemGroup>
     <None Include="app.config" />
+    <None Include="datamodel_hive_sqlserver.erwin" />
     <None Include="dsHiveServer.xsc">
       <DependentUpon>dsHiveServer.xsd</DependentUpon>
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/JobAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/JobAdapter.cs	(revision 1591)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/JobAdapter.cs	(revision 1592)
@@ -309,4 +309,11 @@
         new List<Guid>();
       foreach (HivePluginInfo pluginInfo in obj.PluginsNeeded) {
+        //first check if pluginInfo already exists in the db
+        HivePluginInfo found = PluginInfoAdapter.GetByNameVersionBuilddate(
+          pluginInfo.Name, pluginInfo.Version, pluginInfo.BuildDate);
+        if (found != null) {
+          pluginInfo.Id = found.Id;
+        }
+
         PluginInfoAdapter.Update(pluginInfo);
         relationships.Add(pluginInfo.Id);
@@ -335,4 +342,11 @@
             new List<Guid>());
 
+          //delete orphaned pluginInfos
+          ICollection<HivePluginInfo> orphanedPluginInfos =
+             PluginInfoAdapter.GetOrphanedPluginInfos();
+          foreach(HivePluginInfo orphanedPlugin in orphanedPluginInfos) {
+            PluginInfoAdapter.Delete(orphanedPlugin);
+          }
+
           return base.doDelete(job);
         }
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/PluginInfoAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/PluginInfoAdapter.cs	(revision 1591)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/PluginInfoAdapter.cs	(revision 1592)
@@ -56,5 +56,5 @@
           pluginInfo.BuildDate = row.BuildDate;
         } else {
-          pluginInfo.BuildDate = null;
+          pluginInfo.BuildDate = DateTime.Now;
         }
 
@@ -64,4 +64,20 @@
       } 
     }
+
+    public HivePluginInfo GetByNameVersionBuilddate(String name, String version, DateTime buildDate) {
+      return
+         base.FindSingle(
+           delegate() {
+             return Adapter.GetDataByNameVersionBuilddate(name, version, buildDate);
+           });
+    }
+
+    public ICollection<HivePluginInfo> GetOrphanedPluginInfos() {
+      return
+        base.FindMultiple(
+          delegate() {
+            return Adapter.GetDataByOrphaned();
+          });
+    }
   }
 }
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.Designer.cs	(revision 1591)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.Designer.cs	(revision 1592)
@@ -2668,5 +2668,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public PluginInfoRow AddPluginInfoRow(System.Guid PluginId, string Name, string Version, string BuildDate) {
+            public PluginInfoRow AddPluginInfoRow(System.Guid PluginId, string Name, string Version, System.DateTime BuildDate) {
                 PluginInfoRow rowPluginInfoRow = ((PluginInfoRow)(this.NewRow()));
                 object[] columnValuesArray = new object[] {
@@ -2714,5 +2714,5 @@
                 this.columnVersion = new global::System.Data.DataColumn("Version", typeof(string), null, global::System.Data.MappingType.Element);
                 base.Columns.Add(this.columnVersion);
-                this.columnBuildDate = new global::System.Data.DataColumn("BuildDate", typeof(string), null, global::System.Data.MappingType.Element);
+                this.columnBuildDate = new global::System.Data.DataColumn("BuildDate", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element);
                 base.Columns.Add(this.columnBuildDate);
                 this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] {
@@ -2722,5 +2722,4 @@
                 this.columnName.MaxLength = 20;
                 this.columnVersion.MaxLength = 20;
-                this.columnBuildDate.MaxLength = 20;
             }
             
@@ -3895,8 +3894,8 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public string BuildDate {
+            public System.DateTime BuildDate {
                 get {
                     try {
-                        return ((string)(this[this.tablePluginInfo.BuildDateColumn]));
+                        return ((global::System.DateTime)(this[this.tablePluginInfo.BuildDateColumn]));
                     }
                     catch (global::System.InvalidCastException e) {
@@ -7968,5 +7967,5 @@
             this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand();
             this._adapter.DeleteCommand.Connection = this.Connection;
-            this._adapter.DeleteCommand.CommandText = @"DELETE FROM [dbo].[PluginInfo] WHERE (([PluginId] = @Original_PluginId) AND ((@IsNull_Name = 1 AND [Name] IS NULL) OR ([Name] = @Original_Name)) AND ((@IsNull_Version = 1 AND [Version] IS NULL) OR ([Version] = @Original_Version)) AND ((@IsNull_BuildDate = 1 AND [BuildDate] IS NULL) OR ([BuildDate] = @Original_BuildDate)))";
+            this._adapter.DeleteCommand.CommandText = @"DELETE FROM [PluginInfo] WHERE (([PluginId] = @Original_PluginId) AND ((@IsNull_Name = 1 AND [Name] IS NULL) OR ([Name] = @Original_Name)) AND ((@IsNull_Version = 1 AND [Version] IS NULL) OR ([Version] = @Original_Version)) AND ((@IsNull_BuildDate = 1 AND [BuildDate] IS NULL) OR ([BuildDate] = @Original_BuildDate)))";
             this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text;
             this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PluginId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PluginId", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
@@ -7976,18 +7975,18 @@
             this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Version", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Version", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
             this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_BuildDate", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BuildDate", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
-            this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_BuildDate", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BuildDate", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+            this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_BuildDate", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BuildDate", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
             this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand();
             this._adapter.InsertCommand.Connection = this.Connection;
-            this._adapter.InsertCommand.CommandText = "INSERT INTO [dbo].[PluginInfo] ([PluginId], [Name], [Version], [BuildDate]) VALUE" +
-                "S (@PluginId, @Name, @Version, @BuildDate);\r\nSELECT PluginId, Name, Version, Bui" +
-                "ldDate FROM PluginInfo WHERE (PluginId = @PluginId)";
+            this._adapter.InsertCommand.CommandText = "INSERT INTO [PluginInfo] ([PluginId], [Name], [Version], [BuildDate]) VALUES (@Pl" +
+                "uginId, @Name, @Version, @BuildDate);\r\nSELECT PluginId, Name, Version, BuildDate" +
+                " FROM PluginInfo WHERE (PluginId = @PluginId)";
             this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text;
             this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PluginId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PluginId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Name", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Name", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Version", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Version", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
-            this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@BuildDate", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BuildDate", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@BuildDate", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BuildDate", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand();
             this._adapter.UpdateCommand.Connection = this.Connection;
-            this._adapter.UpdateCommand.CommandText = @"UPDATE [dbo].[PluginInfo] SET [PluginId] = @PluginId, [Name] = @Name, [Version] = @Version, [BuildDate] = @BuildDate WHERE (([PluginId] = @Original_PluginId) AND ((@IsNull_Name = 1 AND [Name] IS NULL) OR ([Name] = @Original_Name)) AND ((@IsNull_Version = 1 AND [Version] IS NULL) OR ([Version] = @Original_Version)) AND ((@IsNull_BuildDate = 1 AND [BuildDate] IS NULL) OR ([BuildDate] = @Original_BuildDate)));
+            this._adapter.UpdateCommand.CommandText = @"UPDATE [PluginInfo] SET [PluginId] = @PluginId, [Name] = @Name, [Version] = @Version, [BuildDate] = @BuildDate WHERE (([PluginId] = @Original_PluginId) AND ((@IsNull_Name = 1 AND [Name] IS NULL) OR ([Name] = @Original_Name)) AND ((@IsNull_Version = 1 AND [Version] IS NULL) OR ([Version] = @Original_Version)) AND ((@IsNull_BuildDate = 1 AND [BuildDate] IS NULL) OR ([BuildDate] = @Original_BuildDate)));
 SELECT PluginId, Name, Version, BuildDate FROM PluginInfo WHERE (PluginId = @PluginId)";
             this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text;
@@ -7995,5 +7994,5 @@
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Name", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Name", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Version", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Version", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
-            this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@BuildDate", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BuildDate", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@BuildDate", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BuildDate", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PluginId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PluginId", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Name", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Name", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
@@ -8002,5 +8001,5 @@
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Version", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Version", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_BuildDate", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BuildDate", global::System.Data.DataRowVersion.Original, true, null, "", "", ""));
-            this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_BuildDate", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BuildDate", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
+            this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_BuildDate", global::System.Data.SqlDbType.DateTime, 0, global::System.Data.ParameterDirection.Input, 0, 0, "BuildDate", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
         }
         
@@ -8013,14 +8012,28 @@
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
         private void InitCommandCollection() {
-            this._commandCollection = new global::System.Data.SqlClient.SqlCommand[2];
+            this._commandCollection = new global::System.Data.SqlClient.SqlCommand[4];
             this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand();
             this._commandCollection[0].Connection = this.Connection;
-            this._commandCollection[0].CommandText = "SELECT PluginId, Name, Version, BuildDate FROM PluginInfo";
+            this._commandCollection[0].CommandText = "SELECT * FROM PluginInfo";
             this._commandCollection[0].CommandType = global::System.Data.CommandType.Text;
             this._commandCollection[1] = new global::System.Data.SqlClient.SqlCommand();
             this._commandCollection[1].Connection = this.Connection;
-            this._commandCollection[1].CommandText = "SELECT * FROM PluginInfo WHERE (PluginId = @Id)";
+            this._commandCollection[1].CommandText = "SELECT BuildDate, Name, PluginId, Version FROM PluginInfo WHERE (PluginId = @Id)";
             this._commandCollection[1].CommandType = global::System.Data.CommandType.Text;
             this._commandCollection[1].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Id", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "PluginId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._commandCollection[2] = new global::System.Data.SqlClient.SqlCommand();
+            this._commandCollection[2].Connection = this.Connection;
+            this._commandCollection[2].CommandText = "SELECT BuildDate, Name, PluginId, Version FROM PluginInfo WHERE (Name = @Name) AN" +
+                "D (Version = @Version) AND (BuildDate = @BuildDate)";
+            this._commandCollection[2].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[2].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Name", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "Name", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._commandCollection[2].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Version", global::System.Data.SqlDbType.VarChar, 20, global::System.Data.ParameterDirection.Input, 0, 0, "Version", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._commandCollection[2].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@BuildDate", global::System.Data.SqlDbType.DateTime, 8, global::System.Data.ParameterDirection.Input, 0, 0, "BuildDate", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._commandCollection[3] = new global::System.Data.SqlClient.SqlCommand();
+            this._commandCollection[3].Connection = this.Connection;
+            this._commandCollection[3].CommandText = "SELECT BuildDate, Name, PluginId, Version FROM PluginInfo WHERE (NOT EXISTS (SELE" +
+                "CT JobId, PluginId FROM RequiredPlugins WHERE (PluginId = PluginInfo.PluginId)))" +
+                "";
+            this._commandCollection[3].CommandType = global::System.Data.CommandType.Text;
         }
         
@@ -8073,4 +8086,84 @@
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
+        public virtual int FillByNameVersionBuilddate(dsHiveServer.PluginInfoDataTable dataTable, string Name, string Version, global::System.Nullable<global::System.DateTime> BuildDate) {
+            this.Adapter.SelectCommand = this.CommandCollection[2];
+            if ((Name == null)) {
+                this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value;
+            }
+            else {
+                this.Adapter.SelectCommand.Parameters[0].Value = ((string)(Name));
+            }
+            if ((Version == null)) {
+                this.Adapter.SelectCommand.Parameters[1].Value = global::System.DBNull.Value;
+            }
+            else {
+                this.Adapter.SelectCommand.Parameters[1].Value = ((string)(Version));
+            }
+            if ((BuildDate.HasValue == true)) {
+                this.Adapter.SelectCommand.Parameters[2].Value = ((System.DateTime)(BuildDate.Value));
+            }
+            else {
+                this.Adapter.SelectCommand.Parameters[2].Value = global::System.DBNull.Value;
+            }
+            if ((this.ClearBeforeFill == true)) {
+                dataTable.Clear();
+            }
+            int returnValue = this.Adapter.Fill(dataTable);
+            return returnValue;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
+        public virtual dsHiveServer.PluginInfoDataTable GetDataByNameVersionBuilddate(string Name, string Version, global::System.Nullable<global::System.DateTime> BuildDate) {
+            this.Adapter.SelectCommand = this.CommandCollection[2];
+            if ((Name == null)) {
+                this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value;
+            }
+            else {
+                this.Adapter.SelectCommand.Parameters[0].Value = ((string)(Name));
+            }
+            if ((Version == null)) {
+                this.Adapter.SelectCommand.Parameters[1].Value = global::System.DBNull.Value;
+            }
+            else {
+                this.Adapter.SelectCommand.Parameters[1].Value = ((string)(Version));
+            }
+            if ((BuildDate.HasValue == true)) {
+                this.Adapter.SelectCommand.Parameters[2].Value = ((System.DateTime)(BuildDate.Value));
+            }
+            else {
+                this.Adapter.SelectCommand.Parameters[2].Value = global::System.DBNull.Value;
+            }
+            dsHiveServer.PluginInfoDataTable dataTable = new dsHiveServer.PluginInfoDataTable();
+            this.Adapter.Fill(dataTable);
+            return dataTable;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
+        public virtual int FillByOrphaned(dsHiveServer.PluginInfoDataTable dataTable) {
+            this.Adapter.SelectCommand = this.CommandCollection[3];
+            if ((this.ClearBeforeFill == true)) {
+                dataTable.Clear();
+            }
+            int returnValue = this.Adapter.Fill(dataTable);
+            return returnValue;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
+        public virtual dsHiveServer.PluginInfoDataTable GetDataByOrphaned() {
+            this.Adapter.SelectCommand = this.CommandCollection[3];
+            dsHiveServer.PluginInfoDataTable dataTable = new dsHiveServer.PluginInfoDataTable();
+            this.Adapter.Fill(dataTable);
+            return dataTable;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         public virtual int Update(dsHiveServer.PluginInfoDataTable dataTable) {
             return this.Adapter.Update(dataTable);
@@ -8099,5 +8192,5 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)]
-        public virtual int Delete(System.Guid Original_PluginId, string Original_Name, string Original_Version, string Original_BuildDate) {
+        public virtual int Delete(System.Guid Original_PluginId, string Original_Name, string Original_Version, global::System.Nullable<global::System.DateTime> Original_BuildDate) {
             this.Adapter.DeleteCommand.Parameters[0].Value = ((System.Guid)(Original_PluginId));
             if ((Original_Name == null)) {
@@ -8117,11 +8210,11 @@
                 this.Adapter.DeleteCommand.Parameters[4].Value = ((string)(Original_Version));
             }
-            if ((Original_BuildDate == null)) {
+            if ((Original_BuildDate.HasValue == true)) {
+                this.Adapter.DeleteCommand.Parameters[5].Value = ((object)(0));
+                this.Adapter.DeleteCommand.Parameters[6].Value = ((System.DateTime)(Original_BuildDate.Value));
+            }
+            else {
                 this.Adapter.DeleteCommand.Parameters[5].Value = ((object)(1));
                 this.Adapter.DeleteCommand.Parameters[6].Value = global::System.DBNull.Value;
-            }
-            else {
-                this.Adapter.DeleteCommand.Parameters[5].Value = ((object)(0));
-                this.Adapter.DeleteCommand.Parameters[6].Value = ((string)(Original_BuildDate));
             }
             global::System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State;
@@ -8144,5 +8237,5 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)]
-        public virtual int Insert(System.Guid PluginId, string Name, string Version, string BuildDate) {
+        public virtual int Insert(System.Guid PluginId, string Name, string Version, global::System.Nullable<global::System.DateTime> BuildDate) {
             this.Adapter.InsertCommand.Parameters[0].Value = ((System.Guid)(PluginId));
             if ((Name == null)) {
@@ -8158,9 +8251,9 @@
                 this.Adapter.InsertCommand.Parameters[2].Value = ((string)(Version));
             }
-            if ((BuildDate == null)) {
+            if ((BuildDate.HasValue == true)) {
+                this.Adapter.InsertCommand.Parameters[3].Value = ((System.DateTime)(BuildDate.Value));
+            }
+            else {
                 this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value;
-            }
-            else {
-                this.Adapter.InsertCommand.Parameters[3].Value = ((string)(BuildDate));
             }
             global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State;
@@ -8183,5 +8276,5 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
-        public virtual int Update(System.Guid PluginId, string Name, string Version, string BuildDate, System.Guid Original_PluginId, string Original_Name, string Original_Version, string Original_BuildDate) {
+        public virtual int Update(System.Guid PluginId, string Name, string Version, global::System.Nullable<global::System.DateTime> BuildDate, System.Guid Original_PluginId, string Original_Name, string Original_Version, global::System.Nullable<global::System.DateTime> Original_BuildDate) {
             this.Adapter.UpdateCommand.Parameters[0].Value = ((System.Guid)(PluginId));
             if ((Name == null)) {
@@ -8197,9 +8290,9 @@
                 this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(Version));
             }
-            if ((BuildDate == null)) {
+            if ((BuildDate.HasValue == true)) {
+                this.Adapter.UpdateCommand.Parameters[3].Value = ((System.DateTime)(BuildDate.Value));
+            }
+            else {
                 this.Adapter.UpdateCommand.Parameters[3].Value = global::System.DBNull.Value;
-            }
-            else {
-                this.Adapter.UpdateCommand.Parameters[3].Value = ((string)(BuildDate));
             }
             this.Adapter.UpdateCommand.Parameters[4].Value = ((System.Guid)(Original_PluginId));
@@ -8220,11 +8313,11 @@
                 this.Adapter.UpdateCommand.Parameters[8].Value = ((string)(Original_Version));
             }
-            if ((Original_BuildDate == null)) {
+            if ((Original_BuildDate.HasValue == true)) {
+                this.Adapter.UpdateCommand.Parameters[9].Value = ((object)(0));
+                this.Adapter.UpdateCommand.Parameters[10].Value = ((System.DateTime)(Original_BuildDate.Value));
+            }
+            else {
                 this.Adapter.UpdateCommand.Parameters[9].Value = ((object)(1));
                 this.Adapter.UpdateCommand.Parameters[10].Value = global::System.DBNull.Value;
-            }
-            else {
-                this.Adapter.UpdateCommand.Parameters[9].Value = ((object)(0));
-                this.Adapter.UpdateCommand.Parameters[10].Value = ((string)(Original_BuildDate));
             }
             global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State;
@@ -8247,5 +8340,5 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
-        public virtual int Update(string Name, string Version, string BuildDate, System.Guid Original_PluginId, string Original_Name, string Original_Version, string Original_BuildDate) {
+        public virtual int Update(string Name, string Version, global::System.Nullable<global::System.DateTime> BuildDate, System.Guid Original_PluginId, string Original_Name, string Original_Version, global::System.Nullable<global::System.DateTime> Original_BuildDate) {
             return this.Update(Original_PluginId, Name, Version, BuildDate, Original_PluginId, Original_Name, Original_Version, Original_BuildDate);
         }
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.xsd
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.xsd	(revision 1591)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.xsd	(revision 1592)
@@ -717,5 +717,5 @@
                 <DeleteCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="false">
-                    <CommandText>DELETE FROM [dbo].[PluginInfo] WHERE (([PluginId] = @Original_PluginId) AND ((@IsNull_Name = 1 AND [Name] IS NULL) OR ([Name] = @Original_Name)) AND ((@IsNull_Version = 1 AND [Version] IS NULL) OR ([Version] = @Original_Version)) AND ((@IsNull_BuildDate = 1 AND [BuildDate] IS NULL) OR ([BuildDate] = @Original_BuildDate)))</CommandText>
+                    <CommandText>DELETE FROM [PluginInfo] WHERE (([PluginId] = @Original_PluginId) AND ((@IsNull_Name = 1 AND [Name] IS NULL) OR ([Name] = @Original_Name)) AND ((@IsNull_Version = 1 AND [Version] IS NULL) OR ([Version] = @Original_Version)) AND ((@IsNull_BuildDate = 1 AND [BuildDate] IS NULL) OR ([BuildDate] = @Original_BuildDate)))</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@Original_PluginId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="PluginId" SourceColumnNullMapping="false" SourceVersion="Original" />
@@ -725,5 +725,5 @@
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_Version" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Version" SourceColumnNullMapping="false" SourceVersion="Original" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_BuildDate" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="BuildDate" SourceColumnNullMapping="true" SourceVersion="Original" />
-                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_BuildDate" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="BuildDate" SourceColumnNullMapping="false" SourceVersion="Original" />
+                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="DateTime" Direction="Input" ParameterName="@Original_BuildDate" Precision="0" ProviderType="DateTime" Scale="0" Size="0" SourceColumn="BuildDate" SourceColumnNullMapping="false" SourceVersion="Original" />
                     </Parameters>
                   </DbCommand>
@@ -731,5 +731,5 @@
                 <InsertCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="false">
-                    <CommandText>INSERT INTO [dbo].[PluginInfo] ([PluginId], [Name], [Version], [BuildDate]) VALUES (@PluginId, @Name, @Version, @BuildDate);
+                    <CommandText>INSERT INTO [PluginInfo] ([PluginId], [Name], [Version], [BuildDate]) VALUES (@PluginId, @Name, @Version, @BuildDate);
 SELECT PluginId, Name, Version, BuildDate FROM PluginInfo WHERE (PluginId = @PluginId)</CommandText>
                     <Parameters>
@@ -737,5 +737,5 @@
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Name" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Name" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Version" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Version" SourceColumnNullMapping="false" SourceVersion="Current" />
-                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@BuildDate" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="BuildDate" SourceColumnNullMapping="false" SourceVersion="Current" />
+                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="DateTime" Direction="Input" ParameterName="@BuildDate" Precision="0" ProviderType="DateTime" Scale="0" Size="0" SourceColumn="BuildDate" SourceColumnNullMapping="false" SourceVersion="Current" />
                     </Parameters>
                   </DbCommand>
@@ -743,5 +743,5 @@
                 <SelectCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="true">
-                    <CommandText>SELECT PluginId, Name, Version, BuildDate FROM PluginInfo</CommandText>
+                    <CommandText>SELECT * FROM PluginInfo</CommandText>
                     <Parameters />
                   </DbCommand>
@@ -749,5 +749,5 @@
                 <UpdateCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="false">
-                    <CommandText>UPDATE [dbo].[PluginInfo] SET [PluginId] = @PluginId, [Name] = @Name, [Version] = @Version, [BuildDate] = @BuildDate WHERE (([PluginId] = @Original_PluginId) AND ((@IsNull_Name = 1 AND [Name] IS NULL) OR ([Name] = @Original_Name)) AND ((@IsNull_Version = 1 AND [Version] IS NULL) OR ([Version] = @Original_Version)) AND ((@IsNull_BuildDate = 1 AND [BuildDate] IS NULL) OR ([BuildDate] = @Original_BuildDate)));
+                    <CommandText>UPDATE [PluginInfo] SET [PluginId] = @PluginId, [Name] = @Name, [Version] = @Version, [BuildDate] = @BuildDate WHERE (([PluginId] = @Original_PluginId) AND ((@IsNull_Name = 1 AND [Name] IS NULL) OR ([Name] = @Original_Name)) AND ((@IsNull_Version = 1 AND [Version] IS NULL) OR ([Version] = @Original_Version)) AND ((@IsNull_BuildDate = 1 AND [BuildDate] IS NULL) OR ([BuildDate] = @Original_BuildDate)));
 SELECT PluginId, Name, Version, BuildDate FROM PluginInfo WHERE (PluginId = @PluginId)</CommandText>
                     <Parameters>
@@ -755,5 +755,5 @@
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Name" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Name" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Version" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Version" SourceColumnNullMapping="false" SourceVersion="Current" />
-                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@BuildDate" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="BuildDate" SourceColumnNullMapping="false" SourceVersion="Current" />
+                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="DateTime" Direction="Input" ParameterName="@BuildDate" Precision="0" ProviderType="DateTime" Scale="0" Size="0" SourceColumn="BuildDate" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@Original_PluginId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="PluginId" SourceColumnNullMapping="false" SourceVersion="Original" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_Name" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="Name" SourceColumnNullMapping="true" SourceVersion="Original" />
@@ -762,5 +762,5 @@
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_Version" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Version" SourceColumnNullMapping="false" SourceVersion="Original" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Int32" Direction="Input" ParameterName="@IsNull_BuildDate" Precision="0" ProviderType="Int" Scale="0" Size="0" SourceColumn="BuildDate" SourceColumnNullMapping="true" SourceVersion="Original" />
-                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Original_BuildDate" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="BuildDate" SourceColumnNullMapping="false" SourceVersion="Original" />
+                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="DateTime" Direction="Input" ParameterName="@Original_BuildDate" Precision="0" ProviderType="DateTime" Scale="0" Size="0" SourceColumn="BuildDate" SourceColumnNullMapping="false" SourceVersion="Original" />
                     </Parameters>
                   </DbCommand>
@@ -778,8 +778,28 @@
                 <SelectCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="true">
-                    <CommandText>SELECT * FROM PluginInfo WHERE (PluginId = @Id)</CommandText>
+                    <CommandText>SELECT BuildDate, Name, PluginId, Version FROM PluginInfo WHERE (PluginId = @Id)</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="false" AutogeneratedName="Id" ColumnName="PluginId" DataSourceName="[HeuristicLab.Hive_DBTesting].dbo.PluginInfo" DataTypeServer="uniqueidentifier" DbType="Guid" Direction="Input" ParameterName="@Id" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="PluginId" SourceColumnNullMapping="false" SourceVersion="Current" />
                     </Parameters>
+                  </DbCommand>
+                </SelectCommand>
+              </DbSource>
+              <DbSource ConnectionRef="HiveServerConnectionString (Settings)" DbObjectName="[HeuristicLab.Hive_DBTesting].dbo.PluginInfo" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="FillByNameVersionBuilddate" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetDataByNameVersionBuilddate" GeneratorSourceName="FillByNameVersionBuilddate" GetMethodModifier="Public" GetMethodName="GetDataByNameVersionBuilddate" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataByNameVersionBuilddate" UserSourceName="FillByNameVersionBuilddate">
+                <SelectCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="true">
+                    <CommandText>SELECT BuildDate, Name, PluginId, Version FROM PluginInfo WHERE (Name = @Name) AND (Version = @Version) AND (BuildDate = @BuildDate)</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="true" AutogeneratedName="Name" ColumnName="Name" DataSourceName="[HeuristicLab.Hive_DBTesting].dbo.PluginInfo" DataTypeServer="varchar(20)" DbType="AnsiString" Direction="Input" ParameterName="@Name" Precision="0" ProviderType="VarChar" Scale="0" Size="20" SourceColumn="Name" SourceColumnNullMapping="false" SourceVersion="Current" />
+                      <Parameter AllowDbNull="true" AutogeneratedName="Version" ColumnName="Version" DataSourceName="[HeuristicLab.Hive_DBTesting].dbo.PluginInfo" DataTypeServer="varchar(20)" DbType="AnsiString" Direction="Input" ParameterName="@Version" Precision="0" ProviderType="VarChar" Scale="0" Size="20" SourceColumn="Version" SourceColumnNullMapping="false" SourceVersion="Current" />
+                      <Parameter AllowDbNull="true" AutogeneratedName="BuildDate" ColumnName="BuildDate" DataSourceName="[HeuristicLab.Hive_DBTesting].dbo.PluginInfo" DataTypeServer="datetime" DbType="DateTime" Direction="Input" ParameterName="@BuildDate" Precision="0" ProviderType="DateTime" Scale="0" Size="8" SourceColumn="BuildDate" SourceColumnNullMapping="false" SourceVersion="Current" />
+                    </Parameters>
+                  </DbCommand>
+                </SelectCommand>
+              </DbSource>
+              <DbSource ConnectionRef="HiveServerConnectionString (Settings)" DbObjectName="[HeuristicLab.Hive_DBTesting].dbo.PluginInfo" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="FillByOrphaned" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetDataByOrphaned" GeneratorSourceName="FillByOrphaned" GetMethodModifier="Public" GetMethodName="GetDataByOrphaned" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataByOrphaned" UserSourceName="FillByOrphaned">
+                <SelectCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="true">
+                    <CommandText>SELECT BuildDate, Name, PluginId, Version FROM PluginInfo WHERE (NOT EXISTS (SELECT JobId, PluginId FROM RequiredPlugins WHERE (PluginId = PluginInfo.PluginId)))</CommandText>
+                    <Parameters />
                   </DbCommand>
                 </SelectCommand>
@@ -915,11 +935,5 @@
                 </xs:simpleType>
               </xs:element>
-              <xs:element name="BuildDate" msprop:Generator_UserColumnName="BuildDate" msprop:Generator_ColumnVarNameInTable="columnBuildDate" msprop:Generator_ColumnPropNameInRow="BuildDate" msprop:Generator_ColumnPropNameInTable="BuildDateColumn" minOccurs="0">
-                <xs:simpleType>
-                  <xs:restriction base="xs:string">
-                    <xs:maxLength value="20" />
-                  </xs:restriction>
-                </xs:simpleType>
-              </xs:element>
+              <xs:element name="BuildDate" msprop:Generator_UserColumnName="BuildDate" msprop:Generator_ColumnVarNameInTable="columnBuildDate" msprop:Generator_ColumnPropNameInRow="BuildDate" msprop:Generator_ColumnPropNameInTable="BuildDateColumn" type="xs:dateTime" minOccurs="0" />
             </xs:sequence>
           </xs:complexType>
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.xss
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.xss	(revision 1591)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/dsHiveServer.xss	(revision 1592)
@@ -5,5 +5,5 @@
      the code is regenerated.
 </autogenerated>-->
-<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="-508" ViewPortY="215" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
+<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="-508" ViewPortY="411" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
   <Shapes>
     <Shape ID="DesignTable:Client" ZOrder="13" X="-37" Y="593" Height="258" Width="179" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="177" />
@@ -11,8 +11,8 @@
     <Shape ID="DesignTable:ClientGroup" ZOrder="4" X="346" Y="589" Height="106" Width="209" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="42" />
     <Shape ID="DesignTable:ClientGroup_Resource" ZOrder="12" X="197" Y="766" Height="156" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="58" />
-    <Shape ID="DesignTable:Job" ZOrder="1" X="-374" Y="215" Height="343" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="22" OldDataTableHeight="0" SplitterPosition="228" />
+    <Shape ID="DesignTable:Job" ZOrder="2" X="-374" Y="215" Height="343" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="22" OldDataTableHeight="0" SplitterPosition="228" />
     <Shape ID="DesignTable:JobResult" ZOrder="11" X="146" Y="172" Height="90" Width="158" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="0" />
     <Shape ID="DesignTable:RequiredPlugins" ZOrder="8" X="-498" Y="629" Height="122" Width="235" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="58" />
-    <Shape ID="DesignTable:PluginInfo" ZOrder="2" X="-454" Y="797" Height="156" Width="201" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="22" OldDataTableHeight="0" SplitterPosition="92" />
+    <Shape ID="DesignTable:PluginInfo" ZOrder="1" X="-454" Y="797" Height="190" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="22" OldDataTableHeight="0" SplitterPosition="92" />
   </Shapes>
   <Connectors>
Index: /trunk/sources/HeuristicLab.Hive.Server.DataAccess/3.2/IPluginInfoAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.DataAccess/3.2/IPluginInfoAdapter.cs	(revision 1591)
+++ /trunk/sources/HeuristicLab.Hive.Server.DataAccess/3.2/IPluginInfoAdapter.cs	(revision 1592)
@@ -31,4 +31,7 @@
   /// </summary>
   public interface IPluginInfoAdapter : IDataAdapter<HivePluginInfo> {
+    HivePluginInfo GetByNameVersionBuilddate(String name, String version, DateTime buildDate);
+
+    ICollection<HivePluginInfo> GetOrphanedPluginInfos();
   }
 }
